My short bio: While working for a minor league hockey team, I had an idea for an app but didn’t know how to code, and I couldn’t afford to pay someone to program it for me. Rather than give up, I bought four books from Amazon and spent the next few months learning how. A few months later, some of the hockey sales staff teamed up with me to get our prototype off the ground and together we now operate a small software company.

The idea was to create a crowd-sourced light show by synchronizing smartphone flashlights you see at concerts to the beat of the music. You can check out a video of one of our light shows here at the Villanova-Purdue men’s basketball game two months ago. Basically, it works by using high-pitched, inaudible sound waves in a similar way that Bluetooth uses electromagnetic waves. All the devices in this video are getting their instructions from the music and could be in airplane mode. This means that the software can even be used to relay data to or synchronize devices through your television or computer. Possible uses range from making movies interactive with your smartphone, to turning your $10 speaker into an iBeacon (interactive video if you’re watching on a laptop).

If you’re interested in using this in your own apps, or are curious and want to read more, check out a detailed description of the app software here.

Overall, I’ve been very lucky with how everything has turned out so far and wanted to share my experience in the hopes that it might help others who are looking to make their ideas a reality.

My Proof: http://imgur.com/a/RD2ln http://imgur.com/a/SVZIR

Edit: added additional Twitter proof

Edit 2: this has kind of blown up, I'd like to take this opportunity to share this photo of my cat.

Also, if you'd like to follow me on twitter.

Comments: 3080 • Responses: 55  • Date: 

usereyesweb2145 karma

Which 4 books did you use and in what order? Did you have a history of programming? I'd love to know where to start.

D3FEATER3140 karma

For iOS pick up (1) book on learning Swift; (2) Big Nerd Ranch book on making "practice" apps with Swift. For Android pick up (1) book on learning Java; and (2) Big Nerd Ranch book on making "practice" apps with Java.

With those four books, you should have a very strong foundation for getting out to sites like StackOverflow.com and advancing from there.

usereyesweb460 karma

Which swift book did you use?

D3FEATER570 karma

At the time when I was picking up iOS programming, there were few good Swift books, so I learned Obj-C instead. It was good in that there was so much more open-source software written in Obj-C than Swift, which helped me through my early stages. A lot of my code is still written in Obj-C, it's actually my favorite language (likely because it was the first I learned), and I'll miss it.

Jux_1018 karma

Is selling to Google the dream?

D3FEATER1113 karma

Yes

Criss-Istr917 karma

how much time did you spend learning per day?

D3FEATER1360 karma

About four hours, seven days a week, for six months. Then I spent the next few months with programming as my basically full-time job, so I was pretty immersed from the get-go.

Criss-Istr512 karma

cool. any tips on staying motivated and getting disciplined?

D3FEATER1125 karma

For me, it's always just been a lot of pressure I put on myself. I want to succeed so that this pressure will finally go away. Me_irl.

hoocoodanode792 karma

So if you used a phased array could you make the lights rotate around the arena?

D3FEATER766 karma

Dude that's brilliant. We have done waves and other things like that, but with a section-entry UI, so the users could tell the program they were in section 101, for example.

whutsashadowban466 karma

Having them scan their ticket's barcode may be easier.

D3FEATER553 karma

Yes, someone actually mentioned that to me last month and it's definitely something we should implement.

hoocoodanode113 karma

We have done waves and other things like that, but with a section-entry UI, so the users could tell the program they were in section 101, for example.

I think this is one of the most innovative and clever apps I've seen in a very long time. Congrats man!

D3FEATER43 karma

Thanks!

RangerPretzel739 karma

Do you have an example of your code? (not necessarily the code you wrote for these apps.)

Mostly I'm curious how far you've managed to get in 18 months. I find that most people who start learning how to program don't actually get very far and level off quickly. They seem to get stuck writing procedural code and never learn software engineering architecture. Though I suspect you may have pushed yourself to actually learning OOP and Design Patterns and Architecture and things like Unit Testing / TDD.

D3FEATER486 karma

Yes, I recently posted this software to GitHub. I typically don't work with other devs so my style may be very different, but this is the software that got me to where I am and I'd be lucky if others thought it was good enough for them to use as well.

ultio949 karma

[deleted]

D3FEATER606 karma

Yes, I actually have yet to cooperate with a single other developer so I've ended up (unfortunately) with a different style that might be hard to work with. It's something I'll need to fix in the future, but thanks for the tips!

Sidnoea690 karma

The only question that actually matters: do you indent with tabs or spaces?

D3FEATER924 karma

100% tabs

doovd244 karma

This is awesome, did you make a lot of $$$ from it?

D3FEATER666 karma

Considering our initial investment was $0, the ROI has been infinite.

SmileyMe53343 karma

Well you had to buy the books...

D3FEATER429 karma

You're right. That lowers our ROI from infinity to around 3.50%.

ImGrumps225 karma

Did you have do anything to protect yourself and your development from the minor hockey team you first intended to use it for? Like claims that it should be exclusively theirs?

D3FEATER298 karma

This is a very tricky subject. Basically the issue was solved by letting the owner of the hockey team in on the software startup.

iddn193 karma

How did you extract the inaudible signals from background noise?

D3FEATER238 karma

A fast fourier transformation. There are some great libraries for doing this in Android/iOS like audiokit and jtransforms.

VoraciousGhost118 karma

Did you have a background in DSP or math already, or did you learn that as you went too?

D3FEATER160 karma

My background was economics.

SnillieWead171 karma

How much of your own money did you spend before making money?

D3FEATER289 karma

We didn't invest a single dollar. It was all contributions of time, way way too much free time.

justanotherkenny115 karma

How did you pay the bills while you were learning / coding for 18 months?

D3FEATER228 karma

Doing econometrics for the hockey team. It was a place where, say I finished my work at 1 PM, I could spent from 1 to 5 PM studying how to code.

iop90-35 karma

How much time average did you spend to develop your programming skills? Daily average, weekly and monthly or whichever is easier to quantify.

D3FEATER117 karma

Daily is probably the easiest. For the first six months after I picked up my first programming book, I put in about four hours a day. Then I started actually working on apps. At first these were minor league apps for hockey teams, and they kinda sucked. But it helped me improve to the point where I could pretend to hang with the big boys. Classic tale of fake it till you make it.

Miels_trekker133 karma

great job, what books did you read?

D3FEATER686 karma

The exact four books I read are:

Learning Obj-C

Learning Java

iOS Programming: The Big Nerd Ranch Guide

Android Programming: The Big Nerd Ranch Guide

However, I would now recommend learning Swift instead of Obj-C. At the time when I was looking into iOS books, good books on Swift were few and far between.

legosexual22 karma

Did you read them in that order or sort of all at once? Is learning obj C your first introduction to code at all or did you have any prior knowledge whatsoever?

D3FEATER38 karma

No prior knowledge whatsoever. Learning Obj-C was my first introduction.

legosexual16 karma

Thanks! I mean had you ever even used a terminal before that?

D3FEATER110 karma

Lol I had no idea what a terminal was. Well, actually once at age 11 I bought a "hacking" book and managed to completely destroy my parents desktop. Everything was gone, and ubuntu was now the operating system.

Edit: destroying my parent's desktop was totally on accident.

dxjustice115 karma

I started coding apps 1.5 years ago, and am doing very well. However, I have reached the point where I'd prefer some more advanced content to follow rather than Big Nerd Ranch - Any materials you could share that are practical, yet significantly more advanced (tutorials)?

D3FEATER99 karma

If I were you, and past that BNR point, I would just start coding projects and start looking to build a reputation or earn some additional income. Maybe look into freelance (some of those freelance mobile developers really rake it in) or try to build a reputation on GitHub. StackOverflow is the only resource material I've really needed following those first four books. There is just so much info on SO, if it goes down the internet is history.

dxjustice27 karma

Like you I had ideas and issues which I solved. Any tips on discovering cool libraries to work with? or Apis? Stack is so huge, how do you find out whats "hot"?

D3FEATER29 karma

I love to browse GitHub. I typically do keyword searches, but they have trending pages as well.

benmeadows110 karma

How old are you? I'm a 30 year old civil engineer and I sometimes feel like my mind is not "plastic" enough to learn something new.

D3FEATER255 karma

I am 23. If you ever feel like you can't do it, do what I do and head over to r/CrappyDesign. If some of those guys are professional programmers why can't I be?

Aussie_for_beer79 karma

What do you credit as the biggest resource that allowed you to be successful at programming, and how do you rate resources such as Code Academy?

D3FEATER128 karma

Definitely StackOverflow. I haven't used Code Academy but have heard really good things about it. For me it was a few good books and a very large dose of SO.

mahaanus62 karma

How did you market yourself initially?

D3FEATER113 karma

Strictly emails to marketing guys at college/pro sports teams. Literally, look the guy up, snoop for his email address, and send him a letter asking if he's interested. We finally started getting some traction as fans started sharing our videos, and this has made it more of a they-come-to-us instead of we-spam-them business model.

cawpin45 karma

We finally started getting some traction as fans started sharing our videos,

That's exactly how I heard about it for Purdue. A buddy sent me a video of it when he was at a game.

Have you looked into getting it into an Olympic opening ceremony? That would be huge.

D3FEATER46 karma

Awesome to come across someone who's heard of my work! Yes, I've thought (dreamed) about doing something with the Olympics but easier said than done. We have recently gotten into some other continents though, such as for Cricket in Australia and we plan to work with some Soccer teams in Europe as well.

ParanoidMoron41 karma

[deleted]

D3FEATER65 karma

Yes, I've always been pretty decent at math, but math has so far not played a major role in my programming. There are usually libraries that can take some of the heaviest math problems (like fourier transforms) off the table for you.

ParanoidMoron19 karma

[deleted]

D3FEATER35 karma

It had a lot to do with math, but not necessarily in the way you'd think. I did some alternative schooling in high school, which ended up in me teaching myself Algebra II, trig, pre-cal, and calculous all from books I bought off eBay. I think having a history of teaching myself new skills made this round much easier than it would have been otherwise.

yallfrompurchasing41 karma

What was your educational background before you started programming?

D3FEATER79 karma

Economics degree from Northwestern. I have always been really introverted but had a love of learning, so I finished up high school and moved out at 16, and was probably very lucky that Northwestern chose to let me in at that age.

_high_plainsdrifter71 karma

You started undergrad at 16 years old?

D3FEATER82 karma

16 and a half

heavierthanair41 karma

Hi congrats on the app and more importantly teaching yourself a valuable new skill. Have you received any flack from purist event attendees who don't believe audience members should be encouraged to be waving their phones around all night?

D3FEATER26 karma

Actually, not yet! Have received a lot of spam though.

ShownMonk36 karma

Did you enjoy working with Clemson? How much work did you do with them? I am an undergrad there in compsci

D3FEATER51 karma

Clemson has been the nicest team to work with. After publishing their app, they sent me a signed thank you card and a bobble head. Class act all the way.

undead-potato20 karma

Can you share what languages youve studied to make the apps? Thanks!

D3FEATER31 karma

Yes, at the time there were no reputable books on Swift, so I learned Objective-C for iOS and Java for Android. I also picked up some basic PHP for backend server-side stuff.

Mogg_the_Poet12 karma

As someone who frequently has ideas for apps but has no idea how to get them off the ground is this more of a hobby or a job for you?

D3FEATER26 karma

It's definitely a full-time effort. I'd say learning to code was a hobby, but programming has been a job.

fezzyness9 karma

Dude! This is incredible!!

What was the biggest struggle you faced that you never saw coming??

D3FEATER35 karma

All the bureaucracy and contracts. Seriously, screw that I just want to code.

Potapotamus4 karma

I've recently been interested in learning a programming language so that I can make my own version of a game I used to play quite a bit but have no knowledge base to go off of. Do you suggest starting with a book and just going from there?

D3FEATER3 karma

Either a book or something like Code Academy, depending on your preferred style of learning.

RealSchon3 karma

Will you do my homework? :[

D3FEATER13 karma

Yes

LegitimateReadditor2 karma

As a guy looking into programming, what resources did you find the most useful and what languages have the most scope in the future?

D3FEATER8 karma

I'll copy this answer from elsewhere, let me know if you'd like any more details!

The exact four books I read are:

Learning Obj-C

Learning Java

iOS Programming: The Big Nerd Ranch Guide

Android Programming: The Big Nerd Ranch Guide

However, I would now recommend learning Swift instead of Obj-C. At the time when I was looking into iOS books, good books on Swift were few and far between.

antnunoyallbettr1 karma

Did you have any programmer friends to talk to/ask for help when you were first starting? Or was it just you, the books and the internet?

D3FEATER2 karma

Me, the books, and the internet.

RobZilla100011 karma

Now that your name is out there and your company is making moves, do you find yourself being head hunted or your company encountering a lot of un-welcome inquiries?

D3FEATER2 karma

We do get a ton of spam now. It's not a huge problem, I can put my phone on silent. Well, actually the silent switch is broken, so it's rapidly becoming a big problem.

NoStupidQuestion1 karma

How good is the synchronization? I've always wanted to build something that could broadcast and sync music together across multiple devices, but I'm not sure where I'd start.

I had thought to make sure every device is sync'ed using a PTP server, but your method might be simpler.

D3FEATER1 karma

This method is pretty simple. I think it should take less than a few hours to integrate. The synchronization is down to about 1/8 second.

Anne_Onyme1 karma

Have you ever considering stoping because it was too long/difficult ?

Do you have any tips for people challenging themself to start a big learning project ?

D3FEATER2 karma

For sure, it's been extremely difficult and challenging. What's kept me going is the fact that I work with some really cool people, and that makes it a pleasure to go to the office every day.

BlindTiger861 karma

Congrats man, that's very awesome!

I am trying to teach myself coding and recently started a class on python. Would you recommend python or any other coding languages to beginners, or do you think Swift and Java are the way to go?

D3FEATER2 karma

For backend server-side stuff I prefer PHP but I think a lot of people might disagree. But for mobile development on iOS and Android, Swift and Java essential.