The Visual C++ 2008 Feature Pack is now available for download. It includes an update to MFC (Microsoft Foundation Classes), with classes for an Office Ribbon style interface (if you can live with the legal aspect) and other new GUI controls. There is also an implementation of the TR1 (Technical Report 1) standard (PDF), an important update to the ISO 2003 C++ standard library.
Category Archives: software development
Google App Engine: how much will you pay for freedom?
Google is offering to host your web apps for free:
You can create an account and publish an application that people can use right away at no charge, and with no obligation. An application on a free account can use up to 500MB of storage and up to 5 million page views a month.
What’s an application? It’s a runtime for Python apps (only Python code will run) and includes the Django web framework. There is a structured datastore which on the briefest of looks has echoes of Amazon’s SimpleDB and Microsoft’s SQL Server Data Services. Welcome to GQL – the Google Query Language. You can send email through Google’s servers (hmm, hope some work is being done to foil the spammers). You can use Google Accounts as an identity service – this is a big one, since it helps Google to meld your online identity with its services.
So what’s the business model? Google says:
During this preview period, only free accounts are available. In the near future, you will be able to purchase additional computing resources at competitive market prices. Free accounts will continue to be available after the preview period.
There are a few clues about what will constitute an “additional computing resource”. Clearly storage is one limit, and there is also a limit of 3 applications for free accounts. There is also a reference to bandwidth limits, the number of results you can return from a query (1000), and the length of time taken to serve a web request.
Apps communicate through HTTP or HTTPS requests. No talk of SOAP or even XML that I can see, though presumably you can use Python libraries.
Although we talk a lot about the largest applications that need to scale, this is a minority of real-world applications. Many of today’s web applications could run happily for free on Google’s new service, once ported. The economics interest me. Google is offering to subsidise our web infrastructure even further than it does already with GMail, Blogger and iGoogle gadgets. Therefore, if we choose to host our own services we have to pay for the flexibility and control that gives us, as well having to deal with scalability and security issues that Google will otherwise look after for us. In the light of generous app hosting offers like this, how much are we willing to pay for that freedom?
Reality strikes for Blog Friends Facebook app
Just spotted this sad note from the developers of one of the few Facebook apps I’ve enjoyed using, Blog Friends. The app combines blog aggregation with social networking, and does a good job of highlighting interesting posts you might otherwise miss:
Although it appears simple on the surface, Blog Friends is actually an unusually complex and resource-intensive application to maintain and grow …. the way that Blog Friends is currently tied into the Facebook Platform means we have been at the mercy of Facebook’s frequent modifications of their Platform specifications, and that has also been another disabling factor for us.
What is needed is a complete rewrite of Blog Friends, one that makes it properly scaleable and independent of Facebook. As you can imagine, this is a huge undertaking and unfortunately we don’t have the resource or money to do this; we have never inflicted any advertising on you our users, so we haven’t made a penny in revenue from Blog Friends.
We’re shutting down, as of today.
It’s tough to prosper without a sane business model; and it’s tough to survive on some third-party’s proprietary platform.
Proprietary platforms love developers (Ballmer’s battle cry, remember), because they add value. They are risky for developers though, because the platform owner can change the rules.
Is Bubble 2.0 going to end the same way as Bubble 1.0?
Microsoft discusses next-gen MSDN … on Facebook
According to this blog post, Microsoft is setting up a buzz group on Facebook to discuss the next generation of its online documentation for developers, the MSDN (Microsoft Developer Network) Library:
We have put a facebook group together to aggregate together the folks who want to work with us to provide feedback, usability and ideas for the next generation of the MSDN Library. We call this project Library 3.0 and we will be organizing events and presentations from this group to bring us together on the project. My goal is build quorum of members over the next months with kickoff’s in late May for the first events.
It’s an interesting place to hold the discussion. Yes, Microsoft has a small stake in Facebook; but it also runs a vast network of technical communities and is doing great business with its Sharepoint collaboration platform. So why use Facebook?
Of course, two key areas that need improving in MSDN are collaboration and search, so you could argue that choosing a third-party platform for collaborating on MSDN itself is significant.
Then again, it’s probably more to do with internal red tape. What’s easier: getting corporate agreement on some new developer relations initiative and setting up the infrastructure, or just sticking a new group on Facebook?
If you are interested, the group is here. Currently it has no content or discussion whatsoever. Not a good start; but there’s time…
Help! We’re running a VB3 app and we’ve lost the code
I write a programming column for Personal Computer World. A reader contacted me with a problem. He had an application which he knew was written in Visual Basic 3, but for which he did not have the source code. He now wanted to adapt it to run on Windows Mobile.
VB 3.0 came out in 1993, a mere 15 years ago but an eternity in Internet time. It was hugely popular, partly because it included the JET database engine, the same one as used by Microsoft Access. Both professionals and keen amateurs used it to create little (and not so little) business apps. VB 3.0 is 16-bit, and although these apps may still run OK on Windows XP or Vista 32-bit, though perhaps with a few cosmetic glitches, they will not run on 64-bit Windows, which has no 16-bit emulation layer.
Not many organizations are moving to 64-bit desktops just yet, though they may well do so in a couple of years, but there is still a problem if you need to adapt or port the code.
I thought this would make a fun case study so I wrote it up in the May 2008 column. I tracked down the VB3 decompiler put out some years back by Hans-Peter Diettrich, also known as Dodi. He gave me a demo version to distribute to readers. The app in question turned out to be very simple, and decompiled easily. I then imported the project into VB 6 (because later versions won’t look at VB3 apps), and finally pulled the VB6 conversion into Visual Studio 2008. Once I’d fixed up the Windows version, I created a new Compact Framework solution into which I copied code from the desktop project. Much of the code made it all the way from the VB3 original to the Compact Framework, and ran fine on my IPAQ Pocket PC.
Working with decompiled code is a bit like solving a crossword puzzle. Variable names are mangled so you have to work out what they are for. It won’t be a quick and easy process except in the simplest of cases.
The incident makes me wonder: how many business-critical apps with lost source are out there? Someone posted a cartoon recently which I can’t now track down, but it was a graveside scene. One mourner says to another, “I’m sorry to ask at a time like this, but did he say anything about source code?”
Now it’s Eclipse that has “baroque” code
This provoked a wry smile, from a Reg Dev article on the forthcoming Eclipse 4:
Underpinning all this, though, is an attempt to escape the “baroque” 3.x codebase for something that’s simple, clean and modular. That means eliminating repetition in code and interdependencies found in the monolithic 3.x.
“It’s getting to the point where it’s difficult to reach in and fix a bug without impacting lots of other things,” one e4 committer told EclipseCon.
Now, Eclipse is a child of the refactoring era. It is built using an MVC (Model-View-Controller), component-based, plug-in architecture. Design patterns guru Erich Gamma worked on Eclipse and on its Java Development Tools.
If Eclipse is now a ball of spaghetti, what went wrong? Though its possible the problems are being over-stated in an effort to justify version 4.
Technorati tags: eclipse, erich gamma, mvc, java, refactoring
Introspective QCon asks hard questions about Java, SOA, REST
Last week I attended QCon in London and have been mulling over the experience. Two themes stood out for me, though bear in mind that having recently attended Adobe and Microsoft events, I avoided the sessions which related to those companies and focused on Java and more general issues.
The first was the extent to which QCon accepted that mistakes made in the early years of J2EE have been costly for the industry. In this respect the key speech was from Spring inventor Rod Johnson, whose session was called The Cathedral, The Bazaar and the Commissar, “an opinionated view of the story of Enterprise Java innovation.” Johnson stated that the rush to standardize everything in the Java platform had done almost as much harm as good (though he did say it was a “net positive”). He identified numerous problems in the standardization process. In particular:
- The expert groups are dominated by large vendors whose interests are not aligned with those of developers. Johnson gave the example of JDO. “What happened was, this was intensely political. Database vendors hated JDO. Application server vendors hated JDO. Because in each case it wasn’t good for their business. And the result was that JDO was indeed taken out and shot.” Johnson also noted that J2EE serves to protect the existing licensees:
“It pretty much ensures that there will be no competition, because who at this point would want to implement the whole enchilada of J2EE?”
- The JCP has a history of ignoring prior art, which means on occasion it comes up with specifications that duplicate the functionality of existing products, or which are inferior to what is already available. In consequence good technology that was outside the JCP was lost. He cited O/R mapping, persistence and logging as examples. Here’s Johnson on Toplink:
“Hibernate is the de-facto standard for O/R mapping today. It’s a pretty good product. How many things does it do that TopLink didn’t do in 1998? The answer is not many. There’s probably just as many things that TopLink did in 1998 that Hibernate doesn’t do now. Toplink wasn’t as robust back in those days. But … what we’ve done is somehow managed to kill all innovation for ten years in O/R mapping, while in the meantime Microsoft has both figured out that O/R mapping is interesting and with new technologies like LINQ they’ve actually started to push the envelope. They shouldn’t be relevant in this space because there was such a lead in terms of Java technologies.”
- The JCP standardized specifications that did not work, in particular Entity Java Beans. The industry accepted them because there was an obsession with standards. “There was a complete transformation where non-standard technologies could no longer compete and competition was no longer on merit.”
Johnson asked what seems to me to be a key question: what should be standardized? He said that it is silly to try both to innovate and to standardize at the same time, because the committee will get it wrong. You should standardize in areas that are well known, understood, and proven in the market.
Despite appearances, Johnson is not an enemy of the JCP. He spoke warmly of the current chairman, Patrick Curran, who is trying to reform the organization; and feels that real progress is being made. Curran was also at QCon seeking opinions on the JCP and its future.
Johnson also feels that Java has moved on. “The Java world is no longer a one-party state,” he said.
What I found interesting was that everyone at QCon seemed to agree with what Johnson said. Even Curran did not try to dispute it. In the closing panel, Martin Fowler from Thoughtworks introduced Johnson as “the man who single-handedly destroyed EJB”, and was applauded.
I suspect there is a Microsoft factor in all this. In the early days of Java, there was huge fear that Microsoft would corrupt Java and make it a Windows-only technology. Standards would prevent this happening; hence the standards religion that Johnson claims was not thought through.
There is an interesting underlying issue here, which the extent to which our industry meekly follows the lead of influential gurus and big vendors in the solutions which it implements.
That brings me to the second major theme which I noticed at QCon: the rise of REST. Despite sincere attempts at balance, there was an unmistakable tendency to promote REST at the expense of other stuff including WSDL and SOA. In many ways this makes sense to me, but it would be rash to assume that this year’s fashion is immune from the issues that now beset fashions from previous years. One delegate asked what stuck me an an excellent question in the closing session:
“What if you came along last year and saw the rise of SOA, and perhaps went off and did a whole load of SOA, and came back this year and found, SOA is on its way out, I should have done loads of REST stuff – how are we supposed to recognize which are the good horses to back?”
It is this kind of fear that leads many senior IT folk to be conservative in their technology and vendor choices.
The psychic powers of the man from Mozilla
I spoke to Dean Hachamovitch, General Manager of the Internet Explorer team at Microsoft, and used some of his comments in a piece for Guardian Technology. I’m pondering putting the whole transcript online.
One of the topics was whether Internet Explorer will ever support ECMAScript 4.0 (aka JavaScript 2), which has been a contentious subject. For the sake of balance I also spoke to Mike Schroepfer, VP of engineering at Mozilla, who was also at Mix08. I told Schroepfer that I’d spoken to Hachamovitch and that he had said he could not commit to ES 4.0 when it was not yet finalized. Schroepfer then said:
…but what he didn’t say was, we’re actively working on it, we’re excited about it, we hope when it’s finished we will implement something in the future. He didn’t even go anywhere near that. He gave you a correct and politically astute answer.
Schroepfer was spot-on and I was impressed by his psychic powers, since he had not been present when I spoke to Hachamovitch. Microsoft has lots of experience in implementing languages with features similar to ES 4.0 and it seems to me that its reluctance to embrace it must be for strategic rather than technical reasons.
Technorati tags: ie8, mozilla, ecmascript 4.0, dean hachamovitch, mix08
Beck on Agile: it’s all about the team
Kent Beck is really a relationship consultant, or should that be counsellor? This is not a bad thing. Beck gave a keynote this morning here at Qcon and talked a bit about techie topics like frequent deployment (he claims that Flickr deploys every half an hour) and creating more tests more often, but the main focus of his talk is relationships within the development team and between the team and the business people (if they regard themselves as separate).
Beck says that the ubiquity of computing is changing the typical characteristics of a programmer. When only geeks had computers, programmers were inevitably geeky – and for whatever reason, that often meant something of a social misfit. Today everyone grows up with computers, which he says makes programming more accessible to non-geeks, who have better social skills.
Reflecting on this, I’m not quite convinced. Yes, everyone grows up with computers, but few have any inclination to understand how they work. A nation of car-drivers does not make a nation of engineers.
Still, that doesn’t affect his main point, which is that characteristics like trustworthiness, transparency, honesty, accountability, and the ability to get on well with others, are critical to successful development:
I focus on what developers can do to have better social skills and be better business partners.
In an aside on accountability, Beck makes a point about Windows and the “beginning of the end of the Microsoft monopoly.” He says that people are realising that they don’t have to put up with computers that are unreliable or require frequent restarts:
How many hours are spent worldwide waiting for Windows to restart, do the maths. Software needs to be effective and needs to work; increasingly there are alternatives.
Windows can work pretty well in the right circumstances; but it’s a fair point nonetheless. I recall the effort it took to set up a laptop recently. Microsoft’s fault, or third-party problems? Both; but the user doesn’t care whose fault it is, but only wants a better experience.
Incidentally, the team theme came up again when Peter Goodliffe spoke on good and bad application design. He observed that bad design is damaging to teams; uncertainty about what the code does or where new code should go stresses relationships, and working with a bad design damages morale. My reflection was that the team is primary, not the design. A bad team will never come up with a good design. A good team could still find itself working with a bad design though, so focus on design is never wasted.
Does my bus look big in this? Martin Fowler and Jim Webber debunk middleware
Entertaining session to close a slightly disappointing first day at Qcon in London. Martin Fowler and Jim Webber from ThoughtWorks discussed the history of application integration: how to get diverse applications on diverse platforms talking to each other and sharing data.
TIBCO, BizTalk, webMethods, you name it, “they’re a pain in the neck to use”, said Webber.
Enterprise Service Bus? Should be called the “Erroneous Spaghetti Box”. SOA? “A dog’s breakfast.”
According to Fowler and Webber, the Web is the answer. “The dumbness of the internet is a real win…it allows you to do things that you did not think of.” The Web is ubiquitous middleware, incremental and low risk.
Squid is your Enterprise Bus … We’re not going to need all this crazy middleware that middleware vendors try to sell us. We don’t like ESBs … The big up-front middleware approach just isn’t very sensible.
Right or wrong? To me, the question to ask of these complex middleware products (and I don’t want to pre-judge the answer) is this: what can I do with this, that I can’t do without it, or do equally well with a simpler solution?