5 Jan 2012

Placing a bet on the next 2-3 years...

Quo Vadis?


This post is all about predicting the future (sadly, not in the Alan Kay way of inventing the future) for the next development platform. At Appsolo, we've developed a number of reasonably complex line-of-business systems with some focus on UI. Coming as we do from a background of MS, we took our .NET knowledge and coupled it with Silverlight to provide a cross-browser, highly interactive UX solution to any number of needs.


It's time to reassess that decision in light of where the market is going and with the benefit of our experience of that 'extended test-drive'. For those with short attention spans the take-away point is: Silverlight is terminally ill and the disease is partly MS but mostly the industry. It's what makes the business so much fun but it can be a little stinging when you have to say goodbye to a platform that for better or worse has taken a lot of your attention over, in our case, 2-3 years.


I like the idea of Silverlight. Here's the up-side:
  • The mark-up for the UI is comfortably easy to separate from the code-behind. 
  • The tools (VS2010/Blend) are competent and best in market. 
  • MS makes the tools largely free to develop and deploy.
  • Community support is broad and deep and shows no sign of abating given the number of .Net developers.
  • It scales well and executes well.
  • It provides good coverage catering well for line-of-business apps.
Now the downsides:
  • MS is screwed up. Okay, unfair, but sometimes it feels there are whole divisions there that aren't aware of the direction other divisions are heading. Currently, it seems they realise this is a bad thing and are saying nothing - an improvement, I guess.
    For example, the stupefying silence in the months running up to Build last Sept '10 only stoked the discontent among developers. What was announced is still very unclear and certainly does nothing to assuage the anxiety among those who have invested in Silverlight.
    Developer support is key to success for any platform and it amazes me how MS treats this valuable resource with this absence of clear direction. I don't see how MS can embrace all that is good about HTML5 and on the other hand support Silverlight - they're chasing the same ball.
  • .Net is complicated. Often, even the simplest things can cause immense pain. I recall spending 'long time' getting a simple combo-box lookup working in a data form. Things that common should be handled well. Equally, data binding is a great thing in theory but in practice without debug support, it's like trying to find your way out of a darkened room.
  • As apps start to become increasingly distributed across client and server, I'm not sure the one-stop shop solution of Silverlight works. Keeping track of the n-tiers across an app and their interplay becomes tricky. I'm more inclined to employ web services to create bulk-heads between the various responsibilities.
  • The tools while brilliant in places are still under-whelming for XAML creation and debugging.
The Real Problem with Silverlight


Silverlight has grown up but so has the web. We're entering the post-plugin era. Web is becoming mobile - and in a hurry. New devices are populating the web space ranging from cellphones, through tablets, ultrabooks, desktops and televisions. These devices will pollute the destination space for our web apps (and they're all apps now, no longer sites). Right now businesses (and developers) are struggling to target the Apple AppStore, Android Marketplace, Blackberry App World (and a few at Windows Phone Marketplace!) not to mention the desktop and web.


All these have very different development stacks. I can't see this as sustainable from a development perspective. However, equally, I don't see this space simplifying. There's too much market to chase and plenty market segments to target. For example, Apple are content to (currently) address the AB socio-economic group. Android, given Google's price for the OS (free) is helping the likes of HTC and Samsung flood the B2DE (lower-middle and below) with cheap handsets - watch as the continent of Africa takes off. The market for smartphones is huge - China has 122m people who do not yet have an Android/iOS phone - and can afford one.

The Answer


But as developers we need a way to address these disparate platforms. The web, in short, is the answer. And after a few false dawns, HTML5 is widely accepted (Apple, Microsoft, Adobe, Google), rapidly developing and provides excellent coverage. By HTML5, I mean html, javascript and css3. All of these have matured well in recent years. They provide excellent application at the client end. CSS3 rivals the best of Silverlight styling. Javascript has some excellent libraries that leverage its exalted position as the only widely supported client-side executable language:
This development services not only web browsers, but rapidly is supplanting desktop apps in the process. With improvements in browser performance and older, less html5-compliant (goodbye IE6!) browsers rapidly disappearing - even MS is moving to auto-upgrade from IE8 - this trend will continue. Add the cloud to the mix, on-the-go access and employer's acceptance of more flexible work practices, the need to limit an app to the desktop is disappearing.

Android OS Fragmentation
The Why


The final frontier is the more relevant - mobile. This is the prize. Even within the mobile marketplace which itself is fragmented (iOS, Android etc.), there is even further fragmentation (Android). This fragmentation is not going away. Thanks to the likes of Phonegap, Rhomobile, Mobl and MobileWebAmerica, HTML5 apps can be packaged like native apps and ship via the 'golden goose' that is the AppStore (or equivalent). This gives us a single code base for all platforms (iOS, Android, Windows 7, mobile web) as well as rapid testing and deployment.

There are of course other directions. WinRT, for example, is something MS are very excited about. I don't know if I have the stomach for yet another layer - and for desktop deployment. Of course, I haven't spoken here about server-side. Here I see the situation less convoluted. PHP (and its excellent frameworks) are a popular choice. ASP.NET, especially the MVC3 flavour, is another good choice, though still much less popular, though hosting (and development tool) costs are now on a par with PHP. It's more a personal choice than anything more deep-routed.


As is ever the case, these decisions are only temporary. New platforms, new stacks, new tools constantly shift and mould the landscape for developers. That's what makes it so darn exciting...

4 Aug 2011

Extending your Wi-Fi signal range

Recently, I switched broadband (and phone) provider to UPC. For what it's worth, a good move - getting consistently 20mb (of 25mb advertised) and no dropouts. One problem though was the fact that the new cable modem/router now resides in a place where my office PCs are not. So I needed a means of getting broadband across the house. The obvious choice was to buy a pair of wifi usb dongles for the PCs but the location of the PCs (in a cabinet) would mean a poor reception. Couple that with the fact that occasionally I might need connect an extra PC or cable in a laptop, I got to looking and found the Edimax 7228apn.
The reviews were mixed but the price and spec was spot on so I jumped. Actually, the initial install was pretty easy. Stick in the CD, connect on a hard line and the whole thing was ready to use within 30 minutes.
However, a week later it failed. To get it going took more time than is reasonable and the email support was pretty hopeless. Instead, it was a process of elimination to find what part of my reasoning was faulty.
So, for those others out there struggling, this is how it works. First off, drop the CD, I could never get it to work. Best approach is to connect directly to the box at 192.168.2.1. To access this subnet though, you'll need to change your connecting PC's IP configuration. Do this by changing from the 'automatically get IP address using DHCP' to a specific IP address, say, 192.168.2.10. Change the subnet to 255.255.255.0 and you can leave the gateway alone.
Basic Settings on Edimax 7228apn
Use admin/1234 as the username and password (these are under the unit). Once 'in', you need to change the Basic Settings as shown. Change the security settings as for your own wifi setup but note that I'm told the Edimax 7228apn doesn't do mixed mode WPA/WPA2 though it shows as an option.
Security Settings
And finally, the IP settings:
System Utility
Not that you don't have to assign a static IP on the router for the Edimax. Just pick an IP address that isn't in use though it's hard to know how DHCP avoids this. I might persist further and try assigning a static IP again. In my case, the Gateway address is 192.168.1.1 but yours may differ.
All in all, a not very happy experience for what could be a great gadget.


3 May 2010

VS2010 Keyboard Shortcuts

image

So you’re frustrated with your own productivity in VS2010 (hey, who isn’t?), take these keyboard shortcuts for a test drive. Pretty soon, you’ll be CTRL-D,O along like a crazy person.

29 Apr 2010

Three ways to reach students

Gave a workshop today to staff on Delicious, Google Reader and Blogging.

Enjoying workshop on Social bookmarking

Hi there from the workshop.

9 Apr 2010

Made to Stick

0702feature_ideas-heath[1]An excellent book by brothers Chip & Dan Heath. I couldn’t do it justice in this short post but the essence (for me) is the advice they give to help your message to reach your audience. They boil this advice down to a useful set of six metrics – SUCCESs. The book works well both in the business world and the lecture hall. They litter the book with plenty of convincing stories that hit home and nail the message.

    • Simple: prioritise – what are we selling? why are we different?
    • Unexpected: shock/alert – make your audience sit up; break conventions
    • Concrete: paint a picture – make it matter to your audience, make it accessible to them
    • Credible: build reputation but also use authorities and anti-authorities (e.g. the brother of the deceased drunk driver)
    • Emotional: people care about people, not numbers; WIIFY (what’s in it for you)
    • Stories: Stories drive action through simulation (what to do) and inspiration (the motivation to do it).

For more details, check out some notes on the net. But buy the book and savour each page.

8 Apr 2010

New York Gets Destroyed, 8-bit Style [VIDEO]

Imagine the apocalypse. Now imagine characters and elements from 80ies games carrying it out. This is exactly what this crazy video portrays, and being a classic games geek myself, if this sort of thing were to happen in real life, I’m not sure whether I’d run or marvel at the sight.

It’s all there – Pacman, Tetris, Arkanoid. Once friendly, familiar characters wreak havoc on the buildings, streets and cars of New York. The video was created by Patrick Jean from the Paris-based special effect studio One More Production, and the production level is nothing short of amazing. See for yourself.

3 Apr 2010

DeepZoom at its best yet

Had I known of this service from Zoomery, I’d have put away my camera last week at MIX10. DeepZoom has always been a solution in search of a problem. Zoomery have happened upon a really commanding use for the technology.

image  image

The initial screenshot on the left shows all the slideshows during the conference arranged in categories. Double-clicking zooms in to show the title slide (see right shot) with each of the individual slides underneath, viewable on further zooming. It doesn’t really need explaining – good design never does.

Drowning Sign Fail

Drowning Sign Fail: "


Drowning Sign Fail


Drowning Sign Fail

21 Mar 2010

Proposed Web Development Programme

We’ve been fortunate in recent years in the Dept. Information Systems at increasing our numbers at well-above average for the sector. We now have streams for Software, Systems & Networking, Games Programming and Database. Two significant areas not yet serviced or needing an overhaul are web development and mobile computing – both huge growth areas and also with shifting or emerging requirements/solution platforms.

We as staff have wrestled with the makeup of the revamped Web Development programme (currently, a discontinued Level 8, four year, ab initio programme). What’s above in the slideshow is my take on what we should be doing for this new programme. This is an important development area and one where we’ve been burned before. I’d welcome any comments (okay, we’re reasonably thick-skinned so knock yourself out). But when judging I’d ask that you’d consider the following parameters which I’ve take into account in my outline:

  1. Economics: We’re launching in a restrictive economic environment so there is pressure to fashion a new programme from appropriate parts of existing programmes. And so there are programming, asset creation, and project modules which are shared with other streams. Efforts to grow the student intake are hampered by the dependence on lab spaces but a happy by-product is that we can be more selective. However, I believe we need to also grow numbers especially when we can preserve points-levels in the buoyant education environment at present (and likely for a few years).
  2. Common First Year: We operate a common first year across all our computing streams. We have found this quite useful as if affords students that extra year of maturity coupled with greater exposure to a variety of topics before they have to make a ‘career’ choice. However, as the number of streams that inherit this common first year increases, it becomes more difficult to ensure that year is appropriate across all its content. We found this particularly difficult when designing the Games Programming stream but I think less so with the proposed Web Development.
  3. Technologies: Microsoft technologies represent an area of significant investment by the college and staff and permeate much of the existing programme streams. To me, it makes sense to capitalise on the success which this has brought and focus our efforts to maximise that investment. It also represent a key USP (unique selling point) both to prospective students (where the Microsoft brand identity is helpful) and to approving panels (to whom we need to justify our offering).
    This focus comes at the expense of breadth of coverage. For example, is there time/need/expertise to accommodate Adobe Flash as well as Silverlight? Is there merit in doing both? Is there sufficient staffing to maintain these portfolios into the future? To me, it’s placing a bet – but not a high risk one. On the one hand, you can argue that employer A wants Silverlight and we teach Flash. However, how much does any new graduate know of any of these technologies. A savvy employer will look at the portfolio and see the skill-set inherent in it – the technology will shift constantly – what matters is the ability to track and adapt to these changes. The tools can’t be seen to drive the programme content. However, taking that argument further – we need tools to enable and motivate students to build both interest and their portfolio so those said-same employers can judge their talent. For that, I believe, we need to consolidate expertise to maximise this leverage. Now, there’ll be purist who’ll say, just give me notepad++ (hi Sabrina!) and a moleskin, and I’ll carve you a site – me, I think we can make for a friendly first impression.
  4. Emphasis: I’ve worked towards a balance between design and implementation in the programme. Keeping in mind that this is a B.Sc. and the programme is ‘Web Development’ and not ‘Design’, there is nonetheless significant design input – e.g. nearly half the modules in Year 2 are exclusively design, Year 3 has significant project/hands-on work. I think a mixture is necessary – many of our graduates may find work on a freelancing basis or in small houses where a multi-disciplinary skill-set is valued.

So, pile on it and have your say. Tell me why I’m wrong and test my arguments. There’s quite a bit at stake so we want to get this right.

17 Mar 2010

Designing and Developing for the Mobile Web

Joe Marini

DSCN0365 DSCN0363-1

Joe begins by drawing for us the distinctions between mobile and desktop use – e.g. very task oriented, not just casual browsing. We expect information to be augmented by location, time – e.g. Avatar search should yield local show times. Also environmental affects (sunlight, noise) are a factor. We should provide the same information to both mobile and desktop but not necessarily the same presentation.

Design for one web: same content but differing presentation;

Focus: need to pick out a few key tasks to provide to users. Display them prominently a la above the fold. He speaks of ‘blink decisions’ by users – obvious what they should do.

Clean, crisp, succinct: few fonts/colours/graphics, no background images, scale down images, use short titles, use white space for separation;

Minimise required input: entering data tiresome and often on the move, use cookies to minimise input, provide default values

DSCN0364 Use Well-defined Standards

Use minimum standard web technologies: XHTML, CSS 2.1, DOM 1, ECMAScript 3
Specify DOCTYPE for your pages
Use standard media types (jpg, gif, png, 3GP, avi, wmv, mp4)
Avoid: framesets, tables for layout, nested tables, image maps, reliance on plug-ins or dHTML behaviours

Mobile <META> Tags: use to flag pages rendered for mobile browsing. Ex. “HandheldFriendly” (RIM), “MobileOptimized” (MS)

Viewport: document viewport is ‘windowed’ by screen viewport

Multiserving Content: same page, different devices, styled right. Usually involves some kind of detection. Use script on client to detect capabilities. On server use code to detect User Agent string.

Silverlight SketchFlow and Information Visualisations

Matthias Shapiro

DSCN0363 DSCN0352 DSCN0353  DSCN0356-1

Matthias showed some fairly well known information visualisation techniques (similar to Hans Rosling’s Gapminder). The talk came alive though with the building out live in Blend 4 beta. Following on earlier talks, the VisualStateManager looks very interesting. Obviously, designers are finding SketchFlow and the built-in animation very engaging – not difficult when you consider they’re currently wrestling with Visio or Photoshop to work up comps – and the interest is rapidly shifting to the transitions between states as much as representation of the states themselves. This is obviously a key feature of Windows Phone 7 series. Matthias says: ‘If you can show it, you should animate it’. Dunno if I totally agree but it’s a road that we haven’t yet embraced so it’s worth following until the designers tell us to stop ;) That said, the easing functions in Blend rock.

A great example was the visualisation of tweets across a Bing map. Matthias animated over time (a short time) the tweets as they appear on the map rather than just have them appear instantly. This creates interest for the user and draws him/her into the interaction, a teaser effectively – and I can see why it works – now. BTW – kudos to the Bing Map guys (who I met earlier this week) – this would be useless unless Bing Maps were as good as it is.

This talk is heavily drawn from an earlier talk, so check that out for slides and video. I’ve come across most of the sample visualisation before but it’s nice to see the Silverlight approach or at least be reassured that they can be done using Silverlight. That said, there’s admiration for anyone playing with live code and binding up data without a ‘snippet net’. Matthias believes Flash makes it harder to get at data while Silverlight is better at this.

Book cover of Beautiful VisualizationGood to see Matthias plug Edward Tufte’s books – though, they’re landmark texts, I think there needs to be some tie-in to the ‘how’ rather than just the examples Tufte gives which are rarely IT-related, more typically infographics. Book cover of Beautiful DataVisualising Data by Ben Fry also came recommended.  Nathan Yau wrote Beautiful data. Rich Barraza of Cynergysystems.com also mentioned. Joshua Allen & Jon Udell (Descry). Jeff Paries wrote Foundation Silverlight 3 Animation at designwithsilverlight.com. Beautiful Visualization  by Julie Steel & Noah Rinsky to be launched in April 2010.

Jason Alderman, Joe McBride and Claudio Sanchez co-contributed.

Matthias Shapiro – of Veracity Solutions.

Chris Bernard

Dynamic Prototyping with SketchFlow in Expression Blend: Sketch Your Ideas...And Bring Them to Life!Chris showed some excellent uses for SketchFlow. It seems to scale well but since the speakers (including Chris) were all designers, I got the feeling they felt happy with the power of the tool (albeit from a poor bas alterative) – I wondered how the experience was for the developers. For example, how well could the designers’ animations/styling/gradients/sizing be incorporated into the ‘real’ dev code. I’d like to see some talk on that likely impedance mismatch between the prototype and the transition to dev code. Matthias above worked on real code while SketchFlow seems different – surely the effort invested into SketchFlow can be captured and built-out all within Blend. Are there any losses?

It was good to see this wireframing (or lo-fi prototyping as I prefer to call it) being used in the real world (e.g. with Lowe’s Idylis air purifier site, the Chicago 2016 bid book). Chris has a book where he explores this further.