Interacting with computers

This is not a so much technical post. Instead it shows what I’ve come to observe for some time now. You can call this midnight ramblings of a curious mind.

Initially users interacted with their terminals via text. Keyboard commands ruled the all mighty PC. They were pre-defined, had a specific syntax and could do a lot of stuff. And I do not speak about programming here, just day-to-day operations.

Then the mouse and GUI’s entered the scene. Suddenly users were no longer confined to a list of need-to-know-to-start-my-machine words. The mouse brought freedom. True, the amount of work you could do with the mouse at first was limited, but options grew as the programs grew and started to use the new tool. The command line remained a thing of the dinosaurs and the uber-geek, or the IT pros.

Now search seems to take its turn in the evolutionary chain. More and more users “search” as an action. Want to start Word? Just hit the hotkey to pop up the launcher (or hit the Start key in Vista) and type its name. Then launch it. Need a document? Why browse through the thousand folders when a few letters from it typed inside the preferred tool for desktop search can bring it forward instantly. The same is true for the web. Google-ing is a term as well known now as the ubiquitous RTFM (read the freaking manual) was in the console/terminal days. Now we don’t remember web addresses, we search for them. And when we need to store them, we use or other tool that, you guessed it, lets us SEARCH through them.

Granted, the search paradigm hasn’t caught yet everywhere, but its popularity is rising. And the fact that Vista’s search menu or Suse’s launcher menu use a search bar as the first point of entry can only speed things up. Also, the need for search to become prevalent and able to find everything in our virtual lives came as a response to a problem: more information than one can handle or organize. Search answered this problem in a simple way – by saying do not remember. Do not store megabytes of files with URL’s. Do not remember the entire name of that use-once-a-month program or where to get it in the first place. Just give me a hint and I will find it for you.

I wonder what will come next? How will we control, manage and find information next? maybe we’ll just move search back to the tool status that it always had or maybe we’ll keep it in the center of our virtual worlds and simply find another, better or more unique way of communicating what we want / need to find. Only time will tell.

Until then, can you last a day without searching?  Or at least are you conscious where you use search?

Programe nou instalate si care au ramas la mine

  1. Juice – Podcast RSS catcher; downloadeaza podcasturi audio automa. Yupii, no more wget keith_and_the_girl.mp3 🙂
  2. CCleaner (fost CrapCleaner) – mi-a curatat 2 gigade junk! si eu care ma mandream ca imi curat temp-urile destul de des 😦
  3. Windows Media Player 11 – suna mai bine decat winamp-ul pe laptopul meu
  4. Thinking Rock2 Epsilon – organizarea nu strica
  5. Minefield (aka Firefox3 Alpha8)
  6. Opera 9.5 Alpha – pare cel mai rapid browser din toate pe care le am / le-am incercat pana acum
  7. MultiMon TaskBar  – super util la work, unde am 2 monitoare
  8. Pidgin -messenger on steroids (cel putin la capitolul viteza :))

Silverlight 1.0 is out the door with a surprise

Yesterday Microsoft launched Silverlight 1.0. Officially it is supported by Microsoft on Windows and Mac. So if you’re running on Linux, tough luck. Or is it?

Along the lines of what seems to be an ongoing internal disagreement on how to treat open-source, the developer division seems to be the one that opens up first – they signed a collaboration document with the Moonlight team, promising to share test suites, specification and in-depth documentation to make the Mono version of the plug-in as good as possible. There are also hints that it will be supported by Microsoft, although indirectly through Novell. Microsoft will provide the binary codecs to use with the plug-in. Novell will distribute Moonlight, as said in a recent blog post.

Moonlight is the current implementation of the Silverlight plug-in, made available by the same guys that make Mono, the .NET for Linux. Currently they also work for Novell, so an agreement with Microsoft could be at least guessed. Since it aims to dethrone Flash, the logical move would be to attack it on all platforms, but Microsoft has not released any projects for Linux (per my knowledge). But it does have a prior agreement with Novell, so this is not so unexpected.

It will be interesting to see how will the Linux version stack up against the “originals” – the Mac and Windows plug-ins. Regardless of the results this agreement remains a good sign, a sign that Microsoft can change. And allthough they have us (and most probably themselves) confused about what they’re doing, I can only hope that the developers’ division ideas on Open-Source software gains momentum and adoption inside the behemoth.

For those who want to try out the current implementation of Moonlight, you can see the build instructions here.

How do you create an Apache module for Windows?

Part 2: The Windows way.

Until Apache 2.0, the community disregarded using the webserver on Windows systems. It’s true that the 1.3 release also had a Windows version, but it has always seemed that it was treated like the ugly duckling. Even the release notes stated that it works, but it’s not recommended to use for anything serious.

With the 2.0 and subsequent releases the state of the matter changed. Windows support and performance got a hell lot better, and people use it. This is why when you create a module (on Linux first, of course, since it’s easier) you should consider porting it to Windows. And Apache helps a lot in this regard with the APR runtime, which hides away all of the ugly differences between OS’s. The only problem that remains is that you cannot find a quick, step-by-step guide on how to build a module. Yes, a single module, and not the entire Apache tree. Building the tree is explained, fairly detailed even on Apache’s website. So let’s get down to action.

What we’re trying to achieve here is to write a simple module, targeting Apache 2.0 and using free tools along the way. To build it I have used:

  1. The Apache 2.x sources (mostly for inspiration, and when I want to build the entire tree)
  2. Microsoft’s Platform SDK
  3. Microsoft’s Visual C++ 2005 Express Edition
  4. Lots of coffee.

First off you will have to download and install the tools above, if you haven’t already. As a rule of thumb, installing VS Express first and the Platform SDK afterwords worked best for me.

Before you are going to start off on the actual module coding, you need to setup the workspace:

  1. First off you must tell VS 2005 where the Platform SDK can be found. Otherwise it won’t found the many needed required header files. To do this, open VS 2005 and from the Tools menu open the Options dialog.
  2. In the Projects and Solutions > VC++ Directories you will have to add an entry for Include files, Executable files and Library files:
    • Executable files: [install_path]Bin
    • Include files: [install_path]Include
    • Library files: [install_path]Lib

Regarding the actual module creation you can either import the entire Apache project tree (conveniently put as a Visual Studio project) or create a single project with the module alone. Let’s look at both ways:

Building the entire Apache tree

Instructions on how to import and build the Apache tree are easy to find in the documentation, so I won’t go there. But, after you have imported the project in VS you should see lots of smaller sub-project, for each of the default modules. This is great, as you can look at how they are configured and create your own.

To create your own module – let’s say mod_foo you’d go like this:

  1. Import the Apache .vbs file which creates all the projects.
  2. Right-click on the Apache solution and select Add New Project. Give it a name and click Next to get to the configuration wizard.
  3. In the configuration dialog, the most important is to pick the right project type. Select the Dynamic Library (.dll) library one.
  4. Then right click the new project and select Add > New Item > Code > cpp file. Give it a name, and before clicking OK change the extension to .c (more similar to *NX).
  5. To make sure that the module will find the relevant include files and dependant libs you will have to add the [apache_src_root]/includes folder to the Additional includes property on the new project. Also add a dependency on the libapr subproject in the Apache solution.
  6. Write the code. At last! Copy the code in part 1. Because of the beauty in apr it will just work.
  7. Build the entire solution.If you have built it at least once before you can just build the new module

If you don’t get any errors in the build above you can go ahead and install the module. Copy it to the [apache2_root]/modules and modify the httpd.conf file to load it. Also make sure you assign a virtual folder to call the module, so you can test it out. One little Apache restart and you’re done. You should be able to navigate in your browser to the virtual mappting you’ve defined earlier and it should work.


Later edit:

I later realized (thanks to wizardcoder) that if someone only used windows, without going through the Linux part, the code needed in the steps cannot be copied from anywhere. So here it is – a zip with a default simple module.

Guess who’s back …

Dupa multa lupta cu mine, ceasul, lista de task-uri si alte mici amanunte din viata unui programator angajat, dupa vreo cateva idei de a renunta sau de merge am reusit sa postez si pe blogul tehnic. Chiar vreo 2 lucruri 🙂

Intai de toate am terminat articolul despre cum sa iti faci propriul modul de Apache pe Windows. Versiunea de Linux era publicata de mult, si promisesem si continuarea. Uite ca am reusit.

A doua chestie e legata de Silverlight. Sau de Microsoft -> OSS. Sau de amandoua de fapt. Oricum, pentru cei care nu au chef sa citeasca tot postul rezumatul e asta: O sa fie Silverlight si pe Linux, se numeste Moonlight. E facut de baietii de la Mono project si o sa aiba codecurile provided de Microsoft.

Si gata, ca mi-am depasit cota de blogging pe ziua de azi. Nighty night.