April 2012 Update

As the year rolls along and I continue learning and exploring new things, I’ve come to realize that my initial challenge of creating a complete project each month isn’t working. It’s not for a lack of wanting to do it or lack of time really, but more in that it’s not conducive to allowing me to explore everything that I want to explore. There could be projects that only take a week to put together, while others may take months. Trying to fit it into a 1 month limit doesn’t make sense for me anymore. Especially when a large chunk of my time may be spent learning the next thing, such as the last 6 weeks or so devoted to just learning C++. No projects are coming out in the that time on top of learning a new language.

Read More

February 2012 Project

For my February project, I’ve decided to continue with a project that I’ve already started, but neglected over the last month or two. I don’t want to give everything away, but it’s about taking values from nature using an accelerometer hooked up to an arduino and using the data to create something visually interesting using processing. This is actually a collaboration with an artist that’s also super psyched about this project. He came to me with this idea and I’m here to help him pull it off.

Currently, this project exists as a sketch on an arduino board and 3 different processing sketches that each serve a very specific purpose. One for recording data, one for calibrating the accelerometer, and one for reading and displaying the data. This of course is not an ideal set up, but the processing environment has been great for splitting up the different functions and figuring out each piece separately.

At the end of the month, I hope to have some cool sketches and hopefully something worthy of creating a nice print of. Since this is a collaboration, it might take a few months to get to that point, but this should at least be a huge step towards being able to create some beautiful stuff with this data.

To get there, this is what I need to do:

  • Combine the previous processing sketches into one project/sketch.
  • Create an accurate representation of the incoming data from the arduino so that we better understand the data coming in as well as how it relates to the actual accelerometer movements.
  • Explore ways to showcase the data in a visually interesting way. I hope this will be a series of experiments. I’ll try to post these on my tumblr blog.

January Kinect Project – Results

My project for January 2012 is complete for now. The result is below:

The result is virtual pin art which takes the depth values from a kinect camera and translates them into a depth which is projected for each pin. This was put together using cinder and the kinect cinder block which is the freenect kinect library configured to work with cinder.

There were a few things that I learned, some of them super obvious, but will nonetheless help me make better decisions next time around:

– The kinect has a lot of inconsistencies, especially when it comes to depth data. There are some ways to make things smoother, but you’ll notice that there aren’t too many examples out there that rely on the precise kinect depth values.

– Processing is great for prototyping. Cinder is great for the real thing. Processing helped me figure out what was possible and helped get me there relatively quick, but once I had a lot of particles on screen, things quickly began to slow down and make my processor chug. Once I moved into c++ and cinder, those same processes began to run much smoother.

– Having side projects is hard to keep up with when you have a 1 year old at home and projects to do at work. The is obvious, but not so much when you’re thinking about all the things you want to learn and explore. That being said, I’m still committed to learning and experimenting as much as I can once my first two priorities are taken care of. Who needs to watch crappy reality TV anyway?

I don’t consider this a final piece, but more of a really good proof of concept. Since this was my first kinect, cinder, and C++ project, a lot of the time was learning the capabilities and workflow. I’m obviously not a C++ expert and I know I have a lot to learn, but this was a great way to learn it. For the second phase of this project, I’d like to bring in some 3d textures and shading. Really give it a metal pin art look. I’d also like to smooth out some of the depth map noise. I know I won’t be able to nail that down perfectly, but I’ve read about some methods to smooth that out a bit better within the limitations of the current kinect’s resolution and camera positioning issues. The hope for this is to throw it up somewhere that it can be part of an installation that people can walk up to and interact with and cycle through to see the imprint of previous visitors as well.

To see some of the work in progress, check out my tumblr. Once I clean up the code, I’ll post that somewhere too.

Related Posts:
Project 1 – January 2012
January Kinect Project – Update 1
January Kinect Project – Update 2

January Kinect Project – Update 2

So this week, I actually made some good progress and am close to reaching my goal for this month. After jumping from using processing, to using cinder, I learned a ton. The biggest challenge was the jump into cinder and C++ in general. What took me a few hours to come up with in processing, took 3 or 4 days in cinder since I don’t really know C++, haven’t touched cinder in over a year, upgraded xcode and had to learn my way around it and have come across a lot of other weird errors and stupid mistakes that I’ve been making.

Luckily, I have the author of cinder, Andrew Bell, now working with me at The Barbarian Group again and has been a good sport with answering my silly questions and helping me though some of the learning process. If he wasn’t around to help me out, I’d probably be another week behind where I want to be.

So as far as progress goes, here’s a sample of some screenshots from the processing and cinder experiments.

I’ve been able to come up with a good proof of concept that what I had in mind will work and I just need to tidy it up and make it look good so that I can video capture it and write up my learnings. I’ve realized that with this project, I still have more to do, but there’s enough that it can be another month’s worth of side project, so that’s what I plan on doing. But first, I need to read up more on c++ and get more familiar with cinder. So then next blog post about this project will be the last for the month and will summarize what I’ve learned and showcase the output for this stage of the overall project.


January Kinect Project – Update 1

So far, this month’s project is not moving along as quickly as I had hoped it would, but it’s ok. With the time I have had to work on stuff, I’ve already learned a lot. And because of what I learned, I’ve concluded that I have to modified my goal a bit.

To get going with this project, I’ve read a good chunk of Making Things See, which is an amazing starting point for anyone new to the Kinect, especially because it uses processing as the teaching environment. Through some of the examples in the book, I was able to piece together a quick little program that enables me to only grab image data that is within x distance and disregard the rest. It wasn’t a very complex program to put together, but once you have it working, the kinect’s limitations are obvious. At this point, it’s not perfect. I had in mind that you’d be able to easily mask out anything in the foreground, but there’s so much noise that it’s impossible to get any sort of clear defining outline. I feel like somehow averaging a person’s outline along with doing some image color comparison processing, you could get to a good point. The other problem is that the kinect’s rgb camera is also not very high-res, so even if you get close, the image isn’t going to look great.

My hope in the future is that there will be a kinect update with higher res and more depth data. In fact, I heard that an updated kinect is coming out very soon, though we’ll have to see what kind of improvements it really has. In addition to an updated kinect, I’d like to figure out if there’s a way to capture a photo with a decent DSLR and match up the data from the kinect with that to do be able to get some decent photos.

So after coming to these conclusions, I’ve decided that there were two directions I could move in. I could either continue exploring this project knowing that I have some pretty high technical fences to jump or I can take what I’ve learned so far and come up with a new direction to move in that’s more feasible. I’ve decided to pursue the second route, which entails using the kinect depth data in a way that could be visually cool and fun to play with, while also having the potential to be a nice little installation. This route also would include the use of a little openGL, which I’ve wanted to learn more about too.

More to come soon.

See Project 1 – January 2012

The Year Ahead 2012

In the last few months I started checking out 750words.com and healthmonth.com, both which were started by Buster Benson. I’ve been participating in both of them daily and in turn it’s inspired me to carry through with some of my goals and to put them out there for everyone to read if interested. I must say that I do this with some hesitation after watching this TED talk about the success of reaching your goals when you tell people about them. But I think putting it out into the world is part of reaching your goals at the same time. So I plan on revealing some of them without getting too specific. Maybe that will strike the balance between pronouncing your goals to the workd and keep your mouth shut.

After looking back at what I learned and the work I’d done in 2011, I realized that there were some things that I want to change in 2012. One of the major things is that I want all of my learnings to actually produce something. Not just a folder of tutorials. I learned a lot last year, read a lot of books and whatnot, but I feel like a lot of what I learned will probably disappear as a result of not doing anything with it as it often does and has in the past. To (attempt to) resolve this issue, I’ve come to the conclusion that I want to release some sort of project every month. I know that it seems kind of ambitious and maybe not reasonable, but I’ve come up with some rules to help myself move along.

For each project I must:

  • Decide on the next month’s project the week before the first of the month.
  • Learn something new.
  • Either create something new OR make a significant improvement to a previous month’s work in an obvious way.
  • If a project only takes a week or two to complete, even better. Don’t rush to start the next month’s project. Enjoy your time off.
  • If a project takes more than a month to complete or I just drop the ball, that’s ok, but it must be finished the following month or I must take a step back and re-evaluate to see if it can be turned into a finished project at a later time.
  • Blog about my progress a few times a month.
  • Blog about the end product at the end of the month.
  • Not work when on a planned vacation.

The purpose is to find a curriculum that works for me so that I can learn and explore as many things that interest me. And there are a lot of them. This one project a month goal will serve a few other purposes too. It’ll force we to keep learning things, it will help dissuade me from taking on freelance that I don’t want to take on, and it will force me to blog more often.

My next post will describe what the project for January is. I’ll put out a loose timeline that I plan to stick to. The point of this is that it’ll give me smaller goals to stick to and should help keep me accountable for the ridiculousness that I’m about to take on.

Some topics I hope to explore a bit more include but are not limited to:

  • kinect
  • processing and OpenGL
  • javascript / HTML5 canvas
  • cinder and c++
  • flash games
  • iOS apps
  • arduino and physical computing
  • lots and lots of particles

Wish me luck.

2011 Work in Review

2011 was an interesting year for me professionally. It was my first one where I was employed for all 12 months by The Barbarian Group. There was minimal freelance work and the stuff that I did do was chosen very carefully. This year was devoted to learning a lot of new things. The reasons for that are:

  1. I am primarily a flash developer and there are fewer projects for me to work on
  2. There are so many other exciting things to also learn and I’d hate to pidgeonhole myself into only being able to work on one type of project
  3. Mobile has been exploding and I wanted a piece of it
  4. Learning is funsies. For real. I like to learn knew things and the more I learn, the more I want to learn and the better I get at the things I already know

Let me just explain real quick about the first point. I just want to put it out there that I still love flash. I think that it’s still a viable platform for many things, unfortunately it’s a matter of fact that there’s fewer and fewer projects that require it. That being said, I’m not bitter about it. There’s so many other things that can be done that it just doesn’t matter if you were a flash dev, unless you think it does. I’ve started learning so many other things that have built on my flash knowledge that I’m not really worried that it was a waste of the previous years that I spent using it.

Here’s a summary of the different kind of work I’ve done throughout 2011. Before I continue, I just want to acknowledge all of the awesome people that made a lot of these projects possible and helped me learn a lot of what I learned. TBG has some fine ass developers, designers, producers, strategies, UX people, etc, etc, etc.

At The Barbarian Group, the first few months of the year was spent concentrating on developing a flash app for Kashi, dubbed SevenWhole Grains on a Mission. It was a nice little project that had some fun after effects video transitions and incorporated swfaddress significantly. As a warning, the current version of the project might not work as well as it once did since the site was handed over to another company. It still looks pretty though.
Link: http://www.kashi.com/meet_us/seven_whole_grains
Blog post: http://barbariangroup.com/posts/7827-kashi_seven_whole_grains_on_a_mission

In the spring and early summer decided to take a crack at learning android development and  created my first android app, Gastrodamus. It was an internal project for TBG whose main purpose is to find the nearest food truck in your city based on a truck’s tweets. There is also an iPhone version that this based off of. It was a fun little project and I learned a ton. The Java syntax and ways of doing things helped a lot with some of the processing work I did later on in the year. I’ll admit that it’s not perfect, but I hope to go in and do an update in 2012.
Link: http://gastrodam.us
Blog post: http://barbariangroup.com/posts/8856-gastrodamus_for_android

Throughout the year, I worked on a website for my mom. It’s a wordpress site that was designed and developed by myself in addition to designing her logo. I’ll admit, I haven’t done interface or logo design in a long time, so it was a bit intimidating. It was fun, but not where I want to spend most of my time. Same thing goes for developing front-end and wordpress sites. Actually, the html/css stuff was fine, it’s more just the overall process of building a wordpress site that’s not my cup o’ tea. But I’m glad I was able to help my mom out with her new business.
Link: http://www.ihealthcoach.net/

Early summer included some work for an episode of The GE Show that The Barbarian Group put together throughout the past 2 years. I was psyched to be included in the making of one of these, since they always turn out so awesome. I got to work on a flash-based map and online what-your-parents-shagged-to poster that went with it. This was a nice little piece that included the challenge of dealing with a lot of data without the use of a database what would also load quickly. Hard coded massive arrays was the answer.
Link: http:www.ge.com/thegeshow/visions-of-health/#ch3
Blog post: http://barbariangroup.com/posts/9085-the_ge_show_episode_7_visions_of_health

In late summer right before fashion week in New York, a few weeks were spent working on a fun installation for the Hudson Hotel. It was a flash based installation that was projected on 12 adjacent walls whose content was driven via a tumblr blog.
Blog post: http://barbariangroup.com/posts/9075-fashion_week_at_the_hudson_hotel

During some of my downtime, I helped put together a fun little game based on our IT department at TBG. It was only about a week or two worth of dev time and was put together without any sort of framework. It was old-school style of flash programming.
Link: http://itherogame.com/

In the more recent months I’ve spent a good amount of time working on processing sketches and learning some fundamental creative coding techniques. This is where I plan on spending a lot of my time next year. I put together tumblr blog where I post a lot of stills from my sketches along with any other drawings or anything else I come up with there, not strictly processing stuff.
Link: http://thegrego.tumblr.com/

In my processing learning, I also came up with an idea to learn how spider webs were made. I did a processing version, but then realized that to do what I really wanted to do (which is still in my head and on my todo list), I’d need to do a version in javascript. So I spent some time learning and playing with some javascript canvas tutorials and examples so that I can get a version of my webs online.
Link: http://www.gregkepler.com/work/js/spiderwebs/
Blog post: http://www.thegrego.com/2011/12/06/charlies-web/

Also, in my processing journey, I felt the need to explore some of my genealogy and put together the first of what will hopefully be a series of genealogy-based projects. As I learn to deal with a large amount of data and some beter visualization techniques, I have some high hopes that this will be a really cool, really expansive project in the future.
link: http://gregkepler.com/processing/family_lifespan/
blog post: http://www.thegrego.com/2011/09/25/kepler-family-life-spans/

I also spent some time learning arduino and integrating it into processing. I hope to have some progress on the project that I’m working on in the next month or two.

Stay tuned for my hopes and goals for 2012.

Kepler Family Life Spans

Family Lifespan Project

Kepler Family Life Spans is my first original data visualization using processing. Since the summer,  I’ve been more interested in processing as a tool, data visualizations and generative art as well as my own genealogical history. So naturally, I wanted to figure out some way to visualize some of my family data. This project enables you to select a year starting with the earliest birth year that I have for my ancestors that I have a birth date and death date for. For each year, you can see the average life span for my family at that point all the way up to 2011. When a person dies, their representation goes red and stops progressing in age.

With this little project, my goals were to learn how to integrate data into processing, use the geni.com API to grab my genealogical data, and create something that was visually interesting. Because I was concentrating so much on the data aspect, it ended up not being as visually interesting as I planned on, but now I’m better equipped with the “how”, so that next time, I can concentrate on the cool factor a bit more.

As for the some interesting conclusions that I’ve come to, you can see the expected rise in average life span, thank goodness. In fact, the oldest person that has passed away was this year, with my grandmother at 96 years old. Also in the recent years, I thought it was interesting to see a 10 year gap in new babies, where with a family where I have cousins almost as old as my parents and as young as their mid 20s, I thought that there would be a baby born every year or two. Of course this data probably isn’t all that interesting to anyone outside of my family, so that brings me to what I plan on doing from here.

Since this data comes from what I’ve included in my geni.com account, I plan on making my work public so that other people can plug in their geni credentials so that they can come to their own conclusions. And with that, I will also need to make a javascript version or app so that people can actually use it. I also hope to figure out ways to improve on this and keep it updated as well as continue exploring how to visualize this data in interesting ways. I’m sure that there are more fun and interesting conclusions that can be found from this data too.

In the next post, I’ll go into what went into making this and what I learned from the process.