Sonntag, 19. November 2006

UML done right?

Don't get me wrong, I have modeled my share of use cases, class and sequence diagrams - but I feel that I lack a lot of background knowledge on how to put all together, an uml development process. So I'm currently diving into to the OMG documents at uml.org to find out how you would start out modeling in UML with a given methodology. You can more or less easily draw your diagrams with modeling tools like StarUML but I have the impression that with understanding the process and leveraging model transformation the use of UML will be even more useful. I guess I'll have to get a practical book on that topic as I find myself confused every time I start out with a new project.
(Audio Version)

Samstag, 18. November 2006

Still here .. with GWT and VMware image generation

And once again too much time has passed without me paying attention to the blog. I spent time experimenting with all sorts of apps and technologies and should've really posted some of my experiences.

Concerning my experiments with GWT - I upgraded to version 1.2.22 today and did realize the promised decrease in startup time when loading the project in the hosted mode browser but imho it could still be a bit smoother. The commercial GWT Designer (eclipse plugin, a free edition is available) looks very promising. Especially the useful wizards, refactoring support, I18N support and of course the visual designer make GWT development even more productive.

Another project I spend some time on lately, is the automatic generation of VMware images. The idea is basically to automate the installation of predefined software packages so that up-to-date images can be built at any time. Eventually custom images could be requested and the software installation could take place without supervision. I currently use the install scripts of the unattended.org project and an additional perl script to start the VM - as a prototype it works. I've also looked into other installer projects like WPKG, but I might end up creating my own database based package and profile management to enable user based profile definition via a web interface.

Btw, I need to get myself a new "java server" for the backyard: SUN's Blackbox ;-)
(Audio Version)

Dienstag, 5. September 2006

StarRating GWT widget

I recently experimented with Google Web Toolkit (GWT) and created a widget in the process. It’s a simple rating control as seen on many websites where users can submit a rating by clicking on a number of stars.
StarRating Example Application
The control currently features:

  • a custom number of stars in one row (horizontal)

  • a mouse hover effect

  • provides an RPC service interface to store and retrieve rating data

  • client side usage without a service is possible


  • ui customization via CSS is possible


Some features that are missing:


Nevertheless I believe this is pretty usable and maybe I’ll submit the widget to the GWT Widget Library Project if it is welcome. Anyway, feel free to use it but I won’t promise any further support - we’ll see. Here is the sourcecode of the StarRating widget.

Montag, 26. Juni 2006

SQL Script Creator released

New Version of SQL Script Creator Logo
I continued the development of my SQL Script Creator and have just put up a setup package on it's project page. It is a handy tool to create a sql script from query meta data based on several templates and can save you quite some time when working with temporary tables or cursors in SQL Server.

Meanwhile I found a similar opensource program which is called iCodeGenerator which uses user editable templates to create custom scripts and code but it bases it's generation on a table rather than a more customizable select query.

In case you are wondering: The splashscreen design is drawn by hand with a graphic tablet - it gave me the chance to try some brush effects. It is no coincidence that the content resembles the SQL Server 2005 splash screen in a more "handmade" style ;-)

Sonntag, 18. Juni 2006

Ubuntu Linux 6.06

I had this post in the pipe since start of june when Ubunbtu Dapper 6.06 was released. It has become a very clean and user friendly linux distribution is allegedly even grandma compatible.

I installed kubuntu, the ubuntu flavor with the KDE desktop, on an old AMD K3-400 with 512MB yesterday. The main purpose of that box will be playing music files so I was glad to see amarok does perfom well enough on that old piece of hardware. All in all the installation and the desktop make a mature impression. I wish there were some applications available via "add/remove programs" to easily install. If you want to check out a more detailed review of the distro head on over to lunapark6.com

Back with SQL Script Creator... almost

SQL Script Creator Splash Screen

Being annoyed by creating a cursor script in SQL and having to define tons of variables manually I wondered if there was any tool to aid in this process. I quick google did not yield promising results. So spend the weekend conjuring up an application that eases the script creation by providing specialized generators to create scripts automatically from a given SELECT statement. It works pretty well and will be tested further in the next week until I'll release it here under some opensource license.

SQL Script Creator Screenshot


Putting this app together thought me some new things about the settings and localization concepts of .NET 2.0. Two articles that got me introduced to the concept are the tutorial Localization in ASP .NET 2.0 on ondotnet.com and the detailed article
Localization Practices for .NET 2.0 on theserverside.net.

Montag, 17. April 2006

EJB3 persistence with hibernate

Since my trip to java posting I looked into EJB3 persistence (JSR-220) with hibernate as promised. It's shocking how much the EJB3 specification resembles hibernate - Gavin King apparently got most if his hibernate semantics in there. I believe it's a good thing though. Former hibernate developers can adapt the new sepecification with little effort and on the other hand the definition of persitience classes has been cleaned up nicely with properly defined annotations.
So far I've been able to create a simple example application with the hibernate entitymanager/annotations engine. It simply creates two objects, stores them in the database an reads them again with a query. The rest of this post shows how this example app is set up.

Freitag, 31. März 2006

Backup.net

I' currently thinking about a backup strategy for my linux server. I have several subversion repositories und home directories with imap maildirs that I definately don't want to loose in case my server disc crashes. Actually I have been very lucky so far with not backing up most of my data for years. Maybe that's why I feel, that I have to do something in that area.

Anyway, I have about 1-2GB of data, most of which doesn't change a lot, but it should be stored daily. I'am looking for some kind of network backup solution for storing backups on my workstation or friends' servers on a VPN. While searching, I came across DIBS: Distributed Internet Backup System which uses a peer to peer approach to store recovery data on serveral distributed servers. From the manual it looks promising and quite mature but I'm not sure if I'll find enough reliable servers with a decent internet connection to use it.

Bacula looks really interessting but might be overkill in my situation. I like the fact that it provides clients for different OSes so that you can use it as a single backup solution even for the windows clients in your network. It is mainly built for larger networks with distributed backup and storage servers for a large number of clients. I don't think I'll invest the time to set up the different server components for this one, though.

Possibly I'll end up with a tar, scp or rsync solution that copies backups to my windows workstation or other peers in my VPN. linux-backup.net and this IBM article of automation of backups on linux give some useful example for such a do-it-yourself backup solution.

Update: I found one more popular opensource backup application which is called Amanda which provides a similar feature set like Bacula.

Donnerstag, 30. März 2006

Daemon Tools shell integration

If your using daemon tools regularly you need a proper shell integration. I finally realized today I have to find a new integration for the daemon tools v4 version - I've lived without one so far. Apparently a new version of the awxDtools was released today - my favourite integration that I used for daemon tools v3 so far. Unfortunately it only is available with an adware-installer - I didn't bother to check it out further, let alone tried to remove this crap.

Since I'm currently only using one virtual drive I decided to stick with a very simple windows shell integration. With associating the damon tools executable with the right parameters you have a mount-on-doubleclick solution in minutes. You can set the associations in Windows Explorer under Extras > Folderoptions. The following screenshot shows the dialog - it's a german windows version though:
Association of ISO files with deamon tools

A better solution would be using a common definition for all the image types and also provide a unmount option like this guy Archades did in his reg file. It would even be possible to add a second virtual drive as another operation in the context menu. As I see it, if you have a decent reg file that creates the associations there is barely any need for additional tools to provide a daemon tools integration.

When calling deamon tools with command line parameters you have make sure that secure mode ist turned off in the daemon tools options or you'll get a confirmation dialog each time you try to mount an image.

Dienstag, 21. März 2006

Diving into java scripting frameworks

As I wrote sunday, I experimented with beanshell and it worked pretty well und faster than I anticipated. Nevertheless I heard about some other scripting frameworks (and their integration in java 1.6) which motivated me to investigate a bit more in this direction. Apparently Mozilla's Rhino is a very powerful yet fast framework that provides javascript aka ECMAscript. Performance benchmarks by Pankaj Kumar in his article BeanShell, Rhino and Java -- Performance Comparison show that my choice of beanshell as a scripting framework might not have been that best - performance wise. I'll definately check out Rhino for use in my application.

Another interesting framework I came across when looking into scripting with java is the Apache Jakarta Bean Scripting Framework (BSF) which provides a framework to create JSP pages in different scripting languages. To achieve this it offers a uniform interface which wraps several scripting languages like javascript, python, tcl and many more.

Sonntag, 19. März 2006

A trip to java

Once again a long time has passed where I couldn't find the time or motivation to write a post. I was mainly occupied with the specification of a java application which gave me the opportunity to get to know Sparx System's Enterprise Architect. I only used the common uml diagram types and the code generation features for this project and they work pretty well. I'd love to make use of the more advanced features though and look into the whole MDA approach a bit more. There is a fundamental difference in just drawing some class diagrams and really developing model driven from the ground up. Projects like AndroMDA to generate complete applications look promising and certainly could reduce the expenses for software development but I doubt I'll find time to check it out properly any time soon. As for the modelling language I don't think everything should be done with UML though - the approach to model every aspect in UML and using stereotypes to define "what it means" makes the modeling too confusing and complex imho. Some interesting views on MDA and Software Factories can be found in the podcast MDA vs. Software Factories and some older episodes.

At the moment I'm working on a prototype for another java application and got used to the new java 1.5 features like generics and the new for each loops. The generics are definately the way to go for typesafe collections and I'll try to use them from here on out. I found the wildcard <? extends> and some other constructions confusing at first but I do understand that there are several restrictions (german link) when using generics. Someone should publish some design patterns for typical cases that require generics.

For that project I also experimented with BeanShell which is basically a java scripting interpreter. I'll probably use it for custom formulas which are evaluated dynamically within the java application. Easy to use and powerful.

The next component I'll look into is EJB3 persistence using Hibernate. I have worked with the hibernate tools and reverse enginered some database tables but since I already have the POJO classes and don't want to create all the old hibernate xml mapping files I might as well check out how to create EJB3 persistence by using annotations. More on that soon.

Samstag, 18. Februar 2006

Remastering tracker modules like S3M oder XM

While going through some old CDs I found some tracker modules I created back in the day. Naturally I wondered how to convert these Scream Tracker 3 and Fast Tracker 2 files to a more easily playable format like ogg or mp3. For starters, this could be done by playing the files in winamp with the wave writer plugin enabled which writes the rendered audio to disc.

A more flexible solution is using the Open ModPlug Tracker, though. The OpenMPT is full featured tracker in the form of an open source windows application. I reads all kinds of tracker module formats including S3M and XM and has the ability to export a whole song as wav file. The real advantage over winamp is the channels option to render each channel to an individual wav file for further editing or mixing.

And that's what I did with some of my modules. I took the wav files generated from OpenMPT and dropped them in Adobe Audition 2.0 to add some filters and equalizer settings for each channel and finally exported the songs as mp3s. If you don't want to bother running a multitrack audio editor OpenMPT also has some options to enhance the playback (eg. dynamics correction) which I did not try but may be sufficient.

Dienstag, 7. Februar 2006

VmWare Server for free

VmWare released their VmWare Server for free yesterday and I had the opportunity to test it today. I am familiar with the workstation version and the recently released free VmWare viewer which I use for a couple of development VMs but I hadn't seen any server products yet. As I understand the new free VmWare server covers about the same functionality as the former product GSX Server. It looks like VmWare is trying to secure it's market share before other opensource virtualization tools like Xen catch which will certainly happen as soon as virtualization support in the latest intel and amd processors can be used.

As for my experiments, I installed a VmWare Server on my debian linux box without any problems. The console installation script let me customize the install paths and vmware modules were compiled against my kernel-headers successfully. As client I installed the VmWare Server Console on Windows XP which looks similar to the workstation version with the ability to connect to a server (user authentication uses PAM against the linux users btw.). I created a new virtual machine with the console but copied the harddisk image from an exisiting virtual machine (using the old workstation virtual machine directly resulted in problems with sound configuration and other stuff). Very useful is the ability to use the cd/dvd drive on the client PC which can be accessed from within the VM running on the server.

I really like the ability to disconnect from the virtual machine which then keeps running on the server and reconnect later, but then again, thats what you expect of a server. As for the performance it's definately slower than vmware on a standalone workstation but that is understandable considering the network connection. Using the windows remote access to connect to the server seems to be only slightly faster so I suppose it's the overall speed of the virtual machine that's limiting. Maybe the performance can be approved by tweaking some server settings, I'll look into that.

To conclude, the free VmWare Server is a useful tool to have and it's apparent that it is a mature product but it could be improved performance wise.

Mittwoch, 1. Februar 2006

New Wordpress and Colorful Firefox Tabs

First of all I upgraded to the new wordpress 2.0.1 release which fixes a lot of small bugs (114). I'm curious about the fix for XML-RPC uploading which will hopefully mean that posting images from within flock might actually work - I have to check that out.

Yesterday I found the simple but very useful firefox extension Colorful Tabs in the list of
10 Useful Firefox Extensions That Don't Get Glamorised. By colorizing all the tabs with different colors it makes it easier to distinguish between tabs. The only thing that was missing was an easily visible highlightening for the active tab. This is why I modified the extension and added a shadow effect for all inactive tabs so that the active tab is sticking out a bit more. Here is how it looks:

Colorful Tabs with shadow effect for inactive tabs

I contacted the author of the Colorful Tabs extension, sent him the changes and I hope he will integrate them. For now you can try the shadow effect by using my experimental modfied version of clrtabs.jar. Just replace the file chrome/clrtabs.jar in the Colorful Tabs extension.

Dienstag, 24. Januar 2006

Windows freeware for commercial use

When developing software at work you might be restricted to what software you can install and use. You might even work at a client's computer where you don't want to risk using trial versions for months and violate licenses. This is where Open Source software really pays off, it's just free.

Unfortunately, when searching for free software you often find shareware applications or even worse, freeware for personal use only. That's why I started compiling the following list that contains great freeware and open source apps that allow commercial use. (A link here is no guaranty that commercial use is granted. Licenses can change or I could have made a mistake - check the licenses and EULAs!)


Browser / Web





Mail-Client







FTP-Client







Text and XML-Editors





Diagnostics / System Utils





Archiver





Backup





Media Player





File-Manager




  • FreeCommander Windows filemanager similar to Total Commander

  • XPlorer basically a windows explorer with tabs




CD/DVD Recording





Terminal / SSH / Remote-Control





Messaging







Web-Development





Linux Tools / XWindows





  • Cygwin - a complete linux like environment, including shell, services and X.




Version Control




  • Subversion version control system, sucessor to CVS

  • TortoiseSVN windows client for subversion as explorer integration



Imaging / Graphics





Visualization / UML





  • ArgoUML Java Tool to create UML diagrams

  • StarUML Windows UML ß MDD Tool

  • FreeMind a free mind mapping software like Mindjet's Mindmanager




Office





Development Environments




  • Visual Studio Express Express Editions of MS Visual C++, C#, VB and SQL Server

  • PHP Designer 2006 PHP Development Environment (eula says personal use, but several forum posts say commercial use granted)



*Missing*




  • good image viewer with thumbnail view

  • a complete burning appliction (like Nero or K3B)


 

I realize that this list is far from complete - I basically started with apps I like to use or think they might be useful for me. Especially if you look for development tools there are a lot more useful apps out there - I deliberately neglected the whole field of java development tools, since most of them are already commercially usable.

 

This list will be updated whenever I find new apps - I would appreciate any suggestions you might have for additions to this list.

Montag, 23. Januar 2006

Coming up...

Another evening thats much too short... anyway I'd like to share whats coming up in the next days:


  • I still have no approval to release the third party code within PhpWebChecksum as part of the php file. I'll probably have to rewrite the two or three php functions myself before I release it.


  • Besides that, I subversioned my MyDocuments folder to have an archive and a backup of my documents. Expect an article on how to set up subversion with svn+ssh authentication because I realized that most pages that address this issue are incomplete or not very easy to understand.


  • The other thing I'm working on is a list of windows freeware applications that can be used commercially. Most freeware lists don't pay attention to the license restriction "for personal use only" - but you might. If you want to install software at work without violating the licenses you can find good free tools in the list I'm compiling.

Sonntag, 15. Januar 2006

Creating reflection effects with Photoshop actions


A very popuplar and really cool looking effect is the illusion of reflective surfaces. You can see this reflection effect on many popular websites, in apple's itunes or right here in this picture of a Ferrari 355. Although there is a way to create such an image reflection just with javascript and the canvas tag this effect will usually be done by image editing as long as Internet Explorer doesn't support the magical canvas tag. Therefore I will show you in the following tutorial a way to automate the creation of the reflection using actions in Adobe Photoshop.

Samstag, 14. Januar 2006

New look


I finally finished my wordpress customizing and updated the site with a new theme. What you see here is a K2 r160 theme with customized CSS and the additional images. The only thing I had to change in the PHP scripts was the display of the categories in the sidebar which was limited to certain pages. So the upgrade to the next K2 release will hopefully be seamless. The archives page doesn't work at the moment but I'll have a look at that in the upcoming week.


Here is a screenshot of the new design for documentation purposes:
new design techbits.de based on K2 r160

Mittwoch, 11. Januar 2006

PhpWebChecksum to be released soon


The first version of my php script to monitor changes in your website will be released soon. I already set up a sourceforge account for PhpWebChecksum which will be mainly used for bugtracking, and maybe source code management (CVS) and file storage for releases for now. The projects homepage will be hosted on techbits.de under /projects/phpwebchecksum which is already available as well. At this point I have to make sure I can use Keith Devens' PHP XML Library which I included in my php script and figure out how I'll solve the pass-by-reference issue when switching between PHP4 und PHP5.


Here is another teaser screenshot of the main form with header, footer and some design improvements:


main form with some design improvements

Donnerstag, 5. Januar 2006

Checking websites for intrusions


When I recently installed this blog a thought about how you could monitor a website for intrusions. Almost all sites use some kind of content management system, blog or other portal software. Unfortunately we all know that software does have flaws an that there are script kiddies out there who do not hesitate to exploit them as soon as they are found. Since most of the small sites and blogs are hosted on simple PHP/MySQL webspace it is not as easy to monitor the integrity of your site when the web application has hundreds of files buried deep in a directory hierarchy and you only have FTP access to browse through it.



I googled for tools that create checksums for websites but I didn't find much, so I started on creating a PHP application for that that purpose. My prototype has the following functionality:


  • generating an xml list with checksums (SHA1) and file dates for a complete directory tree
  • the xml list can be downloaded to be stored locally
  • the xml checksum list can later be uploaded to be compared against the current state of the website
  • a comparison is computed and display showing all modified, new and missing files with the information what (date, size, checksum) has been modified.


Here are two screenshots that show the current development version:

Main Form - generate and compare checksumsChecksum Comparison View



I will continue working on this tool and make it available as open source when it's fairly stable.

Dienstag, 3. Januar 2006

Extending the blog


I have just installed the tagging plugin Ultimate Tag Warrior for Wordpress to easily add some technorati tags to this blog. It provides a tag editor within WordPress' Write Post page to associate tags with the post and it even suggests tags for the post you have written. The tags for each post can be displayed as links to different services like technorati or flickr (and more) and build up to a tag cloud that can be used to dig through your post archive. A Very useful plugin.



I've been playing around with the recent K2 Beta Two in the last few days - it supports Ultimate Tag Warrior out of the box by the way. The Beta Two looks really nice, the new icons and the ajaxified comments dialog are particularly noteworthy. I still have some image editing and css hacking to do until I'll update the theme here, maybe with the next (beta?, rc?) release of K2.