If you’ve ever wondered why some people have a picture next to their name when they leave a comment, then wonder no more! You too can join the elite rank of the pictured cool, simply by getting yourself a gravatar!
It’s free, it only takes a minute or two, and after that, every time you leave a comment on a gravatar-enabled WordPress blog (gerrod.com, stickfly.com, harveysathome, etc) then you’ll see your smiling face looking back at you. Best of all, they don’t need any personal information from you – all it takes is an e-mail address and a password! (And a photo, of course!)
It may take a day or two for your photo to filter down through the tubes, but if you build it, they will come…
Go on! What are you waiting for?
I’ve had a moblog account since August, 2004, but today is the first time I’ve actually sent a photo to it via my mobile phone. See, I couldn’t do it with my Nokia 6610 because it didn’t have a camera built into it. And then when I got my Razr, though I had overcome the camera problem, my mobile provider told me I wasn’t elligible to send MMS message or e-mails (since I’m on a pre-paid plan).
Well, shows you what the reps at T-Mobile stores know – nothing! Sure enough, MMS and e-mails work perfectly, it’s just a matter of finding the right settings. So now that I have it up and running (and it only costs 25c to send a message), expect more frequent moblog updates! I’m totally stoked!!
Since it’s largely based on information already freely available on the web, I’ve decided to share it with anyone interested – so you can download it here. (Disclaimer: Use it at your own risk! Also, I do not claim to be the author of all of the code, like I said it’s based largely on information already available for free, elsewhere on the web). Keep reading for a usage example.
Also, the target attribute is invalid in strict doctypes which immediately prevents my site from qualifying. So rather than go through and remove all my target=”_blank” attributes, I’ve changed to XHTML 1.0 transitional.
I only did a half-day at work today. For the second half, I headed down to Union Square, where Microsoft were holding an MSDN event at the movie cinemas. No, it wasn’t a movie, it was some bird preaching why everyone should be using .NET v2 to develop their web apps.
Admittedly, a lot of what she said wasn’t new to me, as I’ve been using beta versions of .NET v2 for almost a year. Still, I’m somewhat surprised at how hard Microsoft are pushing their new data source controls – or whatever they’re called – which effectively means you bypass the traditional data access layer.
Anyway – somewhat late turning up to the event, I was forced to sit in the 2nd row, right near the end. Turns out that sitting in the 2nd row for a presentation is no better than sitting in the 2nd row for a movie – lots of neck craning. Being near the end, I couldn’t help but notice that I had to stand up to let people past in the narrow aisles as required.
So I was struck with a question – is it better to be the guy on the aisle, who has to keep getting up to let people past, or the dude in the middle, who doesn’t have to get up for anyone, but instead has to exuse their way past the entire row? Tough call.
It’s been a frustrating night. Well, not the whole night; Kristy and I dined at a (very) local pub called Murphys, where I had some of the best pork ribs I’ve ever tasted. Not only did all the meat fall entirely off the bone (hence no ribsy fingers), but the meat was absolutely delicious – it tasted more like roast pork than rib pork. Amazing!
Anyway, the frustrations. I recently upgraded my iTunes to Version 5. Let me state right up front here that I hate iTunes; especially I hate that when you install iTunes, you also have to install QuickTime (which I also hate). In total, that’s 3 extra services that start at boot time, and hang around chewing up my precious memory. Well, with iTunes 5 the story is even worse; Apple, in all their wisdom, have decided that they will also install Bonjour – some type of networking multimedia protocol that I don’t want – along with iTunes and QuickTime. Thanks for nothing!
So why don’t I ditch iTunes, you ask? Because up until now, it has been the easiest (albeit the only for a long time) way to sync your music collection with your iPod. But – thankfully – there is now a plugin for Winamp (my very much preferred media player) which you can use instead. To quote the winamp staff:
Kiss iTunes goodbye. Send music to and from your iPod directly from the Winamp Media Library. Nothing could be easier.
Sounds perfect to me! I’ll give it a whirl tomorrow.
The other major frustration that I’ve had tonight concerns NHibernate, and Nullable Types. Why-oh-why they don’t just use the magic null value approach is beyond me. Instead, you have to use one of the Contrib libraries, which I’ve had no end of trouble getting working. At 11 PM I decided it had beaten me, so with a post to the forum, I’m off to bed as a very disgruntled man.
I’ve been playing around with NHibernate for the last few days, as it’s a product I’ve been curious about for some time. If the name sounds familiar, it should – it follows in the tradition of NAnt, NUnit and others being a port from an existing Java product.
So what is it? Basically (very basically!) it’s an Object-Relational mapper – providing you with “automatic” translation between your domain objects and your database tables. Of course, it’s much more than that – but lets keep it simple for the moment. OR mappers aren’t a new concept – they’ve been around for ages in fact – but recently it seems like they’re a dime a dozen. Maybe it’s just that I’ve only recently taken notice of how many there are. But whatever the reason, they’re definitely a good thing – anything that saves me writing a whole bunch of data access code and stored procedures is definitely a good thing.
Anyway, here’s my experience with NHibernate so far. Remember that it’s still in beta (last release is 0.9.1) so it still has a little way to go before being a fully fledged release.
- It’s fast. Real fast. My experience thus far is that there is no noticable difference in performance between using NHibernate compared to traditional stored procedures and a data access layer. (Disclaimer: I haven’t done any heavy-duty load testing, this is more of an observation.)
- It’s super flexible. Not only does it support a whole bunch of databases that I’ve never even heard of, but it has it’s own built-in query language (HQL) which is very powerful and fairly straight-forward to learn (it’s designed to mimic SQL).
- It’s based on Hibernate, which has been in development for ages. This basically means it has a huge leg-up on other OR mappers which are written from scratch.
- Documentation is scratchy at best. This will no doubt improve with time, and as the product comes closer to release – but for the moment, trying to piece together documentation is often a nightmare. Sure, you can reference the Hibernate documentation as it is mostly the same, but not all the features from Hibernate have been implemented in NHibernate yet (and gosh darn, if it isn’t the feature that you’re trying to use right now…)
- It’s not easy to learn. Especially in the realms of ASP.NET programming. For example, there’s no “best practice” to recommend the best way of handling NHibernate sessions over a request. Sure, there’s lots of debate and examples from various ways that people have done it – but for a n00b, that just makes it difficult to work out which way to go. (FWIW: I went with session-per-request, opened by an AbstractService and closed using a HttpModule (with some tweaking)).
- And the kicker – it doesn’t support outer joins against an access database. Given that the code is open-source though, I’m doing my best to fix this one.
Overall, I’d highly recommend NHibernate, and it is quickly becoming my object-mapper of choice. But be warned; the learning curve is steep, and often very frustrating! I still have a way to go, but at least that “light at the end of the tunnel” is starting to get a bit brighter now.
After a long and patient wait, ReSharper 2.0 has finally gone EAP. Resharper is a utility made by the good folk at JetBrains, which brings a lot of functionality available from their award winning Java IDE to the sadly lacking Visual Studio .NET.
Though it’s still in Early Access (hence probably quite buggy) I just can’t wait to see how good it is… stay tuned for updates!
Update: I’ve been using it for a few hours now. Firstly, it’s so nice to have all the features of ReSharper again! But this release is fairly buggy, at least for me (in VS2005) anyway -
- Has a lot of problems navigating to errors via the Error List
- Shortcut keys break after an exception occurs
- The colours are horrible (this one is a known issue at least)
- Lots of problems with Generics
My overall evaluation: If you’re already familar with ReSharper and know what it does, how it works, etc. and you’re developing in VS2005 and just can’t wait any longer, then install away – but be ready for lots of exception boxes. If you’re a n00b, then wait a few more weeks for a more stable release. If you’re using VS2003, then I’d probably stick with the stable 1.5 release.
Update 2: I’ve had to uninstall build 201, because it kept throwing OutOfMemory exceptions when I was trying to maintain my ASP.NET pages. Looks like ReSharper 2.0 is still a fair way off, but given that this is the first release to the EAP I’m not entirely surprised that it’s so buggy. I’m sure that the Jetbrains folk are benefiting hugely from having such a wide “test audience”; and to their credit, they are very timely with their responses to newly submitted bugs (they have already address most of the bugs that I reported yesterday).
I’m very much looking forward to the next build.
ASP.NET v2 has really ramped up their support for mobile web pages, with a whole host of new mobile web controls, and much better development support built into Whidbey. And, given that DiscountASP.NET is currently giving away free Beta 2 hosting to all account holders, I figured it was high-time for me to write a mobile web app!
So it’s a very small project (only a single web page), but very helpful to you Scrabble players out there. Ever been stuck with a rather unhelpful hand of letters, and barely anywhere to move? I hate that! Well, fear no more – ScrabbleSleuth is for you.
Basically, you type in the letters that are in your hand, and a pattern to match against. For example, the pattern “r.b..” shows you what 5 letter words you could make that start with an “r” and have a “b” as the 3rd letter. Handy, huh? So go and check it out, and score yourself some huge points!
N.B. 1: The page will work for regular browsers as well, so don’t be shy!
N.B. 2: The URL is only temporary; whilst .NET v2 is in beta, that’s the address assigned by the hosting company. Should be good until around September, though.
N.B. 3: I’m most impressed with the buffered file reader provided by the .NET framework – it reads about 120,000 words in under 0.4 seconds!
After work today, Craig and I headed to Microsoft’s office in New York for an NYC.NET Developer Group meeting. I know you’re all thinking that it sounds muchos like a geek-fest, but hey, you get free pizza and soft-drink, and they raffle off some prizes at the end of it. (Pizza? Soft drink? Ok, it’s a geek fest…)
Tonight’s talk was based on two undocumented features of the .NET framework – Context, and Interception. I didn’t know much (read “anything”) about either of these things going in to the topic, but man was I impressed by how cool they were! It’s basically a fully fledged aspect-oriented framework built into .NET v2 (and to a lesser extend v1.1). Way cool! I’m not sure why Microsoft have left it undocumented (something to do with clashing with Indigo apparently) – the presenter explained it very fast but I couldn’t entirely decipher his accent.
Anyway, to cut a long story short:
- I’ll be investigating these features a bit more thoroughly tomorrow
- I didn’t win either of the prizes, though they were both books I probably wouldn’t have read anyway.