Tag Archives: development

Do you miss manuals? Why and why not …

It’s that time of year. I keep more than I should, but now and again you have to clear things out. I don’t promise to dispose of all of these though: they remind me of another era, when software came in huge boxes packed with books.

image

If you purchased Microsoft Office, for example, you would get a guide describing every feature, as well as an Excel formula reference, a Visual Basic reference and so on.

If you purchased a development tool, you would get a complete language reference plus a guide to the IDE plus a developer guide.

The books that got most use in my experience were the references – convenient to work on a screen while using a book as reference, especially in the days before multiple displays – and the developer guides. You did not have to go the way the programmer’s guide suggested, but it did give you a clue about how the creators of the language or tool intended that it should be used.

Quality varied of course, but in Microsoft’s case the standard was high. When something new arrived, you could learn a lot by sitting down with just the books for a few hours.

What happened to manuals? Cost was one consideration, especially as many were never opened, being duplicates of what you had already. Obsolescence went deeper than that though. Manuals were always out of date before they printed, especially when update distribution was a download rather than a disk sent out by support (which means from the nineties onward).

Even without the internet, manuals would have died. Online help is cheaper to distribute and integrates with software – press F1 for help.

Then add the power of the web. Today’s references are online and have user comments. Further, the web is a vast knowledgebase which, while not wholly reliable, is far more productive than leafing through pages and pages trying to find the solution to some problem that might not even be referenced. In many cases you could post a question to StackOverflow and get an answer more quickly.

Software has bloated too. I am not sure what a full printed documentation set for Visual Studio 2013 would look like, but it would likely fill a bookshelf if not a room.

When software companies stopped sending out printed manuals, the same books were produced as online (that is, local, but disk-based) help. Then as the web took over more help went to the web, and F1 would either open the web browser or use a help viewer that displayed web content. There are still options for downloading help locally in many development tools.

Nothing to miss then? I am not so sure. It strikes me that the requirement to deliver comprehensive documentation was a valuable discipline. I wonder how many bugs were fixed because the documentation team raised a query about something that did not seem to work right or make sense?

Another inevitable problem is that since documentation no longer has to be in the box (or in the download), some software is delivered without adequate documentation. You are meant to figure it out via videos, blog posts, online forums, searches and questions.

A good documentation team takes the side of the user – whether end user, developer, or system administrator, depending on context. They write the guide by trying things out, and goad the internal developers to supply the information on what does and does not work as necessary. That can still happen today; but without the constraint of having to get books prepared it often does not.

Microsoft Project Siena: another go at the spirit of Visual Basic

Remember Visual Basic? By which I mean, not the current language that is a case-insensitive alternative to C# that does much the same thing, but the original rapid app development tool that democratised Windows development back in 1991. At the time, Windows development was a sought-after skill but rather difficult. VB meant anyone could create an application; pros could build excellent ones, amateurs something ugly and unmaintainable, but nevertheless something that worked. The transition to .NET brought many benefits, but also more complexity. The latest evolution of the Windows client, the Windows Runtime, is also challenging to get right (I am currently writing a simple C# game on the platform).

Microsoft has been looking for a new “VB” for years. 2007: Popfly (now abandoned). 2011: Lightswitch. Now we have Project Siena.

image

Siena is an app for building apps. An app is a Siena document with a .siena extension. Here is what Microsoft’s Bryan Group says:

Microsoft Project Siena (code name) is the beta release of a new technology for business experts, business analysts, consultants, and other app imagineers. Now, without any programming, you can create powerful apps for the device-first and cloud-connected world, with the potential to transform today’s business processes.

Building Siena apps is as easy as editing a document. Place some visuals on a canvas. Hook them up to your data. Customize how your app looks and works. Then, if you need special logic and intelligence, write Excel-like expressions. You can use your app immediately, or share it with colleagues or the world.

This sounds great to me. I installed it and set about building an app. I decided to create the same app I have used to try out dozens of programming tools over the years: a to-do list with the ability to add and remove tasks

image

Building the user interface went OK, but how do I add and remove items from the list? I have got as far as figuring out that I need to type the right magic into the OnSelect property of a button:

image

I will let you know when I have worked out what to do next. I will observe that the environment is geared towards data binding, rather than directly updating the user interface, and remote data, such as binding to tables in Azure Mobile Services, a REST API, an RSS feed or a SharePoint list. However you can also bind to an Excel spreadsheet for local data.

Unfortunately there is no “Run” button. You can preview your Siena app by pressing F5 or tapping the Run button in the top app bar.

To deploy your Siena app, you hit Publish:

image 

This creates a package of files, including InstallApp.exe. Siena generates HTML and JavaScript so you can learn a lot about the environment by poking around in the generated files.

image

Run InstallApp.exe and the app installs into your local PC. Mine runs fine, it just does not work yet.

Siena, as is usual for this type of release, suffers from lack of documentation. There is a function reference and a few sketchy help topics. There are also some sample apps. Here is what the Personnel Manager has in the OnSelect of its Add button; perhaps this is a clue:

UpdateIf(Assoc,ID = ThisItem!ID,{AssignedTo:SelectedDepartment, Time:Now()}); RemoveIf(SelectedAssociates, ID = ThisItem!ID)

While it is great to have a genuinely easy visual interface builder, the development features of Visual Studio are greatly missed; the code editor as far as I can tell is limited to a single line in a text input field, though you do get a squiggly underline if you do it wrong, and a bit of code completion.

How is the average “business expert, business analyst, consultant, and other app imagineer” going to get on with Project Siena? That is the question; and in the current preview I’d guess they will be flummoxed and go straight back to Excel or Access, though I would love to be proved wrong.

It looks like a lot of work has gone into this though, and no doubt better documentation and enhanced features are on the way.

ComponentOne’s TouchToolkit for Windows Forms: another approach to the Windows tablet problem

Software component vendor ComponentOne has released Studio Enterprise 2013 v2.5, the latest in its suite of components, with support for Windows 8.1 and Visual Studio 2013.

The piece that caught my eye is the TouchToolkit for Windows Forms.

image

Here’s the problem. The Windows desktop is poor with touch control, which is why Microsoft created Windows 8 with its alternate, touch-friendly Windows Runtime platform. However users are resistant to the changed user interface, and it does not help with existing desktop apps.

Developers are also faced with a question of simple mathematics. Develop a Windows 8 Store app, get a market of x. Develop a Windows desktop app, get a market of many times x, since Windows 8 can run desktop apps, but Windows 7 cannot run Store apps.

Embarcadero approached this problem with a framework called Metropolis, for Delphi and RAD Studio. It builds apps that mimic the Windows Runtime look and feel, but which are actually desktop apps. Of course they do not run on Windows RT, the ARM version. It is a confusing solution in my opinion, leading users into what Martin Fowler calls the Uncanny Valley, where stuff works almost but not quite how you expect.

I prefer the thinking behind the TouchToolkit. Take your existing Windows Forms apps, or write a new one, using these controls to make them more touch-friendly. They will never be as well suited to touch control as a Store app, but they might be good enough, and of course will run on Windows 7 and earlier versions.

The controls include a magnifier, support for zoom gestures, and a touch event provider that adds gesture support to any control.

Windows Forms, we all know, is not as good as WPF if you want an application that scales nicely and supports modern design. On the other hand, Windows Forms is pragmatic and easy to use framework that remains popular for line of business apps.

Microsoft completes Windows 8.1, it says, but developers are unable to test their apps

Microsoft has released Windows 8.1 to its hardware partners according to VP Antoine Leblond; but developers will be unable to test whether or not their apps work on the updated operating system until it is also in the hands of users:

While our partners are preparing these exciting new devices we will continue to work closely with them as we put the finishing touches on Windows 8.1 to ensure a quality experience at general availability on October 18th. This is the date when Windows 8.1 will be broadly available for commercial customers with or without volume licensing agreements, our broad partner ecosystem, subscribers to MSDN and TechNet, as well as consumers.

One reason for subscribing to MSDN is to get early access to new versions of Windows for test and development, so this is a surprising and disappointing move.

We pay thousands for MSDN access so we can test our software/apps properly, early testing, before GA, is an important part of that process! We don’t care about a couple of bugs in your OS, we about bug in our software. Most of us actually want to support Windows 8.1, a lot of us want to get apps ready for the awesome 8.1 features, but we can’t properly do that unless we get the RTM bits before the public gets the Windows 8.1 update!

says one comment to Leblond’s post.

It is hard to make sense of Microsoft’s reasoning here, though Microsoft’s Brandon LeBlanc comments that despite the RTM (Release to Manufacturing), Windows 8.1 is not altogether finished:

We are continuing to put the finishing touches on Windows 8.1 to ensure a quality experience at general availability

he says.

Windows 8 needs more high quality apps in order to win users over to its new tablet-friendly user interface, so it is unfortunate that Microsoft is not doing more to help developers support it.

Microsoft’s MSDN changes: too much marketing

Microsoft has updated its developer site, MSDN (Microsoft Developer Network). Simple, relevant and community driven, says Product Manager Brian Harry in a post introducing the new site.

image

Developers are not convinced that it is an improvement. The comments to Harry’s post are pretty damning, in fact. The core complaint is that the new MSDN home page is not a developer site, but a marketing site. Click on those “Use your skills” buttons and you get not technical references, but marketing pitches. They are misleading too. Click on “I build web apps” and you get a pitch for Windows Store apps build with HTML and JavaScript – and no mention of ASP.NET or Windows Azure.

image

What do developers want? Here’s a good suggestion:

Why don’t you have your team work on changes to MSDN that people would actually want? Like editable blog comments with formatting and code snippet options? Or Connect/UserVoice sites that aren’t horrific and disjointed? Or adding the TypeScript blog to the Dev Tools blog feed (something I’ve mentioned a half dozen times already to various people at MS, you’d think this 5 second update might make it into someone’s queue after TypeScript being out for almost a year now)?

I just cannot fathom how you guys are so adamant that listening to developers is important to you when 99% of feedback is ignored in lieu of changes that no one asked for and no one wants.

Most people come to MSDN in search of technical information. I suspect the strong marketing pitch for Windows Store apps will be counter-productive.

On the other hand, present developers with a fast, coherent, logically organised technical resource so that you can easily find both the API reference for the platform you are targeting, and comments and help with using it, and this will attract them and make them want to use the platform more often.

Microsoft’s Windows 8 app problem will not be solved by incentivising junk

Microsoft has launched a “Keep the cash” offer to developers. Publish up to 20 apps, 10 for Windows Phone and 10 for Windows 8, and get $100 for each of them.

image

The offer is little use for most of the world. The terms state that “Offer good only to legal residents of the 50 United States & D.C. aged 18 or older”.

It is little use for Microsoft either. How much development time does $100 buy? Still, there is a way to make sense of it for hobbyists or developers with some spare time. What you do is to create one of those apps that does very little but is specific to something like a particular sports team or pop star, and maybe searches the web for news about them. Then you replicate it 10 times over for 10 different teams or celebrities. Then you adapt it for both phone and Windows 8 store. That’s 20 apps, $2000.

In other words, the only thing this will achieve is to increase the amount of dross in these two stores. Microsoft is pumping the numbers, so that there is an appearance of success on the most naive analysis, counting the apps.

Incidentally, this is something that Windows Store VP Antoine LeBlond assured me Microsoft would not do, at the launch of Surface RT in New York last year.

Does Microsoft have an app problem? Yes, particularly on Windows 8. Windows Phone 8 is less of a problem; Microsoft’s phone is actually building some momentum from what I can tell and app availability is not too bad, despite some gaps such as Instagram and BBC iPlayer.

The app problem is nothing to do with quantity though. 10 good apps for the Windows Store is worth more to the platform than 10,000 poor ones. In fact, filling the store with junk is a negative that will cement the perception that there is little there that is worthwhile.

Rather, the app problem is the consequence of several factors:

1. The development platform is not good enough. Most things can be done, but not easily, and the default look and feel results in blocky apps that tend to scale badly on big screens. The built-in controls are too primitive. The user interface is insufficiently intuitive and users struggle to discover the menus and features hidden in the Charms bar.

2. Microsoft has so far failed to establish Windows 8 as a tablet platform. The reasons are complex and to do with the Windows heritage, the way OEM and retail partners treat Windows, and the fact that there are other tablet platforms (iOS and Android) out there which meet the need for many people.

3. Windows 8 is out there in reasonable numbers, but most users spend most of there time in the desktop, making the Windows Store app platform less successful than the quantity deployed would suggest.

4. Businesses are mainly standardising on Windows 7, not Windows 8, to the detriment of the new app platform.

In this context, the best thing that could happen for Windows 8 is the appearance of new compelling apps that will drive users to the underused tablet personality. Microsoft could and should do some of those (there are a few efforts, like Fresh Paint).

Those apps, though, will not be developed for $100. They will be developed either by enthusiasts who love the platform (which will not happen until the platform is improved), or by businesses who invest real money and effort in building them.

As it is, this misguided initiative does little other than to draw attention to the problems Microsoft has with its new Windows.

The Monki Gras London 2013: scaling craft, how to be happy at work, defining software excellence, and lots of beer

I attend numerous technical events, most of which are vendor-specific. There is nothing wrong with vendor-specific events. If you want to explore what is on offer from that vendor and quiz  their people, they are ideal. You will be aware though that they are promotional events and give you a skewed view of the world, for which you need to make allowance.

Therefore I particularly value events which are not vendor-specific. They may still offer a skewed view of the world, but at least it is vendor-neutral. Redmonk’s Monki Gras is one such, managed by analyst company RedMonk, in particular by its co-founder James Governor.

image

The event is small, with around 200 attendees, with a bias towards software developers. Seeing the picture above you will observe that it is not entirely vendor-neutral, in that it is sponsored by companies including Amazon, Adobe, twilio, Red Hat, Citrix, SAP and Heroku. Multi-vendor then, rather than vendor-neutral? Arguable, but there was little patience for product pitches and the event was one which was able to hear Basho’s Shanley Kane telling us to discard all our tools (a move unlikely to please vendors), so on a scale where zero is pure marketing fluff and ten searing honesty, I would award it at least an eight.

The Monki Gras is not just about technology. It is also about craft beer. This its second year, and there was even more beer content this time around. Possibly (said sotto voce) more than you might prefer if you have only a passing interest in the subject; but if so, perhaps this was not the right event for you.

image

Why the beer? Because developers like it. Because it is a craft that does not scale easily. Because it is characterful, flavoursome and distinctive, and individual examples aspire to excellence, all qualities that I suspect Redmonk value.

The combination of Redmonk values, generous sponsors and small size make this an event with exceptional catering. Not only craft beer, but also fresh fruit, Sushi, fresh ground coffee prepared by a skilled barista, and at the evening event, a breathtakingly good selection of cheeses of which I got to taste only a few slivers because my hotel arrangements required an early departure.

image

One of the ironies of the Monki Gras is that this kind of excellence does not scale well, with long queues for coffee and lunch, and on the Thursday evening one of the slowest meals I have attended. I left after three hours by which time it had reached the third course, but missed dessert and cheese. Good things take time and I guess this is all part of the Monki Gras experience.

What about the technical content? Technical may be the wrong word; and the published agenda is only an approximate guide. A Twitter search is one way to discover what was said; or you can check my tweets for those days; despite poor wifi there were enough smart gadgets that plenty of tweets got through. The focus was on the human aspect of software development, summed up for me by Cyndi Mitchell of Logspace and Thoughtworks, who said:

Software is fundamentally a human, interactive activity – if you don’t understand that, forget it.

Here are some other highlights, not comprehensive, but some of the things which caught my attention.

Rafe Colburn from Etsy who observed that to improve the craft of software development, you need to make time available by automating whatever you can.

Craig Kersteins and Matt Thompson from Heroku talked about developer productivity, with the startling statistic (I have no idea how they get these figures) that 76% of the worst-performing engineers suffer frequent interruptions. Software development needs focus; they suggested 4 hours of continuous uninterrupted work each day. At Heroku they use headphones as a “do not disturb” sign and respect that.

That risks the opposite danger, lack of communication. Hence another Heroku strategy is to give staff free lunch with long tables, to promote communication, and slow coffee machines that make a jug at a time, to promote sharing and collaboration.

Mazz Mosley and Nick Stenning from the Government Digital Service – which is transforming UK government IT from the inside, with generous use of open source and common sense – spoke on not recruiting developer rock stars, who create a single point of failure in your team. Rather, they aim to nurture collective intelligence.

This talk went down well at the Monki Gras, but while the thought makes sense, it intrigues me. Could the same person who becomes a “rock star” in one team be part of “collective intelligence” in another? Is not this more about how you manage your team, than how you recruit? And could a key leader that creates such a team be a bit of a rock star for doing so?

Phil Gilbert from IBM spoke about transforming IBM’s software products with design and rationalisation. The slide that has stayed with me showed how 20+ products in the areas of business process management were consolidated into two or three.

Chris Thorpe from Boffin talked about steam engines and 3D printing. Using 3D printing, steam engines can be repaired, while in another context model railway enthusiasts can get models in whatever size they want.

Steve Citron-Pousty from Red Hat gave us a sideways look at technology by talking about ecosystems. How do you nurture a vibrant ecosystem as opposed to one in which just a few creatures dominate? The answer is about monitoring, measuring, and testing hypotheses.

Ted Nyman at GitHub gave a memorable talk on being happy at work. His answer: no managers.

image

He described how GitHub is managed: nobody reports to anyone else, decisions are made by consensus, teams form naturally, nobody is forced to do anything, but individuals are highly motivated because they have authenticity and autonomy. Employees are happy and nobody ever quits. “Developers are awkward people, accept awkwardness,” he added.

This was another thought-provoking talk. How much of GitHub’s management model would translate or scale to other businesses? Does it depend on having smart, highly motivated team members? Will it work for ever, or end in disaster? Is Nyman’s description accurate, or are there disguised channels of authority which he did not articulate?

Day two, Friday, opened strongly. I have already mentioned Shanley Kane’s talk. She addressed the problem of dishonesty in software development, explaining that software roadmaps which show features on a timeline are inherently dishonest and cause erosion of trust. Developers have a responsibility to explain to others in the business that development does not work like that. Her suggested alternative is some sort of interactive document covering “what we’re working on”.

Cyndi Mitchell, also mentioned above, talked about excellence in software development. This is not just about technically sound code, but is multi-faceted, including business value, customer value, user experience, delivery and operations as well. It was another take on a common theme in Agile: the team is everyone, not just the developers.

Chris Aniszczyk from Twitter spoke about open source software. Twitter always evaluates open source options before risking wheel reinvention by cutting new code. He also advocates always writing code on the assumption that it will one day be open source. This promotes high quality APIs, sensible naming conventions, and other good things. Twitter aims to give code that is not its “secret sauce” back to the community, he said. However, Twitter avoids code with viral open source licenses like the GPL; it causes too many problems, he said.

An intriguing aside; Aniszczyk says that Twitter acquires companies to get the people, since “you can’t hire engineers these days.” This may create an open source project, as the code that company was working on is given away/abandoned to the community. I am not sure what examples of this process there are.

After that, there was lunch, more beer, brewers spoke, and a wood carver competed with a 3D printer to make a spoon; I’ve written about this here.

Lee Bofkin from Global Street Art spoke about street art. Where we see a wall or an alley, he said, a street artist sees a place that can be transformed with art. His slides were wonderful; check the Global Street Art site for a flavour.

image

There is no event quite like the Monki Gras; it was not deeply technical but was rich in ideas. Plenty to reflect on.

Java software quality: frameworks good, Struts or C++ bad says report

CAST has released an intriguing report on Java applications and software quality.

The company analysed 497 applications, comprising 152 million lines of code across 88 organisations and six global industries. It then looked at how software quality correlated with frameworks used.

◾Hibernate has the highest quality scores.
◾Applications built with Struts have the lowest quality scores.
◾Applications that did not use any framework had a huge variance in quality, which indicates that frameworks do in fact help develop applications of predictable quality.

A further investigation looked at what happens to software quality in mixed language applications:

◾Applications built in pure JEE, with no frameworks or multi-lingual mingling, had the highest quality scores.
◾Mixing Java with C or C++ lowers quality scores.
◾Mixing Java with COBOL, Java-DB, and Microsoft .NET delivered higher quality scores.

Frameworks are good but pure J2EE is better? Mixing with C/C++ lowers software quality, but mixing with .NET or COBOL raises software quality? These are odd results, and I wonder if this research is correlating the right factors. Here is a clue:

One common challenge for developers with framework usage is configuring them correctly. CAST data shows that a large majority of applications analyzed had some level of misconfiguration, indicating the need for better training or to simplify the use of frameworks.

I have a hunch that what this research really tells us is that the most competent developers deliver the highest quality code. Maybe the smartest developers do not use Struts.

Hacking Windows RT and Surface RT to run desktop apps

A developer on the XDA Developers forum, known as clrokr, has figured out how to run unsigned applications on Windows RT (Windows on ARM), including Microsoft’s own-brand Surface RT device.

The technique is described here and involves patching the Windows kernel. Currently it is not possible to jailbreak Windows RT completely, because Secure Boot prevents tampering with the system files, but it can be done after booting by using the remote debugger:

The minimum signing level determines how good an executable’s signature is on a scale like this: Unsigned(0), Authenticode(4), Microsoft(8), Windows(12). The default value on x86 machines is of course 0 because you can run anything you like on your computer. On ARM machines, it defaults to 8.
That means that even if you sign your apps using your Authenticode certificate, the Surface or any other Windows RT device (at this moment) will not run them. This is not a user setting, but a hardcoded global value in the kernel itself. It cannot be changed permanently on devices with UEFI’s Secure Boot enabled. It can, however, be changed in memory.

There is further discussion on the forum here. The technique is not practical for most users yet.

According to clrokr:

The decision to ban traditional desktop applications was not a technical one, but a bad marketing decision. Windows RT needs the Win32 ecosystem to strengthen its position as a productivity tool. There are enough “consumption” tablets already.

Personally I have mixed feelings about this. If I understand the concept correctly, Windows RT is meant to have iPad-like ease of use as well as excellent security. Configuring the operating system so that only code signed by Microsoft or Windows Store apps will run is a key part of the implementation. Surface RT is not as good as it should be, in part because there is too much old-style Windows, not too little.

On the other hand, the usefulness of Windows RT is limited by the absence of key apps. There are certain things missing, like the ability to play FLAC files, and until recently, an SSH terminal client (there is one now). Looking at the thread on XDA Developers, note that among the first things users are keen to port are putty (open source SSH client) and VLC (open source multimedia player).

image

That said, personally I would rather see suitable apps come to the Windows Store, rather than introduce all the problems and complexities of desktop Windows to Windows RT.

Telerik acquires Fiddler

Windows component vendor Telerik has acquired Fiddler, a free tool for inspecting and modifying web traffic, usually used to test and debug network and application issues. The announcement states that Fiddler’s creator Eric Lawrence, currently at Microsoft, is joining Telerik’s testing division.

The story seems to be that Fiddler was a spare time activity for Lawrence, who will now be able to focus on it exclusively. Telerik’s Christopher Eyhorn says:

This was a natural extension because Fiddler is already in use as the core technology behind Test Studio’s load and performance features.  Additionally, we gain a formidable competitive edge over other tools as both Eric and Fiddler join the Test Studio product family.

Eyhorn also refers to “our commitment to keeping Fiddler free and making further investments into the tool,” so it looks as if its freeware status is safe for the time being. Fears for its future have already been expressed, but Eyhorn says:

Please don’t judge us by the actions of our competitors; we will earn your trust through our actions.

He adds that Fiddler is installed over 10,000 times every weekday. The website has attracted over 5 million unique visitors so far this year, showing that maintaining a popular freeware tool represents a great PR opportunity.