Tumblr
Follow my tumblr, its much quicker than blogging and its ultimately going to provide more insightful.
Follow my tumblr, its much quicker than blogging and its ultimately going to provide more insightful.
As is traditional at this time of year, and since this is my first blog post of 2009, I would like to lay down a list of 'New Years Resolutions'. And afterall, who am I to be different, so why not a list of my own? Oh, how convinient, here is such a list:
And if you think you're getting any more content out of this post, you are sadly mistaken, as its 5:30am.
Ok, so I finnaly got fed up of Steve bugging me and I'm writing in here.
What a week. Not that I remember a lot of it after tuesdays all night election party.
I arrived some time after 11pm and after some time spent admiring Tristans Marshall amp stack the drinking began.
After the first few states were announced, it was clear Obama was taking a large lead. This was met with much satisfaction, and more drinking! Then came the great news. California, and Washington were announced, which sealed the 270 votes needed, and the TV announced he was to be the next president. Even more drinking, some chearing, and some clapping was heard!
And then McCain gives his concession speach. Lots of chearing! (and boo-ing)
And then (over-used phrase of this entry..) Obama gives a somewhat excallent speach, making various promises (some of them of a pet dog like nature). Lots of clapping and cheering was heard from 29 Salisbury Road.
At this stage my bottle of rum is empty, and I am searching for some more alcohol to consume. Jim and Tristan can be seen in the above now somewhat blury photograph above.
8am and I am finally gone, back home and asleep. It would be 12 more hours before I awaken from my slumber.
Other things that have been happening:
Airbourne. I dunno, some mediocore 'look at us we copy AC/DC' band. But I was taking photos! Heres the best of the bunch (EOS 40D, Sigma 30mm f/1.4)
So ya.
Other news is slim on the ground, my final year project is well under way (post detailing that soon), and planning is equally under way for the trip backpacking the USA next summer.
Peace.
I'm off on holiday tomorrow, currently dossing around in lovely Gloucetsershire
Its alright here, if a little quiet. I'm flying out from Bristol airport tomorrow afternoon, heading there in the morning so I can take my time getting through customs (I can see a laptop + camera + lenses + 2 phones being a problem in this day and age).
iPhone Jailbreak!
I jailbroke my iPhone last night, using the new PwnageTool, must say, not really much point anymore apart from the activation (now works with my t-mobile contract). Having not had *any* experience with the 1.1.4 software, I can't comment too much, but it is being really slow loading up my iPod playlist (and it's only half of movies). What does really impress me though from a new user point of view is the quality of the video playback. I watched Alfred Hitchcocks North By Northwest on the train journey back here, it was quite a nice experience, and the battery lasted well (took a fair few hours of Super Monkey Ball that evening to drain it down).
Anyway, I will be posting more pictures as and when I take them throughout the next week and a half.
Step 1
Decide the feature you need to implement. In this case I have decided that my DefaultNewsProvider class needs a method for returning a single news item when passed its Id.
Step 2
Open your test file that is responsible for testing the DefaultNewsProvider class (in this case it is in my Keima.Website.Data.Test/NewsProviderTests).
Step 3
Write the test with the expected result. I know that in my database their exists a news item with an Id of "tag:keima.co.uk,2008-06-26:Composer 2.0 Launch", therefore I construct a a test that calls the new GetNewsItem method with the Id, then compares the result to check we have been given the correct item back.
Step 4
We have hit a problem, this method does not actually exist despite having the test for it. So, bring up the code helper and generate the method stub.

Step 5
Test the code. Go on. Watch it fail.

Step 6
Make it pass. In this case its easy, a sort of 'fill in the blanks'. So back to DefaultNewsProvider it is and the implementation is finished off.
Step 7
Re-run the test, watch it pass. All is well, the code has been added, a test has been created, and if in the future the method breaks due to other code changes you will know immediatly.
List of reasons why test driven development can help you:
+ Allows your code to be maintainable, shows the exact point of failure of a program, none of this nasty debugger related stack tracing and breakpointing anymore
+ Forces you to focus upon the expected usage of a function, not the specifics of its implementation. Once you get in to the TDD mindset this allows you to be more concerned with the abstract ideas of how the project should be designed and structured with maintainability in mind as opposed to language specific implementation details (e.g. "I need a function that returns a file handle given a file name or null on an invalid file" rather than "What calls need to be made inside C# to open a file?"
+ At any one time, your code WORKS. Ensuring that code is correctly covered by tests allows you to guarantee that at any one time your project can be built and shipped to a customer.
Your tests are more accurate (bold assumption I know, but here me out). Designing the code by considering how it will be used, and ensuring that tests are constructed at the beginning is much more preferable to designing tests once a project is finished, where code may be missed, meanings of code blocks forgotten about or motivation does not allow for proper testing.
As ever address any personal experiences, observations, suggestions or death threats through the comments.
C# 3.0 is god like. Undeniably. The ability to reduce your code is amazing. Now, I understand the code zealots out there will say "Yeah, but X language has been able to do this for years". Well I don't really care about X language truth be told. The .NET platform is so widely deployed and supported now I don't really see why in 9/10 cases I should use language X.
Consider the following basic example, of calculating an Inverse Distance Weighted plot of signal strength of a given location given a set (plots) of locations and their corresponding signal measure.
The formula is simple, for a given point x, the strength is the sum of wk(x) (one over the distance between the two points to the power of a fixed parameter p) times uk (the value at k) over the sum of wk(x):

![]()
Traditionally, this would yeild the following code:
double sumWkUk = 0; double sumWk = 0; foreach(Location loc in plots) { sumWkUk += wk(x, loc) * loc.Value; sumWk += wk(x, loc); } x.Value = sumWkUk / sumWk;
Not too much code, but this can be reduced a lot. Consider using the C# 3.0 sum operator:
x.Value = plots.Sum(xk => wk(x, xk) * xk.Value) / plots.Sum(xk => wk(x, xk));
Wait, what, did we just reduce that to ONE LINE of code? Shit.
Are you listening Java? No, thought not, no wonder you are still losing the great programming race (or maybe I am just bitter).
Summary:
- Less code to maintain is good.
- Gives us less chances for errors
- makes it easier to read and understand (in this case at least)
I dont really know why everyone bashes Microsoft so, I mean after all, they gave me a free lunch, and free ice cream! Oh, and all the free stuff in this picture. Well, apart from the book on LINQ and C# 3, but then I did get those at 40% off retail. Which is pretty reasonable when you think about it.
Wait, maybe I need to backtrack and explain exactly WHY I got free ice cream. I went to the MSDN Roadshow, its basically a tour where they give presentations on four key topics to do with MSDN, and generally Microsoft software development. The bill was pretty interesting today, the line up was something like:
Here we are, nearly a year since the last update.
Wait, where is the last update?
Well I am not entirely sure where it went, but my Wordpress fell apart, so here we are, fresh install (must say I am rather impressed with the whole Wordpress 2.5 thing, its certainly a setup up from 2.2).
Anyway, moving swiftly onwards...
I've got to say, things have been fucking boring since the last update. However, my interest in taking my camera around and taking copious amounts of photos has somewhat increased (although the corresponding increase in quality of the photos is somewhat debatable).
My latest addition to the set of camera accessories is the much-loved Sigma 10-20mm, which I picked up from Jessops on Monday (OK, so I can get it a lot cheaper online, but after various experiences with online shopping I don't really trust this anymore, but I'll see when we get to the next planned (my first piece of L glass, the 70-200mm f/4, but not until I get paid). For my first HSM motored lense, I must say the focus is much quicker and quieter than my other Sigma glass (the 24-70 f/2.8, not that it is that slow, but it is fucking loud).
So, without further ado, heres a few shots I took down the bay with OJ on Monday.
Thats all for now really.