If you’re a developer using the Microsoft platform and want to learn Windows Azure development, Developing Applications for the Cloud on the Microsoft Windows Azure Platform (Patterns & Practices) is the book for you. It’s a clear book which rides on a good practical case that covers most of the important angles. Because this is a Practice & Patterns book, it also spends quite some time teaching you the right mindset for building (multi-tenant) cloud applications.
The downside of the book is that it really assumes a good familiarity with the Microsoft .NET Framework and C#. Without that, you’re not going to understand much of the cases, apart from the high-level cloud information. That said, the book starts with a good explanation of why you would want to build cloud applications, the types of scenario’s that fit well, and what Windows Azure (and in more general terms Platform-as-a-Service) development means. The example case really covers most scenario’s and choices people will come across, and that means it also covers all the core technologies within Windows Azure. Another great thing about the book is the many links to articles and other (free e-)books that provide deeper insight into a certain aspect or technology. Be aware that Windows Azure is a fast moving platform, with changes on a regular basis. Although most of the core concepts in this book will remain the same for a long time, it can’t keep up with all the new developments. I hope new editions will follow to keep up with the changes.
Reading iOs 4 Programming Cookbook by Vandad Nahavandipoor left me confused about the book’s intentions. The book’s audience is stated as for novice AND experts. That rarely works and this is no exception. That said, there is some good, practical content.
The first few chapters cover topics aimed mostly at the novice developer. In a language basics book these chapters would typically be somewhere half way through the book. So this is only useful if you just started to learn Objective-C without reading a book. The cookbook format doesn’t help here, because discussing these topics benefit from a nice flow, which the cookbook format doesn’t have. This goes for a lot of content covered. The content itself is not bad, but it should have been covered textbook style, not cookbook style.
Several chapters are good in the cookbook format, such as chapter 4, which deals with maps and location. It quickly explains how to get things done in a practical manner. The book goes back and forth between content that should be part of a textbook (e.g. gestures, networking) and stuff more suitable for a cookbook (e.g. audio/video, camera).
All in all, I think you can get quite a few handy tidbits from this book, but to be fair, this should be split into two books. One textbook, that really starts at the basics of Objective-C programming and teaches you good programming practices, and one cookbook with the good cookbook stuff from this book and with more practical recipes to give it more body.
p.s. I realize I have a real Microsoft aura around me, so for some it may come as a surprise that I read an iOS book. However, I like to keep myself informed about things outside my comfort zone. I am also reading an Oracle book :).
I’ve written quite a few functional designs over the years and I’ve found that for users needing to validate it having visuals is key. In most cases prospective users don’t understand what they really get until they see screens. On the opposite side of the spectrum telling developers what to do also is much easier with a screen, especially when you are debating what would be the best and most efficient (coding wise) way to give a user certain functionality. In these situations just getting a piece of paper and draw is the best you can do. The last few years I’ve done this on and off on my tablet. I can sketch on it, but the results are often so poor to see (and read!), that I can’t possible put it in a functional design. This is where a good mockup tool comes in.
A good mockup tool should make you feel like you are drawing, but provide you with predefined controls to make your job fast and easy. Recently I came across Balsamiq Mockups, which is simply jaw dropping. Let’s start with the result, which looks pretty much like a hand drawn thing. At first glance that may not seem like a big deal, but it is. It states clearly “This is a mockup, the actual thing may look different“. If you give a user something that looks like a screenshot, that is what to expect to get. With this they know it will look differently when it is done, and this also makes it much easier to debate your choices and come up with better ideas (to quote David Platt, “Thy User Is Not You”, so they will come up with stuff you didn’t even dream about).
Ok, so the result is great, what about getting there? Well, that’s a piece of cake, really. Balsamiq is as intuitive a tool as I’ve seen and I was able to create a pretty complex screen in about 10 minutes. There’s a bunch of commonly used controls (and some less common), and you can easily find what you need. Also, you can download tons of additional controls from http://mockupstogo.net. Placing, moving, resizing etc. is all very easy because of the snapping support. Want to see for yourself? Look here.
The last things that I find refreshing is the licensing model and fee. It only costs $79 for a single license, and that comes with updates forever (and they update frequently, so they say). Because the tool is already so good, this means you can use it for years, without having to worry about support or having to get a new version.
This is just a great tool. I am sure I will be using it often.
A while back I blogged about testing VirtualBox. At the same time we’ve tested Windows Virtual PC, and it’s been disappointing pretty much across the board:
- It doesn’t run on our company’s Lenovo T61’s, which displays some vague error message. Since most of our developers have a T61, this means they can’t use it at all. Virtual PC 2007 and VirtualBox run fine, so it isn’t clear why WVPC can’t. We have some different machines where it does work, so we went on testing on those to see how well it works, in case Microsoft steps up and fixes the T61 problem and starts supporting 64-bit guests. See the remaining points for my experience…
- The integration features of WVPC suck. Even something simple like dragging a file from the guest to the host or vice versa doesn’t work. The reason is that with Integration Mode enabled, you’re actually connected to the guest through Remote Desktop Connection. Microsoft has done this to leverage some of the advantages of RDP (as Ben Armstrong explains), but IMHO they should find a different way to do so.
- Starting/stopping a guest takes forever, and renders my laptop inoperable while doing so. With VPC 2007 hibernating or restoring a hibernated VPC with 1.5 GB of memory takes several tens of seconds, but I can easily use all other applications while doing so. WIth WVPC just restarting a hibernated image tages 3-5 minutes and during that time my other applicaties are pretty much frozen. I can get a cup of coffee (if I’d drink coffee), eat a sandwich, and go to the John, during the wait. I have no clue why this works as bad as it does, because VPC does this perfectly fine.
The only thing that’s been a positive experience is the performance once it has started. That said, I can’t really tell if VPC 2007 or VirtualBox work better or worse, so I can’t even praise WVPC on this point.
So for now it is back to VPC 2007, with our final decision on switching to VirtualBox postponed until we really need 64-bit support.
On a side note, we’ve been trying to get the open source version of VirtualBox working, and that appears to be quite a challenge. There are no binaries, so you need to compile yourself. Even though we have a recent build, getting all the prerequisits is hardly possible. Some of the needed SDKs are no longer available. Our conclusion up until now: the open source version is not really viable (at least for Windows), and possible only there for marketing reasons (“see, we do open source”).
Lately I’ve been making time to read more again, and I thought I’d share my findings. My most recent read is Solid Code: Optimizing the Software Development Life Cycle by Donis Marshall and John Bruno. My feelings about this book are mixed. On the one hand, it gives a good overview of software engineering practices. On the other hand, an overview is all that it is. It doesn’t really do a good job at giving any details. That said, I think it is a good read for junior/medior developers to get a sense of all the stuff they should be aware of when building software. For senior developers and architects a quick scan to see if they have a gap somewhere is enough. From there you can explore books specialized at the topic(s) you need to know more about. Some of the topics covered include, design, testing, performance, scalabiltity, and security
As an aside, I’ve read several books now that cover Agile development methodologies. What strikes me everytime is that the given examples are always about product development, and this book is no different. Product development and custom software projects however are very different. In product development you can work with fixed budget and fixed time, and cut features if either budget or time doesn’t allow you to create them. Custom software projects can’t do this as easily. Clients are not going to give you a bag of money and a schedule and say “we’ll see what makes it into the final version”. The client wants to know what he/she is going to get for the money they pay. This means that in custom software projects, you need to have a much more detailed view up front of what needs to be implemented. I’m not saying this precludes Agile development practices, but there is a certainly a difference at the start of the project, because a large chunk of the design work has to be done earlier in the project lifecycle.
Commerce Server is een van die producten die altijd net buiten m’n gezichtsveld ligt. Binnen The Vision Web hebben we een aantal experts op het gebied, dus het is niet echt nodig om me daar mee te bemoeien. Nu CS2007 gebaseerd is op ASP.NET 2.0 weet ik echter ineens veel meer van de algemene werking dan voorheen. Door het baseren op ASP.NET 2.0 is CS2007 overigens niet meer bruikbaar met ASP, omdat er geen COM interfaces meer zijn. Die zou je wel weer kunnen maken door de Web Services interface te wrappen, maar dat moet je niet willen.
De spreker (Ryan Dononvan) weet waar hij het over heeft, maar dat mag ook wel als je onderdeel bent van het team dat het maakt. Wel lopen z’n demo’s nog redelijk stroef. Dat een iisreset nodig is om een nieuw thema (look & feel) toe te passen vind ik wel dubieus. Een half uur in de sessie heb ik alleen nog maar ASP.NET 2.0 dingen gezien, met uitzondering van de standaard globalization zaken.
Wat me vooral opvalt is dat CS2007 niet een beetje, maar echt veeeeel beter doordacht is dan z’n voorloper. Het is niet meer een verzameling losse handige tools, maar veel meer gericht op het proces. Zo kunnen allerlei business rules gedeeld worden tussen verschillende onderdelen, zodat je niet meer op meerdere plaatsen dezelfde rules moet implementeren. De BizDesk is ook weg en vevangen door een Windows SmartClient applicatie die communiceert via de Web Services interface. De code van de SmartClient is beschikbaar in de Partner SDK en je kunt ‘m daarom aanpassen aan eigen wensen. Dat geldt ook voor de rapportage, omdat die gedaan wordt via Reporting Services. Gek genoeg voor zowel SQL 2000 als SQL 2005, terwijl CS2007 alleen draait op SQL 2005 (althans dat zei Ryan eerder in z’n presentatie).
Tip voor de spreker (demo’s geven les 1): zorg dat je alle updates geinstalleerd hebt en zet auto update daarna uit! Nu moest hij wachten tot zijn VPC opnieuw opgestart was na het installeren van updates.
Het jaarlijkse TechEd “feest” is weer begonnen. Gisteren al met een etentje met de MVP’s waar ik weer eens heb kunnen praten met m’n mede-MVP’s, waaronder Andre Obelink en Sander Gerz die boeken over VB en C# hebben geschreven in dezelfde serie waarvoor ik net een boek geschreven heb (De Basis). Leuk om ervaringen uit te wisselen.
Vanmorgen de keynote van Eric Rudder, die vooraf gegaan werd door Simon Brown. Simon had een leuk intermezzo met Arfa Karim, de jongste Microsoft Certified Professional (11 jaar, uit Pakistan). Arfa liet een zelf geprogrammeerde calculator zien en de code zag er netjes uit. De demo’s tijdens Eric Rudder’s keynote waren ook leuk om te zien. Als je de afgelopen twee jaar met je kop in het zand hebt gezet waren ze zelfs indrukwekkend.
Later meer over de sessies…
Since I started as a programmer, I have hardly ever developed Windows applications. I mostly did web and components, GUI stuff is not my can of beans. That said, I do want to keep tabs on what’s happening in with Windows GUI development, so I bought Programming Microsoft Windows Forms (a streamlined approach using C#) by Charles Petzold. I can tell you it was not the type of book I expected. What I expected was to learn how to build Windows applications, using a database and so on. Basically everything you need as a beginner to start developing full fledged apps. To my surprise the book is actually JUST about the GUI. There is the least amount of “clutter” of stuff that is not related to the GUI. In addition the whole book is setup so you can develop with just Notepad. The result is that the book has a very clear build up to how Windows Forms actually works. As such it was an enjoyable read for me.