Archive for the ‘education’ Category

setting-up etherpad in centos 6

To add to my tutorial collection, here’s how to setup EtherPad on CentOS 6 (x64). As in the IRC tutorial, I used a Digital Ocean VM for this :)

What is EtherPad? It’s an open-source collaborative text editor that works like Google Docs – ie, all editors/viewers can see changes from everyone else in realtime.

Here’s how I did it: (props to the EtherPad docs and this other tutorial on Node.js)

  • acquire a CentOS server – I used Digital Ocean
  • make sure you have enough swap space (if you use the smallest Digital Ocean “droplet”, you really need to give yourself 2-4G swap)
    • dd if=/dev/zero of=/swapfile bs=8096 count=524288
    • mkswap swapfile
    • swapon swapfile
    • add this line to the end of your /etc/fstab:
      • /swapfile swap swap defaults 0 0
  • run the following as root:
    • yum -y install gzip git-core curl python openssl-devel && yum groupinstall
    • yum -y install screen gcc gcc-c++ make wget curl
      • note – it’s not always called “gcc-c++”; make sure you use the correct package name for your platform
      • you can find out the correct package name by doing a `yum provides */g++` search
    • yum -y upgrade
      • bring everything up to date – it’s equivalent to `yum -y update –obsoletes`
    • adduser etherpad
    • su – etherpad
    • git clone git://
    • cd node && ./configure && make && make install
    • cd
    • git clone git://
    • cd etherpad-lite
    • screen bin/
  • load in your browser (substitute the IP/DNS name of your server as appropriate – mine was
  • for maintenance purposes, you should also do a `git pull origin` for EtherPad periodically

Some notes on the above:

  • if you already have swap space and/or don’t want to worry about it (though I recommend you do), you can skip it
  • I’ve put the `-y` option after every `yum` call presuming you really mean to run it, and you don’t care about dependencies
    • if you aren’t using a fresh server (EtherPad certainly doesn’t require it’s own), you may want to be a little more cautious about the `yum` commands :)
  • you should create a start-up script to ensure EtherPad is running if you need to reboot
  • the EtherPad docs have all kinds of further things you can do – this is just a “get it going and start using it” tutorial :)

programming your home by mike riley

Mike Riley’s entry in The Pragmatic Programmers series, Programming Your Home – automating with Arduino, Android, and your computer – was a lot of fun.

While I am not really in a position to do many of the mini projects given in the book (wrong type of house plus we rent), reading some of the project ideas did give me some inspiration for other activities. One of those is a Buffer-like tool I’m now writing to queue tweets over-and-above what the free level of Buffer will allow (and on a different schedule from my Buffer-fed queue). In conjunction with python-twitter, cron, and simple email messages, I’ve got a system started to which I can email things I would like to be posted, and they will go out when the cron job runs.

The Arduino is an impressive embedded platform – one that has also rekindled another long-time interest I’ve had in robotics. Years back, I recall seeing Sally Struthers advertising for one of those learn-at-home groups, and one of the options was robotics. (By “years back”, I mean 20+ years ago – probably more like 25 years ago, at this point.) I used to own a copy of Robot Builder’s Bonanza – and read it cover-to-cover a couple times. I loved watching Battlebots on TV. I’ve always wanted to buy/use LEGO Mindstorms.

Using robots to automate daily activities (and, of course, for fun) has been a fascination since I first saw Lost In Space and myriad other scifi shows and movies.

Riley does a great job of not demanding you be an expert programmer (or even a programmer at all) with the fully-implemented code examples in the book. He also does a good job of indicating what you’ll likely have to tweak on your own – and what you can probably just leave alone in the examples. Add to this the “extra credit challenges”, and I highly recommend it to anyone interested in home automation, embedded development, robotics, or just general programming/scripting.

There are some other interesting Python snippets throughout the book – that don’t have to be used in the context of an Arduino (like using Google’s SMTP server (via authentication)).

why nations fail by daron acemoglu and james a robinson

I first came across Why Nations Fail at my local Half Price Books. After seeing it on the shelves a couple times, but still being unsure about whether I really wanted to read it or not, I reserved it at my local library.

Now I wish I had bought it (and likely will) – Daron Acemoglu & James A Robinson, while sometimes slipping into an academic, journalistic tone, present a fantastic historical, economic, cultural, and international view into the similarities, and differences, of “national” failures around the world over the last several centuries.

They spend a great deal of time expounding on the differences of countries that succeed and those that don’t – and offer insights into how failing nations could, potentially, turn themselves around.

Interestingly, the factors that play-into national success and failure are similar throughout history – critical junctures, inclusive/pluralistic political and economic environments vs extractive/exclusive political and economic structures, empowered citizenries, overbearing rulers, literacy, economic incentives (positive and negative), etc.

The Iron Law of Oligarchy:

the overthrow of a regime presiding over extractive institutions heralds the arrival of a new set of masters to exploit the same set of pernicious extractive institutions (p366)

My recommendation? Buy it. Read it. Share it. The background and conclusions this book presents and reaches should be required reading for anyone who wants to see their nation “do better” – politicians, businessmen, citizens, NGOs: all would benefit from applying what is demonstrated in this excellent work.

  • Quality of writing: 4/5
  • Quality of content: 4.5/5
  • Historicity: 5/5
  • Educational value 4.5/5
  • Overall: 4.5/5

the seven stages of expertise

I recently found The Seven Stages of Expertise in Software Engineering.

  • Stage 1: Innocent
    • barely knowledgeable if at all
  • Stage 2: Exposed
    • seeking knowledge
  • Stage 3: Apprentice
    • has read case studies and tries to apply those techniques
  • Stage 4: Practitioner
    • can actually apply concepts learned in one context to a not-identical context
  • Stage 5: Journeyman
    • professional understanding and application of the field; can mentor
  • Stage 6: Master
    • moved from “whats” and “hows” to “whys”; can mentor very effectively
  • Stage 7: Researcher
    • the teacher, presenter, mentor, speaker, evangelist, writer, authority

Presented firstly in the humorous guise of The Seven Stages of Expertise in Bear Hunting, Meilir Page-Jones makes a highly-compelling case for progressive advancement in [nearly] any field.

Some of the ideas seem similar to what Malcolm Gladwell brings in Outliers (review) or Robert Greene does in Mastery (review). Which seems to only lend more credence to those other works, given that this article is © 1998.

what is the “new” python?

9 years ago, Paul Graham made a controversial statement:

[W]hen you choose a language, you’re also choosing a community. The programmers you’ll be able to hire to work on a Java project won’t be as smart as the ones you could get to work on a project written in Python. And the quality of your hackers probably matters more than the language you choose. Though, frankly, the fact that good hackers prefer Python to Java should tell you something about the relative merits of those languages.

He had a follow-up the next month to expand a little on that thought:

[Y]ou could get smarter programmers to work on a Python project than you could to work on a Java project.

I didn’t mean by this that Java programmers are dumb. I meant that Python programmers are smart. It’s a lot of work to learn a new programming language. And people don’t learn Python because it will get them a job; they learn it because they genuinely like to program and aren’t satisfied with the languages they already know.

Which makes them exactly the kind of programmers companies should want to hire.

I wonder – what is the “new” Python? If Python was what the Cool Kids™ were picking up for fun a decade ago, what is it today? R? Ruby? Or something that isn’t as well known? Ruby is two years newer than Python, but seems to have only become truly popular with the advent of Ruby-on-Rails. R may be too focused (it being designed for statistics programming), though it is also 20 years old now.

What new languages / techniques are there? Are there any? Haskell is  nearly a quarter century old. Erlang is nearly 30.

If you were a hiring manager, what would strike you as “motivated” or “must be smart” in terms of language(s) on resume?

reference materials

I learned recently that my wonderful wife was never taught how to use a dictionary, thesaurus, almanac, or encyclopedia as a child in school.

Not all of that can be because she went to public school whereas I was homeschooled. Nor can it merely be that she grew up in KY and I in NY.

I’ve seen myriad others younger than her that can’t use those resources, either :(

Most people have the basics of how to search online down – but barely the basics*. In many ways, I think online tools are killing our ability to think critically in some areas – learning to ask questions well is one of those areas..

Why are these tools still important in a digital age? Well, what do you do when you need to find something and you don’t have your iPhone, Android, tablet, laptop, etc handy? Do you wait until you have internet access again?

What about when you are looking for something at a library or book store – do you exclusively rely on the staff’s knowledge to help you find what you want, or can you start to locate it yourself?

Part of the problem is that schools, because of the misguided legislation that is NCLB, all teach to the test. Tests can be wonderful tools – but they have no bearing at all on the “real world“. Your ability to score a perfect ACT, ASVAB, GRESAT, etc means precisely bupkis.

Being able to find what you need when you need it once you’re out of school, however, will be your daily lifeline to keep from drowning at work and in life.

I remember many times having to learn how to use new reference materials – and how to use ones I already had been introduced to in better, more efficient ways (I still look for better ways to find what I need with tools I have). I remember an entire class day devoted to learning what an almanac is (the Information Please, to be specific), and then doing “information scavenger hunts” through it (for prizes, mind you – yes, my team won first place).

I remember learning how to use the Funk & Wagnalls and Britannica Encyclopædias (my aunt owned the Britannica, my parents the F&W). I remember learning how to use World Book at the library.

I also remember my first semester at HVCC in 1999 where we went to the school library to learn how to search for materials online for our English class – and no one knowing what search engines were … nor even how to use the catalog the school had!

I think that was my first worry about the state of education and how ill-prepared most people are out of high school to be ready to function in further schooling. And I have only seen it get worse.

There is a fundmental breakdown in the education system in the United States. Is a solution redecentralizing? Homeschooling? Montessori? Private/parochial schools? Eliminating teacher unions^? Performance pay for teachers?

I think all of those will play important roles in improving the future of the country.

Something needs to be done – because the state of education today is very bad.

For the record: my wife does know how to reference materials at least at a cursory level – but those skills weren’t learned until she had to have them in college.

* search is broken, but that’s another problem
^ specifically, abuse of power, lobbying, etc

organizational knowledge capture, retention, and dissemination

Knowledge capture, retention, and dissemination has been an interest of mine for a long time. I have written about various aspects of it before.

The most vital commodity any organization has is the knowledge of its members – it does not matter if it is a historical society, company, church, or school: the organizational knowledge base is vital to ongoing health of the organization.

I love the picture of the “Tree of Wisdom“: at the ground there is a meadow of data, from this data information roots are gathered, the roots grow into knowledge branches, and at the end is the application of that knowledge in wisdom leaves.

Data is easy to come by.

Information similarly so.

Knowledge, taking information and transforming it into a more-usable form, is important.

When to apply that knowledge – aka using wisdom – is the topic for another post.

Capturing Knowledge

There are a host of available tools for capturing knowledge – text files, brown bags, PowerPoint, SharePoint, blogs, Plone, wikis, etc. The “best” one to use is the one you use.


Getting team members to contribute to organizational knowledge pools can be difficult – unless it is an organizational priority .. a part of the organization’s culture.

Incorporating this culture switch (if it’s not already innate to the organization) needs to be done not merely as a top-down directive, but encouraged via bottom-up interest.

Retaining (Managing) Knowledge

Now that you’ve captured (or started capturing) the organization’s data, managing it becomes the next task of import.

For example, should the KB article written 5 years ago be updated, replaced, or left alone?

Who is responsible for managing all of the information that has been collected? Will it be self-managed and -directed, will there be a curation team, will it be a combination?

Who determines the process for taking “internal” knowledge and “promoting” it to “outside” knowledge?

How are these roles going to be managed as the team changes memberships through people leaving, entering, and shifting in the organization?

For extremely small organizations, formal curation may be unnecessary. Perhaps since everyone knows everyone else, or the knowledge domain is so small, everyone’s individual contributions will remain fairly static and the “promotion” path will merely be proofreading (eg a historical society’s archives – the archives may be extensive, but the material doesn’t ‘change’ all that much (excepting being added-to, of course)).

For very big organizations (like the MSDN documentation available on, many layers of curation are likely going to be needed – proofreading, formatting, verifying, etc.

Finding the right balance of self-direction and organizational management can be tricky.

Disseminating Knowledge – Getting The Word Out

All of the captured knowledge in the world is useless if you can’t find it – and knowing where to look is vital. A close second to knowing where to look is how to find it.

Where is it?

There needs to be a solid document, landing page, directory, table of contents, etc so that new members (or folks who forget) can find the tribal knowledge that exists in the organization.

As a part of the new-hire\introduction\etc process\period, be sure to tell new members where information can be found, and who to talk to about certain major topics.

Finding it once you know where to look

“Search is a hard problem.” Google’s own Udi Manber said that. Anna Paterson at Stanford wrote, “Writing Your Own Search Engine Is Hard.”

Search in general may be hard, but many tools handle at least basic (and some fuzzy) searching well – OSQA, WordPress, Plone, Drupal, and many others. If, in addition to categorization, a tag taxonomy is employed, quickly finding content relevant to the searcher’s wants\needs can become easier.

“A tag is a keyword or label that categorizes your question with other, similar questions. Using the right tags makes it easier for others to find and answer your question.” {SO description}

Knowledge contributors should be the primary agents of tagging. However, consumers should be able to suggest additional tags. Administrators\curators should be able (under unusual, but well-defined, circumstances) to remove tags.

The human factor

For any given topic / knowledge region in the organization’s realm, there need to be established “experts” and “mentors” who will help guide new individuals through the fog to locate the buoys to be able to navigate themselves into a clearer understanding of the new world they have been made a part of.

Apprenticing upcoming experts into the organization is the single most vital aspect of the knowledge capture process – if it is not disseminated, it doesn’t matter if it is captured.

redecentralizing school

I have a very longterm interest in education.

As I look at the current public education “system” in the US, I can see a variety of major problems.

The biggest problem, endemic of any system built around the premise that the only people who should be together all day long should all be “similar”. Somewhere along the way, we decided it would be a Good Idea™ to split children into monocultures of more-or-less indentically-aged groups called “grades”, and then batch them into groups of 20-30 and herd them through a variety of subjects every day.

We have lost the concept of learning as exemplified throughout history in the “apprentice” or “disciple” model.

Before the monoculturification of schooling, whole (but small) groups of children were taught together – it’s how my dad’s uncle was taught. From 1st (or K) through 12th all in one room. At any given moment, all ages were either being reminded of earlier work, or hearing about later work, or doing their own work.

This model is still used by the large segment of the population that homeschools (presuming, of course, they have more than one child).

What if we re-adopted this approach to school in the public system? What if, instead of having schools which housed hundreds of students in just a couple grades, we had schools in every neighborhood that had a few dozen students that represent all the grades of the community?

What if schools became “migratory” – in the sense that as the demographics of the community change, the location of the school ‘building’ can shift. Perhaps, for example, in a suburban community the school could be usage of a development community center – but if and when the community has fewer or no children, the school locale could be removed or shifted to a new young demographic area.

Some of the myriad benefits I can envision in such a scenario:

  • reduced overhead for any given school in terms of hiring, maintenance, etc
  • reduced school board / district overhead – elimination of now-unneeded positions
  • increased teacher-to-student engagement
  • lower student-to-teacher ratios
  • increased student retention as they are continually being reminded of old concepts
  • teachers becoming more generalized, rather than [potentially] myopic in their teaching
  • team teaching – cutting across disciplines and seeing an integrated view of the world
  • improved teaching flexibility
  • reduced union strength
  • improved connections between teachers and the community they serve
  • more well-rounded graduates
  • reduced / eliminated busing
  • decreased prevalence of bullying
  • increased likelihood of teachers living near/in the communities they serve

Some of the antibenefits I could envision:

  • loss of school sporting teams
  • forced generalization of teachers
  • more complex IT support infrastructure (if managed by a central authority such as the board or district)

I eagerly anticipate your feedback – what do you think?

mastery by robert greene

In Mastery, Robert Greene continues in the style of his excellent work, The 48 Laws of Power (which I previously reviewed and have been posting excerpts from).

Sadly, it is not quite to the level of The 48 Laws – though it still a good book. Unbeknownst to me, I’ve already been practicing most of what he preaches, starting with finding your niche. Oh, and following an apprenticeship path. And staying creative; and widening your horizons.

This is also, more or less, the path modeled by one of my previous employers, the Shodor Education Foundation through their Apprentice, Intern, and “Post-Bac” Staff programs (they have higher than “Post-Bac” staff, too – but that’s more in the “Master” level than getting to it).

I was hoping for something … well, maybe not “new” – but insightful-and-not-common-elsewhere. Perhaps I’m merely well-read already, but Mr Greene comes to roughly the same conclusion as Malcolm Gladwell in Outliers – 10,000 hours of concerted effort in learning, practicing, and presenting a given topic/field will tend to push you into the “Master” realm (review).

Through a series of case studies and repeated biographical highlights through the last ~300 years, the point is shown that while there are a few workable paths to Mastery – they’re all traversable by anyone who cares to take the time and effort to do so.

Timothy Ferriss’ series of “4 Hour” books (4-Hour Body, 4-Hour Workweek, & 4-Hour Chef) all showcase these exact traits, as well. While presented as “shortcuts for the rest of us”, if read without skimming, instead show that it is only through intense focus and hard work that you can arrive at the “4-Hour” destination.

Is Mastery a worthwhile read? Probably for most people.

Is it worth owning? Doubtful.

Grab a copy from your library (like I did) and read it. Reread it. Blog about it. Tweet it. Skim it. Then return it.

the basque history of the world by mark kurlansky

I have long been interested in the Basque people; first introduced to them nearly 13 years ago in an introduction to terrorism class (a year and a half before it was “cool”) with the separatist group ETA.

So it was with great interest I grabbed The Basque History of the World by Mark Kurlansky off the shelf of my local library recently.

Before continuing: wow – Mark’s writing is intensely engaging, wide-sweeping, and both in-line with some of my previous knowledge of the group, and builds and extends that view in new, exciting ways.

Kurlansky has had the opportunity to live in and among the Basque people for years, and brings a great deal of insight from interviews, papers, books, histories, etc that showcase the “Basqueness” of the people in eastern France and northern Spain – aka Basqueland – in contrast to the “Spanishness” of what we think of as modern Spain (and, to a lesser extent, the “Frenchness” of France). For example, it was the Basques who trained the English in whaling, built much of the armada which was damaged so severely in 1588. Basques also largely crewed the exploratory vessels of Christopher Columbus and Ferdinand Magellan (indeed, the commander who brought Magellan’s mission to a completion after his death was a Basque).

For centuries, Basques have been stereotyped as reclusive, secret-keeping, quiet people. They have been known as smugglers across the France-Spain border, rural, and a nation of people who has never had their own country. For millenia they have lived in the same region of Europe – creating some of what has been frequently credited to others in modern industry: in addition to the aforementioned whaling activities, they also contributed to new steel industry by providing ideal iron ore both to their own factories and to the British blast furnaces in the 1800s which utilized the Bessemer process.

So many anecdotes, triva points, and fascinating facts and stories of the Basque people, region, and history are wrapped in The Basque History of the World, that to do true justice would require reading the book.

Interspersed through the pages are recipes for traditional Basque foods, terms, words, and phrases; having never visited that portion of the world in person, I feel like I have gotten a true taste of the people through this book.