An Idea For Tracking Lost Hikers

The camp was less than two miles from the Appalachian trail. Adam wrote that walking south from the campsite, the dense forest became open woods with good visibility after 60-70 yards, and after another 25 minutes he found “a clear logging road” that led to lodging. In total the walk took about 30 minutes.

Why can’t there be a tracking device that can activated once to send an SOS signal to all nearby Bluetooth/Radar devices so that she could be saved? What about an infrared coloring marker that can be detected through dense brush in the cloudy night sky?

Can lojack and other GPS-enabled devices in remote locations have saved her?

What You See is Not Always What You Get: A Reflection on “Learning to See”

Below is a summary from Information Architect’s website:

If you scrolled down to find the article’s essence in a last nutshell paragraph: Designers are not superior creatures that can ignore listening to other, supposedly inferior beings. On the contrary! Without critical feedback and the modesty to accept all opinions on our work as a perfectly valid, different view no matter who, how or what, we lose our freaky key ability, which is not just to see more, but to see more with one eye, and feel with the other.


This wonderful “love letter” to information design was a wonderfully delightful and non-capricious tromp on how what we learn or see or feel will forever evolve into something that cannot be reversed. When I critique a website or app, I immediately race through these questions:

  • What’s the stack? How did they come up with this stack? Is this good or bad?
  • How’s the typography? Does this appeal to me?
  • Is the UX good to me? Does this matter?
  • Are colors clashing? Do I feel uneasy?
  • Can I find what I need quickly? Do I care?

Instead, the common user of such a website or app will think:

  • I don’t care. What is this?
  • Login required? I’m out.
  • Can’t find what I like and I forgot why I’m here. I’m out
  • This looks cool. Oh well.

We forget from a designer/developer side what the average joe sees and we must personify this out-of-body experience in the mind of the tenable consumer and user.

I’ll keep that in mind. Just what I needed, more voices in my head!

How to Kill Time and Waste it on Free Wifi

While waiting for the gf to finish her aesthetic appointment to complete, TWCWifi allows 30mins free internet access via email and zip code input (non-validated FTW). I thought it was as simple as a cookie removal after the 30mins were over, but I was wrong. How simple would that be?! Anyways, next up is IP address spoofing via media access control (MAC) address of the interface, i.e. my laptop. If you’re on a macbook, try this out:

To spoof MAC address and bypass 30-minute wifi limit or whatever:

1) Grab current MAC address (ifconfig shows your IP & MAC address, so this command seeks the en0 interface, pipes the result into a global regular expression (grep) searching for the word ‘ether’):

>>> ifconfig en0 | grep ether

2) Change it:

>>> sudo ifconfig en0 ether <new MAC address>

3) Confirm it has changed:

>>> ifconfig en0 | grep ether

4) If that does not work, try finding and replacing ‘en1’ instead.

For random MAC address:

>>> openssl rand -hex 6 | sed ‘s/\(..\)/\1:/g; s/.$//’

Current Status and Literary Ideas

So I am now approaching 3rd month at NetSpend as a front-end web developer and I’m amazed at how far I’ve come.

Looking back at the dusted footprints I’ve imprinted, I remember the mistakes I’ve made, exactly procrastination of desires, and realize that it had to happen and none other. I’ve learned a lot and its hard to summarize it all, which I preferred in showing off my own application, but alas, here are some of my top things I’ve learned

* workflow with git – so critical is working well with others as it is with technical ability, its only so often that making someone mad can damage your reputation with others

* file structure of the codebase – this is half the battle to understanding the codebase, if you understand the layout of the house, you can hypothesize the location of the bathroom, bedroom, closets, etc.

* backend interaction – being front-end is all well and good but one must understand the context of his actions and those around him, understanding how data is passed and traded to server-side is just as important when it comes to trouble-shooting bugs and issues

In separate interests, I’ve discovered the Evernote Scannable app that uses your camera to auto-format and collect all sorts of textual papers and shapes (useful for small scraps of notes that I write on a lot). In reading about Brin and Amanda Rosenberg’s public affair, I found the word “panopticon” in the valley wag article ( Suddenly, I see facebook gawking at the world around them:

I am suddenly envisioning a New World version of Plato’s allegory, which I must write one day.

Ok back to the prelaunch campaign for HC! Rails app freelance work!

Git Quickie: Merge two different repos

I had a forked repo and another separate repo and I wanted them merged so that the newer repo (ie the forked one) had everything the separate repo had.

# in proj2:
git remote add proj1 path/to/proj1
git fetch proj1
git merge proj1/master # or whichever branch you want to merge

So for example, if Absinthe is the name of the forked repo and I want to merge into that fork, I’ll start in my proj2 repo called Everclear:

in Everclear project directory:
git remote add Absinthe /Users/jting/code/mks/Absinthe
git fetch Absinthe
git merge Absinthe/master


Set Theory Basics using Arrays in Ruby

While studying title case and a kata at, I stumbled onto the concept of Sets in Ruby. Sets are an object type in Ruby, just like Array or Hash, and are also a type of collection. Set implementation in Ruby is very much the mathematical operations encountered in Set Theory.

Quick fact: set is the most defined word in the dictionary.

Arrays are very similar and thus similar operations can be used to ascertain information quickly such as intersecting and non-intersecting elements. Here are some quick examples I noticed:

> a = %w(1 2 3 4 5)
=> ["1", "2", "3", "4", "5"]
> b = %w(2 4 6 8)
=> ["2", "4", "6", "8"]

# Subtraction (find the elements non-intersecting of A compared to B aka Left-Join)
> a-b
=> ["1", "3", "5"]

> b-a
=> ["6", "8"]

# Addition (total all elements both intersecting and non-intersecting (includes duplicates!) aka Full Outer Join)
> a+b
=> ["1", "2", "3", "4", "5", "2", "4", "6", "8"]

# Intersection (find elements in common aka Inner Join)
> a & b
=> ["2", "4"]

# Union (total all elements both intersecting and non-intersecting (excluding duplicates!) aka Full Outer Join modified)
a | b
=> ["1", "2", "3", "4", "5", "6", "8"]

Also check out Coding Horror’s blog, excellent overview of SQL joins with nice pics and explanations:

Structured Query Language aka SQL joins are quite analogous. See this pic below:


SQL Joins

Prelude to the Ending of MakerSquare

Approximately ~15hrs from now, the presentations and culmination of my MakerSquare experience is shown in my Erato app, a basic sound/image mixer and visualizer. Although not fully complete as I’d liked, I’ve learned a lot. With several of these topics leading me to fruitless points for my app, it has allowed me to dabble in new topics and ideas that I would otherwise never have encountered if it weren’t for the time MakerSquare has allowed.

As a sampling, here’s what I’ve learned and relearned:

  • domain-specific language
  • binary data (reading/writing)
  • WAV vs. MIDI file formatting
  • SVG vs. PNG vs. GIF (its “JIF” to me!) vs. JPEG
  • Waveforms
  • Synthesizer terms: ADSR (Attack-Decay-Sustain-Release), envelopes, harmonics
  • Editing of an existing GEM for my own project
  • Self-managed Kanban board using
  • CRUD actions of several controllers
  • Mixing of various param hashes from different sources
  • Bootstrap (oy vez!)

I only wish I had more time to fall into this rabbit hole of knowledge.

A Hornbook of Programming Language and Database Origins

I love languages: both programming, spoken, written, and every which way. After beginning my own formal study of programming and software engineering, I am amazed at the multitude of dialects, accents, and diaspora of programming languages. If you program yourself, surely you have become interested in how various programming language names come about. Here is a list I intend to update as I present the derivation of various programming language origins. If I have made an error, please add a comment or msg me to notify me and I can update these entries.

Perl: Larry Wall, 1987, intended Perl as a general-purpose Unix scripting language to make report processing easier. Larry wanted to give his language a short and memorable name with positive vibes and so named it Pearl, but found out there was already another PEARL programming language, and so named it Perl. People made it a backronym and thus have expanded it as “Practical Extraction and Reporting Language”, “Pathologically Eclectic Rubbish Lister” (named after Wall himself), and others.

Ruby: Yukihiro “Matz” Matsumoto, 1995, wanted a truly object-oriented and easy-to-script language. Matz and his colleagues tossed the name “Coral” and “Ruby” (also alluding to the birthstone of a colleague) around, but they also alluded to Perl, as a joke referencing it as another competing gemstone.

Clojure: Rich Hickey, 2007. Clojure is a dialect of the Lisp programming language focused on “combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming.” As I read more, it uses weird concepts like “lambda calculus”, “Polish prefix notation”, and other terms. Here is the official explanation of the language’s derivation by the man himself found on the Google Group forum posts: “The name was chosen to be unique. I wanted to involve c (c#), l (lisp) and j (java). Once I came up with Clojure, given the pun on closure, the available domains and vast emptiness of the googlespace, it was an easy decision.”


Supposedly Rich was pleased to know that there were no search hits for “clojure” before its appearance. There are well over ~727,000 search hits on Google now as of August 2014.

PHP: Rasmus Lerdorf, 1994-1995. PHP is a server-side scripting language designed for web development but also used as a general-purpose programming language. Originally an acronym for “Personal Home Page”, but now made into a recursive acronym “PHP: Hypertext Preprocessor”. The mascot is an elephant since elephant contains a close approximation of the acronym as in ‘elePHPant’.

Speaking of elephants…

PostgreSQL: Created by the PostgreSQL Global Development Group and released in 1995. Pronounced as “Post-grehs”, PostgreSQL is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. The original project of Ingres was lead by Michael Stonebraker and began in 1982 at the University of California at Berkeley. The name refers to the project’s origins as a “post-Ingres” database, being a development from University Ingres DBMS (Ingres is an abbreviation for INteractive Graphics Retrieval System). PostgreSQL logo of an elephant came from a mailing list thread:

[…] but if you want an animal-based logo, how about some sort of elephant? After all, as the Agatha Christie title read, elephants can remember … -David Yang






More to come… comment below if you want a specific language for me to investigate!