Preventative Battery Maintenance

Over the last few days, I’ve been putting my aging battery in my ASUS M51SN (now some 2.5+ years old) through some torture of plugin / plugout for watching vids/podcasts that incidentally almost drain the battery whilst I clean the house.  I also use it briefly on the way to work or in my lunch hour (10-30 min stints)

After coming out of hibernation this evening at home, after having a day of sporadic use that started with a couple of 10 min runs in the morning followed by a 10 min run in the afternoon, the battery Icon had a cross advising me that my battery was at 10% and that I should consider replacing my battery.

I came across the following forum

Windows 7 and the battery error “consider replacing your battery”

and whilst it is easy to see a lot of people complaining that there is something wrong with Windows, I can pretty much tell based on the change in behaviour & my previous experience with laptop batteries is that this could be the last legs of the laptop battery.

Nevertheless, the forum did teach me a windows command powercfg -energy to get the used maH and a whole lot of other useful diagnostics about where the battery power is going.  Something I used to rely on third party tools to tell me.  One trick others seemed to try which I hope will work for me is a full discharge and recharge.  Repeating this cycle a few times seems to improve the level that the battery charges up to.  I’ll update this blog with news if that works

HTML 5 Intro

Of all the recent HTML 5 noise of late, and some pretty flashy webapps to be demoed from them, I got a little concerned that the HTML we know and love was going to turn into some RIA scripting beast.  Alas there is not much to be concerned with so far, this little tutorial starts with very small baby steps that people with limited CSS, HTML and JS exposure can appreciate.

Starting with a cool intro on the geolocation feature, then diverting to a javascript library to make code that tests for HTML 5 features more readable, its currently up to a modest part 3, talking about the new input types in the classic form element. 

Testing Presentations

Their has been a presentation I watched last year that absolutely changed my opinion on how I tested and how I designed.  It was one of those presentations that just made sense and I cant believe I haven’t blogged about it until now.

Integration Tests are a Scam by Joe Rainsberger

This was my favourite presentation from last year. It talks about writing the correct type of unit tests to get get fast results and reduce the need for slower integration tests that are generally slower are require a lot of maintenance. He makes a compelling argument about the number of tests in your system don’t improve the sense of security you get from your tests by the same amount. So he talks about what needs to be unit tested from the contract class and the opposite collaborator class and how doing so gives you a better picture of what tests you need to give you a sense of security with quick feedback. The blurb explains it better

Integration tests are a scam. You’re probably writing 2-5% of the integration tests you need to test thoroughly. You’re probably duplicating unit tests all over the place. Your integration tests probably duplicate each other all over the place. When an integration test fails, who knows what’s broken? Learn the two-pronged attack that solves the problem: collaboration tests and contract tests.


TDD of Asynchronous Systems

This presentation by the author of a new book, “growing object oriented software, guided by tests” Nat Pryce, which talks about testing at the integration/functional level and techniques to get around all the painful ‘flickering tests’ & ‘false positives’ issues that occur when you have them. The examples talk about testing legacy systems, swing gui’s and JMS queues.

One of the key ideas is that one must find a point to synchronise on before executing the assertions and those assertions must wait (and retry if not true) until the state has changed or a timeout occurs (and the test then fails)

As a user of UISpec4j with its Assertions that have a timeout, and some perilious test code when someone innocently mixed junit assertions with a UI test, I could relate to this really well.

Seven Groovy usage patterns for Java developers

A colleague at my work recently added a Groovy console into one of our applications and it was this that reminded me of the ‘keyhole surgery’ pattern that I watched in a presentation last year by Groovy In Action author Dierk Konig last year…

Seven Groovy usage patterns for Java developers

Dierk König, Canoo Engineering, Switzerland

Groovy is the new dynamic language for the Java platform that any Java?project can benefit from.?Learn when and how you can use Groovy as a “Super Glue”, heat up your Java?application with a “Melted Core”, alleviate pains with “Keyhole Surgery”,?adapt it to local needs with “Smart Configuration”, let it achieve?”Unlimited Openness”, enjoy subserving “House-Elf Scripts”, and provide?early feedback from a “Prototype”.

via Viddler.com – Øredev 2008 – Cool Languages – Seven Groovy usage patterns for Java developers – Uploaded by oredev.

How to Start Getting Professional about Software Development

A great blog that simply states management philosophy and the flak that you may experience trying to apply, sometimes simple, dev practices.  It relates to keeping yourself grounded, and patient, and trying out new practices where you can.  The final point in the blog which I’m going to paste here is pure gold.

The grass is always greener on the other side. Switching jobs might be the right thing to do when you get a great offer, or if your current job resists all attempts to change it to the better. But consider this: When you have a real interesting software development position to fill. Whom would you consider? The guy complaining about the last job where he wasn’t allowed to work professionally and therefore hasn’t any real experience in writing tests, never worked with a CI system or a build tool. Or would you prefer someone who introduced testing into a project team, show initiative by setting up hudson on his own machine and is now looking for an employer who supports this kind of attitude. I know what kind of coworker I am looking for. So make sure you tried to make your job a better one, before you leave.

Schauderhaft » How to Start Getting Professional about Software Development.

Now reading


JavaFX 1.2 Application Development Cookbook The JavaFX Application Dev Cookbook arrived for me to review today.

It promises to provide some worked examples of using JavaFX in the real world, which is always handy.  After all, why re-invent the wheel? I’m keen to see how it fares in the correctfulness and usefulness of its samples, as well as how they have weathered the newest JavaFX 1.3, and weather the authors site addresses any issues substantially.

Keep your eyes peeled for a review, real soon now.

Tempus library for programmatic thread dumps

Turns out doing a CTRL+Break (or equivalent kill <signal> <pid> on *nix) programmatically is a bit harder than I thought.  This thread talks about ways to do it, but the easiest was to use the Tempus library which has a lot of threading tools, including a simple

ThreadDump.dumpThreads(yourPrintstream);

to get a stacktrace of running threads in a current environment.

Mongo DB

Watched this presentation about how Sourceforge chose MongoDB for their customer facing webapp.  You know, the one you go to download Azuerus and all those open source apps from Winking smile

Sourceforge chose Mongo because it offered them high read performance although write was sucky but not needed for their app.  They learnt that even though you can put things in one document, you didnt need to retrieve everything all at once and how they easily used up all network bandwidth between the web and mongo server.  Additionally they found they didnt need memcache in between their persistence and the webservers as Mongo was fast enough to serve out the data as it was.