Friday, May 03, 2013

Seattle 2013 Day 1: Arrival and Pike Place Arcade Lights

4/19/2013
Seattle 2013 Day 1: Arrival and Pike Place Arcade Lights

And so begins my somewhat impromptu 4-day trip to glorious Seattle, Washington!

I have been meaning to go to Seattle for quite a long while now. I think I first wanted to go after seeing a photo of the Pike Place Market - it seemed like such an interesting place, mired in history, and basically the Seattle version of the Ferry Building, which we all know is my most favourite place ever. Anyway, it seemed "my kind of vibe". As my recent post implied, I was keen to "reconnect" this weekend... try to turn off the cell phone, ignore the slew of crazy news feeds on Facebook, and get some time doing some good exercise, enjoying nature, and exploring an exciting new city.

I usually budget for this kind of stuff in advance, but this kind of trip is really easy to pull off - the costs aren't very high if you make good choices. As I said to my bro Matt in Toronto in an email thread we were having, fortuitously, as I was on the way to the airport... the largest value for money is gained by spending your money on "experiences". As Dave Matthews would say, "Make some memories with us now".

My aim as I mentioned is not to answer phone/messages/Facebook this weekend. I will ignore/put it on airplane mode, or just leave it at the hotel. This device is so darn useful it's hard to leave behind... maybe privacy mode will do the trick. There must be a workflow for this. "Need usefulness of phone, but want no interruptions." The point of my weekend was a work break and didn't want to have any work talk or that sort of thing, but I was wearing a Monsters, Inc. shirt I got at Uni Qlo. It was funny... EVERYONE seemed to be commenting on it, saying how much they love the movie, etc. That was fun.

The airport trip was great, super smooth and no worries. Virgin America friggin' rocks. Each booth had a different cute/funny quote at their booth. It's quite clear that their corporate policy must encourage the people at each gate to take it upon themselves to write something funny and topical. One said, "T.G.I.F.". The other gate which was going to Los Cabos said "No hole punch, no Mexico for you"!! haha. Hilarious.

Tasty Greek Yoghurt in the airport
Got some tasty greek yoghurt and a Blue Bottle drip coffee at the airport. The yoghurt and fruit was a great idea - 2nd only to have enough wherewithal to prepare and eat the same thing at home before leaving for a trip :) Took care of the last emails for the weekend to my parents and my buddy Matt. Then a lady asked me for advice on Wreck-it-Ralph (was it good for kids, how scary was the villain compared to the bear in Brave). People LOVE this shirt I am wearing :)

So after the emails, I went back to using the phone for usefulness only. I found out that Bill and Melinda Gates Foundation (where I was about to head to upon arrival to go tour their visitors centre), is right beside something called "Seattle Center". I checked how to get there from the airport... and bingo!!! There is a cool Monorail that goes from downtown to Seattle Center, cool. But even betterm there's a Light Rail, right from the airport to downtown!! I was gonna cab or something, and I'm super lucky, this light rail drops right near my hotel. Amazing. I am totally gonna do that, dropoff luggage, check in at the hotel and then head off to the Monorail!! So sick!! So much more fun than a boring cab ride. Daaamn I am excited about the monorail :) So fun. And frugal! It's much more worth spending my money on things that make sense (a Zipcar rental for the day on Saturday to go biking, a Bike Rental), but a cab is nothing special. So that was smart. Can't wait for this trip!

Got onto the plane and edited my speech for the Waterloo Alumni Event I'm speaking at on the Facebook HQ Campus in Palo Alto next week. I spent just a bit of time editing it and I am very happy with it. It has a great flow and I'm proud of it. I guess I've been thinking about it for a while, but the themes really just kindof fit together. I only wrote it a week or two ago in a couple of sittings, but it's feeling pretty polished which I am happy about. This stuff is getting easier to do now... TEDx was a big learning experience!!

It's fun to journal for the weekend as well. I am going to make a point not to "check in" or post places as I go on Facebook. It's fun to do that usually, but I am gonna treat this the same as a longer trip like in Peru last year. So that it's a proper break, I'm going to record notes in a paper journal and take photos and just post a journal when I get back to SF. Good times. In that spirit, oh look, there is TV and WiFi on the plane?! Cool, but noooooooppppe. :) I also found out how to (mostly) silence my phone. Privacy mode should do it. I will have to control myself in terms of not checking email and Facebook, but I can use Maps and Yelp and phone calls come from the Favourites List only. Seems pretty good.

Anyhoo. I got in an hit up the light rail... $2.75 all the way into downtown!! Amazing. I helped a couple of people out who couldn't figure out the ticket machine. One lady said, "I'm sorry, it's my first day here!" I laughed and said "Me too, but I've been googling all morning figuring out how to get to downtown from the airport!" The train was smooth and an easy way to get downtown. Awesome. After about 45 min I got off downtown and walked up a few steep hills (this IS kinda like San Francisco!) and checked in. The staff was super nice. My room rocks!! Super nice, and a huge bed. I got the "highway view" that people seemed to be dissing on the reviews, but... whatevs. It was not a biggie, and you got to see some awesome city lights. Can't argue with the epic Priceline price I got though! I was rainy looking, so I put on my trusty Arc'Teryx jacket and ended up taking a short cab ride to Bill and Melinda Gates up near the Seattle Center. It was an awesome exhibit. It explained a lot about the aim of the organization, and was incredibly inspiring. What a great place for schoolkids to feel welcome and encouraged to make a difference. There were some Bill Gates, Sr. quotes on the walls too. What a great family and it is so cool to see what they are doing for the world. Fantastic.

Bill and Melinda Gates Foundation!
Bill and Melinda Gates Foundation!
Reminds me of how AMAZING Bill Gates Sr.'s book "Showing up for Life" is
Contribute your own "what would I do?" to the digital wall
Contribute your own "what would I do?" to the digital wall
Unity
This little exhibit packed a huge emotional weight
Share Your Cause "Trees". Amazing place for kids to learn and be inspired to take part
I stayed for about an hour. They do less in international education/teaching/technology access than I thought. It seems their education focus is more in the USA, and their focus in developing nations is on health care. Pretty friggin' amazing to see the specifics of how they accomplish tasks that seem insurmountable. It was particularly interesting to see how they apply Microsoft-style computer science logical rigor to solving world problems. There were a lot of cool portions of the exhibit talking about data usage, tracking their progress quantitatively, best bang for the buck, etc. Pretty darn outstanding.

From there I headed to the Seattle Center and wandered past the EMP (Experience Music Project) museum. It looks kick ass, I will have to go there later in the trip... Frank Gehry-designed building, Nirvana exhibit, Art of Video Games exhibit... YEP. I headed to a place called the Armory, which seemed mostly like a huge building containing like 20 separate bouncy castles for kids, and food. I was hungry and I got a tasty poutine which was MASSIVE. It was at a restaurant on the "Misc." menu so that was fun. They had something else on there called a "Caramelized Grapefruit" which is a grapefruit with sugar on it that is then put on a grill. Sounds pretty awesome.

The Space Needle
Poutine inside on a rainy day, plus an entire room of nothing but bouncy castles
A little bit of Donkey Kong
I remember this guy well
After a very short history of video game consoles area (and a couple min playing super old-school Donkey Kong), it was time for a walk. I saw the outside of the Chihuly glass blowing museum, looks pretty cool and I might go later in the weekend.

So this is pretty funny... the Seattle Space Needle is TINY!!!!!!!! I was expecting something like the CN Tower, and I actually saw it from across the street and thought it was a scaled-down model of it or something!! haha. Sorry, Seattle!! It's not even really part of the skyline is some places, and it's not a lot bigger than most of the big hotels downtown I don't think. Very strange!! I believe it is from the World's Fair though, so we should give the poor Space Needle a break. I walked for a bit and the poutine was a good call to warm me up as the weather was getting damper.

A wet skatepark
Good advice
Trees
Seattle Olympic Sculpture Park
I walked towards the water, and the area started reminding me more and more of Toronto. Condos facing the water, a Waterfront that looked so much like Front St. as I was walking along it, Parks, and even an Old Spaghetti Factory right near the water!! So Toronto-y right there!

And then off to Pike Place. It was really starting to rain now and so I took a couple photos and kept rockin' my trusty jacket, but then made a break for the original first-ever Starbucks store. It was super fun in there.

This area reminded me SO MUCH of Toronto
And... sortof Toronto Waterfront, but in Seattle
O.G. Starbucks
Original Starbucks logo, with, um... well...
I saw the Beecher's Cheese Curds store which a friend had recommended to me, so I'll have to try them out tomorrow or Sunday. Man this Arc'Teryx jacket was worth every penny!!!! It stopped pouring so intensely and then got misty, then heavier rain again. It was actually quite nice, and my jacket was keeping me nice and dry, so it was kind fun and cozy to be walking around and checking out different warm places amidst the spring rainfall. There was a tasty looking breadshop and French bakery which looked great too.

My new favourite place

I then went to wait in line for Arcade Lights. This event turned out to be this same weekend that I was already planning to be in Seattle. It's a bi-yearly event where local vendors take over the Public Market and you get 10 tokens upon arrival with your $25 entry fee. Then you go check out all the different food and drink and dessert places and pick what you like and give (usually) 1 token per food or drink item. Fun stuff. I got my "Arcade Lights tasting glass" and the tokens wrapped in a green bandana as I entered. So cool.

There were 4 different main sections: Savory, Sweet, Wine, Beer. So amazing! I started with Lamb Sausage Chili from Uli's Famous Sausage which was amazing. Then got some of this Wood Fired vegetarian pizza from Roving Pizzaioli which was so insanely awesome that I went back again. Then some mini donuts from Mighty-O Donuts, then a cheese plate from Mt. Townsend Creamery. Some ginger cider and then some tasty Blood Orange IPA beer from Elysian Brewing.

Lamb Sausage Chili
This Pizza was EPIC
Vendors
Awesome view!
Cheese plate, beer tasting glass
Mmm... more tasty local food
PB&J Ice Cream, and Peanut Butter Crunch Cupcake
After tasting so much epicness, it was time to grab some dessert and roll out. I got this crazy PB&J Ice Cream from Six Strawberries which was really excellent. The people working there rocked too. And finally, a Chocolate Peanut Butter cupcake for later from Yellow Leaf Cupcakes. Amazing!! What a great event and what a cool start to my first Seattle experience.


Oh Arcade Lights, you are epic
Rainy and beautiful evening
From there I walked back to my hotel. I took the long way, checking out downtown a bit and I'll have to spend more time down there later. I went to City Target and got a few essentials (Beef Jerky and Clif Bar for mountain biking tomorrow). Back to the hotel and unpacked a bit, and some chillin'.


Rainy and beautiful evening

There was a hilariously fitting book in my hotel room called "What to read in the rain"... from 826 SEATTLE?!!!?!?!?! I had no idea 826 Valencia had a Seattle store/creative writing center, and that quickly became another obvious thing that I had to do. I had hardly seen the hotel since arriving, so I wandered a little, checked out the hotel bar just to see the view (nice view) and the workout room. Back to my room for 2 cups of tasty tea (which I had brought from home) and that epic cupcake. I connected my iPhone to the TV to get some awesome tunes playing and wrote my journal notes. Maybe I'll even have a bath!!

Comfort & Joy... and a Cupcake!
Rainy night and view of the lights from my hotel
Whew!!!! What a GREAT start to the trip. Amazing. I am really enjoying everything, soaking it all in (haha, I *really* would have been soaking it all in without my jacket!) Tomorrow is going to be unbelievable: Zipcar, crumpets. then BIKING!!! Yes.

Already my mind and thoughts are focused on so many different things than they have been for the past while. The perspective and good vibes are already hitting me. It's funny, the thoughts that pop in your head. When I was walking along Pike Place and looking at strangers I'd never see again, I was thinking about how people go about their lives in their own cities, for the most part completely unaware of how you live yours. They have problems, you have your own problems, but people just carry on with what they know, and with no knowledge of your situation. Strange thought. But this is exactly the kind of perspective I came here to get!

There was an office building across from my hotel window. It was an incredibly generic looking office, with lots of random people's desks. Who do they do all day? This was a pretty big office building. Do they love it? Do they hate it? Why did they choose that career? Is their company doing well? Do they wish they lived somewhere else or do they love living in Seattle? (I assume they do, it rocks here already). Not sure why so many thoughts like this were running through my head... probably the moodiness of the rain mixed with this great tea and thoughtful quiet time. But anyway, this is the exact kind of perspective that came just by showing up here and soaking it all in, rain and all.

Thursday, May 02, 2013

Surprise weekend trip: Seattle!

In a recent post I said I was taking off somewhere for a covert long weekend of refreshing goodness and relaxation in a random and awesome city in the pacific northwest USA. Where was that city? Why, Seattle!

Here comes the blog posts of the 4-day trip I took, and a crazy 60fps video of me mountain biking in this crazy mountain biking course/park. It rocked.

Thursday, April 25, 2013

Realtime Facial Animation with On-the-fly Correctives

My crazy colleague Hao Li and slightly-less-crazy-but-still-as-brilliant co-conspirators Jihun Yu, Yuting Ye and Chris Bregler have just finished their paper submission to Siggraph 2013 and are now able to publish the work publicly.

Check out the info and paper on Hao's site here: Realtime Facial Animation with On-the-fly Correctives and check out the video of their amazing groundbreaking work here.

Thanks to the team for allowing me to laugh it up with them and help contribute some facial animation performances. The troll was my favourite part. :)


Friday, April 19, 2013

Peace!!

Yo, stressful times, guess what... PEACE!!!!!!!!!

In the spirit of mindfulness I am taking off somewhere awesome for the weekend and I'm gonna enjoy the crap out of every minute. I'm not posting about it now (other than this) because the aim is to really chill out, enjoy a new place I've never been to before, explore the local nature, try some epic local food and activities, and just have fun.

Most importantly, this is a longer edition of my usual Saturday morning "digital Sabbath" where I (try, sometimes unsuccessfully) to turn my phone off for a few hours and just enjoy the world around me, this silly duck that swims near where I sit at the Ferry Building, and just notice all the great stuff and be grateful for the fact that I live in this awesome city and get to do awesome things all the time.

So this is essentially a longer version of this "disconnection". Rather than "disconnecting", I've heard some hippier folks call this "reconnecting" with nature. Whatever you want to call this, I call it a "great idea" ;) I am not going to meet up with people, I'm not going to call friends I know in this city (sorry, friends, and you'll find out later where I went... I'll be back another time when I don't need a mental break) and I'm just going to be very present in the moment and enjoy everything. This is key. The easiest and more intrusive way for me to be pulled out of the moment is to be constantly checking my phone or spending my usual hours on the internets. I do love that stuff, don't get me wrong, and it definitely has its place. But for this weekend, I need some time with my focus and thoughts and energy directly focused on every moment of direct experience. Here we go!!

As I posted on Facebook:
And off I go to an awesome undisclosed location in the Pacific Northwest. Biking, nature, good food, fresh local produce... And no Internet or phone on purpose. 4 day mental re-energizing recovery weekend, commence! Ill post blog and photos after the trip, its gonna be fun and safe, but I promise to be out of contact for 4 days. It gonna be great :)

So yes, I will be taking the usual photos and writing a (paper) blog like I did in Peru, and I'll post all of that in the week or two after I get back. But while I'm over there, I'm gonna de-internet for a few days and try not to be so distracted.

Sunday, April 14, 2013

The Creative Process

The Creative Process
Baby, I'm back!

The last few nights I've turned a bit of a corner. It's been a very slow few months for the general creative process which has not been the greatest. I've been getting into some good new things like Yoga and so on, but my evenings have been filled with much-too-much Netflix instant watch marathons and not enough creating lately.

A combination of a bunch of things has affected my boundless evening energy (see blogs I've ever posted from 2, 3, 4, 5am...) and as such, has affected my creative output :( But onwards and upwards (ever upwards, swirling, swirling!) we go. It's nice to have a project with a quick and immediate deadline. This speech I'm (re)writing is for the Waterloo Alumni Event at Facebook HQ in Menlo Park in a couple weeks. I had something drafted that I didn't like and I am throwing away most of it. There are a few pieces that were good but it's not great, and it needs a lot more oomph. The strange thing is, if I am a little more tired, that really helps get the juices going... so tonight was a pretty solid chunk of work time. I've made some good progress and I can now see the direction this is going and I am happy with it. To appeal to an audience of wildly varying ages and life-stages is a challenge... and to that I say, Barney Stinson-style "Challenge Accepted!" (I've actually got a HIMYM reference in the talk draft right now, but I'm not sure if it's gonna make the final cut. Depends if I think people will get it without destroying the joke by explaining it) ;)

It's funny I find I always need to be in the "right mood" to write a speech. If I'm not, I'll spend hours and hours looping over the same things and getting nowhere. But if I'm into it and everything lines up, I can just roll it out and tear through the bad ideas quickly and get something I'm happy with. It's a fun process. That said, I'm tired so I'm gonna stop for tonight. Hopefully a few more nights of the "right mood" and I'll have some work I can be proud of.

Here's to the creative process, and the joy of many late night staying up doing fun stuff when I should be sleeping. I need to be doing a lot more of that. Last year was filled with it. This year is off to a slow start. But I'm gonna rally, I need to.

Saturday, April 13, 2013

Update: Siggraph 2013, a random trip, and mindfulness

My bro Matt said it's been a bazillion years since I've blogged and he's pretty much correct. Stuff has been busy and crazy lately but I can't elaborate :) But thus the non-blogging.

I got excellent news today though, our talk for Siggraph 2013 has been accepted!! This is my first ever Siggraph talk, and I'm really excited and pleased that we got in. I will post more details when I know about the schedule and when/where it's happening this summer. Awesome times.

I need a break, so I'm taking off soon on an un-announced, will-not-be-Facebooked-or-Blogged-as-I-go trip to somewhere awesome on the Pacific Northwest USA, it's gonna be a short trip but I'm intentionally not telling anyone about it (well, other than all of you, right now) because the main aim is to disappear for a few days, "disconnect" from tech stuff (email, blogs, Facebook, etc) for a few days and "reconnect" with tasty local food, meet some interesting volunteer workers, and go mountain biking through some epic trails on a crazy $5k dual-suspension bike I am gonna rent. Maybe eat some amazing food too, I bet. So that's the plan. I am gonna disappear from this virtual internet world for a few days, and only use my phone for Yelp and that's it. It seems crazy to go to these lengths just to "turn off" for a few days, but it seems like it's going to be a good plan to refresh and re-engage myself.

While on this topic, I've been reading about "mindfulness" a bit lately. My other "bro" Matt (I have an affinity for best friends named Matt) suggested this book.

Mindfulness book
This seems to be very interesting, and fits well with my newfound addiction to Yoga that started back in January. The stretching and exercise part of Yoga has been great and very beneficial at work, but I'm finding that the short discussions of "gratefulness" and "dedicating your practice to your self improvement" is totally up my alley. It seems like meditation is a useful tool for lots of people to deal with stress or just to help focus in this very busy world we live in. So I figure it might be worth a shot, and certainly it will be fun. I'm keen to read a little more about it first as well. This also kindof goes hand-in-hand with my reading about Positive Psychology lately, I guess that's where my interest in this stems from. Given the obvious benefits I've seen from optimism throughout many projects at work and in life, I think this mindfulness idea is similar in nature and thus worth some personal investigation.

Anyhoo, that's all for now. I'll be writing a paper journal on my random trip and I'll take some photos too. I'll post the usual full blog from the trip afterwards, along with photos and comments about the awesome experience. Looking forward to it. And mindfulness-style, I look forward to being fully present in the moment during that trip, and enjoying it to its very fullest. :)

Saturday, April 06, 2013

Eyeborg Prosthetic Eye Camera

Wow, this is incredible.
"Take a one eyed film maker, an unemployed engineer, and a vision for something that’s never been done before and you have yourself the EyeBorg Project. Rob Spence and Kosta Grammatis are trying to make history by embedding a video camera and a transmitter in a prosthetic eye. That eye is going in Robs eye socket, and will record the world from a perspective that’s never been seen before."
http://eyeborgblog.com/

The reach of humanity's ingenuity and imagination will never fail to impress me. Truly amazing.

Thanks Yayha for the heads up about this amazing and inspiring work.

- Posted using BlogPress from my iPhone

Monday, March 18, 2013

OLPC Video Editor: Looks like we can cut a file

(Here's what I'm doing, why I'm doing it, and why One Laptop Per Child friggin' rocks)

It has been a busy few weeks at work and with my family visiting, but I had a couple spare hours tonight to get back to this project which was suuuper sweeeeeeeeet.

Made some good progress on figuring out which technologies NOT to use for video splicing on Linux... and man are there a lot complicated solutions! I read documentation pages for about 8 different options, none of them ultimately a good choice. D'oh. After trying a few things out and not making any progress, I opted to try "oggCut" and "oggCat", and had success running this from a standalone Python script (running in my virtualized Linux environment, not on the OLPC itself yet... it'll be a while till we can get that sorted).

As I mentioned in my previous post, it may turn out to make most sense to just "cut" the video using command-line programs launched from a subprocess call from the XO activity. We know those calls are blocking, and it's not too too disk intensive so it should run fast enough without freezing the UI too badly.

I first tried trimming and splicing together a random .OGG video file I found online and it worked, which was exciting. The audio seems to be lined up too which is good, cause that can always be an issue when you splice files which contain both an audio and video stream. So that was a good first step.

Then I recorded myself talking in a couple of different quality settings from the existing OLPC Activity called "Camera", on my XO itself. It's important to test this solution with "real" video data that's actually recorded from the XO device itself, because I had roughly no idea what frame rate or encoding it uses and this oggCut/oggCat combination could have failed for the ogg files from the XO. Good news, it seems to work (or at least, in most cases). These are part of the oggvideotools and are working quite well. http://www.streamnik.de/78.html and http://en.flossmanuals.net/ogg-theora/ch052_cat-files/

Edited Ogg Video file, spliced together into a single file from 2 separate original Ogg files recoded on the XO laptop

To get this to work, I needed to install oggvideotools:
yum install oggvideotools

I believe I read that you can bundle whatever libraries you need installed with an Activity installer itself, which is good, cause oggvideotools is not available by default on the XO machines. So hopefully I can work that out when needed.

Then I called a subprocess from Python, calling out to oggCut (to slice the videos) and oggCat (to compile the sliced videos together into a final, single video).

> import subprocess
> subprocess.Popen("oggCut -i 1.ogg -s 1000 -e 5000 -o fromPython.ogg; oggCut -i 2.ogg -s 0 -e 2000 -o fromPython2.ogg; oggCat editFromPython.ogg fromPython.ogg fromPython2.ogg", shell=True)

The "s" and "e" times are in milliseconds, and specify the start and end points for the video. This generally worked, though I got an error a couple of times on one of the videos. Not sure why - perhaps I am trying to edit past the end of the video or something... so it wasn't 100% bulletproof, but it seemed to roughly work for the moment!

I also spent some time reading about GStreamer and am trying to figure out how best to playback these videos from a GTK window. I haven't used GStreamer before and was hoping their GNonLin linear video editing stuff would be straightforward but it seems like a bit of a learning curve... so it might be better just let the kids mark the start and end points in the GStreamer UI, and leave the actual editing work to the command line oggvideotools.

Anyhow! Made some progress which is good. Glad to keep this moving, and although it's been tough to make time lately to work on this, I am excited to see some progress and I think this is gonna be cool as time progresses. More updates when I get another chance to work on it.

In other news, I'm thinking of running an OLPC "Birds of a Feather" meeting at the SIGGRAPH Computer Graphics Conference in Anaheim, California in July this year. I still gotta confirm whether or not I am going to the conference, but if I am it seems like a good idea to help mobilize and excite the community of developers about what's going on and how they can contribute... sounds exciting eh? Ideally I'd like to have some interesting work to show by then on my XO at the conference... so we'll see how it all progresses. I better keep at it :) Anyway, fun times and I'm getting a chance to learn some of this crazy Linux sysadmin/build setup/installer/video editing stuff, so that's a really cool side benefit too. Good times :)

Aside: Hmm, this is interesting: https://blogs.gnome.org/edwardrv/2009/11/30/the-result-of-the-past-few-months-of-hacking/ It looks like the guys who made Pitivi, a non-linear Linux video editor (that I basically want to make a super simple, kid-friendly version of) made a library that might help you in writing applications like this. I am gonna give them a shout and see if they have some advice for me on this. Haha, hilarious quote from Edward Hervey, the writer of the GStreamer Editing Services library about why he wrote it:
"Because writing audio/video-editors is a lot of work, and we should make it as easy as possible for people to write such applications while being able to leverage the power of GStreamer and not requiring a PhD in nuclear engineering."
haha :)

Wednesday, February 27, 2013

OLPC Video Editor: Research on ogg file splicing

Had some late night energy after this busy day of work (maybe it was those 2 cups of green tea and tasty California orange?!)... so I spent some time researching what technology I should be using to edit my ogg (theora) video files in the OLPC XO activity I am going to write.

First off, I think I've decided to write my own, new video editing activity for the OLPC instead of modifying the existing "Camera" app. It's very cool, and I had some thoughts about how to integrate my editing code into there... but I think it could cramp the UI and also it might just be easier to have my own codebase for this. Then I can make this application do just one major task: allow kids to view and seek to a start and end point in any of the video clips in their Journal, and then mark those start and end points into some sort of timeline. And from there, run some sort of command-line (or Python-accessible) splicing library that will edit these clips together, and save them out as a new .ogg file.

I've found a couple of possible options. You might wonder why I am not just porting Pitivi (Gnome editor, based on GStreamer) to the OLPC XO laptop. I took a look into it and it's really cool... but it's probably not the best fit for the XO laptop. Yes, it's a great tool and it definitely edits cleanly and like a standard non-linear editing program that anyone has used (eg iMovie, Windows Movie Maker)... but it's not specifically made with 6 year olds in mind. Certainly not with 6 year olds in mind from countries that have never seen iMovie (or even a computer before this). It's also got stuff like an "Import Clips" and "Save Movie" button which is find for a normal operating system with a regular file system, but doesn't really line up well with the XO's "Journal" directory concept. That needs to be well-integrated, or the learning curve will be too steep and I don't think it's going to get as much use as it could get.

Given what my friend Jen said about OLPC's most popular apps, simplicity in UI design is king... and paramount to whether or not your Activity is a success or a failure. If it's too complicated, if there is too much text on screen... then (most) kids will get frustrated and not use it... in my opinion. I want a lot of kids to use my application, so I need to be particularly focused on simplicity in UI design.

All that said about UI design and the necessity to keep it simple, and keep it obvious... I still need to figure out what algorithm/library/API to use to actually decode, splice, and re-encode the ogg (theora) video files. It needs to be fast, not take up too much memory, and ideally I'd like to just give it a list of in and out points (specified by the UI) and the corresponding ogg filename. Those files will then be spliced in order (I will have to allow users to re-order the clips somehow). So focusing on the actual editing part first (since I am gonna have to get that working before I even think about the UI)... I found some useful details.

GStreamer (already available on XOs) has a plugin called Gnonlin (As in G-NonLinear Editor)... YES. This is excellent news, and in fact it's what Pitivi uses under-the-hood. That said, the code looks kinda complicated. In fact all the GStreamer code seems kinda complicated. I am gonna have to read some more, and hopefully there are some useful tutorials online or good documentation of the library and how to interface with it. In any case, this looks super powerful and useful.

Some Gnonlin links:
Some other alternatives that I need to read about more, as they might be simpler if they can do what I want:
Yet another (possibly awesome) alternative is to convert the ogg files to mpeg (I think that's necessary for this) and then splice and concatenate using ffmpeg. Now this looks pretty darn easy from a programmatic side. I don't suspect they have Python access, but I can always just subprocess the conversion from the GTK app and subprocess.Popen() will make the UI wait for the subprocess to finish, which is exactly what I want. I'm not sure if XO machines already include ffmpeg or if I'd have to somehow bundle it along with my activity if I went this route. Or maybe use something like PyFFMpeg.

Thursday, February 21, 2013

OLPC Activity: Hello World

Ahhhh yes.

After some work last night getting my Sugar OS build rolling and some kind and super fast email help from Sugar-Build creator Daniel Narvaez (thanks Daniel!), I managed to get my first "Hello World" activity building tonight. Huzzah!

Creatively entitled, "JutansAwesomeActivity"

As Hello World programs tend to be, it doesn't do much. Though it still is pretty awesome.

Of course, I'll need to translate "What uppp" into Swahili, Spanish, Hindi, and all the other languages used by kids around the world who use the XO laptop ;)

Haha so yes. This first activity is just a "proof" as you might call it, that I can build an XO activity on my virtualized machine, and I can test within the Sugar emulated OS. All is looking good.

I need to try to get my Virtual Machine to use the camera on my computer so I can record videos and then edit them. If that doesn't work, I am just gonna import some .ogg files that I record directly from my XO laptop, and then start fiddling with playback, scrubbing, and ultimately editing (splicing) of those files together... which is my major goal for this project.

It's been fun to get things moving, and now that I'm finally done sorting out all the infrastructure stuff (that always takes much longer than you plan for it), I can get to the actual code writing itself. As always, I'll be posting updates here as I progress.

Mike :)

Wednesday, February 20, 2013

Router update: Shared hard disk, success!

Wow this really is awesome.

After getting the new Linksys router I talked about last week, I connected up a new 2 TB Western Digital Elements Hard Disk to the router.

I was then able to share the hard disk without much hassle, it was pretty straightforward. Added security made it a little harder to work around (darn Windows network settings), but other than that it was smooth sailing.

So I now have a networked hard disk, where I can both read and write from my Windows AND my Mac machines. Awesome. It's plugged into the router, so if my Mac is on and Windows is off, but I want something shared... I can still just copy it over and turn on my Windows machine anytime later to get it.

All of this is amazing... but wait, it gets better. This is also a DLNA Media Server. So my Blu-Ray now recognizes the Hard Disk. This allows me to stream all of my music library from the HD to my TV entertainment center system, and I don't need to have any of the computers on in the house to do it. Sweeeeeeeeeet awesome.

Building OLPC activities within Sugar-build

Whew, been tough to find time lately to spend in the evening on OLPC dev stuff. But had a bit of energy tonight and spent some time on some build stuff.

Tonight I experimented some more with the OLPC Sugar-build setup (as described here: http://sugarlabs.org/~buildbot/docs/build.html). I also finished reading the lengthy-and-very-detailed "Create your own sugar activites" manual. I skimmed some of the code, but in general made it through most of the stuff that will be relevant to the Activity development I am aiming for.

I could tell there were some Activities pre-installed in this sugar-build script (eg terminal, browse, chat, and a few other basics), but I wanted to know how to install new activities from their source code on Sugar's gitorious/github page (http://git.sugarlabs.org/)

This now allows me to do a few necessary things:
1) Check out and edit existing activities (or create my own new one) from Sugar's Github source control (necessary for contributing to OLPC software)

2) Write and modify code

3) Build and test the activities inside of the sugar environment on my desktop

It was a little tough to figure this out so I thought I'd document it here in case anyone else is trying to do this.

First of all, find the git:// address for the OLPC activity you want access to. (on here http://git.sugarlabs.org/). From there, go to your sugar-build directory and edit the following file:
config/modules/activities.json



This config file instructs the sugar-build script which activities to download from the appropriate git:// address, and what to call the directory that you're dropping the git repo into.

Then "pull" from the git repo to get the code:
make pull

make build
make run


And... voila! We run the sugar emulator again and here's the Hello World activity, along with the Camera and some other stuff I added too.

I just tried to edit the files and rebuild them, but it looks like the build system doesn't understand that I've modified the files and they need to be re-built and copied over to the install area. I'm probably doing something wrong. But it's time for bed :) More soon.

Sunday, February 17, 2013

The art of espresso

Yesterday evening I saw this great quote at a pastry shop in the Mission:




Heh. I was recently getting excited at the idea of getting an espresso machine at home. With this on my mind, I just read James Freeman's (founder of Blue Bottle) chapter on espresso making in the new Blue Bottle coffee book I bought.

What a daunting process. It sounds really really reaaalllly hard to get right, minute changes in grinding need to be made when your coffee is of different ages or the room temperature is more or less humid... wow. Becoming even decent requires thousands of pours of practice & a real motivated dedication to the craft. (Sounds like that Frank Lloyd Wright quote above.) :)

I finished the chapter with a huge appreciation for the ferry building blue bottle coffee magicians, and a strong desire to leave it to the pros, for now. Since I get paid to write computer software, I think I'm gonna keep my hours focused on that. And next time I'm at blue bottle, I'm gonna watch the magicians at work a little more closely, and realize my $2 is incredibly well spent, supporting the art of espresso.

- Posted using BlogPress from my iPad

CNET: Holograms of Holocaust survivors let crucial stories live on

Wow, some impressive and time-sensitive work happening at USC. I wonder if Spielberg is involved. Well done, USC.

Holograms of Holocaust survivors let crucial stories live on:

http://news.cnet.com/8301-17938_105-57568301-1/holograms-of-holocaust-survivors-let-crucial-stories-live-on



- Posted using BlogPress from my iPhone

Sunday, February 10, 2013

It's finally time for a new router

My trusty blue Linksys 801.11G router is still going strong about 5 years after I bought it, it requires a power-cycle maybe only a few times per YEAR... it's been a really powerful and stable friend in the home streaming department.

Now that I've got an iPad 4 and iPhone 5 though, I'm definitely behind the times in the standards, since both of those devices support the newer 802.11N standard, and more excitingly on the less-used 5Ghz band which will mean better performance. I find signal strength issues when far away from my current router, and I finally need something heftier.

Something else cool is new routers can automatically prioritize video streaming using something called QoS, and that's what I use my router for most of the time anyway.

I'm also now running a PC and a Mac desktop at home on the same network, but haven't really solved the shared network drive situation. What I really need to do is buy a 2TB drive and connect it up to a NAS, but I don't really stream that much from a hard disk (I usually use Netflix). That said, it would be nicer to have my music accessible on both my Mac and PC, and also shared via DLNA to my TV for streaming through my entertainment system... it's a bit silly that I haven't already set that up. All these potential use cases point to the need to have a USB port shared on my router itself, and to hook up an external HD to it.

I've been reading a bunch of reviews and there are not many routers out now which support USB 3.0, which is too bad. There is a DLink one which does, but the speed rates of data transfer are not high enough to warrant buying it over the routers which only support USB 2 - in fact it's slower! So that says to me that USB 3.0 Hard Disk sharing via Router is not "ready" yet, and it's not something I should be looking for if I am buying right now.

In terms of those leading edge features though, it seems that 802.11a/c (the new post-"N" standard, 3x faster than N routers) does seem to be reasonably well supported by the new Asus RT-AC66U router. While that's definitely in the future-proofing camp, it might be reasonable to get it since (eventually) I'll have 802.11a/c devices (presumably) and will want to benefit from it. And given that I haven't replaced my current G router for the last, say 6 years, it appears I don't upgrade routers very often. So maybe it's good to future proof.

That said, there are a lot of excellent reviews of the previous model of the Asus router, the Asus RT-N66U "Dark Knight", and yes, it also has a kick-ass name. It seems a bit silly to pay only $30 less for an "N" router now and then kick myself in 3 years when I (presumably) need a/c support. And I guess $30 now vs another $150 in 3 years to buy the latest and greatest makes sense. Ok, I think I've convinced myself :) There are some great features on the Netgear R6300 as well.

Here's what's currently going through my mind that I just sent out to some friends on Facebook.

Anyone know if 802.11a/c is set to be the next "big" standard? If I'm buying right now should I get an N900 router or pay a little more for an A/C router and future-proof? By the time a/c devices are out, will there be a post-a/c standard that will more likely be the "winner" or is that THE only upcoming standard?

I, like everyone else, don't have any A/C clients yet... but I upgrade routers like once every 6 years, so maybe it's wise to just future-proof now.

My main requirements are to:
1) stream Netflix
2) share files on a network connected HD between Mac and Windows desktops
3) DLNA-stream music files from that HD to my TV entertainment center
4) not have to buy another router in 2 years from now
5) Use 5Ghz/802.11N now on my iPad 4 and iPhone 5
6) Have that shared HD be running on USB 3.0 (but that seems like not too many support this yet, still USB 2 only).


It's looking like either this Asus (http://reviews.cnet.com/routers/asus-rt-ac66u-802/4505-3319_7-35406080.html) or this Netgear (http://reviews.cnet.com/routers/netgear-r6300-wifi-router/4505-3319_7-35315201.html) are the best choices. 

So, not sure exactly what I'm gonna get, but one of those 2 looks good, or alternatively the Asus RT-N66U (http://reviews.cnet.com/routers/asus-rt-n66u-dark/4505-3319_7-35110985.html)

[EDIT: After researching some more and thinking about this, #4 in the list above is not correct. I should probably instead be buying something that's not TOP of the line, but rather was top of the line about a year or year and a half ago. I am gonna start looking at the editor's choices for N300 routers since that's well beyond my current level of accessible bandwidth anyway - I only get 20 Mb/s from Comcast anyway!! What's the point of paying way more for bandwidth I'll never use. Rather, I'll get a router that can do a great job and will move me into 802.11N-land, as well as offering a reasonable networked HD setup. This'll be much better than what I've got now which is G, and in 3 years or whenever all my devices are 802.11a/c or whatever is the new hotness by then, I'll upgrade again at that point... buying whatever wins the top of the line for the next-gen standard now, but at that point. Needless to say I should probably be upgrading my router more often than every 6 years.]

[EDIT #2: I am seeing way too many reviews saying that the Asus needs to be power-cycled too often and that sounds like a huge pain in the butt. Also, starting to think N600 or roundabouts should be more than enough. But definitely have to get the shared Hard Drive and DLNA if I'm upgrading. Linksys E4200 or E4200 V2 are looking promising.]


Linksys/Cisco EA4500

[EDIT #3 and summary: I've managed to get a really good price on the newer Linksys/Cisco EA4500, just the updated version of the EA4200 v2. It's very similar, just with their new cloud-based firmware which I'm neither here nor there about. The features seem great. I got confused for a bit cause it looks like my "NAS" usb-attached drive will likely need to be formatted in NTFS, which I thought would mean I couldn't access it from my Mac Mini - but after some googling it looks like you can always access NTFS drives via samba on Mac (duh) and read/write that way. That'll be fine for my purposes of sharing music/photos between my 2 machines etc.]

Friday, February 08, 2013

Mailbox

Hmm... email management just got interesting... :) This could be really useful.


Tuesday, February 05, 2013

OLPC: Children in Peru write their own history on Wikipedia

When I was in the Peruvian Amazon last May, I had heard there were some One Laptop Per Child laptop deployments somewhere near that area... it is CRAZY to see this. This must be in a school with reasonable communication ability and consistent power sources to be able to be connected to Wikipedia (online, not the standard offline version)... so freakin' epic. This is the kind of stuff that really makes you proud of what humanity can do...


Sunday, February 03, 2013

A quick state of the Jutan-union

Hi all!

When my bro Finkel (aka "Alex") finally convinced me to join Twitter I didn't think it would affect my blogging, but I suppose it has to some extent. The lighter fare blogs (eg: reposting videos or interesting articles, etc) have definitely migrated to the Twitterverse (I think that's what the kids call it these days). So feel free to Follow me there if your internet stalking has been affected (my apologies, if that is the case).

I just realized I posted a grand total of 3 times in January 2013 which is pretty meager/crazy given my history for unleashing way too many details of my adventures via this blog. Don't worry; many adventures are still happening, I'm just posting less often these days I suppose. I think maybe I overposted with my 6 month blog extravagannza that was the South America trip, so I guess this was an unplanned pause on blogging. I'm also thinking about how to better reach people with this blog, and I suspect posts will be more targeted in the future and less in the "this-is-what-I-ate-for-dinner-today" vibe, though if I eat something really good for dinner, you'll hear about it one way or another, no doubt.

What else can I report. Things are busy and exciting at work and I will be submitting a talk for the Siggraph graphics conference this year, which I am incredibly psyched about. I really hope it gets in, and if so, I will be so psyched to present it. On that note, I noticed my resume was getting a little old, so just updated it.

Side-projects:
I'm taking a little pause on this as well (after releasing Gym Ninja at the end of December). I creeped back up a little on the weight loss goals over the Dec holidays which I am not happy about, it's not terrible, but I need to turn the heat way back up. The last month or so I've been trying a few new things like a couple different kinds of Yoga and a (crazy) high-intensity training workout. That's all going well, but I need to push harder on that stuff so I've been spending less evenings on the computer lately.

Volunteering:
I've been meeting with OLPC-SF every month and still very inspired by their efforts, there is some really awesome stuff going on there. I've got my XO 1.75 laptop, as well as a virtualized Sugar OS and Fedora 18 OS (with a Sugar build in it) all set up. I'm currently making my way through the massive "Make your own sugar activities" manual (250 pages of awesome) and learning all the details so I can hit the ground running with the volunteer software development I will be doing for them soon.

Travel:
Nothing too crazy on this front this year. I am gonna head to Texas in the summer which is going to be just about as much of a culture shock as South America was, I expect. :) Should be super awesome though.

I hope you are all well and 2013 is off to a glorious start for everyone!

Tuesday, January 29, 2013

Getting Fedora 18 set up on VirtualBox: Round 2

Wow, sure has been a while since I've set up a new Linux machine. I am missing all my aliases and keyboard shortcuts!! Ahh!!

Learned a few more things tonight. Apparently the default user you make in Fedora 18 does not have Administrator access, so that's why I was having problems doing anything outside of root. I just learned the difference between "su" and "su -" as well. You can put a user into a group called "wheel" that gives sudo access which is fancy. I guess I haven't set up a machine in quite a while, and I am used to having these things all work a certain way from the get-go. Crazy times. Anyhoo fiddled with this for a while and got it to work.

For some reason you can't right click on the background to get a terminal?!?!? That's NOT default Linux behaviour, which was really surprising. For that I needed ot install "nautilus-open-terminal". Who would have thought? (*Note, turns out this is just cause I am new to Gnome 3, and these are all Gnome 2 features I am used to, so you can install something called gnome-tweak-tool that allows you to do stuff you'd expect to be able to do on Linux, like right click the background and get a terminal window.) :)

Ok this is pretty sweeeet. The website http://extensions.gnome.org has a bunch of add-ons you can load just from a web browser, and they will install on your local machine. Pretty sweet. That allowed me to get a nice quick launch sidebar and some other useful stuff.

Alright back to work trying to get my build of the Sugar OS running!

Almost there...
As it turns out my problems last night were related to software group permissions (ain't that always the thing, eh!) After I got some great advice from one of the friendly folks at Sugar Labs who said it looked like an "Authentication Problem", I realized I was trying to run the code as "mjutan", but I had sync'd and built as "root" (since mjutan was not a sudoer when I tried to do this yesterday). All of this led to my build not launching.

After all is said and done... I've got Sugar running from source code I built!!!! Hooray! This is great news. I'll need to install some other activities but then it ought to be pretty straightforward from this point to iterate on the work and see the results back in Sugar. Very nice.

Sugar OS, running from built source code on Fedora 18, which is emulated on my Windows 7 machine through VirtualBox

Hooraaaay!!!!!!! Awesome to get this going. Next step will be to read through the "Make your own sugar activities" manual in full (or as much as I need to) and then start planning the changes I am going to make to the existing Recording app, or alternatively plan out my own app in more detail. I gotta see if I can playback movie files through this VirtualBox thing, hopefully my video card doesn't freak out.

More details as I figure 'em out :) Till next time... Mike :)

PS More good news. Audio and Video playback both work in the VirtualBox instance. I tested running a .ogg file with audio and video and it looks good. So that means I'll be able to test playback with pre-recorded ogg files from my XO laptop. Sweet.

Monday, January 28, 2013

Setting up Fedora 18 virtually on Windows as a Dev Environment for Sugar Activities

I had the pleasure of attending OLPC-SF's (One Laptop Per Child, San Francisco Chapter) 5th Anniversary event here in SF this weekend. It's amazing that folks have been working on exciting projects together for 5 years already, and I feel lucky to have met all of these interesting and awesome people, albeit coming to this game only relatively recently!

Since being first inspired to jump aboard and do my part for OLPC, I've got my own XO 1.75 laptop (courtesy of the lovely ladies from OLPC Canada) to experiment with and test my work, and I've managed to get SoaS ("Sugar on a Stick") installed via Oracle's VirtualBox on my development machine at home. This was pretty straightforward, and I documented some of the steps on this previous blog entry.

If you are interested in developing Sugar Activities or contributing software skills to the OLPC effort, contact the fine folks on the Sugar Dev team here or email me at jutanclan (-at-) gmail (-dot-) com and I'm happy to give you a hand or pass you along to the right people/helpful website.

In the background I've been slowly making my way through this excellent Floss manual ("Making your own Sugar Activities") and I thought I'd do a bit of screen-capping of my own as I go, to document my own process, and to help anyone else who might come across this and have an interest to develop for OLPC too.

If you're like me and born after 1980, you grew up with Microsoft Windows and you might not use Linux at home... even if you are a Computer Scientist. (I know, I know.) ;) I have a Win 7 Dev machine and a Mac Mini, and my Win 7 machine has a massive HD and is my main go-to machine... so I've decided to install the Fedora 18 Operating System via VirtualBox. You can also do a dual-boot scenario, but VirtualBox really seems to have improved over the years, so it makes it easy to virtualize a machine... plus that idea is just kinda cool, and sortof crazy that this works.

You really need Linux for developing parts of Sugar or Sugar Activities, so I'm installing the newest Fedora (version 18) now. First I made a new VirtualBox machine, and labelled it "Fedora 18".

Fedora 18 Virtual Machine in VirtualBox
Then I downloaded what's called an "ISO" file, also sometimes referred to as an "Installer". This was from the Fedora site: http://fedoraproject.org/en/get-fedora



If you get an error like this, go to the Devices-> CD/DVD Devices menu and select "Choose a virtual CD/DVD disk file" and point to the ISO file you downloaded from the Fedora site.

Reboot the Virtual Machine from the "Machine" menu, then you should see something like this.


This is a good sign. Let's get started!

Log into Fedora, and start setting up your user/account. You can just select Live System User for now, that's a quick way to get started.

Well that certainly was easier than installing Linux ever used to be :) Now we've got Fedora 18 up and running, and humming along fast enough. I just noticed my VirtualBox settings are only giving this Virtual Machine 764Mb of RAM, so I up'd it to 1GB, and also gave this machine 2 Procs so it'll run a little faster.

We're in!
You'll notice this isn't running at full resolution either, it's not taking up my entire screen. That's pretty annoying, but VirtualBox has a way to fix that. Just google "virtualbox larger resolution" and you'll find lots of pages explaining how to extend the size of the window.

Now let's install the OLPC Sugar Operating System locally on this machine, so we can have an area to test our development going forwards.

First we need a terminal window. I was surprised you couldn't right-click on the desktop by default to get a Terminal window, but it is easily found in the "Activities", "System Tools" area.


Ok now, let's follow the very helpful instructions for getting the package of Sugar from the Sugar Development site, and install it to our Virtualized Linux machine.

Now that you've got a terminal open, run the following 3 commands:
1) su (press enter. This puts you into "root" access mode, allowing you to install software locally)
2) yum groupinstall sugar-desktop (press enter, then wait for a while while it downloads) Note: I had this freeze on me at action 46/106, and it stopped installing... I had to do a reboot of the virtual machine and just try again....
3) yum install sugar-emulator

Installing...
Ok this stalled on me a few times and was generally unstable. I decided it was probably a bad idea to be running this "Live System" mode on a Virtualized Machine, so I went through with the rest of the installation instructions listed here.

The installer finished and I had a "real" Fedora install now rather than the sortof temporary "Live System" one, better place to start from. Then I rebooted and things are already looking more reasonable. Things run much faster now.

I tried again to get VirtualBox to do a higher resolution screen but it was taking a while and I ran out of patience ;) It's harder to get that to work than it should be, but I remember getting it going ages ago for another older project. I'll figure that out and post it another time. (Edit: turns out I just needed to change desktop settings in Fedora itself - duh. Should have checked that first).

Building Sugar

Then I decided it was probably wiser to just BUILD sugar from scratch rather than to install it, since I am going to ultimately be modifying activities and testing them anyway. There are great instructions for this here.

First you need git for code repository access. You can install this with:

yum install git-core

Then follow those great instructions on that previous page I linked. This setup is pretty great because all related dependancies are contained within this script and it gets all the related libraries and does an install of everything that is needed. Pretty sweet.

Looks to be working much better than my earlier atempt

Alrighty! Looks like it built perfectly which is awesome. Now I tried to run it... and I got a few errors. Looks like I might have messed something up with my dual monitor setup in VirtualBox, so that might be messing with stuff. I'll try to get that worked out for next time and post the details.

That was a pretty good hack-a-thon to get this off the ground. Soon I'll get it running and then I can start digging into the code for the Activities themselves. Boom!

Friday, January 25, 2013

J.J. Abrams to direct Star Wars Ep 7!!!!

Confirmed as of this evening... J.J. Abrams will be directing Star Wars Episode 7!!!!!! Ahhhhh!!!!!! So amazing:)

http://starwars.com/news/star-wars-is-being-kick-started-with-dynamite-jj-abrams-to-direct-star-wars-episode-vii.html

This is unbelievably amazing news. Oh man he is gonna knock this out of the friggin park!!!!!!

Can't wait :)

- Posted using BlogPress from my iPad