40921
18 months ago I didn’t know how to code, I’m now a self-taught programmer who’s made apps for the NBA, NHL, and schools like Purdue, Notre Dame, Alabama and Clemson. I’m now releasing my software under the MIT license for anyone’s use — AMA!
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.
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.
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.
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.
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.
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!
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.
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?
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.
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?
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.
D3FEATER686 karma
The exact four books I read are:
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?
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.
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.
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.
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?
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.
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.
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.
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:
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.
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.
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.
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?
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.
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.
View HistoryShare Link