Getting around first steps with Git

Posted: March 25th, 2011 | Author: | Filed under: git, tools | No Comments »

So, your pain threshold limits are exhausted by everyday use of your current version control software (SVN, CVS anyone?). You are looking for another solution to version control problems and you start exploring Git. You heard that it is really cool, but now you’re getting hands on to figure out how cool it really is.

For start, you should know that Git is different. Your current mindset will drive you into using it the same way you used SVN, but very soon you’ll find out that if you don’t start working on your mindset, using Git can become more a problem than a solution. Fortunately, Pro Git book is available online for free and I highly recommend going through it with understanding. Read the rest of this entry »

TextMate for PHP development

Posted: December 29th, 2010 | Author: | Filed under: php, tools | 2 Comments »

If you want to improve your productivity and programming skills in general, getting to know better the tools you use every day is one of  the important things to invest your time in. Keyboard shortcuts of your favorite editor are especially important and using them in your daily routine will save you lot of hand movements towards mouse, lot of context switching and will help you focus on what is important.

I use TextMate for everyday PHP development and I find it excellent. There are some features that more complex IDEs provide out of the box, but after you get used to work with TextMate and learn how to be productive you can hardly find better option. Keyboard shortcuts are one of its good parts and key to boosting your productivity.

Read the rest of this entry »

Then I saw the tests, now I’m a believer.

Posted: November 24th, 2010 | Author: | Filed under: agile, engineering, testing | Tags: , , , , | No Comments »

These days I was working on a small feature that had to be added to an application here at local.ch. The application was originally written by some other developers and it was first time that I looked at that code. Everything would be OK, and I would not write this post at all if at one moment I didn’t feel strong need to rewrite the application completely. To be clear, it is not kind of need that draws motivation in “Not my code, I’m smarter than others.” source of frustration. Point is that this code really needs refactoring in order to grow in future and remain maintainable while adding new features to it. But that is by itself not a problem, what code doesn’t need refactoring, especially your own!  And if you have no constant need to refactor things that could mean you didn’t learn anything since last time you saw that code.

The problem becomes obvious and bit more acute when you figure out that, despite the fact that we try to keep our micro applications pretty simple with least possible code and logic, you don’t have all clues about how that piece of software works. Then you become aware  that amount of time needed to get into all the bits of included functionalities is way bigger than just  refactoring the code. Therefore, you lose peak of your motivation since you instantly visualize all the non-engineering time you need to invest in gathering information instead of just doing it. But of course, when just doing it, at the end it should have the same function as before, I guess. So without some proof that you didn’t degrade functionality, just do it approach would be even worse than not doing it.

And where would you expect to find up to date documentation in such case? Browsing the Wiki … not ;)

While letting you think a bit, I’d tell you that at local.ch we are passionate about agile practices and testing in particular. We always try to cover our code with reasonable amount of coverage and quality of tests. Since I joined, I accepted this as a fact and acted in that sense, but was not believer in testing in the religious way. Not until I imagined ideal world where I would go to test cases and could understand all functionalities implemented in the code that these tests cover. And in more ideal world, I would be able to drop the code, leave the tests and write new code which would be proved as correct in the moment all tests get green again. But not when tests are written in the way to reflect bad implementation choices in the code and not thoroughly though through. Then you have to throw the tests as well and you are back at the start point.

I could imagine that in mentioned idealized model of the world you could continuously improve quality of the code, reduce price of its maintenance, add new features and experiment with different ways of implementing the same thing while exploring new approaches to solving old problems. And all that while being sure that you didn’t break function of software that might in a case pay your salary at the end of the month.

Yes, and “The Beatles” are now in iTunes. Lucky us, the whole world has changed.

Webtuesday at local.ch offices

Posted: April 14th, 2010 | Author: | Filed under: community | Tags: , , | No Comments »

Every first Tuesday of a month, Zürich oriented web community gather for an evening of tech talks and some beer for, so called, webtuesday. Yesterday, we had pleasure to host event at  local.ch for the first time as unofficial opening for the community after movement to new offices. As Harry tweeted already during the event, it was pretty packed. I was personally happy to see lot of people coming since this was only my second webtuesday since I started working for local.ch 6 months ago.

Packed Webtuesday @localch offices

Packed webtuesday @localch offices (by Harry Fuecks)

This time Patrice and Chris from memonic.com gave great talk on the current state of the architecture and tools that are behind their startup. Since both of them worked for local.ch before (Patrice as Lead of Frontend Development, Chris as backend Java developer)  it was interesting to see how much they kept and where they improved along the way.

Interesting point was the choice of the language for their startup. At local.ch, we are kind of separated on frontend and backend development, before all, by the languages we use. Shortly, PHP on the frontend and Java in backend with HTTP communication in between, XML result got from backend parsed by XSL to produce HTML. At Memonic they decided to bring that together and make gap between backend and frontend development smaller by choosing Python as common language. Having experience with the Scrum and challenges which this kind of separation between frontend and backend carries, I see this as reasonable decision. I was surprised to hear that none of them had professional experience with Python before founding Memonic.

Their architecture is highly web service oriented. The way Patrice conceptually sees the architecture can be paraphrased like this:

“I see web services in our architecture as classes are used traditionally, or maybe better, as components of the traditional framework”

end of lousy paraphrase :) . So, if we take Zend Framework for example: imagine that instead of having Zend_Auth, Zend_Session, Zend_Log, Zend_Mail … and sending messages to their objects, you have web services that expose interfaces over HTTP. On the slides Patrice provided can be seen in smaller detail way their architecture is broken into smallest possible web services that communicate among each other. Web services are based on wsgiservice (Python WSGI framework to create REST web service) library that is open sourced by Patrice. One thing I was interested is what is the performance loss in HTTP communication overhead between components. In current state of the load they do not see it as problem and they see using HTTP features as e.g. caching more valuable than performance loss introduced.

Here are some links, if you are more interested to find out about local.ch, webtuesday or memonic.com.

A year behind my back

Posted: September 16th, 2009 | Author: | Filed under: personal | No Comments »

The year is behind me since I wrote last post. A lot, mostly good, has happened.

First and most important I have finished my studies. Now I can proudly say that I’m an Electrical Engineer in the field of Automation and Control Engineering. But wait, how does Senior Web Developer position relates to that? Let that be a topic for further evaluation :) Let just say that in one moment I had to decide what interests me more.

Somewhere at the beginning of February, after almost year and a half, our cooperation with Tilllate ended. Thanks to the Maarten, Leo, Silvan, Cyprian, Jia-yong Ou, Michael, Thilo and others for being friendly, positive and smart to create great surrounding to work in. I have raised my skill to much higher level and learned a lot about programming in high-traffic, heavy-loaded environment and gained much wider view on software development than I had before. I’d like to specially thank to Tilllate Chief Software Engineer Maarten Manders for having confidence that I will do proper job with some crucial parts of Tilllate, I hope I succeeded.

Read the rest of this entry »