Showing posts with label Impressions. Show all posts
Showing posts with label Impressions. Show all posts

22 September 2007

Something is rotten in the state Ukraine

Maybe you know, maybe you don't, but Ukraine is approaching another round of parliament elections. As we didn't have enough elections recently! And once again, three major forces participate and again as arrogant and hostile they are, they try to be good now and evince at least some care about Ukraine and Ukrainians:





But look at the pictures, look carefully, look closely. Maybe you'll see what I can't see there. Maybe I'm blind, but what I see is only lots, lots of white, orange and blue flags that belong to our celebrated political parties. And what I don't see is Ukrainian flags! There're none. No flag of the country and people they are so selflessly fighting for.

These pictures alone clearly show how much our parties care about Ukraine... Imagine how many other proofs we have here ;) Do we need these guys in parliament? Several years in a row my answer was "no!". This year I say "stay away from this country!".

Photos are copyright UNIAN. Links: 1, 2, 3

26 August 2007

Scala: a pleasant discovery

I've recently became quite confident that choosing programming language is a process that is very similar to choosing what to cook. First you taste something. If you like it, you eat it. If you really really like it you look for a recipe and try to cook it. Same for the programming language. First you see some code in that language. If you like it, you read more about the language, learn its concepts and ideas. If you really really like what you found, you start programming in that language.

What's interesting is that your consciousness is not usually involved in the tasting phase. On the surface it's simple - you either like new thing or not. But I do believe that there's a serious subconscious process involved here that takes into account all your previous experience and tells you "yes" or "no" to this new thing.

I've made several failed attempts to ignore this subconscious decision and force myself into learning things I don't like. Ironically, such first attempt was Lisp and the last one was Haskell. Needless to say that Lisp still means to me nothing more than lots of isolated, sil^^^... (you know what ;)) and Haskell is still for me nothing more than a pure product of pure mind. Once again, no offense to these languages and people using them. That's just my mind that doesn't allow me to like these great languages ;)

Contrary to that, I made quite a success learning languages I liked. The best examples would be Prolog and Ruby. And yesterday I discovered for me another language I liked from the first look - Scala. So instead of working hard on my projects and my PhD, I spent last two days reading about Scala.

And I should say the language is very cool. It implements an interesting mixture of functional and object-oriented programming paradigms but keeps static typing and very clean syntax. For those familiar with Ruby, I'd say Scala often feels like Ruby that is statically typed, has C-ish syntax and implements more functional programming goodies. I think next time I'll come up with a side-by-side Ruby vs Scala comparison.

And finally a little code snippet for you to taste ;) (from excellent Martin Odersky's "Scala by Example" book)


abstract class Tree
case class Sum(l: Tree, r: Tree) extends Tree
case class Var(n: String) extends Tree
case class Const(v: int) extends Tree

type Environment = String => int

object MyProg {
//uses pattern matching to evaluate the expression
def eval(t: Tree, env: Environment): int = t match {
case Sum(l, r) => eval(l, env) + eval(r, env)
case Var(n) => env(n)
case Const(v) => v
}

def main {
val env: Environment = { case "x" => 5; case "y" => 10 }

//(x+x) + (7+y)
var expr: Tree = Sum (Sum(Var("x"), Var("x")), Sum(Const(7), Var("y")))
//(5+5) + (7+10)
println(eval(expr, env)) //prints: 27
}
}

MyProg.main

02 June 2007

RailsConf'07 post mortem

RailsConf this year was huge. About 1600 people were there who paid incredibly high amount of money for the entry. And (like last year) it was again a show with Chad Fowler playing balalaika (or what was that instrument), Ze Frank amusing auditorium with his keynote and of course Dave Thomas again talking nonsense ;)

What is really noticeable is that Rails community became bigger and more pragmatic. We've got only two talks of "is Rails ready for the Enterprise" kind and both of them were not really about the subject. That's surely a good sign, but that's also a sign that the whole Ruby/Rails grew and will start loosing this aura of cool hacker's toolchain.

Not that I care about that much because I still think Ruby and Rails are powerful technologies that allow us to enjoy what we're doing but... this year is about time to start looking at others. People following Reddit might already have the impression Haskell is going to be the new hacker's toy. And maybe it will, who knows... It looks like in the next year we'll see some articles about "is Haskell ready for the Enterprise?" :) Heh... I'd better start fighting with my distaste for functional programming ;)

21 May 2007

Domination

I'm sitting here at one of the boring talks at RailsConf and have nothing to do, so I decided to blog a bit :)

Basically Ruby/Rails people are great Mac fans (this Flickr picture). Some of them use Windows. But what's really interesting that there's a number of people who're using Linux here and all those people I've seen have KDE on their desktops. I don't know what is the most popular distro among them, but two Kubuntu addicts are sitting near me at this moment. And that's cool, isn't that :)

20 May 2007

Catching up

Uh, I have discovered I haven't blogged since March. Not that nothing happened, contrary a lot of cool things were in those two months.

First, there's a lot things done in KDevelop. I was overloaded with work and PhD so didn't do any hacking but other guys worked really hard. Dukju continued his crusade against svn ;) Andreas and Matthew dug into version control interfaces and infrastructure like mad.

In fact, they sent so many emails to the kdevelop-devel mailing list so I believe now we beat the nosiness record on what was renowned as a very silent list :) And that's actually great. It indirectly indicates the amount of energy and potential in KDevelop community. We're keen, we're eager and we're kicking :)

Oh, and there's one more thing I forgot to mention about. Andreas got KDevelop working on Windows (see the obligatory screenshot below). So KDevelop is now as multiplatform as possible. Unix, Mac OS native, Windows native is all possible with Qt4 and KDE4! So, if you're still using Eclipse or something like that just because it works for you on Windows, tune up and keep an eye on KDevelop4. We will be multiplatform once we release ;)



Among the cool things happened last time is that I finally visited US :) I never had the chance to go there before, but it looks like my chances grew a lot after I became Ruby/Rails developer at Pluron company. So now I'm sitting at the Oregon Convention Center in Portland listening to the one of the RailsConf 2007 talks! I think I'll blog about RailsConf soon.

Btw, have I already mentioned that Pluron is a cool place to work? ;) If you read this, live in Ukraine and is a cool programmer/sysadmin/designer/QA specialist, drop me a note, we're hiring.

22 December 2006

The story about a gentleman and two gardeners

I was reading Aaron's blog and that infamous OSNews article today when the story came into my mind. So I had no other choice other than to dump it out here ;)

*********************

Two gardeners quietly worked on their garden plots preparing them for the winter. Meanwhile one gentleman was passing by. This person more than once used a goodwill of gardeners who gave him the flowers from these gardens that he presented his belowed girlfriend. More recently one of the gardeners gifted him a bouquet from 3 scarlet roses, 5 neat carnations and 5 charming tulips. Another gardener (on old friendship) gave him 2 most surprising lily of the valley with 16 small flowers on a stem apex.

And this time gentleman also visited his fellow gardeners. But they had no flowers for him today. There was a December and all flowers had already finished blossoming. Our gardeners was assiduously working on the ground to grow up new, finer plants in the following year. The gentleman was certainly afflicted, but probably so much that he began to behave completely unpredictable. Having forgotten that literally several weeks ago here he had been done much good, he offended gardeners. He told them that they are exhausted and they have neither flowers nor enough energy to grow up new ones. He also declared that he would go to the nearest flower shop and would buy there any flowers he want. He said two newest, most perfect kinds of flowers ever received in biological laboratories should be on sale there soon. Even allmighty genetic engineering was applied to grow them. Further gentleman hinted gardeners they understand nothing in cultivation of flowers and they need to go to laboratory and to learn from there. He told that the best and most highly paid experts work in those laboratories and gratuitous work in own gardens can never yield the same or better results in any way (not saying that without a laboratory backup it is plain impossible to grow flowers)! Thereafter gentleman left without saying a goodbye mumbling "no, they will NEVER grow SUCH flowers, never, never...".

Gardeners glanced one to another and saw frustration in their eyes. During this one moment the former rivalry for the right to place their best flower on a table in a house of their lady-love was forgotten. And they was both desiring to console each other. Eh! - they said, sympathetically shrugged shoulders and got back to work. And this work soon took up all their attention - they forgot the gentleman, the insult in their hearts thawed out and their mind concentrated on that fine flower which they were going to grow up next year.

*********************

21 November 2006

More choice is...

Choices == Headaches ?

I've recently enjoyed this article from Joel :) No, the beginning of the article was sensible, but the end was...

If we follow him, then we must conclude we don't need shampoo for the hair and gel for the body. One is sufficient, and don't blame if you get a dandruff thereafter...

We also don't need a soup and the main course served to you one after another in the restaraunt. What you really need is some stuff mixed together in one plate with one device to eat instead of spoons, forks and knives... And yes, don't dare to ask for the desert because it was already included...

Also urge the authors to write only one book during their life. If you have something to say, say that once. And don't try to write about anything that was ever written before...

Finally, don't even try to reboot your computer to boot Linux instead of Windows because Joel says the only thing you can ask your computer to do is to say "bye bye"...

I can continue my examples for ages.

What I would like to say here is that it is useful to get things to their extreme to study them (like Hegel used contradiction and negation to study the properties of the unity). But it is not sensible to apply extremeness in every day though. And that's exactly what Joel does.

Looks like Barry Schwartz's book The paradox of choice became a catalyst for this article. I haven't read the book yet but I've listened to the Google video The Paradox of Choice, why more is less. The book is on its way from the online store already but from what I heard and read it's not going to be significantly different in core ideas from the lecture.

Barry's lecture was excellent and thoughtful but it seems people (and Joel too) missed "Choice is Good" part of it. The whole idea of "The Paradox of Choice" seems for me not "Choice is bad" or "Choice == Headaches" but rather "Too much choice is bad". Schwartz stresses many times but his message seems to be missing. People just like to pick up the easiest but extreme ideas.

Of course we shall remember of "too much choice is bad" and use that knowledge. But how to make sense from "Paradox of Choice" and not fall into utter oversimplification? I've thought about that for a while and this is what I think about it.

Overcoming the Paradox of Choice

First, let's look at "choice" in its everyday meaning. Say, we can have one of four things. Let's call them A, B, C and D. This statement in terms of logic would naturally be
A or B or C or D
Sometimes in the real life we can have not only one of these things but a combination of them. This would become
A or B or C or D or AB or AC or AD or BC or ... or ABCD
That is the choice represented in terms of some formal system S based similar to (human) logic.

So far so good. Now let's imagine situation when we must have all A, B, C and D. We must have them maybe because they serve different purpose or just we like them, whatsoever. In terms of S this situation would become
A and B and C and D
Do you recognize the difference between choice (represented by "or" operator) and this phenomenon (represented by "and"). I'll give the new phenomenon the name "chance". Chance might not be the best word but it's colourful enough to stress my point here.

So we as people in our everyday life have "choices" and "chances". And that real world situation perfectly transforms into the world of computer programs. Sometimes we are given a choice to do either A or B or C or D, but sometimes we need a chance to do A and B and C and D. If we apply ideas from "The Paradox of Choice" we might want to not give our users too much choice. But at the same time we certainly want to give our users more chances! For example, if your media player don't have a playlist, it certainly revokes your chance. But if it has two or more playlists or player windows (remember noatun?) then it's giving you choice, in this case too much choice.

From this perspective software development looks like the process of giving users maximum number of chances and at the same time not too much choice!

You could say here that the chance and choice are elusive and sometimes it's not possible to draw a distinct border between them. Indeed, if we look at Joel's example of shutdown options - which ones are chances and which one are options that only give a choice. But nevertheless I believe there's a way to tell a difference between them. Applying common sense might help. Basically A and B takes place when:
  • A significantly differs from B
  • A serves the different purpose than B
  • A gives results different from B
It's possible to add more points here but I hope you get the idea. If you get A and B you're giving the user two chances which is good. If you get A or B you have to think whether you're giving your users too much choice. That is my simple rule!

Now let's get back to Joel. First he says there're 7 different shutdown options in Vista:
W(sWitch user) L(Log off) C(loCk) R(Restart) E(slEep) H(Hibernate) S(Shutdown)

He starts to place operators between them:
CWL=(W or L or C) R EH=(E or H) S
Then he simply puts "or"'s everywhere and simplifies the expression to just one thing
B'Bye=(CWL or R or EH or S)

Was there a fault in his derivation of B'bye? In my opinion yes because he considered the set of options from only one point of view - the "too much choice is less" point. He didn't try to look at those options as at chances. If we carefuly did, he might have ended up with something different, for example with
CWL and R and EH and S
Of course, another interpretations are possible and you might derive another formula (like Vista developers who put "and"'s everywhere).

That's finally all I wanted to say today :) I hope you got a chance to read this post to the end and you understand my idea that as a software developer you don't have a choice between A(giving your users less choice) and B(giving them more chances) - because A and B are your chances ;)

08 October 2006

Strange loops, self-references? Self-reflection?

Finally I found the bravery to get Hofstadter's GEB (Gödel, Escher, Bach) book from the shelf and start reading it. To this moment I've only read an introduction and suddenly realized that those strange loops and self-references that the author thinks of as the core to understand the consciousness and "I-ness" of a human being feel so familiar for me. I've been teaching AI for two years and I always stress the self-reflection as the only one important thing that differentiates humans from (for example) computer programs (in their current stage). Good to know you're not alone in your thoughts (and you're not the first one ;)). Now I got really interested in reading the book till the very end :)

22 September 2006

Traveling the world

I've too tired today to hack and therefore decided to blog a bit. I'm sitting at the Budapest airport waiting for my flight to Dublin which should be my last flight for the next week. And that week I hope to spend in Dublin without any traveling.

Ok, ok. I do like traveling, I like flying but after going from Mykolayiv to Kyiv (500km) to apply to Irish visa, going back home, going to Kyiv again to catch the flight to London, going back from London to Kyiv, then traveling Ukraine with the usual "give me my visa" route again (Kyiv-Mykolayiv-Kyiv-Mykolayiv) I feel like a bit tired ;) I've already covered 6x500=3000 km of Ukrainian territory and I observed each kilometer from the window in the bus! Yeah, yeah, you don't travel Ukraine by plane - it's extremely expensive.

But all that had positive result - I have my visa and I'm already heading Dublin for aKademy! By the way I also visited the RailsConf Europe in London which should really be the topic of my next blog.

12 August 2006

Real life happens

That's what I heard from manyoso lately and he was damn right. This indeed happens and I see I'm not the one. Well, my day this week consisted of 16 hours and if I substract two hours I spend to have some food and read my mail I'll get same 14 working hours as geiseri had.

But I'm having that since February and I can't see the way to avoid this in the next 6 months too so I should live with that. But there's one Cicero's statement that consoles myself. He said once that if we avoid the weight of cares then we miss the prowess. And indeed what would I have done and what kind of man would I be without my cares ;)

Speaking about cares, I had plenty of them recently. Just to mention the first Ruby/Rails meetup I and my fellow Anton organized here in Mykolayiv. The cool thing is that event was financed by the company I work for now and we managed to rent the good conference hall and gather the most interesting people there (we have the meetup site in russian and some pictures).

Anton did extremely well at organizing so my job was only to enjoy and educate people who came to this event. Hopefuly I did it not so bad ;). I was speaking on Ruby and Rails, showed live demos writing some real Ruby and Rails code and I was overwhelmed with questions during the whole event. I thought 3 hours would be enough and I was surprised to be proven wrong :) Four hours the people tortured me asking more and more (especially about Ruby language itself) and then after the event was finished they were continuing torturing me in the bar nearby till late evening :)

As far as I can see, people who work in software development industry in my town are really interested in something new and innovative. This is nothing surprising.

What's more surprising that engineers who worked in the industry at least for two years are more interested in technologies than students in my university. I've been working at the university for four years and I can see this tendency growing in last two years. Most CS students pick one thing they think will bring them money and get stuck (no it's not Java, here in Ukraine we all like Delphi ;)). On their second year they already know (or think they already know) how to program in Delphi/ObjectPascal/whatever and stop listening to their teachers. Of course they miss algorithms, parsing theory, OO programming modelling and lots, lots of really necessary things including two Unix courses we have in our university. Of course they don't hear me telling them about the beauty of Unix, Ruby, whatever else.

And I now kinda enjoy when I see same people to have interest in all those things they missed at the university after spending a couple of years doing real life work. Why does that happen? Only recently I found out an answer. The very simple answer. Money is the answer.

Typical ukrainian student grows in the environment where he constantly lacks money. And after they are able to develop another cool accounting application in Delphi they find out they already can earn quite a lot of money. In fact, that amount can be already bigger their teachers get from the university. This convinces them the university teachers are worthless and they don't believe in their authority anymore. Heh.

Of course thereafter they grow, they start think more about their profession, maybe read blogs like this one (I was shown this several days ago). And their interest level actually starts growing and they start growing themselves at the same time. I wish our students looked one step further or just believed their teachers.

Hmm, why am I writing all that? Maybe I'm just ranting. But maybe that's just my own discourse on duties. Do not neglect your duties, even if they sound wrong if you're student and think the world domination is one step ahead. Just believe me, the real life happens and you will not have enough time to educate yourself after the university. I know it. Don't repeat my mistakes. I know how hard is now to extract just two hours from your daily schedule to learn new language or to read new book.

27 July 2006

Moved!





I've recently moved into the new appartment. The move itself was wery taxing and took more than a week (mostly because all my family including grandparents and parents was moving). But we finally made it and now I enjoy my new room. Today I've taken some pictures of alpha version of the room. Some furniture is not yet there and ADSL connection is still missing but we're in progress ;) At least this "alpha" version is already capable of containing all my library. In my old appartment those books were laying here and there without any chance of finding the book, now things are a lot better!

Now that I'm getting back to the life again I'll start working on KDevelop again. Last week I didn't commit at all and that doesn't make me feel good. I'm going to restore the good old habbit of committing stuff every day again ;)

28 June 2006

Hojotoho! Heiaha!

Today I finally finished listening to the Wagner's "Der Ring des Nibelungen" opera (CD recording only alas). The complete Ring Cycle took me exactly four days to finish listening but I don't regret of any single hour spent! Only now I think I can understand Nietzsche's "The Birth of Tragedy out of the Spirit of Music" better. Indeed when Dionysian and Apollonian origins join they form something that is equally solemn (the music) and tragical (the epic) but leaves you anyway exhilarated.

I'm still sitting here, humming Hojotoho! ;) and reading more about Nibelung. Honestly, these days I discovered a previously unknown to me Norse mythology and epic. I didn't think of such rich mythical worlds existed outside the Greece. Obviously, I need to learn more (just ordered a book with West European epics collection, it will be a nice addon to my collection of Greek, Roman and Slavonic mythology).

27 June 2006

I'm very proud of...

...these guys!!! Tough play, steel nerves and luck - they demonstrated everything today :) I'm proud!

By the way, this is IIRC the best result ex-USSR football team ever showed since 1970 when USSR entered the quarterfinals. Hurray to our team!!!

23 June 2006

Ooh!

Today Ukrainian football team finally fulfilled my expectations! They will be playing in 1/8 final! They did it not without trouble especially thanks to Trabelsi from Tunisia's team. Even his name reminds of troubles ;) He was the best player today probably.

19 June 2006

4 in - 4 out !!!

Now that was the real football game. 4:0 is what I wanted to see from Ukrainians today and they did it :) Keep going! Let us enjoy our first world championship!

14 June 2006

eh!

Today promised to be a good day but to my surprise it was not. Oh! Ukrainian football team did not make this day any better too. Catastrophic gameplay plus one unfair penalty made them lose with an awful score! Ok, they will have at least two another opportunities to win ;)

25 May 2006

SuSE 10.1

Today I joined the SuSE 10.1 users community. I've installed it on my laptop replacing 9.3. Everything went fine and pretty fast (yes, I've turned beagle off at installation :) ). Problems came thereafter. Networkmanager + konqueror combination became to annoy me though. When networkmanager thinks it's disconnected from my local home network, konqueror disagrees to go to any url, even local. For example, it does not connect to localhost:3000 where my rails app lives. Firefox does not care about networkmanager apparently and works fine. Otherwise, the system looks and works ok so far. I do appreciate working suspend-to-disk and ultra-fast KDE startup!

25 March 2006

The end of craziness. Episode IV. Tomorrow!

Ok, thanks to all Gods people ever beleived in! Ukraine is going to have parliament elections tomorrow. For the fourth time for the last 14 months we are going to elect somebody to govern us. I really hope that will put an end to this endless flow of political advertisement, speeches and other craziness.

Too many politics, too many politicians for poor Ukraine! Ok, we have the fourth elections tomorrow, and I'll vote for nobody the fourth time - just to send my message to those politicians (both from "orange revolution" and "opposition" camps) - you are not good to become presidents, deputies, majors, etc.

09 March 2006

ADSL

Gee, at last I got a permanent internet connection. Looks like the progress has finally made its way to my home :) It's an <2Mbit ADSL connection with 1.5Gb of prepaid traffic for 183 UAH (~30 euro) per month. Quite expensive but at least I won't be counting minutes of damn slow dialup ;)

What's more interesting, is that a device which I am connected through is a DLink 500T ADSL router with MontaVista Linux operating system inside. It's just amazing how can a full-blown Linux system with apache, firewall, etc. live and work fast on a small flash drive :)

13 January 2006

Happy "Old" New Year

Yep, New Year has come to Ukraine for the second time! It was 1918 when Soviet Russia adopted Gregorian calendar. And the difference between Julian and Gregorian calendar was -13 days then. I don't know how that happened but people in ex-Russian Empire, ex-USSR countries still unofficially celebrate the New Year by Julian style calling January 14 the "Old New Year". So, happy "Old" New Year! :)