The name of the game

September 5, 2010

On the Internet is: the number of links leading back to you.

Nothing else matters! Crappy sites with barely any taste for design thrives because of one reason only – links leading back to them.

So pause for a second and ask yourself this: will what you’re working make others link back to you?

If not, don’t waste your time. Adapt and change whatever you’re doing so others will link to you. That’s what matters – in the first place, at least.

When you’ve got this angle covered, then think about how to keep those links. Again, like with links, there’s only one true way to get users to come back over and over again. It’s the value your site provides.

There’s no point in having pile of links leading back to your site if there’s no value one gets. To sum it up – in reverse order:

  • provide real value others benefit from
  • get as many links to your site

Get this two right and you can screw everything else. I failed numerous of times because I only got one of two right.


Importing Outlook.nk2 files into Zimbra

August 1, 2009

I’ve just spent 7 hours  trying to import Outlook .nk2 files into Zimbra contacts. It took me great deal of nerves and some unix hackery to get it done. Looking back, it’s seems so simple…

Here’s how I did it:

I used free program called NK2 to get .csv from .nk2.

  • I’ve made two Zimbra accounts and send one test email from one account to another. This way I had one person in my contact list
  • Next I exported this Zimbra contact list (of just one person) into a .csv file (this got me proper .csv structure I knew Zimbra would eat back up)
  • I used NK2 proggy to convert all my Outlook.NK2 files into .csv

Now I had one .csv file from Zimbra and few from Outlook.NK2 files.

All I did was match structure of Outlook’s .csv files with Zimbra one. I wrote small ruby script to do this for me, but you can easily use shell or maybe even Windows batch scripting to do this mundane task for you.

The proper Zimbra .csv file format for importing contacts is this:


This must be on the first line of your new .csv file (the one you will feed Zimbra with). Below this line is data, structured to match first line description.

I’ve imported 4.500 contacts from 10 different Outlook.nk2 files in about 3 minutes using Zimbra Desktop client.

While I was thinking about how to solve this problem (good 7 hours) my friend was importing .pst files into one Zimbra (open source version) server from 14 different Windows computers – simultaniously.

From what I just saw tonight, I must say kudos to Zimbra! In the last 10 hours it has proved itself as a rock solid platform to host emails on.

And the best part – it just works! Keep pushing, Zimbra team!

I hope I saved you some time with this post. It’s 4.30 am here, I’m off.

Why use Smalltalk?

July 30, 2009

Even if this was written by someone who is (perhaps too) deeply involved in Smalltalk world, it still got some points that should make you think.

Now, if you are of that kind and don’t want to take your head out of… the sand, then simply ignore this. For everybody else, no matter how skeptical you might be, at least some of this should get your curiosity juices flowing:

Top Ten Reasons to Use Smalltalk

Forget The Fuss™

May 19, 2009

Note: This is, again, one of the older posts that got lost in the dust. I think it’s worth posting here. What’s your opinion on this one?

I’m in software development business. For the last four years I’ve been following what’s new and bleeding (over the) edge, trying to find the silver bullet of software success. No luck. Some may argue there’s no silver bullet. Why are then there hordes of people trying to find it?

I’m not giving up on software business. Not by far. It’s way too addictive and there’s still good money to be made. I’m moving away from the edge, into calmer waters.

It’s like gambling, you’re trying to make a quick buck with little or no chance. Big dreams for small money. Kudos if you can pull it.

I really like the fortune 5 million philosophy, like DHH nailed it. It’s a lot of money here with just a few big players dominating the scene. I think it’s worth to take a deeper look into this jar of cookies. I think there’s lot’s of chocolate to be found here.

If you look at what’s happening here you’ll notice quite a gap. There’s bleeding edge guys pulling the front border ahead and there’s those leftovers from 1980 who managed to stay afloat without changing their software (or policies) too much. Well, at least some of them. Others that are not remembered, have sunk quickly enough so even history didn’t catch them. Let’s leave them alone, shall we?

Web 2.0, or 3.0 as some are predicting, is pulling the front border ahead with speed which is hard to keep up with. They hope, I guess, they can make a pile of money by being the first in the field. Maybe, few has been known to make it by being the first. The very last ones are still hanging on ropes they weaved decades ago. Just look at your bank’s software. No, not the shiny new web page, the actual software they’re using to make sure interests gets your paycheck before you do. You can’t guess what software they’re running. Not if you’re under 20. Of course, some did manage to escape, but many more are still hanging.

The fore front
Let’s take a look ahead. What do you see? Hordes of teens rolling into high school with so much of computer knowledge they could easily replace their CS teachers. Their minds working so fast they get bored the second they know how some thing works. No wonder we got hundreds of reddit and digg clones. Every high school kid has built one for himself. Why? Because he could (he is just a way to refer to high school kids; girls have come very far in computers too). Maybe he’s even thought about making some money with it on the way, but primary interest is to see if he can do it. Sure he can. Now it’s done and he’s bored. Next quest, please.

They eat new things for lunch, leaving only some crumbs for those who come later. Who is at the desks at Facebook or Google or most startups in the Valley? Kids who barely got out of high schools. And they have no more then 10 years of time to get ahead and do something remarkable, something they’ll be remembered for. That’s why I think the front border is moving so fast. There’s always fear someone will get there before you do and take all your sweet creme.

And you know what. Sometimes it’s worth trying. Sometimes it’s worth risking few high school kids to make some money. We all know, the kids are happy just to be part of something great, you can keep all the money. Well, after two or maybe even three times on the thin ice, they learn to fight. If you’re running a startup with this kind of kids you better know your way around or you’ll have a hard time convincing them it’s ok not to get options or shares. Few will work for promises. But if you get fresh ones from school, sure, why not take them for a ride. Does this sound familiar?

The last era kings
They’re the heavy guns of the industry. So well fortified they can’t be thrown of balance easily. They’re the ones you don’t hear about in the press or in the news. They keep the system running. Who are they, you might ask? Just look at your monthly expenses. You know, the bills you get regullary every month? I can hear your Aha’s… Yes, they are making fortunes every single month and are not much affected by everchanging fore front border.

It’s true, they don’t react on the first change, but they sure know what’s going on. Also, they know their time is running out and chances someone fresh could replace them are emerging on a daily basis. Sure, no one guerrilla team can beat them, but revolutions have happened in the past. So, they too are listening the fuss and trying to weed out upcomming trends.

The soft middle
Unaware victims are the simplest ones to get. Find one company with offices around the country which is still using last century software, unaware of today trends and you scored. You can sell them virtually anything. Just start with security related issues and everything will follow.

But let’s forget those. They’re easy snack and you just might keep some in the back for rainy days. I want to know how to get in bed with 10 to 150 people companies. They’re not too small and not too big. They have just enough employees to be in the need of custom IT software solutions and not too crowded to hire some old king still hanging around. And they usually have the budget ready for internal IT improvements. And that budget must get spent or they’re doing something wrong in the eyes of top managers.

What I think is they’re to conservative for latest software. So teen hackers are out. They might use some old solutions but are in doubt as they don’t want to paint themselves into the corner by using some piece of software only few on the planet know how to set up. Maintaining this piece is rarely even possible.

Industry best practices but more
What we’re left with are industry best practices with some room to wiggle. These days this means Java or C#. Trouble is, I hate both. I can’t stand verboseness of this two. It’s just too much to type. But that’s just me. Besides staying near industry best practices there’s another key which opens most doors. It’s stability. They all want their solutions to be stable and not prone to complete overdesigns and overwrites when front border pushes further north. Java nor C# aren’t stable enough from this perspective. With these two out of the equation, what we’re left with?

Addon: I’ve been doing Rails for some time and yes, it’s pushing the border. I think you can’t be on a much sharper edge, these days, then with Rails. But maybe it’s just me?

They want some reasonably well known brand, not too expensive and not too old.  Something in the middle, something that’s just right, but a bit ahead of what their current competition with more money would choose. Tough choice.

I think there’s no simple solution here. If it were, everybody would be working on it and this swampy middle terrain would be already taken. I think this is the reason why it’s still not taken. I mean, there’s a lot of money here and a lot of bullshit too. The ones which are on the way to this middle or ones who are just beginning are probably aware of this and are prepared to some degree. Good lawyers comes to mind. But let us stay on the software side. If you’re undertaking this situation, what software could help you stay afloat and make it trough upcoming hell situations you know are coming? What could help you stay out of the live sand?

I’d use software which permits easy and quick changes in design and specifications. It has to be easy to prototype with and able to make a lot of mistakes without too much cost. It has to offer easy exploring of unknown fields and most of all stable to sustain hammering from all sides.

Two comes to my mind: Lisp and Smalltalk.

A thing or two about deploying Rails apps

May 14, 2009

Note: This is an old rant which I wrote because I saw no end to possibilities and how to choose the right one when deploying large-scale Rails app yourself. Now, almost a year later, I’m still not sure there is one true way. But it’s not important any more. Enjoy the read.

It’s easy. Until you go worldwide.

I don’t know Django or any other web frameworks as well as Rails, so please don’t bite as this is no such call.

For local, small size web apps, Rails is absolute winner. It’s fast on development side and it’s fast to deploy. Few lines in NginX (or Lighty) and you’re set. You might just run it in development mode, just to see what is going on under the hood. It won’t hurt too much. The on;y downsize is if you happen to have a lot of theese small aps. Each app eat’s up at least 50MB of RAM, probably more. Before you know, you’re short on memory.

Situation changes rapidly when one starts thinking about going worldwide with it’s app. There’s a whole lot of stupidities you have to to through to get the right hardware setup the right way. But let’s drop this one. Let’s consider only software. Here’s my take: To run worldwide Rails app, you need at least 5 different software packages, all running and working with each other in perfect harmony. And this is just the very bare minimum. Let me explain.

For starters, let’s say we only have one server, so replication and load-balancing are out of the equation. To run a Rails app you need this: database software, web server (static and dynamic), Rails package and some search engine software package (I delibrately put out the text editor, as it’s not vital for production app deployment). This is the bare minimum. But this setup can get you a long way. It just could be enough to live trough and be a successful web app. Many did.

As many real world examples show, in most cases this is not enought. By far. To write it you need a bit bigger arsenal of tools. If you want to do it right (for some common sense level of right), you need even more software to support your development, deployment and at the very end, your production web app.

Test Driven Development seems to be praised in these days (even in startup-compressed time measures). This alone brings in 2-3 new Rails software packages, all of which you need to get to know of, use and maintain. Version control is of core necessity (git is popular this days), while caching (memcached), bug-tracking(insert your favorite here) and project management software (again, your favorite) is usually “a must have”. (Note: I still shiver when I hear “project management” phrase. Don’t even try mentioning “time management” to me…)

Deployment software to copy your app to multiple servers is also needed (Rails guys usually go with Capistrano), so is testing software (selenium, to name one) and of course we cannot forget about monitoring and reporting (God or Monit comes to mind). And then there are various statistics. We can’t let managers go empty handed, pretty graphs are essential!

With all this in mind, to deploy an Rails web app, you’d need 15 to 20 different software packages. And I didn’t even mention database replication, backup and keep-it-running-force-scripts we’re all aware of (but never talk about). Now, the hardest part isn’t developing this monster Rails app. It will probably have some errors at the beginning, but you can find them easily and quickly. It’s keeping all this various pieces of software of the right version on the right servers running in the way you’d expect them to. Countless hours are usually wasted in the process of fixing and maintaining the latter. And I don’t even want to remember the moments we did deploys and were crossing our fingers hoping everything would work as we planned.

Maybe your project has better foundations or is somehow of better stability and maintainability. Good for you. But I’m sure you’re not using less than 10 pieces of software to drive the whole thing. If so, let me know! Immediately, please!

But hey, I’m wondering, isn’t there a better way to deploy, run and maintain a worldwide web app? This is software. Why can’t it be more simple? Do we really need all this additional software just to keep one web app running (smoothly, I dare to say).

They say web3.0 is just around the corner… What will be the next a-must-have software package to support all this fine new ideas that are about to emerge?

Maybe an “off” button?

Smalltalk – not just for big players

February 14, 2009

Remember your early days when you were a kid and how you loved playing with your toys. Imagine programming so joyful you’d want to do it a little bit longer even if your dinner is getting cold and somebody is not too happy about it. Imagine having fun while refactoring code. Where can you get this nowadays? And you can get it for free.

I admit it. I’m newish here and I’ve been playing with Smalltalk for only about few months. This explains the excitement and I’ve never been so excited about programming. In the last two to three weeks I’ve had lots of those “a-ha” moments where suddenly all make sense. And just after I thought I understand some parts of it quite thoroughly, I get introduced to even leaner and simpler way of doing it.

Coding and code refactoring is actually fun with Smalltalk. It’s like having this big new toy where all the things I’ve learned so far get turned upside down. No more SQL, no more server and application restarts, no more multi-tier setups. Built-in persistence, instant state reflection, hot code deployment and unified language and tools are just some of advantages Smalltalk has to offer.

I’m sold.

Smalltalk image persistence – definitive developer advantage

February 9, 2009

Difference between good and bad application model design can make or brake the application. Having bulletproof app spec can help, but let’s not kid ourselves. There’s no such thing as rock solid application model. Models are prone to change every so often and you can easily paint yourself in the corner.

Any SQL based software suffers from this issue and there’s little you can do. ORM helps to offload this burden, but all it actually does is mask under laying SQL statements. With every update to SQL schema, you need to restart the database server, update application code, restart the application itself and hope you didn’t introduce another bug or two. If all goes well, users probably won’t notice few seconds of downtime.

The story is different with Smalltalk. For small to medium sized projects you can use Smalltalk image as data persistence. This offers quite some advantages, both while developing and when in production:

  • no need for third-party software (SQL servers)
  • no server and application restarts upon model change
  • you edit live code while application is being used
  • faster data access – data is stored in RAM, not on remote TCP accessed server
  • some serious tools to help you craft, debug and maintain your code like a pro 🙂

With real-time object reflection you can play with the application model all you want and still be on top of it. As there are no restarts and with changes visible the moment you make them, modeling becomes almost trivial compared to code-fu you need to do with SQL based models. It’s not all honey and milk, but the difference is big enough it should make you interested.

However, there is a down side too. You have to get used to Smalltalk. It’s so different you have to make the effort to really grasp it. Newcomers, including me, tend to leave too soon and not really take enough time to understand the power Smalltalk gives you. Don’t make this same mistake I did a year ago. If you’re interested in Smalltalk, invest the time to really understand it.

Smalltalk is primarily used by blue chip professionals

February 7, 2009

Few days ago I’ve posted a question on Stack Overflow and it went ballistic. Few thousands views and two dozen answers later I’ve got my answer: Smalltalk is still in heavy use today, primarily by professionals in various businesses. Ranging from transport logistic (OOCL’s IRIS-2) and financial services (JPMorgan’s Kapital) to web professionals using either Aida/Web or Seaside web frameworks for developing complex web applications.

While some answers exposed difficulties when using Smalltalk, most of them were void after some explanations. Smalltalk was presented as right choice for demanding and complex environments where high flexibility, robustness and speed of development are main requirements.

I encourage you to read all answers and consider Smalltalk as a possible solution for your next projects. 

Thanks to all who answered my question.

Theory of corporate structures

February 3, 2009

On the bus drive to work this morning, I was standing near a student who was reading about “theory of corporate structures”. I glanced at a few paragraphs and sighted in disbelief. Lots of graphs and text of how corporate structure should be done. Scary stuff, half inch thick.

I don’t know what his major is, but this stuff is so theoretic and abstract he was just memorizing it so he could pass the test. Clearly he was not interested in digging deeper to understand core principles. No wonder, judging by how interesting the text was.

Wherever this whole process should lead him, I hope he’ll dig deeper and understand his stuff before getting elected as certified specialist in his field, earning juicy salary and steering some company. But then again, I was no better.

Beers I’ve drank in Brussels

January 16, 2009
  • Steendonk
  • Maredsous Blonde
  • Orval
  • Hoegaarden
  • Leffe
  • Bush Beer (12%)
  • Trappistes RocheFort
  • Touffel
  • Duvel
  • Mort Subite

From all, Bush was the toughest one to handle. 🙂