Cover photo
Christopher Schmitz
Works at Defy Media
Attended University of California, Irvine
179 followers|88,962 views


Christopher Schmitz

Google I/O attendees  - 
I think the NFC tag wall on the South side of the office hours tent (South West corner of Zone D) is the best use I've seen of Spaces (the session spaces I've joined weren't that useful).
Rahul Shukla's profile photoIvan Yudhi's profile photoAllen “Prisoner” Firstenberg's profile photoHenry Mundell's profile photo
I believe it was at the "What's next for the web" session (Day 2, stage 2, 4-5 pm) that Chrome support for interacting with Bluetooth LE devices was featured, and the crowd seemed quite impressed. I think there was a missed opportunity to better highlight the great IoT potential at I/O.
Add a comment...
It appears Google Cardboard is part of the welcome package, which is a bit surprising given the rumors of a standalone VR headset and/or a more sturdy version of Google Cardboard. There have been pretty consistent leaks about an impressive upgrade to VR by Google, so why would they give out the last gen version to attendees? I'm wondering if the big improvement is just adding the Tango Phone to turn it into an AR device, since the sessions keep talking about Tango and AR. What's everyone else's take on it? Anyone who's gotten the Google Cardboard check to see if there's anything special about the NFC chip (assuming they included one)?
Mark Conway's profile photoChuck Hirstius's profile photoChristopher Schmitz's profile photo
Just saw a pic of the Google Cardboard headset they're giving out and it looks like the v2 released last year, which means capacitive tape button on top and no camera cutout (v1 had a cutout). That means no AR support, so it probably is just a teaser device for use during the kickoff, as +Wayne May suggested. They must be doing a 360/3D video during the kickoff like Samsung did, so I'll definitely need to dust off my cardboard (too bad I can't be there in person the first day).
Add a comment...

Christopher Schmitz

Shared publicly  - 
I had this article saved and thought I'd share. Ozobots are a fun way to try out coding for the first time, but for anyone who doesn't want to shell out for one has a lot of great introductory code examples you can do online.
If you’re planning on creating an Android app, then you should of course learn to code. While it is possible to create apps using other means, building it yourself will give you by far the most flexibility and control over the finished product. But that is only one of many scenarios where learning to program is hugely beneficial. App or no, it is my belief that everyone can benefit from learning to code. Programming is like a superpower that a...
Add a comment...

Christopher Schmitz

Shared publicly  - 
Ozobot Programs: Function Library
While writing Ozoblockly programs I found myself repeatedly writing the same code, so I decided to create common functions which I can reuse like a code library. You’ll find these in all my programs, including the color search game I made ( I usually keep these functions collapsed and on the left, disabled if my current program isn’t using them, which keeps them from using up code units.

I suggest loading in a function library project before starting a new program. If you find useful functions after you’ve already started a project, you can add them to your existing project by following these steps:
1) Save all the functions to a separate project
2) Convert your current saved project and library project files to text files (in Windows just add “.txt” to the end)
3) Open the project files in a raw text editor (notepad in Windows)
4) Copy contents of the library project and paste them to the end of your saved project and save
5) Convert your projects back to ozocode files (ex. remove the “.txt” extension)
6) Open your saved project file in the blockly editor & move the library functions wherever makes sense. You may want to collapse everything when doing this, because some functions could be hiding behind others. It’s also important to check the variable names, especially if the loaded functions use global variables.

Here are quick descriptions of the library functions in my projects:
color selected
This function will wait for the user to select a color by holding the Ozobot over that color for 3 seconds. The LED color will flash the specified color while the Ozobot is over the matching color, until the color has been selected. This is safe to use as if conditions because there’s a quick check at the start to see if the current surface color matches.

color selected stoplight
This is like the “color selected” function, except instead of flashing the selected color, it flashes red, yellow, green. I like to use this to indicate starting a game, which helps to ensure that all Ozobots start at approximately the same time. If the timing is off you can just lift up the Ozobots and try again.

color selected internal
I use “internal” to indicate that you shouldn’t directly call a function. This function holds the shared logic for the “color selected” and “color selected stoplight” functions.

set light color
This sets the light color of the Ozobot using a surface color value. This is used by “color selected internal”, but I’ve also used directly in the color search game.

set speed
This sets a “speed” global variable to the specified value, while also updating the Ozobot speed to the same value. I used this in another program where changing the speed was common, which took code which cost 9 code units, and made it only 6 code units to call (3 for the function call and 3 to set the parameter value). You more than make up the difference after 4 calls to this method, not to mention having cleaner code.

flash value
This function can be useful in debugging. Since Ozobot has no way to report internal values back out to you, it can be difficult to know what’s going on inside it. When you pass a value to this, the function will flash red once for a negative value, green for the value / 10, and blue for the remainder of value / 10. For example, if you saw red, green, green, blue, blue, blue it would mean -23.

flash color
This is used by “flash value”, although it can be a helpful function by itself. This will flash the specified color the given number of times. The Ozobot LED will be off after this is done, unless flash was 0.

test colors
Technically I consider this a program, since it’s intended to be run by itself, but it’s in the library section and is too small to warrant its own post. This function will update the Ozobot light color to match the surface light color. This is useful for testing new markers to ensure that they register the correct color. I also added a sanity check to set and keep the light color orange if an unexpected surface value was returned. I haven’t experienced this before, but I have gotten a program crash when an Ozobot got stuck in a corner, so just in case that was the cause I included this.

wait for reset
This function waits for the user to move their Ozobot after a color had previously been selected. It's especially useful in conjunction with the color switch code below it.

color switch
This actually isn’t a named function, but a “repeat forever” block below "wait for reset". It’s intended as an example of allowing the user to select different code to run by moving the Ozobot over a different color. This has been useful in debugging, so I didn’t need to keep reloading the Ozobot to switch behavior. The different cases are a good place for “wait for reset” (once it’s fixed”.
Add a comment...

Christopher Schmitz

Shared publicly  - 
Intro to Ozobot Programming (Ozoblockly)

An Ozobot is a small robot with wheels and color sensors on the bottom, intended to be used as an easy introduction to programming concepts. Ozoblockly is the programming language used to program Ozobots, based on the Blockly language developed by Google. Even without Ozoblockly, you can instruct an Ozobot to do things using a color code language as it follows lines, which is the default behavior. Once you dig into Ozoblockly you can give it preprogrammed instructions, choosing difficulty levels from 1 of 5, with the most advanced currently available (4) supporting most expected features from a basic programming language.

There are lots of great programming exercises on to help kids and others new to programming better understand programming concepts, but as a professional programmer I wondered how far I could push it. I found plenty of limitations, but was still able to generate some sufficiently advanced novel applications for my Ozobot to run. The one I’ll share today is my color search game, which you can download at, and load onto your Ozobot at You can check out some sped up videos of my Ozobot running it at

In this game the Ozobot uses one of 3 movement styles selected by the user (by placing it over red, green, or blue before starting) and tries to find all 3 main colors in the playing space (again, red, green, and blue). The play space, as well as walls, is defined using black lines. You can also spice things up a bit by adding one of the 3 alternate colors (yellow, magenta, and cyan) as walls which the Ozobot can only pass if it’s collected the inverse color of the wall (i.e. it can only pass a yellow wall if it’s collected blue). As it collects colors the Ozobot adds the color to its light, then flashes and spins when it finishes collecting all colors.

The code for the game is outside the scope of this post, but I’ll be going into more detail about it in future posts. If you’d like to try out the alternate colors I also recommend testing out your markers using my color test program (download at, which will change the Ozobot color to match the color it detects (don’t forget to calibrate first). I’d be happy to see anyone else’s play space designs, so add a comment with a video or picture link if you make your own.

P.S. In the Ozoblockly code I linked to you’ll also fine some disabled helper functions. If you’re interested in making your own complex programs you may want to use load these up first, and check back for future posts about advanced Ozobot programming. I’ll be posting all my new code to my shared Google Drive folder at
Add a comment...

Christopher Schmitz

Shared publicly  - 
Gear VR vs. Cardboard

I wrote a comparison of Samsung's Gear VR to Google Cardboard in the comments for an article and I figured I'd share it here too for anyone who's interested:

I got my Gear VR in December I've been loving it ever since (got Cardboard a couple months earlier).  The Gear VR is definitely more than an expensive version of Cardboard.  The most obvious hardware difference is the trackpad and back button, but that's not the real value.  Really, the biggest hardware difference is the fact that the Gear VR has it's own position sensors.  It sounds like a small thing, but in most cases it eliminates ALL image position stuttering (the VR world not matching your head position), which means it's much less likely to make you sick.  On Cardboard, the position sensor data is all processed on the phone, which is already working hard to display dozens of frames per second.  For most videos this usually works fine, but for apps that generate their own frames (i.e. dynamic content like games and simulations) you'll usually see some stuttering.  For videos you can probably get away with just Cardboard, but you'll need Gear VR if you want more.

As far as software goes, it's true that there aren't a lot of full apps for Gear VR (a few dozen), but most of them are pretty good and a few of them are great.  Some games are definitely waiting for payments to be enabled by Samsung/Oculus before releasing a full version (I'd be happy to pay 3x my usual app price limit for some of them), but there are still some very compelling and complete apps.  Here are a few of my favorites:

* theBluVR - This is my go-to example for showing people the Gear VR.  The graphics aren't great, but the immersion is perfect, and it's a well curated exprience (like a museum exhibit).  It's also not too long for people who just want to try it without learning how to use the input.
* Strangers with Patrick Watson - This is the best example I've seen of 3D/360 video.  You really feel like you're sitting in the studio (complete with a dog) getting a personal performance.  Unlike some other videos, I didn't notice any image stitching (from combining multiple cameras for 360 videos), which causes strange effects when you generate a 3D video.
* HeroBound - If you like dungeon crawlers like Legend of Zelda you'll love this.  The game cleverly puts you in the same room as your character (usually against a wall, unless it's outside), allowing you to watch your character as he battles his way from one side of a room to another.  The scenery from room to room is great, without too much duplication (some, but it's not excessive).  In the demo available now you get 3 different weapons (plus strength upgrades), 2 full dungeons and 1 small dungeon with a big boss.
* Darknet - A pretty good puzzle game that doesn't seem to be a demo.  The only problem with it is that the play sessions are pretty long (you try to complete a game board in a time limit), but I think there's a way to pause it for later.

I could list 3x as many that I liked, but many of the demos are a bit too short for me to feel satisfied.  That said, it's a great showcase of what's to come.
Add a comment...
In his circles
20 people
Have him in circles
179 people
Gaurang Patil's profile photo
Dan Grayson's profile photo
Joseph Harte's profile photo
Debbie Fink's profile photo
Domenica Liberti's profile photo
Mizan Habibullah's profile photo
Nils Devine's profile photo
Linton Ye's profile photo
Ben Handzo's profile photo
#io16request Why wasn't Google IO pushed back until Fall if most new things won't be available until then anyway? At least then developers could get hands on with new tech instead of just being told it's coming. If you want to do a press conference do it on your own time, leave developer events to things we can get our hands on now.
Jason Newman's profile photoDave Finnerty (TheMadAdmin)'s profile photoChristopher Schmitz's profile photo
+Dave Finnerty Android N was already in developer preview, Firebase already existed (they rolled in other services like GA & bug tracking), and Android Studio is a minor update (I guess the layouts were cool)
Add a comment...
Hey Google, how about you stream the filmed sessions and various locations around the convention in 360/3D so people with Cardboard can virtually attend?
Mike Wolfson's profile photoChristopher Schmitz's profile photo
I'd think so too, but they haven't said anything about people getting a Cardboard to get ready. They could surprise people, but by that point only people who have one already could enjoy it. I figure they'll have a camera or 2 set up in the hall, or they'll release a short tour, but that's not quite the same thing.
Add a comment...

Christopher Schmitz

Shared publicly  - 
Ozobot sale!

You can get $10 off an Ozobot while they're still on backorder (promo code Ozobot10), bringing the price down to $40 for the Ozobot Starter Pack. Keep in mind that you won't be able to code it (other than a 14 day trial) if you don't pay another $10 on So if you plan to get just one Ozobot it's the same price as the Ozobot 2 Bit. If you plan to get more than one I recommend a couple starter packs, because you only need to pay once, making it only $100 in total for 2 starter packs after discount, compared to $105 for a Ozobot 2 Bit Dual Pack after discount.
Welcome to our store! Ozobot is a multi-award winning miniature programmable toy robot. Play smart games and learn to code with Ozobot.
Add a comment...

Christopher Schmitz

Shared publicly  - 
Advanced Ozobot Programming: Limits

It’s obvious that given its size and price the Ozobot is going to be pretty limited. The biggest limitation to advanced Ozoblockly programming is code size. This size is enforced by the Ozoblockly editor, which won’t let you upload programs that exceed a certain size. As experienced programmers might expect, different operations (blocks) have different costs. I deduced the size of many of the operations, and that the maximum size is 882 units (where the smallest blocks have a unit size of 1). I listed the sizes for the blocks I measured at the bottom of this post.

There are some points to keep in mind if you’re running up against the size limit. One thing to keep in mind is that some operations are VERY large, and some can even be done more efficiently a different way. For example, you can use a “turn off LED” block for 7 units, or a “set LED color” block set to all black for 4 units. The default for the set LED color block is to be expanded (each color on a separate line), but you can right click and change it to inline for a block which is almost as clear as “turn off LED” at just over half the unit cost.

Another thing to consider is that unlike modern compilers, the Ozoblockly editor uses EXACTLY the blocks you give it with no optimization. For example, < and <= cost 1 unit more than > and >= (presumably because it’s translated to “not >=” and “not >” internally), even though this could be optimized by just reversing the order of the parameters. In a similar vein, Ozoblockly doesn’t stop once it knows the value of a boolean equation, unlike most other programming languages (i.e. “false && function” will still call function). This can be very unexpected for experienced programmers.

One big limit which is quickly obvious is that integers don’t extend beyond the range -128 to 127. Fortunately the bounding conditions don’t need to be checked, because trying to multiply 127 by a value of 1 or greater will return 127 (same goes for addition/subtraction). When I’ve needed more than 127 I’ve used multiple variables to simulate things like countdowns. Just remember that you can’t do something like try to multiply 2 large values together and use the result directly. It’s not storing in a variable which imposes the value limits, those are placed on all numbers.

There are also some things which you don’t need to worry about with Ozoblockly. First off, type safety isn’t enforced. Some blocks can’t be attached to eachother because they’re different types (ex. using a light color in a boolean equation), but once you assign the value to a variable you can use the variable for anything. As expected, boolean values of false/true are 0/1 respectively. Surface colors are expressed from 0-7, with each of the first 3 low bits representing a different color set to max (red=001, green=010, blue=100). The default value for anything, which is used if you don’t specify a value, is 0/false/black.

One thing to remember when optimizing is not to underestimate the use of functions. In many cases, if you use the same code multiple times a function can save on code size because the function definition only costs 1 unit, and calling the function only costs 3 units, with an additional 3 for each parameter. Returning a value from a function also costs 3 units. I’ve even used functions to call a function with a specific parameter, so we only pay the parameter unit cost once, instead of each time the function with parameter is called. You can also optimize function usage in some cases by eliminating function parameters or return statements and use global variables instead. It’s important to note that if a variable is declared as a function parameter it’s local to that function, not global, so changes to a variable of the same outside the function do NOT change the variable used in the function.

If a crash occurs you’ll see the Ozobot flashing between green and red. This can happen when the Ozobot tries to do things like dividing by 0. These can also pop up at unexpected times, and it appears there may be some crashes caused by correct code, indicating that there are still some bugs in the Ozobot, or at least Ozoblockly. I’ll talk more about bugs and potential improvements in my next post.

0 (implied values)
positive #
surface color
intersection/line-end color

negative #
function definition (excluding return)
absolute/reverse sign
get surface color
get intersection/line-end color
get current line following speed

# = #
# > #
# >= #
# + #
# - #
# x #
# / #
wait ms
wait seconds (< 1)
terminate program
is odd/positive/negative
remainder of

set variable to #
repeat forever
# != #
# < # (optimization possible)
# <= # (optimization possible)
function call (no parameters)
function parameter
function return
is even/divisible by
random integer
set wheel speeds
stop motors
move distance
rotate angle
set following line speed
there is way left/right/straight/end
rotate [slight] left

set light/LED color
rotate [slight] right

change variable by #
rotate u-turn left

else if
turn LED off (optimization possible)
repeat while

repeat until
rotate u-turn right

set random light color

repeat # times
wait seconds (> 0.9)

follow line to next intersection

move forward until line

pick direction

big/small circle forward left

big/small circle forward/backward right

big/small circle backward left


count with i (optimization possible: reduce to 20!)

skate forward
police car lights

skate backward

spin left

spin right

Christopher Schmitz's profile photo
A couple other quick tips:
1) Don't multiply by -1. Negative numbers and multiplication both cost 2 units (4 total), when you can just use "reverse sign" (the alternate of the "absolute" block) for just 1 unit!
2) When possible, use > instead of !=. It saves 1/3 of the unit cost (2 units instead of 3).
Add a comment...

Christopher Schmitz

Shared publicly  - 
What a Calorie is and how to count nutrients better...

I'm going to try to keep this as fact based as possible, but some of it will also include speculative information, based on my research online.  The field of digestive/nutritional health seems to be the least scientific of the medical sciences, filled with opinions, unfounded ideas, and flat out misinformation.  This is probably due in large part to the influences of special interests, authors without proper education in the field, and the sheer complexity of researching it.  That said, there are some facts that can be stated and some myths that can be put to rest, and that's what I aim to do.

Let's start off with the Calorie (or kilocalorie, which is why the 'C' is capitalized).  It's important to understand what it is before we understand how/if it relates to our digestion.  A calorie (little 'c') is the amount of heat energy generated when burning a substance, measured by heating up water (1 cubic cm raised by 1 degree = 1 calorie).  If you knew that already, you may think that they do this to determine the calories in all food, but actually they just use an equation based on the average Calories in what makes up the food: protein (4 Calories/gram), carbs (4 Calories/gram), fat (9 Calories/gram), and alcohol (7 Calories/gram) (  It's important to note that there's some variation in this distribution on packaging (meaning Calories can even be subjective based on the calculation used).

Now that we know what a Calorie is, let's ask the important question of how it relates to our digestion.  I actually couldn't find any scientific explanation or justification explaining why burning food should be equivalent to our body breaking it down into different nutrients, and I believe that's because it isn't.  We hear people talking about burning Calories all the time (ex. running burns X Calories, etc.), but our body doesn't burn anything, it uses the nutrients from the broken down food to support our biological systems.  Maybe it's easier to believe that we burn Calories because we get so hot while working out, leading some to believe the hotter you get the more Calories you've burned, but this too is just a myth, as how hot you get is based on a combination of how hard your work and what kind of previous conditioning your body has.

At this point, die hard Calorie advocates will no doubt be screaming that Calories-in/Calories-out works, so how can Calories be a myth.  My best guess at how people still claim it's a perfect measurement is by introducing an explanation for variations: metabolism.  I haven't done as much investigation into what metabolism is, but from my understanding it's the efficiency with which your body breaks down and uses nutrients from food.  This is probably influenced by the acidity of your stomach and balance of bacteria in your intestines, making it a complex factor in digestion.  Because of its complexity, it's easy to blame variations in the Calories-in/Calories-out equation on metabolism.  Since it's unlikely anyone can keep up with changes to their actual metabolism, we need a way to measure nutrients that exclude this X factor, and are more accurate than generic Calories.

If you're still not convinced to get off the Calorie bandwagon, then consider if you were to get all of your calories from fat; you'd obviously be malnourished.  Instead, follow the lead of how Calories are calculated, and just calculate your own ratio of nutrients based on the grams of each.  The Calorie model puts protein and carbs at the same level, but I found an article online (possibly Atkins biased) which said that excess protein is flushed from your system, while excess carbs are converted to fat.  It also said that our body can synthesize carbs (or at least what they break down into) by combining protein and oils (ex. Omega 3s), so protein may not even be required with enough protein and oil (which it said wasn't much).  I don't have corroborating evidence for this, but I've seen plenty of information stating that sugars and other simple carbs are broken down so fast that they're more likely to be converted to fat.  Because of this, I suggest focusing more on protein and less on carbs, especially sugars and simple carbs, which has the added bonus of improving your oral health too.  You can either track each type of nutrient separately, or calculate a new adjusted Calorie value to favor protein (ex. 1/6/9/7 Calories/gram, in the order I listed before).

The big takeaway from this should be that Calories are simply calculated based on the weight of different nutrients in food, distributed based on an antiquated system of burning food to calculate heat energy.  Instead, we should count what we eat based on how much our body needs each nutrient.  If you're working out, you're probably going to need a lot more protein, so counting the protein you need while working out will probably be more accurate.  To be clear, I'm not advocating eliminating carbs, especially from fruit and vegetables, or eating lots of fatty protein like red meat, but perhaps redistributing the focus may make ensuring you're properly nourished easier and make dieting more predictable.

#calories   #nutrition   #protein   #diet  
Add a comment...

Christopher Schmitz

Shared publicly  - 
People vs. Policy...

This week my mother-in-law died unexpectedly.  We'd already rushed into town to see her after hearing she'd been hospitalized, so we're staying for the funeral this weekend.  During this difficult time many people have reached out to me and other family members to offer their support and condolences.  I also noticed everyone in the family making an extra effort to be kind and understanding with each other.  In stark contrast to this have been a couple instances where people were much less supportive and understanding, both of which have their roots in policies.

The first instance was with my niece, who's currently in college out of state.  She too flew back immediately and was planning to stay for the funeral.  She had some tests coming up, but most of her teachers said she could make them up.  Unfortunately, one teacher said they only excuse absences for school functions, which is required by school policy.  The morning after being at her grandmother's side as she passed she was on the phone with various student organizations trying to sort everything out, each of which said it's up to the teacher's discretion and that this isn't uncommon.  Her mother also tried calling all the way up to the dean of the school, being very upset by the lack of flexibility, especially given their hefty tuition bill, but she got the same response about the school policy; even being told that another student is currently in a similar situation after having her own mother die.

Ultimately my niece decided that her grandmother wouldn't have wanted her grades to suffer, so she was forced to fly back and do her best to take the test after limited studying.  What was especially frustrating was that re-taking the test is possible for school functions, as the teacher stated, but that the teacher chose not to be understanding.  The teacher is technically completely within his rights to deny a make-up test, but that doesn't make it the right thing to do.  If he's concerned about students abusing such excuses to get more study time he could ask for a note from the funeral home, like she's providing to other teachers.  If it's fairness to other students he's concerned about he must be living in a bubble, as each student has different ability to study due to different schedules, and it's not like my niece would have been cramming at the funeral anyway.

The next instance was with my work.  I knew we got bereavement time, which was nice to be able to take without needing to worry about how much time off I had left, even though I still ended up taking 2 more days to get the full week (they only cover 3 days).  When I read the policy online it said it covered immediate family, and even gave the examples of parents, spouse, and siblings.  I had assumed that being married meant that my wife's family was included in that, but it turns out I was wrong and will probably be forced to use time off to cover the whole week.  I know some people don't get along with their in-laws, but that's not the case with me, and even if it was I'd want to be there for my wife.

This realization about my time off actually got me thinking more about how adequate the policy is in general.  At first 3 days sounded reasonable, but it's really just enough time to fly in, attend the funeral and grieve with family, then fly out.  That's actually the sort of thing I'd do for a friend or distant relative, but I can't imagine going back to work the same week that anyone in my immediate family died, maybe not even the following week.  In such an emotionally charged time, an inadequate policy like this can actually be more of a frustration than a comfort, possibly even irreparably souring an employee or spouse on a company.  I understand that companies need to limit the possibility of employees taking advantage of such policies, but limiting bereavement time to a minimum and arbitrarily drawing a line in the sand of who they're allowed time to grieve for if they don't have time off is unreasonable.

For me the takeaway is that while policies can be good to clarify what's acceptable, they can sometimes be used as an excuse to suppress the otherwise naturally compassionate response.  I'm sure if my company's policy was to leave bereavement time up to the discretion of my boss he'd tell me to take the time I need with my family; he's already said he'll work with me and HR about this.  For my niece, perhaps a school bereavement policy is needed, although I still think explicitly setting date and relationship limits will discourage compassion in favor of a one-size-fits-all standard.  In addition to hurting those involved, favoring standardized policies over individualized compassion hurts trust and motivation with the organization enforcing the policies.  This reminds me of a TED talk I watched recently about "Why good leaders make you feel safe" (, largely because they foster trust and mutual respect.

While I mostly wrote this to get it off my chest, I'm also hoping to shed light on a potential problem most people aren't aware of until they need to deal with it.  I encourage everyone to reach out to their work, schools, or any other organizations they participate in on a regular basis to find out their policy on bereavement.  If it's inadequate, I encourage you to speak up and try to improve it, if not for you than for your fellow coworkers, students, and friends.  You may want to share this with them to help them understand how important this issue is.  For organizations there's a minimal cost, but it can have a huge impact when someone is grieving.  Thanks.
Add a comment...
Christopher's Collections
In his circles
20 people
Have him in circles
179 people
Gaurang Patil's profile photo
Dan Grayson's profile photo
Joseph Harte's profile photo
Debbie Fink's profile photo
Domenica Liberti's profile photo
Mizan Habibullah's profile photo
Nils Devine's profile photo
Linton Ye's profile photo
Ben Handzo's profile photo
Collections Christopher is following
Basic Information
Looking for
Friends, Networking
Other names
Chris Schmitz
An inventor, currently masquerading as a software engineer in the mobile industry
  • Defy Media
    Mobile Development Manager, 2012 - present
  • nProgress
    Senior Programmer, 2011 - 2012
  • Citysearch
    Mobile Developer, Android, 2010 - 2011
  • Javaground USA, Inc.
    Sr Tools Engineer, 2006 - 2010
  • Fountain Valley Music Center
    Saxophone Teacher, 2002 - 2006
  • University of California, Irvine
    Information and Computer Science, 2004 - 2006
  • Golden West College
    Game Development, 2004 - 2006
  • Orange Coast Community College
    Computer Science, 2000 - 2004
Christopher Schmitz's +1's are the things they like, agree with, or want to recommend.
Camera Streak

Unleash your photographic creativity with Camera Streak. This app lets you simulate long exposure photographs and pictures with multiple exp

Damn You Autocorrect – FREE

You love Damn You Auto Correct on the web... now enjoy it on the go with hundreds of funny screenshots of auto correct fails on this new app

Street View – Google Maps

Google Maps with Street View lets you explore places around the world through 360-degree, panoramic, and street-level imagery. You can check

World of Goo

----------- *** 40% off until December 5 *** - "iPad Game of the Year" - TouchArcade, MetaCritic - "Wii Game of the Year" -IGN Beautifu



Funny Videos and Pics by Break

The guys behind, the #1 Humor Site on Earth, bring you a FREE app that’s not just funny videos, it delivers the very best in aweso

GameFront: Video Walkthroughs

***This Android app is a FREE, massive library of video walkthroughs for tons of AAA games, right in the palm of your hand—expertly produced

Dante: THE INFERNO game

Have a Hell of a good time in Dante Inferno. INFERNO not for the fainted hearted *** FULL VERSION WITHOUT AD *** Note: It reuses your level

Turkey Arcade

Gobble gobble!This thanksgiving, while you wait for the turkey to roast, waste some time by shooting your own turkeys!In the fashion of an o

Always Sunny - Flipadelphia

Get your flip on with the It’s Always Sunny in Philadelphia Flipadelphia flip cup app for Android phones and tablets! Start flipping off you

Google Wallet

Make your phone your wallet Get ready to tap, pay, and save with Google Wallet, the app that makes your phone your wallet. Google Wallet * m


Explore how progress happens with THINK. For kids, innovators, and forward thinkers. From the very beginning, we’ve sought to improve the wa

TSF Shell

TSF Shell 3D is an interface with brand new operating system. Enable you to freely personalize various widgets to a full range. Let’s say go

Deals by Citysearch

Out and about and looking to save? Deals by Citysearch is here to help! Out and about and looking to save? Deals by Citysearch is here to he

Dante: THE INFERNO game - FREE

Have a Hell of a good time in Dante Inferno. INFERNO not for the fainted hearted *** Read the recent change notes further BEFORE updating **


The Best Online Multiplayer Turn-Based Strategy Game on mobile. Get it! NOW! ** Over 1 million of games played and counting ** ** 2009 Best