Archive for July, 2006

Cost structure

Tuesday, July 18th, 2006

Costs are in euros per month.

developer pay (one person) 3000
office rent (50% of apartment rent) 200
food 200
hardware amortisation 150
electricity, consumables, phone 70
internet access 40
web hosting 10
domain names 5
total 3675

Costs: about 50k euros / year.

Return:

Probability Gain
80% 0
15% 100k
4% 500k
1% 5000k

This means that with 80% chance the project will be a complete failure, and will bring nothing (0 gain).
With 15% probability it will have a little success and bring a small return (100k), etc (these figures are
very rugh estimates, and don’t have any solid base).

Expected return: 85k euros (the weighted average of the possible gains), with very high risk.

Travel Plan

Wednesday, July 12th, 2006

I just bought the 5 plane tickets:

  1. Warsaw - Budapest
  2. Bratislava - Bucharest
  3. Bucharest - Bratislava
  4. Budapest - Rome
  5. Rome - Warsaw

Looks strange, isn’t it? In fact we only wanted to travel on this route: Warsaw - Bucharest - Rome - Warsaw.

In Europe, there are two major low-cost airlines: SkyEurope and WizzAir.
SkyEurope is a Slovakian company, and has the main hub in Bratislava. WizzAir is a Hungarian company, and has the main hub in Budapest.

Warsaw is served by both companies, but SkyEurope has only two links from Warsaw (which is very little), to Rome and Paris.

Bucharest is only served by SkyEurope (WizzAir will also service Bucharest starting from January 2007). VolareWeb also used to fly to Bucharest (mainly from Italy), but it doesn’t do it anymore. A new Romanian company, BlueAir, is flying from Bucharest; but their website is so hopelessly flawed that I really want to avoid them.

I already flew in the past with both SkyEurope and WizzAir, and I am relativelly happy with the overall experience. And their price is very attractive. For example, the set of 5 flights listed above costs 215 euro / person (all taxes included).

I have a few observations concerning their websites:

  1. Uniform currency

    They have the habit of listing the price in the currency of the origin country for the flight. This can be meaningless for the pasangers who are only transiting throught that country. For example, the segment prices for my 5 flights are: 168PLN + 1589SKK + 27.5EUR + 11480HUF + 64EUR. Yet I’m the same passenger, and I paid for all the flights with a single credit card. What good does it to me to see the prices in 4 different currencies? By the way, on this line I may take offense at the fact that the flight Bucharest - Bratislava has the price in Euro instead of Romanian Leu (RON) (no, this was a joke). All this currency stuff doesn’t really make sense. A simple advice, easy to implement: if you choose to show a certain amount in a national currency, you should also always put the euro-equivalent next to it. The problem with this approach: it will likely break the nice 1990HUF, 19EUR, 49PLN, 990SKK prices they use now. I mean, the euro equivalent may not always nicely end in ‘99′. On the other side, this really is a cheap silly trick they should get rid of anyway.

  2. Put the flight details on every order page

    When you make an order on the web, you are walked through a series of 5 or 6 pages. On the first page you choose the date/time of the flight, next they show you the full price, afterwards you enter your name, address, etc, etc, and on the final screen you have to enter your credit card number and complete the transaction. The funny thing is, on this final page, where you normally pause and ask yourself: this is my last chance to give up, do I *really* want to buy this? am I sure I didn’t make any mistake?, there is no display of any of your flight info: no orgin-destination, no date/time, no names of the people travelling. Hmm.. that’s stupid IMO.

  3. Get rid of the silly price/taxes trick

    This is a bad habit of airline companies, to show the price split in two, in what they call price and taxes, and sometimes other fractions like processing fee, credit card processing charge, etc. The only explanation I have is that they’re doing this in order to confuse the cilent into believing that the price is less than it really is. This is a un-fair practice, trying to deceive the client. No company respecting their client should try to deceive him, or at least not in such an obvious way. What’s more, the air travellers also got used to this trick, and they know to ask for the full price before evaluating the cost of the flight, which reduces the efectiveness of the technique. So why shoudn’t the new low-cost airlines be the inovators, and first get rid of this old silly trick? By the way, what would you think if you’d go to buy apples at the supermarket, and the price would be: 1Kg golden apples (promo): 0.01euro. At the counter, they would add: delivery (to the supermaket): 0.19euro; fressness surcharge: 0.09euro, fuel surcharge (for delivery): 0.09euro, supermarket security: 0.19euro, VAT 22%, payment processing 0.39euro, etc, for a total price of … .

Theese low-cost airlines are perhaps having some fierce competition fight between them. But they should really be more focused on fighting the old-fat airlines, and they may benefit from alliances between them. For example, Wizz and SkyEurope may very well mutually benefit from a strategic alliance, oriented at better serving their costumers and thus more efficiently competing with Tarom, LOT, AirFrance, Alitalia, etc. By the way, all the old-fat airlines do have such alliances in place. An alliance between Wizz and SkyEurope would also be advantaged by the fact that these two companies generally serve complementary airports, and on different days of the week. For example, in Poland SkyEurope serves very well Cracow but almost not at all Warsaw, while Wizz has the complementary pattern, serving well Warsaw but not Cracow. And to push things more, they may even sell tickets on the web through a unified (uniform) interface. I (as a client) don’t really care whether I fly Wizz or SkyEurope. All I care is, for example, to travel from Warsaw to Bucarest, on the date/time I want, quick and cheap.

GoDaddy sucks

Wednesday, July 5th, 2006

I’ll switch all my 6 domains from GoDaddy to another registrar. I’ll never pay them any money again. They accepted payment for two .eu pre-registrations, that they couldn’t register, and now 3 months later they still refuse to refund the money. That’s stealing, IMO. And their support is the archetipe of brainless drones who are paid on the number of ‘issues’ handled, so that any simple request results in 5 separate issues, 15 emails, and no effect.
I just have to find an alternative registrar.

Programming Languages

Saturday, July 1st, 2006

I developed this simple clasification of programming languages that is of no much use I guess. Perhaps it is inspired from the toothbrush clasification (hard, medium, soft):

  1. Hard languages: C and C++
  2. Medium languages: Java and C#
  3. Soft languages: Perl, Python, Ruby
  4. Exotic languages: Lisp, ML

The Hard languages are the oldest. They can reliably be used for any task, and are best suited for the largest programming projects. These are the languages in which are written Operating Systems and Database Servers. They use static typing. Many checks are done at compile-time (not at run-time). The advantages of C over C++ are lightweight-ness, portability, and easy bindings from any other language. The advantages of C++ over C are: classes (OOP), STL, Templates. For new projects one should generally choose C++, except for low-level libraries (like SQLite, Apache httpd, zlib, etc) which may benefit from C. On the down side, Hard languages are difficult to master and have the lowest productivity.

The Medium languages are very close to the Hard languages; maybe they can even be considered the ‘third-generation’ hard languages (C++ being the ’second-generation’ hard language). They also use static typing like the Hard languages, and they do many checks at compile-time. They can handle large programming projects. New relative to the Hard languages, they bring: Garbage Collection (GC) and Reflection. Java doesn’t have macros and Templates, and is controlled by Sun. C# is strongly linked to .Net and is controlled by Microsoft. They are more accessible then C++ (because it’s harder to make programming mistakes) and are a little bit more productive (mainly because of GC).

The Soft languages have dynamic typing, meaning that the type checks are done at run-time (not at compile-time). They are very productive. They are best suited for small-to-medium projects; their dificulty with large-projects stems mainly from the lack of compile-time checks. They allow new programming techniques and idioms that are impossible in the Hard languages (e.g. adding methods to a class or to an object at runtime, defining classes at runtime, etc). They are usually interpreted, and typically they have slower run-time performance than the Hard languages.

The Exotic languages offer interesting programming techniques. They are useful for developing one’s mental flexibility, and offer a deeper understanding of various programming concepts. So their role is mainly educative and explorative.

July project update

Saturday, July 1st, 2006

The v0.1 release that I wanted to prepare for the 1st of July is postponed. The situation is that there are too many problems and missing functions at the moment to warrant a release.

In the future I’ll avoid setting release dates. I wanted to use the ‘release date’ trick as a self-motivating device: knowing that I have to do something at a given date, I’d push myself to work harder. But this may not be so, in fact this technique may backfire. The situation is that I sometimes avoid to do what I have to do, and instead work on something else. Maybe another trick would be to convince myself that I have to do something that is of no importance, and than I’d avoid doing it becase I have to work on it, and instead focus on the real thing.

The project update:

I use Clearsilver for the presentation part. Clearsilver takes care of the View part of the MVC (model-view-controller). All the HTML is in the clearsilver templates, and I don’t use ‘inlined html’ anywhere in the project code.

I recently discovered CTemplate, which is a Google open source project doing about the same thing as Clearsilver. I didn’t understand why Google internally developped CTemplate, instead of using Clearsilver. Perhaps such an explanation (why one should use CTemplate instead of Clearsilver) would be a useful addition to the CTemplate documentation.

I’m using SQLite as the database. SQLite is a nice and useful project, I particularly like it’s lightweight characteristic. On the other hand, I’m missing some advanced features like the enforcement of foreign-key constraints and the full-text search. The alternatives to SQLite are Postgres and MySQL.

As deployment architecture, I use FastCGI behind an Apache or Lighttpd server.

The hosting is at Dreamhost. All I can say is that Dreamhost is incredible value for money (you may want to take advantage of some coupons when starting with them). On your one Dreamhost account, you may create multiple unix ssh accounts, host any number of domains, configure DNS for any number of prefixes on a domain, and use FastCGI.