Archive for the Uncategorized Category

Migrating to blogger

Posted in Uncategorized on June 29, 2010 by Bartosz Radaczyński

I have been using the blog space mostly as a notepad to save stuff for the future, bun since I bought my own domain name, I figured it would be nice to use that for the blog address. Unfortunately WordPress says:

Domain mapping is available for $9.97 per domain per year, registration not included.

I have therefore decided to move with posting random garbage on blogger (which allows for the domain mapping for free). In case you are interested in the stuff I ever posted, you might want to follow me at http://blog.radaczynski.com

Chrome for linux? A sneak preview available and it’s bloody fast

Posted in Uncategorized with tags on May 24, 2009 by Bartosz Radaczyński

Take a look at the snapshot build of the chromium (google chrome) for linux:
http://build.chromium.org/buildbot/snapshots/chromium-rel-linux/

It is still missing the flash plugin (a major flaw), and a few other features (like the preferences) but it is REALLY fast (notice the startup time). I want this to be released, and soon!

P.S. I would also like for it to have the adblocking, but that is just my wish list ;). If I had the prefs in chromium, I’d just use the privoxy (http://stevenpratt.com/2008/09/06/google-chrome-adblock-plugin/) and be done with it, but since there is no flash plugin up till now it does not bother me that much.

Getting unxutils’ sort to work on Win

Posted in Uncategorized on May 18, 2009 by Bartosz Radaczyński

As much as I love the unxutils’ stuff (really, learning a whole lot of new stuff from Win is a little bit too much for me), the sort always displays this bloody error message that drives me nuts:

sort: read error: Not enough space

This happens when you have not given it any input! What a maningful error message right? Wait, it gets better:

sort: /tmp/sort0188000000: No such file or directory

This happens when you do not set the TMPDIR variable. Set it properly and you are good to go.

The gorilla guide to interviewing

Posted in Uncategorized with tags on April 6, 2009 by Bartosz Radaczyński

The title

is of course coming from Joel Spolky’s famous series about hiring people. But there is something to the fact that sooo many companies look for code monkeys instead of really thoughtful people, that I just couldn’t resist.

Sooo, for he past couple of weeks I’ve been to several interviews for a job. To be honest, some of them were good, some were… uh, decent, some were lousy, and some were horrible, horrible interviews. Well, up till now, there is only ONE place that I would say the interview process even remotely resembled what Joel Spolsky was writing about in his guerilla guide to interviewing (guess if that is the place I would choose to work?). This is really sad. Leaving all the headhunters aside (well, I mean after all they should also be at least OK with technology since they are recruiting people for highly technical positions…), but the technical people not asking technical questions?!?! Come on, be serious. Would you hire someone to build you a house without knowing that he is capable of reading a blueprint? Didn’t think so. But, sadly this is what it looks like in the software world around here. Only a couple of places got me to write a piece of code and even fewer took the time to actually look into more detail of the code and discuss it. It is not THAT hard to venture three or four decent quality questions for the interviewee.

Random choice of crap

Idiotic questions encountered so far:

  1. what is JNI
  2. puzzle – silly one (I’m not talking that kinda thing here)
  3. SQL questions with ill-defined tables
  4. typical HR questions: what is your biggest strength and weakness/what would you like us to remember from this interview – all that kinda crap

Excellent questions encountered so far:

  1. algorithmic puzzle
  2. a page of code with some bug to find and correct
  3. SQL questions with well-defined tables
  4. how many queries have you written so far?
  5. does Java allow operator oveloading? are there destructors in java?
  6. what to avoid when using RDBMS? are there any good practices, what did you use?
  7. does python pass parameters by value or by reference? how to make a copy of a list in python?

Process as I see it should be…

I don’t think that Joel is entirely correct in that article. Basically what he says is that you sit the man down in a room with the interviewer and ask him all these questions one by one from easiest to the hardest in order to have a nice conversation (easy question, pointer/recursion…). I believe that you get even better results when you give a candidate a list of few questions and some time to get through them (short introduction is appreciated, like: don’t worry about the memory allocation and freeing, write pseudocode or whatever language you are comfortable with etc.). At least that’s what I would prefer as a candidate. The interviewer in the same room looking at me all the time makes me a little bit nervous, but that’s just me. But I guess that being on the other side of the table makes you see these things a little bit differently. Now, as to the questions that ought to be asked:

  • easy ones: fizzbuzz, swap two variables (tell the candidate that it is NOT a trick question)
  • intermediate: binary search, bubble sort
  • upper intermediate: heapsort, quicksort, fibonacci, linked list, something specific to your area of expertise (if algorithms and stuff like this pay even a remote role in your everyday programming life)

Some nice additional questions that you may wonder towards from any of these:

  • is there a bug in there?
  • performance (would you use recursion for 1 million elements? why/why not? can quicksort be written iteratively?)

What to avoid:

  • having the candidate interviewed by more than one person at a time (I’ve been to an interview, where this was a technique that they used <and intermixing “soft” questions with technical ones> that was really a pain. I felt turned inside-out after I left that place). And in the end did not get the job anyway – maybe I was too lame for them, but still, making the candidate feel like dirt is probably not what you want. Now I would tell anyone around that this is not the place to be working for. On the other hand there was a place, where after the interview process I felt like telling the guys that interviewed me that it was the best one I’ve been to, ever (regardless of whether I got the job or not). It was just a pleasant experience, nice conversation…
  • leaving candidate without feedback – either way he/she WANTS to know how he did on the interview. If there was someone better, let them know. If he has to work on something – let them know. If they wanted to much money – let them know for crying out loud! How are they supposed to figure this out? And if you do not give feedback at all – they  might tell everyone they know that your company sucks!
  • by all means avoid hiring developers solely on the basis of what they say! make them prove it to you!

As to the headhunters, I have no idea how it looks at where you are, but I can tell you fir sure that most of these guys have absolutely no idea about what this T-SQL is and what is the difference between Java and C# (and that someone knowing one will as likely be a good candidate for a job in the other). Most of the “HR agencies” hire a bunch of students that do a term-by-term matching of all the LinkedIn profiles to the offers. If they find a match, they send out an email. If they do not find an exact match – they move on. If you get an email, you have a nice talk with someone who graduated from psychology or sociology departament and has little to no knowledge of CS and all that is related. I had to explain to one of these recrutires that the SQL dialects are not that different between one another and that a SELECT query is basically the same across RDBM engines. I’d call that pathetic, but what is really pathetic is that someone is willing to pay these people a lot of money for their “services” (and it is a lot, believe me). And that person is going to decide whether or not you fit the job description. How on earth do they expect to find even decent programmers if they let the nontechnical people decide?!?! This may (or may not) work for sales people or whatever, but not for engineers! You have to test their aptitude (not their current skillset – I believe that a good programmer will learn a new language within a week, OK if it’s LISP then it may take two weeks).

On the other hand there are HR agencies that know their shit. But these are the ones that hire some technical people to screen applicants. I’ve had a nice phone call with a technical person from a HR agency a while ago and he really knew what he was talking about. He even knew how to ask about python! Cool!

After all, you also get the trail period in the job contract, so you can change your mind within three months, two weeks notice, no strings attached. But still, three months with some ill-equipped person is most likely a pain in the neck at the very least.

Why don’t the managers get it?

Posted in Uncategorized on January 23, 2009 by Bartosz Radaczyński

Flow is the mental state of operation in which the person is fully immersed in what he or she is doing by a feeling of energized focus, full involvement, and success in the process of the activity.

Yeah, heard it all before, will you nerds stop whinig about your work conditions? Well, no and it is because of that state above. Have you ever wondered whether the managers get it at all? And why do they cram people into open space Dilbert-like cubicles? So, dear programmer, I have some bad news for ya – the wonderful, quiet, private, well-lit office is an almost unachievable dream. Here’s why. As Joel has once written, there are several (in his opinion 5) different worlds of software development. The largest part of the programming world are the in-house programmers (and this is by large factor, I suppose). Now, notice that fo the kinds of organizations that these people work for, they are not the “core business”, which basically means they are not something that the organization is living off. So, if they are not an asset, then… you guessed it. They are the cost, the burden of running the company. Which in turn means the software development departaments in these organizations have little voice and little power. Which directly translates into: the equipment quality (the developers are the last to get LCD monitors and nice chairs), the accomodation quality (usually an open space, probably in some old building, little to no daylight, no free cofee etc.). So, if you’re one of these Java or .NET or c++ monkeys doing some accounting system for a bank/insurance company/telecom/whatever, you’re doomed. Sorry. The fact is that out of all the worlds of software developoment, the only place that you can be trated nicely is when your work translates directly to company’s income. Which is shrinkwrap software (and/or commercial web-based software, which essentially is the same thing, just instead of having to deal with gazillion windows configurations you have to deal with 5 or 6 web browsers <ok, most of the sites test using 2 or 3 and it suffices>). But, I’ve heard war stories of shrinkwrap software companies, where the CEO held an all-hands meeting just to tell the people, that their salaries were the largest cost of running the company, and that it had to be reduces. I wander, why noone told the guy: it’s and investment not a cost goddamnit. Perhaps he came from some cable manufacturing company or a reail chain or something like that and had no clue about the software industry.

So, back to the title question. The managers do get it. At least some part of them do. And it’s not like they do not appreciate the fact that creating software is a highly creative excercise, but there is a reason for the programmers to be called “monkeys”, right? And the reason is that from some point up the hierarchy all these developers seem equally significant to the manager. Every one of them is just a unit of time, a head in a count, that for all they know can be replaced (with more or less effort). They do not matter as a single person, they only matter as a piece of the machine… Like on the assembly line. Like in Office Space. If that movie seems familiar, you’re in deep shit. Get a 5 year plan to land in a decent company that makes shrinkwrap software, cause that is where you can be treated nicely, or, alternatively – make a plan to start up your own.

How to make Gmail work in Konqueror (with chat window)

Posted in Uncategorized on January 21, 2009 by Bartosz Radaczyński

So, finally after quite a while I got to know, how to make gmail play nice with Konqueror. That still does not mean that it is perfect, but it is usable at least.

  1. get the webkit rendering for konqueror (I have it by default in Interpid repos)
  2. set the browser identification to Mozilla 1.7.3 (not Firefox, not Safari, mozilla 1.7.3 specifically)
  3. go to gmail and try it out

It seems to be working just fine at my station. There are of course issues with other sites 😦 (It seems that the text documents in google docs work decently as well. The spreadsheets do not, however).

Is there a way to make webkit the default rendering engine in konqueror?

Psycho x64, GIL

Posted in Uncategorized with tags , on December 19, 2008 by Bartosz Radaczyński

So why exactly is psycho not available for x64 architecture? Because it was meant to be incorporated into the pypy project…. Strange, since:

  1. pypy is twice as slow as cpyton is
  2. the main goal of the pypy project is not to provide a faster python implementation

Can anyone explain this to me? I’d really like to see some of the psycho improvements on my 64 bit machine.

Another thing – why the GIL? Is it on purpose to make some market room for jython with the native threads? Is there some other motivation behind that? Is it to force people to use processes (as the post and pythons 2.6 multiple processes model suggests). How are they better than threads? For me it seems that they do add more overhead of forking than threads ever do (I guess that is why they call them lightweigh processes). Is there some explanation for this phenomenon?