Flex API contest extended

The guys with the Flex 360 conference have extended the deadline for their Flex API contest, so that participants for Europe can sign in as well, The new deadline is 4th of April, the friday before the conference begins. See more information on this here and here.

Also, there’s almost a month to go until the conference. From the Romanian side of Flex I and Mihai Corlan will participate, with two sessions – Mihai with Developing Data-intensive Flex applications and me with a session on Flex and (web) services. I will mostly talk about SOAP services, but won’t ignore REST ones. As part of what I will present  at Flex 360 I’ve started a series of articles on the blog – the first one is already live and presents a sample application that searches videos using web services. So let me know in the comments if I’m off track or not.,

Preview handlers

I’m using Office 2007 for some time now and the ability to preview the content of some files without actually opening them in the dedicated editor is quite nice. It’s a pity that the number of supported file types is so small. A good thing is that they everyone can create such a preview handler, because the API is publicly available and documented on MSDN. So I looked around the net today for some handlers that would allow me to preview zip archives and some other common file types – like .as or .mxml. One of the interesting resources I’ve stumbled onto is a blog post that links to a msdn article and also to download the handlers demoed. Get at it here. Another pack of handlers for some of the programming language files is here.

Oh, and these handlers work for Windows Vista too, so if you have the preview pane opened, it will load a quick preview of the file in there.

Why can’t we just erase accounts?

We optimized the way we create accounts on various sites. We optimized how to recover lost passwords or set preferences. Bt why can’t we do the same to remove an account?

Most people already have this: too many accounts on sites / web applications that they no longer use, like or are even annoyed. But you can’t delete your account. No, you’re there forever. What about if you change your ideology and don’t want to be seen as a member of a particular site? In many cases you can’t have that. And it’s sad.

I’m not one for erasing or changing history, the communist era did too much of that, but I want to have a choice of whether I want to be a member of some site or not. Keep the fact that I joined your site in your archive, but let me erase myself.

/End rant of the day, back to unsubscribing from stuff

FlexCamp is upon us

Today at Adobe Romania takes place the FlexCamp Bucharest. It’s a conference about Flex which had already sold out in the first three weeks from its announcements.

I will hold a camp session showing off the improvements we have added into Flex Builder in terms of web services – the introspection wizard which generates strong typed classes for both the operations, types and even request / result wrappers.

If you already registered and received an invitation, I’m looking forward to meet you there. Otherwise (or if you simply cannot come) the entire camp is broadcasted live over Acrobat Connect. Recordings of the presentations will also be made available afterwards. You can watch the live camp session on Connect at this address: http://my.adobe.acrobat.com/flexro.

Now back to adding the finishing touches on the presentation.

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.

Congrats!

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.

Updating WordPress

I guess everyone knows by now about what happened with WordPress release 2.1.1.  It seems that a hacker managed to get an account on one of the download servers and tampered with some of the releases. He added some exploitable code that allows remote control of the blog (e.g. this usually means the possibility to delete all content). Then someone found this piece of code buried inside one release package and notified WordPress. They put up a new minor release fixing this exploit and some other bugs and are trying to find out who did it.

That’s pretty much the summary of what happened, and it is only to remind us of how important security is in the world of software. Even blogging software. So, if you’re using WordPress 2.1.1 you should update. You may not be affected, but why risk it?