It’s back to the Barbican for my second day at the SDD Conference. Breakfast has been eaten, tea has been drunk and I even managed to beat the rain this morning. Got a comfy seat, waiting for Darrel to kick off my first session of the day.
A natual choice for the first session of the day as I sat through Darrel’s previous session on API’s yesterday. Whereas the previous session was more of a talk about REST and considerations, this session focusses on how to build decent, useable client side APIs. Why do this? Well, it will help developer adoption of your application and shield your internal developers (to a degree) from third party developers. How and why? Because you are giving them a simplifed method to interface with your application. An interesting point he made was to not place the httpClient in a using block. There aren’t enough unmanaged resources to make it worthwhile, but more to the point, when httpClient is disposed of, under the covers, the http connection will be disposed of. This means subsequent requests will need to reestablish the connection, whereas we should be reusing the connection (it was designed with reuse in mind). Using a connection over SSL? You’ll be dealing with the re-authentication for every request – painful! He mentioned what looks like a very useful library available on NuGet (https://www.nuget.org/packages/Tavis.Auth/) which makes managing credentials a lot easier. We discussed middleware and how it ensures that client developers don’t have to worry about a lot of the complexity between their client application and the web application. I’ll be sure to look at URI Templates as well (GitHub use them, just saying). The discussion around conditional requests and CacheControl was particuarly interesting. Thanks for a really educational session Darrel.
I love Xamarin. Ok, a bit of an overstatement. But I like mobile applications and the development of them. After being enslaved in the WPF camp for many years (and previously WinForm), I am enjoying the fresh challenge of developing applications for mobile devices. Maybe I’m a sad aging geek, but mobile development is ‘cool’ to me. Although my experiences have been mainly limited to iOS devices, Windows and Android are on my radar.
Xamarin Forms is an exciting development. We have been using Xamarin to code our apps, but the UI has always been a bit more problematic. Building a UI for each platform you want to support is a pain. Xamarin Forms allows you to build a single UI for all platforms, using XAML (there is no escape from XAML for me). And now Xamarin is free (thanks to Microsoft buying it) it makes it even easier to get started.
So, what did I learn? Seeing comparisons between Xamarin’s XAML and Microsoft XAML was interesting. I feel like I will have a head start due to my XAML background, but I’ll need to take care with the differences in object and property names. I also learnt I will always need to ensure that when creating a new Xamarin.Forms (portable) project I will need to check for updates to the Xamarin.Forms library using NuGet. Also, uncheck ‘use shared runtime’ & ‘use fast deployment’ under the Android project properties sheet, otherwise you wont be able to run the project in debug mode within the Android simulator. Jeff took us through adding a XAML page and creating a simple UI which would work across multiple platforms (iOS, Android and Windows Mobile). One awesome announcement he shared was that a Windows iOS emulator will be coming soon! Although you will still need a mac to do the build. An interesting bit of information was handling device rotation. Xamarin forms doesn’t notify you of these events. You’ll have to handle this yourself (use the SizeChanged event). Overall the presentation was very good. Jeff explained everything very clearly and his examples were excellent. Thanks Jeff!
With a session title like that, how can you resist? First words from Niall, ‘This will be humerous, I have 125 slides, keep up.’ Well, it certainly was an eye opener. Niall demonstrated some of the ways that hackers can get at you and all of it was pretty scary. I can now see how easy it is (for free, or, for as little as a £50.00 one off payment) to find vulernabilities on the internet. I don’t just mean, email addresses or someone with a server sitting out there that has a port free. I mean, scanning the internet in under an hour and getting screenshots of peoples machines. People running VNC server after all these years with no authentication enabled. We say pictures from webcams, baby monitors, peoples desktops with email, facebook and personal details exposed. All there and ripe for the taking. Will I go home and change my passwords? Yes. Will I start putting blutac over my webcam? Mmm.. maybe not. But I certainly now have an appreciation for how easy ‘we’ make it for people to encroach in to our lives. Everything is on the internet. Might be time to check just what is out there about you. Even better, might be time to educate yourselves and make sure you are secure. There are some nasty people out there; Niall just showed us what they can do. Do I want to be a victim? No. Neither should you. Excellent session Niall. I’ll be attending your Penetration Testing talk tomorrow.
‘Make it faster’ is something that quite a few developers will have heard. This session explored the basics of parallel programming, covering single threaded applications, multi-threaded applications, Tasks, the threadpool and object synchronisation. Tiberiu also introduced Moores Law (haven’t we all heard of that one), Amdahls Law and Gustafsons Law, all of which were interesting and for me, require some further reading. We worked through some simple demonstrations of how you can get in to trouble when converting a simple single threaded application in to a more complex multithreaded one. Finally, we discussed Async programming. Overall, a good session with a good final statement. We need to code better. CPU’s can’t get much faster, so rather than trying to do less with more, we now need to do more with more!