Persistent workspace in SQL Studio

When Sublime Text showed up, it was a breath of a fresh air with some unique concepts. Two concepts were game changers for me:

  • persistent workspaces
  • instant fuzzy search

Persistent workspaces meant that you could have saved the editor without being prompted to save your files. Next time you launched it, it was reopened into exact same state it was when you closed it - file tabs, even text selections and multiple carets were preserved. That alone got rid of the clutter, as the alternative was to always keep an application open not to lose temporary files and snippets needed for the current work.

For our SQL Studio, there are equivalent game-changing concepts. Persistent workspace is an important one.

Database connections

We can work with many connections at the same time, many different database engines. At any point, however, we have a single active connection - I personally always hated the notion of a separate connection per document tab, so you could have 20 tabs open, each one with a different database. It's a mess. Instead, we have separate tabs for the active connection. Change the connection and you'll have tabs and documents (and even query results) instantly restored to the state you had last time you worked with that connection. Close the browser, reopen it, you'll get the workspace restore so that active connection is the one last open, and tabs and documents restored to the ones that were visible.

Editor text

As described in an earlier post, as you type in the browser, we do heavy lifting of parsing and analysis on the cloud. We're pushing the document changes to our back-end for every keystroke. Our back-end has a complete document at all times, so we can easily restore your document text when you fire up our application next time.

Devices

As our back-end has your full workspace at all times, we're not limited to the devices you use. If you have a long commute, you can work on your laptop in the train. When you get to your desk, continue working on your desktop. And guess what - you'll literally continue working, as your desktop will "magically" show exactly the same thing you left open in that train. Even the caret in that active document will be positioned exactly where you last typed. Of course, you can be logged in at a single device at the same time - a constraint of a single persistent workspace.

Object tree

We're keeping track of the database object nodes you expanded and are preserving the node state. You can use the quick filter to reduce the number of the visible objects (we always assume you have many thousands of objects in your database and strive to make life easier by reducing the clutter) and we preserve the filter, too.

Peculiarities

Like in any good IDE, you can resize certain areas - object tree, returned data set, etc. But - on the train you might have used a 13" laptop and at work you might have a 34" ultra-wide monitor. It makes no sense to apply your preferences from one device to the other, but it sure makes sense to keep your preferences. So, we store your resizing preferences between the sessions, but keep them on each device separately.