Month: December 2013

Happy New Year, 2014!

Happy New Year!

2013 is coming to an end. As the Hebrew saying says – ‘it was good, and good that it was.’

I look back at my 2013 resolutions and, well – they left some to be desired. 2013 was a year of ups and downs.

But that’s OK. 2014 will be an awesome year; we’ll do all of our previous resolutions and then some.

Here are my resolutions for 2014:

  • Happy. Life is short, let’s have fun.
  • Healthy. No junk food. Work out 3-4 times a week.
  • Save time. Life is short, don’t spend time doing stuff you don’t like.
  • Travel. At least 3 foreign countries, of which at least one is new.
  • Family. Spend more quality time.
  • Write. Blogging once a week, South America first 10 chapters.
  • Experience. Try to do at least one thing every day that makes that day worth it.

OK, time to put our party hats on. Catch you all next year.

Happy New Years! 🙂

RackSh – Console for Rack based Ruby web apps (like Sinatra)

At Fiverr, we are making increasingly heavy use of Sinatra-based services, and need all the productivity knacks we can get. Any Ruby/Rails developer knows the console: the console is your friend, your ally, it will tell you when you are seriously injured, it will keep you awake and angry, and remind you to finish the job and get the hell home. But you know the worst thing about the console? It is not available for non-Rails Ruby apps, such as Sinatra-based apps.

Well, actually it is. Check out RackSh, a no-nonsense gem for console debugging for Sinatra apps. Read the link for the full details, but the gist of it is

$ gem install racksh
$ cd my_sinatra_app
$ echo 'gem racksh' >> Gemfile
$ bundle install
$ racksh

Wham! Console heaven.

A Programmer with a Mac: Contentious Opinions; Nothing is Free

I’ve noticed that many of my professional opinions are [inevitably, to those who know me] out of line with the programming bon-ton, both within Fiverr and outside of it. While these are purely professional disagreements, some of them are quite the touchy subject, and have already earned me (too much?) attention. It seems that ‘plus ça change, plus c’est la même chose’ – this has been the case in every place I’ve ever worked. The recurring theme is that I grow increasingly competent, confident, and (most importantly) emotionally involved (would not recommend this as a best practice). Following a particularly public (professional) discussion that escalated to loud tones, somebody called me ‘Che Guevara’, which might not be historically exact, but that’s not the point: I champion my causes, unpopular as they may be.

As programming goes, since I still consider myself new to the art I try to keep a(n arguably) low profile and accept best practices from more experienced members – being young and learning from others is a privilege quickly and irrevocably lost, so it is worth making the most of it. However, with each passing day I am miffed by certain practices that seem to me to be less than ideal (though usually with their own understandable merit or background). I contend my opinions are and can be articulated and backed by concrete arguments, but still appear to widely differ from the standard wisdom. These topics include preferred languages, coding styles, testing philosophies, and ramp-up procedures, to name a few.

One noticeable meta-opinion I feel keeps coming up in almost every context (beyond just programming) is the people’s amazing tendency to stick to politically ideal notions, without embracing the understanding that resources are limited and that EVERYTHING YOU DO IS AT THE EXPENSE OF SOMETHING ELSE.

Nothing comes for free, and resources are always limited. In an organizational context, this means any measures taken must not only have a net positive impact, but must be considered in terms of how cost-effective it is, and how important it is in comparison to any alternatives. Two examples that we have recently been debating at the office are various types of testing (which everyone agrees might help, but I claim their cost exceeds their value), and Computer Science as a necessary knowledge and skill for software engineering (which I claim can always help, but in 99% of cases is simply either irrelevant, or by far a less necessary commodity than other fields of expertise and experience. I thought this was obvious, but a recent discussion regarding a new interviewee’s skills made me realize this might not be as much in consensus as I had assumed.

These are hard cases to make – in the organization, as anywhere else, touting what good things that ‘need’ to be done is easier than claiming ‘no, this is not important enough to spend our meager resources on it.’ Testing? Yes, it’s good! We must do it! Computer Science skills? Of course it’s crucial!

Everything is crucial. Everything is important. Sadly, your resources are limited, so the wisdom is in being able to define what *doesn’t* matter.

A Programmer with a Mac: Job Definition (Software Engineer vs Programmer)

I never know what to say when people when people ask me what I do. I can’t just say I ‘work in high-tech’, since that is extremely vague (so does my company’s secretary, our marketing people, our QA guy, etc). Am I a ‘software engineer’? That sounds quite pretentious (in Hebrew the subtleties are different, but similar). Is ‘programmer’ a more apt definition? People who build airplanes aren’t ‘airplaners’, but as people have pointed out, I don’t have an engineering degree (just CompSci, pfft), so I’m not really an ‘engineer’ by the formal definition of *that* word. Pertinently, however, it seems relatively little of my time is spent churning out code, and most of it is debating and considering how to best coordinate complicated interactions between separate, intertwining logical [software] components (and interweaving *that* coordination with the inter-human level creating all that). This is a simple reflection of the technological efforts that my company (Fiverr) in its entirety (well, at least the technological stack) is dealing with these days. Perhaps the good news is most people don’t really care that much – the most important thing for them is oh, so can you help me fix my printer? (Just kidding. Nobody has a printer anymore these days.)

A Programmer with a Mac: Fiverr is Hella Cool

Fiverr, as a company and as a product, is – to sum it up in a word – really cool. In brief, it’s a marketplace for services – sort of like ebay, but instead of selling (or buying) materials, you sell/buy services (“Gigs”), as in someone can ‘sell’ creating a logo for you, or video-art, or build a website for you, etc. It’s Thomas Friedman’s “The World is Flat” taken to the limit – anyone can sell (anything), anyone can buy. Other than the business resonance, I was (and am) especially taken by the social implications. Anyone today can set up a website and offer their services online. Fiverr just makes it super-easy: publicity, payments, etc.

When I was interviewing back in January with Sharon, our head of HR, she pitched me the ‘social’ aspect of Fiverr. Basically, she said, it’s good karma: we give people a stage to make money. There are people (quite a few, it turns out) who make a living by selling on Fiverr. And in today’s turbulent economic times, that’s quite a feat. So, it’s a refreshing change from the porn-gambling-toolbars-security shady and murky Internet-waters in which Israel so revels. Wouldn’t it be nice (this is still part of the pitch, remember) to know your work is doing some good to people?

At the time, I remember thinking to myself – what does this lady want from me? Just tell me what tech stack you’re on, how much money you’re offering, and let’s get on with it. It took me another half-year at a corporate intelligence company (and a few weeks in Northern India, pondering the Dalai Lama’s teachings [which sounds wayyy kookier then it actually was]) to decide (or “realize”, as a less introspective person might put it) that there is much merit to Sharon’s point. Karma is important, and helping other people is ultimately helping yourself. (If you don’t swing the Buddhism’s way — and I totally don’t — know this basic truism is well supported by workplace-happiness contemporary psychological studies.)

To be clear, I don’t deal with sellers (nor buyers) on a daily basis at Fiverr. I write code. And to put it in perspective, I’m not saving orphans or curing cancer. But it’s nice to be able to practice your chosen vocation, but at least in a way that positively impacts others.

As an end-note, a couple of start-ups that I think are doing massive amounts of good (especially relative to their size) are Coursera, who are just possibly revolutionizing the future of education, and CouchSurfing, who are making traveling a better experience for everyone, for free. The Wikimedia foundation are also amazing and always worth a shout-out.

Being cool counts.

A (Good) Programmer with a Mac (series)

Today marks my four-month mark as a back-end software engineer at Fiverr(.com), a small (but growing) software company (“start-up”, some might say) in Tel-Aviv. I have learned (and still am) a lot in these four months, and would/should detail my thoughts on these.

We use Macbook Airs at Fiverr. More on that some other time, and I thought this title would be a good title for the series: A Good Programmer with a Mac.

As with any worthy thing, there is a hidden message beneath the bare words, based on a *wordplay of* a famous Hebrew joke. This is my favorite type of jokes: where there are several layers of understanding and perhaps a cultural reference (oh, I did love me The Da Vinci Code); I especially enjoy the glint of people who immediately understand the joke (hint: in this case, the original joke is a Hebrew [racist] pun about ‘with a pen’). I’ve also found this to be one of the best assessors of intelligence – people who can grasp the deeper context of a saying, and immediately at that.

But I digress. I’m definitely a programmer (by trade), and I have a Mac, at the moment. ‘Good’ is as subjective as anything, but you can read the other posts and make up your mind on that.

Social Interactions – Becoming More Notable

One of my favorite topics is interpersonal interaction. I am especially interested in 1-on-1 interactions, but 1-on-many has its moments, too. I recently stumbled across yet another gem on Quora pertaining to this subject and decided I want to log it somewhere for future reference. So, here it is.