File this under "Olddie and Goodie".
Dave Thomas gave at QCon in 2007 entitled Developing Expertise: Herding Racehorses, Racing Sheep... and it's kindof fabulous.
What really struck me about this talk is not just how the Dreyfus Model of Skills Acquisition can be used to help focus... but also how, truly, no amount of "process" or "technique" can compete with straight-up engaged people.
Cultivating engagement is one of the #1 responsibilities in a leader. To play that role and do otherwise is to be part of the problem. In this talk, Thomas makes plain the downstream consequences.
Tuesday, March 27, 2012
Sunday, February 19, 2012
Simple Diagramming Tools: UML Sequence in Confluence
Documentation of a non-trivial business-important software system is vital. To gain the advantages of a light-weight approach to such documentation, the means of documenting such be simple, yet effective.
Here's a great example of such a tool:
https://labs.atlassian.com/wiki/display/CUML/Confluence+UML+Sequence+Plugin
Here's a great example of such a tool:
https://labs.atlassian.com/wiki/display/CUML/Confluence+UML+Sequence+Plugin
Oldie and Goodie: Vint Cerf on an Internet Retrospective
Vint Cerf, credited as one of the fathers of the Internet, and also a member of the Greyglers gave a talk reflecting on the successes and mistakes of the design of the 'Net.
Highlights:
Highlights:
- Why does IPv4 (our current addressing system) only have 32-bits? Answer.
- What would have the Internet been like if there was protocol support for user identification, encryption and content signing? Answer.
- Cerf mentions an NSF program: FIND, dedicated to intelligently remaking the Internet (ref).
If you're at all interested in the history of the Internet and want to hear some juicy details of where "some of the bodies lay," this is worth the hour.
Friday, February 17, 2012
Introduced to node.js
I just finished watching Ryan Dahl's Google Talk on node.js. Fascinating stuff!
This is not just another web server. node.js is essentially a JavaScript runtime with easy-to-use network bindings that forces you to write scalable code from the get-go. There's no thread scheduling, but instead, Ryan wrote an event loop and used non-blocking I/O. One process can handle ~10k - 30k connections. Want more? spawn another node process. :)
Right now, at version 0.6, it's a programming tool more than a platform. But Ryan is well on his way. I love the notion of scripting network servers that are out-of-the-box scalable. (apparently, Yahoo Mail and a host of other sites are using this stuff).
Observations:
This is not just another web server. node.js is essentially a JavaScript runtime with easy-to-use network bindings that forces you to write scalable code from the get-go. There's no thread scheduling, but instead, Ryan wrote an event loop and used non-blocking I/O. One process can handle ~10k - 30k connections. Want more? spawn another node process. :)
Right now, at version 0.6, it's a programming tool more than a platform. But Ryan is well on his way. I love the notion of scripting network servers that are out-of-the-box scalable. (apparently, Yahoo Mail and a host of other sites are using this stuff).
Observations:
- Ryan worked hard to avoid creating any unnecessary abstractions.
- He fundamentally conceives of web programming in a pipe-and-filter model.
Notes:
- Home site: http://nodejs.org/
- There is a repository for Node modules: http://search.npmjs.org/
- kinda fun: there's a "most depended-on" sort; cool.
I bumped into a number of libraries that make for a rather rich programming environment, out the gate:
- backbone.js — data-binding framework
- underscore.js — a suite of nice-to-have functions for the JavaScript language.
- coffeescript.js — a language that "compiles" into JavaScript.
Monday, February 7, 2011
Ruby Koans (more)
As a key component to my Professional Portfolio Investment, I've been dollar-cost averaging a small chunk of time (15 to 60 minutes) a day in a session I call "JTigger @ Play". During this time, I am free to explore within the sandbox of the topic I've set for myself. My current language study is Ruby. As I reported last time, I picked-up Ruby Koans.
There are many wonderful things about this "koan" format. Primary is how small of steps each "koan" goes. I'm being led along a path, winding through the language, one tiny bit at a time. At each step, the nuances of a given language feature are succinctly yet completely demonstrated.
I've used the "koans" as a launching-off point. When a topic is raised, I allow myself to go off and play with that language feature to deeply understand it. And when I'm clear, I'll write a tiny article in my personal wiki.
Today, I learned about the splat operator, i.e. '*'. What an intriguing little tool! It has two behaviors: one when applied against an lvalue (e.g. a variable on the left side of an equal sign) and another when applied on an rvalue (i.e. an expression on the right side of an equal sign). In gross terms, on the right it "flattens" the expression, on the left it "sponges" values.
I took the time to carefully touch each possibly with the operator. Firing-up an irb session, I nudged it on one side, pulled it on another and watched the results. Then tweaked it the other way... just playing with all kinds of ways to apply it. When I got a good sense of what was happening, I attempted to explain it in as succinct but clear terms as I could in the Ruby article in my wiki. In the act of expressing an explanation, I firmed-up my understanding ("no better way to learn, than to do and teach").
Three things:
There are many wonderful things about this "koan" format. Primary is how small of steps each "koan" goes. I'm being led along a path, winding through the language, one tiny bit at a time. At each step, the nuances of a given language feature are succinctly yet completely demonstrated.
I've used the "koans" as a launching-off point. When a topic is raised, I allow myself to go off and play with that language feature to deeply understand it. And when I'm clear, I'll write a tiny article in my personal wiki.
Today, I learned about the splat operator, i.e. '*'. What an intriguing little tool! It has two behaviors: one when applied against an lvalue (e.g. a variable on the left side of an equal sign) and another when applied on an rvalue (i.e. an expression on the right side of an equal sign). In gross terms, on the right it "flattens" the expression, on the left it "sponges" values.
I took the time to carefully touch each possibly with the operator. Firing-up an irb session, I nudged it on one side, pulled it on another and watched the results. Then tweaked it the other way... just playing with all kinds of ways to apply it. When I got a good sense of what was happening, I attempted to explain it in as succinct but clear terms as I could in the Ruby article in my wiki. In the act of expressing an explanation, I firmed-up my understanding ("no better way to learn, than to do and teach").
Three things:
- a little every day ("with dripping drops of water, the water jug is filled").
- learning by "playing": mildly directed exploration. Within the structure of a single topic (Ruby) with the guidance of a methodical "curriculum" (Ruby Koans), tinkering (irb sessions and pulling reference materials).
- active learning -- trimming-up my mental model by producing a crisp explanation.
Wednesday, January 26, 2011
Ruby Koans
When my work projects don't include a technology I want to develop more skill in, I look for ways to include a slice of it in my day.
Personally, I set aside an hour a day called "JTigger @ Play"... it's my chance to do whatever the heck I want... but what I REALLY want to do is make an investment. Right now, my focus includes deepening my understanding of Ruby. Not just learning the language, but the culture.
Today I started down the path to Ruby enlightenment. Not really, but this project Ruby Koans is a cute and fun way to jump in the deep end.
I cranked through the first 16 today (in about 30 minutes from git clone and reading the instructions). THe first steps seem like the right size: baby steps. It's all review for me personally, but projecting back, I think I'd get enough of it as a total n00b.
Check it out!
Subscribe to:
Comments (Atom)