A few years back, I visited Italy and noticed an interesting phenomena: most of the waiters that served us were middle aged man. Some even senior citizens. This is very different than the situation in most western countries I visited, where waiters are mostly young, usually around 25 years old. In most cases, being a waiter is a temp job, on your way to getting a better job. Many people do it while studying to get their degree or while seeking for a "real" job. But not in Italy. In Italy, a waiter is a proper job. It is a career. It is something you do because you choose to do it, not because you have no other alternatives.
A web rockstar is a master of web technologies. He breaths HTML and CSS. He whistles JavaScript while in the shower. He will be more than happy to engage in a deep discussion on why library X is better than JQuery. He will wear a T-Shirt saying "I trash IE6" (or something similar). He will be send you a bunch of links to his recent work instead of a resume. He can do PHP or Django or Ruby on Rails, but he really shines on the client side. He pities the condescending server side people because deep down he knows that his work is the true art. He is a web rockstar.
How many web rockstars do you know? I don't know that many. I sure know a lot of Java, .Net, PHP and Python rockstars, but not many web rockstars. One could argue that this is a relatively new art. But I don't think that's the problem. For some reason (more on that below), the web developers became the waiters of the software world. There are many young people doing that, students, novice developers all sharing one common aspiration: to get out of the "front-end ghetto" and become a "true developer" on the server side.
It is relatively easy to get started: HTML is simple. It is not programming, it is just markup. You don't need to understand any programming paradigms to do it. Moreover, most people don't care about the quality, as long as the page renders correctly. You move on to CSS, which is a bit more complex, but still not programming. Then, you find that you need to add a dynamic menu, so you read a short intro to JQuery, copy a few lines of code and you are now officially a JavaScript developer.
Those people are willing to work for less, which drives the prices down. This gives strong incentive for people to "move on". Many managers who need those skills think that they can just get the job done for very little. Naturally, the payment comes later. The website stops working in certain browsers, especially on the bosses' new iPad. It takes forever to load. Each modification breaks 10 other pages. The marketing people want to refresh the look and feel for the upcoming holiday season and the job ends somewhere in mid January.
This bad ecosystem changing, for a number of reasons. First, HTML5 and CSS3 gives you a lot more power with the cost of being far less trivial. Second, we see rising popularity of full fledged JavaScript MVC-style frameworks (e.g. JavaScript MVC, MooTools and Backbone.js) which are more than just showing some fancy widgets. Third, the level of interactivity expected from web applications is soaring. The bar has been raised. One needs deeper skills to develop truly remarkable web sites. Finally, JavaScript is becoming a first-class citizen with the introduction of innovative technologies like node.js (which, ironically, takes the JavaScript developers to the server side and give them an incredibly powerful tool).
JavaScript is one of the most important programming language today. On the server-side there are so many alternatives. However, on the browser, JavaScript is king. True, there are some attempts to shield you from the actual JavaScript work (GWT, Cappuccino), but, in many cases, you will end up coding and debugging JavaScript. Those who will choose to master the web technologies will not have any problem finding work in the upcoming years. We need more Italian waiters.
My message to novice web developers is: don't run away. Love your work. Master your skills. Don't settle for mediocracy and become a true web rockstar.
My message to server side developers: respect you colleagues. If you really want to test your skills, let's see you putting up an interactive web-app. I dare you. It is a challenge, perhaps even a bigger one than coding a couple more beans on the server. Be honest, it is possible that you don't like doing web development because it is just too hard (no cushy IDE, cross-browser quirks, etc.).
My message to managers: cheapskates always pay twice. Always. Get the right people for the job and be willing to pay for quality. Get these amazing web rockstars to be part of your team and not just freelancers, thus creating a differentiator for your company.
One final note: we're hiring! if you are a web rockstar, or even a young web developer who wants to become a web rockstar, you live in Israel, and you're looking for a new project, drop me a line. I'm looking for you and I have a project that could take your career to a whole new level.
Image under CC attribution from Flickr
I should not let this year end without another post. It has been very quite around here lately and a status update is in order.
For the past couple of months, I've been working on a new venture called Superfly. The best way to describe superfly, is like mint.com for travel. Our goal is to help you maximize your travel rewards. Get more points/miles and use them wiser. It is clear that most people are not making the correct choices, thus, leaving a lot of money on the table. You can see the full pitch, by my new partner Jonathan Meiri, as it was presented in the latest TC Disrupt. We are working on launching our beta, for which you can sign up at superfly.com.
I joined Jonathan as a technical co-founder. Some call it CTO, some call it VP R&D, but the matter of fact is that I'm just a hacker. Well, I'm not hacking into any system, I'm hacking a system together. For the past 7 years I've been working primarily in Java. It is a very serious language, devised by people with beards, glasses and checkered flannel shirts. And now for something completely different (did you get it?). No more beards, no more serif text. I'm going Python and Django. It feels a lot more like hacking.
It is going to be a very different experience for me. Unlike my previous venture, I have a partner and we are looking for funding (ping me if you have any :-). It is not a bootstrap effort. We already have offices, not working from home or coffee shops. It is a consumer web application which appeals to a very broad audience, as opposed to my previous product which is a niche desktop one, mainly for professional users.
It is not the first time I'm doing consumer-webapps, though. I was doing that for about 4 years while working in Amdocs. Going back to the technology aspect, it was a very different stack. We were using J2EE (before it lost the 2) with all sorts of beans in the backend. Struts 1.x was driving the web side with ugly JSPs. Ajax was still a cleaning product at the time, and JavaScript was for web masters, so we were too important to deal with it. And... XMLs. A sea of XMLs. Enough XMLs for a lifetime. To quote one of my favorite all time tweets: "Java is a DSL for taking large XML files and converting them to stack traces" (from @avalanche123).
Working with Django and Python is a very refreshing change. While I still miss the cushy type system, I can see myself becoming far more productive. It's really about doing more with less, about minimalism and pragmatism, and I'll probably write some posts about it in the near future (if I'll have time, that is :-). I'm still loyal to the Eclipse ecosystem and PyDev is now my tool of choice. It is not bug-free, but, after some tweaking and configuration, it seems like a worthy companion. Again, a post on that experience is in the works.
Overall, I'm really excited about Superfly. I strongly believe in the idea, in my partner and I'm grateful for the opportunity to stretch myself to new areas. I strongly recommend it for anyone who can. Challenge yourself.
I consider myself a Mac power user. I love OS X and I'm very comfortable with it. Nevertheless, I'm also a geek, seeking to improve and enhance my experience, to boost my productivity and do more with less. That's also the philosophy behind my current product.
A couple of months ago, I discovered Keyboard Maestro (KM), a general purpose macro program for Mac. It is probably not the prettiest Mac app I came across. The macro editor could use some refinement and the icons it uses can make your eyes bleed. Yet, it gets the job done. Big time. It is very lightweight, not adding more bulk to your bloated OS. It is easy to use and encourages you to add macros and improve your workflow. It quickly became an essential part of my arsenal.
You can read about it on the product web site. I also recommend the Mac AppStorm review, published a couple of weeks ago. Me, I'm just going to share some of the macros I personally use. This should give you some ideas as to what you might do. Most are really easy to implement once you're familiar with KM unless stated otherwise (e.g. where I used AppleScript). If you have particular question on how I implemented something, feel free to ask in the comments and I'll share my implementation.
The macros are bound to a keyboard shortcut or to the KM menu. You can also assign them to a floating buttons palette. Some may argue that most of these actions can be achieved simply with the Keyboard control panel. That's not exactly the same. For example, take my "plain text paste": turn the cmd+V to paste without the formatting and shift+cmd+V to regular paste. This can be done from the Keyboard preferences for all apps that support "Paste and Match Style" in the Edit menu. Many apps do. However, it will not work it dialog boxes where the menu is disabled. With KM it will work just fine if you use the right sequence of actions. You get my point, this just works better and has far more options.
General Purpose
Finder
Clipboard
Chrome and web browsing
Music
TextMate
Evernote
Eclipse
That's it for now. I hope this gives you some ideas. You can find more example macros on the product web site. If you have some useful Macros that you've written yourself, you are welcome to share in the comments. Personally, I think the author of KM should cultivate a wiki of useful macros, but that's a different subject.
I received two questions from readers following my previous posts and it is a good idea to share the answers.
Jason asks:
I'm impressed by LaunchBar, but I don't want it to swing into action when I'm coding in eclipse and use cmd-space for autocomplete.
In my case, I simply use double cmd tap for activating LaunchBar instead of the cmd-space combo. I got used to it from QuickSilver and it works best for me. Two quick thumb clicks and the cmd and LaunchBar is here to assist.
To change it, open the LaucnhBar preferences → shortcuts. Disable the cmd-space for "Search in LaunchBar". Enable the Modifier Tap for "Search in LaunchBar" and select "Double Command".
Next, Alan asks:
I use Mac SL, fully updated, with Eclipse 3.6 Helios updated. I have trackpad and magic mouse and when scrolling the editor of eclipse, it's so choppy, while scrolling navigator or outline windows it's much smoother.
For the Magic Mouse, I'm using Magic Driver, which I personally recommend. It lets you set the sensitivity of the scroll and can be customized per application. Their site claim that it does not support the Magic Trackpad (it should, soon, hopefully) and I don't know how it will affect the built-in trackpad. I have an older MacBook Pro, without the multi-touch trackpad, so it works fine.
I know that BetterTouchTool can control that, but I don't think the settings can be customized per application. I wouldn't install both of them, though.
If you do encounter the same problem, do give the Magic Driver a shot. Let me know how it works for you. If you have a different solution, feel free to share.
Important: I'll be giving away one license for LauchBar, courtesy of Objective Development. Details at the end.
I recently had to replace the hard drive on my MacBook Pro and, since I was still in Leopard ear, decided it was an excellent opportunity to start a fresh installation. I've been a QuickSilver addict ever since I switched back to Mac, about 3 years ago. Yet, it has been acting up lately and it is no longer regularly maintained. I remember reading an interview with QS creator specifically mentioning LaunchBar, so I decided to check it out.
I'll start from the bottom line: LaunchBar is a great piece of software, I don't miss QuickSilver and I don't see myself using a Mac without it.
Here's why.
Getting Started
I've been using LauchBar for about a month now. On the face of it, LaunchBar is not as configurable as QuickSilver. They share the concept of Index which can be extended, but there are no plugins or themes. After a while, I found that LaunchBar can do everything I need and even added some new tricks to my arsenal.
The basic usage is simple and intuitive, but there is a lot tucked beneath the surface and I keep finding new options and features all the time. It takes a while to understand the depth of the product and I recommend going over the documentation, which is something I never do. If you want the QuickSilver feel, I recommend hiding the dock icon (under the Preferences → Advanced → Dock Icon) and using a command double-tap to invoke LaunchBar (under Preferences → Keyboard Shortcuts → Modifier Taps).
My Common Use-cases
There's a lot you can do with LauchBar and trying to cover everything will result in a book, not a blog post. Hence, I will focus on some tasks that I use very often. You can head over to the LauchBar web site for the full feature list. It also features a good section on switching from QuickSilver.
Launch an application - the most common use. Start typing an application. Find it. Launch it. LaunchBar also remembers your previous selections and offers them first the next time you start typing. Works as advertised.
Browse for files - I often use it for file browsing instead of browsing in finder windows. It is faster, more keyboard friendly and reduces windows clutter. I usually start by either typing and searching for a specific folder. LaunchBar does not index the entire drive, that would be too much. Adding your relevant folders to the index is simple. Once the folder is found I use the arrow keys or type a partial name to navigate to a sub-folder. Once a file is found, there are numerous actions that can be performed. I can launch it, but I can also move it, rename it, delete it and much more.
Manipulate Finder selection - I can also start from the Finder selection. I have a special shortcut for that: double tap on the Ctrl key. For example, if I need to move a file, I use this shortcut and then simply locate the destination folder. Another example: open a terminal at the given path. From the Finder, I simply double tap Ctrl, type "TER" to find the "Open in Terminal" action and press Enter. That's it.
Web search - You can use LaunchBar to invoke web search in different sites. For example, start typing "WIKI" to find "Wikipedia", press enter, and type your query. A second enter will invoke the query in your browser. You can easily add more search engine. For example, I added a search that lists tagged bookmarks in my own delicious account.
Even More Features
Here's some more features worth mentioning.
Services - The services are an often neglected feature in OS X. Snow Leopard did some justice by reducing the services menu clutter, making it configurable and context dependent. LauchBar takes it even further, adding all the services to the index, letting the user invoke services without ever leaving the keyboard.
LaunchBar Actions - It comes with a big library of predefined actions. For example: shorten a URL, manipulate images (resize, flip, etc.), control iTunes, set file labels and much more. Needless to say, one can always write more AppleScripts or Automator workflows and add them to the index.
Clipboard History - It can keep history of the clipboard, making it accessible from the launcher itself. It also has a nice feature called ClipMerge which enables copying and adding to the existing clipboard.
Calculator - There's a handy calculator. That's a feature also found in the built-in Spotlight, but the LaunchBar calculator is much more powerful.
Pet Peeves
Display - There are a couple of things that could be improved. First, the LaunchBar appears right below the menu bar and uses a small font size (probably 12). QuickSilver was better in this area, both in design and function. There should be an option to enlarge the font size. It would also be nice to have the bar in the middle of the screen and not at the top. It works OK on my 20" monitor, but at larger screens, this could be a nuisance. It is not an eye candy.
Event Triggering - QuickSilver has an option to bind keyboard shortcuts to actions. LaunchBar does not. Personally, I don't miss it because I use another program called Keyboard Maestro, which lets you define macros for keyboard events and much more. It is a perfect companion for LaunchBar, IMHO. That, and Typinator. With the 3 at your disposal, you become a true Mac keyboard ninja. But that's a topic for a completely different post.
The Free Alternatives
You could choose to stay with QuickSilver. Some other developers picked up where the original developers left off. From my experience, it consumes too much resources and has too many bugs. LaunchBar does an excellent job in that sense. For example, right now it is consuming 33 MB of memory (about 6 day uptime). My system stability and performance is worth the price (I always say that cheapskates pay twice).
There is, of course, Google's Quick Search Box (QSB). It can be considered a successor to QuickSilver. I tried using QSB, but I found that it was missing some features and still hogged resources. QSB has a strong focus on search, not surprising considering its' origin. Personally, I didn't like getting search results from the web or spotlight inside the launcher. It also lost the initial momentum: updates to the project are now irregular at best.
Conclusion
As I noted at the beginning, LaunchBar has become an indispensable part of my arsenal. You can do almost anything you need without leaving the keyboard and that saves time and reduces the interruptions in the workflow. Especially when using a laptop with a trackpad and a limited screen real-estate.
As promised, I have one license to give away, courtesy of Objective Development. If you are interested, please leave a comment on this post. Make sure to leave your email address (it is not visible to other readers) so I can get in touch with you if you win. I'll pick the winner on Sunday, October 24th. Good luck.