Friday, December 28, 2007

Cocoa: Timed methods

Sometimes one wants to run a job a regular or scheduled times. One option would be to start a loop that runs until some abort condition is reached and that sleeps after the job is done. This is easily done, but has the big disadvantage to block the GUI while it is sleeping.
A better alternative is to set up a timer that calls you back from time to time. Cocoa offers the NSTimer class for this. It offers a wealth of methods to set up the timer and insert it into the RunLoop. The timer will then send from time to time a message to a method of your app that does the job.
It is actually easy to create the job. First you need to decide which method will be notified. In our example here it is - (void) runIt (with no arguments).
The code to set up the timer could then look like this:

NSTimer *timer;
timer = [NSTimer scheduledTimerWithTimeInterval:10.0
  target:self
  selector: @selector(runIt)
  userInfo:nil
  repeats: YES];

So this one schedules the execution of the runIt method of the same class the timer is created in, to repeat every 10 seconds.
Simple.
To cancel the timer again, one just has to send it an invalidate method:
[timer invalidate]

I was first experimenting with scheduledTimerWithTimeInterval:invocation:repeats: but for whatever reason it did not work, even if the timer said it is valid. But the above works well for me and is even easier.

Some Mac coding ... finally

I did some coding on Mac OS X lately. Basically the first time some real stuff besides just firing Xcode and InterfaceBuilder and closing them after some poking around.

At first it feels somewhat strange to code in Objective-C, given that I mostly did Java coding for the last five years, but then it feels good again. I am writing 'again' on purpose, as the whole programing is like it was over ten years ago on the NeXT.

I will try to put some stuff online, as I did fight against some obstacles and want to share the results.

Saturday, December 08, 2007

Small Applescript to make iTunes play

I recently put my Mac mini into a server room and am running it headless now.
As this one also has the iTunes library and the connection to the stereo, I was using VNC to connect to it and to start and stop iTunes. Of course that is cumbersome.
So I googled a little on "applescript" and "iTunes" and found this wonderful site.

Using the information on it I was able to come up with this script, that I saved as playTunes.scpt

tell application "iTunes"
if player state is paused then
play user playlist "a_Ungespielt"
return "Playing"
else
pause
return "Stopped"
end if
end tell


It will play the contents of a playlist called "a_Ungespielt" if iTunes is paused and stop playing otherwise.

I can now just log into the mini and start/stop playing with "osascript playTunes.scpt".

Saturday, December 01, 2007

Marlene is standing on her own


Marlene is growing well. She is eight months old now and since three weeks, she is able to sit up on her own. She is not yet able to crawl on arms and legs, but she is already moving around quite a bit.

Today she was for the first time able to stand up on her own by holding the bars of her bed and pulling herself up. She was totally happy and excited - as we have been as well

Wednesday, November 21, 2007

Oracle surprise

I was hunting an issue where inserting an empty string (not null in Java, but with String.lenght()==0) resulted in a constraint violation exception. The column was a varchar2 one and indeed marked as not null.

I asked some people that should know (including a former DBA) and everyone told me that "" != null - always.

Digging around I found the following in an Oracle manual:

Note: Oracle Database currently treats a character value with a length of zero as null. However, this may not continue to be true in future releases, and Oracle recommends that you do not treat empty strings the same as nulls.


So in this case "" == null.

It is ok if one knows it and one can work around, but it came as surprise to me and others.

Tuesday, November 20, 2007

Broken ixus

About one and a half years ago I bought myself a Canon Digital Ixus i Zoom. After two weks, the camera was broken, as the lens protection lids were just lying in the lens tube. I had the camera sent to Canon and they repaired it on warranty.
The camera worked well - until recently when I had the same issue again. Googling around indicated that this time the repair would be expensive.



After the camera was just lying around, I thougt "why don't I just remove the broken parts and try if it works again?"

Here is what worked for me.
I take no responsability whatsoever if your camera breaks, you hurt yourself or your dog runs away.
Continue reading at your own risk


So I took tweezers to try to remove them. As this was not soo easy I shaked the lens tube a bit and found out that I could just remove the cover.

The next image shows the parts that fell out


This closeup of the front shows an axis (red), a slider (green) and a hole (blue)


Put the one cover thingy with the hole marked in red on the axis and the hole marked in green on the slidrer. The teeth must be facing the hole marked in blue. Then put the other thingy in place with its little axis in the hole marked in blue and the teeth mathing those of the other one.


The result should look like in the next picture:



Or when you switch the camera on:


Now it is time to clip the grey plastic ring back on. There is basically only one way to do it right:



After that put the metal tube/front cover back on it and carefully apply some preasure to it. Volia the result:

Wednesday, November 14, 2007

Hyperic and Red Hat cooperate

Red Hat / JBoss built the JBoss ON 1.x product on the base of code from Hyperic. Now the two companies
are going to collaborate on that.

Why do I write that? Because I am part of the JBossON team :)

Friday, October 12, 2007

Use == for Enum comparision

I was recently running FindBugs over some Java5 based code and found some places where FindBugs was complaining that two Objects compared with equals() are not of the same type.
Closer inspection showed that this have been Enums in most cases. The IDEs did not warn here and maunal code inspection also does not directly show the issue.
Luckily with enums, you can use == to compare them. And then it gets obvious:




Just a small little change in habits, but it helps a lot.

JIRAClient is cool

Recently we at JBoss® received licenses for JIRAClient. It is a cool desktop app (written in Java) that serves as a frontent to Atlassians JIRA bugtracking sytem. One of the nicest features here is offline mode: JIRAClient is ablw to download issues to its local database, so you can work offline and upload changes later on.
The staff at Almworks is very responsive in the forums and also open to suggestions.

If you are using JIRA on an daily basis, then you should definitively check out JIRAClient.

Thursday, October 11, 2007

pg_stat_activity is your friend

PgAdmin for postgres has a nice feature called "Server status". It is great if you sit in front of a GUI.
But if you want to do some remote work or tell a customer to report that server status, it is not quite the right thing.

But at the end, pgAdmin is only doing

select * from pg_stat_activity order by procpid;


This will show you all client connections together with the command they are currently executing.

Tuesday, September 11, 2007

NPE due to autoboxing

One of the nice features of Java 5 is autoboxing. I guess everyone remembers the hassle of calling Integer.intValue() to convert from Integer to int.

Now can you guess what the following code does when you call FB.foo()?

public class FB
{
public void foo()
{
int x;
x = bar();
System.out.println("X is " + x);
}

public Integer bar()
{
return null;
}
}


Yeah, it is throwing a NullPointerException in the assignment x = bar() because bar() is returning null and the implicit bar().intValue() is thus throwing the NPE. Without autoboxing, this is much more evident.

Unfortunately it seems like FindBugs and other tools are not (yet) able to detect this (actually in my test code, FindBugs was not even able to detect the NPE in teh explicit call).

Monday, August 13, 2007

x2svg new release 1.2beta1

Project x2svg just released a new version, 1.2-beta1

Changes are
* Documentation updates
* Changed handling of the property file. See properties.html.
* Fixed a bug where the directory path of the input was appended to the output if only a directory was given for output conversion (x2svg-Bugs-1770327)
* The gui no longer silently swallows errors (x2svg-Bugs-1771512)
* Comments can be added to a diagram e.g. stating the input file or user (x2svg-FR-1770604)
* Improved XSD handling. Recursions are handled and a big Schema from @work can now be parsed. Inheritance is honored.
* Fix for: "The DTDParser was going into an endless loop" (x2svg-Bugs-1766097).
* Added a test suite.


It can be downloaded from the sourceforge download pages at:
http://sourceforge.net/project/showfiles.php?group_id=199130&package_id=236217&release_id=531824

Saturday, August 11, 2007

Sleepless in Stuttgart - Part III

Over two month have now passed since my last post.
Both Kids are doing fine. Marlene is much more moving around (but still not crawling).

Around six weeks ago we've implemented the 8-o-clock rule for Orlando and since that time we have our evenings back to us.
The rule is very basic: "Orlando is in bed at 8pm and daddy and mommy are out until the next morning". Actually we have tried this several times in the past, but never really succeeded. The big difference now is that he has an analog clock in his room, so he can directly see if the big needle is already at the top and little one on the eight or not. When he is in bed before eight, we still have some time for reading. If he is in late, it is relatively easy to point him to the clock and tell him that it is late now. That system really works well for us.

End of June we did a short trip to the Bodensee (Lake of Constance) where we had a good time altogether. We were staying at a farm with lots of toys for children. Unfortunately Orlando was the only German kid at his age (there was a French girl), so we still were his major friends for playing). Next time we do such a trip, we will try to convince friends to come with us, so that the kids can go playing on their own.

I am having my second month of Elternzeit and am currently discussing the implementation of that with the regional agency, as the law seems to allow to take the Elternzeit only on the n-th month of birth of the child. So if the child is born on 15th of a month, you can only take Elternzeit from a 15th to a 14th on the next month, but not e.g. from 1st to 31th. Unfortunately I didn't know that :-/ Well lets see, what comes ...

XO review by a 12 year old

This blog entry contains a review of the XO (the One Laptop Per Child, OLPC) machine.
Interesting read. I wish I could get my hands onto one as well

Must sees in Stuttgart (?)

As you know I am a regular qyper since end of last year. Recently I got asked by another qyper from outside Germany what are the must sees in Stuttgart.
Well, the first solution to this would be to just select the entries with 5 stars. But this still leaves a big chunk of things.

So this is a very subjective list of must sees from my point of view. All urls refer to qype entries:

- TV-Tower: This is located on the top of one of the surrounding hills and was the first all concrete TV-tower in the world. You have a great view from up there. You can get there with Subway U7 from main station.

- Killesberg (+ tower) it is a nice parc with a cool tower there as well. You can get there via U7 as well (in the other direction). When you are up there and are into architecture, then you should also go and see the Weissenhofsiedlung or on Qype

- The Zacke also gives nice views over Stuttgart. Tickets for public transport are vaid here as well.

- The Königsstraße is the main shopping mile and starts at the main station. When you walk this pedestrian zone, you pass by at the châteaus , the new Kunstmuseum (this entry only describes the bar, but the picture shows what to expect) This link is better: http://www.kunstmuseum-stuttgart.de/de/index2.php

Then of course as the City of Mercedes and Porsche there are museums as well:
- Porsche Museum (currently in construction, but the old one is not far away.
- Mercedes Benz Museum


There are plenty more things to see. Check out the Qype listing for Stuttgart

Monday, July 30, 2007

Gui for x2svg

Hi,
project x2svg just released a new version that now contains a simple graphical user interface.

You can download it from Sourceforge.

Friday, July 20, 2007

x2svg 1.1 released

Today version 1.1 of x2svg has been released. Notable changes are:
* x2svg can now be run as ant tasks
* more output file types (eps, jpg, png, tiff, pdf) supported
* It is now easier to do mass convertions of svg files or input formats (The svg to xxx converter can be used standalone)
* added an alpha quality XML Schema parser

Check it out and: please give feedback!

Tuesday, July 10, 2007

Real Benchmark on Postgres

Sun submitted results of the SpecJAppserver benchmark running on Glassfish and Postgres.
Josh Berkus discusses the results at his blog: http://blogs.ittoolbox.com/database/soup/archives/postgresql-publishes-first-real-benchmark-17470.
The benchmark results can be found here.

Congratulations to the whole team that made this possible. It is a big sign that Postgres is in fact fast (other than what urban legends are always trying to tell).

Of course no one has that configuration 'at home' and I would recommend JBossAS anyway :), but anyway ... :-)

Tuesday, June 12, 2007

Safari 3 (beta) rocks

Apple presented the new Safari version at WWDC yesterday. It is still a beta, but at least on the Mac it makes a great impression. It is blasting fast - if the server on the other side can deliver at that speed :)

There is now also a Windows version available, so PC users can now also use that great browser.

Ah and btw.: It now also has SVG support

Thursday, June 07, 2007

x2svg , first contributor

Today I got an email with patch for x2svg from a user. I am really pleased that finally someone is providing feedback - and then even in such a form.

Monday, May 28, 2007

x2svg 1.0 released

I am happy to anounce the first stable version of x2svg, a tool to
render tree like structures in scalable vector graphics (SVG).
Currently the following three input formats are supported:
- Document Type Definition (DTD)
- Java properties files
- ant build-files

Please check out the release information at Freshmeat.

And as always: please provide me with feedback, bug reports etc.

Sleepless in Stuttgart - the second month

Marlene is now two month old. I have been at home for a month as paternitiy leave, as this is now quite nicely supported with the new Erziehungsgeld from the Government. Also my team lead at Red Hat was quite forthcoming on this topic.
Nights are getting better and better.; the intervals between feeding Marlene are getting longer and somtimes reach 5 hours already. And even if this is not the case, it is relatively painless, as she seldom fully awakes.
As the days are now longer and the nights shorter, it is rather Orlando who doesn't want to go to bed in the evening and wakes up too early in the morning.
I am back at work since last Wednesday and found my way back into the code. For our JBoss ON, we now have a nice gui based installer which is also I18N'ed with (some) German messages. It's fun to see this.
As written in the previous post I was also able to create a tools to render DTDs in SVG. Even if I don't plan to write a new book in the near future, I am interested in finding a solution that could be used in such a project.
Over the bank holiday a week ago, we made a family trip to the town of Weikersheim, stayed at a Framhouse and made some trips into the surroundings.

Tuesday, May 15, 2007

Kindergarden Dad

Yesterday I spent the morning at the kindergarden of Orlando. Parents have the possibility to stay there to lurk around and see what the kids are doing. As I am currently at home, I took this opportunity.
And I must say that I don't regret it. It was very interesting. For the start the kids are in the courtyard. At 9:30 they go upstairs in the group room, drink tea, eat some fruit and talk about different things. Then they have one hour / 1:30 from 10am on to play at various places or paint or build things etc. At 11:30am lunch starts where the kids pick the meal themselves. After lunch, they
uncloth, go to the bathroom and then to bed for a little nap.
That was the point in time where I left again.
Orlando was very proud that his dady stayed at the kindergarden.
It's also interesting how children's brains work. They asked "Do you stay in kindergarden today?" Me: "Yes" They: "Then you are a baby, because babies stay in kindergarden". Or course they don't consider themselves as babies :-)

Thursday, May 10, 2007

x2svg first beta release available

A few days I wrote that I will release my dtd2svg tool as open source.
Meanwhile I refactored the code, fixed some bugs and also wrote a properties parser to visualize properties files.
As there are now not only DTDs accepted, I also renamed the project to x2svg, as I plan to add more parsers in the future.

You can grab the source distribution from here.
To build you also need fop and dtdparser, which need to be present in the lib folder.
Those can be obtained from

Have a look at the readme.html file in the doc/ directory of the distribution about details on how to install and run the tool.

x2svg is released under the LGPL.

Monday, May 07, 2007

SVG on Mac OS X

In a recent post I wrote that Safari on the Mac does not know about svg natively.
Inspired by a blog entry by Jeff Schiller, I just downloaded a nightly snapshot of Webkit, the browser engine behind Safari.
This snapshot is already quite well able to render svg on screen, even if it is not yet complete, as you can see on this chart.

Sunday, May 06, 2007

Visit to a historic iron mine

Today we made an excurs to an abandonned iron mine in Aalen-Wasseralfingen (around 80km from Stuttgart). The mine itself has been shut down after WWII and is now open for visitors. With little trains one drives into the 400m into the mountain. After a little film about the history of the mine and its general layout, one walks for about 800m through the mine and gets a very good impression why it is a good idea to wear a helmet.
The tour gives a very good impression under what bad conditions our ancestors were pulling iron ore out of the mountains, and it is a perfect occasion to go there when kids start to learn about those things in school.

Saturday, May 05, 2007

Where does organic food come from?

For quite some time now, we're getting each week a box delivered that contains organically grown fruit and vegetables. Our supplier is a company called Laisacker from about 30km outside of Stuttgart.
A nice thing about the box is that they put each week fruits and veggies from the current season in, which might be items that we would not buy ourselves, but which will always taste very well :) Laiseacker is growing much of the stuff themselves or buying it at regional partners. In total that organically grown food tastes very good.

Yesterday we made an excurison to the company, as they invited their customers to have a peek. For children there have been various stations to play or to get face painted. The adults could drink a coffe and look at how the boxes are packaged.

SVG resources

Holger and Juliane have a cool repository of SVG related resources, nice drawings in svg and (gui) components done in XML, XSLT and SVG. Among those are e.g. Login-Boxes rendered in SVG or various versions of bar charts processed in SVG.
All this is available at www.treebuilder.de.
Note that for visiting the site, you need a browser that is svg capable like Firefox or a SVG plugin for the browser (as for Apple Safari).

Thursday, May 03, 2007

DTD2SVG reloaded

In a past article I wrote about drawing DTDs in SVG in order to convert them to PDF later.
Recently I found some time to work on this matter again (actually I got inspried to do so as I saw that Batik and FOP are making some progress as well). The code is still somewhat *ehm* ugly, but I think the result is already not bad:


I plan on releasing the code in the open source in the next few weeks, so one can use and adopt it to its own needs. Also one of the more interesting features would be to allow for parsing of XML Schema as well.

Sunday, April 29, 2007

Sleepless in Stuttgart - the first month

Marlene is now one month old. She and her mom are all right. Nights are as expected 'shorter' than before. Currently Marlene wakes up every two hours and wants to drink. But intervals are starting to get longer.
Also during the day she wants to be close to me or her mom. Luckily we have a baby-sling (see e.g. http://www.didymos.de/english/index_e.htm) so the one looking after her can have both hands free (actually while I a writing this, she is in the baby-sling).
Her older brother Orlando is very excited about his baby sister and likes her very much.
Last wednesday her 3th medical examination ("U3") took place and everything is ok with Marlene.

Stay tuned for another month of "Sleepless in Stuttgart" :-)

Thursday, March 15, 2007

Nice new Red Hat videos

Yesterday Red Hat Entreprise Linux 5 was released. And for this release, Red Hat also produced some nice new videos, that you can now find on YouTube: http://www.youtube.com/results?search_query=red+hat+real+technology+lesson&search=Search. The videos are also available on Red Hat website

Friday, February 16, 2007

Wednesday, February 14, 2007

Eclipse 3.2.1 performance patch

I was recently complaining that Eclipse is taking a nap after a right-click before displaying the context menu.
When looking for an updated Findbugs plugin the update manager also offered me an update called
"Eclipse Java Development Tools 3.2.1 performance patch (bug: 159325) 1.0.0", which is related to the this bug :
https://bugs.eclipse.org/bugs/show_bug.cgi?id=159325
After installing the Patch, the context menu appears again directly after a right click without any nap.
So this was no problem with the Mac or the Apple VM, but with Eclipse which I only never saw before in Win* times as I was not using such a big workspace together with Eclipse 3.2.1.
According to the bug notes, this is also fixed in 3.3.M2 and - as I understand it - an upcoming 3.2.2 maintenance release.

Timestamp comparision oddities

Yesterday a colleague of mine ran into a problem where code like this produced a ClassCastException:

.. av.getEndTime().compareTo(someDate);

av is a domain class in JPA with endTime like this

@Temporal(TemporalType.TIMESTAMP)
java.util.Date endTime

and someDate being a java.util.Date.

This just worked on my Mac, but failed for one colleague, while others had no problem.
Looking under the covers turned out that av.getEndTime() actually returned a java.sql.Timestamp, which in java versions between 1.5.0_00 and 1.5.0_06 (including) were suposed to throw a CCE when the argument of compareTo() is a Date. Interstingly before() and after(), which also compare, did not have this restriction.
In Java Version 1.4.x the CCE was also not present and SUN seems to have it changed back to the original behaviour in 1.5.0_07. Unfortunately the manual page was not updated, adding to the confusion.
This blog entry also talks about this problem. Sun has a list of page about incompatibilities where this problem is listed. Unfortunately, the original bug report is not accessible (to me).

Some people argue that one should write own comparators, but I think it is easier to update to a newer version of the JDK. Of course if the software gets shipped to customers, one needs to make sure the customer also has 1.5.0_07 at least.

Tuesday, February 13, 2007

Elvis^Wmarcf has left the building

Now it is official. Marc Fleury, founder of JBoss has retired from his position as SVP JBoss division at Red Hat. Many suspected this when he started to take his paternity leave. There are numerous posts around this like e.g. from Sacha Labourey.

I think it is a pitty, as Marc was a brilliant visionaire. I will aways remember when I was at the Advance Training in Paris in 2003. Juha and Adrian were teaching about various aspects (no pun intended) of the system (it was ealy 3.2 time) when Marc was coming into the room, watching the two for a minute and then running to the front of the room, saying "Forget all the bullshit - now we're doing it the AOP way". And then he started to draw on the flip chart his ideas about interceptors, applying pointcuts etc. Many students in the course have been very irritated, but for me this was really great stuff.

As I am a dad myself I can very well undertand that Marc is now taking care of his kids and his other interests. Some have even seen him as DJ Red Baron. And if you want to know what Marf is up to, you can visit his blog, where he can now freely comment on various things. Also something that he couldn't really do as founder of JBoss or SVP at Red Hat.

Marc, I wish you well - hope we meet again.

Saturday, February 10, 2007

A totally subjective comparision of Eclipse 3.2.1 and IDEA 6.0.4

As most of the project I am working on are using IntelliJ IDEA, I thought to give it a try as well. This was not easy, as I am a long term Eclipse and derivates (Rational XDE) user. But on my MacBook, Eclipse is often taking naps when e.g. right clicking in the navigator or package view. I find this behaviour very annoying. And yes, I already have 2GB Ram in the box and I am giving Eclise half a gig for the heap, which doesn't need according to this memory usage bar. IntelliJ just feels much snappier.
This are the differences I found so far:

Eclipse:

  • Better problem view. It shows all errors in the project if I e.g. break a method signature
  • Only one version of Ctrl-Space for autocomplete. I don't want to remember if I need to press alt-ctrl-space or shift-ctrl-space etc. for a given situation
  • Many more plugins
  • Plugins and features are often based on other huge features (e.g. EMF)
  • More than one main window. This is cool when you e.g. are working on transitioning a project from EJB2 to EJB3 or spring. On one monitor you have an Eclipse window with the old code and on the other monitor you have the new code. And on both monitors you can use Overview-view or Package explorer for the class just shown. It also helps when you just want to see a referenced class for the code you are working on. Splitting the window in more tab groups isn't the same.
  • Quick-fixes seem to do a better work for my typos


IDEA:

  • Changelists are an extremely cool feature if you are working at different parts of the project you don't want to commit together
  • Snappier than Eclipse (probably because it does no incremental compilation of the entire code base)
  • cmd-D in Changes View is very handy to see what one has done to a file.
  • Much better code smell detection.
  • Nicer UI look and feel (native Mac, I am not talking about some Motif styles etc.
  • Commit dialog is better arranged (probably due to the changelists). But the "show me the last commit messages" is hidden (cmd-m)
  • If one is programming in an EJB-2 project, Idea is able to follow calls into EJBs, as it knows through ejb-jar.xml which interface classes belong to which EJB. This is extremly helpful. It seems that there is a plugin for Eclipse that can do this as well.
  • The "Scope: Problem" view doesn't really work for me. Probably because IDEA does no incremental compile of the sources. If I change a class in the domain (remove a method) then classes in the GUI that access this method are not displayed as having an error until I open them. Eclipse shows me the GUI-classes directly upon save of the domain class.
  • Struts support is nice
  • Editors for HTML and other 'Web technologies' are better than what you find in a plain eclipse (one can download the WTP stuff to get this as well)


The comparision ends 0:0. If both were free then I'd just change around all the time. Using IDEA for hacking and Eclipse to find errors in the code

What do you think? And yes, there is also NetBeans. But this is not used in our project and I don't want to go through the process of setting up the project structure in it.

EJB3 alpha feature from IBM / Bea compliant

While in the past big blue was not too enthusiastic about EJB3, they now have an alpha version of EJB 3 support online.
It only works with WAS 6.1, but neverthless.

This means that EJB3 support is very widthspread now so that it will definitively become a widely accepted standard.
It is also interesting that vendors that haven't really been on the early adopters radar like SAP have one of the first certified implementations.
[update]
Bea announced that they are now also Java EE 5 compliant. See the post on TheServerSide.com. So Java EE and EJB 3 support by the big vendors is now also coming along. As many others I think this is a good thing even if I would have liked JBossAS to be the first.

Monday, February 05, 2007

Amazon finally has it - or not?

After I have my first copy of the EJB3 book since the 23th and I got my box of author copies, even Amazon now lists it as available :)
Man what a tough time waiting :-)

Another look at the Amazon page and it is listed as non available again. This sucks *sigh*

Tuesday, January 23, 2007

Yippie!

I just got a copy of my EJB3 book in my mailbox. It is again a great feeling to actually have the printed copy in the hands.
One can get sort of a feeling when one print it out on the laser printer, but having the real book is still different.

Amazon still shows it as unavailable, but this should change within the next few days. All those who preordered a copy will also soon get it.

I still need to add a few things to the accompanying web page, but I'll do this in the next few days.

Here is a picture with my copy:




Technorati:

Star imports

When pepole asked me why star imports are bad, I didn't really know what to answer. Usually I was talking about parsing time and so.
And actually IDEs like Eclipse or IntelliJ even offer to reorganize individual imports into star imports (I think IntelliJ does this as default).

Today I was doing a bigger refactoring and was moving packages around.
Eclipse is doing a really good job here.

Unfortunately I was getting compile errors afterwards, because the old packages did no longer exist.
The reason behind this is that a refactoring is a textual replacement and not a semantical. Example:

import foo.*;

public class Bar {
Foo f;
}

Now you move foo.Foo to baz.Foo. Eclipse adds the new import baz.Foo statement, but does not remove
foo.*, as is does basically not know that foo.* no longer exists (it could analyze all statements in the class and
automatically remove unused imports afterwards though).

Monday, January 15, 2007

EJB 3 book, talklets at Stuttgart Java User Group

My EJB 3 book will probably be in stores starting on 26th of this month.

Within the next month, the Java User Group Stuttgart will host two EJB 3 talklets

  • 25.1.06: Sun evening - presentations about Java SE 6 and EJB 3.0 from a Sun computers perspective.
  • 15.2.06: Broader look into EJB 3 - presentation about EJB 3, existing Appserver and some tips and tricks on using EJB 3

As usual, everyone is invited to join those sessions.


Technorati:

Tuesday, January 09, 2007

Using a printer on the mac from Windows

Recently I was struggling with printing from Win*. Samba was set up nicely, but Win users were not able to print. I tried lots of different things, but no success.
Googling around brought me to http://members.cox.net/18james/osx_printer_sharing.html#ipp
Especially the section about IPP near the bottom was very helpful. With it I was able to configure the Win machines within a few seconds.
As all newer Win* version support this, I'd say this is the recommended way to print from Win* on a printer attached to a Mac.

Tuesday, January 02, 2007

Samsonite suitcases can break

Do you remember when you first found out that your dad does not know everything or that Santa Claus does not exist?
I hat the same experience when returning from my trip to Philly and saw that two out of three Samsonite suitcases had cracks on the side as you can see here and here.

Unfortunately those suitcases can not be reparied as it seems that single parts are no longer available and the cost of the repair would be higher than that of new suitcases.