Time Lapse Videos of Me Working

Scott's ideas

  • Pantomime some ongoing story to really tie the room together. Or something else to punctuate the video from time to time. Like random bouts of dancing.
  • Add progress bars for... everything. When feeding. Or sleeping. Eat food: fullness +1, +1, +1, or sleep and have energy +1, +1, +1 all around your head. Maybe some random other faux metrics like bladder and hygiene, or anything else from the Sims. Meditate in front of the camera and have +1, +1, +1 focus. Smooch Chloe +10 energy. Have distractions cause damage (watching Star Wars Holiday Special?). One large progress bar for 100hr % completeness. When George or I join in have a teamwork bonus.
  • Other game thingies, along the lines of guitar hero 'star power', when you have a particularly productive time.
  • Power up noises whenever you make a commit
  • If you do that music planning in advance, try to pick a bit in the middle to sync up really big action. Like if you do dubstep, jump off the bed or do an over the top high five with someone when the 'drop' happens. In post-production you'd probably have that bit slow down into real time for a little bit of 300-esque action.
  • I would suggest not shaving but I'm not sure that'll make a big enough difference. Maybe use makeup to make a pronounced shadow? Or buy fake beards/wigs of varying lengths and put on a new one every day.
  • Instead of a progress bar baked in post-production, have a ducky waddle its way from one end of the camera view to the other on the bottom edge. Or some other thingy.
  • Anything to show how much is being consumed or produced from beginning to end. Like an ever growing stack of empty trident gum packs. For the TF2 video "Meet the Sniper", the timelapse segment was punctuated with ever filling jars of pee. The Nick Cage Agent video also had some good examples of time-passing-changes.
22:01
Nick
so the parts where I take breaks wouldn't happen
22:04
Scott
And that would make timing music syncs that much more difficult
22:05
Nick
the music syncs might be too difficult to pull off
22:05
Nick
if I were going to imagine doing any post-production to change time speeds
22:05
Nick
that might be more interesting than the music syncs
22:07
Nick
hmm, I wonder what I'll be working on for CodeCombat during September 16-22
22:08
Nick
I'd better do a test recording for like a day to see what looks interesting and what doesn't
22:08
Scott
Good idea

David's ideas

Thoughts on the original video:

  • It was cool to watch you work. There should be more videos like this.
  • The long stretches of black (I assume from when you were asleep) were confusing at first.
  • I couldn't tell how quickly real time was passing.
  • Resolution was too low and your screen was cropped, so I couldn't pause the video and actually look at your code, which I wanted to do often.
  • The video was *long*, it was hard to watch the whole thing. How do you want people to view this new video? Do you want them to watch the whole thing, or jump between parts of it?
  • Maybe it would be less boring if you added notes of some kind, like a popup that says "bug discovered" and we can see your reaction, and later "bug fixed"
  • The music did seem random, if it synchronized better that would be cool.
  • Oh, final idea: I remember reading about a startup that recorded your keystrokes while you wrote a document so you could watch a replay of everything you had typed. Paul Graham asked them to make a version that highlighted in red anything that you would later delete, so in the replay, you can watch yourself write things that are doomed to deletion. It would be interesting to see the video describe things about your work that you didn't realize yet, like "this hour accounted for 90% of the bugs" or something like that.

Other ideas

Jonathan Toomim: might be interesting to have a visualization of when you planned/scheduled yourself to work (perhaps a colored bar at the bottom) and do other things, as well as a vis of what you actually did.

Some indicator of what you're doing when you're not visible would also be cool. Simple text overlaid displaying "sleep", "shower", "food", "conjugal bliss", etc. would be neat.

Also, here's an idea that I have that might or might not work. It occurs to me that simply taking one frame every minute misses a lot of available information. For example, if you walk through the room between the two frames, you won't be seen. If you spend 30 seconds yanking on your hair trying to figure something out, that could also get missed. One alternate approach would be to record normal (or low framerate, like 1 fps) video, then average each minute's frames together to produce a simulated long-exposure image. (Basically, oversample with averaging.) This would, of course, be very fuzzy and show no detail on moving objects, but you could solve that by blending the averaged frame with a plain video frame (e.g. the last or middle within that time window) at around a 20%/80% ratio. This would probably create a type of ghosting/aura effect around you when you move, but still allowing detail on your face to be seen. It would be interesting to examine how your aura changes during different activities, e.g. coding versus Skyping, as well as if there's a circadian rhythm to the aura.

Other musings

Just had this idea after thinking about some old journal entries I recently read (like the one where I did 16 hours of work in one day and it was awesome) and the guy who was talking about using Chronolapse after being inspired by my timelapse video. What if I made another timelapse where I worked 100 hours in one week? That would be 14:15 of work every day: enough to leave over for showering, eating, sleeping, and a little bit of flexibility. I would blog it and try to get a bit of attention. I would get all my Beeminders ahead of the game before starting. I would trade Chloe so that she would cook things for me. I would make sure the timelapse would look really interesting, maybe even predicting in advance the music that would play so I could do certain things in time with it (timelapse head bop?). And perhaps most importantly, I would work on an open-source project (part of CodeCombat), so people could also see the code that I had written. It would be a great incentive to get a ton of stuff done, have a really really really good time, and potentially get some attention going toward CodeCombat. Hmm! Let me present the idea to Chloe. If I were going to do it, it would make sense to do it when I had a really juicy bit of work lined up that I could sink 100 hours into without getting stuck or demotivated or finished or into the horrible debugging phase, but yet would give me something tangible to show off at the end. Like the CodeCombat level editor.

It would be nice to do this after I got my new MBP, because that would have an easier time staying alive and recording all this stuff, but I guess it's not necessary. I could do this the first week in September otherwise. Third or fourth weeks of September would also work, and I might have it then (small chance), but the level editor would be done, most likely, so it'd have to be something else.

Hmm; that 100-hour-work-week isn't entirely internalized. I guess I could reframe to "work as much as possible in one week" and let my own conscience be my guide as to how much is possible. Yeah. If I happen to break 100 hours, even better. But this will keep me from failing or hurting myself.

Michael suggested adding metrics. I would love to get Telepath working to record my heart rate, and maybe even HRV / breathing. That would make an awesome indicator. What other metrics? Lines of code written? Commits? Keystrokes per minute? Hours worked so far that day? Brunch / Grunt recompiles? Trellos completed/created? Annotations of what I'm working on? Oooh, maybe the Chirp could be integrated into this, too! And I could integrate my happiness pings in there. I like Scott's star power idea; it would be like, the longer I'm focused working at a stretch, the more star power I have.

First, let me note that I had the idea of turning Telepath into a HUD that would show all my metrics, and maybe even my webcam snapshots. It would just get set to Always On Top and it would live at the bottom of my screen. That way, I don't really have to do any post-processing of the video. It could show things like what Trello I was working on, when Trellos were completed, commit messages, what I'm doing (hacking / sleeping / eating / etc.), heart rate, keystrokes, time worked, focus meter, etc. Maybe it could even show progress through the song that will be playing so that I can time things with it. Whoa, that would be cool.

If I want to make this, I should start getting it ready well in advance of my ultra work week. The webcam stuff, I was planning on doing after I got a new Mac, hoping that OpenCV would then install properly.

I'll definitely annotate the sleeping parts this time. I wonder if there would be something interesting I could display during sleeping time so that it would be less boring. (I do want to give the sensation of sleeping time passing accurately.)

I'm thinking of making a Mac app that will serve as the HUD for the video. That could clearly show the time and maybe a sun position or something. Then you'd get a sense of time speed.

I see I sent you the YouTube version, probably because it uploaded faster or something. The Vimeo version has higher res, so you can read the code (if not perfectly). I'll stick to HD for the next one. I'll be hacking on CodeCombat which will all be open source anyway, so it shouldn't matter if people see the code.

Do you think a faster playback speed would make the video more interesting? I can choose any speed I want. The last one was 1440x, or one minute per day.

Retrospective notes are a good idea. I think I'll also have the HUD display things like what I'm working on, and that will be easy to read.

I can put Emacs and Chrome in the top screen, everything else in the bottom screen, not use any separate spaces, and things will work well; I'll just record the top screen.

Damn, I lost my list of cool things I was working on to go in the HUD. I'll recreate:

  • Photo
  • Time of day
  • Time worked today
  • Time worked this week
  • General activity (coding, sleeping, eating, husbanding)
  • Specific activity (implementing line-by-line execution, eating a beef)
  • Countdown to next snapshot
  • Overlay of last snapshot photo
  • Heart rate
  • Focus meter (time worked at a stretch)
  • Keystrokes today
  • Commits today
  • HRV
  • Ability to add video-time animated annotations (3s animation takes 72 minutes)
  • Progress through video song
  • Keystrokes per minute
  • Focused window
  • Recently typed text
  • Happiness / health / energy pings
  • Breath rate
  • Brunch/Grunt recompiles
  • Trellos slain today
  • Active Trellos
  • Total Trellos
  • Trellos created today
  • Chirp integration
  • Telepath powerup/powerdown sound based on light level transitions

TODO

  • Fix webcam death.
  • Hide password typing.
  • Finish activity and sub-activity area.
  • Hook up work timing.
  • Make week-long data persistence.
  • Make day-long data persistence.
  • Hook up GitHub.
  • Hook up Trello.
  • Hook up brunch/grunt builds.
  • Hook up unread emails.
  • Make work timing respond to time.
  • Make it take screen snapshots.
  • Put percentile feedback in a web view in the HUD.
  • Make percentile feedback view refresh whenever work changes.
  • Get it running on new Mac.
  • Trade other things to Chloe to get her to do my chores that week.
  • Clean up Chrome bookmarks bar.
  • Fix build counts.
  • Start getting up earlier so the week can be spread out.
  • Figure out how to handle passwords.
  • Fix the webcam zoom and aspect ratio.
  • Make something to generate time lapse videos.
  • Think about adding reminder to fill in activity whenever session changes.
  • Think about adding Leap Motion of some sort (face tracking?).
  • Flip the webcam so it's easier to move my head for time lapse.
  • Think about zooming webcam out when I'm not in activity "Coding", maybe even animating a zoom in/out as I start/stop coding.
  • Cook everything in advance.
  • Think about adding Google Realtime Analytics number of visitors to dashboard.
  • Think about adding pull-up count.
  • Think about adding chocolate bars eaten count.
  • Think about adding currently playing song label.
  • Think about adding added/deleted/modified GitHub stats (easy).
  • Think about adding somewhere that shows my paste content, or past paste contents.
  • Get SoundCloud song image and implement progress fill.
  • Pick song(s).
  • Think about adding screensaver that stays on with random (nonrandom?) pics so it's interesting while I'm sleeping.
  • Figure out a better lighting solution.
  • Think about making slow-mo messages.
  • Hook up happiness/energy/health pinging.
  • Implement focus bar.
  • Hook up biometrics.
  • Improve design.
  • Change the way the phantom works so it's easier to move my head for time lapse.
  • Choreograph music and slow-mo motions.
  • Test lapse a day or two.
  • Pump up the jam on my playlist.

Day Of:

  • Announce that I'm doing it.
  • Read all emails in advance.
  • Prepare all Trellos for crushing.
  • Start Beeminders again for the next week.
  • Lay out all my clothes in advance.
  • Turn Nanny on.

Possible Songs

  • Muse - Knights of Cydonia (6:07) - 6 - G3
  • Battles - Atlas (7:07) - 8
  • Infected Mushroom - Becoming Insane (7:24) - 8
  • Dragonforce - Through The Fire And Flames (7:24) - 7 - G1
  • Ronald Jenkees - Guitar Sound (7:01) - 7
  • Magyar Posse - Intercontinental Hustle (7:37) - 7
  • Juno Reactor - Conga Fury (Animatrix Mix) (7:25) - 7
  • Doves - There Goes The Fear (6:54) - 6
  • Metallica - One (7:28 but don't need first 28s) - 5
  • Paul Oakenfold - Gamemaster (7:18) - 5
  • Macklemore - Can't Hold Us (4:25) - 8
  • The Glitch Mob - We Can Make The World Stop (5:25) - 7
  • unkle - Burn My Shadow (4:57) - 6 - G2
  • Macklemore - Ten Thousand Hours (4:09) - 6
  • Walk the Moon - I Can Lift a Car (4:48) - 6

ffmpeg

http://trac.ffmpeg.org/wiki/x264EncodingGuide
rm tmp/img*.jpg; x=1; for i in @(2013-11-11*.jpg|2013-11-12*.jpg|
2013-11-13*.jpg|2013-11-14*.jpg|2013-11-15*.jpg|2013-11-16*.jpg|2013-11-17*.jpg|2013-11-18*.jpg); do counter=$(printf %07d $x); cp "$i" tmp/im
g"$counter".jpg; x=$(($x+1)); done
rm tmp/img*.jpg; x=1; for i in @(2013-11-09*.jpg|2013-11-10*.jpg); do counter=$(printf %07d $x); cp "$i" tmp/img"$counter".jpg; x=$(($x+1)); done.
/ffmpeg -r 30 -f image2 -i tmp/img%07d.jpg -y -s 2560x1600 -r 30 -vcodec libx264 -preset slower -tune stillimage -crf 18 vids/test6_00.mp4
rm tmp/img*.jpg; x=1; for i in *.jpg; do counter=$(printf %05d $x); cp "$i" tmp/img"$counter".jpg; x=$(($x+1)); done
../ffmpeg -r 30 -f image2 -i tmp/img%05d.jpg -y -s 2560x1600 -r 30 -vcodec libx264 -preset slower -tune stillimage -crf 18 ../vids/maniac_week.mp4
# From maniac dir
rm tmp/img*.jpg; x=1; for i in *.jpg; do counter=$(printf %05d $x); cp "$i" tmp/img"$counter".jpg; x=$(($x+1)); done
../ffmpeg -r 30 -f image2 -i tmp/img%05d.jpg -y -s 2560x1600 -r 30 -vcodec libx264 -preset slower -tune stillimage -crf 18 ../vids/maniac_week_dramatic.mp4
cd ../vid../ffmpeg -i maniac_week.mp4 -i cydonia.mp3 -c:v copy -c:a copy -map 0:0 -map 1:0 -map 1:0 maniac_week_final.mp4