GridPulse

as stimulating as black coffee and just as hard to sleep after.

Archive for the ‘Development’ Category

Why releasing new versions is like shaving

leave a comment

Some time ago I was talking about the similarities of shaving and product releasing, especially the impact of release frequency on velocity.

Returning to this idea, i realized that,increased releasing or increased deployment frequency has a beneficial effect on the overall velocity and quality of the release or deployment, while also improving team morale.

Because of this, I’ve been trying to create and respect strict deployment schedules, matching every development or bug-fixing iteration, namely(and usually)… every week.

It’s hard at the beginning and the first 3-4 iterations are tough (testing and deployment continues through the night because of inefficient planning and scoping) but after the team gets into the rhythm releasing and deployment becomes a trivial and actually fun activity.

Frequent release and deployment cycles also have a tendency of raising customer trust levels and wining some points for the development team, so release fast, release often, release good… and you’ll constantly get better results.

Written by Bogdan

April 21st, 2010 at 9:59 pm

The uncertain future of GUtil!

2 comments

I think that it’s about time for this post so here goes.

Brief history
GUtil! was born sometime in 2006 and I released the first version (GUtil! 0.4.9.5) on November 3rd 2006, for Firefox 1.5.

At first it was something that I used to speed up access to the Google tools that I was using so I only had a couple of links. Then somebody asked for it and also asked me to add some more things that he used. So I did. And I published it. And more people wanted it. That is all.

Current status
I haven’t touched the code since July 30, 2009.I’m not using it anymore. I have restricted my Google usage to Google apps, Picasa and Reader.I don’t care about anything else, nor do I have the time to care about anything else.

Some statistics:
- GUtil! has been downloaded 240,651 times
- GUtil! is part of 198 collections on AMO
- GUtil! has 8680 active daily users down from more than 12000

Future
Well, here comes the bad news.
I’m not updating it anymore. I don’t have the time, the patience or the interest to update GUtil! anymore.

If you want to work on it, it’s always been open so go get the source and have a whack!
http://code.google.com/p/gutil-firefox-extension/

All the best to whoever wants to continue with GUtil!

Written by Bogdan

February 22nd, 2010 at 9:36 pm

Posted in GUtil,Open Source

Get all the types contained in all the assemblies loaded, filtered by namespace

leave a comment

This quick snippet will give you all the types declared in all the assemblies loaded, filtered by namespace.

List types = new List();
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();

foreach (Assembly asm in assemblies)
{
        IEnumerable asmTypes = from t in asm.GetTypes()
              where t.IsClass
                && (t.Namespace != null && t.Namespace.StartsWith(targetNamespace))
              select t;
        types.AddRange(asmTypes);
}

I actually got to this point because of the way NUnit wraps an assembly in another AppDomain.

The snippet need Linq so it’s for 3.5 or newer.

Written by Bogdan

October 29th, 2009 at 9:05 am

How to solve BindException: Address already in use: JVM_Bind in JBoss on Windows

leave a comment

 

Sometimes, you’re just having a wonderful day and suddenly the worst just happens:

[ServiceController] Problem starting service jboss:service=Naming
    java.rmi.server.ExportException: Port already in use: 1198; nested exception is:
    java.net.BindException: Address already in use: JVM_Bind
    at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:243)
    ............

The regular solution is to check if the port is actually used. So fire up a command prompt and netstat –aon.

If you find the port, see what process is using it and kill it ;) .

If you don’t see the port you can reserve it by following the information in KB812873 – http://support.microsoft.com/kb/812873.

My ReservedPorts entry contains:

1433-1434

1097-1200

4543-4545

That should fix it. The bad thing is that it requires a restart.

Written by Bogdan

October 28th, 2009 at 1:09 pm

Posted in Development,Java

Tagged with ,

NanoDI, a small .NET Dependency Injection container

leave a comment

Some time ago I worked on some projects using ASP.NET that were mostly ASPX with some specialized ASHX’s (c# behind the scenes).
The handlers just generated some graphs or exported Excel files, regular code monkey style, no architecture, no plan, just write it fast – quick dirty hack, quick buck – and I always thought that these guys that accept .NET inferior stuff deserve what they get.

As time flew by, I started to get a taste of what .NET is all about, luring me to the dark side.

engine1

Photo by B-tal

At the beginning I felt like “this is what evil must taste like”, but I quickly got accustomed to all the new things and now, I’m playing with .NET stuff again, mostly C#, trying to level my skills and having a lot of fun in the process. I built things like the quick and dirty multi font viewer, buggy and poor, mostly because nobody uses it.

Now, I wanted to start something bigger, and nicer (I won’t say what) and I felt that I needed to do it the right way, you know, MAINTAINABLE.
I started looking for a DI container and I started with Spring and Pico. I’m pretty accustomed to pico and I’ve been using Spring since version 1 so I though I’d give them a try. Wrong, strange, alien, weird, huge, EVIL.

For what I wanted to do it really seemed this way. How’s about something that is 10 megs big because spring and dependencies is 7 megs big. And I’m not even going to use most of it, I just want some plain dependency injection and maybe some tooling , like fast i18n.

Problem solved, evil destroyed
I found the solution! Why not have some fun AND learn the inner workings of C# and .Net? Why not build my own? So I did!

NanoDI is a small dependency injection container and tooling for .NET C# projects that are small or that do not need the complexity of bigger IoC solutions.

NanoDI‘s goal is to be small, fast and clean.

Links:
Nano Dependency Injection home
NanoDI Ohloh.net project page
NanoDI Google Code project

The code is junky by my standards but I’m slowly refactoring as my c# skills get better. Next week I’m going to finish scoping and start working on proxies and interceptors. You can help too!

Have a taste, have fun!

Written by Bogdan

September 10th, 2009 at 11:50 pm