Day 22: A final project for July

Nick Ang
getting technical
Published in
6 min readJul 23, 2016
Random party scene by the Singapore National Gallery. Those Ted balloons…

Studying is good and all, but what is it exactly good for if the knowledge and skill gained are not used?

All this time I’ve been chasing an undefined goal. I want to become technical. Why? I know why, but if you asked me what for, precisely, I’d have to take a long pause before I give you a decent answer. If you put a gun to my head and yelled, “Out with an answer, now!”, I’d probably say I’m learning to be technical for a rainy day situation, just in case I have this great idea, I’d be able to execute it, at least at the start, by myself in my home office…

It’s not that I don’t want to be more concrete with my goals, it’s just not as easy as people — myself included — imagine. Besides, I don’t think it’s flimsy to say a thing along the lines of “this is a good skill to have, and I have a few rough sketches in my head of how this will be the basis for a great many projects in the near future.” How many are resolute in their imaginations of their futures anyway?

That said, I’m trying to cast something out of wet cement here while my mind is still fresh on concepts of HTML-CSS-JS-ROR internet languages. However clear I am with concepts at this stage matters little in the long run. Over time, what matters is applied practice, because projects are the things we can actually remember, not syntax and tricks.

Yesterday I said I will find a problem to solve over the next 10 days, before the wet and breezy month of July comes to a close. A declaration made must be fulfilled. So I’ve thought of a self-imposed challenge for the next week and a half.

One final leap! (Image: Dan Carlson)

Self-imposed challenge before July ends

I ‘work’ from home. (Okay, I’m going to drop the inverted commas once and for all. Why should unpaid work not be considered work anyway? I’m not sure what has gotten into me, but I never used to believe that. I believe that many times paid work have less substance than the unpaid, since there’s an icky exterior motivation for doing the work in the first place.)

As I was saying, I work from home in my home office. In recent weeks I’ve noticed just how much time I’m spending in this small space. Mei and I share it and it has become the locus of my life, and to some extent of our lives, and I want to do something to make it more functional. I thought since we’re going to spend so much of our waking lives in this room, it would be quite silly to let it be the way it is at the moment — basically functional, with a lot of room, figuratively speaking, for enhancement.

Here’s a fun fact: our home hasn’t had a doorbell installed since we moved in a year and a half ago. It’s just one of those things that you say you’ll come around to doing but never do it until one day you stop and think to yourself, “seriously?” and you finally get down to doing it because not doing it makes you feel like a bum more than you can accept.

This room is my workplace. It is the hub from which my fledgling adulthood is slowly being realised, be that as it is by choice or chance. Might as well make the best of it.

That’s a screen beside Casey. (Image: YouTube)

Casey Neistat’s wildly functional studio

I’m no artist, and my home office is not a studio by any stretch, but Casey Neistat’s studio is an inspiration nonetheless. A few things he has set up that have gotten my fancy:

  • A switch to toggle between music on the main speakers that emanate the entire room and the speakers on his personal desk. One flip of the switch and everyone gets happy feet. Genius.
  • Live door camera feed. I would love to be able to see who’s at my door from inside the office.

I’d also like to have a door bell, like normal people do. But it should do something cool, like play a greeting and seconds later, trigger said door camera to snap a few selfies, and upload them to my Google Drive.

The challenge

Finally, here’s my challenge to myself.

  1. Install a camera on my door at the main entrance to my home, connected to a microcontroller or a single-board computer for remote control.
  2. Install a doorbell connected to a traditional buzzer (to alert people at home) and the MC/SBC (as a trigger for point 3).
  3. When someone pushes the doorbell, it sends a signal to the MC/SBC. It then triggers the camera to snap a photo, and saves it to internal memory to be uploaded to Drive/Dropbox/remote server whenever there is a stable wireless connection. (summary: Doorbell press → Sound buzzer & Camera trigger → Save and upload photos)
  4. At any point in time, a video stream from the camera should be visible on a screen inside my office.

Phew.

Oh man…where do I even start?!

Now that I’ve made a list, the challenge is infinitely harder from here. Diving head in into this project with no knowledge of networking protocols is borderline stupid, but I’m going to try.

There will be a lot of analysing, thinking, drilling, mounting, connecting and connecting, and bits of coding and finding existing (open source) software. By the end of the challenge, success or failure regardless, I expect to have aged some black hair to grey and deepened a few wrinkles. But I have faith that it will be worth my money, effort, and time. This is the kind of learning that excites me!

Starry floor near the National Gallery. I wonder how much wire’s used underneath.

Cool little things today

Discovered code blocks in Evernote! Apparently they’ve been released for more than a few months now, and here I am, an ignorant Premium user. Glad to have found this.

What code block formatting looks like on Evernote

Briefly read up on the main differences between Object-oriented programming and Functional programming. In one sentence:

OOP is to build software that executes a fixed set of operations on many evolving things, while FP is to build software that executes many evolving operations on a fixed set of things.

In other words, one is built for easy evolution of things, the other for easy evolution of operations. Different programming languages have been written for each approach, which I haven’t gone into detail with. I’ll leave that for another time.

Much to do!

This post is part of my 30-day commitment to write about my journey learning technical stuff. If you learned something, please recommend it so that more of us can share our learning.

Posts are published to Getting Technical.

--

--

Nick Ang
getting technical

Software Engineer. Dad, rock climber, writer, something something. Big on learning everyday.