New site and blog

Posted October 24, 2008 by davidabrahams
Categories: Uncategorized

So far we loved using the free wordpress.com blog service for kmsystems however the design/layout/themes have jsut been a little bit limiting so sadly we have decided to leave WordPress for the moment and give squarespace ago. 

Please come and check us

Who knows we may be back soon

Defensive programming

Posted September 28, 2008 by davidabrahams
Categories: Design, Development

At kmsystems we try to do as much defensive programming as possible when writing code. One of the most common is the use of “ElseIf” instead of just using “Else” in a If Then statement. Reason being is that it is a lot more specific and helps you really think about the scenarios you will be catching here.

Another one that should be just as common especially in ASP.NET is checking to see if an item already exists in a drop down list before selecting it. The problem here is if a item is programatically selected in a drop down list which doesn’t exit the page will crash. This can occur when the user edits an existing record and the code attempts to bind the existing data to the form however the drop down list items may have changed and the item previously record here has changed or been removed.

Dim StrNot_In_List As Integer

StrNot_In_List = ddl_Control.Items.IndexOf(ddl_Control.Items.FindByValue(dr(”db_Field”))

   If StrNot_In_List = -1 Then

      ddl_Control.Items.Add(New ListItem(”db_Field”, “db_Field”))

   End If

ddl_Control.SelectedIndex = ddl_Control.Items.IndexOf(ddl_Control.Items.FindByValue(”db_Field”))

In the about code ddl_Control is the drop down list control and “db_Field” is the database field that needs to be selected in the drop down list.

Report Viewer (Processing Mode – Remote)

Posted September 26, 2008 by diennguyen
Categories: Development

Tags: , , ,

Hate the yellow header and necessary links when viewing reports directly from the server? Hate is such a strong word maybe dislike.

One option(amongst others) is to create a customised report that runs on your web server, sounds like work to me. Another option is to change the reporting services config file to hide.collapse it, not an option if you share the server since this will affect all users.

Why don’t we just run the rdl (report definition file) file from the server through report viewer. Good news, you can!

Did I mention the report runs faster, lets begin.

Report Viewer Configuration

Make sure the processing more is set to “Remote”, use the markup below as a guide for the rest.

<ServerReport ReportServerUrl=”http://<report server name/ip>/ReportServer” ReportPath=”/<folder path>” DisplayName=”Returns”></ServerReport>
</rsweb:reportviewer>

Things to Note

  • Use ReportServer not Reports when post-fixing the ReportServerUrl
  • There is no need to prefix the ReportPath with ‘Reports’
  • The file type does not need to be specified e.g. ‘.rdl’, leave it out

On final thing, allow your web server (iis) to view the report. Give ‘<domain name>/<server name>$’ browsing rights.

What is our focus?

Posted September 25, 2008 by davidabrahams
Categories: Development, Projects

Primarily we are in the Business to Employee “B2E” space, what we are good at is taking processes that are currently manual or poorly managed with ad hoc Excel spreadsheets and streamline them it into a centralised web application that is more robust and scalable.

Our focus is in the long tail of B2E software the kind of solutions that a single department say Marketing may use just to keep track of campaigns or a solution that enables sales and product development to work together. Below is a drawing which illustrates the long tail of software development in any company, the areas we work in are “Hack” and “Unserved”. These area generally do not get dedicated big IT spend allocations but have some project discretionary allowance to improve the way they operate and this is where we come in.

 

We have built over 60 different web applications for large organisations ranging from ideas capture for staff, project status reporting, call tracking/reporting, HR reporting, sales tracking and reporting, supplier management, learning and development, etc. Click here to see some examples of some of our recent projects.

Twitter for the Enterprise (Part 2: Page Re-Design)

Posted September 22, 2008 by diennguyen
Categories: Application, Design

Tags: , , , ,

Back in Part 1 Twitter for the Enterprise (Part 1: The Begining) after being satisfied with the apps functionality, it was makeover time.

I thought it would interesting to take you through my thoughts and what I think is important when giving the app a much needed face lift/redesign.

Layout

The first thing I like to do is a rough sketch of the layout including elements such as header, contents and footer. This allows me to play around with proportions, I decided to have a horizontal header spanning the entire page that was quite thin allowing the content section to stand out more.

Colours

A good place to start when looking for inspiration is COLOURlovers, just create an account and your away. It’s amazing how easy it is to create a set of colours that work well together, the website allows you to save and share your palettes with other uses. On this occasion I decided on some very similar colours with a bright or contrasting colour to suit.

DIV Not TABLE

Back in the day when I built my first web page it was easy to just chuck everything in table rows and columns spanning, merging, mashing you name it.

As a rule tables are good for represent data and that’s all they should be used for. The use of div is a more  flexible/cleaner approach, I often find myself compelled to clean up a layout done with tables. I’ve been using div’s for a while now and haven’t looked back.

Visual Hierarchy

Decide what you want the users’ attention to be drawn to, in our case we wanted the users to see the the text box before anything else hence the reason why it’s so large and bright. Even colours can serve to create this sense of hierarchy one way to archive this is to place a brightly coloured element on a darker background this gives a sense of the brighter element being on top or at the front. Use of different font sizes can also serve to further emphasize this.

Check out the new look, we haven’t decided on the name yet.

Twitter for the enterprise (part 1: the beginning)

Posted September 15, 2008 by davidabrahams
Categories: Application, Development, Projects

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

iTunes8 New Visualizer, Serious Eye Candy!

Posted September 10, 2008 by diennguyen
Categories: Application

Tags: , , ,

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.

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/

Creating Drop Down List Boxes the Rails way

Posted September 4, 2008 by diennguyen
Categories: Development

Tags: , , ,

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 through 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!

Two sure fire ways to succeed in software development

Posted September 1, 2008 by davidabrahams
Categories: Agile, 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.

How to launch software the agile way

Posted August 30, 2008 by davidabrahams
Categories: Agile, Development

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