Thursday, July 20, 2006

California, Redundant, MacBook(?)

Well, well, well. It's been over two months since my last post on this blog and boy has life been interesting!

As you may remember, I spent six months in California's Bay Area to support one of the products I had been working on. What a fantastic experience (if you're interested in reading about some of the sights I saw in Northern California you'll find some stories and pictures on my personal blog.)

Supporting software, compared to developing, requires a whole different slew of skills and I encourage every software developer to exercise those skills if given the opportunity. It'll make you a better developer. And teach you patience. And - sometimes - make you want to inflict mortal injuries on your users. ;)

When I got back I began regular development work again, slipping back into the role pretty easily because I was motivated (getting in close contact with your customers will do that) and still well practiced (I undertook a lot of mini software projects "on the side" even overseas - if you're a 'true' software dev you'll understand!). But a few weeks later bad news rippled through the office; our sales had continued to underwhelm, restructuring was going to occur and some jobs would be cut.

Long story short; mine was one of them.

Now, I'd been considering leaving the company for quite some time, in fact had I not been given the overseas stint it's unlikely I would have stayed much longer. I'd been at the company for over five years and, while it's a great environment, there are many things I found insanely frustrating. I'm not going to discuss them here suffice to say that I thought many things should be done differently and change was very hard to instigate.

Anyway, for whatever reason, my job evaporated and I'm now on the market. After the initial shock wore off I actually felt somewhat relieved; now I was free to decide what I want to do and go after it.

Which is where I am now. I'm trying to figure out if I join another large company, or a start-up. Or perhaps work for myself (I have many ideas of applications to write!). Or maybe returning to uni to pursue post-graduate studies would be good for me. Not yet sure. But I do know I will be involved in software development in some form or another which leads me to the question that prompted this post.

Can I get a MacBook and effectively develop software using Visual Studio?

You see I really like the new MacBooks. I've used a few and am impressed with their UI and the build quality of the machines themselves. The Unix core also strongly appeals. However I need to work with Visual Studio because it's likely my next job will require it and, simply, it's a productive and effective environment. I'm hoping that VS2005 runs well under Parallels - does anyone know? Have any other developers headed down this path? Or will I be forced to run Boot Camp? Is BC really ready for prime time?

Any information you guys might have would be very much appreciated!

Friday, May 19, 2006

Google Maps finally has Aussie roads

Awesome!

Google Maps now has Australian (and New Zealand) road data!

I have been waiting for this for a long time. While in the US I've gotten so used to using online services - because they cater so well to the US market - that it'll be somewhat of a shock to get back home and realise that Australian services are so far behind. But now I at least have road information!

You can even see the outline of the block of my house. Fantastic.

Looking forward to seeing some Aussie mash-ups.

Oh, and before you ask, no, Google Earth data hasn't yet been updated. But it can't be too far away. Sidenote: The "Melbourne" city identifier in GE is still some 10kms too far east...

Update! The Windows Live Local team have just gone live with a new version of their online map product which also includes Aussie road data. Sweet. :) But despite Frank's claims that they use the same provider Google seem to have a significant edge in my area where the detail is much better with Google Maps. Compare my house location: Google Maps, Live Local. Although the Melbourne road data may not be that great (and of course YMMV - I've only checked out my 'hood) there are some fantastic features with the new release - the scratchpad and sharing capabilities for example. It's wonderful to see such activity in the mapping domain!

Friday, April 14, 2006

Google Calendar

Google Calendar is finally here.

Bottom line: For a first release it's slick. A couple of minor niggles and performance issues (it's running noticably slower than yesterday!) but on the whole it's great. I've been evaluating Airset, 30Boxes and Calendar Hub but I'll now switch to Google Calendar.

Thursday, April 06, 2006

Apple Boot Camp

Apple have released Boot Camp, official software that allows an Apple to dual boot with Windows or OSX.

If the performance of Visual Studio turns out to be reasonable I may just buy a Mac Mini. I've been looking for an excuse for awhile. :) Among many other things, I'd love to use it as a front-end for a MythTV setup.

As the rest of the world is discussing, this is an audacious move by Apple but many are predicting that virtualization - running Windows applications within OSX - is coming. Now that would be seriously kick-ass. There are only a handful of applications that tie me to Windows, my development tools being the most important, and it wouldn't take much effort to nudge me over into the Mac world. It would also have many ramifications in the computing world. What would it mean for Linux? Which platform would you target as a developer?

Read more about it:

Ars Technica
Scoble
Gizmodo
Engadget
Make: Blog
Slashdot
TPN: The Bit
Om Malik
Wired

Sunday, March 05, 2006

Virtual Earth Streetlevel


I'm a big fan of Google Earth and, to a lesser extent, Google Maps. I regularly use the services to give me directions and learn about foreign places.


Microsoft's Virtual Earth (now Windows Live Local) has always been an also-ran in my books though in typical MS fashion they've perservered and worked hard to make it a very competitive product. I've no doubt that it will continue to get better.


So I wasn't totally surprised to see Chandu Thota, a key developer in the Virtual Earth team, announce a new technology preview this morning. The team have extended the regular Virtual Earth interface to deliver street level images. It was only a matter of time I suppose, but this technology is very exciting and Microsoft should be pretty happy with themselves - there's gotta be an awful lot of data they're managing there! While the interface is still a little kludgey (and IMO would fit much better in a client-side Google Earth style application) it has the potential to be elegant enough to be useful.


I have been saying for a long time now that GIS-enabled software will spurn a bunch of new software applications and I believe more good stuff is yet to come. :)


Anyways, go check it out:



Windows Live Local Virtual Earth Technology Preview



Scoble also blogged about it (and there's a video on Channel 9).

[Update: The excellent Google Earth Blog made the point that you can achieve a similar effect in Google Earth.]


Thursday, March 02, 2006

ABC RSS Feeds

I used to subscribe to the Age's RSS feeds to get my dose of Aussie news. I generally like the Age, their reporting is usually even handed and reasonably fair. But I agree with Will that the ABC feeds are much better.

For a start they've got summaries. With the Age feeds you only get headlines - and they're typically quite vague. The ABC gives headlines and a short one-line summary of what the article is about. It's not full text (which would be ideal!) but it's pretty good. And the quality of the ABC articles, while a bit drier than the Age, is also high.

So bye-bye Age, hello ABC. :)

Wednesday, February 15, 2006

The brrreeeport report

Helpin' out Scoble where I can...this is the brrreeeport!

Sunday, February 12, 2006

Kate Gregory gives a "migrating C++ apps to .NET" presentation

Kate Gregory, a terrific C++ presenter, has posted some slides and code from a C++/CLI presentation she recently gave on migrating C++ applications to the .NET framework.

Friday, December 16, 2005

Matts Mind

I promised a link to a more personal blog of mine that I'm writing in while I'm OS. Naturally I forgot. So here it is:

Matts Mind

I'm posting much more to that blog for the forseeable future but if I want to write any software-related posts it'll be done here.

Google Music Search...and maybe an iTunes killer?

Google just announced the addition of a music search feature. Now you can search for your favourite artist's name and get some enhanced information, not just web site links.

There are also some pretty significant rumours that Google are going to release some sort of iTunes Store competitor. Dave's regularly on the mark and he's far from the only one spouting that kind of story (just do a Google search!)

I'm all for competition in this space! I love my iPod but the online music options are underwhelming.

Thursday, December 15, 2005

C++/CLI now an International Standard!

Sooo, now there's officially a new language on the block! C /CLI was just approved as an international standard.

I like C /CLI but don't see it being used a great deal. Simply because it's more (!) complex than C (seeing as it's essentially a superset). However, for those times where you really need to interface transparently to a C or C++ library and/or performance is a significant issue then it'll find a home.

The Microsoft team did a great job fleshing out this spec - there's a lot of complexity in integrating the .NET aspects yet it feels quite natural to C++ developers.

Thank goodness we've seen the last of Managed C++. ;)

Wednesday, November 16, 2005

Google Earth placemark test

While I'm overseas I want to use Google Earth to display locations that I visit so that my family and friends can join me on my journey. :)

As a test, here's the apartment I'll be staying at. If you've got Google Earth installed you should just be able to click on the link and press OK.

Monday, November 14, 2005

Google Analytics

Google has complemented their AdWords business by offering Google Analytics for free. Analytics is some pretty sophisticated tracking software that shows you a great deal about who is visiting your website. What keywords they've searched with to get there, what browser they're using, what resolution their display runs at, where (geographically) they're from, how effective AdWords is - a veritable treasure of information.

This service is free (as long as you have five million hits or less per day - or are an active AdWords customer) and easy to use. I've incorporated it into Sublime Software to see what it's like. I'll keep ya'll posted. :)

ArsTechnica has a good overview of the service.

Friday, November 11, 2005

Shopping for webcams

Quick story about good customer service from a couple of computer hardware suppliers.

I wanted to order three webcams so I can communicate with my family and Melissa while I'm overseas. I didn't have a clue which models were good or bad so I jumped into Google and tried to find reviews. Surprisingly (well, to me) it was really hard to find a site that did good webcam reviews - I found that the best resource was doing a search for "webcams" in Amazon and taking a look at the customer reviews. A terrific use of what Scoble likes to term “slave generated content”. ;)

Anyway, once I'd isolated the models that were generally well-liked (and fitted my price and feature requirements) I used the trusty Static Ice search engine to find the best local prices.

If you're an Aussie looking for PC hardware Static Ice is a great resource. Just type in product keywords and SI will return you the list of online vendors that advertise that product - sorted in (lowest first) price order. [1] [2]

Static Ice listed Centre.net.au as having the best price for the webcam I'd settled on. So I placed an order with them. Unfortunately, shortly after, I received an email stating that they were unable to source stock for my item until late November and to confirm if that was OK. It wasn't (remember I'm leaving on the 23rd!) so I called them up and asked if I had any other options. The girl I spoke to on the phone was fantastically helpful. She looked up other products that were similarly specced, priced and in stock and was patient and cheerful with me. It was a shame that, in the end, they didn't have anything that I wanted and I asked if it was possible for me to cancel the order. "Of course, no problems at all sir."

This is service that I want. I'll come back to Centre.net.au. And I recommend others try it out.

Back to Static Ice looking for vendor #2. Infinity Computer Group. Their website advertised the product I was after but this time I rang to check that they had it in stock and could ship it within the next week. Unfortunately the service here wasn't great. After repeatedly being put on hold I was informed that the store that I'd rang (Brunswick) didn't have any in stock. I could try calling one of their other stores if I wished. Oh, and by the way, the store price is different (quite significantly!) to the website price. No thanks. Any vendor that has a web presence needs to have a centralized system and have the same price at their store and website.

Can't recommend Infinity.

As it turns out, third time lucky. City Software advertised my product on their (pick of the bunch) website at a reasonable price. I called them to check availability and expected shipping times and I spoke to a very helpful person who listened attentively and told me what I needed to hear ("yes we have that in stock, yes it'll be on your doorstep in time"). He was professional and friendly and, after a brief chat, offerred to waive the shipping fee!

Excellent, highly recommended. Assuming I get my webcams next week of course! :)


[1] Remember that you can narrow the Static Ice results to products by vendors only from your state by using the "state" syntax, much like Google's "site:" feature. For example, I searched for "logitech quickcam stx state:vic".

[2] If you're a Firefox user you need to set up a smart keyword search for Static Ice. I tweaked the default location to "http://www.staticice.com.au/cgi-bin/search.cgi?q=%s state:vic" so that my searches are always Victoria only. Now I just type "si webcams" into my location bar in Firefox, press enter and voila! I get a price-sorted list of webcams available online around Victoria.

Monday, October 31, 2005

Holiday - and enjoy the cup!

And now I'm off! Heading down to Apollo Bay for a much-deserved week away with Melissa. I'll probably be incommunicado until Sunday. It'll be the longest I've unplugged for in aaaages. I won't know what to do with myself! ;)

And I'm scared to think how many blog postings I'll have waiting for me when I jump online again.

Have fun at - or watching - the Melbourne Cup folks!

VS2005 issues

In my last post I mentioned that VS2005 was tighter than its predecessor. I thought it'd be useful to show where we had some problems (we're still working through them so this isn't an exhaustive list) and some of our solutions.

The changes are all covered in detail in the MSDN document "Breaking Changes in the Visual C++ 2005 Compiler" but I'll try and give some real examples that we faced.

Pointer-to-members now require qualified name and &

The compiler is much stricter about the types of function pointers. The error C3867 is generated with the following code:

  CAThing()
: m_MyObserver(this, MyCallback)
The resolution is to qualify the function pointers and pass the addressof the function in. e.g.
  CAThing()
: m_MyObserver(this, &CAThing::MyCallback)

const_cast can't down cast / Previously implicit string
casts are no longer allowed

This code does not compile (error C2440)
   BSTR bstrMessage = SysAllocString(T2OLE(const_cast(MyThing.ErrorMessage.c_str())));
This was replaced with the following (the BSTR could be deallocated after use):
   CComBSTR bstrMessage(MyThing.ErrorMessage.c_str());
This code will also give the same error:
   OLECHAR* pStringBuffer;
USHORT* pString = pStringBuffer;

COM/C++ Attributes with enumeration values should not be enclosed in quotes.

This code:
    coclass,
threading("free"),
event_source("com"),
aggregatable("never"),
Should be rewritten without the quotes as:
    coclass,
threading(free),
event_source(com),
aggregatable(never),
The first time that the quotes get compiled gives warning C4581. This implies that the double quotes (") need to be replaced with single quotes ('). However, if you do this you then get error C3455. This error will say that "none of the attribute constructors matched the arguments".

Public attributes are stricter

The error MIDL2072 will be emitted for this code:
    typedef [public] enum EEventIdType
{
E_DEFAULT_EVENT_ID,
E_DEBUG_EVENT_ID,
} EEventIdType;
The solution is to place the public attribute earlier:
    [public] typedef enum EEventIdType

The scope of variables in control constructs is limited to
the construct

In this code:
    for (int i = 0; i*max  ;++i)

The scope of i is limited to the for loop. (The * is meant to be a less than operator but I'll be damned if I can get blogger to cooperate!)

Method declarations must explicitly indicate return types

This code gives the error C4430:
    virtual CheckChar(UINT maskChar, UINT nChar, int endPos);
The return type must be explicitly defined. e.g.
    virtual int CheckChar(UINT maskChar, UINT nChar, int endPos);

Private types are not accesible outside of the class they
are declared in

This code gives the error C2248:
    class cdxCSizingPropSheet : public CPropertySheet
{
private:
struct StandardControls
{
...
};
};

...
static struct cdxCSizingPropSheet::StandardControls psheetCtrls[] =
...
In this example, the struct StandardControls needs to be available at the global scope for psheetCtrls.

Deprecated methods

For security, many methods/functions that can cause buffer overruns have been deprecated. The recommended action is:
  • replace the deprecated methods, or
  • define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES as 1 so the compiler will use a template overload to replace the deprecated method with another. N.B. security template overloads are not available for everything. Alternatively,
  • define _CRT_SECURE_NO_DEPRECATE or the warning pragma to not display this warning.
If you want my opinion (sure you do!) any function that can cause buffer overruns ought to be an error and avoided. You'll thank me later. ;)

OK, that's it for now. We had a few more but I've had it with trying to lay out code in Blogger. Does anyone know any good blogging software to write code? It's damn hard from within the Blogger editor. I'm thinking of moving to my own system hosted at home for this reason alone (actually there are a few more!). If I was to move to my own system which can you recommend that do a good job of handling code?

Anyway, I hope that was useful to you - and a huge thanks to Ben who wrote most of this in our Wiki at work. The good work was his, the errors mine. :)

Friday, October 28, 2005

VS2005 and .NET is shipping!

The newest version of Miscrosoft's development suite - and the matching .NET framework - has just ben released to MSDN subscribers!

Kudo's to Geoff for watching so attentively. You may not have gotten the scoop buddy but you were the first person I saw that made the announcement. :)

Personally, our company will be making the switch (from VS2003) quite quickly, and I can't wait.

Beware though folks, if you're compiling C++ code you may have a fair chunk of work migrating. The compiler is significantly more strict and we've found many errors (and warnings) that have to be rectified. As a positive, remember that your code will be cleaner when you're finished!

Wednesday, October 26, 2005

Heading OS for awhile

My role at Agilent Technologies is soon going to change. On the 23rd of November I'll be heading off to San Jose, California to support our products at one of our largest customer sites. It's a six month assignment and I'm damn excited about it! :)

It's a pretty big change. For the past few years I've been a full-time software engineer, beavering away developing features for our product line. This new role is totally about support. It's unlikely that I'll write any code except perhaps for some automation scripts. That'll take some getting used to as I really enjoy writing code.

However, helping customers understand and solve problems with our products is a new challenge that I welcome. I've always believed that to be a really good software engineer you need to thoroughly understand your customers needs so this experience will be invaluable from that point of view.

And I'm really looking forward to spending time soaking in the California culture (alas not much of the sun - I'll be there through winter!) and seeing some of the sights.

The only really tough bit is that my amazing girlfriend Melissa won't be able to come with me. She'll be (hopefully) joining me for a month in the middle of the trip - which will be fantastic! - but we've hardly spent more than a couple of days apart, let alone months. Ugh, that's going to suck.

Baby, if you're reading this, I'm going to miss you like crazy.

Thank goodness for webcams, broadband connections and video chat. ;)

Anyway, I just wanted to give y'all a heads up to let you know that I won't be in the country for much longer. I'll also be starting up another blog to document my adventures over there - I'll post a link to it when I get around to creating it.

Thursday, October 20, 2005

Three links of potential goodness

My bookmarks folder is a mess and I've got a brazillion (hehe) tabs open in Firefox. So I figure why not post a couple of useful links here? You may even find them useful.

ShinyFeet is a site that advertises unlimited email and file storage. It's also got some sort of photo gallery feature. Don't yet know what the catch is (probably advertising).




YouSendIt is a cool site that allows you to send a file (up to a gig!) to someone. Here's how it works. Type in a recipient's email address. Upload a file. The file is stored temporarily (for about a week I think) on the YouSendIt server and a link to the file is sent to the recipient. Again, not sure of the gotcha (advertising again?) but it's a pretty nifty idea.




Inquisitor is a(nother) search engine but has AJAX goodness and searches as you type. Pretty sweet. It gathers it's results from Google.

Tuesday, October 04, 2005

Other blogs

Speaking of other blogs...I write in a couple now and just thought I'd quickly 'advertise' them.

Matts iPod News is a blog all about iPods and iPod accessories.

Wireless Cranium is my friend Jiggy's blog. Jiggy is a music buff and really knows his stuff - probably because he owns a pooload of CD's and spends all his spare time absorbed in the world of music. ;) I occasionally write in the blog since I also love listening to sweet, sweet music...

Photo Impression, as mentioned recently, will contain photography news and information as well as links to photos that Jarek (aka J-Man) or I like. It's only early days for this blog but we'll see where it goes...

Then there's this blog which I'm still, even after over a year, trying to figure out what to really do with. I'd like to write more articles on software development but damn they take some serious time that I just haven't had lately. Mostly it's just become a dumping ground for stuff I want to say, which is fine but probably terrible to read! Anyway, I'll try and sprinkle a few software-related posts in amongst the drivel. I hope you get something, even if it's only a tiny something, out of reading this blog!