Skip to content

Been busy for a while

Coming back to reading, blogging, programming, doing research, listening to music, and all that stuff I used to do a lot just a few months ago. Ah, and meeting friends. Missed you guys.

That’s been a hectic period. First of all, by the end of May I was offered a position of the Director of Technology. Which I accepted, obviously. The sad thing is that someone had to be fired. But that’s how the life goes, “You’re dead too soon if the bullet don’t miss” (Biohazard).

Anyway, considering the fact that at that time I have been hired at this company for about three months, things got really cool, as this was the first time ever anyone put so much trust in stuff I do. The amount of work to be done was (and still is) enormous. My goal was a complete reorganization of the department, just of every single piece you can imagine. What is even more interesting, the company is absolutely open to innovation and new technologies, and both of the owners are visionaries with a tendency towards technology. That’s very uncommon phenomenon, especially here in Poland, that business people are curious enough to get into this geeky world. Kudos.

So what are the results? About a month ago I was asked to prepare a document describing the development strategy for my department within next few months and years. At that time I was fairly skeptical about the possibility of achieving even half of the short-term goals listed (i.e. in three months time). Apparently, we have been quite lucky and well motivated to make… All of them real! Wikis for knowledge management, checklists, deployment procedures, programming methodology and trainings, improving communication by redesigning channels and work-flow, reducing noise, moving people around offices, team building and integration, helping sales department by providing tools and documentation, introducing new technology (most of the work so far was done with .NET), starting two R&D projects and even writing down standards for CSS. All that in one month and without interrupting ongoing production and customer service!

Three main ideas behind my strategy were:

  • Searching possibilities of maximizing revenue by redesigning internal processes.
  • Gaining advantage over our direct competition by introducing new technologies.
  • Team skills development and building a highly innovative and inspiring setting.

As you can see, as simple as you can get, but that’s what makes a good and stable business in a classical sense. And to be completely honest, I believe we are closer than ever in creating a perfect place for people who do computer stuff because they love to hack and to design, and what is most important – we are very likely to earn awful lot of money this way.

Microsoft doesn’t support IE6 – why should we?

A few things to remember when trying to do your job

Here are a few credos I collected. At first glance the list below may seem pretty obvious, however it’s good to have a look at it from time to time. Especially, when losing hope, feeling like wasting your time, or seriously considering career in gardening.

  • Remember that everyone has priorities (respect).
  • Let people do their job (trust).
  • People do forget sometimes, including yourself (understand).
  • There is always more workload than resources (plan).
  • Solving problems requires understanding causes (learn).
  • Observe your environment and look for bottlenecks (organize).
  • Provide notes, atomize tasks, make sure everything’s clear (support).
  • Analyze processes and propose changes (improve).
  • Take care of quality (demand).

A message

Building project management software of my dreams

Currently, partly based on my experiences both as a project manager and a developer, I started writing a piece of software that hopefully, at some point, will make my life a lot easier (and would be useful to other people as well). The project is called pm360. 360° comes from advertising business. It means that a product is being promoted by single agency using all possible means: TV, publishing, new media, buzz marketing, PR, BSR etc. That is, it combines multiple activities into a single process that is possible to handle by an interdisciplinary team.

What I want to achieve is a unified platform for customers and development teams that enables instant communication of requirements and simplifies work flow through the whole life cycle of a Web software product. Let’s say, a mix of a customer service support, help desk, bug tracking and purely project management functionality. All that given in a nice packaging and easy to deploy.

There’s no rush with this project. I want to make it state of the art in terms of development, collect various experiences and thoughts, analyze weaknesses and strengths of the companies I worked for and try to find solutions to most common problems. If you have any ideas on how the perfect application of that kind may look like, what functionality would you expect, and what issues you come across on a daily basis that could be used for modeling this piece of software, please let me know – after all, the goal is to create something useful.

In the meantime, I’m putting some notes, diagrams and all the other stuff on a temporary homepage at http://webcookies.org/pm360/ (suspended, lack of time…). Feel free to have a look!

Web application in 24 hrs

So I came up with this idea of building web application in 24 hours experiment. Task was as follows: come up with an idea, think of any innovative use, build it and deploy. Registering domain name, drawing UI, designing model layer, setting up server, writing code, testing and all the usual stuff took… 15 hours, 49 minutes and 11 seconds according to my time tracker.

Adplified is currently offline!

Of course, there must be a lot of bugs hidden somewhere, and interaction stuff may have to be redesigned at some point. Also, load testing should be done properly. I guess a few pieces will need serious optimization and caching applied.

But – if you’d like to try it out, be my guest and visit Adplified at http://adplified.com/. Please let me know if you have any suggestions.

Testing web applications #1

A short summary of tools for functional testing. That’s first part of my research on automation in web development.

Project Website Type Configuration Key advantages
Canoo WebTest http://webtest.canoo.com/ Manual assertions Groovy, XML Straighforward and extensible, easy data importing.
Celerity http://celerity.rubyforge.org/ Manual assertions JRuby Simplicity.
HtmlUnit http://htmlunit.sourceforge.net/ Manual assertions JUnit Low-level, extensibility.
Jameleon http://jameleon.sourceforge.net/ Manual assertions Jelly, JUnit Plugins, integration of other tools.
JWebUnit http://jwebunit.sourceforge.net/ Manual assertions JUnit Simple API, integrating Selenium.
MaxQ http://maxq.tigris.org/ Session recording Jython, JUnit Interesting architecture.
Sahi http://sahi.co.in/w/ Session recording IDE, JavaScript, Rhino Good support for highly dynamic applications.
Selenium http://selenium-ide.openqa.org/ Session recording IDE, JUnit, Nunit, Python Community support, powerful options.
Sikuli http://sikuli.org/ Image matching IDE, Python Simplicity, portability, novel approach.
Solex http://solex.sourceforge.net/ Manual assertions Eclipse IDE Integration with Eclipse.
TestGen4Web https://addons.mozilla.org/en-US/firefox/addon/1385 Session recording IDE, Firefox plugin Integration with Firefox.
Twill http://twill.idyll.org/ Manual assertions Python Pure Python.
Watir http://watir.com/ Manual assertions Ruby Like Twill, lightweight and low-level.
Windmill http://www.getwindmill.com/ Session recording JavaScript, Python, Ruby Smart support for multiple browsers.

Automating with… Screenshots?

This thing is absolutely awesome. It gives me the feeling of living in the 21st century and shows how we are going to interact with computers in the near future. Well, as soon as it gets “production-ready” and voice recognition is applied. But that’s a different story.

So what is it all about? Let’s say I need a timetable of the bus going to the university. In my reality these are very likely to be outdated right the next day I checked them. So instead of looking it up every morning, half-sleeping and struggling between drinking coffee and eating breakfast, I could ask my computer to send it over to my phone. Obviously, you could do that with general technical knowledge and some experience in OS scripting, but why to bother? There are much more interesting things to hack nowadays, right?

What is the alternative? You open up Sikuli, grab some screenshots, add a few lines of Python code (if you want to) and you’re ready to go. Yes, it’s that easy. Here’s the effect:

And here you can see a demonstration of sending PDF with the timetable:

Experimenting with Sikuli from Robert on Vimeo.

The sexiest thing about it is that you can use… Python Unit Testing! And that makes it really powerful tool (like e.g. Selenium). For instance, imagine distributing Django apps with GUI tests already there…

How dumb the world is?

James “The Amazing” Randi is amazing indeed. His fight for rationality and passion about being conscious are inspiring, while his sense of humor is so sharp that it physically hurts to imagine how bright and intelligent this guy is.

I remember a friend of mine telling me a story about “guru”, whose one of great abilities (apart from exploiting children sexually, for what he’s being chased in most of the civilised world) was to use his “psychic” power to create things. She was absolutely sure this was true, even though she hasn’t seen it personally. And even if she had, seeing is usually not enough. Why? Well, that’s where rationality comes in. Rationality is a natural condition of any intelligent person and some people just keep this state unchanged throughout their lifes, while others need some refreshing. If you need that kind of recovery, I’ll give you a tip: stop watching horror movies, playing RPG, hugging trees and talking to ghosts for at least a few days. That doesn’t help much in treating. And if you haven’t seen Avatar yet, I recommend buying tickets any other weekend.

So how do people know, what is real? There are a few simple rules to follow if unsure:

  • First of all, if there was anything like psychic powers proven by anyone, James Randi wouldn’t be looking for anyone to pass 1 milion bucks.
  • Start from seeking simple explanations. No matter how complex the stuff looks like.
  • Before you go into magic, think about basic law of physics.
  • Don’t trust what people say if you feel there’s something irrational going on. Use your own brain.
  • If someone may gain any benefits from making you believe in magic, paranormal abilities etc., you can easily assume it’s a prank.

Ah, did I mention the guru was buying his newly created things in nearby shops? I know, I know. That’s sad there’s no real magic in this boring, physical world.

If you’d like to watch the rationalization process live, here are two clips starring James Hydrick – an ex-prisoner, kung-fu master with telekinetic skills. Eventually, he admitted that is was a simple trick and he just wanted to check “how dumb the world is“. Enjoy.

Don’t forget to visit James Randi Educational Foundation website!

The ghost in zsh