SCons Intro: A Sane Software Construction Tool

By Thursday, September 11, 2014 0 , , Permalink 5

If you ever built C/C++ programs, you probably know about Make. But Make has long been broken. Everybody knows that.

SCons is an open source software construction tool – a next generation build tool.

You can think of SCons as an improved, cross-platform substitute for Make. One that also bakes in features from autoconf/automake and ccache.

SCons is my chosen C/C++ software build framework.

This is the first post in a series of SCons posts. In the series I will describe SCons, and analyze its strengths and weaknesses. I also explain how I use it (in DayJob) to build non-trivial software, and explore potential enhancements to optimize my workflow.

I open the series with an introduction to SCons.

Continue Reading…

The Ostrich Website Project: Intro and Goals

If you are reading these lines, you probably know what The Ostrich website is. It’s my personal and professional website and blog, and I hope you enjoy it! πŸ™‚

For me, it is also one of my ongoing side projects. Like other side projects, it comes with a workflow, and accompanying blog posts. I realize this case may suffer a bit from self-reference, but I like being meta.

This post is an introduction to The Ostrich Website project. In this post I define high-level outcomes and goals for this project.

Continue Reading…

Getting Perfect Baby Formula Temperature, Instantly

By Monday, September 8, 2014 0 Permalink 2

Fixing up a bottle of formula (or two) for your baby isn’t complicated. Boil some water, add in formula, shake, cool it down. Why not save yourself some time and effort, by getting the perfect water temperature? In an instant? Always?

I’m sure I’m not the first to use this trick, but thought it might be useful to share. It definitely helped me to shorten the time from a hungry baby to a bottled baby πŸ™‚

The gist of the tip is to pre-fill bottles with 70-80% room temperature water. Then, adding the final 20-30% of boiling hot water + formula + shake results an instantly ready-to-feed bottle!

The amount of pre-filled water depends on your room temperature, and your target temperature. As an example, a standard bottle for my twins is 180ml water with 3 spoons formula. During the Israeli summer, when room temperature is gazillion degrees, I keep bottles at around 145ml.

There are many other ways, of course. You could use 100% boiling water and cool it down in ice water. You could use 100% room temperature water and heat it up in a bottle warmer. I like my method, because it’s quick, and can be easily applied anywhere. When we go outside, we take pre-filled bottles and a thermos, and we’re set.

Got tips & tricks of your own? Let me know through the comments!

My Side-Projects Workflow

One of the main types of content I publish on this blog is series of posts accompanying my various side-projects. These projects usually arise from one of my hobbies or interests.

As a pretty methodical individual, I came up with a workflow for planning and executing my side-projects. In this post I’d like to delve into it a bit, sharing my thoughts, so you know what to expect with my project-related posts.

The workflow I describe here applies to the common type of side-projects. This includes building software, web application, maker and DIY projects.

Without further ado, here’s the general workflow:

  1. Project high-level outcomes and goals definition.
  2. If new concepts or technologies are involved – hack a quick & dirty prototype to facilitate learning.
  3. Requirements analysis.
  4. Project roadmap planning.
  5. Implementation.

(where steps 3..5 may be iterative for not-small projects)

Each step is usually accompanied by one or more blog posts, where I share my thoughts, plans, and insights. By sharing, I hope to get feedback from the community that will help me do the best that I can.

Continue Reading…

It’s My Birthday, And I’ll Launch If I Want To

By Thursday, September 4, 2014 0 No tags Permalink 1

I’ve been running my personal and professional blog (itamaro.com) for a couple of years now. Today, I am thrilled to announce that I am relaunching the blog under new design and domain! It also happens to be my 30th birthday, so, whoop-dee-do.

I’d like to take a moment in this post to explain the move, and shortly describe my agenda for the new site.

Continue Reading…

Coming Soon!

By Monday, August 18, 2014 0 No tags Permalink 0

The Ostrich website will be launched soon!

To be the first to know when it happens, go ahead and sign up for my newsletter!

(I promise I will not abuse your email!)

A/C Control Project: Bringing it all Together

I have central air-conditioning in my apartment. It’s controlled by a remote, using IR signals to send commands to the A/C control unit.

As any decent geek would, I’d like to be able to control my A/C using other means (e.g., a smartphone).

In previous posts, I went into great detail on specific aspects of this project, like using an Arduino to decode and send A/C commands, and recognizing A/C beeps for feedback.

The last part in the puzzle is making all the pieces play nice with each other, and finally accomplish the intended goal – Controlling the A/C at home with the smartphone from anywhere over the Internet!

How was that accomplished?

An always-on computer in the apartment is running a web server accessible from the Internet, serving an “A/C-control site” (screenshot above from Android smartphone). The site is developed with the Django web framework and Bootstrap front-end framework.

The controls in the web-app are associated with server-side Python functions, that pass the parameters to an RPC server that talks with the Arduino that is connected to its USB port.

The RPC server uses the Arduino to send commands to the A/C based on the parameters it received from the web-app, and uses the microphone to verify that the commands were transmitted successfully.

As usual, the rest of this post provides in-depth description of what I’ve done. The actual projects are available on GitHub (web-app project, and RPC-server project) for anyone to fork, clone, tinker and use.

Continue Reading…

Quick Evernote Template-based Note Creation with Launchy

Recently, I redesigned my GTD system based on Evernote as the main tool.

I believe strongly that the chosen tools should not “get in the way” of interacting with the system, so when I noticed that several of my Evernote workflows include too much repetitiveness and friction – I looked for ways to reduce that friction and enable me to concentrate on the content and not the meta.

Since I am already a fan of Launchy keyboard launcher, I sought for the ideal integration between Launchy and Evernote – something that would allow me to quickly create template-based notes in Evernote, whatever the active application is, in as frictionless way as possible, while still being flexible and powerful.

I found a couple of ideas, like Brandon’s My Simple Curiosity post on Evernote note templates, and Stephen’s Thought Asylum post on the same subject. These posts were inspiring and helpful, and I wound up developing my own solution, relying on stuff I learned from them.

The result is a collection of scripts and utilities I wrote, that does exactly what I want.

This Evernote-Launchy integration allows quick creation of parametrized template-based notes from Launchy on Windows!

Continue Reading…

Using “Beeps” for Feedback from A/C commands

I have central air-conditioning in my apartment, and it’s controlled by a remote, employing IR signals to send commands to the A/C control unit.

As any decent geek would, I’d like to be able to control my A/C using other means (e.g., a smartphone).

In a previous post, I covered thoroughly the details of using an Arduino to send IR signals to the A/C instead of the remote – but if I’m far away, how can I know if the command was received and executed by the A/C successfully?

Well, given that the A/C control unit beeps when it receives and executes a command, I thought I might take advantage of that – and virtually “listen for beeps” after sending A/C commands to verify successful execution!

The short version: A laptop running Ubuntu Linux is located in hearing distance from the A/C. Just before sending a signal from the Arduino, the laptop starts listening on the microphone (using the PyAlsaAudio library). It calculates Fourier transforms over the recorded audio sample, and measures the power around the beep central frequency (4100Hz), looking for power-peaks that correlate to a beep.

For the longer, detailed, version – do read on!

Also, check out the code that implements this on GitHub.

(nitpicks-alert: while I am aware that “power” and “energy” are different things, I am using the terms loosely and interchangeably throughout the post. please forgive me.)

Continue Reading…

UPS Hacking: Adding Standard Outlets to My Advice PRV UPS

By Monday, September 16, 2013 0 , Permalink 0

My home server is powered with a UPS, so it can handle power outages gracefully (live through short ones, or shutdown gracefully if the outage persists) – which is nice and dandy.

The UPS (an Advice PRV 850) has four built-in outlets, that can drive up to four PCs and monitors. But the sockets are for “kettle cords”, which is a shame if I want to power other devices (e.g., router, modem) using the UPS…

So what can one do..? Well – why not hack standard outlets into the “kettle cord” socket? πŸ™‚

Continue Reading…