Showing posts with label personal. Show all posts
Showing posts with label personal. Show all posts

Monday, April 28, 2014

My 3 year mozversary

A couple of days ago I started my 4th year at Mozilla and as with all anniversaries, it was a good opportunity to step back and reflect on my accomplishments during this past year and where I'm going next. And since Mozilla practices complete transparency, it also seemed like a good opportunity to sit down and write a blog post, as I never seem to get enough time nowadays to do so. Besides, what's the point of having a blog if not for embarrassing yourself every once in a while?

For a year with 4 different CEOs, the first thought that came to mind regarding my performance was: "a bunch of code, a ton of reviews". I didn't know if that was actually true though, so I set out to collect some evidence. All the code metrics I've come across must always be taken with a grain of salt, so I didn't worry about being completely accurate and I don't intend to gauge my progress on these metrics alone, but at least I wanted some quantification of the kind of impact that I had. Besides refactoring and bug fixing, my most useful feature work in this period includes break on DOM events, closure inspection, the memory actor and improved debugger behavior after a reload (edit: forgot to add the tracing debugger and function re-evaluation in Scratchpad).

The first interesting observation [1] is that I landed 63 patches last year, down from 139 the previous year, which was way bigger than the 56 patches the year before. This was somewhat disappointing and I believe that partly it was due to the initial debugger landing the year before and general work on an immature code base at that time, which made progress much easier to happen in small chunks. I find that  I don't usually land separate patches for the same bug, so at least the number of commits is closer to the number of distinct bug reports or new features, than just individual code changes. Another reason for the decrease is that I spend significant time prototyping things that haven't landed yet, like the memory and performance widgets. Also, lately I find myself diving into SpiderMonkey and Gecko work for our upcoming memory and performance tools, and my lack of experience there slows me down considerably. Nevertheless, this is something that bothers me and I intend to improve upon this year.

The second observation [2] is that I'm doing more reviews as time passes, which is to be expected I guess. Last year I did 240 reviews, compared to 220 reviews the year before and 25 reviews in my first year. Obviously those who are around longer get to do more reviews than those who are new to the project, but what I mostly find interesting about this is that I get to do approximately one review per working day. Since I'm counting these from commit messages, they don't take into account the back-and-forth between the patch author and reviewer while shaping up the patch. I counted 372 review requests in my email during the past year (not including feedback or needinfo requests), so I seem to be giving reviews or feedback more like twice a day, every day. This must have contributed in part to the diminished number of patches that I landed myself, but on the flip side I get more visibility in incoming changes and can be more up to speed on my own work, which should decrease the turnaround for reviews on my patches. In addition to that, when I'm doing a review I'm looking at the patch from many different angles (from code correctness and code style issues, to API clarity and architectural direction) and that gives me insights into how our architecture should evolve, which in turn results in more followup work (incidentally, I've filed precisely 100 bugs last year).

Another very important realization is that even if I had spent exactly zero time reviewing other people's work, it would have been very unlikely that I could have managed to land all those 303 patches myself (240 plus 63 of my own). Which is another way to say that we all make a bigger impact by enabling others to do better work, than by strictly fine-tuning our own work output. This is particularly important for achieving a high bus factor for the project, but it is also a necessary ingredient if we want to nurture a community of contributors that will keep the project successful in the years to come. I find this sufficiently important and motivating that I don't plan to be doing less reviews, just try to invest my time more efficiently. We'll see how that goes.

Speaking of nurturing new contributors, I saw in a relevant dashboard that I mentored 8 bugs from 6 new contributors. I'm not sure about the time period of that data, but I've only heard about this dashboard recently, so I assume it should be relevant to this post. Clearly I need to do better in that department.

This past year I've also invested more time in giving public talks and helping with the Firefox OS launch in Greece. The social aspect was extremely rewarding and I've met a ton of great people, so I'd like to do more of that. Not sure how I could combine this with increased code productivity though.

All in all I feel it was a good year and I can't wait to see what the future holds. Onwards!


[1]: I used this command to count my patches (omitting the wc invocation allowed me to inspect the commit messages):
hg log -u past@mozilla.com -d "2013-04-26 to 2014-04-25" --template '{date|isodatesec} : {desc|strip|firstline}\n'|wc -l

[2]:I used the following command to count my reviews. Clearly searching for the right strings is a work of art:
hg log -d "2013-04-26 to 2014-04-25" -k ",past" -k "r=past" -k "r=panos" -k ",panos" -k "r=pastithas" -k ",pastithas" --template '{date|isodatesec} : {desc|strip|firstline}\n'|wc -l

Saturday, April 16, 2011

Next stop: Mozilla






Six months ago I left my previous job, in order to join a product company and experience new things. The move was rewarding in many ways, but most importantly, because of the people I've met. We've accomplished a lot together and laid out the foundations for much more. As I've established before, this is not the right time to be moving on, but while in theory, theory and practice are the same, in practice, they are not. When good fortune knocks on your door, it's a fool who does not answer.

So I am seizing the opportunity to work with some of the best hackers in the world, on a product that I adore, with technologies that until now I had to stay up late at night to use. In a few days I’ll be joining Mozilla to work on Firefox Developer Tools, a passion of mine for quite some time.

I am thrilled with this opportunity to learn from the best, and have an impact on the lives of millions. And to do this with a non-profit organization, whose mission is to promote openness, innovation and opportunity on the web, for the public good.

I'm almost wishing I gave-up this long-needed vacation.

Sunday, October 31, 2010

Moving On

About 10 years ago, I was invited to become employee No1 of a new software startup. I didn’t know much about startups back then, besides that they were supposedly cool, and employees weren’t treated like small cogs in a giant machine. Indeed, it felt really fun to build our first product in my 5 year-old laptop, running FreeBSD, of all things. That, and getting praised by our users, too.

Things got even better as time went by: interesting projects to build, exciting technologies to explore, new colleagues to work with, new challenges to face. I felt my work was making a real impact, getting the team to follow new and exciting technological paths, often far away from the mainstream. I became partner, pushed for launching our first large consumer product, coded, mentored, planned and dreamed about where to go next. I had a 27-inch Mac, a big desk and a great view from my office window.

And then I left.

When is it a good time to leave? When everything is over, it’s obviously too late. When things are just starting to take shape, it’s definitely too soon. I used to say, ‘when you are done’. But it turns out that, in real life, you are never done. There are always more things to do, unfinished businesses to attend to, and existing plans to follow through. Perhaps a better answer is: ‘when you are too comfortable, almost on the brink of getting bored’.

A friend asked me why would I leave this company in what appears, by all accounts, to be the pinnacle of our accomplishments, ‘now that your work is being recognised and respected’, as he put it. Another said that we’re all going through some pretty hard times, and it wouldn’t be wise to take risks. A rather unsettled family member asked: ‘aren’t you afraid?’

Of course I was.

Afraid of leaving behind the tried-and-true for something new and unknown; afraid that the new gig might not live up to the initial impressions; afraid that my work-life balance might deteriorate. However, I’ve learned long ago that fear isn’t something to be afraid of. As Eleanor Roosevelt said once: ‘You gain strength, courage, and confidence by every experience in which you really stop to look fear in the face. You must do the thing which you think you cannot do.’ What I wanted to do, is to become even better at my craft. To have an impact on even more people’s lives through my work. To inspire and be inspired. To be afraid and excited again.


So, as of a few days ago I’ve taken up an offer to work for Golden Deal. It’s a product company, something I’ve always been keen on, with a great track record and an awesome crew that is rapidly expanding (are you a senior dev or admin? we’re hiring!). I’m still getting to know the place around here, but it feels good, and I think we have a shot at becoming one of the greatest Internet companies in Greece.

I know that my former teammates will continue to rock on, and I’ll be cheering from the sidelines for their future accomplishments. As for me, I just might find more time to blog again.

P.S.: For folks contemplating a career move, here are some tips for choosing your next gig. This is not how I approached my own case, since I wasn’t really on the market for a job. I was more like seduced, from some pretty persuasive folks. However, had I been looking for a new employer, this is what I would have looked out for:
  • Product company: this is where you have a better chance at learning the ropes of modern technologies, without doing pure academic exercises that have little to no importance for the business.
  • Startup mentality: you want to be a part of a group that fights as a whole for the success of the company, not a bunch of bureaucrats isolated in their silos.
  • Experienced team with a good track record: so you can learn from people better, smarter or wiser than you, and improve your skills.
  • Teams not afraid to experiment with new and unproven technologies: because innovation is the name of the game, at least for startups and product companies.
  • A ‘getting things done’ attitude: because success apparently only comes for the right kind of people.
  • Honest presentation: this is rather obvious.
Bear in mind that people have a tendency to present a rosy picture of their situation, because, if nothing else, it makes them feel better about themselves. Be a little pessimist and assume things are a tad worse, and you’ll be closer to the truth most of the time. Also, do some research on what you’re being told, don’t trust their sales pitch blindly.

I know I did.

Saturday, March 14, 2009

Applications meme

It's been a while since my last post, but I've been wanting to write about the interesting stuff that I've been working on. Unfortunately it took longer than anticipated, but now we're almost done and I'll be posting soon with the gory details. However, since I got tagged, I suppose I can throw in a not-so-interesting post, about my Linux application preferences.


  1. Which desktop manager do you use more often ?

    Gnome. It's the only one that reminds me of OS X somewhat (appearance- and functionality-wise).

  2. Which desktop application you would not like to see implemented again on linux? And why?

    A desktop manager. If you are going to provide yet another incarnation of a 30-year old idea, please don't bother. The concept is pretty well understood: icons/workspace/file manager/drag'n'drop/mouse/menus/launcher/whatever, it's been done before. Like a million times. If you want to be useful, try to fix some of the shortcomings of the existing ones (notification mechanisms, translucent effects, faster access patterns, application integration, etc.).

  3. Which desktop application you definitely would like to see implemented on linux? Describe it briefly or point out to a similar application.

    Adobe Premiere, or iMovie, or any other semi-decent video editing software. This was the main reason I bought a Mac.

  4. Write the name of the last project (not the very best, the last!) that made you wish to thank their developers so you can thank them now!

    Git. You guys rock! (And if you improve on the UI, you will jazz!)

  5. (Optional) Link the blogs of 1-3 people you’d like to take part to this meme. (no more than three). you can skip this question if you like.

    Let's hear from chstath, ckotso and keramida (who may s/Linux/FreeBSD/ at his discretion).



Wednesday, March 19, 2008

Re: I wish I could...

I can tell that spring is here, when my friend George tags me with another blog meme. Apparently it's like a ritual to him, but it came a few weeks earlier this year, so I figured I could delay posting at least until last year's anniversary. With the frequency I blog, he doesn't have much to expect anyway.

This year's theme is to write about crazy or stupid things you'd like to do, but can't, or stupid things that you do anyway. Since I'm running an old-fashioned, respectable blog here, I'll restrict my answer to appropriate stuff, namely computers and software. And with that I expect to have lost 50% of my audience, so I guess that leaves me and you George. So without further ado, here are 10 things (in no particular order) I wish I could do, but probably won't:

  1. ...stop reading FreeBSD mailing lists.
  2. ...convince my colleagues at work to switch to Mercurial for version control.
  3. ...transfer a call at work (in a Linksys IP Phone) without loosing it.
  4. ...build the zero-administration appliance I was planning.
  5. ...use and contribute to JNode, an operating system written in Java.
  6. ...write a book about a computer-related subject.
  7. ...implement class data sharing for 64 bit VMs.
  8. ...write Objective-C code using Xcode.
  9. ...stop subscribing to more blogs and even ditch a few altogether.
  10. ...blog more often.
I guess I'm not that ambitious after all...

Monday, March 26, 2007

Movies

I've been meaning to start blogging for quite some time now, but I never seemed to make it. Too much real life I guess. It wasn't just thinking about doing it, I even made a list of issues I'd like to talk about and then did some brief outlines, too. I could never find a good first post though that I actually liked. By that I don't mean the very contents of the post. Nah, I don't remember ever liking one single thing I wrote after finishing it. No, I just wanted to write about something that would seem appropriate, you know? Something that would define the posts that would follow, give meaning to the blog, a definitive statement, a raison d' ĂȘtre.

Most people start their blogs by talking about who they are and what they are going to talk about and how they are going to be different from everyone else, like its some kind of audition for a play or something. Or maybe a commercial ("My blog, my world: the hidden treasures. Coming soon in a theater near you"). Well, I suck at advertising, particularly at advertising myself. I suppose it stems from my father, who sucks at it too, although his day job would have you think he didn't. I honestly can't think of a single reason you should read my blog. I probably wouldn't. Chances are I don't read yours, so you don't owe me any favors, either.

Yet, I still feel like blogging, you know? Occasionally. Not always. Sometimes I have some thoughts I'd like to save for posterity. For my daughter, maybe, or her future kids. I know I'd be thrilled if I came across a private journal of my grandfather and actually came to know him in a way I never did before.

So I was planning to start a private blog and keep it hush hush, but this plan went south. My long time friend and avid blogger adamo, tagged me. No, not that old joke we did at school, where we wrote "moron" on a sticker, put it on our palm and pat the victim on the back, I've learned that well by now. Instead, it's a rather girly thing that goes on in the blogosphere, in the spirit of "I'll show you mine, if you show me yours". Anyway, I was never an alpha-male kind of guy anyway, so that girliness didn't bother me at all.

What he did show me and the rest of the Internet, is a list of his favorite movies and asked me to return the favor. Apparently some other bloke tagged him by showing him his list, and passing the torch. Now, of course, I didn't consider to fall for this chain-letter blogging thing, especially in light of the fact I wasn't a blogger. Little did that deter him, though. He suggested that I post a comment on his blog with my list. That's like being the kid outside the tennis court that picks up the balls and throws the champs a towel when they are resting. I ain't no darn kid! Hell, I'm older than he is. I still had no blog though. So, I decided to pretend I didn't hear about it and let it go. Unfortunately, he didn't. I should have known better, the man doesn't let go so easily. He mailed. He phoned. I ran out of excuses. Then it dawned on me: that list would make an excellent first blog post! It is sort of defining, without being very literal, it is something I wanted to save for future reference and it definitely is something I like talking about. Not to mention I would get him off my back.

Not that I will read any of it after I write it. I'll probably puke. But what else is knew, right? At least that's what I figured. I'm probably terribly mistaken here and the white wine in my glass doesn't help either, but anyway here it goes. My very own Favorite Movies List. Not the best movies I've seen, not the most acclaimed ones, definitely not the most entertaining I've ever watched. Just the ones that changed my life. The ones that shaped it, in content and in form. The ones I'd like to take with me in the flaming boat on my way to Valhalla.

I wasn't sure about how many entries I was supposed to put on the list. Adamo had eleven. Go figure. The guy that tagged him had seven. I traced the origin of this meme and the originator had seven as well. So I decided to stick by the rules of Number One. Seven it is. Seven Is The Number And The Number Must Be Seven. Six Will Not Do. Eight Is Out Of The Question. You get the picture. Now, speaking of pictures:


The Age of Innocence

Scorsese's masterpiece. A film about freedom, love and loss, filmed with exceptional craftsmanship. It taught me that one can live a life without the thing he wanted the most and yet have the courage to make his life more than just bearable. Living a pretentious life in a conservative world, but still keeping the fire that burns within. Favorite scene, the mesmerizing beauty of Michelle Pfeiffer fading to red or yellow as a hint of Daniel-Day Lewis's emotions towards her. I've experienced this one myself once. A pair of eyes, a pair of lips, fade to red. Second best, the scene of a dinner, where there is a civil conversation taking place, where few things are being said and much more are being implied. In the course of the dinner, Daniel-Day Lewis's character discovers that he has been isolated from his friends and surrounded by enemies, after a series of vicious insinuations. This is wonderfully underlined by the camera movement, that starts at the table level, presenting regular close ups of the dinner participants, then gradually moves upwards and away from the table to reveal a jail-like room with closed doors and servant-guards all around. I've almost melted a cassette with the film's soundtrack from excessive usage.

Picnic at Hanging Rock

A strong contender for the first spot in my list. This early work by Peter Weir, my favorite film director, appears to be a detective story. But appearances can be deceiving. It is actually a mystery film, full of questions but with only a few (if any) answers. It pictures the everlasting conflict between Nature and Civilization, Freedom and Strictness in a beautifully haunting atmosphere. Perhaps not merely the conflict, but more likely the duality of these concepts, in a sort of Yin-Yang way. Mountains that appear to be alive, girls pictured as paintings. Adolescence, maturation and the long journey in the unknown to adultness.

Anatomy of a Murder

The film that made me love Jazz. James Stewart as s small town lawyer that lives happily, fishing with his pal (Walter Brennan's voice is a classic by itself) and listening to Duke Ellington. The guy is living a quiet but happy life, yet when challenged with a tough murder case, he shows the effectiveness of a big-city lawyer. A hint that living a challenging, high-paced, career-dominated life is not the only way to go. The image that still haunts me goes something like this: an armchair; a fireplace; a bourbon; Duke Ellington in the air; happiness.

The Verdict

Made by a dream team of film makers (Sidney Lumet, David Mamet, Paul Newman, Jack Warden, James Mason), a film without any pretentious artistic value, but soaked in pure soul power. A soul's journey from death to rebirth and an eternal lesson that when you hit rock bottom, things can only get better afterwards. The main theme is a fight of David against Goliath, but with a feverishly cunning Goliath and David having to confront himself first and foremost. Also, a story where love and betrayal serve as a reminder that one can only count on oneself.

Rio Bravo

You'd think that this would be another run-of-the-mill cowboys-on-horses-and-sheriffs-with-badges kind of movie. Well, that would definitely be a way to experience it. In a deeper level though, this film is actually an ode to friendship and a reminder that bravery is pretty much another word for integrity. There are no heroes, just people who stood by their beliefs when the shit hit the fan. Four men stuck inside a jail house, surrounded by hired gunfighters, struggling to hold on until the marshal arrives. The sheriff, a drunk, a cripple and a young gun. The everlasting question: which side are you on? The Easy side or the Right side?

War Games

The film that made me a computer engineer. Artificial Intelligence, computer networking, war dialing, hacking, and the revelation that you can't win at tic-tac-toe. For a young teenager it was definitely the best career advice I could get at the time. Eventually, it even affected my PhD dissertation, but you can't quote me on that. It's funny (or sad) how different things turned out to be when I actually encountered military computer geeks.

Ronin

A wonderful spy movie and a hint that old-timers like John Frankenheimer can have a refreshing view on a traditional theme. My main interest in the film is the character of Robert De Niro. A former spy, wise but sad at the same time, without the usual glitter and glory, but full of loneliness and repressed desires. I always thought that if I ever made a spy movie, it would feel something like Ronin. Darn. No point in doing it now, I guess.

Creative Commons License Unless otherwise expressly stated, all original material in this weblog is licensed under a Creative Commons Attribution 3.0 License.