Quantcast
Channel: Streak Blog
Viewing all 125 articles
Browse latest View live

Big Improvements to Sharing

$
0
0
The Streak team has been working hard over the last few days to improve our sharing experience. In the past, it was a little clunky and confusing and we've made some pretty big improvements to it.

Our biggest priority was to make it very clear whether a pipeline was shared or private so we made the sharing dialog simply revolve around that - the biggest choice is upfront and clear, is this pipeline shared or private?



Once you decide to share your pipeline (super useful for teams!), you get a few more options. You can share to individual people by their email address, use the checkbox to share to your entire organization or both. 




This design also gives a lot of flexibility for the future when we allow finer grained permissions like allowing some people to be able to edit while others can only view. 

We hope you like the new design as much as we do. As always, feedback is much appreciated!




Problems updating Streak?

$
0
0

Some Streak users may be experiencing issues updating the Streak extension. Normally this is a fully automatic process and you, the user, should never have to worry about it.....

.... but we messed up this time. We made an update to our extension that may require users to manually update their extension. If Streak is complaining about needing an update even though you've opened Gmail in a new tab, please see our help article to fix the issue, should take 30 seconds tops. 

Going forward, we'll be ultra careful to make sure Streak is always available when you need it. 

Keeping Streak Fast

$
0
0
The latest version of the Streak client (ver 1.70) contains quite a few improvements. The biggest improvement (in my mind - since I worked on it) is a substantially faster pipeline view. Some users were getting issues when they would have hundreds of boxes in a pipeline and reloading the pipeline view could take up to 10 seconds to render. When you're looking to change the stage of many boxes in a row those seconds add up quickly.

The performance improvement came in two stages. First, basic rendering of the spreadsheet was optimized so when you first load the pipeline the view comes up faster. Second, once the pipeline view is rendered there's a smart caching system in place that only renders what has changed instead of rendering the entire thing. This second improvement has a dramatic impact on the usability of the spreadsheet and early user feedback is very positive.

For the technically minded I'll go a bit deeper into the strategies that I used to improve the performance. The pipeline view is actually just a simple table where each cell is responsible for "managing" itself, this includes rendering the HTML and binding the relevant event handlers. We use jQuery extensively in Streak and will often use the pattern of $(some html string). Well it turns out that's pretty slow, a much faster method is to call $(document.createElement('tag')) and then set the innerHTML of that element. Furthermore, binding event handlers takes a little bit of time, which isn't noticeable in general but when you're binding hundreds or thousands of times, it starts to add up. So another optimization is that the cells only bind to their event handlers on-demand when they need them. While performing a timing audit I was trying to get the rendering times from 1ms to 0ms, which I was able to accomplish through a combination of those two techniques.

We're always on the lookout for performance issues and bottlenecks and fix them as soon as they're reported. So if you experience any slowness let us know and we'll get right on it.

Introducing Heads Up: Pipelines in your Inbox

$
0
0
Our vision for Streak is clear: give you the right tools directly in your Inbox. With today's launch of Heads Up we're making a big jump in bringing that vision to reality. Similar to Gmail's multiple inboxes, Heads Up lets you see snapshots of your pipelines directly in your inbox.


This makes it super easy and convenient to see the most relevant boxes. And just like everything else with Streak we've made Heads Up very flexible so you can set things up however best suits your work and workflow.

To add a Heads Up section to your inbox first go to a pipeline, then configure the filters, sorts and everything to show the boxes that you want. Then click on the "More" button in the toolbar and choose "Show current view in inbox". That's it. You can show as many views in your inbox as you want from as many different pipelines as you want.



Once the Heads Up is in your inbox you can change how many boxes you want to show, and if you want to hide the section when it's empty.


Putting this all together gives you an amazing dashboard for what you need to do, right in your inbox, where it should be.

Play around with it and let us know what you think.

Ahhhh renaming....

$
0
0
One of the most often requested features here at Streak was the ability to rename stages. This small feature somehow had somehow gone unimplemented - until today.

Renaming Stages
When you're grouped by stages (the default) the stage names in the spreadsheet are now textboxes that you can edit just like you'd expect.





Here are a few other features with todays release:


Collapsing Groups
In the spreadsheet view you can now collapse groups to hide boxes you don't want to see. Simply click on the triangle to show and hide the boxes contained in the group. If you make a new Heads Up section while a group is collapsed then the boxes from that collapsed group will not show up in your inbox, as you'd expect.

Group Colors in Heads Up
The same colors you see in the Pipeline overview will now be shown in the Heads Up of each box.



Xobni compatibility
If you have the Xobni Chrome extension installed, Streak now plays nice with it so you can use both at the same time.

To get the new version of Streak simply refresh Gmail. Try out the new features and let us know what you think!

More Improvements to the Pipeline View

$
0
0
The Pipeline view in Streak (aka the spreadsheet) is a great way to manage your deals/customers/support issues/etc because you can use the familiar interface of a spreadsheet. However, up until now, we've been missing a lot of the basic features needed to make it really customizable. Here's what we've added:

  • Renaming Columns
  • Resizing Columns
  • Hiding Columns
  • Reordering Columns
  • Easier Inserting of Columns
Here's what it looks like:



For detailed how-to's on each of these features, check out the help articles here.

Don't You Forget About Me

$
0
0
Reminders. You asked for it, you got it.

You can now add Reminders to your boxes and Streak will send you an email on the day and time that you specify.

Adding a Reminder is really simple. When you're looking at the details of a box, either on the right of an email or the full box view, you'll see a "Reminders" section on the right.

reminders in box details
reminders in email sidebar
Click on New reminder to bring up your reminder options and fill them out. Once you're satisfied, click create and your new reminder will be scheduled for delivery.

When looking at the box information you'll see the Reminders for that box both upcoming and past. You can always edit and delete reminders by clicking on the Reminder name.


One the scheduled time Streak will send you a reminder email. When viewing the email you'll see the notes you left for yourself and the box details on the right, that way you can take action on that box right away.



We think you guys are going to love this new feature and the way it will help you organize your hectic schedule and ensure things don't fall through the cracks. As always try it out and let us know what you think!

New Boxes Button

$
0
0
Making boxes is one of the most common tasks you do while using Streak so we wanted to refine that flow to take a fraction of the time. Enter the new Boxes Button:


When you have an email selected in your inbox, or you're looking at an email conversation and activate the Boxes Button you'll see something similar to this.


The first difference you'll notice is that there's no "Create new box" button... we'll get to that later. Instead  we show you two sections:

  1. existing boxes that you have in the system that may be related to this email, and 
  2. a section for suggested names if you want to make a new box.


If you start typing then we search the existing boxes and also give you an option to add a new box with the name that you're typing.


Selecting an existing box behaves as you expect by associating the selected email thread to the chosen box. If you create a new box, then you still have to choose the pipeline the box goes into:


You select your pipeline and you're done.

No more dialog pop-ups, and hopefully fewer duplicate box names as you should be seeing any existing boxes that may be relevant to the email you're looking at. This flow is substantially faster and more efficient. And the best part is no functionality was sacrificed for efficiency, in fact the Boxes Button is even more useful now.

When you combine the new flow with the new keyboard shortcuts that I'll illustrate in the next blog post you'll be flying through you inbox in no time.

A Gift to Power Users: Keyboard Shortcuts

$
0
0
If you are a heavy user of Gmail and don't use keyboard shortcuts, just stop reading this right now and go read this article then go and enjoy the extra hour in your day you have - everyday.

With the latest release of the Streak we've enabled keyboard shortcuts for nearly all of the major tasks in Streak, and we've even incorporated the keys into Gmail's keyboard help system (just press ? in Gmail).

Search boxes and pipelines - press "w" then "p" or "w" then "b" and you can now search for pipelines and boxes respectively, right in the search bar. This is very similar to pressing "g then l" which is Gmail's shortcut for searching for labels. This w->p/b shortcut is extremely powerful for navigating around Streak and getting to pipelines and boxes extremely quickly.




Keyboard enabled Boxes Button - with an email selected in inbox view or when looking at an email conversation pressing "w" then "a" will activate the Boxes Button. From here you can use the arrow keys to select an existing box, or create a new box with one of the suggested names. Or you can start typing to search existing boxes or create your own name for the new box. When you have your choice selected simply press enter and if you're making a new box then you can use the cursors and press enter to select the pipeline.

Keyboard enabled Box Sidebar/Box View - when you're reading an email that has box information on the right, or you're looking at the box details view you can change the stage and edit the information in the fields without touching the mouse. Press "w" then "tab" to focus on the box information and edit the stage/title and then tab your way to the next field.


When you combine keyboard shortcuts with the new boxes button you'll find yourself absolutely flying through emails and managing your inbox will become 10x easier.

As always check it out and let us know what you think!

Making it easier to switch to Streak - introducing Import

$
0
0
With the latest release of Streak we've added the ability to import CSV files into a pipeline. This feature lets you migrate from your existing CRM/spreadsheet into Streak.

You can access the import option from the "More" button in the pipeline view

Select "Import from CSV" and this will bring up a modal wizard.

The first step is to upload your file:


You can choose a file on your computer by using the "Choose File"button or you can drag and drop into the dashed rectangle area.


Once the file has been uploaded Streak does some analysis to ensure the file is valid, and we'll notify you of any issues.

You'll get a summary of the file - which matched columns were found and how many boxes were in the file before you commit and add the boxes to the pipeline.

So that's it.

It's simple, powerful, and just works. Try it out and let us know what you think.

P.S. this is also a way to backup and restore your pipelines. Just note that it only backs up your boxes but not the emails/comments/etc inside of them. We'll have a better solution for this soon. 

Export Your Google App Engine Logs to BigQuery: Introducing Mache

$
0
0
Here at Streak we know that our users' inboxes are central to their day, and we're honored that they let us help organize their email. But with great placement comes great responsibility: if Streak doesn't function perfectly, it's front and center. To ensure that we catch any errors as soon as possible, like all good webapps, we keep track of any errors that occur either on our servers or in our users' inboxes. Additionally, we gather a number of anonymous metrics that help us decide where to focus our efforts on improving the product.

We've been using Google App Engine's built-in logging framework for this purpose. It's worked very well for diagnosing errors as they happened, but we also want to get a higher level overview of the information we're logging. We want to answer questions like:
  • How often do people access their Streak pipelines?
  • is the newest client version fixing the error our Belgian users were encountering?
We'd also like to look further back in time: did that work we did improve our latency today compared to last Friday? Luckily, Google recently released the BigQuery API for just this kind of high level, big data processing. As soon as we saw it, we knew we wanted to use it to figure out where we could best help our users. We just needed a way to export our App Engine logs to BigQuery for processing.

In the grand tradition of scratching our own itch, we've been working on a way to do just that. We've been pleased with the results so far, and we're hoping that other App Engine users in the same boat will find it similarly compelling.

We're proud to announce Mache, an open source Java framework for exporting App Engine logs to BigQuery. It's available at: http://github.com/StreakYC/mache

Mache is powered by a cron job that runs every few minutes. It exports logs to Google Cloud Storage, where you can store them indefinitely, and then initiates the job to import the logs to BigQuery. It's extensible: you can define your own log parsers, choose how often to export the logs, and decide how to aggregate them into BigQuery tables.

An example run of Mache - see the GitHub README for a full explanation
After you've imported your data with Mache, you can parse your data with the full power of BigQuery. For instance, want to know which URLs are costing you the most to serve?
After adding Mache, just go to the BigQuery browser and run:
SELECT SUM(cost) as total, path FROM [{table name}] GROUP BY path ORDER BY total DESC;

Or are you using App Engine's traffic splitting feature and want to know whether the new version is serving more errors?
Just run:
SELECT SUM(IF(httpStatus >= 400, 1.0, 0.0))/COUNT(*) as errorRate, versionId FROM [{table name}] GROUP BY versionId ORDER BY versionId;

If you're interested, check it out, hack on it, and let us know of any improvements you'd like to share. We think you'll love the insight it gives you. We do.

Butter Performance

$
0
0
Performance is a top priority at Streak and is something we're constantly working on improving.

This post goes into the different techniques we used to optimize a data heavy view in our app. Specifically, we wanted to make a 5000 row/10 column table HTML/js table feel as "buttery smooth" as a 20 row/10 column table.

At Streak, our users use the following "pipeline spreadsheet" quite heavily to see all of their data. It isn't uncommon to have thousands of rows in the table. We also didn't want users to have to page through rows - we think a smooth and fast scrolling experience is the ideal UX. We also need to support common table operations such as sorting, filtering, grouping, etc.




Detailed problem:
  • Rendering the large table should happen in under three seconds
  • 60 frames per second should be maintained while scrolling, panning and editing cell contents
Approach: At the 2012 Google IO Nat Duca and Tom Wiltzius had a great session on jank and the process to discover and eliminate it. I highly recommend watching the session as it provides context for the 60 fps goal and some ways on achieving that goal. What follows are the various wins we uncovered while breaking down the performance bottlenecks.


Win #1 - Use smart multisort

We wanted our table to allow for sorting on multiple columns. Consider a list of  this can be done in one of two ways:

List - a collection of javascript objects with properties
Properties - an array of properties you want to sort by

Slow multisort

Fast multisort

The difference between the two is the placement of the for-loop. In the slow way the for-loop happens outside the sort function which means that you're sorting the entire list over each property. However, with multisort you only have to sort once, and in each comparison you compare all the properties. This results in a dramatic speed improvement.

Win #2 - Sub-optimal algorithms can be much faster than optimal ones

Levinshtein distance is the smallest number of edits required to transform one list into another using a defined set of operations. We use the edit distance to only update specific parts of the spreadsheet based on updates to the underlying data.

I coded up a modified version of the dynamic programming algorithm found on the Wikipedia article you can find here [modified Levinshtein]. What you'll notice about this code is that it's really bad. It's inefficient and takes up an unnecessary amount of space even though its optimal (finds the minimum number of edits). There are simple improvements that can be made to this basic algorithm to reduce the memory footprint. Execution time can be improved using the Four Russians method.

However, the dynamic programming method gets us the optimal edit distance. Often in the practical world, sub-optimal is enough, and a lot faster. Furthermore, our data undergoes the same kind of changes so we can bias our edit distance algorithm to handle those changes better. Fast Levinshtein is an algorithm that runs in O(n) and produces a pretty good set of edit operations for our needs.

Win #3 - Document fragments are fast, innerHTML is faster

When adding a large number of nodes to the DOM standard practice is to create a document fragment, add all the nodes to the fragment, then add them all at once to the DOM. Unfortunately, this is still too slow. The faster method is a little old school - create all the nodes using one large string, and then set the innerHTML of a container node.

Javascript (especially on Chrome) is actually really fast so constructing the string, even with a large amount of data, takes a minuscule amount of time. Setting the innerHTML of an element, even when that string is large is still substantially faster than creating thousands of nodes and adding them to a fragment individually.

Win #4 - Event binding is slow

If you're not familiar with jQuery's on/off event API take the time necessary to really GROK it as the savings are huge. Previously we were attaching event bindings to each cell, and attaching an event takes a non-zero amount of time, so multiplying that by tens of thousands of cells adds up to a lot. With the on/off API and event delegation you attach one set of events to the parent node just once. With event delegation you no longer care about the number of cells and so binding the event takes a constant one millisecond.

Win #5 - Alternatives to overflow:hidden

A known bug in Chrome is that rendering elements with overflow:hidden takes a performance hit. Again, this isn't that big of a deal for a small number of nodes, but multiplying by tens of thousands of cells results in a noticeable performance hit.

Again, refer to the Google IO talk on how to find these poor performers.

After a lot of investigation we discovered a DOM structure that would give the same visual look as a table with overflow:hidden cells, but without the associated performance penalty.

traditional table structure

new table structure
style for new table structure
The reason this works is because of the browser's default stacking order.

Downsides to this technique:

  • each cell has to have a defined width
  • background color has to be defined, can't be transparent
  • cells with long contents can "peak out"of the table if you're not careful
    • can have a container div around all the cells that is overflow:hidden
  • inspecting element in dev tools is really slow because of all the sibling nodes

Win #6 - Reduce number of nodes

Previously, each cell of the spreadsheet was responsible for rendering its own read and edit contents. What this meant is that each cell would have its own set of edit controls, and while those controls wouldn't be added to the DOM until they were necessary, there was still some containers present in memory, and the edit controls were still found in the DOM.

Similar to having one parent event binding, we moved to having one set of edit inputs that would move around depending on the cell being edited. If you look at the differences in HTML structure

cell with scaffolding
cell without scaffolding
you'll see that it's much simpler and we've gone from three nodes to one. 

That's huge.

Win #7 - Reduce number of visible nodes

The spreadsheet with thousands of rows will be thousands of pixels high. Even with the latest fancy retina display in full resolution you'll only be able to see a subset of rows. Unfortunately, the browser doesn't know which rows are in the visible viewport and has to push every cell through at least part of the rendering pipeline. Our code does have a better idea of what rows are visible so we can help out the browser by only telling it to render the subset of rows that are visible. The rest of the rows can be hidden. We do this by toggling the display visibility of the rows by setting display to none.

Display is set to none instead of visibility:hidden as Chrome is able to handle display:none a lot faster. This makes sense because with visibility:hidden Chrome still has to render the cell to figure out the height and width, whereas a node that is display:none can just be removed from the render path.

This does present us with a new problem though in that the scroll bars won't work properly. You can see how Google Spreadsheets handles this issue as they actually render the scrollbars themselves - notice how you can't scroll a Google Spreadsheet by half of a row. We went with a different approach involving spacers which preserves the browser's default scrollbars and results in a smoother scrolling experience.

how spacers maintain browser's scrollbar
and the associated pseudo-code
pseudo-code for handling visibility
You'll notice that while you're scrolling we don't hide rows that are no longer visible. The reason for this is that even with lots of rows visible the act of scrolling isn't actually slow, but toggling the visibility of thousands of cells (if you're scrolling fast) can lead to a jerky scrolling experience. So we set a timer that figures out when scrolling is "done" and then reset the visibility of all the rows.

The tricky part in the above code is optimizing the function "should row be visible". This determines how performant scrolling is. The more rows you deem needed to be visible, the more toggles of visibility you do and the slower the rendering. You need to build in smarts to load a buffer of rows when you do load a new one so that you don't do it as often - clearly there are many tradeoffs here.

Conclusion

Did we achieve our goals? Almost.

Initial load time went down to under 2 seconds.

60FPS is maintained most of the time, however occasionally when you're scrolling there will be some hiccups.

Overall we're extremely happy with what we accomplished so far. When we first started out on this project we didn't even know if rendering a table with that many cells would even be possible. We ended up figuring out that not only is it possible, we can make it fast too. 

And we can make it faster. Improvements for the future

  • Web workers - sort/filter the spreadsheet and construct the string in a web worker while changes to the data is occurring. This would get initial load to under 1 second.
  • More server processing
  • Hybrid smart scroll - show/hide rows and also remove and readd as necessary, this may eliminate some of the scrolling hiccups as there would be a lot less nodes to RecalculateStyle on
  • Horizontal scrolling - do a similar show/hide of columns for horizontal scrolling, again to eliminate the number of nodes to RecalculateStyle on
Thanks to the web development community for all their great work and contributions. It's only by sharing our knowledge and discoveries that we can push the web forward. Hopefully you'll have gained a trick or two from this post, and if you have any further suggestions please let us know.

Streak Developer Tools Chrome Extension

$
0
0
Streak is built on top of powerful platforms - Gmail and AppEngine, and wherever possible we like to build on top of those platforms. We recently started using Google BigQuery internally to perform logging analysis (see our logging framework Mache) and wanted to build a few tools on top of BigQuery's great web interface.

The Streak Developer Tools (SDT) is a chrome extension that currently adds functionality to BigQuery (see features below) and in the future will add other tools used internally at Streak.

Here's what the SDT can do today with BigQuery:

Save Named Queries

We felt the need to be able save queries and run them again later. While the query history in BigQuery is nice, it's sometimes hard to parse all the queries to find the one you want. We added a section in the left sidebar for saved queries.

To save a query simply type it into the query box. Also, make sure you add one line to the query which is a comment (starts with '--'). Whatever is in that comment will be the name of the saved query. Next, hit the save query button. It's as simple as that. This stores the query in your local storage so it is not shared with other users of the project and will not persist if you clear your local storage. We may store this online in the future.




Query Across Datasets

At Streak, we have several tables in a dataset representing log information. Often we want to query across the entire dataset. While we could manually type all of the tables into the query, we added an option to the dataset drop down that does that for you. Simply select "Query Dataset" and the query box will be filled in for you with all the tables in the dataset.




Show Cost of Each Query

We also added the ability to see how much each query that you ran costs. Once the query completes, we added the cost (in US cents) next to the summary status of the query. The cost is calculated based on $0.035/GB processed.



Expand Multi-line Results

Since we store a lot of log data inside of BigQuery, including stack traces, many of our fields are multi-line strings which BigQuery doesn't display very well. The SDT allows you to click on any result row and expand it to show multi-line strings. Simply click on the row number in the results table to toggle multi-line on and off.



In order to put multi-line strings into BigQuery, make sure that your line endings are '\r' and not '\n' as those aren't supported by BigQuery.


Automatically Convert Timestamps to Human Readable Format

AppEngine and BigQuery store timestamps as epoch time which is great for computers and computation, but not so good for a human to read. The extension automatically finds, parses and replaces epoch timestamps with a human friendly date/time rendering.




Insert All Columns into SELECT Statements

Sometimes you want to select every column in your query but typing each of them out manually takes time especially for tables with a large number of columns. In the schema description for a table, we've added a final yellow field called "Add All Columns" which you can press to insert all of the column names into your query.


So that's a summary of the Streak Developer Tools and the features currently available. We're constantly adding features to the dev tools so be sure to install the extension from the Chrome Web Store so you get auto updates. We're always looking for help - so feel free to contribute back to the project on GitHub.

New Style for Box Indicators

$
0
0
Since Streak was first launched, we've been showing users little indicators in their inbox to indicate that an email is inside a box. But they were easy to miss and didn't give you enough information sometimes.

Today we launched a small but useful change to them. The indicators now look like labels applied to your email. Theirs a little icon inside to tell you that its different from a label but also the label text is the name of the pipeline that the email/box is in.

Take a look:





You can also, change the color easily by hovering over the pipeline in the left side bar and choosing the drop down to pick a different color.



News Feed Filtering

$
0
0
Today we added filtering to the news feed inside of your Pipeline. Now you can adjust your news feed to your liking. To start, open the dropdown menu beside the show/hide button for the news feed.



From here you can decide whose updates you want to see, and what updates you want to see. Updates from me and everyone else do what you would expect. They filter the news feed to only show updates from the people selected.

Updates with high importance is the default setting and includes things like creating a box, changing the stage of a box, and adding a comment to a box. If you need to see more details you can choose the all setting which shows all of the actions taken on a pipeline.

Using Streak to Find an Apartment

$
0
0
Hi, I'm Jon and I am going to show you how I am using Streak to help find a new apartment. We all know finding an apartment is a major pain, so I am going to walk you through how I set everything up with Streak to make the process as simple as possible.

First I needed a pipeline to track any potential apartments. There isn't a predefined pipeline that matches my needs, so I used the Blank pipeline.


This created a pretty basic pipeline for me. From here I renamed the pipeline to Apartments, added a description, created a few new stages, and added a few new columns for a viewing date, viewing time, and a link to the posting.


Next I needed to create some boxes and find an apartment. Once I found an apartment I was interested in I started writing an email to setup a time to view the apartment. After writing the email I realized I didn't want to write the same email every time, so I setup a snippet to help simplify the process. You can find the snippets button right beside the "Check Spelling" button while composing an email.


I created my snipped, named it Apartment, and set it to insert when I type "apartment_snippet".


Now all I need to do is type "apartment_snippet" and Streak replaces it with my precomposed email. This is really useful when you are constantly copy-pasting urls and or when you are writing the same email several times a week.

Next I want to add my emails to a box so I can easily track them. Streak has a Boxes button built into the UI so I can quickly create a new box for my email.




After sending out a few emails I quickly found that I wanted to track these boxes in my inbox view. Streak has support to display a list of boxes in the inbox. Just go to the pipeline, click the "More" button, and select "Show current view in Inbox."



This allowed me to see my boxes from the Apartments pipeline directly in my inbox, and after Streak released the new box indicators I was able to instantly see when new emails were about apartments I was interested in.


Everything was looking good, but I am a forgetful person. I had a pipeline full of boxes and some had times scheduled to view the apartment, and I really didn't want to forget and miss out on a great apartment. This is where Streak's reminders were a lifesaver. Inside of each box is a reminders section on the right sidebar. From here you can click the "New Reminder" button and add a reminder for any day and time. Streak will send you an email at the specified time to remind you of an action you need to complete.


And that sums up how I am using Streak to find a new apartment. We would love to hear how you are using Streak to make annoying tasks like finding an apartment easier, so let us know in the comments!

If you have any questions about how I set anything up please let me know with a comment or send us an email at support@streak.com and we will try our best to help you out.

Improvements to Stage Management

$
0
0
Over the past few weeks we've been rolling out improvements to the interface for managing the stages of a pipeline, and changing the boxes of a pipeline. You may have noticed the little settings icon when you hover over a stage in the "groupbar" now:

clicking on this icon brings up a menu to modify or delete the stage:

This should clear up some of the confusion in the interface especially on how to delete a stage. Also, we've found that being able to choose the colors of the stages is a simple but powerful way to give more meaning to each stage letting you get more information at a quick glance.

Once we had the ability to delete a stage from the groupbar that let us use the checkbox in the spreadsheet to add extra functionality, namely: select all.


Clicking on the checkbox will select all the boxes in that stage, and deselecting the checkbox will deselect all boxes in the stage. And now that you can select a bunch of boxes at once, let's let you do something with them.

We've now added the ability to change the stage of multiple boxes at once. When you change the stage of a box, then all the selected boxes will move to that new stage:

This is another feature we've found to be surprisingly powerful in our own use. We never want managing your information to be a chore, because when it's a pain, it doesn't get done. Being able to easily navigate around selecting boxes and changing their stage all at once has already saved us a significant amount of time. This means our data is fresher, and therefore more useful.

As always, to get the latest version of Streak simply refresh your Gmail tab. Try out the new features and let us know what you think!

You Complete Me

$
0
0
We've introduced a simple new feature that should make entering repetitive information easier and less error prone. When you start typing into a field, whether it be in the spreadsheet view, an email sidebar or box details view, we'll give an autocomplete suggestion based on the other values in that field.


This way if you have certain standard values that you want to enter in a field, say a company name, this will make sure all the people in your team use the same spelling.

This is a small feature but one that takes some tedium out of data entry which can ultimately save you quite a bit of time. Try it out and let us know what you think.

Introducing the Streak API

$
0
0
Today we're happy to announce that we're launching the Streak API. If you want to get started right away simply head over and read the API docs here.

The Streak API makes it easy to access the data stored in Streak programmatically, here are some typical calls you can make:

  • creating and editing boxes (super useful for setting up web forms that submit straight to Streak!)
  • creating and editing pipelines
  • setting up automated reminders
  • searching through all your streak data
  • getting a newsfeed for updates to your boxes and pipelines


When we launched Streak this past March, we couldn't imagine the tremendous response we'd receive. It's been amazing, and all of your feedback - both positive and negative - is extremely appreciated. One of the most common pieces of feedback we've received can be paraphrased as: "You integrate amazingly with Gmail, but I have some other services - like MailChimp or Wufoo - that I'd like to integrate with". We hear you, and with the release of the Streak API all of these integrations can now become a reality, as well as a heck of a lot more.

The Streak API is based on modern standards which makes it easy to incorporate into your own tools and systems, or mashup with a service like Zapier. I won't go into the nitty gritty in this post, for that you can check out the docs, but needless to say practically everything you can do from the gmail interface you can do from the API.

To highlight some of the possibilities of what you can do with the API, I'll use a couple of examples.


The first example comes from an amazing company that is leveraging modern technology to disrupt an old industry. Buyer's Best Friend is a wholesale specialty cataloger that helps high quality manufacturers get their products into the stores you love. Due to their focus on technology BBF has many proprietary systems they have developed in-house to help manage their business. With the Streak API they're now totally integrating their core systems with Streak data giving their employees access to even more information, allowing them to make faster and smarter decisions. This is on both a micro level on their individual customer information, and at a macro level with forecasting, dashboards and alerts.

The second example is actually something that I wrote for my own use. As a developer I don't actually spend all of my time in my inbox, I spend a considerable amount of time in my code editor (Sublime Text) and the command line. I wrote a little utility that gives me command line access to my Streak information, so I can run little arbitrary scripts and queries over my Streak data. Even in the early days with minimal functionality my utility has been surprisingly useful and I'm excited to try out other little scripts like piping things into and out of git.



It's just the beginning and we can't wait to see how you use the Streak API to make your systems smarter and more useful.

Send us your stories and we'll feature them here on the blog.

What was that snippet name again....

$
0
0
Streak users love their snippets! They are great way to help semi-automate your email responses and a great time saver. However, some of our power users started getting dozens, even hundreds of snippets.

Keeping track of them was becoming cumbersome - its hard to remember what you created snippets for and what the shortcut of the snippet is.

We decided to solve this in the same way programmers remember the names of pieces of code - with an inline autocomplete dropdown. While typing an email - all you have to press is Command + . (Mac) or Ctrl + . (PC) and you'll see this drop down popup:



This dropdown gives you a list of all your snippets you can use at lets you search the titles or shortcuts. Once you find the one you want, pressing enter will add that snippet to your email.

We've also enabled an option where we will suggest snippets based on the text as you type. To turn it on, goto Manage Snippets from the snippets menu and select the checkbox in the bottom left corner.





No whenever you type something that matches a snippet, a dropdown will show up allowing you to pick from the suggestions.



Viewing all 125 articles
Browse latest View live