Yearly Archives: 2014


5 Methods to Motivate Technical Employees

Motivating employees is an important part of creating and keeping a fun and efficient workplace culture. Many people confuse company perks as individual motivation; while it can factor in they are not a replacement. Many technology companies are widely known for their interesting perks, such as free meals, pool and foosball tables, and even dry-cleaning services. These perks certainly add to the workplace culture and environment; but they will not necessarily motivate an individual to perform to the peak of their abilities.
Motivating individuals is much more of an art than a science, especially with technically inclined people. Here are some tips and techniques to help ensure your teammates are focused on goals rather than the five o’clock alarm.

1. The ‘Why’

Perhaps the most important motivator is ensuring your team is connected to ‘The Why’. Why the company is tackling this problem and specifically how their efforts contribute to this. Technical work is blanketed in minutia; constant focus on this can give some people tunnel vision. Helping ensure they can see the overall picture and how they fit into the picture can go a long way to ensuring that person is motivated and fulfilled. Each person on the company team should be familiar with how their efforts contribute and interact with the company as a whole.

2. Public Recognition

An excellent method to motivate someone is to publicly recognize their efforts and success in the past. This ensures that their peers know of the effort and gives the individual the knowledge that their efforts did not go unnoticed. Public recognition is very important if you pushed someone to take action; missing the acknowledgement of the action can lead to the teammate avoiding or not performing later. A wonderful side effect of recognizing the individual publically is that the rest of the team will know their actions will be recognized and acknowledged as well. This can actually motivate the entire team to greater levels based on just one team member’s actions!

(more…)


Lessons from Batman: Virtual Teams 1

Batman can teach us many things: persistence, preparedness, and a mean jump kick. It came as a bit of a surprise when I realized he also exhibited some necessary elements of participating in a virtual (remote) team! Batman may fight crime alone but he definitely does not work completely singlehanded.

I have been working with a virtual (remote) team at Epiphany for more than 7 years; managing for more than 4. Over that time I have fluctuated between believing that a virtual environment was an unconquerable obstacle to the greatest idea since batarangs. I have settled into the belief that, like most systems, there are strong points and weak areas that need to be considered.

1. Reachable

Batman does not have a public phone number; but there is a well-known failsafe way to reach him – The Bat Signal. While the system sprung up organically, Batman always responds to the Bat-Signal; ensuring that he can be reached anytime (or at least on cloudy nights).
Working remotely can be a very isolating endeavor, for many people it is ‘Out of sight, out of mind’. Remember you aren’t locked in ‘Arkham Asylum’! You should feel comfortable reaching out to colleges, and also be available and reachable yourself. Regardless if the topic is work related or simply personal, the team should know you are around and can be signaled into action. You may not be able to respond immediately; but strive to respond when you can.

2. Consistent Schedule

Same Bat-Time, Same Bat-Channel. Batman knows that some consistent meetings can drastically help to ensure teams grow; this counts double for virtual teams. You can bet Batman doesn’t skip his workout, along a similar vein you should not skip team meetings.
I have found that a daily team meeting is critical to ensure a cohesive team in a virtual environment. This ensures there is a set time for the team to get together and discuss issues and current project statuses. It also helps ensure that there is some outside contact for each person, it is all too easy to realize that an entire workday was spent working alone. While those workdays can be productive, if there are an increasing number it can wear down even the most resilient of people.

(more…)


Nooks and Crannies – Programming Language Curiosities – C# 3

Nooks and Crannies explores some interesting techniques and methods that are specific to a given language. While these techniques may not be useful in everyday development they could come in handy in niche application and scenarios. Word of warning though; the fact that these techniques could be considered obscure should warrant a second thought before they are included in production code.

Unions

A popular technique I used often when developing system communication modules in C; this allows us to reference the same section of memory as different formats. Commonly this is used to handle transitions between little-endian and big-endian systems or manipulate byte level data (for say IP address modeling).
(more…)


10 Software Development Myths 3

Myth Pic

Software is created in a realm of intangibility. This necessary but foreign situation has given rise to common myths; some go against intuition and some stem from older technology or a misunderstanding. Let’s debunk the top 10 software myths!

1. Adding developers to a late project will get the project back on schedule.

This is a very common and intuitive response to a schedule slip in a project. Surprisingly after additional manpower is added the project actually slips later. Brooks’ Law is often cited to refute the common myth; stating ‘adding manpower to a late software project makes it later’ (Fred Brooks – The Mythical Man-Month). While an oversimplification, it is a good rule of thumb. The counter-intuitive result of a later project is due to the increase in necessary communication between the team; which increases exponentially as additional people are added to a team.

(more…)


Hyperlapse – First person videos finally become watchable! 3

We present a method for converting first-person videos, for example, captured with a helmet camera during activities such as rock climbing or bicycling, into hyperlapse videos: time-lapse videos with a smoothly moving camera.

At high speed-up rates, simple frame sub-sampling coupled with existing video stabilization methods does not work, because the erratic camera shake present in first-person videos is amplified by the speed-up.

Source: research.microsoft.com

Ryan Seifert‘s insight:

We have all seen the helmet videos from skydivers (if you haven’t, Jeb Corliss has one of the best) more recently are the emergence of helmet cams for bicyclist, surfers, and even pets! I have even spotted helmet cameras on my jogs around my relatively mundane neighborhood. Normally these videos are watched at an increased speed (who wants to watch a 45 minute ride for the 30 seconds of action) but the speed change is painful to view. Hyperlapse is a newly created method to stabilize and smooth out these videos.

Johannes Koph, Michael Cohen, and Richard Szeliski developed the new method to generate the smoother video. The process (See Technical Video below) is substantially more complicated than the familiar stabilizer functionality commonly used. The new system consists of three stages, Scene Reconstruction, Path Planning, and Image-based Rendering. Scene reconstruction allows the system to build a 3D model of view, leveraging multiple frames from the video to do so. This provides the system the ability to actually change the viewpoint in the resulting rendering, moving from an abrupt viewpoint change to a smoother option. This is one of the key properties that allow the system to generate the silky smooth resulting videos. Path Planning is split into two stages, the first optimizes for smooth transitions, length, and approximation (the path should be near the input frames). The second stage optimizes for rendering quality. The resulting path can be slightly different than the path actually taken by the camera person (or pet!); but will still be approximately the same. The final step of the process is actually rendering the video. Because each new shot can be slightly different than the original video, the system merges multiple frames together; selecting the areas in each frame for the best quality of the resulting video.

The result is quite amazing; but there are still some artifacts you can notice when watching the videos. Watching or stepping through the video frame by frame you will notice that objects can suddenly appear or boundary areas where the images are merged are easily identifiable. These sections are hard to notice when viewing full speed though.

The new technique is very resource intensive. The research paper mentions that it took roughly 305 hours to process a 10 minute video! Most of the computational time is consumed during the source selection with computes at roughly one minute per frame. I suspect that cloud computing (such as Amazon Web Services and Azure) will be strongly utilized to allow even a mobile phone app to be used in the video editing process. It will be interesting to see how this video editing will be used!