Tools
Managing your Development Business for less than $50 / month
Apr 19th
Overview
In the process of running your own software development business – or any type of business for that matter, you need to keep on top of things; dropping the ball for a day could land you in some trouble. Small-to-medium software development companies (consisting of between 1 and 30 people for example) are going to require the following services:
- Source-code/Project/Time management
- Document management
- Meeting management
- Billing & accounting
- Internal & external communication (Instant messaging, VOIP)
- Website Hosting
If you, as a business owner or manager, have the power to control all of these services from your browser then you will have the peace of mind knowing that you’re on top of things.
Luckily, in this incredible world where Software-as-a-Service (SAAS) is booming at an astounding rate, keeping track of your business comes at a minimal cost: +- $30! Most of these services that i will talk about are web-based, which means that all your data will be stored offsite. That last sentence will strike fear into the heart of any business manager – if he/she is ignorant about the inherent value of offsite storage and SSL-encryption. The fact is, storing your data offsite is a smarter option; offsite storage means that your data is hosted outside of your physical office space, which means that no matter what natural/unnatural disaster strikes your premises, your data – the fundamental part of your business - is safe. If you also make sure that these web-services communicate through an encrypted connection, then there really is nothing to worry about.
Let’s look at how we can get the most bang for our bucks with some of the best online tools available…
At the heart of every software development business is email… no suprises there. What will surprise you is the massive bill you’ll be happily stuck with by Microsoft or IBM if you use their Exchange or Lotus Notes services. There is a solution though… Enter Gmail from Google. I’ve been using Gmail now for about a year, and i must say that it’s a tremendous improvement over Microsoft Outlook. Here’s why i love Gmail:
- The ability to add as many POP/IMAP accounts to your Gmail account – consolidating all your email into one sleek interface. Not only can it pull from all of your other POP/IMAP accounts, but you can also send from them too! I’ve got 5 email accounts all running through Gmail and i can send email from any one i like.
- Amazing spam filter
- Integrated chat
- Labels & filters – you can customize Gmail to automatically label emails by search terms. For example, i’m the development leader on an open-source framework called AMFPHP. If i send or receive an email containing “amfphp”, it gets labelled as “AMFPHP” and neatly filed with all my other emails matching that search query.
- Outside access – i’ve got an HTC Hero which has a Gmail application installed, which means i can access my Gmail from my phone
- Integration with Google Contacts, Google Docs & Google Calendar
- > 7GB storage!
- Extremely fast search (c’mon, this is Google)
Cost: Free! (or $50/user/year if you want to use the business package with 25GB of storage per user)
Source-code/Project/Time management
This is by far my favourite and most valued service that i subscribe to: CodeBaseHQ. Using CodeBaseHQ has changed the way that i develop software. It gives me the freedom to work the way i want and feel comfortable knowing that support is just an email away (with super-fast response times and helpful service). Here’s why I love CodeBaseHQ:
- Great variety of Source-code Management (SCM) repository systems – Git, Mercurial and (my personal choice) Subversion
- Built-in project management features to help me and my clients keep track of bugs & feature requests
- Very slick and customizable interface – easy to understand and use
- Secure, well-managed code storage
- Very helpful support team
- Actively in development – new features being added all the time
- Reasonably priced
- Time-tracking built right in
Cost: $8/month for smallest package, $32 for more serious usage
Document Managament
You guessed it… Google Docs. Why would you want any other system? Google Docs makes it really easy to view and collaboratively or individually edit documents of most formats. Google Docs allows you to upload files of any type and has some crazy features like built-in integration with Google Translate to facilitate translation from right there in your document! Here’s why i love Google Docs:
- Upload files of any type
- View most document formats (PNG, JPG, GIF, PDF, DOC, XLS, PPT)
- Collaboratively edit documents (but you can edit on your own if you like
) - Built-in dictionary and translation
- Creation of a wide variety of document types (text documents, spreadsheets, presentations, forms, drawings)
- 1GB of storage (or 20GB for a minuscule $5 per year)
Cost: Free! (or $50/user/year if you want to use the business package)
Meeting Management
I know i’m starting to sound like a Google fanboy, but Google Calendar is the shit (pardon my French). Apart from doing just what you want a calendar to do (and no less, but a little extra), it’s really well thought-out and easy to use. Once again, Google has outdone themselves and allowed you to sync your calendar to a wide variety of applications, and i use my calendar on my HTC Hero (a Google phone, wow – maybe i am a fanboy) to manage all my meetings knowing that all my appointments are safely stored online and accessible anytime. Here’s why i love Google Calendar:
- Clear, concise interface – very sleek and simple to use
- Sensible interface for creating/edit appointments – drop and drop, expand and contract
- Multiple calendars (personal, work, etc)
- Integration with your country’s national holidays (and religious holidays too)
- Task management built in
- Collaboratively invite people to an event or appointment and keep track of who’s attending or not
- Sync with many clients: Google Chrome, Thunderbird, Outlook, Entourage, iPhone, Android
- Extremely fast search – duh
- Free notifications – email, pop-up reminder, SMS (also free)!!
Cost: Free! (or $50/user/year if you want to use the business package)
Billing & Accounting
Freshbooks, what a service! Freshbooks is fantastic online service which allows you to create customizable estimates and invoices – all accessible via the web. It’s a very clear and simple application which makes invoicing and cost-estimating really simple, and it makes you look very professional. With over 1 000 000 subscribers to their service, you can be assured that this service is top-notch. Here’s why i love Freshbooks:
- Create your invoices online
- Simple, sleek and professional interface that you and your clients can easily understand
- Fast, reliable and well supported by a fantastic support team
- Actively developed – new features added often
- Manage recurring and once-off payments
- Multiple currencies
- Built-in accounting
- Reasonably priced
Cost: $19 / month (more options available)
Internal & external communication (Instant messaging, VOIP)
If you don’t use Skype, then welcome to planet Earth. Skype is a brilliant way to connect to your team and friends. Skype allows you to do instant messaging, voice-calls (free for Skype-to-Skype) and video-calls (Skype-to-Skype). I’ve been using Skype for years now and i couldn’t live without it. Skype has some great options available for business usage, and i suggest you check them out. Here’s why i love Skype:
- Ubiquitous – a good majority of businesses use Skype which means that you can save a lot of money by calling Skype-to-Skype
- Simple, clear interface
- Extensible
- Cost-effectively structure your business telecommunications
Cost: Free! (with business options & Skype-to-phoneline credits available)
Website Hosting
When it comes to web-hosting, my personal choice is VPS.NET. VPS.NET is a wonderful service offering that allows you to create a Virtual Private Server in one of VPS.NET’s many datacentres in the UK & US, and do with it what you like! When you sign up with VPS.NET, you purchase a number of “nodes” to use; each “node” consists of 0.4 GHz processing power, 376Mb of RAM, 10Gb storage and 250Gb bandwidth. As you buy more and more nodes they become cheaper, and you can tack on extra IP addresses, server monitoring software and automated backups. You can use your VPS to host websites, act as an online storage location, whatever you like! Here’s why i love VPS.NET:
- Simple, sleek user interface
- Very competitive service offering and pricing
- Excellent and knowledgeable support staff available 24hrs/day
- Actively developed – new features added all the time
- Wide variety of operating systems to choose from to install on your VPS
- Wide variety of additional services and features
- Reliable
Cost: $20 / node / month (with decreasing price as you buy more nodes)
Summary
As i’ve demonstrated, the tools are readily available to manage your development business effectively while sitting on your rump. The service offerings out there completely enthrall me and i’m delighted to have such a range of efficient tools at my disposal for a minimal cost per month.
Have i missed anything? Got a better solution? Pop me a comment
WireframeSketcher Review
Apr 18th
I’ve been waiting for an Eclipse-based wireframing/mockup tool for a while now, and it’s finally here
and at $75, i think it’s a reasonable price to pay for such a useful plugin, although still a little highly priced.
WireframeSketcher is an Eclipse plugin which offers a similar feature-set to Balsamiq Mockups, although personally i prefer WireframeSketcher. Firstly, it plugs right in to my current workflow in Eclipse – that already wins it many points in my book! Aside from that, the plugin feels a lot more stable than Balsamiq and offers a few interesting features, such as:
- Wiki syntax formatting on all supported controls
- Screens vs Masters vs Storyboards
- A Screen is a view that you can build
- A Master is a reusable component that can be used in Screens
- A Storyboard is made up of a collection of Screens
- Well thought-out presentation mode allowing you to jump between screens
All in all, i like the way it’s structured; i like that you can create separate files for logically separate areas of your whole application mockup and bring them together in a storyboard. I’ve used it on a couple practical examples that i was planning to do, and it feels comfortable and usable.
If you’re developing your a Java application with SWT, there’s also a neat plugin to export your wireframes as SWT code
Maybe an MXML export feature is on the cards too! That would certainly be wonderful…
Balsamiq Mockups – An essential tool for developers and designers
Mar 3rd
At the risk of sounding like a shameless peddler of commercial software, I would seriously recommend Balsamiq Mockups. Now, let my intentions be clear… I made an agreement with Valerie from Balsamiq that I would write a review of this software on my blog in exchange for a testing license. Look, what can I say… I was born Jewish.
Now, just because I received a free license to review the software it does not mean that will not point out the egregious problems that I find with the software, nor will I ramble on about how fantastic it is. All I will say is this: If you deal with clients often that have not got any creative done for a prospective project and are looking for Interface Design advice, this is the tool for you!
Onto the review…
Overview
Balsamiq Mockups is an AIR application built to help you mock up application interface designs in the timeframe of a (non-metric) “jiffy”. Since i’ve started using the application, i’ve put together numerous mockups for clients and always received good feedback. What Balsamiq lacks in extensibility it makes up for in sheer speed of use.
The application is well thought out and concise. No instruction manual or cerebral documentation necessary! As far as AIR applications go, this is one of the more advanced ones I’ve seen, and it certainly is a pleasure to work with. I wouldn’t go so far as to say it justifies a $79 price-tag, but it is well worth the loot.
Tooling and Extensibility
As far as tools go, the Balsamiq developers certainly went out of their way. Included in the application are over 75 user-interface components from Buttons to Charts to iPhones, as well as loads of icons that will provide the finishing touches on any rough cut. The components are all customizable, scalable and z-axis-orderable, and the keyboard shortcuts help you get the job done quite quickly once you’re comfortable with the application.
The application fails abysmally when it comes to extensibility; I would imagine that with an application like this, the developers should facilitate the downloading of custom component/icon packs, or even user-submitted ones. This could as quite an interesting angle to the application i feel. Another thing I wish it included was some sort of color palette to slightly adjust the components. I’m assuming that it wouldn’t be too much trouble to include a little color-transform slider to add a bit more dimension to the components for added visual cues.
Good thing i downloaded the latest version (1.6.67 released on 24th Feb 2010) before i started ranting about the absence of the spacebar-invoked panning functionality… Good job guys! Works great
Search, Export and Memory Usage
The search functionality of Balsamiq is intuitive and responsive; scanning through different UI elements is a breeze and makes the whole experience that much more impressive. Balsamiq offers exporting your mockups to both PNG (why not JPG?) and PDF (go Thibault!) and it usually exports the mockups without problems. I’ve noticed that when my mockups become quite intense, the application does begin to lag a little though, but i’m confident that the developers are looking into that for future releases.
Conclusion
All in all, this is an indispensable tool for the discerning web developer & designer. If you need to give your clients an idea of what you’re going to produce and you have limited time, give this application a shot. Thanks to the Balsamiq team for the great addition to my development ammunition!
AMFPHP is back!
Feb 2nd
Today is a wonderful day!
I have teamed up with Ariel Sommeria-klein to revive the legendary AMFPHP project that spawned a whole new dimension of Rich Internet Applications. Together we have brought AMFPHP 1.9 out of beta and made it compatible with PHP 5.3. We have also completely rewritten the AMFPHP service browser and we have several improvements planned for AMFPHP 2.0.
If you would like to help contribute to this great open-source application, please contact us.
Using a Custom Cursor in Flex with CSS
Dec 16th
If you want to use a custom busyCursor animation in your Flex applications, you don’t need to do anything fancy… All you have to do is define one, solitary property in your CSS file:
CursorManager { /* You can use PNGs, SWFs or JPEGs */ busyCursor: Embed(source="path/to/your/resource"); }
To invoke the busy cursor, use the following line:
CursorManager.setBusyCursor();
…or you could set the showBusyCursor to true in your HTTPService or RemoteObject instances.
Converting GIF to SWF using Flash CS4
Dec 16th
A typical ballache… You want to use one of the cool loaders from http://ajaxload.info/ in your Flash/Flex apps, but it only generates a GIF file… So you’ll scour the net for a GIF2SWF application and you’ll undoubtedly come across a few, but you don’t have to look any further than Flash CS4 – surprisingly!
All you have to do is open a GIF file in Flash CS4 and it’ll automatically pull it apart and convert it to frames, which can then be converted to a SWF file
Hope it helps you at some point!
AMFPHP Genie v0.2
Dec 13th
AMFPHP Genie (0.2) is a simple tool to help you get shit done using Flex and AMFPHP.
Check out http://dannykopping.co.za/amfphp-genie/ for more information!
Adobe WeatherLab Beta
Oct 23rd
Over the past few months, Adobe has really been pulling out all the stops. They’ve been releasing some ridiculously useful and innovative tools and additions to existing software, but their latest offering has dropped my jaw even further!
Introducing Adobe WeatherLab Beta
This latest release from Adobe will surely change the way we see the world around us and how we interact with it. Adobe WeatherLab Beta is a the latest addition to Adobe’s impressive line of Adobe AIR-based tools, and it boasts some pretty innovative features!
Adobe WeatherLab Beta allows you to communicate directly with whichever skygod(s) you please via RPC (Remote Procedure Calls) in either XML, AMF or JSON. Adobe WeatherLab Beta boasts an expansive, extensible API for changing the weather in realtime and – most importantly – it integrates with all of the CS4 and upcoming CS5 products.
Finally, you can adjust your environment to suit your specific needs. If you’re more of a sunshine and beer kind of person, simply call the Weather singleton and change it to sunny by using the constant Weather.SUNNY (code samples to follow).
Insiders at Adobe have revealed that they have been working on improving the feature-sets of applications such as Illustrator, Flash Professional, Flash Builder & Flex SDK and Photoshop, but found that these applications were just getting to the stage where no more work could be done on them
“We wanted a new challenge. We had reached a point where we realised that our applications were near perfect, aside from a few bugs, and we needed something to throw at our engineers. Luckily, one of our engineers knew how to rain-dance and this set off a chain reaction of events, all leading up to Adobe WeatherLab Beta“.
Much work has still to be done on this application, but engineers over at Adobe have assured me that any bugs in the system will not cause any universal constants to go out of whack.
When I first heard of this innovative and – let’s face it – ingenious application, I was skeptical. My skepticism was soon lifted when I used the mapping API from Google to pinpoint a parade which I subsequently used Adobe WeatherLab Beta to rain on.
Here’s the code I used:
// Code snippet for changing the weather import com.adobe.weatherlab.Weather; import com.adobe.weatherlab.Geography; public function changeWeather():void { var weather:Weather = Weather.getInstance(); // get weather singleton weather.change(Weather.SUNNY, new Geography(37.433868, -121.884155)); // target weather change }
To download Adobe WeatherLab Beta, click here.
The Whirlwind that is Adobe in 2009
Oct 9th
Wow.
It’s been quite a fascinating year thus far; Adobe has really started getting serious about Flash, Flex and the developers involved. This year, we have seen two amazing additions to Adobe’s web-dominating arsenal – Adobe Flash Catalyst (now in beta 2) and Adobe Flash Builder 4 (now in beta 2). After some preliminary buggering around in both of these, I came to the conclusion that working with a beta version of any software to create enterprise applications is putting yourself on the edge of the cliff, and working on a version 1.0 beta is hiring somebody to push you over the edge.
This raises an interesting catch-22:
When a massive piece of software is released, the community has the onus to test it and give feedback on any bugs, requested features and expedience tips – however, if your beta software tends to be very buggy (and how could it not be? The SDK is huge) then how are you going to get developers to test your software on real, enterprise projects?
In any case, Adobe has really been playing the part this year. This year we have seen the release of the Flex 4 SDK, major advancements in the Open Screen Project, Flash Player 10′s penetration rate to 93.5%, AIR surpassing 100 million installations and the introduction of Flash Player 10.1 most recently. Other great things i’ve seen are WorkflowLab, BrowserLab, Project Squiggly, Slider previews, Flash CS5 sneak previews and Community Help.
For all of those unlucky and miserable enough to miss Adobe Max this year (myself included), there’s an entire channel dedicated to Max 2009 Developer talks… Go check them out!
Oh, and if you have any luck getting these videos to play in Adobe Media Player, let me know. That app is more full of bugs than a salad in Nigeria.
PHP Thumbnail Generator
Oct 6th
Here’s a very simple PHP class that i wrote to make thumbnail generation on JPG, PNG & GIF images really simple and painless.
NOTE: You will need to have GD installed on your server for this class to work!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | < ?php /** * Image thumbnail generator * Based on the work from http://sniptools.com/vault/generating-jpggifpng-thumbnails-in-php-using-imagegif-imagejpeg-imagepng */ class ThumbnailGenerator { public $sourceFile; public $destinationFile; public $width; public $height; public $format; public $scale; /** * ThumbnailGenerator::__construct() * * @param mixed $sourceFile Path to source file * @param mixed $destinationFile Path to destination file * @param mixed $width Thumbnail file width * @param mixed $height Thumbnail file height * @param string $format jpeg, png or gif * @param bool $scale Scale thumbnail * @return */ public function __construct($sourceFile, $destinationFile, $width, $height, $format="jpeg", $scale=true) { $this->sourceFile = $sourceFile; $this->destinationFile = $destinationFile; $this->width = $width; $this->height = $height; $this->format = $format; $this->scale = $scale; } /** * ThumbnailGenerator::generate() * * @return */ public function generate() { $fromFormat = "imagecreatefrom".$this->format; $sourceImage = $fromFormat($this->sourceFile); $sourceWidth = imagesx($sourceImage); $sourceHeight = imagesy($sourceImage); if($this->scale) { $ratio = $this->width / $sourceWidth; $this->width = $sourceWidth * $ratio; $this->height = $sourceHeight * $ratio; } $targetImage = imagecreate($this->width,$this->height); imagecopyresized($targetImage,$sourceImage,0,0,0,0,$this->width, $this->height,imagesx($sourceImage),imagesy($sourceImage)); $imageFunction = "image".$this->format; return $imageFunction($targetImage, $this->destinationFile, 100); } } ?> |
All credit goes to http://sniptools.com/vault/generating-jpggifpng-thumbnails-in-php-using-imagegif-imagejpeg-imagepng for the snippet!
Sample usage:
$tg = new ThumbnailGenerator("image.png", "thumbs/newimage.png", 100, 100, "png"); echo $tg->generate() ? "Thumbnail generated successfully" : "Failure!";
