hedgehog lab

Craig Tweedy

Hooking up to fixx with Git and post-commit hooks in python

by Craig Tweedy

Here at hedgehog lab, we love to tinker with our API's, mashing them with other services and technologies, however, as hard working chums always committed to the job, we rarely have the time to do such things.

This is why we love it when our customers play about with our API's and create some great services. Recently, Radosław Szalski created an awesome Git post-commit hook in python, using our API. The project is published up to Gist for anyone to use as they see fit.

Radosław had this to say:

" Ever since I started using GIT and Fixx was searching for a way to even further streamline my workflow. Unfortunately most of the hooks I've found were only posting comments to issues. Why stop there, when Fixx's API has so much more to offer ?

I love robustness and automation, so I created something that suited my needs. I chose Python, because I wanted to learn it for a long time. The API itself, thanks to RESTful architecture, is extremely easy to use.

As for the future, I am considering adding support for timelogs. That's the only feature I am thinking of - I don't want to make it too complicated. As I am actively learning the language, I will probably upgrade it with some of the Pythonic goodness."

Head on over to Gist to checkout the project!

Have you had any experience with our API's? Let us know! We'd love to hear about what you've done with them!

Mark Forster

solomon 1.1 - a sneak peek

by Mark Forster

Its been about a month now since we released version 1.0 of solomon our small business CRM & contact management software and we've been working harder than ever to get some of the features in that you asked for and we promised.

From 1.1 onwards we are giving you the ability to track your deals. With deals, you and your team can effortlessly track those lucrative deals you've been pitching for. As always we've focused on productivity keeping the user interface tightly focused on your contacts, how you work with them and the information you track against them.

With deals comes better integration with your notes and tasks. Tasks can be created, associated and tracked right there within your deals. Notes too.. ..In fact you can now associate any number of contacts, companies and users with a deal and coordinate your efforts to securing that big contract.

We've also added webCal support Thats right! Now all of your tasks seamlessly integrate with your calendar via the webCal format.

Import your tasks to your calendar

Finally we've had our resident design guru making some awesome design tweaks here and there to generally make the user interface look and feel that little bit slicker and for you techies, we've had our technical boffins, improving on the underlying REST API meaning you have more control over how you get to and work with your solomon data.

We've still got a few more features that we're aching to get in before we make the 1.1 release official but rest assured we'll be working even harder for another week or so to get this update out to you. In the meantime why not tell us what you think about what we're working on or tell us what you'd like to see in up and coming versions of solomon?

Jonathan Williamson

iPhone Coding Tips Part 1 : Memory Management

by Jonathan Williamson

Tracking down the source of bugs while writing code for any type of computer system can sometimes be one of the most interesting and challenging parts of developing software. It's almost like getting a really awesome puzzle book, but rather than having the answers listed somewhere towards the back, their spread across forum posts or SDK documentation, and in some of the more challenging cases just require you to wade off into the unknown, narrowing down the problem until you finally discover the one line that causing the entire thing to come crashing down.

After spending weeks or even months seeing bugs crop up and cause problems that seem to bare no resemblance to one another, you begin so see patterns forming, and rather than just seeing strange console messages and stack traces, you see the same errors cropping up again and again.

Over the next few weeks, I'm going to talk about some of the more frequently occurring bugs that I find in my code, useful tips I've discovered, and hopefully give any developers new to the iPhone scene, a slight head start.

Throughout the time I've been working with the iPhone SDK I've encountered many problems, some of which are one offs that you'd probably only ever need a fixx for once every blue moon, where as others occur more frequently (almost daily). The most major source of problems tends to stem from the way in which objective-c implements memory management. For those of you unfamiliar with how this works here is a quick rundown...

The most basic way to allocate memory for, and release objects is to use the alloc and release methods that will be inherited from the NSObject base class. Basically when we wish to allocate memory for an object we...

//Allocate memory for, and initialize the object
MyClass *aClass = [[MyClass alloc] init];

// When we are finished with the object we release it.
[aClass release];

the release method simply reduces the object reference count by 1. If this reference count reaches 0 then the objects dealloc method will be called, purging the object from memory.

Provided we always have matching pairs of alloc and release no memory should be leaked.

The second way of handling memory is to use Autorelease objects. Autorelease objects and convenience constructors are hugely useful when you only need to use a variable temporarily, or need to return an object from a method and need your code to take responsibility for the memory management. The only problem is there are loads of occasions where the pool memory containing my objects is released, and I find myself getting nil pointer exceptions, where my code is trying to message objects that don't exist any more. My remedy for this is to only use convenience constructors in confined blocks of code, where the object isn't likely to go out of scope and be released.

Now enter threading! If you use autorelease or convenience constructors in methods being run on other threads, make sure you initialise an NSAutoreleasePool at the beginning of your code block and release it at the end of your code block. This is because the default pool runs on the main thread only. If you don't do this you'll end up with memory leaking all over the place! Just keep an eye on the console as autorelease objects that have no pool will log messages warning you...

- (void)randomFunction
{
[self performSelectorInBackground:@selector(someMethod)];
}
- (void)someMethod
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// ...
// Do some stuff here involving autoreleased objects.
// e.g.
// NSString *aString = [NSString string];
// NSData *someData = [NSData data];
// NSArray *myArray = [[[NSArray alloc] init] autorelease];
// ...
[pool release];
}

But remember that after releasing the pool you can't return any objects/values that were set to autorelease, although in most cases you won't be able to return objects anyway.

The majority of places I use this are in background syncing methods, or other blocks of code where literally tens, hundreds or even thousands of autorelease objects are created, and obviously if not dealt with properly, just float around taking up valuable resources.

Well thanks for reading guys, I hope this micro-rant has been of help. My next post will be all about singleton objects in Objective-c, and the best way to implement these.

Sarat Pediredla

Announcing fixx Hosted

by Sarat Pediredla

We're excited to announce public availability of the Hosted version of our bug tracking product, fixx. This has been the single biggest request we have consistently received over the past year, so we have heard you and acted on it!

Hosted fixx is a great and flexible way to get started with your own instance of fixx without having to set-up your own server and configure it. Despite how painless and easy it is to run your own instance of fixx, we know that many organisations love the ease of having someone else manage their software using a software as a service (SaaS) model. It is also a great way for organisations without IT staff to get started with fixx.

Unlike traditional on-demand/SaaS models, we have gone all out to give you the power of having your own dedicated hosted version of fixx that you have absolute control over. This means, you control when your software is upgraded and which features you want to turn on. We handle all the boring work like configuration, back-ups and upgrades.

fixx Hosted comes with absolutely no restrictions on functionality. You get every feature of the installable version, including unlimited users, projects and issues. Which other hosted bug tracker or project management tool offers that? The only thing that is limited is disk size for attachments but even that is generous with 20GB+ space, which is limitless for most common usage.

This is only the beginning for Hosted services from hedgehog lab. We hear you loud and clear on a hosted solomon and we are working hard on it. For now, we want to start slow and get feedback from our community on how we can improve our hosted offerings. Keep an eye out on our blog as we make constant improvements while delivering advanced functionality in our product roadmap.

Sarat Pediredla

Announcing solomon - Small Business CRM & web-based contact manager

by Sarat Pediredla

We've been working hard at the lab on this for the past four months, so I'm extremely proud and excited to announce the launch of our latest product, solomon. solomon is a Small Business CRM and web-based contact management app designed with small businesses and freelancers in mind.

We were hoping to launch solomon in late 2009 and I know a lot of people have been waiting impatiently. We had to hold its release back for a few months to ensure the user experience was just right.

So what's in this version of solomon?

We've really focused our efforts on making solomon ultra-fast and productive. By taking full advantage of today's browser technologies, we've made sure that solomon keeps you productive by focusing on performance, ease of use and collaboration.

Our focus in version 1.0 was productivity and response time in these four main areas:

Search

We've made search super fast, so you can find your contacts quickly and effortlessly. As well as allowing you to search for your contacts by name, solomon will also allow you to search with more complex search patterns much like a lot of today's web based search engines.

Contact Management

Our main focus in this initial release has been about allowing you to manage your contacts in solomon with as little effort as possible. solomon allows you to import your contacts from industry standard Outlook CSV files and exports to both vCard and Outlook CSV. The goal here was to provide a unified address book that you can use from anywhere.

Tasks and Notes

When working with a contact in solomon, you can immediately get an overview of all of the information for that contact as well as the tasks and notes associated with them. Adding notes and tasks is a snap using a single screen interface that behaves more like a desktop application than a web app.

Mobility

We love our smart phones, and one of our goals from the outset was to make solomon truly mobile. Building on top of the solomon API, we've built an iPhone application which will allow you to take your contacts with you anywhere. The iPhone app is currently in review by Apple and should be on the App Store within days. Our native iPhone application allows you to take advantage of many of the features of the phone like calling your contact directly, sending them an email or finding their location on Google Maps. With the iPhone app, you can also keep track of the tasks you have and add notes while your'e on the move.

Where is solomon going?

We've been using solomon internally for about 2 months now and we are really happy with the experience but thats not to say we haven't got bigger plans. Far from it! Our roadmap is bursting at the seams with features we think are really going to improve solomon and we really think your'e going to like them too.

We aren't going to commit to any one feature or specific milestones at the moment until we've given our customers a chance to have their say about what they would like to see in the next version of solomon but to give you a taste of what's to come, here's a few of the features we're really excited about getting out in a coming iterations of solomon:

  • Track Cases, Leads and Deals We will be introducing more Sales Force Automation (SFA) functionality in 1.1 and 1.2, which will enable you to track leads and deals you make, keep on top of relationships using cases, and track new business.
  • Mobile apps We are working on concepts for native apps for BlackBerry and Android versions of our mobile app. We are absolutely committed to supporting multiple mobile platforms and these apps are high on our list.
  • Outlook Plug-in We know that a vast majority of small businesses use Outlook as their preferred e-mail client and we have a very exciting Outlook plug-in planned that will allow you to tie your e-mail and solomon data together.
  • E-mail Integration We will be working on advanced e-mail integration, allowing you to write and forward e-mails directly into solomon.
  • 3rd Party Integration A wider integration of your contact data with other web and desktop applications like Google Contacts and real time 2-way sync capabilities. Whether you want to view contact information in Gmail or access your tasks in Google Calendar, our planned OpenSocial integration will support this. We will also be supporting import and export from 3rd party systems and popular file formats.

If you want more information about solomon you can visit the product page or grab yourself a free copy.

Sarat Pediredla

iPad as a business device

by Sarat Pediredla

Since the iPad was announced to much fanfare last month, the Internet is abuzz with some people decrying it as a "larger iPhone" (what's wrong with that?) and others announcing it as the next shift in computing.

Personally, I stand between both viewpoints. I agree that it is indeed a larger iPhone, but I also see the potential a large touch-screen device provides. A majority of the current discussion around the pros of the iPad are based around how this is a consumer computing device for "your mum and your grandparents" but fails to see the larger picture around what this might mean for business and work in general.

There has been very little debate surrounding the potential of the iPad as a business device. I admit it might not work in an organisation like ours (although we still have ideas that would work perfectly on an iPad) but there are many organisations where geeks, technology, and code are a means to an end and just support tools for the core business.

The problem with imagining the iPad as a business computer arises from the instant reaction most people will have. The inevitable, "it's not a real computer" argument will be thrown about. "It can't multi-task!" "It doesn't have a real keyboard." Yet, there are so many real-world scenarios I face in daily life where an iPad would have greatly diminished the pain and improved the job a person does.

Mobile Workers

We recently had a Central Heating Sales engineer come out to give us a quote to install new boiler. I felt fairly sorry for him due to the amount of baggage he had to move around with him to do a fairly simple task of filling in a few forms (in response to a set of questions) and generate a quote document.

The process involved what must be the heaviest laptop, and stone-age wireless connectivity that took a set of rituals and prayers to set-up. He had to spend a major part of the call joking about "IT" and apologising profusely for "problems with the Internet."

I could not help wondering how the iPad could have made this entire process (which he probably repeats many times a day) much easier and more interactive for the customer and the sales person. You could get rid of all the brochures in the briefcase and convert these into electronic brochures for display on an iPad. Typing would not be much of an issue as most of the form fields were designed to be choices and number entry. Even if data entry involved a fair amount of textual data, an external keyboard would have instantly solved this problem.

The only flaw in the process as far as the iPad goes, was the ability of the existing laptop to connect to a small printer via USB to print a quote. This could be a stumbling block unless Apple allows easy Bluetooth printing or someone comes up with a printer interface to the iPad.

Data Entry in the field

A while ago, I worked on an R & D product prototype for a FTSE client in the property business, who was looking to cut their costs in relation to the time-consuming process of data-entry by skilled staff. They had highly-paid property managers who would go out to inspect properties in their portfolio, whose job it was to ensure the properties were maintained and managed to standards. However, it was clear that it was very inefficient for these property managers to go out with paper forms, fill them out in the field, and return to their desks only to type out these forms into a computer.

The solution (at the time) was to use existing smartphone technology to build mobile apps that would facilitate data entry in the field. This would allow a "single" point of data entry and cut the time spent duplicating this information on paper and on the computer.

The only real problem was that mobile phones (the iPhone specifically) were too small to really enable the interactions that we had in mind for really quick data-entry. Although the iPhone was leagues ahead of other mobile technologies, it just didn't allows us screen real-estate to build the kind of user experience we wanted. I remember thinking "I wish Apple made a bigger iPhone!" Yet, ironically, it seems like this is what makes the iPad underwhelming.

The Sky's the Limit

The interesting thing about what iPad means for computing in general and for business in specific has very little to do with the hardware and all to do with the potential of software that could be built to allow multi-touch interactions on a well developed platform like the iPhone OS. In this sense, the hardware is not really important at all. Lack of USB, camera, screen size etc. are all trivial points that might or might not have implications in very specific circumstances.

The real question to be asked is, "What kind of software is going to be built for this thing?" Then, you can start seeing the potential an iPad brings for not just e-mail and the web for mum, but how it could greatly simplify the lives of people who are forced to use computers for their daily job but don't enjoy it at all. I believe the iPad has immense potential in areas like business intelligence, publishing, medicine, education, retail, and other sectors I can't even begin to imagine. I don't know about you, but that's pretty exciting!

Sarat Pediredla

Add-Ons galore and API goodness

by Sarat Pediredla

One of our original aims of opening up a RESTful API for our bug tracking product fixx, was to encourage a healthy eco-system of third-party developers who can enhance and add to the functionality fixx brings and provide open integration points to third-party apps.

It has been great to see the overwhelming response from third-party developers who have spent their time and effort to enhance the fixx eco-system and we thought it would be the perfect time to thank everyone who has been working with the fixx API, providing feedback/criticism (which we always listen to and take on board), and generally writing some awesome add-ons. The following are just a few of them that we hope will be useful for those currently using fixx or considering using fixx in the future.

IDE Integration for Visual Studio and Eclipse

One of our customers, Martijn Laarman, has done a stellar job delivering a first version of Visual Studio Add-On for fixx. The project is pre-beta and is looking for people to try out the system and help him iron out bugs. There is also a project underway to bring IDE goodness to fixx in Eclipse.

Instant screenshots with Freshlog

Freshlog is a pretty nifty screen capture tool for the Mac that I personally use. It integrates with fixx and many other bug tracking tools, allowing you to capture and submit screenshots as new issues or comments to existing issues. It comes at an affordable price of $14.95 which is a bargain considering the plethora of tools and speed of updates it provides.

Source Control and more with XP-Dev.com

XP-Dev.com offers Enterprise Subversion hosting and has leveraged Subversion post-commit hooks to update fixx issues with commit messages. Even if you host your own Subversion repo, you can use a Ruby post-commit hook that allows you to do the same. Mercurial and Git hooks are also available.

These are just a few of the Add-Ons and integrations that third party developers and some of our customers have been working on. You can always find a more comprehensive list on our Add-Ons for fixx page and we would love to hear from you if you have been working on an add-on and would like it to be featured.

Jonathan Williamson

Introducing myself and what enterprise software can learn from games

by Jonathan Williamson

Hi, my name is Jonny and I'm the most recent person to join the team at the lab. My background is in games software, but I decided to delve into enterprise software development as I felt the area could learn a thing or two from the world of games from an aesthetic and performance standpoint. When writing games software it is not just important to focus on functional requirements but also the overall experience.

Imagine hitting the fire button on a shooting game, and suddenly a message appears with a big exclamation mark saying, "Error 127888876AB2 - Please contact your system admin", this certainly wouldn't be acceptable to a gamer paying £40+ for a game, so why should it be acceptable in enterprise software where the cost is often much higher?

Many would say that the bugs in the latest release of any enterprise product can just be patched with version 2.0.3.7.1.2.735 and everything will be fine, but you never had to buy a game for your PS2, and subsequently had to patch it with a mass torrent of updates and bug-fixes. This is because the developers knew that if they didn't get it right the first time, then they were screwed, and in a sense the constraint of being unable to patch the software forced the developers to ensure the code was stable, and quality design practices were followed wherever possible.

Getting this level of quality design and bug-free code written for enterprise software isn't as difficult or time consuming as some may imagine if you have developers with the right mind-set. The important thing to realise is that, just because we can release a mass of bug fix patches doesn't mean that this should be used as an excuse to release poor quality software.

Since starting here a few months ago I've been focussing my efforts on mobile software development as the mobile space is fast becoming a very exciting place to be, as it matures into a place for serious developers and equally serious software. My first port of call was iPhone development as it is a nice, clean and aesthetically pleasing platform to develop for, that is currently in vogue within the mobile marketplace. So what better way to improve the user experience our products provide, and bring their powerful functionality to the place a large number of customers will find it most useful.

For our soon to be released product solomon, I have been working hard to produce an iPhone app that makes use of all the features the main CRM provides, but with simplistic design and a good user experience in mind. This will make the app very easy for iPhone users to get to grips with, and will provide a simple yet powerful way to keep in touch with and manage your business contacts whenever-wherever. Here is a sneaky peak into the app, and some of the features it will provide.

Over the coming months I will be developing fixx and solomon apps for iPhone, Blackberry and Android. Developing for this range will provide the majority of our customers with the ability to take full advantage of our products at the times when they are unable to get to a computer. Keep checking back for updates on how development is going, and previews of what is happening with our mobile products.