HTC hero / Android review

Last month, I got an HTC hero phone running Android to replace my ancient o2 ice which had started to crash whenever a phone call ended. I decided to ditch o2 as well due to problems with their data network ever since the iPhone came out.

The hero is slightly faster than my old phone, although it is occasionally prone to hanging, mainly during sync to Google by the looks of things. The Google side seems to be the weakest part of the phone. The mail and contacts have stopped syncing with Google, but the HTC email via IMAP, Facebook, Flickr and other sync are still working perfectly.

The camera is good quality (see the attached photo) but without a flash, don’t bother in dark conditions.

I’ve seen reviews that talk about poor battery life, and it can run low fairly quickly under heavy usage, but the stand-by time is fine, now that I’ve turned off always-on mobile internet in favour of WiFi.

There’s a number of good apps in the market, including wpToGo that I’m using to write this, the last.fm app, and the games Abduction and Bonsai Blast.

The soft keyboard works well, and is much easier to use than my wife’s acer aspire one once I learnt to trust the auto-correct, type in landscape and to avoid the settings key which is annoyingly close to the comma.

There are some flaws which would put some people off, and I think they’d kill the experience for me on a stock Android phone. The HTC extensions make for a much nicer experience than the g1 I’ve tried, but the primary problems all seem to be software related, so I’ll have to update my thoughts once the new HTC firmware and Android 1.6 are ready and installed.

For now, it’s worth checking out, but don’t break your contract for one.

Leave a Comment

July Tech Meetup Glasgow: The Beauty of Code – Techmeetup

The video for my Genetic Algorithm talk has been posted to the TechMeetup blog for those who want to watch it (and can withstand my stuttering ;-) ). If you want to grab the original presentation itself, it’s in the repository for the C++ template project: geneticalgorithmtemplates \ talks and presentations \ techmeetup glasgow 20090701

Craig Nicol on Genetic Algorithms

Craig provided a high-level introduction to what genetic algorithms are and how they can be used.Genetic algorithms is a search technique used in computing to find exact or approximate solutions to optimization and search problems. As the name suggests, they’re inspired by the process of evolution in the natural world. The typical genetic algorithm consists of a genetic representation of the solution domain, and a fitness function for evaluating the solution domain.Craig used example to clarify the topic and his presentation stimulated an interesting discussion of potential applications of the technology.

July Tech Meetup Glasgow: The Beauty of Code – Techmeetup

Craig Nicol talks about Genetic Algorithms from TechMeetup on Vimeo.

Hope to see you at the techmeetup talk tonight.

Blogged with the Flock Browser

Leave a Comment

Horn – how to resolve a circular build dependency

Recently I’ve been working with Paul Cowan and others on the Horn build project (Horn source is on Google Code). Horn is a .Net build tool in a similar vein to Portage from Gentoo, Ruby Gems or Python Eggs, in that it provides a simple interface to search, fetch, build and install a variety of open source projects. A few weekends ago, the two of us tackled one of the biggest blockers to the project – namely the interdependency between Castle and NHibernate. Paul’s take on this can be found here:

The net result is that we are able to build Nhibernate and the relevant parts of castle.

The Software Simpleton: Dividing The Castle

As I originally wrote the dependency resolution code for horn I thought I should add some thoughts on this, particularly with the problems between Castle and NHibernate.

At the basic level, a dependency exists whenever a project uses another for functionality. For horn itself, these dependencies include castle and log4net, so in order to successfully build horn, we need to first build castle and log4net. We use a tree structure to represent this, with the root being the package you want (e.g. horn), and the children of each node being the projects it depends on, down to the leaves that don’t depend on any other package. To determine build order, we do a breadth first traversal of the tree so that all the leaves are built first, followed by their parents, and so on. The results of each build are copied into a specified location so that the parent package has access to the built assemblies.

The tree structure allows us to determine circular dependencies as it is being constructed by seeing if any package depends on itself directly or via other packages. We simply check to see if the package is a parent of itself in the tree.

For full details, see Paul’s post above, but the problem with Castle and NHibernate comes from the fact that Castle depends on NHibernate and NHibernate depends on Castle, so we end up with a circular reference. To resolve the issue in this case, as described in the post above, we had to split the Castle.DynamicProxy2 library out of the Castle package into its own package, with a custom build file. NHibernate now has Castle.DynamicProxy2 as its dependency, which does not lead to a circular reference, and the rest of Castle depends on NHibernate.

The project is gearing up for a beta release, so if you fancy helping to batter the software into shape, with bug fixing, testing, writing package definitions or anything else, feel free to jump on over and lend a hand. No guarantees or warranties on it yet, but I’ll be sure to post again once the public beta is ready.

Blogged with the Flock Browser

Leave a Comment

Genetic Algorithm Templates

I had a great time at the Tech MeetUp (@techmeetup) in Glasgow this week. If you want to meet up with other tech minded folk in Scotland, it’s definitely worth checking out. See the details at the end of this post.

At the meeting this week, I got talking to a few folk (including John Gallagher who gave a great talk) about AI and Genetic Algorithms. This inspired me to dig out my old experimental code for doing GAs using C++ Templates. The code’s very rough and ready, and it was written long before I discovered TDD or subversion, but it should be standards-compliant, and it compiles in the latest GCC (I can’t vouch for other compilers, if you try it, let me know). As it’s a source-code library, you’ll have to compile it yourself, but if you don’t know how to use a compiler, you’re probably reading the wrong blog anyway. I will be tidying up the code and creating a wish list as I get the chance, but I’m throwing it out there in case it’s useful to anyone.

If you’re interested, check it out at the link below and let me know what you think.

Genetic Algorithm Templates

If you’re interested in Tech MeetUp, you can see videos from previous talks at their website

The Tech MeetUp is the informal opportunity to meet other developers and tech companies, to showcase your hacks or projects, and to find out what’s happening around us. Help build the tech community – set up a profile and come along to a Tech MeetUp.

Home – Techmeetup

You can find out about upcoming meetings on their mailing list

Description: An easily accessible and friendly community of tech minds, skills and startups around Scotland and Northern UK.


Tech Meetup | Google Groups

Blogged with the Flock Browser

Leave a Comment

Inbox Zero

I’ve been trying out the inbox zero philosophy (Google Video : Inbox Zero) for a while to keep on top of my email, and I’ve got it working quite well at work (Outlook) and in my personal GMail account. Since I’ve had quite a deluge of email recently for various reasons, I thought I’d share some of my thoughts on it.

The most important thing I’ve noticed is that it’s not just about emptying your inbox, it’s about managing what gets in there in the first place. In order to do this, I make sure I filter out anything that doesn’t need to be read immediately (sorry Red Gate, the newsletters are a great after-lunch read but you’re not *that* important). You can see ideas for folder names or other ways of marking emails via the links above (but folders and stars/flags are worth using). I can then sort through the filtered emails when I have some spare time, such as during a compile, or when it becomes relevant to a conversation I’m having.

What all this means is the pop-ups from Outlook or Pidgin only show me the stuff that’s worth interupting my flow for, so I can monitor my email without being distracted by information overload, and I can either deal with it immediately or add it to my ToDo list or archive as appropriate.

I can then do some pre-emptive multitasking by setting aside time each day or week to look through the filtered stuff (e.g. just before/after lunch, start/end of day, depending on my work load).

The most important thing I’ve discovered is this :

It strikes me though that the most important thing that generalises a lot of the tips is this: Avoid multitasking.

Productivity – Vox

If it’s not something you’ve tried before, it’s definitely worth checking out.

Blogged with the Flock Browser

Leave a Comment

Genetic Algorithm Templates

I had a great time at the Tech MeetUp (@techmeetup) in Glasgow this week. If you want to meet up with other tech minded folk in Scotland, it’s definitely worth checking out. See the details at the end of this post.

At the meeting this week, I got talking to a few folk (including John Gallagher who gave a great talk) about AI and Genetic Algorithms. This inspired me to dig out my old experimental code for doing GAs using C++ Templates. The code’s very rough and ready, and it was written long before I discovered TDD or subversion, but it should be standards-compliant, and it compiles in the latest GCC (I can’t vouch for other compilers, if you try it, let me know). As it’s a source-code library, you’ll have to compile it yourself, but if you don’t know how to use a compiler, you’re probably reading the wrong blog anyway. I will be tidying up the code and creating a wish list as I get the chance, but I’m throwing it out there in case it’s useful to anyone.

If you’re interested, check it out at the link below and let me know what you think.

Genetic Algorithm Templates

If you’re interested in Tech MeetUp, you can see videos from previous talks at their website

The Tech MeetUp is the informal opportunity to meet other developers and tech companies, to showcase your hacks or projects, and to find out what’s happening around us. Help build the tech community – set up a profile and come along to a Tech MeetUp.

Home – Techmeetup

You can find out about upcoming meetings on their mailing list

Description: An easily accessible and friendly community of tech minds, skills and startups around Scotland and Northern UK.


Tech Meetup | Google Groups

Blogged with the Flock Browser

Leave a Comment

DDDS2 : TDD? I Don’t Have Time round-up

As a final sign-off on my talk, before it’s released fully to the world, I wanted to discuss the feedback I got and direct people to other thoughts on TDD. It’s all in the interests of openness, so feel free to add any further comments.

First of all, I would like to say that my slide decks and code are now available on the Developer Day Scotland website (Thanks Colin):

Speaker: Craig Nicol
Title: TDD – I don’t have time

2009 Slide Decks – Developer Day Scotland

Feedback

Overall the feedback was fairly positive, and it seems that a lot of people got a good sense of TDD from the demo, although I accept that the pacing was a bit wrong and it was bad form to end the session with some failing test. Still there were some good questions in the Q&A so I’d rather have finished a couple of minutes earlier and had more questions than push on with the coding. I few people suggested that fewer slides and more code would have been good. I’m all for that, I’m a nervous speaker, and it’s been a while since I last presented, so more typing and less speaking works for me, especially when it gets interactive.

I do accept that I probably spoke too fast, and it’s not the only time I’ve been told that, but I hope that will resolve itself with a bit of practice and some better breathing.

For the person who wanted a better comparison of tools, I wish I’d had the time for that, but all the tools worth using have free trials, so have a look at this list from my previous post and try them out yourself:

For the person who wanted a take home message to answer the point over “I don’t have time to test”, I think I mis-sold the talk a little, and I should have made the mythbusting part more prominent than my original catchy title. I hope I answered a few points about why it can save you time in the long run, but my apologies if I did mis-lead you.

Thanks to Richard for this review. Glad you found the live coding helpful.

10:45“TDD? I don’t have time” by Craig Nicol Craig talked about TDD from baby steps and I gained a lot from it. Was a real shame that the tests he wrote ultimately didn’t pass but the promise of code to finish off gives me something to dig into!

irtimaled: My #dddscot Sessions

Other Resources

If the talk has whetted your appetite for TDD, have a look at the books linked from my previous post and have a look at these three links to help you join the discussion.

TDD Tests are not Unit Tests
Let’s start with the distinction between TDD tests and unit tests. On the surface, TDD tests are very similar to unit tests. This is not surprising, since you use a unit testing framework such as Visual Studio Tests or NUnit to create both types of tests.

TDD Tests are not Unit Tests

good design is far more beneficial and important than the practice of unit testing. However, good design + TDD/Behavioral Driven Development/Acceptance Test Driven Development? That’s where the real rewards happen. Don’t settle for mediocre efforts. Do both and reap the rewards.

Design and Testability – Jeremy D. Miller — The Shade Tree Developer – CodeBetter.Com – Stuff you need to Code Better!

If you do want to dive into TDD, you should also look at Behaviour Driven Design (BDD). I’ve heard it called TDD without the T-word, or an extension and refinement of the philosophy, but however you see it, if TDD is your thing, you owe it to yourself to have a look at the BDD road to design and testability. This link has a lot of good onward links, and it’s a podcast so you can listen while you work, or on the bus. It’s a bit more interesting than Eurovision.

This week on Herding Code, Scott Bellware educates and entertain as only he can. Scott talks about Behavior Driven Development (BDD), Test Driven Development (TDD) and Lean Software Development, gets “all preachy” and donates to the show a nearly endless batch of outtakes.

Episode 42: Scott Bellware on BDD and Lean Development | Herding Code

Round-Up

Thanks again to all the organizers and attendees of Developer Day Scotland.I’ll shut up about TDD for a bit, unless anyone’s got any questions. If you decide you want to use this presentation, it’s open via the Creative Commons license, but please let me know, as it’s interesting to see where it goes.

Blogged with the Flock Browser

Tags: , , , , , ,

Leave a Comment

DDD Scotland roundup : TDD talk available for download

Thanks to everyone who attended my TDD talk at the weekend. I’ve already got some good feedback, and I accept that maybe I didn’t have a clear enough title or take home message. It was about more than just not having enough time, but the take home message of TDD should be that the overall cost of development will depend much less on debugger and tool performance and much more on the quality of your tests, which is something you have far more control over.

The final cut of my presentation and code is available via the ScotAlt.Net code repository, and it will be available from the ddds site. It is also current available at: tdd-i-dont-have-time.zip

I’m still following the #dddscot and #tdd streams on twitter if anyone wants to send feedback via twitter, or post a comment here.

If anyone can make it to Glasgow city centre this week to talk development, you’ve very welcome to join us at the ScotAlt.Net meeting in Waxy O’Conner’s in Glasgow this Tuesday 7th May at 7:30.

For anyone at my alt.net or horn grok talk, or who was interested in the links at the end of my talk, here they are again in clickable form :

Amazon referal links for the books referenced in the talk, other book sellers are available:

Blogged with the Flock Browser

Leave a Comment

Developer Day Scotland 2 is tomorrow

OK. Slides are written, code is prepared. Laptop is charged up. Hopefully I’m ready for tomorrow. The final cut of the presentation is quite different from the one linked in my last post. I hope to be able to get it up for sharing on Google Docs, but it is available via the ScotAlt.Net code repository, and it will be available from the ddds site.

I’ll be following the #dddscot and #tdd streams on twitter if anyone wants to send feedback on the day (I may be nervous now, but I’m always willing to learn). I may not be able to respond to the feedback straight away, but It’s always gratefully received.

Hope to see lots of folk there, and be sure to bring your questions. If I can’t answer them, I’m sure someone in the audience can, or bring them along to the ScotAlt.Net meeting in Waxy O’Conner’s in Glasgow this Tuesday 7th May at 7:30.

Blogged with the Flock Browser

Leave a Comment

Developer Day Scotland : Talk refactoring

An update for anyone following this. I’ve decided to refactor the talk linked to from my last post. I’ve created three sections to try and create a better flow and justification. The first act sells the idea of testing itself. The second act looks at the test-first approach, and the final act looks at Test-Driven Design as a methodology that builds on the the ideas of testing and test-first. I’ll post the updated talk up once I’ve had a chance to batter more shape into it. Hopefully the talk will now build up, and people who only pay attention for the first 10 minutes will hear enough to keep them interested for the next 10, and then the next 10… (Yes, I did enjoy proof by induction thank you)

Blogged with the Flock Browser

Leave a Comment

Older Posts »