99 Problems but a Shadow Ain’t One

TLDR: Flat design isn’t intrinsically good or bad. It’s also not easier or harder than other design styles.

There’s been a lot of talk about flat design lately, and I thought I’d chime in on the discussion. Let’s start with some background. I am not a designer. I do not pretend to be one. I’d like think I can mock up a page and make it look not ugly, but that’s about it from a visual design perspective. I’ll use “flat design” vaguely throughout this post. I think we can all imagine the general design shift I’m talking about here, and I see no need to diverge into a post about the semantics of the term.

For the last year, I’ve been hard at work developing the front-end for VentureBoard. Our team was fortunate enough to work with the best visual designer I personally know, Jeff Hilnbrand, to create our logo and help design the flow of our landing page. Jeff favors flat design. Not because it’s in fashion, but because it forces one to use contrast to visually separate elements, instead of relying on visual fluff. Furthermore, it fits Jeff’s personal tastes, and he tends to use it on many projects. This works for Jeff because Jeff is a great designer. If asked to create a design using a different style, I have little doubt Jeff could produce something beautiful.

To me, design is important because it solves problems. To me it doesn’t matter much how a problem is solved visually, so long as the problem is solved so that a particular page or app is easy to use by the end user. Flat design can be used to solve problems. Skeuomorphism can be used to solve problems. What matters ultimately, is a good designer, someone who by nature is versed in solving such problems, is the one doing the problem solving.

Thus, flat design isn’t easier than skeuomorphism. Yes, it’s easier to make something “look flat” because there aren’t as many textures and visual elements. But because of those lack of elements, more time has to be spent on color, contrast, typography, and spacing to maintain good design. Flat design becomes a bit of a double edged sword. It’s easier for a non-designer or mediocre designer to use flat design as a crutch. Instead of choosing and creating the correct textures, they can be omitted entirely. And I think this is where critics of flat design end the discussion. With bad designers using flat design improperly. This is a poor argument because any design style used incorrectly will produce poor results. Does anyone remember “ajax” style?

A good designer can create using a good design using a variety of styles and techniques. Yet, they’ll likely have a personal style that they prefer to use. I’m not a designer, but that seems perfectly natural to me. A bad designer will poorly execute a variety of styles and techniques. Whether it be missing the details needed to create a proper flat design, or not knowing how to create beautiful subtle textures for a more skeuomorphic style.

I think much of the debate about flat design is unneeded. Good designers are good. Bad designers are bad. Good and bad designers will use flat design. Some will not.

Snapchat Isn’t Just for Sexting

It seems Snapchat, and shortly Facebook Poke, are primarily being used by generation Y. I have no statistics on this, but it seems to be “what the kids are up to” these days. And amongst my friends, it’s certainly been popular for a few months.

But here’s the thing. It isn’t for sexting. When people who aren’t using Snapchat talk about the app, it’s just a convenient way for horny teenagers to sext without ramifications. These people are wrong and something much bigger is happening. Something that motivated Mark Zuckerberg to clone Snapchat without any attempt to hide his intentions. Dustin Curtis already did a great job explaining this part of the story. In short, the simplicity of Snapchat- a self-destructing photo and with a limited-length caption, forces people to communicate via the actual photo. No comments, liking, or following. Just pictures, which are inherently much more human than any “like” will ever be.

Snapchat isn’t about sexting. It’s about using technology to communicate with people in a more personable way.

Ideas Are Cheap

You’ve come up with a great new idea. Now what? You need to build a team, ship a product, and become famous.

Let’s say you’re a business guy who has an idea for a new mobile app. You need to find an iOS developer to team up with to make your idea a reality. You have to protect your idea! Don’t tell your friends about it. Make sure any potential developers sign an NDA before explaining the concept to them.

Or maybe there’s a better way.

Tell everyone about your new idea. Get feedback and iterate upon it. Send out surveys to potential users and learn more about the problem you’re trying to solve. If you can, hack together a prototype.

Your idea will improve and developers are more likely to work with you because they see a product with actual potential. Maybe it turns out you don’t have the next big idea. You’ve just saved yourself months of wasted time.

And maybe someone does steal your idea. In most cases, you’ll know the domain of your idea better than the person who steals it. Maybe you can work together. Or maybe you just have to out-execute your newly formed competition. In any case, it’s the execution that’s difficult. Ideas are cheap. Not to say that coming up with a disruptive idea is easy, but it’s at the first step of a long process. If you get beat early, start over.

Sitting on an idea won’t get you anywhere. Beginning to execute on it will get you somewhere, one way or the other.

Hiring Great Talent

I’m thinking I’ll take one out of Seth Godin’s blog, and keep my posts shorter. Hopefully that will result in more of them!

I’m currently involved in a co-founder role with VentureBoard. We’ve recently hired an additional developer to the project. He is great with Ruby on Rails, has an eye for detail, and experience working with start-ups. It thus came as no surprise that he had lots of offers and opportunities on his table. Why did he choose VentureBoard? The following reasons:

  • We strive for an environment where developers make important business decisions and the best idea wins
  • We’re solving a real problem in a market that is ripe for disruption
  • We use whatever the best technology is to solve a given problem
  • We build, ship, and iterate as quickly as possible

Not to say that no other companies do this, but as a developer myself, I can confidentially say these are a lot of what great developers are looking for. Skip the ping-pong tables, espresso machines, and five hundred dollar chairs. Great culture comes from smart employees solving problems.

From B-School to C-Corp

Is entrepreneurship broken on the university level? Maybe. Is there room for improvement? Certainly.

Startups are hard. Teaching college students the ropes of entrepreneurship while fostering a community that leads to successful companies being built must also be a challenge. What are colleges doing correct, what problems are left, and how can universities inspire more students to create great ventures?

The Good

  • The networking effects inherently found on many college campuses leads to a great environment to market a new idea. There’s usually a large group of similar people in a confined geographical space. Leveraging this can make user acquisition and guerilla marketing easier than it would be in a larger, more diverse population. The tipping point to make many mobile and social apps useful is also lower in a college environment because potential users already have something in common with each other.
  • There are potential developers with time and energy. They live in the computer science department. They are generally less expensive than graduates and some will work for equity. They are not perfect, computer science curriculum can’t keep up with the pace of Silicon Valley (…or can it/should it?) . Some might even steal an idea and run with it. But that’s ok. Ideas are cheap, great people are rare. Within a computer science department you’re bound to find some great people. People who can solve tough technical problems like scalability and performance. People who have no problem learning a new development language for a project. Passionate, talented people.
  • College students want to change the world. This might sound idealistic, but it’s true. My generation is yearning for a way to make their time matter. To solve real problems for the betterment of society. Entrepreneurship is a great way to manifest these desires. When an investor or naysayer strikes down an idea, many students would be stubborn, naive, and passionate enough to pursue it anyways. I think this unique attitude needs to be cultivated. Not every college student possesses it, but those who do have a powerful motivator at their disposal.

The Bad

  • Matching ideas with technical talent is hard. This is not a problem uniquely found on college campuses, but I think the challenge here is different. There is plenty of technical talent on college campuses. A lot of times, would-be developers don’t realize how valuable they are to the idea guys and gals. Students who come up with great ideas don’t know how much technical talent is at their disposal, right on their very campus. There’s a gap, and a bridge needs to be built.
  • Students are “busy”. The vast majority of college students won’t drop out of school to develop a new business. And a lot of students feel they do not have the time necessary to pursue a startup. However, a great team of students who commit 10 hours a week to a new idea can create successful businesses that are ready to scale and grow upon graduation. Mindsets and priorities need tweaking.

The Fix

How do we improve? Does curriculum need tweaking? Maybe, but the fact is that not that much magic happens in classrooms to begin with. They happen in dorm lounges, when a group of students spark up an idea, and one grabs her laptop to begin building it. Magic happens two students walking across campus think, “there’s gotta be a better way to do this”. Magic happens spontaneously. It can’t be manufactured through a syllabus. I think living-learning programs where like minded entrepreneurs live together is a great start (I’m partial to Hinman CEOs, since I’ll be a member in the fall). But they don’t exactly embody the idea of spontaneity. I think we need constant services available to students who should happen to need them. Let the ideas form naturally, and provide services along the way to help students.  Monthly co-founder speed dating would be a great first step.

Traditional sources of jobs in America are rapidly diminishing and entrepreneurship can employ the next generation of great minds. College campuses have a responsibility to foster entrepreneurship as best it can.  It’s no coincidence that Facebook was built in a dorm room, that the co-founders of Google met at grad school, and that Kevin Plank began Under Armour just after graduating the University of Maryland. The structure of college campuses geographically and demographically create a great space for people to generate new ideas. The challenge lies in helping these people make their ideas and dreams a part of everybody’s reality.

Parallels Between C and Javascript

I’ve been using javascript for a while now. I say use instead of write because initially, it was copying and pasting scripts from across the web into my static html files, crossing my fingers, and hitting refresh. Over the years, I’ve grown pretty competent with javascript and particularly jQuery(ui/mobile), and have begun experimenting with some clientside MVCs like Backbone.js.

So far so good, pretty typical story for a web developer. As part of my Computer Science minor from Maryland, I have to take and pass a class on C and assembly next semester. I’ve heard brutal things about this class, so I’m attempting to get a leg up by learning C over the summer. I’ve been following along Learn C The Hard Way at a slow enough pace that I don’t overwhelm myself, and what I learn will actually be relevant to the class.

As I begin to grasp C, I’ve come up with some pieces that remind me of javascript. I guess this shouldn’t shock me because their syntaxes are already similar, but alas I felt compared to share.

In javascript, you quickly learn to avoid global variables, as they are bound essentially to the browser, and can become referenced (incorrectly) by other scripts on the page. Meanwhile in C, your variables are kind of bound to the CPU itself, literally just wasting memory if left untouched.

In C, you access the computer’s hardware and directly interact with it. Similarly, in javascript (which was built for the web after all), you directly access and can manipulate the browser’s DOM.

I had previously read people comparing javascript to a low-level assembly like language for the web. I didn’t really understand this. I felt comfortable writing javascript, and things like assembly and C are still scary for me. I now understand the comparison and would have to agree to an extent. Within the browser, javascript is a low-level language (discounting the code for the browser itself). Countless frameworks and modern workflows with in-browser tools have helped alleviate this reality, but it still exists.

I already feel as though I’ve tackled at least a good deal of javascript at this point. Hopefully I will be able to replicate my success with C, outside the browser and into the processor.


As I’ve transitioned from freelance work into focusing on a few dedicated side projects, I’ve decided to ditch my portfolio site in favor of this blog. I hope to keep it updated with whatever I happen to be working on, along with my thoughts (maybe even some insights?) on topics related to technology, entrepreneurship, and personal interests such as collegiate sports and hip hop music.

I’ll try not to be too boring. Please chime in if you’d like to further the conversation!