Tuesday
Sep162008

Twitter for the enterprise (part 1: the beginning)

Click here to read more in part 2 the re-design

We decided to create an enterprise twitter style application for one of our clients who has a very large employee base. I thought it would be good to write some posts about the development process and how we go with staff engagement at launch and afterwards. Also it would be the perfect opportunity to get some great feedback on what you think about the development and any improvements we could make. 

Why an enterprise twitter? There are two main reasons for why I wanted to make an enterprise version of twitter:

1. I've been using twitter for a while now and really like the architecture and simplicity, it's one if not the best application I have used for sharing information quickly

2. I believe that an enterprise twitter can actually reduce the gap between employees, teams and management and bring them closer together. An enterprise twitter would enable people to rapidly share information with each other to keep in touch and stay up to date.

The proposed solution is to create a twitter type of interface and lay this over the organisations existing human resource (HR) database (SAP). This will make the enterprise twitter application much more powerful as each employee already has a lot of rich meta data associated with them form the HR data. Meta data such as the business unit they work for, where they are located, who they report to and so on. Combining this meta data with the dynamic twitter interface should produce some outstanding results.

The first challenge is the tagging and labelling feature of twitter. I want users to be able to tag/label key words such as a project, product or whatever by simply adding the hash "#" symbol at the beginning of the word. For example "Does anyone know who is working on credit card payment method for #XYZproduct" where XYZproduct is the tag that can then be filtered on to find all other references in any existing post. I have overcome this little challenge by programmatically looping through each word in the post and checking to see if it begins with a hash "#". If a word is found that begins with the hash symbol then it can is wrapped with a kind of perma link url and also stored as a tag. For example "http://localhost/appname/default.aspx?Tag=#XYZproduct". This approach seems to be working well so far but we will need to do a bit more testing to check that it will hold up.

Here's a sneak peak at the first draft of the main screen

 

Click here to read more in part 2 the re-design

Wednesday
Sep102008

iTunes8 New Visualizer, Serious Eye Candy!

It's finally here! Not that I was counting down the days.

Here at KMSystems we like nothing better than firing up the latest tunes, what better way is there into get in dev mode?

After moving from Windows to Mac and the lack of a Winamp mac support, iTunes has become my default music player.

Did you know iTunes has a visualizer? I didn't, after checking out the new and improved version I'm impressed!

Check out some random grabs of the visualizer in action.

[gallery]

Personally I don't really care about the Genius option or the cover Grid View, just a heads up for the Aussies reading, we don't get HD TV Shows.

See what else is new http://www.apple.com/itunes/whatsnew/

Thursday
Sep042008

Creating Drop Down List Boxes the Rails way

Call them what you want Drop down list boxes, list boxes, combo boxes the list goes on. You know the ones I'm talking about, the rectangle looking things on a web page when selected give you a list of items you must pick from.

Whatever language you use, if they are on a web page chances are they will consist of a <select> tag with a few more <option> tags (the actual items) nested within them.

Coming from a Java/J2EE background amongst others and moving to asp.net I've seen my fair share of such boxes, in the latter you don't really have to think about creating the controls yourself it was drag and drop then wiring it up in the code behind.

Recently I have been playing around with Ruby on Rails, if you are new to ROR good place to start is of course http://www.rubyonrails.org/ watch the screen cast by David Heinemeier (I can never spell his last name) highly recommended.

After going though some tutorials, I created my first app Woohoo!. You guessed it a task list/to do list you were thing Hello World right?, the thing was I didn't know how to create and bind it to a data source. I quickly searched for some code. It turned out I was looking for the wrong thing, I was looking for a Drop Down List Box or ComboBox when I should have been searching for a Select list box "select" being the keyword.

Anyway hopefully this will come up next time someone from the asp.net world looks for something that exist in both worlds but is referred to by different names.

I finally found something in the http://api.rubyonrails.org/ documentation, below is one of several ways to create a drop down list box or is it a select box?

<%= select("task", "team_member_id", TeamMember.find(:all).collect {|p| [ p.name, p.id ] }, {:prompt => 'Select'}) %>

Pretty simple, lets run though the code to better understand what is what


  • task, being the name of the model this select box is related to

  • team_member_id is the name of the id field in your object, I just think of it as the field name in my table

  • TeamMember being the object, what the find is doing is selection all the records from what some of you may refer to as a look up table

  • If there is no team_member_id then the :prompt => 'Select' sets this as the selected item with a text value of 'Select'

  • p.name, p.id is the name of your object attributes or field names of your look up table, for those asp.net guys text and value


Not that hard when you think about it.

Google is a good information resource, but if your don't ask the right questions then you won't get the right results!

Monday
Sep012008

Two sure fire ways to succeed in software development

This article by Jeff Patton explains two easy ways to successfully develop software. So simple you can't fail.

Two secrets to success in software development are:

1. Start sooner

2. Build less software

This is sadly simple advice.

Agile development does try to short-circuit elongated research and design phases in favor of beginning sooner and continuing active research and design throughout the development cycle.

12 Best Practices for UX in an Agile Environment - Part 2.

Unfortunately reality doesn't usually allow for this well maybe point number two.

Sunday
Aug312008

How to launch software the agile way

We've rolled out a lot of enterprise applications to a lot of users with a big critical launch date that can't move due to all of the communications and build up thats been sent to all staff and management. We have found that this is not the most optimal way to launch any new software within the enterprise or out to the public. In more cases than not this approach is just setting your self up to fail. In Aaron Swartz's post "How to launch software" he explains all too well the reality of what actually happens when software is launched with a big bang out into the public space. It's not pretty, as the public hits the application all at once as soon as its live crashing the application and servers and sending developers in to a tail spin ducking for cover to avoid the complaints and then trying to hack and patch holes all over the place.

The same thing happens in the enterprise, were new software is rolled out to large audiences of say 2000 to 10,000 employees. One nasty bug, crash or even just slow performance due to the intial swell creating a very bad first impression. In an environment where majority of the software is stuff staff have to use not want to use and basically view the software as just additional work to their already hectic daily work load a big bang launch could do more harm than good.

Using agile development methodologies based on an iterative approach new software and even upgrades can be released in stages as certain sections are available. There are a lot of benefits to this approach some being:


    - Smaller releases mean less bugs

    - Users can start the reap the benefits of the new section earlier (as most the most beneficial components of the software are prioritised and built first)

    - With each next release there is a new opportunity to communicate with the user based and reengage them into the software creating lots of smaller swells as apposed to the one big one

    - User buy in can be achieved by allowing them to provide feedback and suggestions for improvement based on their experience with each release of the software