Lukáš Linhart

Practices

I try to be up-to-date with knowledge available. I try to combine those with my personal experience; as a result, I support some views that seems to be contradictory.

From both planning and programming perspective, I embrace agile methodologies a lot. I've not yet encountered requirements stable enough to survive real-world encounter with customer or users, thus I like concept of sprints and user stories. I am all for automated testing, I mostly do test-driven development and I like to work in single-goaled, focused teams. Short iterations and frequent integrations are also valuable for me.

But I also learned how much value is hidden in stashes of traditional methodologies. Having separate QA department might be oldschool, but saved me a lot of trouble. Architecture and data design is also undervalued in "extremo" environments.

I like to embrace new knowledge and experience it in real world, but try to keep my toes on the ground.

I already learned the difference between lone hacker and team worker.

While I occasionally enjoy the luxury of sole development, I am now mostly tangled in teamwork, where I consider development as being very communicative and social work. The usual image of nerdy introvert has little to do with reality.


Programming Languages

Language is a tool in the hands of software engineer. However, knowledge of some concepts improves the programming as a whole.

This is the list of languages I encountered and my experiences with them.

python

Python

Python is primary tool I have used for last five years. It's nice compromise between speed of development, usability, execution speed, user base and availability of libraries.

When developing for web, Django is currently my primary platform as it's used by our Centrum team.

I belive I learned a lot about development in this language abd am able to design and lead. Check my open-source python projects to check my skills yourself.

Because of long-running projects, I'm still anchored in 2.x series. Hopefully, Unladen Swallow will allow me to jump to the new major line.

java

Java

I developed some small project in Java. I'm familiar with it's concepts and development, exclusively in SE area (I'm not familiar with ME or EE).

While I'm able and not afraid to use the language to utilize the power of it's libraries, I don't like the language itself and am not interested in developing in it.

c

C

I learned C as part of my college studies and created a small project in it later, using CMake, check and other goodies.

I grasped the concepts, learned the basic things and am able to contribute. I have, however, not enough knowledge about dark corners and best practices.

python

Erlang

I like the message passing approach to concurrency, upgrades and other goodies. For now, I'm humble apprentice on my path to real-world projects. Together with Haskell, Erlang is now my primary learning target, so I'd like to help and contribute.

c

Php

When I was young, PHP was the way to program web sites. For a while, I was the eager creator of variety of web sites and PHP was my primary tool.

As I moved on, PHP was covered in dust, as a language, as a techologyand as a concept. I still manage a large site written in it, but I dislike every minute I have to be buried in it's incosistency and missing features. My knowledge is probably also outdated as I do not keep track about current trends, frameworks and stuff.

javascript

JavaScript

Originally, I only used that for those tiny snippets to make pages a bit more shiny. Later on, I found myself doing development with YUI 2 and scripting heavily, also utilizing jQuery for smaller sites. And then, ECMAScript interpreters took the world by storm and are present everywhere (hello, Mongo). I have no choice but to embrace it and use it on regular basis.

Yet I'm not quite comfortable with it I have not yet found the best practices and will reluctantly accept job that would require me to craft something that would sound like a bigger project.


Technologies

Luxury of creating everything in favourite language of choice is long gone, so there are other goodies You might be interested in.

Relational Databases

It's all about data. I worked extensively with relational databases during my whole career, mostly with Firebird and MySQL. To lesser extend, I am also capable of developing with Oracle and PostgreSQL.

By developer, I also mean analyst: I've created a ton of schemas, conceptual diagrams and those beasts. Most of my current work is based on ORM usage and careful caching, so those hour spend on analyzing queries, index usages and proper buffer sizes are not so common now.

Document Database

While NoSQL is overhyped, it's definitely useful in some cases. I'm using MongoDB in some projects. CouchDB? Not yet in production. Hadoop, Voldemort, Cassandra, Tokyo, Redis? Hopefully soon.

Asynchronous queues

I don't know why I have not used them before, but I do now. AMQP maybe overengineered and ActiveMQ enterprise, but RabbitMQ is not so much. Together with carrot, it's insanely useful.

Real-time web

I feel that realtime wil be the new standard. I also feel it will be tightly coupled with better technologies for concurrency, so probably with functional languages. Comet and real-time processing, I chase those two.

I get the concepts and I developed some small demos with orbited and friends, but nothing heavily used in production. I'd like to.

JSON / XML / XSLT

Yeah, I used that and I know how to parse it, with those DOM or SAX things, XSLT transformations, XQuery usage or JSONP hacks. OK, I admit, this is here for SEO. Don't know why managers and marketers are falling for buzzy keywords more then developers.


Languages

While Czech is my mother tongue, I communicate most of my technical stuff in English. I have no problems with both written and spoken communication, althrough my grammar skills are not on par with native speakers.

I also learned German and I lived in Germany for six months. However, this was long time ago, so my skills are a bit dusty and to communicate fluently with native speakers, I'd require a few weeks to refresh my memory.

我学习汉语. Having limited resources for this task, my Mandarin Chinese is still on the very beginner's level. Being able to improve my Chinese as part of my work would be very compelling.


Storytelling and writing

I like stories. I think that our ability to tell them defines us almost as much as what we do. I always try to improve that skill; this may be the reason why I like traditional, pen-and-paper role-playing games (I even contributed to writing one). I do enjoy fiction works and I feel it's important for my personality as well as for my work.

It may be only me, but I write for most of my days: written communication, documents, mindmaps, comments (and yes, also code). However, most of it is without feedback which I long for.

Improving my writing skills is one of my aims. If You feel like You can help me achieve it, please get in touch with me.