Jumpin Camp technology review
This blog post is more than 6 years old, so the content may be out of date.
After returning from Jumpin Camp I ended up diving straight into the whirlwind of a site launch...two weeks on I've had the time to collect my thoughts, so now feels like the time to talk about some of the technology we encountered.
This was the big beast, and the focus for most of the developers. Azure is a Cloud environment from Microsoft.
Over the last few years, the impact of Cloud computing has been significant. Given the amount of coverage Cloud computing has had, I won't rehash the whole topic but instead point you to Google, a presentation from Ivo Jansch on PHP and the Cloud and a presentation from Josh Holmes on Scaling Big While Sleeping Well.
A typical cloud infrastructure gives you:
- Virtual machines
- A file storage infrastructure
- A database storage infrastructure
So Amazon gives EC2 (VMs), EBS/S3 (file storage), and SimpleDB/RDS (database), plus a few other . Rackspace have something similar, although (to my knowledge) no native DB infrastructure.
Microsoft have all of the above: Azure (VMs), Azure SQL (database), and Azure storage (files, natch). Plus there's a bunch of other helpful APIs.
Generally, a cloud VM is a virtualised host running a standard operating system. This comes with overhead - for example, applying patches to the O/S. Microsoft have done something a bit different: Azure is the operating system. To an app running on the VM, it generally looks like Windows, runs like Windows, but doesn't have the maintenance overhead. For me, this is a big win - I no longer have to worry about the O/S, and can concentrate on maintaining the application.
There's also an inbuilt concept of web-roles vs worker-roles. Generally, web-roles are on-demand, public facing systems (such as your php code), worker-roles are typically always-on, private systems (think services/daemons, such as SQL).
One of the neatest ideas is the App Fabric - basically hooking up your cloud with your on-premise Microsoft systems. if, like most offices, you run a locked-down LAN, you can link your LAN to your Cloud service without opening your firewall (it uses a concept called the service bus). Some ideas off the top of my head - link your in-shop stock inventory with your online shop inventory, so both have real-time stock availability; expose your AD address book to the web, or perhaps to a password-protected intranet site, link your customer support website to a real-time IM-based support system. It can also be used as a simple intermediary for message exchange between two separate firewalled sites - both sites open a service bus connection to Azure; Azure relays the messages. Cool tech indeed.
Just another Flash in the pan? As a standards-compliant, accessibility-driven developer I should hate Silverlight, Flash et al. The reality is that Flash has been horribly abused on too many websites to mention, and alas, I'm sure Silverlight will be too. Unfortunately too many people become mesmorised by whizzy graphics and forget concepts such as usability.
All that said, these tools do have a place on the web - even more so today, when the lines between applications become blurred, and applications have as much of a home on the web as they do on your desktop.
For me Deepzoom is the most memorable of features, allowing a single high quality image to be delivered and rendered at an appropriate quality for the user - take for example, a high quality map of a university campus, measuring 15000 x 10000 pixels. On a typical screen, you're showing less than 10% of the map. Deepzoom could show an 800 x 600 pixel image, which initially shows the entire campus, but at a low quality resolution, and as you zoom in, the resolution increases for the section you're viewing. This can massively reduce bandwidth, increase loading time and improve the user experience no end.
[Edit]Oh, it also auto-adjusts for connection speed, so if you're on Edge out the back-of-beyond, it'll drop the quality in favour of a quicker connection.[/Edit]
Deepzoom works by tiling the high quality images into a number of images of varying quality...and yes, you could replicate this functionality with tools such as gd, ImageMagick, jQuery and some custom code. Silverlight does do all this automatically, and has a slick UI, but I'm still left wondering about graceful degradation. Honestly, I like Silverlight's Deepzoom for the end-user experience; I suspect I'd still want to create an image tiling tool in my webapp to provide a good experience for non-MS users.
Oh, Silverlight is available on Macs and some mobile devices (and as Moonlight on linux), but as a web developer I wouldn't want to rely on it being there.
Live Labs is a Microsoft
playground incubator for new technology, and Pivot is one of their funky toys tools.
Pivot is a multi-faceted visualiser to data; fundamentally it uses an XML definition of a 'collection' with an image-set for the items within the collection, and combines them to give a rich visual experience.
It's particularly suited for navigating a large multi-faceted dataset, and can be embedded on web pages as a Silverlight control.
MS SQL reporting in PHP
It's probably fair to say that most PHP developers are deploying to linux hosts (stats, I hear you cry? nada. I'm guessing!) This can make interfacing with a windows-based app awkward, to say the least.
The SSRS SDK uses a SOAP layer to provide integration to PHP applications. It's essentially a PHP library - no obscure executables required.
Hardly a recent development, huh?
Whilst AD isn't new, I hoped to use Jumpin Camp to focus on AD and Identity management. AD integration is too big a task for a few days of coding, but working with Microsoft certainly helped answer a number of questions and laid a good foundation for what will hopefully be some cool tools in the not too distant future.
Why Active Directory?
AD is huge, simply massive. Millions of organisations worldwide use AD as their authentication/authorisation provider. If you login to your PC every morning when you arrive at work, you're probably using AD.
Organisations often have a varied application infrastructure, with in-house tools such as file shares, CRM systems, support tools and intranet, and external applications with scope covering document management, project management, CRM, and much more.
The reality is that these often provide separate identities, making security a nightmare. When I join an organisation as a Drupal engineer, I often get granted admin access to their Drupal websites (and this is usually sensible, I generally need it). In theory, when I leave, this access should be revoked. In practice, it's often forgotten, because it's external to the main authentication tool, AD.
Providing a single authentication mechanism - i.e. using AD to provide identity and authorisation control on each service - would massively ease the burden on maintaining security.
Whilst PHP provides all the ldap tools we need to connect to AD, a PHP AD library would go a long way to simplifying AD integration for PHP developers, which cannot be a bad thing.
Oh, I haven't yet mentioned the usability improvement in having shared credentials (or even true SSO), but trust me, SSO is awesome :-)