OSX software, five years later

In November 2010, before my first MacBook even arrived, I asked Twitter for “must-have” OSX software and collected the results in a blog post. A year later, I posted an update with a list of OSX software I was actually using. A few more years have passed since then. Last year I switched from my original MacBook Air to a MacBook Pro (a very good decision) and used the opportunity to do some cleanup. About 9 months into using the MBP, I figured I could do another list. An asterisk indicates something I didn’t have on my list in 2011.


  • Chrome, as my regular browser and part of my web development environment, with these extensions:
    • 1Password
    • uBlock Origin*, currently the most decent adblocker. Will see how long it can stay independent.
    • RSS Subscription, restores the RSS icon
    • BrowserStack Local*, provides tunnel for testing local files
    • Pinboard*, quickly add open tab(s) as bookmarks. Also using Pinboard on my phone.
    • Social Fixer for Facebook*, makes a few features on Facebook a lot less annoying. Hasn’t been updated since December 2014 and accordingly falls short in many places, but even and outdated and sometimes broken extension is still preferable over vanilla Facebook to me.
  • Keynote, these days used very rarley. My last few conference talks were all web-based, with probably too much time spent on customizing the template I used.
  • Twitter for Mac, runs only when I need it. Mostly reading Twitter on my phone.
  • 1Password to generate and mange passwords. Chrome integration is nice, runs also on Windows PC and Android phone.
  • Tunnelblick for VPN connections. Depends on the project I’m working on, has seen lots of use more recently.
  • DaisyDisk*, quickly tells me where most disk space is used. This was very useful on my old MacBook Air, where the 256 GB SSD was full way too often. With 512 GB this is much less of an issue.
  • Dropbox*, weird that it wasn’t on my previous list from 2011, I’m pretty sure I’ve used that before.
  • ScreenFlow*, pretty decent software for capturing screen casts. I’ve mostly used it to record screenreader sessions for my Talk to Me – Making websites accessible presentation. I also used it to record that presentation, since its able to capture both the camera input and the projector screen output.
  • Very special purpose:
    • Seil* (formerly know an PCKeyboardHack), for remapping the capslock key to toggle iTerm2. To do this, use Seil to change capslock to keycode 105 (also follow the instruction for turning off the default behaviour). Then in iTterm2, go to Preferences -> Keys, under “Hotkey”, check “Show/hide iTerms2 with a system-wide hotkey”, click on the input and hit your remapped capslock key. It should enter “F13”. Then close Preferences and give it a try.
    • SizeUp*, for maximizing windows and moving them from one desktop or monitor to another


  • Skype, still using it almost daily to chat, talk, and sometimes pair-program via screensharing. Something like once a month someone can’t hear me, but restarting Skype always fixes that issue.
  • Gitter* is like Slack (I guess), but focused on coding projects, with very tight GitHub integration. Currently using it with multiple chat rooms to work on sloppy.io. I created a jquery-validation channel, but it has seen very little use. I’m looking forward to the day where they’re rewriting it as a native app, or at least fix the performance. Switching channels shouldn’t take several seconds for the new channel to render.
  • LimeChat* as IRC client, using isaacs’ theme
  • Telegram*, using the “native” OSX app, which supports secret chats, something the cross-platform Telegram Desktop app doesn’t have.



  • iTunes for music playback. Overall its still decent, even with the tons of irrelevent features cramped into the same app. I’ve never found an alternative just for playback of tagged mp3s files. I often listen to all albums of a single artist in chronological order or shuffled albums (not just songs). Would need at least these features to be able to replace iTunes.
  • VLC for video and occasional audio file that I don’t want to add to iTunes.
  • Picasa for photos, a quick import and edit while traveling. May need to find a replacement, since the desktop app won’t be updated anymore.
  • Fission*, for cutting MP3s very efficiently. Unlike a lot of other software, Fission can cut compressed audio files, without decompressing them first and recompressing them later. Great to cut rehearsal room recordings down to the relevant parts.
  • Guitar Pro*, for writing down songs. A very recent addition, and a bit weird to use a current version after using Guitar Pro originally about 10 years ago. They’ve added a bunch of emulated instruments, unfortunately all on top of midi instruments, which mostly sounds pretty terrible. Still useful to pin down the little details of songs and share them with the rest of the band.

Thanks to my friend Enes for reviewing a draft of this post.

Release: Validation Plugin 1.15.0

I’m happy to announce the 15th release (discounting various patch releases) of the project, bringing it up to 1.15.0. This is the first release managed by Markus Staab, who took over the maintenance for the foreseeable future.

A lot of people (26!) helped out to get this new release out of the door by a whooping 100 commits.

Kudos to all of you guys, namely: Alok Saldanha, Brahim Arkni, Christopher Bauer, Daniel Orner, Denisson Padilha, dorner, Ehsan Abidi Ashtiani, Filip Mares, Jörn Zaefferer, Julio Spader, KJ, Lars Skjelbek, Lukasz Wozniak, Markus Staab, Martti Laine, Michal Moravec, netzkind, rasstislav, sadj, Salahuddin Hairai, Saldanha, silovski, Thomas Gohard, Wojciech Walek, Štefan Baebler.

This release would not have been possible without the help of Brahim Arkni. He supported Markus in triaging bugs, cleaning up the bugtracker, reproducing reported issues and also provided a lot of patches. Thank you! It is a pleasure to work with Arkni, we are looking forward to work with him on future releases.

The release itself brings a lot of small improvements and fixes a lot of old and outstanding bugs. The most important addition is a new normalizer callback which allows you to modify the values provided by the enduser, before validation takes place. For a full list of all the changes, check out the changelog below.

Download this release.

If you use the plugin, please donate or ask your boss to make a donation! This helps to run the plugin site and makes releases like this one possible.

Click here to lend your support to: jQuery Validation Plugin and make a donation at www.pledgie.com!

  • Please post questions to the official Using jQuery Plugins Forum, tagging your question with (at least) “validate”. Keep your question short and succinct and provide code; a testpage makes it much more likely that you get an useful answer in no time.
  • Please post bug reports and other contributions (enhancements, features, e.g. new validation methods) to the GitHub issue tracker

The full changelog:


  • Fixed code style issues


  • resetForm should also remove valid class from elements.
  • Unhighlighting field if already highlighted when using remote rule.
  • Bind the blur event just once in equalTo rule
  • Fixed error when calling .rules() on empty jquery set.
  • Fix handling of error messages with input groups.
  • Fix TypeError in showLabel when using groups settings
  • Adding a way to pass method name to remote
  • Validation fails to trigger when next field is already filled out
  • Required rule take precedence over number & digits rules
  • Error hidden but input error class not removed
  • Remote validation uses wrong error messages
  • Fixed field highlighting with remote validation.
  • Fixed :filled selector for multiple select elements.
  • Added doc reference to jQuery.validator.methods
  • Move message processing from formatAndAdd to defaultMessage
  • ErrorList should contain only the errors that it should
  • Extract the file name without including “C:\fakepath\”
  • HTML5 step attribute support. Fixes #1295
  • Added support for “pending” class on outstanding requests
  • Added normalizer (#1602)
  • Split out creditcard method
  • Escape errorID for use in the regex, not to build aria-describedby
  • Escape single quotes in names avoiding a Sizzle Error being thrown
  • Instead of using validating field’s value to skip api call, use the serialized data object of the request
  • Add support for contentEditable tags


  • BIC: allow digits 1-9 in second place of location
  • Accept method regex should be escaped properly.
  • Case-insensitive check for BIC
  • Correct postalCodeCA to exclude invalid combinations
  • Make postalCodeCA method more lenient


  • Added Macedonian localization.
  • Added missing pattern message in Polish (adamwojtkiewicz)
  • Fixed Persian translation of min/max message.
  • Updated messages_sk.js
  • Update Malay translation
  • Included messages from additional methods
  • Improving pt_BR translation and fixing a typo on the ‘cifES’ key.

Release: Validation Plugin 1.14.0

The first stable release of the jQuery Validation Plugin, 1.0.0, came out in June 2007, making the project now a little over 8 years old, pretty seasoned for a JavaScript library. According to builtwith.com, its the 25th most popular JavaScript library, with over 1.3 million websites using it. I’m happy to announce the 14th release (discounting various patch releases) of the project, bringing it up to 1.14.0. While a lot of people contributed to this release in some form, I’d like to give Markus Staab a special call out. He’s been helping with ticket triage along with addressing some issues himself, overall being a big help in keeping the project alive.

The release itself brings a lot of small improvements and fixes, along with several new localizations. The plugin now relies of jQuery’s .on() and .off() method, making jQuery 1.7.0 the minimallay supported jQuery version. For a full list of all the changes, check out the changelog below.

Download this release.

If you use the plugin, please donate or ask your boss to make a donation! This helps to run the plugin site and makes releases like this one possible.

Click here to lend your support to: jQuery Validation Plugin and make a donation at www.pledgie.com!

33 people contributed to this release. A big thank you to: a-barry, Ajay Singh, Brahim Arkni, Calinou, Carles Jove i Buxeda, Daniel DeGroff, Darshan Jani, David Weston, dnomak, Florent, hanumanum, Igor, James, jered, Jesus, Maks, Maks3w, Manuel Dalla Lana, Marek ‘saji’ Augustynowicz, Markus Staab, Merab Tato Kutalia, Michael J, Nadi, Pietu1998, rskm1, Ryley Breiddal, sekander, Shimmy, Shonetow, Stefano Stoduto, wozzo, Yair Sladowsky, Zen Chua.

  • Please post questions to the official Using jQuery Plugins Forum, tagging your question with (at least) “validate”. Keep your question short and succinct and provide code; a testpage makes it much more likely that you get an useful answer in no time.
  • Please post bug reports and other contributions (enhancements, features, e.g. new validation methods) to the GitHub issue tracker

The full changelog:


  • Remove unused removeAttrs method
  • Replace regex for url method
  • Remove bad url param in $.ajax, overwritten by $.extend
  • Properly handle nested cancel submit button
  • Refactor attributeRules and dataRules to share noramlizer
  • dataRules method to convert value to number for number inputs
  • Update url method to allow for protocol-relative URLs
  • Remove deprecated $.format placeholder
  • Use jQuery 1.7+ on/off, add destroy method
  • IE8 compatibility changed .indexOf to $.inArray
  • Cast NaN value attributes to undefined for Opera Mini
  • Stop trimming value inside required method
  • Use :disabled selector to match disabled elements
  • Exclude some keyboard keys to prevent revalidating the field
  • Do not search the whole DOM for radio/checkbox elements
  • Throw better errors for bad rule methods
  • Fixed number validation error
  • Fix reference to whatwg spec
  • Focus invalid element when validating a custom set of inputs
  • Reset element styles when using custom highlight methods
  • Escape dollar sign in error id
  • Revert “Ignore readonly as well as disabled fields.”
  • Update link in comment for Luhn algorithm


  • Update dateITA to address timezone issue
  • Fix extension method to only method period
  • Fix accept method to match period only
  • Update time method to allow single digit hour
  • Drop bad test for notEqualTo method
  • Add notEqualTo method
  • Use correct jQuery reference via $
  • Remove useless regex check in iban method
  • Brazilian CPF number


  • Update messages_tr.js
  • Update messages_sr_lat.js
  • Adding Perú Spanish (ES PE)
  • Adding Georgian (ქართული, ge)
  • Fixed typo in catalan translation
  • Improve Finnish (fi) translation
  • Add armenian (hy_AM) locale
  • Extend italian (it) translation with currency method
  • Add bn_BD locale
  • Update zh locale
  • Remove full stop at the end of italian messages

Rule of Thumb

A rule of thumb describes an approach based on intuition, in contrast to one based on rationality and calculation. I think its fair to say that science is all about rational, calculating, data-driven approaches, where intuition is considered irrational and unreliable. The scientific method is, among other aspects, about eliminating the effect of various biases, like the availability bias (the first thing that comes to mind is seen much more favourable than other options; Daniel Kahneman describes many of these in “Thinking, Fast and Slow”). In this article I want to provide examples where rules of thumb are a better alternative to scientific research for making personal decisions.

Consider food. The 20th century has seen many trends come and go, arguing for some aspect in one decade, arguing against the same aspect in the next. Fat is good, fat is bad; carbs are good, carbs are bad. When it comes to the cancerogenic or cancer preventing effects of food, there are many medical studies involved, but have those gotten us any further? Consider this graph from a vox.com article about news about medical studies:


Note the headline on that graph: “Everything we eat both causes and prevents cancer”. I feel like that’s still the wrong way to think about it. Consider this instead: Food doesn’t cause or prevent cancer. Human bodies are not machines that all have the same requirements, they are more complicated, flexible and unique. As long as given the right nutrients, your body will function regardless of the specific food you eat. As the author concludes: “As we turn away from the magic pills and miracle treatments, I think we’ll focus more on the things that actually matter to health — like education, equality, the environment.”

Education, equality, the environment, these are all interesting areas, but then food is certainly important to us as well, and surely has influence on our health. But can medical studies really help us decide what food to eat, when they contradict each other so much? In this case a rule of thumb is likely our best bet. To answer the question of “What should I eat (to not get cancer)?”, the rule of thumb given by Michael Pollen in his book “In Defense of Food” could work pretty well:

Eat food. Not too much. Mostly plants.

Note that this doesn’t require peer-reviewed studies published in journals to understand. This rule of thumb itself seems pretty intuitive to me. But more importantly, it’s simple, easy to remember, and easy to apply. It’s not precise, it leaves plenty of ambiguity, and that’s fine. It can help make quick decisions about what and how much to eat, without getting you into decision paralysis, where you can’t decide among too many options or contradicting recommendations. And if this rule of thumb doesn’t work for you personally, then you can look for another one.

If the idea of using rules of thumb as outlined above is intriguing to you, I can highly recommend the book “Risk Savvy: How to Make Good Decisions” by Gerd Gigerenzer (also available in German as “Risiko: Wie man die richtigen Entscheidungen trifft”). The author covers various other rules of thumb (for example, for picking food from a restaurant menu), but also discusses risk and decision making from other perspectives. Its among a few books that influenced my thinking quite a lot lately.

PS: Thank you Lars, Tomasz and Enes for reviewing drafts of this post and providing valuable feedback.