Author Archives : Ryan_Seifert
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.
|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.
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.
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).
10 Software Development Myths 3
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.|
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.
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!