Software designed to learn

Tuesday, October 27. 2015
A theme at this year's open source conference was getting experience. Experience for seasoned developers and experience for newcomers to the industry. I've been asked how one should learn to program a few times, and I'm not sure that I have a good answer if it wasn't your 4 year degree. The 12-week courses just aren't enough, but even a 2 year associates is a lot of commitment without the promise of a job.

The proposal thrown out during the conference was contributing to open source. Learn & build your resume. So, in that spirit, I'm going to invite my buddies that have tried to learn to join up on a project. I propose a re-creation of a project I've already got (poorly) implemented. Or something along similar lines. Technologies and languages should be totally up to the team, as well as the scope. The idea is the guide what they want to know. And hopefully I can keep up.

The proposal:
Send a note every time a door is opened or closed. Perhaps to my phone. Perhaps to a computer. SMS or push notification. Using whatever external libraries you want. Or writing it all ourselves. Ideally, the system would support multiple households in a secure, separated way.

What I have now:
Hardware sensors are constantly monitored by a raspberry pi for changes. Upon a change, a REST call is made to PushBullet, which also runs as an app on my phone. It's very manual to set up which devices my rPi sends messages to. And I don't think I could send it to a secondary account.

Where I'd like to go:

  • Onboarding needs to be a lot easier. Something like, "plug in your hardware, sign in with your phone. Start getting notifications when you open/close the switch." Requiring pushbullet device id's is prohibitive (it'd be nice to have a phone app where you sign in, and it just shows your available house sensors).

  • So we probably need a different web-based service that handles message routing. PushBullet may still be the means to send notifications, but I could see notifications via email being desirable in some circumstances.

  • Heartbeats. Know when your system is offline.

  • The hardware needs to be reconsidered. Either switch to an particle for the easy battery backup & smaller footprint, or figure out how to make the rPi work on cell service (and possibly w/ a battery... maybe the orange pi or banana pi is better in that respect).

  • Maybe a web-UI to arm/disarm the system. Possibly a schedule. And maybe some other integrations.



So, next phase: Do you want in? How do you want to start? What piece interests you and what technologies do you want to learn?