My prototypes on YouTube

I am not much of a YouTube user, but I have recently started to upload some of my work there. You might find them interesting if you are into interactions prototypes for products that may never be (especially if you are a Zemanta user).

I want to stress that while we use prototypes to learn what to implement and how, there is no guarantee that any particular feature shown will be actually included in our products. We do make an effort of listening to our users so please tell us what you think.

This is also a good time to mention that I don’t lead front-end team at Zemanta anymore. My new title is Chief Product Officer which is a fancy way of saying that it is my task to care about our products and our users more deeply than anybody else.

Reblog this post [with Zemanta]

Appeal for a better support of authors widgets

This post is older then 6 months, which means opinions contained were mine and any technical information is most likely obsolete.
Please contact me for text I would also sign, not only acknowledge or if post got broken during one of many server upgrades. I will be most grateful.

Goal of Zemanta widget has always been to present contextually relevant information to text being written and to enable writers to add that information easily in places of their choice. We want to do this in as unobtrusive manner as possible, which means that act of writing should not be impeded by us and that published text should only have as little markup added as it is necessary to add items picked by user (images, links…).

Zemanta widget in various incarnations today works in all major browsers (Firefox, Internet Explorer, Chrome, Safari and Opera) and on all major blogging platforms. This wide support is presenting ever bigger challenge to us and to anyone who wants to follow our path.

Most blogging platforms today support enhancement of blogs with widgets. I think it is time for them to add support for widgets on content creation side and go beyond current one-interface-fits-all state of affairs.

Open platform would enable tool makers like us to build specialized tools that might cater to specific niches and empower writers to customize their workflow to their needs .

Such platforms should at minimum have a common shared feature set, but I hope for at least partially shared API.

Current state

Some platforms like WordPress already have a plug-ins API which can be used to customize parts of creation process. However it is usually very low level, highly platform specific and available only to self-hosted users.

Creators of rich text editors have also recognized a need to let outside developers extend writing experience. Most major editors have an API that admittedly we might not be using enough. But this is not true of all editors so we end up with common development problems like not enough feature overlap and missing, undocumented or poorly documented interfaces.

There is a lot of activity, but the end result is still a very fragmented landscape that in my opinion limits developers creativity. You either add wanted functionality to your favorite platform or if you are more ambitious, you end up seeking the right balance between ironing out platform peculiarities and building features users actually care about.

And since blogging environment that most people use lets them little control over it, we develop browser extensions that are really just a patch for this problem. The only reason why we bloat browsers (a little bit) with an extension that most of the time does nothing is because we have to. Extensions are great, but they also present a risk and in this case one that should not be necessary.

My vision of future

What I would like to do as a developer can best be explained with examples translated from code to English (well, approximation of it anyhow).

I would like to write: “Take image at this address, upload it to writer’s image repository and return me its new address.”

I would like to write: “When DOM node is added to text (or removed from it), run this function.”

I would like to write: “Before text is published, run it through this filter function and save its result.”

I would like to write: “Store this information and let me retrieve when I need it.”

I would like our users to add our widget with only a few clicks. Maybe a click on our side to trigger installation and a confirmation on blogging platform with a list of permissions sought (like OAuth).

When user interface needs to be shown, I would want it to be well integrated. So if elements of interface can be rearranged, hidden or otherwise handled, then our widget would behave as expected.

In conclusion

Creating and supporting a tool like Zemanta is difficult. Front end development is challenging enough when you are against few browsers on your platform, but it is far worse when you try to deliver the same high level of experience on multiple platforms none of which you actually control.

You keep hitting at browser quirks and unexpected platform changes and ironically it keeps getting worse as other people’s code gets better. For example, wrapping your Javascript code in anonymous namespace is good practice, but it often removes hooks on which you relied and you need to come up with a new solution.

My work often feels like war of attrition, which is odd because there is no enemy. We work to complement blogging platforms, not replace them.

Surely it is time we do better.

Reblog this post [with Zemanta]

Dos and Don’ts of Job Interviews

This post is older then 6 months, which means opinions contained were mine and any technical information is most likely obsolete.
Please contact me for text I would also sign, not only acknowledge or if post got broken during one of many server upgrades. I will be most grateful.

Dear job seeker,

A job opening is an odd thing, because everyone involved is a buyer and a seller. You are trying to sell yourself to my company while at the same time I am trying to sell us to you and others we might regrettably have to turn down this time.

Two months spent actively searching for a new member of our team (we found him this week) made me reflect on the whole process. I am not the only one and I sympathize with everyone going through this. In last few years I have read tens if not a hundred of job applications and interviewed tens of applicants for different Slovenian IT companies, mainly startups. Not enough to be an expert, but enough to provide me with a firm opinion that most applications sent sucked.

That doesn’t mean that you personally suck, but I feel comfortable saying that most of you do not know how to present yourselves well. Mind you most companies are failing at this too, but this post will be long enough even as I limit myself to just one side of the story. My intent is to provide a maximum amount of help with a minimum amount of venting.

I think it is a safe assumption that you sent an application because you wanted this job. It should also be obvious that we were looking for someone that we think we’ll be able to entrust with challenging tasks and has a personality that won’t turn our jobs into a punishment.

So the question you should pose yourself is: “What kind of person is the company looking for and how do I best show to be him?” (or her)

If you don’t know, then look for information until you do. Ask if necessary, since any company worth working for doesn’t mind answering them. But knowing this is absolutely crucial if you want to be persuasive and at the same time not needlessly wasting your time on a company that doesn’t fit you. If you still think our company is right place for you, and I hope you do, then you should make sure that everything you do when communicating with us tells us that you are THE person we want to hire.

First and foremost, read and follow job ad instructions. Seriously, you would not believe how many applications fail to follow even most basic requests. Ask a friend to double check after you if necessary so you won’t miss anything. Zemanta is an international company and much of our communication has to be in English and yet, when we asked for applications to be sent in English, majority of them weren’t.

If something is unclear, ask for clarification. Responding to a job ad is the first test of your ability to receive a task, gather missing information and perform it to expected (agreed) level. Ignoring requirements or reinterpreting instructions on your own will make us doubt you.

Send resume when asked for, but don’t think it can substitute things that were asked for. It is amazing how many people just send their resume, when ad explicitly said we would like to see examples of work above everything.

Having said that, resume (CV) is definitely an asset when trying to sell yourself. When you write, keep in mind that its purpose is to sell you to a company. Put yourself into my shoes and think what should you write there, that is truthful and will make me want to hire you.

Europass resume is something only a bureaucrat could love. We won’t hold it against you, since somebody probably misinformed you of its usefulness, but it does tell us almost nothing about you. Even if I knew all listed companies, I couldn’t tell from a job title what you actually did there.

Much better is to explain in couple of sentences under every job list item what you achieved there and if necessary why I should care about this (e.g. At company ACME I introduced automated testing of Javascript code that reduced bugs reported by 30%)

In a fast moving industry like IT there is probably little reason to go into details about what you did in 1999, unless you are certain it is still relevant today. I started my career in 1997 porting backup agents to new UNIX platforms, but nobody would hire me for such work today (and probably shouldn’t then either). Old job listings are mainly used as a signal for steadfastness.

Don’t embellish resume too much. It is impossible to impartially judge your skills and most reviewers expect resumes to be, well, somewhat too rosy. Still, keep things at least defensible. Think what would happen if you were invited to an interview and found out that a part of it is a lie. How much weight do you think the rest of your resume would carry afterwards? Would you trust integrity of such person?

Considering what I said so far about poor quality of most applications, you might think it is easy to get to interview, but it is not necessarily so. There can be external factors that might work against you so sometimes even otherwise promising candidates have to be turned down (e.g., it is easier to teach people who live near by).

Let’s say now that you were interesting enough that we want to conduct an interview with you. I think following tips should work well for you on most occasions. If they don’t, count yourself lucky not to work there. I am not joking.

Don’t bluff. It’s reasonable to assume that I wouldn’t ask you a question I didn’t know the answer to so it’s unlikely it would work. Good questions can’t be tersely answered so you can’t really hide anyway.

Admit when you don’t know the answer. True, knowing it would be better, but at least you are not wasting my time. It’s especially important in small companies that problems are found out as soon as possible and it is a positive sign that you are a person that we can trust to let us know about them when there is still time to do something.

Don’t just give up. We all encounter problems that we can’t solve and interview questions we don’t know answers to. Show initiative and think out loud how you see the problem and what solutions might be. Give us a chance to see how you think and persuade us that you are a tenacious problem solver that won’t unnecessarily seek help of others.

Speak to the point and be active. From my experience this is a problem more prevalent in Slovenia. It quickly becomes annoying and tiresome trying to get a direct answer to a question from a person who doesn’t want to give you one. Making me feel like I have to work to keep interview moving is probably not the best way to leave a good impression.

Skills are…needed. We all want to hire people who fit our needs perfectly. We rarely can. What happens next depends on company and people involved, but judging by my experience, we value person over his skill. If choice comes between a flaky or otherwise non-solid person with better skills and someone that couples ability to solve problems and thirst for knowledge with personal integrity and maturity, then it is likely that latter will be chosen.

Ask questions. Inquisitiveness is always a turn on, but interview is also a chance for you to find more about us. Most companies expect from you an investment of 8 hours of your life daily and if you are like me, then it should be important to you what kind of company and people are you dealing with, what work entails and how do we go about it. Personally I don’t mind questions about salary and benefits, but I do find it odd if interview starts with them.

Regretfully interview is a last stop for some candidates and we have to turn them down. I know some companies have a bad habit of turning people down without letting them know and if that happens to you, well, count yourself lucky. At Zemanta we find such behavior rude and we notify everyone. What happens afterwards is usually….nothing. No reply.

My advice to you would be to respond with a note thanking for the opportunity. It probably won’t make a difference in a short run, but it does leave a good impression. We are all more inclined to recommend (or hire in next round) people we like.

Good luck!

Reblog this post [with Zemanta]

One small step

This post is older then 6 months, which means opinions contained were mine and any technical information is most likely obsolete.
Please contact me for text I would also sign, not only acknowledge or if post got broken during one of many server upgrades. I will be most grateful.

Today  or tomorrow, depending on where you happen to live, is 40 years since Neil Armstrong became first among few who stepped on moon. When I was a kid, there was nothing I wanted more than becoming an astronaut. Closest I ever got to this dream was having fun at Euro Space Center.

I don’t regret this, because I have a great job. It still feels a privilege to work at Zemanta and that is why I’m happy to say that we are looking for a frontend developer to strengthen our team.

We are searching for someone well versed with Javascript in modern browsers that wants to learn and we can learn from. Working in startup requires ability in having fun with unexpected challenges, but does not mean you will be overworked. We believe that rested developers are more creative and productive and practice what we believe in. In exchange we’ll try to be as flexible as possible to meet your (other) needs.

So, if you are a developer with even an inkling of a wish to work in a company like ours, please consider applying. You can also leave any question you might have in comments and I’ll try to answer it to the best of my abilities.

Reblog this post [with Zemanta]

The Four Steps to Epiphany

This post is older then 6 months, which means opinions contained were mine and any technical information is most likely obsolete.
Please contact me for text I would also sign, not only acknowledge or if post got broken during one of many server upgrades. I will be most grateful.

I seem to have mentioned books I’ve been reading a lot in last few posts, but this is the first time I am writing a post solely dedicated to a book. The Four Steps to the Epiphany by Steven Gary Blank is a book I heard recommended a few times before Eric Ries recommendation during his talk persuaded me, but I bought it mainly because it bothered me that most projects I was involved with relied heavily on intuition and it just seemed that there has to be a better way to expose and test assumptions made during project lifetime.

To a typography nut like me this book looks, well, horrible. I suspect Cafepress’ print-on-demand system has also something to do with it, but this is not its only fault. There are plenty of typos and glitches such as whole chapter 4 carrying a footer of chapter 3. Occasionally you can find grammar errors even someone like me can be sure of. In short, the book also looks like it wasn’t made by experienced publisher.

Having said all that, if you are thinking of starting a business venture or really any project where you and people precisely like you are not the only target market, you should BUY AND READ THIS BOOK. It costs 40$ on Amazon, but I wouldn’t hesitate recommending it even if it cost ten times as much. For those who might doubt veracity of recommendation on account of my Amazon Affiliate link, here is also a non-affiliated link that gains me nothing. Or you can save some more by following link on Steve’s blog (which is a good read too).

Unlike most business books I read or browsed, it isn’t a 2-300 hundred page long discourse about a couple of ideas that could be adequately explained and argued in tenth of its length. It’s a textbook about Customer Development, a different way of organizing and building a company from startup to established company. This is done methodically, each step building on previous where every assumption is tested while it is still relatively cheap to do so. First 200 pages might occasionally contain a short story that proves a point, but are otherwise filled with very concrete advice on what needs to be done and how you can or should go about it. If that wasn’t enough, you also get a Custom Development Checklist (taking a quarter of the book) which you can use to check that nothing was left out.

I suspect not many startups follow every step as prescribed, but even if you don’t or disagree with most of it, I can’t imagine how you wouldn’t profit from reading it. So just go and buy it. You won’t be able to make notes in borrowed copy.

Reblog this post [with Zemanta]
Next Page »