Category Archives: software development

On BlackBerry 10, Cascades UI and Adobe AIR

I spoke to Jeff Lejeune, RIM’s Advanced User Interface Director, here at BlackBerry DevCon Europe in Amsterdam.

He is part of the team responsible for the Cascades UI, a native code UI framework for the forthcoming BlackBerry 10 OS. One of the things he told me is that the Cascades name is actually being used for parts of the API beyond the user interface. It is a major part of the new operating system.

I had not appreciated until today the extent of the likely difference between BlackBerry 10 and the current Tablet OS 1.0 or Playbook OS 2.0. Since the PlayBook OS is already based on QNX, I had assumed that BlackBerry 10 would be an incremental update rather than a radical new direction.

Certainly there is less difference between PlayBook OS 2.0 and BlackBerry 10 then there is between BlackBerry 7.0 and the PlayBook OS, so my assumption was not completely wrong. That said, the introduction of the Cascades UI acquired with The Astonishing Tribe is a major change. Lejune told me that Cascades UI will be in effect the native UI of BlackBerry 10, and the built-in apps will use it.

The first version of the PlayBook uses both native code and Adobe AIR for its built-in apps.

RIM has given full backing to Adobe AIR at this event, presenting it as one of the supported development platforms and saying that it will support AIR for as long as Adobe does and maybe even longer. Even so, it would be fair to say that RIM is moving away from AIR and towards native code and Cascades UI in BlackBerry 10.

Further, Adobe itself has changed direction since the launch of the PlayBook last year. Adobe has made it clear that while Flash, Flex and AIR are still important, its strategic direction is HTML 5 when it comes to development platforms. Some aspects of Flex, the code-based approach to AIR authoring, are being wound down, including the visual designer in Flash Builder.

My sense therefore is that AIR is not the best choice if you are considering how to develop for BlackBerry 10 – and BlackBerry 10 is the future of RIM’s platform. The primary choice should be between Cascades UI, for best performance and integration, or WebWorks (PhoneGap), for development in HTML and JavaScript and cross-platform code.

Cross-platform Windows and Mac lifts Delphi sales by 54%

Embarcadero has announced 54% growth in sales of Delphi and C++ Builder, its rapid application development tools, in 2011 vs 2010. These tools primarily target Windows, but in the 2011 XE2 edition also support Mac and iOS applications. XE2 also added a 64-bit compiler, making this the most significant Delphi release for years. The company says that the 2011 figures come on top of 15% year on year growth in the previous three years.

This is encouraging for Delphi developers, and well deserved in that Delphi still offers the most productive environment for native code development on Windows. The cross platform aspect is also interesting, though the FireMonkey framework which enables it is less mature than the old VCL, and there are many other options out there for cross-platform apps. FireMonkey does not yet support Android or other mobile platforms apart from Apple iOS.

2012 is also the year of Windows 8, raising the question of whether Delphi and C++ Builder will support the new Windows Runtime (WinRT) in future, and if it does, whether this will be FireMonkey only, or whether it could work with a XAML-defined user interface.

Will Nokia’s Qt come to Windows Phone?

When Nokia acquired Trolltech back in 2008, it made perfect sense as a way of supporting development on Symbian, its smartphone operating system, and nudging the Qt project, which provides a cross-platform framework for native applications, more towards mobile rather than just desktop application support. It also made sense as Nokia worked on Maemo and then Meego, its Linux for mobile project.

Then came February 2011 and CEO Stephen Elop’s announcement that Nokia would partner with Microsoft and make Windows Phone its primary smartphone operating system. Windows Phone 7 does not support native code development, other than by operators, manufacturers, and of course Microsoft itself. What future for Qt at Nokia now?

Here at Blackberry Devcon Europe, Nokia’s Lars Knoll, Qt Chief Maintainer, has been introducing Qt to Blackberry developers. Qt forms a critical part of RIM’s Blackberry 10 (BBX) platform, based on the PlayBook tablet OS and set to come to Blackberry phones later this year. The Cascades UI framework, for hardware-accelerated 2D and 3D rendering on BBX, uses Qt core and an adaption of QML (Qt Modeling Language). You can use Qt with or without Cascades on BBX.

Lars Knol, Nokia

Given that Nokia makes mobile devices which are in competition with RIM’s devices, it may seem odd that Nokia is supporting Qt on Blackberry. I asked Knoll about the status of Qt within Nokia following the move to Windows Phone.

There’s not too much I can say right now. The only thing I can repeat is that we’re still investing in Qt. We’re actually hiring more people to work on Qt. Qt is an essential part of the strategy for the next billion. That’s all I can say right now, but stay tuned, in time you’ll hear more.

He added later that Nokia is in business to make money; in other words, there are strong business reasons for Nokia to continue with Qt. The “next billion” reference refers to Nokia’s stated intention to bring apps to the next billion.

One possibility is that Qt will in fact support a future version of Windows Phone. It is already clear that Windows Phone 8 will use the same kernel as Windows 8 and we can expect a unified development platform build on the Windows Runtime (WinRT), which does support native code development.

It is not too much of a stretch then to expect a future Qt framework that will target Windows Phone and Windows 8 tablets. Nokia’s Elop has also hinted that it is interested in Windows tablets as well as phones in future.

A quiet revolution in UK government IT: open source ousting big-vendor lock-in

The most striking and surprising presentation at the Monki Gras developer event in London earlier this week was from two quietly spoken men from the UK government’s Cabinet Office. James Stewart and Matt Wall work on the Government Data Service (GDS), and what they are doing is revolutionary.

What is the GDS? “It’s a new branch of the cabinet office which exists to deliver public services, public sector information in-house, rather than the traditional out-sourcing model,” they explained, though it turned out to be rather more than that.

Wall described his experience of talking to government workers about their IT needs.

A common thing you see from very small to very large is someone in government who wants to get something done, who has a business problem or a user need that they want to serve, surrounded by a complex array of integrators, vendors, contractors, suppliers, and all of that, kind-of locked into that, their ability to manoeuvre or deliver services [is limited].

he explained. The only solution is to reform the way software is procured. They described their boss Mike Bracken’s goal:

We want to move from government procuring systems to government commissioning them, whether we build them ourselves, or just that we know what it is we’re asking for. We need that knowledge.

This is also about breaking the hold of the large vendors and finding ways to work on a smaller scale.

If you want to buy something in government, traditionally, some software or some system, the amount of momentum that you have to get up, the amount of people you can easily engage with, they tend to be from companies that are absolutely vast and they tend to take projects that are absolutely vast, the whole mechanism of working is stultifying for everyone involved. It is not just us, a small group of developers sitting in an office able to write some stuff, because that’s not scalable, you can’t do that for everyone. It’s finding small to medium sized companies, partners, out there in the market and finding ways to engage them … why should five very large companies get all the work?

Mike Bracken and the Cabinet Office minister Frances Maude are currently on the West Coast of the USA, they said.

They were invited to meet the usual suspects, Oracle, the major systems integrators. They cancelled it. They’re visiting Joyent, they’re visiting 10Gen, they’re visiting Twilio [applause]. It’s a wholesale change. We’re looking at how great web services are built.

There is also a commitment to open source. “All of the code that we’re producing is open source and out on the Internet,” they said.

What tools do they use?

Most of the core apps are in Ruby, with a mixture of Sinatra and Rails, and some Scala. We’re using a mixture of MySQL and Mongo for the database,

they told us.

The GDS is currently only about 30 people, 10 of whom are developers. How much impact can such a small team have?

We’ve just started and we’re very small. We’re already having a significant impact in some quite large and some quite small projects. The incoming demand that we face across central government and local government is absolutely astronomical, and one of the things that’s important to resolve over the coming years is how to manage that demand and provide services, abilities and communities for people . . . we never want to parachute into somewhere, rewrite all the systems and then go off somewhere else., that’s not sustainable.

Can this small group really change government IT so profoundly? That is an open question, and perhaps in the long term they will fail. There is no doubting though that this particular team is doing inspiring work. This blog post from GDS yesterday describes how open source participation was used to fix a government web site; it may seem a small thing, but as a new and different approach it is significant.

For more information see Mike Bracken’s post This is why we are here, and take a look at the team’s early work on GOV.UK, which is in beta.

image

How to brew better software: The Monki Gras in London

I attended The Monki Gras in London yesterday, a distinctive developer event arranged by the analyst firm RedMonk.

This was not only a developer event, with the likes of Andre Charland and Dave Johnson from the PhoneGap team at Adobe, Mike Milinkovich the executive director of the Eclipse Foundation, and Jason Hoffman with Bryan Cantrill from cloud services (and Node.js sponsors) Joyent. It was also a serious beer event, complete with a range of craft beers, a beer tasting competition with nine brews to try, and a talk plus a free book from  beer expert Melissa Cole. An unusual blend of flavours.

image

In charge of the proceedings was RedMonk co-founder and all round impressario James Governor. I am a big fan of RedMonk and its developer-focused approach; it has been a fresh and heady brew in the dry world of IT analysts.

image

The Monki Gras did seem like an attempt by a regular IT conference sufferer to fix problems often encountered. The Wi-Fi worked, the food was fresh, unusual and delicious, the coffee was superb; though brewing good coffee takes time so the queues were long. Not everything scales. Fortunately this was a small event, and a rare treat for the couple of hundred or so who attended.

That said, there were frustrations. The sessions were short, which in general is a good thing, but left me wanting more depth and more details in some cases; we did not learn much about PhoneGap other than a brief overview, for example.

Nevertheless there was serious content. Redmonk’s Stephen O’Grady made the point succinctly: IT decision makers are ignorant about what developers actually use and what they want to use, which is one reason why there is so much dysfunction in this industry. Part of the answer is to pay more attention, and several sessions covered different aspects of analytics: Matt LeMay from bitly on what users click on the Web; Matt Biddulph (ex BBC, Dopplr, Nokia) gave a mind-stretching talk on social network analysis which, contrary to what some think, was not invented by Facebook but predates the Internet; and O’Grady shared some insights from developer analytics at RedMonk.

I had not noticed before that github now gets nearly double the number of commits than does Google Code. That is partly because developers like git, but may also say something about Google’s loss of kudos in the open source developer community.

Kohsuke Kawaguchi, lead for Jenkins Continuous Integration and an architect at CloudBees, spoke on building a developer community. His context was how Jenkins attracted developers, but his main point has almost limitless application:  “Make everything easy, relentlessly.”

Something I see frequently is how big companies (the bigger the worse) place obstacles in front of developers or users who have an interest in their products or services. Examples are enforced registration, multiple clicks through several complex pages to get to the download you want, complex installs, and confusing information. It all adds friction. If the target is sufficiently compelling, like apps on Apple’s app store, developers will get there anyway; but it all adds friction, and if you are not Apple that can be fatal.

The Joyent guys did not speak about Node.js, sadly, but rather on the distinction between a VP of engineering and a Chief Technology Officer. Sounds dry and abstruse? I thought so too, but the delivery was so energetic that they were soon forgiven. Hoffman and Cantrill moved on to talk about management antipatterns in the software industry, prompting many wry nods of recognition from the audience. “It is very hard for middle management to add value,” said Cantrill.

Milinkovich made the point that the most valued open source projects generally make their way to a software foundation; PhoneGap to Apache is a recent example. He then gave the talk he really wanted to give, noting that as new software stacks emerge they have a tendency to re-implement CORBA, a middleware specification from the Nineties that tackled problems including remote objects, language independence, and transactions across the Internet. CORBA is remembered for drowning in complexity, but Milinkovich’s point is that the creators of exciting new stacks like Node.js should at least research and learn from past experience.

Milinkovich also found time to proclaim that “Flash is dead, Silverlight is dead, browser plugins are dead.” Perhaps premature; but I did not hear many dissenting voices.

I tweeted the conference extensively yesterday (losing at least one follower but gaining several more). Look out also for a couple of follow-up posts on topics of particular importance.

NVIDIA releases CUDA Toolkit 4.1 with LLVM compiler

NVIDIA has released version 4.1 of its CUDA Toolkit for general purpose GPU computing.

image

There is a lot in this release, including a compiler based on LLVM, which will make it easier to support other programming languages; 1000 new imaging functions; and a re-designed visual profiler.

There is also an update to Parallel Nsight, for debugging and profiling CUDA applications in Visual Studio. This is free, though you have to register as an NVIDIA developer. You need this update to work with the 4.1 toolkit.

You do have to update your graphics card driver:

image

using a new build which NVIDIA has not gotten around to signing:

image

Still, lots of goodies here and a must-have for developers wishing to put their NVIDIA GPU to work for more than just games.

Nokia results: hope for Windows Phone?

It is almost one year since Nokia’s dramatic announcement that it would transition its smartphone range to Windows Phone. Today the company released its results for the fourth quarter and for the full year 2011, the first since the release of the the Lumia range of Windows Phone devices. How it is doing?

This is one you can spin either way. The negative view: Nokia is losing money. Sales are down 21% year on year for the quarter and 9% for the full year, and the company reported an operating loss of just over a billion Euro for the year, most of which was in the last quarter.

If you look at the quarter on quarter device sales, they are down in both smart devices and mobile phones. The Symbian business has not held up as well as the company hoped:

changing market conditions are putting increased pressure on Symbian. In certain markets, there has been an acceleration of the anticipated trend towards lower-priced smartphones with specifications that are different from Symbian’s traditional strengths. As a result of the changing market conditions, combined with our increased focus on Lumia, we now believe that we will sell fewer Symbian devices than we previously anticipated.

says the press release. As for Windows Phone and Lumia, CEO Stephen Elop says that “well over 1 million Lumia devices” have been sold: a start, but still tiny relative to Apple iOS and Google Android. Elop cleverly calls it a “beachhead”, but given the energy Nokia put into the launch I suspect it is disappointed with the numbers.

Put this in context though and there are reasons for hope. First, Nokia’s speed of execution is impressive, from announcement to the first Windows Phones in nine months or so. Further, the Lumia (judging by the Lumia 800 I have been using) does not feel like a device rushed to market. The design is excellent, and within the small world of Windows Phone 7 hardware Nokia has established itself as the brand of first choice.

Second, despite the dismal sales for Windows Phone 7 since its launch, there are signs that Microsoft may yet emerge from the wreckage inflicted on the market by iOS and Android in better shape than others. WebOS has all-but gone. RIM has yet to convince us that it has a viable recovery strategy. Intel Tizen is just getting started. If Microsoft has a successful launch for Windows 8, Elop’s “third ecosystem” idea may yet come to fruition.

Third, Nokia has already shown that it is better able to market Windows Phone 7 than Microsoft itself, or its other mobile partners. Lumia made a good splash at CES in January, and the platform may gain some market share in the influential US market.

Nokia is not just Windows Phone though, and even if its smartphone strategy starts to work it has those falling Symbian sales to contend with. It will not be easy, even taking an optimistic view.

Nor will it be easy for Windows 8 to succeed in a tablet market owned by Apple at the high end and by Amazon/Android at the low end.

Why Microsoft is scrapping the MIX conference

Microsoft is scrapping its MIX conference, according to General Manager Tim O’Brien:

we have decided to merge MIX, our spring web conference for developers and designers, into our next major developer conference, which we will host sometime in the coming year. I know a number of folks were wondering about MIX, given the time of year, so we wanted to make sure there’s no ambiguity, and be very clear… there will be no MIX 2012.

O’Brien says that MIX started in the aftermath of the 2005 PDC because:

there was a lot of discussion around our engagement with the web community, and how we needed a more focused effort around our upcoming plans for Internet Explorer, the roadmap for our web platform, the work we were starting on web standards (we were shipping IE6 at the time), and so on.

That is not quite how I recall it. PDC 2005 was the pre-Vista PDC, no, not the “three pillars of Longhorn” in PDC 2003, but the diluted version of Longhorn that was actually delivered as Windows Vista. One thing Microsoft really did get around this time was that design mattered. Apple had cool design, Adobe had cool design (and a strong grip on the designer community), but Microsoft did not.

Windows Presentation Foundation (WPF) was intended to win designers to the Windows platform, with its graphically-rich and multimedia-friendly API. In order to do this, the company needed to win designers over to the idea of using Expression Blend rather than Adobe Flash and Photoshop.

This was doubly true when Microsoft decided to bring WPF to the browser in the form of Silverlight, a decision that was announced at PDC 2005 and expanded on at the first MIX in 2006.

One of the things I recall at the first and second MIX events were groups of bemused Flash designers who had been bussed in by Microsoft to enjoy the lights of Vegas and learn about Blend.

General web authoring was a factor as well, as Microsoft sought to bring Internet Explorer back on track and to persuade web designers of the virtues of Microsoft’s web platform.

I enjoyed the MIX events. They were small enough that you could easily get to speak both to attendees and to the Microsoft folk there, and once you allow for the fact that Vegas is Vegas, the atmosphere was good.

As an attempt to appeal to designers though, MIX was a failure. It was all too forced; many of the people attending were developers anyway; and Microsoft itself included more and more developer content in ensuing MIX events.

The 2010 MIX was hijacked by Windows Phone 7, an interesting topic but drifting far from the original intentions.

It comes as no surprise to hear than MIX is no more. It is associated with WPF and Silverlight, neither of which are now strategic for Microsoft in these days of Windows 8 and the Windows Runtime (WinRT).

That said, Microsoft still has difficulty appealing to designers.

What next then? O’Brien says:

we look ahead to 2012 and beyond, the goal is to ensure that global Microsoft developer events are of the caliber that many of you experienced at BUILD last September, in addition to the thousands of online and local developer events we host around the world to support communities and connect directly with developers. We will share more details of our next developer event later this year.

image

PHP Developer survey shows dominance of mobile, social media and cloud

Zend, a company which specialises in PHP frameworks and tools, has released the results of a developer survey from November 2011.

The survey attracted 3,335 respondents drawn, it says, from “enterprise, SMB and independent developers worldwide.” I have a quibble with this, since I believe the survey should state that these were PHP developers. Why? Because I have an email from November which asked me to participate and said:

Zend is taking the pulse of PHP developers. What’s hot and what matters most in your view of PHP?

There is a difference between “developers” and “PHP developers”, and much though I love PHP the survey should make this clear. Nevertheless, If you participated, but mainly use Java or some other language, your input is still included. Later the survey states that “more than 50% of enterprise developers and more than 65% of SMB developers surveyed report spending more than half of their time working in PHP.” But if they are already identified as PHP developers, that is not a valuable statistic.

Caveat aside, the results make good reading. Some highlights:

  • 66% of those surveyed are working on mobile development.
  • 45% are integrating with social media
  • 41% are doing cloud-based development

Those are huge figures, and demonstrate how far in the past was the era when mobile was some little niche compared to mainstream development. It is the mainstream now – though you would get a less mobile-oriented picture if you surveyed enterprise developers alone. Similar thoughts apply to social media and cloud deployment.

The next figures that caught my eye relate to cloud deployment specifically.

  • 30% plan to use Amazon
  • 28% will use cloud but are undecided which to use
  • 10% plan to use Rackspace
  • 6% plan to use Microsoft Azure
  • 5% have another public cloud in mind (Google? Heroku?)
  • 3% plan to use IBM Smart Cloud

The main message here is: look how much business Amazon is getting, and how little is going to giants like Microsoft, IBM and Google. Then again, these are PHP developers, in which light 6% for Microsoft Azure is not bad – or are these PHP developer who also work in .NET?

I was also interested in the “other languages used” section. 82% use JavaScript, which is no surprise given that PHP is a web technology, but more striking is that 24% also use Java, well ahead of C/C++ at 17%, C# at 15% and Python at 11%.

Finally, the really important stuff. 86% of developers listen to music while coding, and the most popular artists are:

  1. Metallica
  2. = Pink Floyd and Linkin Park

Wow.

The mystery of unexpected expiring sessions in ASP.NET

This is one of those posts that will not interest you unless you have a similar problem. That said, it does illustrate one general truth, that in software problems are often not what they first appear to be, and solving them can be like one of those adventure games where you think your quest is for the magic gem, but when you find the magic gem you discover that you also need the enchanted ring, and so on.

Recently I have been troubleshooting a session problem on an ASP.NET application running on a shared host (IIS 7.0).

This particular application has a form with some lengthy text fields. Users complete the form and then hit save. The problem: sometimes they would take too long thinking, and when they hit save they would lose their work and be redirected to a login page. It is the kind of thing most of us have experienced once in a while on a discussion forum.

The solution seems easy though. Just increase the session timeout.  However, this had already been done, but the sessions still seemed to time out too early. Failure one.

My next thought was to introduce a workaround, especially as this is a shared host where we cannot control exactly how the server is configured. I set up a simple AJAX script that ran in the background and called a page in the application from time to time, just to keep the session alive. I also had it write a log for each ping, in order to track the behaviour.

By the way, if you do this, make sure that you disable caching on the page you are pinging. Just pop this at the top of the .aspx page:

<%@ OutputCache Duration="1" Location="None" VaryByParam="None"%>

It turned out though that the session still died. One moment it was alive, next moment gone. Failure two.

This pretty much proved that session timeout as such was not the issue. I suspected that the application pool was being recycled – and after checking with the ISP, who checked the event log, this turned out to be the case. Check this post for why this might happen, as well as the discussion here. If the application pool is recycled, then your application restarts, wiping any session values. On a shared host, it might be some else’s badly-behaved application that triggers this.

The solution then is to change the way the application stores session variables. ASP.NET has three session modes. The default is InProc, which is fast but not resilient, and for obvious reasons not suitable for apps which run on multiple servers. If you change this to StateServer, then session values are stored by the ASP.NET State Service instead. Note that this service is not running by default, but you can easily enable it, and our helpful ISP arranged this. The third option is to use SQLServer, which is suitable for web farms. Storing session state outside the application process means that it survives pool recycling.

Note the small print though. Once you move away from InProc, session variables are serialized, not just held in memory. This means that classes must have the System.Serializable attribute. Note also that objects might emerge from serialization and deserialization a little different from how they went in, if they hold state that is more complex than simple properties. The constructor is not called, for example. Further, some properties cannot sensibly be serialized. See this article for more information, and why you might need to do custom serialization for some classes.

After tweaking the application to work with the State Service though, the outcome was depressing. The session still died. Failure three.

Why might a session die when the pool recycles, even if you are not using InProc mode? The answer seems to be that the new pool generates a new machine key by default. The machine key is used to encrypt and decrypt the session values, so if the key changes, your existing session values are invalid.

The solution was to specify the machine key in web.config. See here for how to configure the machine key.

Everything worked. Success at last.