Meet the team: Daniel Mackey, Founder/Developer

Continuing our Meet the Team campaign, this month it's Dan's turn to crawl out from his programming pit, blink wildly at the bright sun and say "Hello" to you all...

 

Many of you may have conversed with me over the last few years so I better introduce myself formally....

I'm 32 years young, married 7 months and live in the beautiful Irish countryside in Co. Cork. I love programming and Teamwork is one of the biggest parts of my life. 

Every waking moment is spent thinking about the product, the programming, our customers and future features.

When I was young, my father dragged home a Wang IBM PC (286) from work and there began my foray into computers. Nintendo's were not something we had as kids and while everyone was busy playing the latest video games, I had my head buried in Basic manuals trying to create my own games on the sly while avoiding homework.

The 286 progressed to a 386 and I progressed to Turbo Pascal. My games were rubbish but the sense of achievement was massive. It felt like I was changing the world, even though the only people I had to show were my sisters. That all changed when I met Peter in college. We decided we were going to build games. He was the first person I met that had the same enthusiasm as myself and to top it off was a damn good programmer. We used to have competitions such as who could make the best 2D tile based engine using C++ and DirectX (3!). Peter won ;-)

That was 12 years ago and we're still working together. The aim of the game has changed but we are just as passionate about Teamwork now as we were back then trying to create games!

Peter filled in the early days of our consulting company Digital Crew (See Peter's meet the team entry) so I won't delve too much in to that but I will say that it has been the best learning curve ever. Every single feature or decision in Teamwork is based on the 12 years of experience we have built up working on large scale be-spoke applications. While alot has changed since we started web development, the principles are solid.

My role in Teamwork is also lead developer. Peter and myself work closely with each other building new features. Sometimes we take a whole section each, sometimes one starts a feature and the other improves it. The Calendar is a good example of pair-programming. I started the feature, spending weeks of sleepless nights as Timezone issues and event spanning issues plagued me. It took a few hours of Peter's fresh eyes to fix the problem areas.

Some of the areas of Teamwork I am responsible for include:

  • Desktop Timer App (Flex)
  • Diff-ing of Notebook versions (Java)
  • Reply by email (Brain juice)
  • Email Dropboxes (C# connector)
  • Resource's section
  • Markdown support (Java)

I use multiple different programming languages. It's a case of the best tool for the job. In Teamwork, there is ColdFusion, Java, C#, Javascript and for the desktop apps Flex. I enjoy a programming challenge and once you have a good grasp of programming fundamentals, you can pick up any language and produce some good work.

Some of the things I'm working on right now which I shouldn't tell you about:

  • Dropbox integration - I really enjoyed the challenge in this and officially know the Dropbox API inside out
  • Android App - It's early days but I'm making progress - Please don't ask ;-)
My work day starts at about 7.15am when I wake up and check various stats. Number of signups, number of cancellations, mentions on Twitter, what feedback has come in. 8am I'm usually perched at my usual table outside Costa Coffee (I like my coffee - no girly green tea for me ;-) ) with my iPad. I run through my emails, arrange my tasks for the day and start into the feedback that came in during the night. 9am I'm at my desk ready to start real work on code until about 6pm when the feedback starts coming in thick and fast. I try to leave the office at about 7pm and chip away at emails for the remainder of the night.

I can't work without music playing. I'll listen to anything but mainly Metallica, The Prodigy, Faithless, Moby and Chillout/Trance.

In my spare time I enjoy reading. I especially enjoy books on tech companies, some of my favourites include:

  • Master of Doom (The id software story)
  • The Perfect Store (The ebay story)
  • The Paypal Wars (The paypal story)

I'm also a movie fanatic and a bit of a Mac fan boy ;-)

Most of my spare time goes towards "challenge programming" where I pick some area of interest and muck about with it. Most of our fun recreational hacking turns into real features in Teamwork! The great thing about my job is that it's also my hobby! I actually get great satisfaction out of programming for pleasure. 

I also like to answer feedback. While Sam is the main face to our customers, I read every single feedback item that comes in. I think it's extremely important for the developers of an app to engage with customers and see the pain points people have with a product. Also, if it's a support issue a developer is in a much better position to advise on a solution to a problem. (Invariably we create the problems ;-))

With the rise in smartphones, and email always available, there is no excuse for a feedback email to be left un-answered. We all have iPhones and iPads. I always like to think of it as if I am the person requiring answers, what would I expect from support. While working on our Dropbox integration I was on the receiving end of super-fast answers to my questions and I liked it. It gives you a good feeling about the product, company or service you are interacting with.

One thing I always like (kinda voyeurism) when reading about a developer is finding out what tools they use, so here's mine:

Office Computer(s):

  • 3 x 19 inch screens
  • Dell with duel-processor and 3GB RAM
  • Large screen iMac for testing our wares on Mac

Software

  • Homesite as an editor
  • Navicat for MySQL
  • Flex Builder 4.5.1 for AIR apps and Visual Studio for C# work
  • Teamwork Project Manager (In a custom tabbed shell I made)
  • Hipchat (for inter-office communication)
  • Dropbox and SVN for sharing code between machines
  • IE8 & Chrome mainly

At home I have an Alienware Beast with 16gb RAM, SSD drive and 1 gig GFX card. I like to game! Currently playing Call of Duty: Black Ops and waiting for Modern Warfare 3 and Battlefield 3.

That's all for now! If you have any questions on anything above, can relate to me in any way or just want to throw a curve ball question, don't be shy! Ask me in the comments and I'll reply ASAP.

We added some cool things this week based on feedback

It's my favourite time of the week again - update time!

Based on lots of feedback and suggestions (some old, some new) we have knocked a few items on the head and rolled them out live.

What's new?
  • Calendar: If the event end date is past the current time of day we now slightly grey the event title and time so you can focus on what's next
  • Calendar: A very popular request was the ability to see tasks per day on the calendar without having to click off to another page. We have now added this ability by hovering your mouse over the task count for the day.
  • Tasks: If you hover over the time icon on a task we now pop-up a little tool tip showing you how much time has been logged so far

  • All Time: Custom report now has the option to pick an arbitrary number of projects to run the report against all grouped nicely by Company
  • Project Name: Some people have the same project name for multiple projects but for different company's. We now list the company name next to the project name where the project name may be ambiguous
  • Time: You can now associate time entries with a task in the Time tab. Previously, you had to log the time from the Task options menu. We added this for new time entries and when you edit a time entry.
  • Resources: We added a sort option (Sort by either date added or name)

  • Project Report: If Start and End dates are set on a project we also include them in the project report

What's fixed?
  • Backup download link in Internet Explorer wasn't working
  • Milestones were missing in some backups for some users
  • We added a handy new rule for Teamwork sites that used to be SSL but are now Custom Domains. Users no longer get presented with an SSL error.
  • Basecamp Import: There was some funkiness happening with some imports which has now been resolved
  • We improved the display of the Project Report late items when they are late due to a Milestone being late
  • We now remember the person picked in the Time filter to make it easier when filtering to edit time entries.
  • We darkened the "Un-Pinned" task list icon so it is more visible on the majority of screens
  • Recurring Events in the calendar got a lot of love and work 100% now. We had a slight calculation error that caused many of our customers to get grey hair...
Thanks to everyone who sent us Feedback and Suggestions! We have some more on the way that didn't make it into this release!

Brainwave time : comments welcome while this is in concept phase

I am in the middle of a project right now that has quite a few external users sending documents and instructions to me. The problem is that they are posting everything as messages and not assigning tasks to anyone.

This makes things extremely hard to process and delegate. This made me think back to a few Feature Requests from people that requested we add a feature to create a task from a message. At the time I thought they were crazy! Why would you want to do that? Now I understand....

It's early days and the idea is only slowly forming in my mind so I'd appreciate your comments on the best way to implement this.

These are my current thoughts:
  • You go into the messages section and view the message that was written
  • A button is somewhere on the interface Create Task from this Message (Obviously shorter....)
  • Clicking this button now needs to do the following:
    • Create the task - We could use the Subject of the message as the task name
    • Description : I don't like the idea of putting the body of the message as the task description as some messages are verbal diarrhea
    • Comments : This may be better. Add comments to the task from the message (A message could have some replies)
    • Files : Any files will be linked to the task
    • Assigned to : Pick from a list (or multiple people)
    • Due Date : Pick a date (or not)
    • Task List : Pick from a list of existing task lists
So, the above seems fine and do-able. The next bit is tricky, what do we do with the existing message? In an ideal world, we would have the ability to archive the message.

Most of the time the problem is that the person added a message when in fact they meant a task so it may be Ok to delete the message once the task is created. OR We link the task to the message.....not sure yet which is the best way. Linking a task to a message would be more work for us and complicate things a bit....(remember, we have to now think of the API so extra functionality needs to be approached carefully)

Do you think this feature would be useful? Would you use it? Let us know in the comments.....

Dan.

New database server plugged in

This morning we performed another update to improve the framework and architecture of the Teamwork platform.

We have plugged in another high performance database server to the cluster. All done in less than 10 minutes thanks to Peter's planning.

Here's Peter performing the final steps....yes, that's a breakfast roll on the desk. The staple of Irish diets....

Assign tasks to multiple people now live

Just a quick post announcing that we have rolled out the Assign Tasks to Multiple People feature we have been working on for so long.

Sam, Peter, Ryan and myself scheduled an early Saturday start and after a few hours of last minute testing and polishing pushed the code live.

After the API, this was one of our biggest and most frequent requests and we are very proud of our final implementation. This was not easy to implement.

Peter (AKA Topper) will be describing the process, design decisions, challenges we faced etc in a follow up post in the next few days.

As always, we love hearing what you think so leave a comment or post a Tweet!

Dan.