:::: MENU ::::
Posts tagged with: top 5

The Best Start is 5 Simple Steps

I see this over and over again: a client/friend/kitten gets an idea for a project. For arguments sake, let’s say it is a Windows Phone app (kittens are especially good at those). As they talk more and more about it, this app idea grows and grows. They might all be great ideas and features that are discussed and agreed on, but sooner or later they want to begin the project and they have no idea where to start. So they just start coding and soon something is produced and working, but it is not quite like they had imagined. The next feature is difficult to implement and user reviews state they aren’t as successful as their promising idea was meant to make them. Hmmm, then what. Usually the project is neglected and the grand idea gets put on the backburner once more.

What has happened is that they forgot the KIS principle. Keep It Simple. There is nothing wrong with being enthusiastic and starting something new. The problem is that they try to do everything and all things from the beginning. The best start is a simple one. Once the initial brain storming is completed, a few simple steps will ensure you won’t become disillusioned, burnt out and lose focus.

  1. Decide what your app is good at. You need to have a core focus for your app, which you can say in a single sentence. For example, “I help get people faster to the airport”, if you provide some sort of traffic or flight services.
  2. Define a minimal viable product. Of the ideas and features you have brainstormed, focus on the minimum set that can achieve the core of your app.
  3. Plan the next iterations with the remaining features.
  4. Develop your awesome idea. Make the best, but simplest, version of your app. Make sure you do one thing really well and focus on that.
  5. Move to next iteration. Once you have published your app, it is time to move to the next set of ideas and features. Don’t forget about bug fixes though!

With these simple steps you can get a great start to your app, and have the best chance of making it a success. If you have any other tips, I would love to hear about them in the comments below.


Top 5 Web Developer Browser Tools

In a world which increasingly relies on the internet for pretty much everything from funny pictures of kittens to complex Super Annuation calculations (ask @alexjmackey about fun with those), the modest web browser is not so modest anymore. Gone are the days of cumbersome web apps with full page reloads and spinning gifs (and who could ever forget <blink>Awesome Sauce!</blink>). Today web applications has to work on desktop, tablet and mobile formats. They have to work across all modern browsers (and sometimes in some archaeological ones too), be lightweight, responsive and unit tested.

As a software developer you have to be aware of all these areas when you set out to build the next web app of the future. You will most likely have specifications to build after, but what tools can help you really excel in your build process? Below I have listed some of the tools which have helped me nail some issues, or made some tasks much much easier. Let me know in the comments, if you have other tools that are awesome/interesting.

User Agent Overrides

Because the web is now available via pretty much every device with a screen, as a developer you have to accommodate all these different resolutions. You have to make sure your latest post on Estonian knitting looks awesome on a PC, a MacBook air, an iPhone, Nokia’s Latest Windows Phone and many other devices. All of these devices have different user agents, which tell the browser which device it is. The browser and, more importantly, the requested web site can then change it behaviour accordingly.

In Google Chrome you can access the user agent overrides via the Dev tools settings. Hit F12 and go to settings in the lower right hand corner (little cog).

Dev Tools Settings

On the settings screen select “Overrides”

Override Settings

Here you can override the user agent and the screen size. This is really handy to simulate all your target devices, and it actually works!

Similar functionality is available in Firefox via a plugin, or in Internet Explorer via the developer tools as well (that is via F12 too).

IE Overrides

Page Speed

One of the key ingredients to a successful website is performance. As the below infographic from StrangeLoop indicates, just a 1 second delay in page load time can decrease customer satisfaction by 16% and almost half of visitors will not return to a poorly performing site. On top of that web users now expect the site to work equally fast on mobile devices. Major sites like Google and Yahoo records increase in traffic in the millions for just getting fractions of a second faster page loads. Yes, page load and performance are truly important on all platforms.

Strangeloop Infographics

Fear not, Page Speed to the rescue! This add on to your developer tools in Chrome made by Google (there is also a FireFox version) instantly gives you an insight into yours or anyone’s site performance.

PageSpeed Start

Once you click on the “Start Analysing” button, the site will reload and all manners of metrics will be recorded. The really cool thing is that you don’t just get a bunch of numbers for sections or areas. All of the data is presented as suggestions on what to improve and how to improve it. Very cool.

PageSpeed Analysis

You can immediately tackle the high priority items, and prioritise the rest.

WhatFont

One of the pain points of developing smick looking web sites for your local Russian dance association is to deal with fonts. Fonts can be missing, they can be overridden they can be served from different sources. It all makes it complex to keep track of. WhatFont lets you inspect fonts on a page with ease.

WhatFont

Very simple, very easy to use. Makes the font task easy to handle.

Knockoutjs Context Debugger

There are a lot JavaScript frameworks around, and they can do vastly different things. There is the omnipresent jQuery, the pweetty and versatile three.js and the more interestingly named pyjamas and handlebars.

A framework I am starting to really get the hang of is Knockout. It is an MVVM framework, which makes all the JavaScript magic so much easier. Using a viewmodel, your front end code becomes very dynamic and updates through binding of properties. The problem with this is that all of the bound properties and code becomes hidden or obfuscated. Knockout Context Debugger to the rescue! This is a Chrome exclusive plugin that I was made aware of my @Nazulu.

Knockout Context Debugger

It installs as an extra section in your developer tools, which is accessible on the elements tabs. Select an element that has knockout binding to it, and watch the magic JS fairies populate your knockout context section. It is extremely valuable if you work with Knockout.

NHProf

Going hand in hand with performance of a web site is the server side response time. Often the backend of a website has some form of database interaction, whether you are storing recipes or the latest AFL results. If this database connection is slow, your site will be slow. A large majority of sites will be using an ORM to help interaction with the database. One of the more popular ORMs is NHibernate.

Although it is not a browser tool, I use NHProf every time I use the browser to optimise performance. NHProf is a profiling tool for the SQL executed on the database using NHibernate. Because NHibernate makes it difficult to see exactly what is being executed, optimising your NHibernate code is sometimes difficult. But with NHProf you can see exactly what was sent to the database and perform detailed analysis of the queries and results.

The licensing for NHProf is a bit on the expensive side, but the benefits are huge if you are serious about database performance.

NHProf


Top 5 Software Development & Software Management tools

Previously published at blog.kiandra.com.au

When it comes to tools for building software, there are about as many opinions as there are software developers (affectively known as code monkeys). Compiling a list of the top tools of any discipline within software building will be highly subjective. As such this list (well, there are actually two lists as you’ll find out) is a reflection of talking to a small sample of developers. These developers are all highly passionate about software and the creation of such, and all have their personal preferences. This article is not meant to tell you what you should use, but rather (hopefully) present new ideas and inspire you to try out alternatives. Take what you can use and leave the rest.

The first list of tools is leaning more towards the software crowd that has the business analyst or project management hat on. Having said that, all the tools in this list are very useful to developers as well. Chances are, if you are a disorganised developer your code will be disorganised as well. These tools could help organised your day, your project and your code.

Software Management

Any management of software building is complex. Acceptance criteria, customer expectations, development lifecycle, defects and unexpected events are all part of producing a successful outcome. For those task and more, below is a list of tools that can make your software management journey feel like a two week holiday in the <destination type=”dream”> Siberian Tundra.</destination>

Trello

Thought up by Joel Spolsky and his company Fog Creek Software, Trello facilitates easy collaboration between teams. Using a method known as Kanban, Trello has a series of boards which define various steps in a project. Boards contain Lists, which has a number of Cards on them. Cards, or tasks, are the basis for managing the finer grain of a project, and the cards are meant to move from list to list to monitor progress. Users are then associated with boards and can be assigned cards.

trello

The application of Trello is limited only by the imagination of the user. You have complete control of boards, lists, cards, who can see a board and who is doing what. You can attach photos, files and web links. You can tag and label cards for more categorisation and you can track changes to cards.

Top this off with a superb user interface that feels natural and straight forward. The learning curve is very mild.

JIRA

If you are working on projects that are just medium in size or are working in a medium sized organisation, chances are you have heard of JIRA. Built by Sydney based company Atlassian, JIRA is a one stop option for project tracking and task/issue management on any project. At the time of writing version 5 is the current iteration and offers the end user complete oversight of a particular task’s status, a project’s progress and everything in between.

jira

Just to test the flexibility (and because I am a developer, hence love cake) I once created a JIRA task for my business development manager to bake muffins. I tagged the task with the ingredients required, set the status to “blocker” and put a deadline on the task. The description allowed for some flexibility in the style of muffins and I even contemplated putting additional resources and cost estimates on the task too. The outcome was a healthy dozen muffins enriching my entire team’s day.

pm.stackexchange.com

Chances are that you have heard of stackoverflow.com, one of the largest technical forum sites on the interwebs. As part of the Stack Network there is pm.stackexchange.com, which is a portal for project managers in particular. Questions relating to project management are put forward, then answered and rated for relevance and quality, much like Stack Overflow.

pm.stackexchange

Podio

To organise team communication, business processes, data and content in project management workspaces, Podio supplies a web-based platform which is free to sign up to. You can also select business apps from an online app store or build your own as you see fit.

Being a relatively new service (started in 2011), Podio is very ambitious and does offer a great range of tools for managing leads, tracking job candidates, doing accounting and everything in between. It is a social take on project and team collaboration.

podio

As an aside, I don’t mind either that Podio is yet another quality software package to come out of Denmark. The motherland seem to have a lot of interesting products and ideas coming out in the last few years.

Zoho

The online office suite has been around for eons in web speak. Launched in 2005 Zoho offers a range of products including word processing, spreadsheets, presentations, wikis, bug tracker, chat, mail and much much more. They were one of the first to offer proper cloud office services, negating the need for software and hardware updates.

zoho

Software Development

The main mantra for a software developer is “why do something, someone else has already done (well)”. If there is a tool that makes your life as a developer more productive, makes you produce better software, allows you to refactor code easier, can massage your back while playing soft soothing music and feeding you snacks or whatever it might be, then we use it. There is always a better way of doing a particular task, and if someone offers you a shortcut to do that, then why try and invent the muffin tin yourself?

Cloud 9

If you are like me and always on the go, being in a car, commuting to work, at a client or spending time away from your normal work station in some fashion, then you will quite likely have come across the desire to have your work/pet project/library reading list app with you. Cloud 9 allows you to have a complete development environment within a browser. You can collaborate on projects with other likeminded developers and even edit in real time with another party. Pretty cool.

cloud9

The IDE in the cloud supports the most popular languages such as PHP, Javascript, SQL and XML. However, you also have support for the languages used less often such as Lua, Scala and SH. You get intellisense, code completion and integration with the most popular cloud services, such as Windows Azure, heroku and Cloud Foundry.

Live.js

Ever had to edit CSS or Javascript, then view it in the browser to see your change? The typical workflow is something like

  1. Load browser to see what is broken/needs fixing
  2. Open up the file to edit
  3. Save change
  4. Alt+Tab or click on browser window
  5. Hit F5
  6. Observe change

With Live.js you get to skip step 4 and 5. A small piece of JavaScript will automagically update your browser to always show the latest HTML, CSS and JavaScript. It is efficiency++.

BrowserStack

As a web developer testing your work in a plethora of different browsers is always arduous. Not only is it easy to skip over the browsers with little use, but even more importantly, where do you get access to IE version 6 or Firefox version 13. And not only that, but you have to test on Windows XP, Windows 7 and Mac OS Mountain Lion. Welcome to the party BrowserStack. These guys have made the effort of keeping around almost any modern(-ish) browser/platform combination you can think of.

BrowserStack1

BrowserStack2

It is a truly invaluable tool if you want to make sure you have all your bases covered. Every new browser and platform combo is spun up in a new Virtual Machine, so you have your own instance. You can set up a secure tunnel, so you can test your local html and design on the remote server.

ReSharper

It has almost become part of the default toolset for web developers working with the Microsoft stack to use ReSharper. A lot developers I talk to almost can’t use Microsoft Visual Studio now without this comprehensive productivity tool. Just to name a few features, ReSharper will give you real time code analysis, keep you compliant to agreed coding standards, search huge datasets and thousands of files instantly, code refactoring with ease, code cleanup, multiple refactoring tools and oh so much more.

ReSharper1

Chances are that your productivity as a developer will increase significantly, but that is not the best bit. ReSharper takes care of all the boring stuff, such as renaming “cat” to “kitten” in your Fantastic Feline application (@alexjmackey has written that one), so you won’t have to. The team at JetBrains has put a lot of effort into making sure you don’t do the boring repetitive tasks of old grey beard developer days.

ReSharper2

 

<tool>your favourite</tool>

As I said in the beginning, this list is highly subjective. This last item is your chance to let us know what your favourite tool is. Fill in the comment below and tells us your favourite tool and why you think it is valuable. It can be anything, as long as it doesn’t involve ducks. Ideally it should be something which improves the dramatically interesting live of developers.

Give it your best shot. I want to know!!