Monday, February 11, 2013

Digital Echoes

You know when you get one of those strange out of time email messages and wonder what the heck that was about until you realize your friend's outbox finally was able to connect to the mail server and deliver a reply. They deserve haiku.

Appears from nowhere
An email stuck in limbo
Digital echoes
Or, perhaps this one:
Why did I get this
Month-old and suddenly-free
Delivered message?
The thing about haiku is that once you start, it can be hard to stop.
Surprising message
A server never forgets
Past conversations

Tuesday, November 6, 2012

Yes on Proposition 37

Recently, I participated in a Facebook discussion of Prop 37.

After reviewing links there and discussion, I'm voting YES on 37.

I dug into the original article Dan posted at the start of the thread. That article has zero science and is an opinion position containing ad hominem attacks on GMO study authors, no refutation of Prop 37, position that scaring people tactics will tire people from real issues surrounding Prop 37. I dug into other articles he wrote on Slate and on his Blog, plus articles he referenced in support of his positions. He likes ad hominem attacks and happily uses them against every pro-37 individual (eg, Michael Pollan).

The FDA process for GMO food testing relies on the PRODUCERS of GMO to test their product. That is, NOT A PEER REVIEWED study. This throws any arguments that the food is safe out the window. Note, that does not make GMOs inherently unsafe, but it cuts the legs out from under any safety argument.

Genetically Engineered GMO foods (the ones I am most concerned about) have the opportunity to introduce genes which may induce allergic reactions either directly or through the novel change. I, myself, have a number of food allergies and am vigilant in my consumption of those allergens.

This is a side argument not directly in support of 37, but I make it nonetheless, the economics and history of food and big ag is a complete mess, when you examine it from the world perspective (and not just the success of a business perspective). The lives of local farmers in third world countries have been decimated by first world economic farming practices. The economics of farming has been turned upside down under the auspices for the betterment of mankind. However, the results are questionable (yields often do not increase) and, more importantly, farmers are displaced losing their way of life (creating poverty, joblessness and devastating local life). I recently saw a documentary on Indian farmers and BT cotton (Monsanto) - I'm saddened by the film. It is mentioned in the radio piece (around 38 minutes) pointed at within the FB thread.

I will concede one point, I wish that the labeling was an Informational Note and not a Warning.

Here's an article countering some arguments against 37.

Whichever way you lean, get out and vote today.

Friday, October 19, 2012

Collection of Mobility WOD Highlights

If you're an athlete, you should check out Mobility WOD. If you're a human, you are an athlete.

  1. Legs: get in your Paleolithic Chair with episode one and retest two months later.
  2. Lungs: fix your breathing and everything lungs attach to with Parts OneTwo and Three.
  3. Feet: rebuild them, Part One and Part Two.
  4. Shoulders: need end range? Try this fix. Then, modify your grip for a better pull-up.
  5. Icing Bad: why you should stop icing.

Wednesday, October 17, 2012

Open Letter to my Hero: Come Clean

Lance,

(Please excuse the informal, but you've become familiar to us all).

You are my Hero and will always be my Hero. Not for the seven Tours you won (but, that was pretty cool). You are my hero for what you've done with LiveStrong. I recommend your book, It's Not About the Bike, to anyone I know diagnosed with cancer. You fought through incredible physical and emotional pain and survived to make a career for yourself, raise kids and create an amazing foundation that has touched millions of lives.

We have something in common - I, too, was diagnosed with and fought against testicular cancer. Your story supported me. Now, I'd like to support you.

Lance, you have a great opportunity set before you. You can be a leader, a shining beacon. You can once again be at the top and touch the world. You can do what other athletes at the very top have never done (like Alex Rodriguez or Barry Bonds). In one fell swoop, you can clean up pro cycling and, quite possibly, many other professional sports.

Please, tell the world the entire story. Be honest and open with us. You apologize, we forgive you. We forgive you, you are redeemed. Your redemption will make you one of the greatest athletes who ever lived. You will be remembered for your many achievements, including the one moment when you bravely stood before the world and tried to change it.

Sincerely,

A fan.

Friday, March 16, 2012

Trip Report: Salesforce.com's Cloudstock

Cloudstock

On March 15th, I attended Salesforce.com's Cloudstock (& Cloudforce).

First off, Marc Benioff has built an incredible company - for the industry, for their customers and for their employees. I know at least a handle of current and previous employees that have nothing but good things to say about their employer.

As for the event, if you are even remotely involved in High Tech, I would encourage you to attend.  They did a 2.5 hour keynote in the morning that featured C-level employees, customers and, of course, Marc. Marc is inspiring and paints a great picture of where we are in the technological evolution of computing (mainframe, PC, client-server, web, mobile, social). It's not an earth shattering story (if you've been around awhile, you know it), but what is apparent is Salesforce's ability to pivot and take advantage of the last three.

Confession: I left the keynote after 90 minutes, that was enough for me.

Mid-day, the expo floor opened. There were two main sections: Cloudstock and Cloudforce. The former was for developers, so I headed over there. I never did make it to Cloudforce.

One thing that stood out, among many stand out items, was the high quality conversations I had with every person I met at the show.

The Expo

DataSift.com - Far and away, the most impressive product was from DataSift.com. Imagine your company wants to see every social media tweet, post, facebook, yelp, digg, etc. about itself. Furthermore, the data should be tagged and categorized by geo location, sentiment, and whatever else the marketing research department wants. You could build a feed reader for the 30 or so social media platforms and collect the portion of the data they send you (you won't get everything you want). Or, you could go through Data Sift's interface, build a simple query (via GUI or by hand), and have your data feed running in less than a minute. Output is in JSON and easily handled by current tools. Definitely, check them out.

Heroku - Salesforce bought Heroku, recently. Heroku is a cloud platform development platform whose backend runs in AWS. If you like to code in their provided languages (Java, Ruby, PHP), you can use their system "out of the box". If not, you can provide your own libraries for install. They also integrate with Database.com (another Salesforce acquisition). They have a dyno model, in which your system runs. They claimed this provides some higher levels of security. Securing cloud services against back-end attacks should be the chief security concern for every cloud application. I'm skeptical of the level of protection, however, they said a security white paper was forthcoming. Stay tuned.

StackMob - Another backend system, this one dedicated to running your server side operations without having to do any infrastructure work. Basically, think of having to write only the Java classes that respond to GET/POST calls for an Apache Tomcat plug-in with some nice glue into a SQL database. That's StackMob.

Database.com - I didn't speak with these folks at great length, but they have a nice product. Check them out.

Force.com - This is Salesforce's cloud development platform. They've pivoted hard into the social part of the web, leveraging their Chatter application and creating a social media datastream for the Enterprise. There's some great stuff in there that I won't review, you can check out their site. There are, however, some items worthy to note, they have two programming models for handling mobile: an SDK and a hybrid wrapper. The SDK provides calls into the force.com system and is to be integrated into a native application (iOS/Objective-C). The hybrid wrapper uses PhoneGap (below) to wrap HTML/JavaScript.

PhoneGap - These folks provide a shell that wraps HTML and JavaScript web pages. They have developed a JS library to provide native access to phone hardware (camera, GPS, etc.). If you like, you can even build your own native operations and map them to JS calls compiled into the wrapper. The wrapped code gets submitted to the application store. Although I'm a big fan of the mobile web, some applications do best using the mobile platform's look and feel and will continue to be coded in iOS or Java. I think if you're in a hurry, this is a good way to go.

Sencha - These folks have a back end web server that can build for the mobile web browser (HTML5/CSS) or for Desktop browser. I wasn't clear if the browser required a plug-in, but the mobile web pages they showed me looked quite clean. Worth checking them out if you want standard, mobile web browsing.

In the notable mention side, I'd like to put a plug in for Brain Engine and GitHub.

Brain Engine provides an augmented IDE that runs in the cloud and sits atop the Force.com infrastructure. As I have not done a lot of Force.com development, I couldn't tell you if they truly benefit the user, but they seemed convinced and seemed to know what they were talking about. In addition, we discussed a downfall of the Force.com platform, something they are not able to fix, either.

Apparently, Force.com doesn't have a good (or any) source control. All programs are checked into the DB, and there's no branching or merging. That has to be a nightmare for development. Salesforce should address this problem and their users should demand a change.

GitHub - They provide hosted source control and, also, an issue tracker. There are plenty of cloud based source control systems out there. My friend uses GitHub and is quite happy. YMMV.

Finally, an SalesForce architect and I were discussing securing at rest data on the phone and may have found what could a huge security misunderstanding for mobile development work. We are researching the problem and will write a paper, if true. Be on the lookout.

Sunday, December 11, 2011

Audio Delay

I've always wanted to build an audio delay box, something that would take an audio input (mono or stereo) and delay it by some variable amount (user determined). Why? Because when I've watched the Saturday afternoon game and the baseball playoffs for my home team (SF Giants), I realize just how lousy those national league announcers are. But, playing an out of sync radio broadcast with the TV broadcast is the stuff of nightmare. The radio is always ahead of the TV broadcast because the radio is transmitted locally and the TV broadcast goes around and around, up and down, cable, satellite, whatever.

So, I need an audio delay device. The Arduino family seems like a great place to start building such a device. Just before starting to build this project, I looked around to see if anyone had built one of these. There are plenty of options for products between $60 and $200 that delay between 1 second and 1 minute. I found one product that could delay up to 20 minutes.

I only need a delay of max 5 seconds, but I'm an engineer, so as big as I can make it will make me happy. Plus, I need to build it for less than $60 in parts, or I might as well buy it. Actually, that's not exactly true, any cost over $60 pays for my enjoyment in building the project, but you get what I mean.

If I use the Arduino (or the Mega) that's half or all of my budget, so this engineering process should get interesting.

I have a few ideas for designs and will make follow up posts detailing them with some pros and cons. In short, here's what I've thought through so far:


  1. ADC -> MEM -> DAC + CPLD/FPGA + Arduino
  2. ADC -> Flash Mem -> DAC + CPLD/FPGA/Arduino
  3. ADC -> MEM -> DAC + Arduino Mega (which has lots of address pins)
  4. Delta-Sigma Modulator + Delay Queue (implemented w/ Arduino + majolsurf mem expansion)
For MEM, I was thinking of an old DDR2 board.

Basically, the designs come down to some combination of the following elements:
  • An Analog to Digital Converter that outputs one or two channel (mono v. stereo) and 1 bit or N bit (generally, 16 bits). However, even the N-bit ADCs really stack up 1 bit outputs and then release them as N bits, but on a serial line! Therefore, the N-bit ADCs are simply bursty one bit ADCs. None of them have 8 or 16 parallel output, so their output needs to be thrown into a shift register if to be used in parallel.
  • A Digital to Analog Converter (1 bit or N bit). If data held in parallel, then it needs to be placed in an SR and sent to DAC, serially. N-bit DACs don't accept input in parallel.
  • Memory
    • Flash memory accepts input as a bit stream and it should be in page chunks, that is, written or read sequentially. Flash memory really isn't meant to be Random Access, or least NAND based flash isn't.
    • DDR2 has some interesting requirements (a section of low addressed memory that is off limits for storage) and 200 PINs to drive or read. The Arduino Mega could run a DDR2 board.
  • Data Transfer Protocols
    • I2C or SPI or Parallel or NIH (Not Invented Here or Roll My Own).
    • The challenge of the first two are lack of familiarity and/or speed limitations.
    • The challenge of the second is a heck of a lot of wiring - ugh!
    • The challenge of the third is inventing a stable (serial) protocol better than I2C or SPI.
  • Delay Control - one or two knobs that allow the user to dial in a delay (coarse/fine grained delay). It would be great if the delay could be from sub microsecond up to limit of the system. Also, if the system delay maximum is large, the coarse grained control should be non-linear in response (smaller steps closer to zero).
  • Display Delay - it would be nice if the user could see how much of a delay the system was using.
  • Controller/Control Signaling - somehow, all of these elements need to communicate with each other and do the delay work.
In the end, the system converts analog voltage levels into frequency bit streams that get delayed then returned back into a voltage signal. Everything else is just implementation.

Sunday, December 4, 2011

Hardware Hacking

There are some fabulous hardware devices out there for hardware hacking - it warms my EE heart. Having been out of the field for decades (really, only played with this stuff in college and high school), I'm enjoying getting back into things.

That said, folks who've never studied the material before can still play.

First, get yourself and arduino or similar device.

Then, learn some basic electronics - youtube is a great place to start.

Then, build and enjoy...