ColdFusion Week = Free Software for Someone

This is yet another reminder that I am giving away free software for my session next week for ColdFusion Developer week.

Refresher on the rules:

  • Refer a ColdFusion newbie to my session by email
  • CC me on the email (terry.ryan@adobe.com)
  • They must attend
  • If they do, you are both on my listI will select one pair from my list
  • I will send both of you your choice of a single CS 5.5 product (suites excluded)

My session is an intro to ColdFusion. The idea is to bring new people to the fold. Help out, send me your newbies, your skeptics, your doubters, your whatever. You both might get free software.

To those who have, I thank you.

Coasting to Irrelevance

Last night I linked to an article in Campus Technology entitled “Is IT Digging Its Own Grave?” It’s focused on higher education, but it really applied across the board. According to the article IT is digging its own grave by outsourcing various parts of itself to cut costs. After enough cutting, it’s not clear what value the IT department actually adds. To be clear, this refers to organizations dedicated to IT within larger organizations, not actual information technology, which will continue to be part of our world. But when a consulting company is handling your help desk and device support, and you buy development time for the applications you need, and your servers are handled by a hosting company, what need is there for an IT department?

This has been true for awhile though, at least since the ’90s, and IT remains. What’s different this time around? This time around there are two democratizing forces that IT can’t fight: the Cloud and the rise of smartphones, specifically including iOS and Android and specifically excluding BlackBerry. How are these connected?

In the past, despite the fact that outsourcing replaced IT function, IT still controlled it. They controlled their cost, but you never saw an individual department bypass IT to outsource an IT need. That was because they couldn’t–until cloud solutions came around that is. I cannot tell you the number of stories I have heard from developers who have asked for things from IT, been turned down, and then resorted to going around IT and hosting their solution on EC2, or another cloud solution. I also cannot tell you the number of times the developers in question had a ginormous smile on their face when they told me about it. I’ve heard these stories in education, in the corporate world, within innovative technology companies, and even in government.

Developers tend to be technology savvy, and therefore more likely to do this. So it isn’t the end of IT. It’s just the beginning of the end of IT. First it will be developer hosting. Then satellite offices, tired of bad network service, will bypass corporate networks in lieu of local solutions. Backups, more networking, and more hosting will follow. An IT org doesn’t have to lose everything to be meaningless, but when more is done without them than with them, a reorganization bloodbath is soon to follow.

Then we’re on to devices, which have always been the purview of IT. You start a job, you get handed a laptop or desktop, told what software to use, and that’s it. Please sir, can I have more RAM? MOOOOORRRRREEEEE????? As an employee if your issued tech sucked, you were pretty much SOL. But enter the smartphone as envisioned by Apple and largely duplicated by Android. IT departments were used to issuing devices and the BlackBerry and its server-side architecture backed up this model. In the beginning you could only use a BlackBerry if IT had the server setup. (You could do an individual redirector, if you were allowed to install it, which you probably weren’t.) But the modern smart device bypassed this setup with one simple little thing: people bought them regardless if they worked with corporate email. Eventually pressure from CEOs and large amounts of staff led to IT having to support it. Up until now the rest of the organization didn’t really drive IT policy. You rarely if ever heard other chiefs say “we must use Windows” or “we must switch our networking infrastructure to Open Source.” (I know that in the history of the world it’s happened, but not as a concerted trend.) But you hear CEOs saying “I want my iPad to work in the office.”

So IT departments are losing control of the back end and the front end. From what I’ve seen they typically have one of two reactions:

  1. Clamp down control
  2. Blindly acquiesce to everything

Both are short term solutions that are going to kill IT in the long run. Clamping down control will just encourage end runs, and CEO mandates. Blindly doing what everyone else says proves the argument that IT is unnecessary.

What chance does the average IT department have to survive? Most of them, not a good chance. Not at the strength and influence they have had to date. If an IT department’s role to date was issuing devices and running back-end services they have no future, they’re coasting to irrelevance. They will be eroded from both ends until they are gone. I don’t think anything can stop that. The IT departments that survive will be those that do more than just keep those services running. They will be those that inject themselves into the purpose of the greater organization and provide a sustainable competitive advantage to their organizations….

Well duh.

What does that look like? I’m not sure in all cases; if I were I’d be a CIO somewhere, but I have some ideas:

In education, it will take a a focus on technology that actually puts information in students’ brains better. Also a focus on making faculty research easier, less time consuming, or with connections that haven’t been made before.

Corporate is a lot harder to define. Clearly it will take technology that improves shareholder value. But that’s so fricking broad I could say any platitude here and it will sound right. IT in the corporate world seems to be relegated to a competitive necessity and that’s it.

Government is also a crap shoot. But the next decade at least of government IT in the US will be about Existence Justification both for itself and its parent organization. Government IT departments that can help show the impact of their organization will be better off than those that cannot.

In all cases IT needs to put up or shut up in the next decade. Power based on IT department’s control is going the way of the dodo. Today’s workers want what they want, and the other C-Os in the organization agree with them. And to those bastards who wouldn’t give me more RAM I say, don’t let the door… Actually I don’t care, just get out.

Getting the Distance Between Two Points Using ActionScript

As you may know I recently released an application named Finicky that allows you to match up locally available items to locations. These locations are stored by their latitude and longitude coordinates. One of the features I wanted to enable was a display of the distance between your current location and the location of each item. To do this you have to do some math on the two pairs of latitude and longitude.

This is evidently a common need, and there is a mathematic formula with a name and everything:

The haversine formula:

a = sin²(^lat/2) + cos(lat1).cos(lat2).sin²(^long/2)

c = 2.atan2(sqrt(a), sqrt(1-a))

d = R.c

This frankly sounds like some sort of experimental drink that pulls a Jekyll and Hyde on you, but instead of making you a monster, makes you upperclass British. But I digress.

One of the cool things about it, is that as written it’s capable of finding distance in whatever measurement you want, as long as you know the radius if the earth in that measure. Very cool, math nerdy stuff. 

There is a great bit explaining this, and a version of the haversine formula in JavaScript at Movable Type Scripts. But I had trouble finding an ActionScript version. So I just translated the JavaScript version. It is included below.


https://gist.github.com/1188832.js?file=example.as

Articles That Helped Me Build Finicky

On Friday I announced the release of Finicky, a new mobile app built using Flex and AIR. I wanted to take the time today to give some link love to all of the articles I used to work out the various challenges of writing a Flex Mobile application. Hopefully this list points people to something that could help them. I’m sure I’m missing some, as I did try to grab these links as I went; I’m sure I forgot to grab one or two.

Jason’s Flex Blog
I don’t know what exactly I cribbed from Adobe’s Jason San Jose, but I know it was a lot. Pretty much every bug patch, or skinning hint that I got was from him. Just read his whole blog.

@renaun posts: Using Flash CS5 to embed Fonts in SWC to use with Flex Hero and Flex Mobile Hero
Finicky uses a lot of custom fonts. My teammate Renaun Erickson has a great post here on getting all of your fonts packaged together in a SWC file for inclusion in your apps.

URI Handlers in AIR for Android: Phone Calls, Email, Text Messages, Maps, Market, and URLs « Christian Cantrell
I wanted to launch Google Maps for getting directions to a location listed in Finicky. Adobe’s Christian Cantrell sums up how to do it pretty perfectly.

Using Menus in your Flex 4.5 Mobile Application | Devgirl’s Weblog
Fellow Adobe Evangelist Holly Schinsky has a great post about using and styling menu controls in your Android AIR apps.

Reskinning the Android contextual menu (ViewMenu and ViewMenuItems) in Flex / AIR mobile to look like Gingerbread black – daaain’s thought stream
Daniel Demmel has another helpful article that helped me get through skinning the menus.

Android, AIR and the Camera | RIAgora
A small part of the UI is grabbing pictures that you can associate with items. To do this I needed to work with the camera in AIR. Another of my Evangelist peers, Michaël Chaize, has a helpful post about doing just that.

Tips for Flex mobile apps | RIAgora
Michaël also has a great article here detailing a bunch of little hints for building mobile apps with Flex. I used at least half of them.

ArrayCollection Filter Example | Flex-Blog.com
I’ll admit it, there are pieces of basic Flex that I don’t know off the top of my head. Filtering the results of an Array Collection is one of them. So Roelof Albers’ post was very helpful .

Tombstoning in AIR-Mobile Applications « Filthy Rich Applications
One of the things you need to do with mobile applications is deal with deactivation events, or what do you do when someone calls, or the user just switches to another application. Finicky uses geolocation, so I need to be very careful about preventing wasted battery life. Adobe Technical Writer, Frank Jennings’ post has great information handling these cases.

AIR on Android OS Interactions – Send Email | EverythingFlex: Flex & AIR
Sending email from a mobile app is pretty commonplace. Doing it is well explained by this article by Rich Tretola.

AIR SQLite Optimization tricks | Parametrized SQLStatement | SQLite Transactions | zedia flash blog
Working with IO can be expensive in a mobile application. I didn’t realize how much so until I started doing some bulk inserts of sample data. So I needed some AIR optimization hints. I had forgotten completely about transactions, but luckily for me, this Dominic Gelineau post reminded me.

 

Reminder about ColdFusion Developer Week

Last week I posted about a little giveaway I am holding for ColdFusion Developer Week. Just to recap, the rules are:

  • Refer a ColdFusion newbie to my session by email
  • CC me on the email (terry.ryan@adobe.com)
  • They must attend
  • If they do, you are both on my list
  • I will select one pair from my list
  • I will send both of you your choice of a single CS 5.5 product (suites excluded)

I got a couple of questions on this, so let me make things clear; a newbie can be:

  • Unfamiliar with ColdFusion
  • Heard of, but never used ColdFusion
  • Used, but just getting started with ColdFusion

If you think they can benefit from a “Why use ColdFusion session?” I’d love for you to invite them. You can invite more than one person. Each person you invite, who attends, gives you another chance at the giveaway.

Finicky – a Flex and AIR mobile app

For the past few months, I’ve been working hard on a mobile app called Finicky. It’s a mobile journaling application for tracking hard-to-search-for, local items.

The idea for it came to me in San Francisco. I wanted to smoke. I smoke cloves. (Make your hipster jokes.) However, cloves tend to be a little hard to find. Most convenience stores don’t carry them. The tend to be found in tobacco shops, head shops, and occasionally at a random spot like a newsstand. I tried searching on Google, but it’s hard to get reliable data on which stores stock them. The really frustrating part of this was that I know I had found them before. If only I had somehow kept track of it…

Now a mobile app just for tracking cloves would be overkill. But as I thought about it, there were a lot of things that I would love to track like that. Ever been a Coke/Pepsi fan in a Pepsi/Coke town? Can’t search that out. I like a whole bunch of other specific things. So thus was born Finicky.

I approached this a little different from most of my apps, in that I got design help from the beginning. By design help, I mean a full Photoshop comp and UI treatment. I wanted a different look for my app then I’ve seen with most mobile apps, especially on Android. I wanted something grungy and organic. I know what I wanted, but I don’t know how to design it. So I got help from The1stMovement, a design firm who our team had done work with in the past.

What they designed was beyond my imagination. Hence, why I needed a designer. It’s great looking, it’s got a specific style, and it doesn’t look like anything I’ve seen on a phone.

I took those comps apart and turned them into mobile Flex skins. And here is the result. I am releasing it as an Android app first. Then releasing it as an iOS app. I’m going to have it out on Android, iterate through bug reports as fast as I can, then when I’m sure of stability, get it onto iOS. For now I’m targeting just phones for this app. If it there is interest, I’ll port to tablets.

In any case, find out more and link to downloads at http://finickyapp.com.

Source is available on github

ColdFusion Developer Week

Thanks to the organizational skill of one Simon Free, there is going to be a ColdFusion Developer week September 12-16th.

The week will be full of content and is meant for users all across the spectrum, ColdFusion newbies to experts. Check out the content, see what fits you, and refer your friends.

I’m going to have a little giveaway to sweeten the pot. I’m going to give away 2 copies of any CS 5.5 product (so no suites, just single apps.) The details:

  • Refer a ColdFusion newbie to my session by email
  • CC me on the email (terry.ryan@adobe.com)
  • They must attend
  • If they do you are both on my list
  • I will select one pair from my list
  • I will send both of you your choice of a single CS 5.5 product (suites excluded).

My session details:

Getting Started with Web Application Development Using ColdFusion

Mon., September 12, 2011 10:00 AM US/Pacific

What is ColdFusion and why would you want to use it? This session will answer that and show off some of the simple power of ColdFusion. By the end you should have a clear answer of what CF is, what it can do for you, and why so many ColdFusion developers are passionate about this tool.

BrowserLab is Free

A few months back I did a post about rewriting my site with HTML5. It just got reposted by DZone. It picked up a few reads including one from the Product Manger for BrowserLab, Bruce Bowman.

He took me to task for claiming that you had to be a CS5 customer to use BrowserLab. To quote Bruce:

While it is true that when registering CS5 apps, you are given an opportunity to also get a CS Live account, which includes BrowserLab, it is not required to buy a CS application – anyone can register for a free BrowserLab account, even if they don’t own any Adobe products. All that is required is an AdobeID. They just need to go to http://browserlab.adobe.com and follow the prompts to sign up.

Awesome, BrowserLab is free. Go forth and correct for the fact that browser companies love features and hate developers!

Delay Closing Mobile Apps on Exit

When a user switches to another application on a mobile device AIR on mobile applications keep running. It continues to hold on to resources, fire off events, and has the potential to use power draining resources like network calls, or geolocation if your app makes use of them.
That’s why one of the first tips you see is to kill or tombstone your application when the user switches away from it. In general, unless you have a good reason to do not do this, you should. Your users might not notice that you drain their battery to zero, but then again they might.
But I have a good reason for not wanting to do this right away. Actually I have a few:

  • As a user, I frequently accidentally hit the home instead of back button
  • As a user, I frequently lookup stuff on the web then come back to an application.
  • As a developer, I frequently makes calls to OS resources like the camera or mapping in my app.

All these add up to needing to revisit closing on exit.
I’d like to get the benefit of closing on exit in terms of resource usage, but I’d like a grace period. So, my solution, fire off an event when a user leaves the application, that sets a timer to shut down the app. Then if the user returns, kill that timer.
Simple, easy, and best of both worlds.

https://gist.github.com/1051820.js