Richard Bucker

In response to your interest - in case you want to hire me.

Posted at — Jul 1, 2011

Hi Richard,Thank you for considering this position. I have been going over your CV and it looks interesting enough to take it to the next stage.  As for helping us better understand where your strengths are as far as your current software engineering capabilities I would like you to answer the following questionnaire.Cheers,Ofer Question: Write a simple sorting algorithm (array of numbers) in python and explain it.Answer:my_numbers_that_need_sorting = [4,3,4,6,3,6,9]my_numbers_that_need_sorting.sort()## there are plenty of APIs out there that do sorting. ## There is absolutely no reason for me to open my ## Knuth books and read anything on merge sorts, hash sorts, ## btree sorts, insert sorts etc. People smarter than me ## are getting their Phd(s) on the subject. Question: What parts of Python don’t you like and why?Answer:I hate the indenting. Question: What is Bitcoin and what do you think about it?Answer: I’m not an economist so I don’t know what the long term ramifications are. As a skeptical systems person I hope there are no bugs. Question: What other software projects have you been involved with? Do you have a github account/website with code you wrote?Answer:My code is proprietary. I do give back from time to time. Recently I patched a bug for MongoDB… for fun. Their data “import” utility supports importing JSON, CSV and TSV.  When loading TSV and CSV files the leading and trailing whitespace is removed from each cell, however, the TAB character is considered whitespace in the TSV file import code. Therefore, if the first field were an empty field then the data would skew(shift by one cell) and the load would fail. So I identified the offending line of code, wrote a patch, tested it and submitted a patch to the dev team. Question: What’s your favorite programming language (besides Python)?Answer: I do not have a specific favorite… but if I had to choose it would be one that does that job. And as a manager I want to make sure that there are resources that pick up the standard when the time comes. (business continuity see - when performance is absolutely necessary and I don’t need floating point. I hate floating point in assembler)C - when performance is absolutely necessary and I need floating point or integration with other APIs like libcurl or the gtk.C++ - when I have to bugfix someone else’s code.perl - nice for reporting, ETL and other batch operations. (parrot and perl 6 have me concerned about compatibility)python - same as perl. many of the APIs make things easier than perl. I also like tornado/cyclone and Django for webapp frameworks. (I like easy_install!!)Java - java is the new cobol. there are APIs and frameworks for just about everything. There was a time when java had a manageable library but now it’s too big and it has fractured. Not to mention that the JDK is semi open source and then there is the Oracle factor.  J2EE is also a well known framework but it is the 1200lb gorilla in the room.Scala and Clojure - interesting functional languages. If they were real languages instead of using the JDK. During initial development it is interesting that the languages can interop with traditional JDK libs, however, in the end apps like “lift” are simply calling Jetty. That makes a functional call stack not to functional.erlang - interesting but not all ‘that’. While it works well for long running process and it’s lightweight processes make for some interesting parallelization it’s better for longer running tasks like phone switches and audio codecs. It’s not well suited for messaging. There are so many other better solutions. Mnesia is useful. It’s nice that it’s integrated into the language, however, there are plenty of warts there and there are so many other DBs that make more sense.haskell - bloated and disorganized package manager.prolog - In 20 years I have not found it useful… or in production. Erlang does a better job and Turbo Prolog is long since gone.R - I would like to use this language, however, I have not found a use-case for it yet. It generates nice graphs and charts… but it requires Intel Fortran to build it. So I’m not sure I want this many dependencies.LUA - another interesting idea.  Nice that the language is small enough to compile quickly and there is a jit. It’s also interesting that it integrates with C instead of the JDK..NET - I’m not a fan of anything that creates a lock-in and Mono while it runs on *nix is not a real viable solution in the long term. Mono is loosely glued together.Thank you. I hope to hear from you shortly./r