Posts Tagged talks

Devweek review

DevWeek T-Shirt

I designed my own T-Shirt at DevWeek 2012

I spent 3 days last week at the DevWeek conference in London. This was the first time I have gone, and I’d recommend it. I’m going to pull everything into one post for now, but I think I’ll be returning to some of the themes in later posts, so if this is a bit TL;DR for you, please let me know in the comments if there’s anything you’d like a summary on. Visual Studio 11 and the new TFS are two things that come to mind, but there’s also some interesting things about managing software teams that I want to return to once I’ve finished reading Peopleware.

If any of these interest you, check out the slides and code available on the DevWeek website.

Day 1

Tuesday 27th March schedule

Windows 8 for application developers – Mike Taulty

Microsoft’s Mike Taulty (twitter : @mtaulty ) got the keynote slot this year to talk about Windows 8 and Visual Studio 11. I’m sure most .Net folk have heard of both by now, but I certainly hadn’t had a chance to install the previews and try them out. This talk reinforced Microsoft’s vision of a single OS for all devices, although this only seemed to be Desktop, Netbook and Tablet, there was nothing on the new versions of Windows Server 8 (which looks like it would save me a lot of time setting up and deploying to new servers) and Windows Phone 8 so I’ll just have to keep reading the blogs to keep up with those.

The main goal of Windows 8 seems to be doing what they did right in Windows 7 and making it better. For some things, that’s borrowing from Windows Phone 7 (the Metro UI being the most obvious, and controversial), but there’s also Charms, which look like Microsoft’s take on Android’s Intents (a simple, powerful channel for de-coupled cross-app communication), a settings page which looks far more like the iPad than the old Control Panel, built in Cloud Syncing that includes app data (and easily extensible – there was a nice example of selecting photos for your profile from disk, SkyDrive or PhotoBucket seamlessly), which shows what Android and iOS should be doing for cloud integration, and looks as simple as Firefox sync or Amazon’s whisper sync to set up. Given the recent changes that iOS and Android have been getting in their latest releases, it looks like the next generation of devices are converging on some standard functionality, so consumers don’t have to lose functionality when switching between platforms.

Interestingly, the new version will also be LiveCD / bootable USB compatible. An obvious decision given the lack of optical drives on the Windows 7 tablets that will likely be upgraded, but will be interesting to see if Microsoft can make the experience as smooth as the Linux/BeOS LiveCDs. Given the advances from the Windows XP to he Windows 7 installer, there’s a good chance.

WinRT is Microsoft’s push for the new platform – bring the Metro UI to C, C++, C#, VB and HTML/JS developers equally. Channelling the .Net developers through .Net 4.5. I’m not sure where this leaves Mono developers, so .net might not be the cross-platform solution that MonoTouch and MonoDroid promise. If you want to develop on a tablet, as I wondered in my last blog post, just use Visual Studio 11. Microsoft might become the leaders in developing apps for your Post-PC world ;-)

I think the most telling takeaway from this talk for how you develop for Windows 8 was this:

“There are no Windows in Windows 8 – every pixel is yours”

You have a blank canvas, how are you going to fill a 7″ tablet and 2 42″ monitors with your metro app?

A tour through Visual Studio 11 – David Starr

The next major release of Visual Studio is on the way, and our favorite IDE just keeps getting better. This session shares significant additions and improvements slated for the next version of Visual Studio. The specific focus is on the tools that will make developers’ lives better, and how we’ll use them in real life.
Learning points:
• What’s coming in Visual Studio 11
• Which features add major value, and which are just a “meh”
• How these new tools will change how we work

My first impression of Visual Studio 11 was how much it reminded me of Ice Cream Sandwich (especially in the dark theme), and how many of the speakers were not fans. David Starr (twitter @elegantcode) pointed us at the Uservoice page for Visual Studio 11 where the lack of colour in the default theme was the number 1 most requested feature. Note that Visual Studio 11 is not a Metro app, so it will live on Windows 8′s desktop (legacy?) view.

According to the talk, Visual Studio 11′s main driver was about listening to the community and giving developers what they want, so Monty Hammontree listened to what folk were saying on Twitter, and sending via the “help Microsoft improve Visual Studio” feedback and designed Visual Studio to have simpler tooling, a minimal UI, and allowing Visual Studio to better handle the development tasks that aren’t coding, such as requirements. Read Monty’s blog above to understand the philosophy behind the changes. Although the SQL server team and the NuGet team haven’t got the memo as both built-in components are still using the 2010 colour scheme.

As with Windows 8, Visual Studio is borrowing a lot of ideas from the community and building in things that were previously only provided by add-ons, including their own add-ons like the productivity power pack, whose Solution Navigator is Visual Studio 11′s SOLUTION EXPLORER (yes, it’s all caps), and allows you to drill down and search through filenames, classes and methods.

Depending on which edition you use, there’s an improved code comparison tools that makes merging easier, a new code duplicate finder, a new test runner that can be set to run tests after every build (that includes nUnit and xUnit support), and an ability to fake any DLL (such as the System and HttpContext) in your tests, but I think the 2 things that will really help me out are the preview tab and the speed improvements.

The preview tab opens when you hit F12, or click on something in the solution explorer, or whenever you’re browsing rather than editing. It appears on the right hand side, and stops Visual Studio from opening multiple tabs by re-using the same window as you browse, then offering a simple button to turn it into a normal tab once you’ve found what you want.

The speed improvements come mainly from better backgrounding of tasks, so the UI is not blocked. Msbuild is now used for all builds, allowing the build to be architecture independent, and this feeds into the test runner and the built in source control tools.

The other big takeaway from this talk is that if you are running Visual Studio 10 SP1, you can load your project files in the Visual Studio 11 beta, save them, and they will still work in the old version, so no more breaking projects when 1 member of the team upgrades – so long as they don’t start using C#5 features like async (I’ll get to that on Day 3)

ASP.Net and Visual Studio 11 – Robert Boedigheimer

Robert Boedigheimer (twitter: @boedie) covered some of the same ground as David Starr, but he quickly got into the nitty gritty for us ASP.Net developers.

There a lot of improvements in the editors to make them more context aware for HTML and JavaScript, for example, renaming and IntelliSense support for HTML5 tags, the IE9 Javascript engine built in to add IntelliSense and references for Javascript, colour picker and CSS3 support in the CSS editor, as well as awareness for common hacks and vendor-specific prefixes so there’s no more warnings.

There’s a new Page Inspector, which looks like IE9 inside Visual Studio, that gives access to most of the web developer tools, with the ability to link back to the source code so that the CSS/HTML changes can be tested and fixed with a much shorter feedback loop.

There are some validation (including Anti-XSS), performance and feature improvements, as well as support for Web Sockets via IIS8. There was a lot of talk about how to improve performance of you website, making use of caching and minification, which are useful for everyone, but there are a few nice tricks in the new framework that make these easier and more powerful.

Even if you’ve had a look at Visual Studio 11, be sure to check out these slides, as you might learn a thing or two about improving performance.

High performance software development teams – David Starr

This one will definitely be of interest to my colleagues. Discussion of SMART goals and how to create teams that constantly outperform expectations (without lowering expectations ;-) ). Successful teams are ones that don’t stop learning, keep communicating, have short feedback cycles, and make decisions rather than reacting impulsively.

I’m not going to go into detail, as I’m sure David Starr can explain it better himself, but there were a couple of things he said that I’ll repeat here and let you cogitate on:

Successful teams ship software and are in a position that they can always ship software quickly.

Well-functioning organisations don’t need heroes to do lots of overtime, or need to fix things whilst ignoring the team.

If your well-maintained and performant data centre runs at 80% efficiency, shouldn’t you make sure you’re not working your staff harder than your machines?

Although on that last one, remember it’s always easier to add a new machine to your data centre than a new developer to your team.

Day 2

Asynchronous programming with C# 5 – Andrew Clymer

This is the sort of deep technical talk conferences like this need. Andrew Clymer from Rock Solid Knowledge showed plenty of code to demonstrate the pain of asynchronous programming in .Net by looking at how to spin off a background task from the UI, and update a control with the result (with an aside into other places where the technique is useful.

Fundamentally, async and await allow you to free up a thread and do asynchronous programming whilst the framework does all the dirty work to make sure the return message ends up on the calling thread and exceptions are raised in the right place, so writing a callback is as simple as:


async void OnClickGetUsers
{
try {
var users = await Server.GetAllUsers();
UserListControl.Add(users);
} catch (TimeoutException e) {
DisplayError(e.Message);
}
}

And all you have to do is use the Task / Task<T> as the return value from Server.GetAllUsers().

If want to run many tasks, create your own wrappers for legacy tasks, or write task-aware WCF clients, go have a look at the blogs and screencasts on his site.

Pragmatic architecture – Oliver Sturm

I was a bit disappointed with Oliver Sturm‘s talk. There was a nice concept in there, walking through the breaking down of a project into its architecture and talking through the decisions to be made at each step, but it didn’t quite work as a talk. It was listed as “The short talk”, as a pre-cursor to a workshop on the Friday, which I couldn’t go to, and I think the session was designed to interactive, so the size of the room and the expectations of the audience didn’t give the talk the dialogue it deserved. I’ve seen Oliver talk about more technical topics and those have been good, so I hope the workshop session lived up to the potential

ASP.Net MVC hidden gems, tips & tricks – Shay Friedman

Apart from a few broken demos, Shay Friedman (twitter: @ironshay ) gave a good overview of some lesser known frameworks and options in ASP.Net MVC. Most of it could be summed up by the first slide : Use NuGet, but the rest discussed all the nice extensions, frameworks, and scaffolds that you can get via NuGet, as well as a couple of simple error handling tricks, and pointing out the built-in controls from WebMatrix.

Cognitive biases and effects you should know about – Kevlin Henney

I’ve seen Kevlin Henney before, and he’s got a great, humorous style. In this very informative talk, he didn’t disappoint. His basic thesis was that everyone is biased, even about bias. If you’ve ever come across the Dunning-Kruger effect or read Kluge, you’ll have a fair idea where he was coming from. Basically, humans have a world view that is great for avoiding being eaten by a tiger, but not so great for the modern world. And Success is a better teacher than failure, because we try to forget failure. If you want to learn, mentoring is good, and practice is good, and trying to learn without either is very tough.

Day 3

The frustrated architect – Simon Brown

A great talk from Simon Brown to set up the last day.

How do you build an architecture in an Agile team? How does an agile team works with non-functional concerns like performance and scalability? What did we forget when we threw front-loaded architecture out the window and moved to Agile?

A great teardown of the problems with Agile-driven architecture, followed by some resources and ideas to help you think about how to resolve those in your own teams.

Go see the slides for yourself and understand that architecture is social and the architect needs to understand the developers and the users, and a good architect is a developer and a leader, and isn’t someone who kills trees with 400-page documents that are never read.

Storyboarding in Visual Studio 11 – Brian A Randell

I think Brian A. Randell (twitter: @brianrandell) is a Disney fan. He managed to get some Disney storyboards to demonstrate the power of storyboards. It’s prototyping from Visual Studio via a special set of templates in Powerpoint.

The interesting point of the talk for me though wasn’t the Powerpoint side, it was the additions and changes in Team Foundation Server that enable the feedback loop to send those storyboards around the development team, out to the client, gather specific feedback, and pull that back into the tasks. I wasn’t interested in TFS before, but I am now.

M-V-VM from the ground up – Dave Wheeler

I only saw the first part of this two-parter from Dave Wheeler (twitter: @finiteplane) but it was all I was looking for to understand MVVM as mainly an ASP.Net MVC developer. He had some strident views about keeping developers and designers separate, but the talk was mainly about building up a simple app and demonstrating best practice to make lives of both developers and designers as easy as possible.

To make the M-V-VM pattern work, the Model does all the back-end communication and exposes business objects, the only code in the view code-behind is the untestable UI-tied behaviour (like weird animations, and non-standard behaviours), the the ViewModel responds to ICommands like “DeleteUser” and replies with INotifyPropertyChanged events back to the UI, allowing the behaviour of the presentation layer to be tested independent of the designer’s layout preferences.

Agile Engineering Practices – Neal Ford

An Agile talk, responsive to audience demands (via a talk menu that was voted on), Neal Ford (twitter: @neal4d) gave a great journey through some interesting topics on Agile Engineering in ThoughtWorks.

In Information Radiators, he spoke about code metrics and providing information on failure and success as directly and as unobtrusively as required.

In Design Practices, he talked about the complexity of simplicity (why is it so hard to make the design simple), the importance of throwing away your experiments (but keeping the results to learn from) and how well the original design patterns from the Agile movement have aged, re-iterating the good ones, and replacing the not-so-good ones.

In Test Driven Design, he showed how TDD improved the design of a solution as well as the quality using a Kata example, as well as a series of studies from Dr. Laurie Williams that show that TDD costs a lot less than you think (which I wish I’d known about when I gave my TDD talk a few years ago), and writing more code makes you go faster.

In feature toggles, he discussed an alternative to branching and merging to allow multiple developers to work on multiple features without a merge ambush leaving developers lost and contemplating throwing away a week’s work.

In DVCS magic, he talked about how his team uses git, and how they modified things to minimise developer downtime and frustration and increase productivity.

Overall thoughts

This was a good, well-organised conference, with a heavy, but not exclusively Microsoft focus. At 90 minutes, the talks were longer than most conferences, but the speakers tended to make good use of the extra time so few of the talks felt stretched or over-long, and they all mostly ran smoothly.

The venue was good, but there was a big split between 2 of the rooms (and the exhibition area) and the other 10, heightened by lift failures on the final day, but that wouldn’t put me off going again.

The lunches were also the best I’ve had at a conference, so 3 cheers to the organisers for that.

Looking forward to coming again next year (Next DevWeek 4th – 8th March 2013). Anyone want a talk on developing across multiple offices?

 

Comments (1)

Slides and Mind Maps for DunDDD

DunDDDAs promised, here’s the slides and mindmaps for the sessions I was involved in at DunDDD 2011. The Mind Maps were generated using FreeMind.

The Philosophy of Code

This talk was an experiment on my part, given the knowledge I’ve picked up from reading books and articles from some of the smartest people in the business and beyond, and I wanted to share some of that. As Gary Park noted, it still needs some polish, but I think there’s a good idea in there, so I hope to get another chance to present it in the future. The presentation itself is licensed under creative commons, but please pay attention to the photo attributions if you want to use them in your own work. I’ve also included a link to the original mind map which contains many more great quotes.

Google Docs : The Philosophy of Code

Mind42 : The Philosophy Of Code

Download The Philosophy Of Code Mindmap (.mm format)

Software Requirements

The original presentation was given by Craig Murphy (on Twitter as @CAMurphy) and is available here : Open Discussion on Software Requirements

The mind map generated from the discussion is reproduced below.

There was a good discussion of how requirements can have different levels of detail and how the methodology can shape the process and the documentation, as well as the change process. A bit of waterfall vs. agile, but each has their place.

Mind42 : Software Requirements

Download the Software Requirements Mindmap (.mm format)

How The Web Was Lost

This talk drifted a little, since we agreed fairly quickly that with the demise of Flash and Silverlight, and the rise of the web-powered desktop in Windows 8, the web has in fact one. +1 for open standards. But where does that leave the behemoths like Apple and Microsoft who have benefited the most from the traditional role of the desktop. Can they keep developers and users on their platforms, or will they be lost to cross-platform development?

Mind42 : How The Web Was Lost

Download How The Web Was Lost (.mm format)

Comments (2)

DDD Scotland 2011 Open Discussion Sessions

There were 2 great discussions on the alternative track at DDD Scotland this morning, so many thanks to everyone who came.

Below, I’ve posted the two mindmaps we generated. They are in .mm format. I used FreeMind (open source) to generate them.

Professional Development

An open discussion about how developers can be professional inside the constraints of management or environment. Examples of questions for this discussion could be

  • What obstacles do developers feel they face in regards to adoption of technologies and techniques?
  • How have these been overcome?
  • How can productivity and morale be improved or maintained?

Professional Development Mind Map
Professional Development Mind Map (.mm format)”
View “Professional Development” Mind Map online with Mind42

Tidied version

Professional Development - Tidy Mind Map
Professional Development – Tidy Mind Map (.mm format)

Agile Is Dead

Based on a discussion at QCon around the 10th anniversary of Agile and whether or not “Agile” actually means anything anymore. This discussion opens the floor to delegates to chat about the current state of Agile in software development.

Agile is Dead Mind Map


Agile Is Dead Mind Map (.mm format)

View “Agile Is Dead” Mind Map online with Mind42.com

Tidied version

Agile is Dead - Tidy Mind Map

Agile Is Dead – Tidy Mind Map (.mm format)

[EDIT : 10/05/2011]

I’ve created tidier versions of the above mindmaps to try and capture the groupings discussed on the day, as well as the abstract for each session. I’ve also highlighted the starting point of each discussion to make it easier to see what was added over the course of the session. I will leave the raw mind maps too.

[EDIT : 11/05/2011]

I’ve found an online Mind Map viewer to help you explore. Added links to the unedited mind maps above and here:
View “Professional Development” Mind Map online with Mind42
View “Agile Is Dead” Mind Map online with Mind42.com

Comments (6)

QConLondon 2011 : Day 2 review

So, on to day 2 of the QCon London 2001 conference, which for me was about testing, REST, and catching up with the .Net usergroup arguing with Glenn Block in a noisy pub over where hyperlinks should go and how horrible the browser is for a web-connected world.

Keynote : Innovation at Google / Patrick Copeland

In a fascinating overview of creating an innovation culture, Patrick Copeland discussed how everyone at Google is free to develop ideas (the famous 20% time) but that ideas mean nothing without data to back them up. In one case, the usage data led Google to kill Google Wave, which was a good idea, and got a lot of early interest but had no staying power as it struggled to find a killer niche.

The most interesting part of the talk was the discussion of “Pretotypes”, which are a generalisation of something I’ve always known as “Wizard of Oz” trials. The idea of a Pretotype (“pretend-o-type”) is to build a concept prior to the prototype to see if the idea itself stands up. Where a prototype answers “Can I build it?”, the pretotype answers “Should I build it?”

The best pretotype example in the talk was the discussion of IBM’s speech recognition trials. Before they started work on the software, they trialled the system by hooking up a microphone to a typist in another room, who would take dictation in real time for the user to see. They discovered fairly quickly that the interface was poor and canned the project.

I’m also very interested in the new Android Pretotyping app that was announced, called Androgen. It’s designed to help pretotype Android apps, but given the breadth of examples in the talk, I am sure it could apply equally to mobile web and possibly other devices. Definitely one to watch.

Testing for the unexpected / Ulf Wiger

For the first session of the day, Ulf Wiger discussed randomised testing, describing existing test automation as a low water mark, filled with often hard-to-maintain code where the effort to maintain the code grows faster than the complexity of the underlying system. The description of the problems with existing tests took up a fair amount of introduction time before the Erlang QuickCheck meat came in.

The idea of QuickCheck is to add controlled randomness to tests, by defining the input-output space of the system under test, which the framework uses to generate the test cases to try and find weak points in the system. QuickCheck is suitable for TDD – and he described how the requirements team could easily translate grammar in the requirements spec into QuickCheck test suites, which could be run over the code until no failing cases were found. He also mentioned that there were fewer errors in the test cycle than before the introduction of QuickCheck.

The most fascinating part of the talk for me though was the mention of NModel, which is Microsoft’s implementation of the same concept on the .Net platform. One to investigate.

Building a ReSTful architecture on .net with OpenRasta / Seb Lambla & Make yourself comfortable and REST with .NET / Glenn Block

I’m going to take the next two talks, from Seb Lambla and Glenn Block, together as they demonstrate an Alt.Net and a Microsoft solution to bringing a REST framework to the .Net platform. The Microsoft REST solution, built on WCF, provides a large number of integration points allowing users to mould the framework to their thinking whereas OpenRasta is built on the idea of strongly encouraging developers to do things “the right way” by enforcing a set of defaults that play nicely with the spec and are harder to change. OpenRasta has plenty of extension points too, providing support for multiple view engines, input handlers and HTTP PATCH, but the core is set (a point that I was reminded of during the WebMachine talk on Friday).

Two very useful points from both talks : they were both using Fiddler for demonstrations, and pointed out a way round Windows’ networking shortcut that usually prevents packet sniffing on the local loop. Using “localhost.” or “127.0.0.1.” (note the trailing dot) allows Fiddler to listen in on the local loop packets. I’ll have to see how Fiddler compares to my current tool of choice : WireShark. The other interesting point, that spilled out into the OpenSpaceBeers, was the concept of encoding links in HTTP. Are links to states (the canonical “purchase” link that should be followed after getting an order, for example) part of the HTTP description, and therefore encoded in Link headers, or are they part of the data, and encoded in the response content?

The biggest problem with ReST over HTTP appears to be that the most well known HTTP client, the browser, is a poor HTTP citizen. This doesn’t surprise me, given that browsers also tend to be 3rd class citizens of other protocols such as FTP, Gopher and IRC. Indeed, perhaps they should be called renderers, since they are generally better hosts of HTML, CSS and JavaScript content. Don’t let browsers fool you into thinking that you know HTTP. If you want to know HTTP, read the thesis that gave birth to ReST.

If you want a good ReST client however, .Net does offer some hope, as demonstrated by Glenn Block. The HTTP response and request that have always been part of the server side are now freed to be available for web clients, outside the IIS framework, so that you can now write happy C# web clients using ReST, using the classes you know from the server, but inside a framework that makes them easy to mock.

All in all, a very fascinating pair of talks on the mechanics of implementing a ReST service, which was a perfect setup for a talk about the practice and theory of implementing one…

Getting Things Done with REST / Ian Robinson

For the whole of the ReST track, a stack of REST in Practice books were available for people who gave the best answers. I’m sure having Ian Robinson, one of the authors, in the track, was a factor, and on the strength of his talk, it’s definitely on my post-QCon reading list.

The talk was a worked example of the now-standard GET a cup of coffee RestBucks workflow, but started with the idea that REST is just the latest incarnation of “Warlock of Firetop Mountain” Fighting Fantasy workflows. Read some data, get a list of options, follow a link to perform one of the options.

The talk showed a well-structured set of code that implmented the state machine using XForms as the POST representation of data, and therefore embedding links into the content. The emphasis was on discovery of workflow (after all, when I create a new order, I don’t know in advance what its ID will be, and I won’t know what the options are if I have a loyalty card).

The talk was a great sales pitch for ReST, but don’t take my word for it, read the InfoQ GET a cup of coffee article yourself.

Scaling the Social Graph: Infrastructure at Facebook / Jason Sobel

The scary takaway message from Jason Sobel’s talk was not the 150-200 engineers supporting 500m users. It wasn’t the pushing live several times a day, using flags to keep “in progress” features from being visible live, or the hoops they have to go through to have 2 (soon to be three) data centers in sync (hint – most user operations are read-only). The message that a lot of people went away with was that the front-end is PHP, compiled to a monolithic binary via C++ using HipHop, that weighs in at a single 1.6Gb executable running on every front-end server. Between that, the spaghetti code on the backend that had to be replaced and the use of multiple MySql databases on a single physical server (to make migration easier), I suddenly find myself thinking our legacy code maybe isn’t that bad.

OpenSpaceBeers

A great session from the local .Net group where two on-the-spot discussions were voted on. One was about AppHarbour (Heroku for .Net) that allows you to easily test and deploy your code to a cloud hosting solution, as well as a hush-hush competitor that’s coming soon with VPN support so you can host the database in your own data center (handy for certain organisations that have a stricter limit on data via the Data Protection Act).

The second talk was basically an extension of the ReST track, where Glenn Block did more to convince everyone that Hypermedia is the future and everyone should use ReST (which is fantastic to hear from inside Microsoft, and Glenn did thank Scott Guthrie for helping to foster Microsoft’s new partnership with the development community).

The session worked well, and if we could guarantee enough people, definitely something I’d like to try in Scotland.

Leave a Comment

QConLondon 2011 : Day 1 review

I was too busy enjoying the QCon London 2001 conference to blog whilst I was there, so I’m writing up my notes now before I forget too much, mostly for my own benefit, but I’m posting it publicly it case it’s of interest to others.

Keynote – Scaling Lean & Agile : Multisite or Offshore Delivery / Craig Larman

Craig Larman was speaking about his experiences of creating agile teams for development projects spanning different countries and large teams. Although his first point can be summed up as “Don’t do it – if you can use a 10 man team, do”, there was a lot of good information on how to split up tasks to distribute them effectively across teams and how to maintain a common vision and feedback path across many locations. The details of this are described in his books, so have a look at his website if that’s something you want. On the strength of the keynote, his experience in this field would put his books right on my list for learning about distributed development.

A couple of interesting points he made were that teams should have functional rather than modular responsibilities – i.e. don’t have “database” and “UI” teams, have “HSDPA” or “credit card payment” teams whose responsibilities cut right across the codebase so that the eyes on the code in one module never get stale. He also recommended against proprietary software (in particular IBM ClearCase – the first of many to advise giving IBM a wide berth) – mainly as licencing issues create major problems across borders, and generally do not provide enough value over free alternatives (even just Google Spreadsheets) to justify the expense.

Why Don’t We Learn!? / Russ Miles

In the first proper session, Russ Miles spoke about why the things we hear about at conferences don’t always translate back to the office, and how to do more than just cutting and pasting ideas into a new context without thought. Apart from calling Freud a Psychologist, and a long reading list, this was a great talk about why critical thinking and experimental practice, with feedback, are essential for improvement.

There was a wonderful dialogue structure to the talk, in the best philosophical traditions, and it pulled in ideas from across philosophy, the scientific method and psychology theories to provide a coherent basis for how to apply the knowledge gained from experience or from others, and to measure its effectiveness in order to obtain more knowledge for the future.

Lean Programmer Anarchy / Fred George

Probably the talk that generated the most discussion. If Agile is about throwing away the layers that separate developers from clients, Anarchy is about throwing away the hierarchy and process to so that development teams become self-organizing around targets and around projects. It’s a fascinating idea, and involves a high level of trust and self-determination amongst the development teams. For the projects I’m used to, there’s a lot of frameworks in place to protect financial and legal considerations, which seem to be incompatible with the basic premise of Anarchy, but it’s a proven model within the FOSS world, where developers choose where they want to spend their time, which targets are important, and where developers tend to self-organise.

There’s a few themes in this talk that I saw repeated in other discussions, the develop-ship-monitor loop rather than the develop-commit-test-ship loop. This works for his teams because the code is small and short-lived so can be thrown away easily, and the code tends to be for internal teams, rather than external clients. However, the basic idea of constantly monitoring live sites to show that they keep working rather than just demonstrating it before deployment is something that seems to be a trend across many of the speakers.

Do’s and don’ts on Android / Lars Hesel Christensen

There were a few nice general points in this talk, but at its heart was a fascinating discussion of how to improve performance and respond to customers and their devices. The talk was based around the Android version of an App for customers of Danske Bank across Scandinavia.

There were a few tricks, mainly from Google’s Android Dev site, that allowed them to improve animation speed for the main interface components from around 12 FPS to around 47 FPS (which was inline with the iPhone performance), partly by simplifying the graphical structure, but also working around limits in the Dalvik JIT compiler, in particular in regard to a slow dynamic lookup for polymorphic method execution.

On the customer side, there were a few tips on how to augment your apps to make crash reports available via the Android Market more useful, and a list of problems with cameras that led to custom patching for some devices and disabling of cameras on other devices, all managed through an extensible framework that was partly controlled by the server so that preferred resolutions could be tested and sent by the server without requiring a client software update just to support a new device.

Mobile app privacy: you’re doing it wrong (and so am I) / Graham Lee

Graham Lee (http://www.fuzzyaliens.com) gave a very entertaining, if slightly misnamed, talk about good User Experience design, that was mostly about privacy but covered security aspects, comic books, and had some great examples of the good and bad out there.

There was a great explanation of why phishing and spamming work, and how developers and app store curators and designers could do more, mostly with an eye on affordability and design (for which there was another long reading list – I doubt I’ll get all this reading done before QCon London 2012). The biggest takeaway was that if you want your users to make a decision about privacy, you have to get them to do it at the right time with easy to understand language, and allow users to ignore your warnings if they know best. There was a big discussion around this with email clients. If I write “please see the attached document” and then don’t attach anything, the mail client should warn me, give me the option to correct my mistake, or the option to ignore the warning, and there is a GMail labs experiment to do just this. In this case, showing a warning when an attachment is not required (false positive) is far better than not showing a warning when it is required.

Making Apps That Don’t Suck / Mike Lee

Or : how to design software the Apple way.

This was easily the busiest talk of the day, with standing room only, and the only one presented by a pirate. The general theme was not to believe your own hype, and accept that you can always make something suck less. Great design will always trump poor design and will lead where others follow.

The Apple history of the speaker was well in evidence, and there were a few places where that distorted the core message.

The most interesting thought of the talk, and the one that went against the “release early, release often” mantra in evidence across the rest of the conference, was the idea of releasing “version 3″ of your product. Version 1 proves the concept, you then get feedback for version 2 to fix all the bugs, you then get feedback for version 3 to make it shine, and seems like magic. This will make a simple, seemless experience that your competitors cannot match.

There was a great demonstration of an early iPhone app that failed to live up to this philosophy, but also demonstrated how much the market and the philosophy of apps has changed in the past few years. I believe this talk is on a world tour, so keep an eye out for a pirate in a town near you, and go see him.

Keynote : Innovations and Integrations: Applying Trendy Technologies to NASA Mission Operations Planning / Mark Powell

An interesting choice of keynote this one. Sonic screwdrivers, Cylons, Star Trek and many other sci-fi references, and lots of cool videos of robots and AR/VR technologies, and lots of talk of their hoe-grown cloud for image manipulation and rendering 3D landscapes from Mars rover data, but there was so much technical content that was just below the surface that we didn’t get to hear about, which I found frustrating. I would love to hear more about the technology behind the curtain, rather than a couple of Eclipse screenshots.

A couple of things that should apply to all software, not just where millions of dollars of equipment is involved:

Always use units; and

Never use default values.

Round-up

A wide range of talks, including a couple that I don’t think I would have seen otherwise. A few themes that I saw today were to get repeated elsewhere, in particular the reduced emphasis on testing and requirements as speakers are looking to move beyond Agile, but it’s not clear how much is ideological, how much is misunderstanding and how much is just lazy. A few speakers moved onto new ways to implement the Agile manifesto that allowed them to throw out the current best practice with something that provides a better fit for their needs, but I worry that people will start taking the messages and throwing away the tools of Agile without understanding why those tools are there, which would be a retrograde step.

Leave a Comment

DDD Scotland 2011 Voting and Teasers

DDD Scotland voting With voting now open for Developer Developer Developer Scotland 2011, I thought it was time to give everyone a teaser of the 3 talks I submitted to inspire you to vote for me ;-) – but be sure to vote for some of the other sessions too, there’s a great line-up and some tough competition for speakers places.

HTML5 for mobile

HTML5 Canvas : Card back
A simple HTML5 game in 1 hour. Covering real-world usage of canvas, CSS3, ECMAScript 5, and a few other goodies. I’m not going to say too much, except that the image here is rendered via canvas (which neatly, in Firefox, offers a “Save As…” png option in the context menu). This canvas works in Firefox, Chrome, Android and iPhone, and possibly others.

The talk will be given using Firefox, but participants will be able to follow along on their Androids and iPhones (well, it’s one way to get people off Twitter ;-)@craignicol btw, if you hadn’t guessed)

If angle brackets or JavaScript scare you, this is not the talk you are looking for.

Genetic Algorithms

Lights Out
Want computers to solve problems themselves? Maybe find a solution to light out like the game on the left?

I’ll run through the theory and a bit of practice, using the game above as an example of how to encode a problem to be solved by a Genetic Algorithm.

There may be some C++ (yeah, I am old skool ;-) )

IronPython

IronPython

IronPython has been around for a little while as an official .Net language. Whilst many .Net developers are fleeing to Ruby on Rails, wouldn’t it be nice to program in a dynamic language using the libraries you already know? Wouldn’t you like to write the same program with much less code. And wouldn’t you like to see how a language where everything is dynamic really works?

Leave a Comment

DDD9 Apologies

After all my excitement at being accepted in my last post, it is with a heavy heart that I have to apologize that I will not be speaking at DDD9 this year. Many thanks again to all of those who voted for me, and I am very sorry I will not be there to speak.

For those of you who did vote for my talk, please have a look at the video of my talk from BCS Aberdeen and please ask here or on Twitter if you have any questions and I will do my best to answer them in a future blog post.

Many thanks for your support and hope to see you at another conference soon.

Comments (1)

Developer Developer Developer 9 : HTML 5

I’ve been selected for DDD9 to give an updated version of my HTML 5 talk. Many thanks to everyone who voted for me. I hope it goes smoother than Dublin (I won’t be using the pink netbook for one thing).  Unfortunately the registration is now full, but if you’ve already signed up, I’ll see you there. http://developerdeveloperdeveloper.com/ddd9/Schedule.aspx

Now. What am I going to submit for ddd Scotland in May?

Leave a Comment

HTML 5 in Aberdeen

I recently gave my html5 talk in Aberdeen for the local BCS branch. There were lots of good discussions, and most of them are on the accompanying video at
http://aberdeen.bcs.org/html5.php which also includes a great list of HTML 5 and CSS 3 resources.

Many thanks to everyone for making me feel welcome and for your fascinating questions and insights. I hope to return with another talk.

Leave a Comment

HTML5 and the Beta Browsers

I’ve dug out my HTML5 talk again, as I’ve been invited to present at TechMeetup in Glasgow on Wednesday. As I now use FireFox 4 Beta as my main browser (App tabs and Panorama are too good to give up), I’ve been trying to get my presentation, written in HTML5, working on it, and on the Internet Explorer 9 beta. I also tried the it on the latest release versions of Chrome and Opera. Oddly, Opera is the only browser not to display anything, given that the S5 presentation framework I use is ultimately based on an Opera demo. This may be something I have broken in the template. Opera is stuck playing the loading screen.

The presentation (that I will upload after the talk) now validates according to the W3C validator. Chrome, Firefox and IE all display the content, and all hide content when moving to the next slide, but Chrome and FireFox format the content to fit on the screen whilst IE simply lists the content. The CSS3 demos do not work in IE, suggesting that CSS may be part of the problem, although the CSS support in IE9 is light years ahead of previous versions. Certainly it appears that the layout model on IE is different enough from that used by Chrome and Firefox to merit having to redesign any site for IE. Since the w3c does not publish a rendering validator, I will not comment on which one is most standards compliant. I will merely say that even in the brave new world of HTML5 and CSS3, where rendering is more strictly defined, web development will still need to be done to the lowest common denominator.

Of the new HTML5 features in my demo, FireFox 4 has some changes to svg handling which interferes with the inline svg in my presentation, and has tidied up the UI for features such as geolocation from the previous version. Other parts of my presentation are held back by the lack of FireFox 4 support for some of the extensions I use. In particular, certain aspects of FireBug and Web Developer I use for live editing either do not work at all or are unavailable for local pages (I’m not sure which). IE follows Chrome and FireFox in not offering support for the new form input types, in partcular date and datetime. Given the problems datepickers are giving me in my day job, this is a big disappointment to me. I notice that IE, like Chrome does not animate PNG files such as the ones here, but unlike Chrome, also has the wrong background colour. IE is also the only one of the 4 browsers not to support the Mozilla <video> demos - although youtube html5 does appear to work, so this could be a codec issue. I don’t currently have access to Safari to see how well that does – I suspect it too will fail.

IE9 does have some good debugging support through its F12 Developer Tools, and, whilst the add-ons catch up, IE9 is easier to use to debug web pages than FireFox 4. Browsing through remy’s html5 demos, it looks like content-editable is more persistent than in should be in IE, because editing that page seems to persist the lifetime of the tab. Still, that’s why it’s a beta. I’m also disappointed to see that the Offline Application Manifest is not supported, as that would seem to be the perfect partner to the pin-to-taskbar functionality. Still, I’m happy to see support for canvas and inline svg, particularly given FireFox’s problems, although I hoped for a higher score on the HTML5 test (where it gets less than 100 compared to 159 for Opera and over 200 for Firefox and Chrome) and the ACID3 test (where 95 beats FireFox on 91 but falls behind Chrome and Opera on 100).

Now that I’ve finally got my hands on IE9, I’m less excited by it than I am by Chrome and FireFox. It looks as if it will still need plugins (Silverlight?) for rich internet applications, meaning that developing a full cross-platform web application means either limiting functionality for certain browsers (which will need to be done for IE6 for a while yet anyway), or writing a plugin for IE to bring it up to the level of the other desktop and smartphone browsers.

Given the pace of releases, I’m surprised how little new I can add to my presentation. Whilst every browser is moving forward, the baseline standard still appears to be where it was, there’s no cross-browser video format, no cross-browser forms support (input types or validation), no cross-browser Web Application support, no cross-browser geolocation support and no cross-browser CSS transforms. In fact, the canvas and structural elements seem to the only features in my survey with cross-browser support, and given the poor showing of canvas in the results, it’s going to be a long road to adoption, unless you’re in the mobile space.

Comments (2)

Older Posts »
Follow

Get every new post delivered to your Inbox.

Join 937 other followers