Archive for the ‘Teaching Stories’ Category

Steve Jobs Wannabee or Steve Jobs Disciple/Student?

Thursday, October 6th, 2011

My Twitter and RSS feed readers are full of eulogies for Steve Jobs.  As I mentioned in my previous post,
El Camino Real – The Royal Road of the Personal Computer Era, we both started our computer careers in the Silicon Valley, so there were various crossing of paths. Being cheap and not a follower of fashion, I’ve never actually owned an Apple product. With both the current and the previous laptops, the pro version of the Apple laptops have been in the running. As someone said, Web developers create Web apps on Macs that run on Linux. My work is more about running Web apps, so I run Linux. Like Matz, the creator of Ruby, I prefer Thinkpads. And I write technical articles as well as code. The consensus on the Computer Book Publishers e-mail list I was on, is the IBM Thinkpads have the best keyboards in a laptop. Lenovo Thinkpads are not quite as high quality, but still one of the best.

I have noticed lately that too much of my time is going into being informed about too many things.  And so there isn’t much time left to actually move Amethyst forward.  I need to focus.  Which means ignoring the siren call of the many posts, including the obits, eulogies, remembrances, etc. on Steve Jobs.  I can read everything about Steve, sitting at his feed, or I can focus on my life.
Universe Dented, Grass Underfoot points out rightly, that focusing on what matters is the best way to honor Steve Jobs.

How to do Down, Well

Thursday, March 31st, 2011

Part of my job developing Amethyst is finding ways to help discovery, i.e., stumbling upon interesting content.  But sometimes I stop and ask myself, “How did I get here?”.  This afternoon I stumbled on the useful
How to deal with planned site downtime. Searching the Amethyst production, staging, and experimental versions of the databases turns up nothing. So it was a link on a story that maybe was in one of my Amethyst accounts. Or on Twitter. Or … I don’t know. Why is it important? “Who was that masked man anyway? I’d like to thank him.”

More Thoughts on “The Cathedral and the Bazaar”

Monday, September 20th, 2010

Eric Raymond wrote a seminal paper “The Cathedral and the Bazaar” about software development in 1997 with several revisions since then.  Like good teaching stories, there is more than one lesson in it.  I just realized that is also applies to the Customer Development part of the Lean Startup meme.  The vendors in the bazaar are talking to real customers who are giving them direct feedback without marketing or customer service teams filtering it.

And the idea of stakeholders, including customer/end-user  representatives, being part of the development team is also contained in it.

I have rewound the “marketing” aspect of Amethyst and am interviewing potential users to determine how it can evolve to meet the needs of other people.  If you think you might be interested, e-mail me at jeff.taylor@ieee.org.  Interviews via phone typically last 15 minutes.  But whatever you want to contribute would  be welcomed.

Zen and the Art of Web Performance

Thursday, June 24th, 2010

Nice commentary on Right Work (AKA Craftsmanship) with nods to “Zen and the Art of Motorcycle Maintenance”.  And links to additional resources on speeding up a Website.

Exobrain

Thursday, June 24th, 2010

Scott Adams has an interesting article on rooms, buildings, etc as brain extenders and repositories of intelligence.

History doesn’t repeat, but it does rhyme – Cooperative Multitasking

Tuesday, March 30th, 2010

In the early 90s, as text based operating systems were giving way to GUIs (e.g., Windows was an application that ran on top of MS-DOS), programming shifted from synchronous I/O (wait until the data is read or written, AKA blocking I/O) to partial asynchronous I/O (event loop with a big switch on the event received and/or event callbacks).  I was working on a JPEG image compression library at the time.  At the time, a 25MHz 386 was a fast machine and image compression took 10s of seconds.  MS-DOS was not multi-tasking, but the GUI paradigm required frequent chances at the CPU to handle mouse and keyboard events.

The solution in Windows 3.x and earlier and MacOS prior to MacOS X was cooperative multitasking (most modern operating systems have preemptive multi-tasking), programs frequently, at safe points in the program, yielded the CPU to whatever other parts of the program or operating system needed it.  Every Operating System (OS) I have worked on in the last 15 years or so has had preemptimve multi-tasking and I considered cooperative multitasking an obsolete skill.

Ruby (and Ruby on Rails) has very poor support for multi-threading (a lighter weight alternative to multi-processing).  It is getting better, but it still has a ways to go.  This is a problem for a number of interpreted languages (e.g., Python).  However, some lightweight way to interleave multiple  I/O streams or non-blocking I/O is increasingly a need for modern applications.

A solution has been to revive cooperative multi-tasking and wrap a library around it to make it easier to use.  Python has the Twisted library and recently EventMachine has surfaced for Ruby (and Rails) for non-blocking I/O.  Programming with EventMachine on Ruby 1.8 is a bit twisty, but Fibers (light-weight threads) on Ruby 1.9 does not require such big changes in programming style.

Currently Amethyst uses blocking I/O to periodically download RSS feeds.  With only 300 feeds to refresh every hour, this isn’t a noticeable problem.  However, sites that are down or extremely busy do cause an occasional bobble.  The feeds are downloaded in batches spread across an hour.  If two feeds in a batch are down, the combined delay causes the batch to run into the next batch.  Not a noticeable problem, yet.  But it is clearly it is going to be a noticeable problem in the near future.  In the next month or two I will be reprogramming the RSS feed updates to use EventMachine.  Stay tuned for developments.

SXSWi: Co-Working

Saturday, March 14th, 2009

Informative session on co-working, shared workspaces: coffeehouse groups, incubators, labs, studio spaces, etc.  One thing that came up repeatedly is people looking for the business model.  A very useful model I found for many things is a metaphor from Fritz Lieber’s sword and sorcery fantasy series.  In the main city there is a street that runs from a city gate all the way to the main temple at the center of the city.  Someone comes in from the desert with a vision and begins preaching.  If he/she attracts a crowd he/she stays and expands the vision and the crowd/congregation.  If not, back to the desert for a better vision.  Congregations and the preacher may expand until they move into a building.  There is continual movement of congregations moving up and down the street as their size/wealth/etc. increase and decrease.

I’ve found this a useful business model, a fine grained spectrum of niches.  None of the “You Must Be This Tall For This Ride”.  In Austin, someone may start selling tamales out of their truck, progress to a taco trailer where you can touch all four walls without moving, then a taco truck, a bigger taco truck, then a permanent location while building a restaurant on the other end of the property.  One big stumbling block is downsizing as gracefully.

If tacos are your thing, BBQ.  Start selling the meat and meals out of the back of a truck, then a BBQ pit on a trailer, etc.

When Getting Ready is Enough

Thursday, August 14th, 2008

Years ago I heard a tale, perhaps apocryphal, of a business consultant who’s client wanted to go computerized. He knew that the computer salesman was overselling and would under-deliver, but nothing he could say changed their mind, they had to computerize their accounting. So he told them they needed to regularize their accounting, clean it up, and put standard procedures in place, “for the computer”. He had been telling them that for years, but now he had a lever. So for months there was a big push to clean up their accounts so they could go “computerized”. When everything was ready for the computer, he sat down with the company owner and showed him that they were already realizing all the benefits claimed for computerization without the costs of the computer.

As I noted in a previous post, my adaptive RSS reader, Amethyst, is running too slow. So in preparation of moving the CPU/time intensive operations into C, I centralized them in one class and started working out the raw SQL that the C code would need. It’s ugly but it works, it approximately 7-10 times faster, has the potential for even more speed, and is done in less time than researching relational database access from C would have taken. Yes, I can probably get even more speed by going to C, but right now it isn’t worth the additional time. Plus the framework I developed for a realistic benchmark can also be used by the test code. Nice.

Going Slower to Go Faster

Saturday, June 21st, 2008

In Taking a Smoking Break… For Non-Smokers, Vlad Doleza makes a case for taking a 20–30 minute break every 90 minutes or so at work. The claimed benefits are:

  • You will be more relaxed
  • Your concentration will improve
  • You will accomplish more

I’ve been trying it for a week. I think I’m more productive in my work, but one thing is clear, I’m less tired at day’s end leaving energy for other things outside of work. So I’m certainly more productive at life.

Live and Die Rock and Roll

Monday, December 31st, 2007

This is the title of a cut on the new Ray Wiley Hubbard album. “Momma cried and Daddy burned when I told them what I learned … Live and die rock and roll, it ain’t something you control.” I love music, but I’m not gonna die if I can’t play it. This is the difference between a musician and a wannabe. Ray Wiley Hubbard is a musician. I may be a musician wannabe, but I am an honest to God engineer. I want to build things and get very grumbly when I can’t. I’m always looking for a better way to do things, whether it’s a better route to somewhere, a better way to cook a dish, a more elegant solution to a bit of code, whatever. I see an oddball wheelchair and I want to know it works better than the standard design and in what ways.

“Maybe follow your bliss” is a description of parts of the path, maybe “Do what you can’t not do.”