Category: Projects

Things I built and shipped.

  • I finally built Whispermarks, the bookmark problem I never quite solved

    I finally built Whispermarks, the bookmark problem I never quite solved

    Whispermarks is a new project, but the idea behind it is old. Around 15 years ago, I built InBrowser, a privacy-first browser for Android that, for its time, became one of the biggest private browsers on mobile. That’s where this problem first showed up for me.

    The point of InBrowser was that it forgot. Close the app and your session was gone – history, cookies, everything. That was the product, way before incognito even existed on mobile. And there was just one problem. People wanted bookmarks.

    The bookmark problem

    Bookmarks are slightly awkward in a browser designed to forget everything. A normal bookmark is persistent by definition. You save a URL because you want it to be there tomorrow. That makes perfect sense in most browsers, but it never really fitted the privacy model I wanted for InBrowser.

    Bookmarks were also one of the most requested features, and I wanted them too. The easy answer would have been to bolt on a normal bookmark database, but that always felt wrong. If I was going to save something permanently in a privacy-focused product, the privacy part had to come first.

    That’s more or less where the idea for Whispermarks came from – a private place for bookmarks that wasn’t tied to the browser itself. I always thought I’d build it eventually. I just didn’t.

    Same itch, better timing

    I didn’t build it back then because I didn’t think I could build it well enough. Saving a URL is trivial. Building something where the service itself can’t read what you’ve saved is a very different problem. Keys, syncing and recovery all become part of the product.

    If I was going to build it, privacy had to be the foundation – not an option somewhere in settings.

    A lot has changed since then. Whatever you think about crypto, it has made concepts like recovery phrases, private keys and self-custody much more familiar. Fifteen years ago, asking a normal user to safely keep a sequence of recovery words would have been quite an interesting product decision. Today, the pattern isn’t nearly as strange.

    The tooling around cryptography is also much better now. The idea hadn’t really changed, but building the version I actually wanted finally felt realistic as a solo developer.

    Starting with the privacy model

    When I came back to the idea, the first question wasn’t what the bookmark interface should look like. It was what the server should be able to see. The answer was – as little as possible.

    Whispermarks encrypts the vault data locally before it leaves the device. The cloud stores the encrypted data, not the readable contents. The server gets encrypted blobs instead of your actual bookmarks.

    The cryptography is based around AES-256-GCM, with each vault having its own encryption key. Access to those keys comes from a recovery phrase held by the user. If you’ve used crypto wallets, the shape of that will feel familiar – just applied to bookmarks instead of money.

    That also means a vault is more than a folder. It’s its own cryptographic boundary. I can have one vault for personal links and another for a client, and decide where those vaults are available without putting everything into one big bucket.

    Deciding where to start

    The next decision was where to start. I landed on browser extensions, mostly because that’s where bookmarks already live.

    Whispermarks works on Chrome, Firefox and Edge. You can import your existing bookmarks, and more importantly, that vault isn’t stuck in one browser. The same vault can move with you between Chrome, Firefox and Edge. In that sense, portability comes for free. All wrapped in a first-class client experience (imho).

    I spent a lot of time on onboarding. Even if concepts like recovery phrases and keys feel more familiar now, they still need to be introduced properly. Creating an account, saving your recovery phrase, creating your first vault and installing the extension should feel like one flow, not a list of technical chores.

    That’s also why the browser was a good place to start. The site can guide you while the extension is right there. I don’t want someone to feel like they need to understand cryptography just to save a bookmark.

    There will be mobile clients later, but I started with browsers because that’s where I personally save most of my links, and getting that right felt more useful than trying to launch everywhere at once.


    A lot of the products I’ve enjoyed building started the same way. Something annoyed me enough that I wanted my own solution. Whispermarks is one of those, just stretched over a much longer timeline.

    The problem showed up years ago. I left it alone because I didn’t like the version I could build then. This is me finally fixing that old itch, and somewhere along the way, it turned into a product I think is pretty cool on its own.

    Whispermarks is available at whispermarks.com.

  • Groovylists.com now support converting Spotify playlists to Grooveshark

    A most sought out feature has been added to Groovylists.com by high user demand. It’s now possible to convert you Spotify playlists directly to Grooveshark. The usage is simple and is very close to how you convert iTunes playlists to Grooveshark.

    Check out the video tutorial below for a quick run-down:

    Try it out yourself on:
    http://groovylists.com

  • Importing playlists to Grooveshark using Groovylists.com

    I’m a coder, i scratch my own itch – that’s how we work. So when Grooveshark lacked an playlist import feature i set off in an endeavor to fix it myself, which proved to be quite the challenge.

    The thing is that Grooveshark does not provide a public API, especially not a public API which allow you to write to their service. I was fortunate enough to get in touch with James Hartig who runs http://gsuser.com/ which is the closest thing to a public Grooveshark API though it doesn’t support writing to Grooveshark.

    Through James helping hand i managed to get in touch with a Senior Developer at Grooveshark who gave me access to their internal API (Web 2.0 companies ftw, would this happen with Microsoft as an example?) and the project was on its way!

    So, enough ranting – the service is available at http://groovylists.com/ – no bells and no whistles, but it currently imports 100 tracks from any iTunes based playlist. I’ll probably find some time this week to add m3u support as well, which pretty much make the project complete.

    If you got any suggest and/or questions, either post them as a comment here or on the Grooveshark forums.

  • Casey Case Converter Firefox add-on approved!

    My new add-on Casey Case Converter was recently accepted into the public listing on Mozilla Firefox:

    Congratulations! Your nominated add-on, Casey Case Converter, has been reviewed by a Mozilla Add-ons editor who approved your add-on to be public.

    Casey is a moderators dream come true, it automatically format caps correctly. Which is a big hassle to do manually, especially on big posts. While it’s pretty limited in its current form (only Proper-case, UPPER-case and lower-case), i plan to extend it further. Especially now when the Mozilla peeps think it’s good enough for public release.

    Check it out at:
    http://addons.mozilla.org/addon/9920

  • Selenium IDE – patched for Firefox 3.5

    Since my recent upgrade to the Firefox 3.5 betas i found that some of my Add-ons wasn’t working properly. Significantly Selenium IDE which i frequently use for automated website tests. So a bit of hacking and a with good portion of magic i managed to patch the current 1.0.1 release into a compatible Firefox 3.5 version.

    I probably goes without saying that this is a highly experimental release with no guarantees what so ever. But I’ve been running all my tests on it and it works fine. So i you can’t wait for the official release, use this one:

    http://public.tommie.nu/tmp/selenium-ide-1.0.1.1-ff3-5.xpi

  • Västtrafik på Twitter och Tugg.nu

    vasttrafikVi lever i Web 2.0 men tyvärr hänger alla inte företag med i svängarna. Så ibland får man agera barmhärtig samarit och styra upp ett och annat åt företagen. Västtrafik t.ex, dom var snabba med att bjuda på en RSS över akuta trafikförändringar, men dom har inte hoppat på Twitter/Tugg.nu-vagnen än. Så tja, man får väl göra det åt dom.

    Alla trafikförändiringar synkas till http://tugg.nu/vasttrafik och vidare till http://twitter.com/vasttrafik, så är du medlem på någon av dessa kan du följa dem.

    Om du hänger kvar i RSS-världen och av någon anledning inte vill köra på Västrafiks egna RSS kan du följa tugg.nus, http://tugg.nu/vasttrafik/rss

  • Urpremiären av Sveriges nya teknik-podcast: Slashat.se

    Urpremiären på Sveriges nya teknik-podcast bjuder på en ytterst välartikulerad introduktion av våra värdar, Jezper och Tommie. Men även en djupdykning i Apples In App Store, iPhone OS 3.0, DjHero och mycket annat. Så bänka dig dig framför datorn och slå på högtalarna, för Slashat.se Avsnitt 001 är här!

    Så vad väntar du på, hoppa direkt till http://slashat.se och lyssna!

    http://slashat.se/2009/03/25/slashat-avsnitt-001-premiar/

  • Introducerar Tugg.nu, en Svensk Twitter!

    Håller på att experimentera lite med en svensk klon av http://twitter.com. Behövs verkligen det kanske du frågar dig? Tja, jag tycker nog det. Twitter.com är onekligen störst, men uteslutande på engelska (samt alltför ofta “over capacity”). Vilket gör det lite omständligt för oss Svenskar att hitta varandra där. Naturligtvis kan ni posta på Svenska på Twitter, men det trotsa syftet med siten lite. Speciellt om du har många amerikanska/engelskspråkiga personer som följer dig.

    Framtida planer innefattar stöd för Facebook Status Updates (åt båda hållen, skriver ni något på Facebook publiseras det på Tugg.nu och vise versa), WordPress pluggar och plugins till andra blogsiter.

    Sugen på att prova? Kolla in http://tugg.nu

  • Introducing gearpilot.com

    It started out with a co-operated gadgetblog between me and Jezper. And it ended with 5 published items and realization of the dullness of re-write already published content. It’s more or less impossible to compete with the bigboys of gadgetblogging, so what do you do? Yepp, if you can’t beat em – join em.

    Gearpilot is now a syndicated rss aggregator which tracks all changes on the nets gadgetblogs. Using top-of-the-line technology (by me! 🙂 ) its now possible for you to stay up to date with the, way to fast moving, gadget community.

    http://www.gearpilot.com