Welcome! This site is a bunch of lists.

  • Below is a list of my recent writings, on this blog and elsewhere. I’ll also throw in press every now and then. I hope you enjoy it.
  • Here’s a list of some stuff I do.
  • Here’s a list of tools I use as a startup founder.
  • And if you need a speaker at your next education or technology event I do that too.

Connect with me on LinkedIn, Twitter, or G+.

If you find a typo, have an formatting fix or want to help make this site less hacky, the code is on Github. I welcome contributions, especially from those new to open source!

When Success Doesn't Feel Successful

“Just like how spending money makes you feel rich but is actually making you poor, so the things that make you feel productive, like clearing out your inbox or having coffee with investors, are actually often doing little to get your startup where it needs to be.”

Read more on medium.com
Life Is Long

“I’m advocating for a view of life as a very very long period of time, or perhaps a series of long periods punctuated by periods where we’re not paying as close attention or our brains aren’t moving as fast. But still, I arrive at the same conclusion Graham does: we should ruthlessly edit out things that don’t matter, actively seek out and do the things that do matter, and, perhaps most of all, be present and savor the moment. There’s more possibility and excitement in the instantaneous moments we have direct access to each second than we realize during the day-to-day.”

Read more on medium.com
Why am I doing this?

“I’m certainly not the apogee of startup founders. But looking back on my journey, I’ve been most effective and fulfilled when I listened to the little voice inside that felt like I was off course. Re-focusing on why I became a startup founder in the first place is what keeps me going and gives me direction at the most crucial parts in my startup’s journey – and my own.”

Read more on thestartupcouch.com
Travelhacks for Startup Founders

“The median two bedroom apartment rent is now $5,000 a month in SF. The good news is that there’s an amazing hack to living in Silicon Valley: don’t. Instead, live in your current, cheaper, location and commute once a month for way less.”

Read more on medium.com
Beware the Tutorial to Nowhere

“Increasingly I encounter students who’ve been through dozens of tutorials but are unable to code their own projects. I call this phenomenon the Tutorial to Nowhere and it’s the major challenge for Coding Education: how do we equip students with real skills, not just access to content?”

Read more on medium.com
Startup Founder Therapy

“Founders need a relationship dedicated to their emotional and mental well-being that’s totally separate from their startup. While many have friends or partners that fill this role, the reciprocity of these relationships isn’t well suited to the tremendous needs founders will have during the frequent and intense periods of crisis every startup experiences on its long journey toward success, or more likely, failure.

But there is one relationship that’s different. There is one relationship that can not only withstand the extreme pressures of startups, but is actually designed to absorb them. And that’s the relationship founders have with a therapist, coach, or counselor.

Unlike a trusted investor, a therapist has no stake in your success or failure. Unlike a significant other, a therapist has no need for reciprocation. And unlike your cofounder, your therapist isn’t wrestling with their own doubts about your startup or prospects for success.”

Read more on thestartupcouch.com
Python Game Development for Beginners

A video I recorded for O’Reilly, using Trinket. Users will build several interactive game ‘sketches’, all the while learning concepts like functions, classes, methods, and variables.

Thanks to Trinket this can be completed enitrely in the browser. Hope you enjoy!

Read more on shop.oreilly.com
The Programs I Will Never Write

“We are collectively poorer every time someone doesn’t solve an important problem because of lack access to the skills and support to do so with code.

Fighting for diversity in programming is fighting for the minds that one day will write programs I never could. If coding is a basic literacy, let’s work for an enriched authorship and a more varied literature than we have today.”

Read more on medium.com
The Power of Exactly One Serious Hobby

“Pick your serious hobby deliberately and it will round out your skill set while providing balance to a demanding schedule. Peter Thiel divides personalities into Athletes, who are natural competitors, and Nerds, who are creative explorers. We all fall somewhere along this spectrum but most endevors require a blend of these traits. Serious hobbies are perfectly suited for helping you blend.”

Read more on medium.com
Life During Wartime

“The first rule of wartime is to accept you’re at war. The early stages of a business where you’re developing technology, acquiring new users, and refining the idea, can feel like peacetime. But this is a false sense of security. Many of the failures I’ve seen at startups stem from the founders never developing an urgency about their situation as a small company that no one has heard of and therefore no one cares about.”

Read more on www.exitevent.com
A Nerd, Playing to Win

“You’ve probably heard before from Athletes that the primary determinant of the outcome of a game is often something like ‘mental toughness’. This is absolutely true for Netrunner. Especially in a tournament setting, where you’ll play 6 or more hour+ games in a row, keeping a competitive edge is crucial. This is the most pervasive benefit I’ve derived from playing Netrunner, and playing it to win: familiarity with the must-win moment.”

Read more on medium.com
Playing Cards with Grandma

“As I’ve grown up I’ve gotten a bit of a different perspective on the role that cards played in her life. I can now see that what seemed like a simple pastime was a force for gender equality, religious temperance, and intellectual stimulation for a woman who had precious little of each during her lifetime.”

Read more on medium.com
The Myth of Serious Code

“I see too many beginning coders apologizing for ‘just’ learning Ruby or Python or Javascript, as if they were cheating the system somehow. It’s as if there’s some ‘Serious’ coding that they’re not doing. The idea that some coding languages are more Serious than others is a myth that needs to be disproven.”

Read more on medium.com
Fundraising? Get the 'no'

“Why? Getting ‘no’s requires you to do three key things that will help you get ‘yes’s over time:

  • Get lots of meetings
  • Have a clear ask
  • Keep up momentum

This may sound like a dumb idea, since the point of pitching someone is to get ‘yes’s. Let’s dig in and look at the benefits in more detail.”

Read more on medium.com
Breadth and Depth in Startup Metrics

“Geoff Ralston recently wrote a post on his brilliant (b * d) / c formula for prioritizing product development features. You should definitely read his post if you haven’t. I call it Ralston’s Unified Theorem of Product Development.

As he notes in his post, though, the key to success with this formula is picking the right metric to use with it. Are there any more specific guidelines we can use to pick these metrics? I think so.”

Read more on medium.com
Soylent Freegan, Diet of Champions

“If I were rich I suppose I could use Doordash, Postmates, or other delivery services to bring great food to me any time I wanted it. But there’s still a lot of distraction and cognitive overhead in choosing food and I think I might still choose this diet if I were a billionaire. Like wearing the same thing every day, it’s a strategy for keeping focused on what matters.”

Read more on medium.com
Envy is Your Enemy

“Progress down the path towards excellence means being surrounded by the success of others. This can induce natural feelings of desire to experience others’ success ourselves. Combined with the illusion that others must fail for us to succeed, this generates envy. To avoid the destructive, isolating effects of envy, it’s important to consciously identify your own success with that of those around you.”

Read more on medium.com
Fried OKRA, A Management Framework

“I know that management frameworks are good for me and my team, but they’re just not very appetizing. So here’s an experiment in deep fried management.”

Read more on medium.com
Building a Humble Brand for Your Edtech Startup

“To be sure, great products can overcome mediocre brands and great brands will certainly not overcome inadequate products. But if you’re founding a company, launching a product, or considering rebranding you have the opportunity to create a lasting advantage if your brand can capture your unique positioning in the marketplace.”

A shortened version has been pubished on Edsurge and the full version is scheduled to be included in Jessie Aurora’s Edtech Handbook.

Read more on medium.com
Humility in Edtech

“Humble companies know their place is to augment and amplify their customers, not replace them. Their products equip teachers and students to better do things in the classroom, rather than consume materials. More and more of the most exciting young companies are focusing on building tools for teacher and student success instead of hawking pre-packaged consumables. This isn’t just a coincidence, it’s also a recipe for success in the industry.”

Read more on www.edsurge.com
Brad Miller's Search for Interactive Teaching Tools

“Luther College computer science professor Brad Miller is a true innovator and one of our inspirations here at Trinket. He’s the core maintainer for the Skulpt project, which we use in our Python trinkets, and has built one of the best free online computer science textbook collections around at interactivepython.org.

In this interview, we hear about how he got into teaching, his search for better, more interactive resources, and how he uses interactive tools (many of which he created!) in his own classroom. One of the themes that comes through is how his projects, like all software projects, are embedded within communities of contributors working to solve shared problems. We’re excited and honored to be a part of some of the exciting work he’s doing!”

Read more on blog.trinket.io
We Should Teach Code Like We Teach Languages

“There’s a deeper insight here that I think most people miss. Code is a human language. We invented it! Yes, code tells computers what to do but it’s also how we communicate with each other about computers doing things. This has huge implications for teaching it and the kinds of tools we need to do so effectively.”

Read more on blog.trinket.io
PyGotham 2014: Finding your Teaching Stack

This talk is about finding and selecting the right tools for teaching code (esp. Python), for student levels from Beginner to Expert. I describe and rate several teaching stacks and do a hands-on demo. Hope you enjoy!

Interested in having me speak at your event? Get in touch!

Read more on www.youtube.com
Walt Gurley is Teaching Code at a Science Museum

Elliott: How does teaching programming fit with the rest of the NC Museum of Natural Sciences’ education?

Walt: A key concept incorporated into the museum’s educational program is to provide science for a changing world. There are multiple facets of the educational program, but the VisLab is one of three Investigate Labs in the museum, hands-on interactive spaces where the public can engage in scientific methods and use tools employed by scientists. In the VisLab, we focus on data visualization, where we demonstrate multiple ways scientists use computer-based visualization techniques to understand data from various realms of science, and making with electronics, robotics, and 3D printing. Programming is the the unifying theme: the lab is a great example of the application of programming to varied subjects.

Read more on blog.trinket.io
Panel: The Power of Python: Insights from the Leaders

I was invited to be part of a panel on Python by Thinkful. Tons of fun and I enjoyed learning about the other panelists as well as sharing the Trinket story!

Read more on www.youtube.com
Mike Molony is Solving Project Euler, Interactively

Elliott: We’ve been very excited to see you using our Python trinkets in ways we hadn’t imagined. Your blog does a great job of teaching both Python and computational thinking. What reactions have you gotten from visitors on the new interactive solutions you’ve added?

Mike: The response has been outstanding and I am moving all my solutions to trinkets. Live interaction with Python programs allows anyone to experiment with the results by changing a few parameters, and helps them discover new methods they hadn’t thought of before. My site’s traffic has doubled so far and is breaking records every month since installing trinkets. This has been a very exciting improvement in both exposure and blog usability.

Read more on blog.trinket.io
Let's be Catalysts for Coding Education

“Teachers need to know that they can and should be part of the change that’s coming to education.”

Read more on www.exitevent.com
How to Host a Teacher Coding Event

“An instructor is, believe it or not, optional. It’s much more important to have someone who’s taught kids in your target age group than someone who knows a lot about programming.”

Read more on blog.trinket.io
Beginning Coders need Visual Examples

“When I’ve brought visual examples like this into classrooms, kids are instantly engaged. They can see that there’s something ‘in there’: the turtle. I’ve personified the variable, so they can realize that her name is ‘Tina’ and she’s the Turtle shape on the canvas. Their minds immediately leap to what else Tina could do. I’ve got their attention and we’re ready to dig into the example, change some of the code, and really understand what’s going on.”

Read more on blog.trinket.io
Writing Poetry in Python

“Python has been called a poetic programming language, so I thought why not try writing poetry with it? This is a bit of a departure, but my background in Art History always helps me look for the artistic applications of what we’re doing at Trinket. So here’s a generative poem I wrote in Python.”

Read more on blog.trinket.io
9 Lessons Learned Since Winning Startup Weekend EDU

Lesson 4: Make your competitors your distribution channel

Partnerships with competitors can be just as powerful. Until just a few weeks ago, we were a teaching platform. We quickly realized that by making our interactive technology embeddable on any page like a YouTube video is, we turned each of our competitors into a distribution channel. We’re now in talks for deeper integrations. This isn’t possible for every business, but if you can do it, do. It will pay off for years to come.

Read more on blog.up.co
Open Teaching Stacks help us teach at scale

“Well-developed tools for teaching are crucial to the spread of open source software and programming languages. Stacks like those used by the Young Coders Tutorial and Mozilla Software Carpentry are having national and international impact by enabling more people to teach more often.”

Read more on radar.oreilly.com
Find What You're Best At and Double Down.

“This is the in-progress story of our new embeddable Python Trinkets and how we realized that making our best technology more accessible for our users can be a way to turn our competition into allies.”

Read more on www.exitevent.com
How Pat Counts Teaches Physics with Python

An Interview of Physics teacher Pat Counts.

“Pat: For years the printed textbook has typically been a central component of physics courses. But physics is a science of change, and static textbook pages don’t convey change very effectively. Computers have the potential to provide a much more dynamic environment for modeling change than do ink and paper, and the best learning takes place when students interact with the concepts they are studying.”

Read more on blog.trinket.io
Interactive Python On Trinket

We just released interactive Python, embeddable anywhere on the web. Check it out below and create your own!

Hands-On Teaching Technology: An Interview with Greg Garner

“Most students find a tool, write a piece of code, and at the moment that their programming becomes a real thing (a website, a robot program, a game), they’re hooked.”

    • Greg Garner*
Read more on blog.trinket.io
Interactive Tools For Teaching Python

Here are my three favorite interactive tools for teaching Python to students of all levels:*

  1. Beginner: Turtle (using Skulpt)
  2. Intermediate: IPython Notebooks
  3. Advanced: Nitrous.io cloud development environment </em>
Read more on blog.trinket.io
Why Python Is The Best First Language

5 things students need from a 1st language:

  • A great experience on Day 1. Much like the first page of a book, students need to be ‘hooked’ early on to have the excitement and curiosity to persevere in the face of the inevitable frustrations of learning something new. This can be especially important for those who haven’t been exposed to programming from a young age.
  • The ability to (eventually) program on the Web. Increasingly, the Web is critical to the profession and craft of programming and students should have Web frameworks available when they’re ready.
  • The ability to program desktop applications. While trends are moving more of what we do onto the web, there’s nothing like the immediacy of making and running your first local program.
  • An eventually marketable professional skill. While academic or recreational programming is excellent, the skills we teach should also be usable in a professional context should students choose to use them in that way.
  • A supportive and welcoming community surrounding the language. Once again this is crucial for those who haven’t had exposure to coding from a young age. </em>
Read more on blog.trinket.io
Art History And Teaching Programming Part 3

An active culture of studio visits amongst artists has been central to the development of artistic movements. Programming meetups can serve a similar purpose and are important tools for educators, especially those of us teaching in higher education.

Read more on blog.trinket.io
Art History Major Teaching Programming Part 2

Public displays of art have been essential to developing artistic communities throughout history. But at various points in history, groups such as Academies or Guilds controlled when exhibitions happened, who could show work, and what kind of work could be shown. In 19th century Paris, a group of artists organized a series of alternative exhibitions called the Salon des Indépendants that gave artists a direct outlet to the public and other artists, with no mediating Academic jury. Open source code has played a similar role in freedom of expression for programmers over the past few decades, and forms an invaluable tool for those of use who teach code.

Read more on blog.trinket.io
Become A Source Of Dealflow

It’s easy to get caught up thinking you’re trying to get something from an investor. This is a trap. My test of a good investor is whether they add value in the first meeting though their questions, analysis or advice. So why not return the favor? Find out what—or who—investors are looking for when you meet them and then keep an ear out. It’s that easy.

Read more on www.exitevent.com
Art History Major Teaching Programming Part 1

The best art history class I ever took was about Dutch art, taught on-site in museums and cathedrals in Belgium and the Netherlands. This process of cultural immersion is too-seldom replicated in programming courses. Yet it’s much easier to do with programming than with art history- the culture in question is still operating in the present! Later on in this series I’ll describe how Meetups and Hackathons are the perfect cultural immersion tool for teaching programming, especially to those with relatively little experience.

Read more on blog.trinket.io
Families And Startup Missions That Matter

The overarching message here is that everything you are - your familial status, your race, your gender, your nationality, your professional background, your first language - feeds deeply into the kind of vision you can set for your company. The world needs more companies with more big, powerful, benevolent visions.

Read more on www.exitevent.com
In Search Of A Middle Path For Ed Tech

Finding, let alone keeping on, this middle path isn’t easy. When I talk with Venture Capitalists, most of their eyes twinkle when discussing technology changing education at scale. Fewer understand how learning takes place. When I talk with instructors, they’re obsessed with being better in the classroom. Few care to think about the mechanism whereby they learn of these improvements. Both groups are key parts of the equation we’re solving here. Our job is to integrate them.

Read more on blog.trinket.io
Why Teachers Won't Be Replaced By Software

Software is spreading into every industry, changing how established players must play and even what the rules of the game are. But while many in Silicon Valley and Educational Technology think that software will “eat” teachers, replacing many of them, at trinket we believe software’s role is to create openness, making teachers better and more connected. Far from there being less teachers in the future, we think openness will enable and encourage more people than ever to teach.

Read more on blog.trinket.io
How We Got From Coursefork To Trinket

Today we announced that our forthcoming beta will include a new brand: trinket. This is a story of how our team has helped draw this renewed vision, new brand, and new product out of us by asking us important questions and challenging our decisions. It’s a story of needing to shake out of our comfort zone, and for me, personally, it’s required a shift from visionary to true leader. I hope it’s a story that other founders will find useful.

Read more on exitevent.com
Startups And Living Life Deliberately

A conversation with ExitEvent founder Joe Procopio.


The Startup Giveback idea came up at an event back in September. Elliott brought it up, and it had obviously been on his mind, during a conversation with me and Adam Klein over drinks. The idea is for the Triangle entrepreneurial community to create its own charitable fund, in the form of an endowment that will benefit local charities perpetually. It’s a big goal, which is why I like it and why I’m betting other entrepreneurs will like it.

Read more on exitevent.com
Three Pillars For Open Education

*Despite the ambitious title, I can’t claim I know for sure how we’ll build education’s open future. But by examining the history of open source, I think we can see what shape the answer will take. And so this is the approach we’re taking with Coursefork: the hypothesis that the future of education looks a lot like the present of software and that both are inexorably becoming open.

There are three areas that we believe educators must develop if we are to make this future a reality: Community, Leadership, and Technology.*

Read more on www.hastac.org
Startups And Distractions

Startups are full of distractions. In an accelerator like The Startup Factory, the distractions are multiplied along with the benefits. There’s mentor whiplash, endless events, coffees, and the like. There’s plenty of benefit to be gained from meeting with people about your idea and random encounters. But you can’t afford to go fishing for potential benefits – you need a sure thing that you have control over.

Four Startup Lessons In Four Months

“My original plan with Coursefork was to take the summer, go into a room with lots of Red Bull, and code a prototype. I’m not an amazing coder, so I estimated it would take me 2-3 months to get an alpha. In that alternate reality, I wouldn’t be writing this essay, I’d be trying to test out my prototype in front of users.

By building a team and giving the idea away to them, I was able to see a proof of concept built in a weekend, deploy an alpha in June, raise angel funding, and end up here at The Startup Factory.”

Read more on www.exitevent.com
Don't Sweat the Medium Stuff

*What occupies the rarefied space of the 20% most important things for your startup? Things like understanding your customer, having a killer idea, and choosing the right investors are crucial to your success; you can’t win without them. So it might seem like you should prioritize things on a great big list and just work your way down from there.

A strategy that has worked for me has been to attack my Great Big List from the top AND the bottom simultaneously.*

Read more on www.exitevent.com


I've started a startup called Coursefork with cofounders Eric Martindale and Brian Marks.  We're an open education startup looking to become the foundation for education's open future, where educators of all types can create, share, and modify course materials for anything from a workshop to a university course.  I'll be open-sourcing my materials for the graduate level programming course I'll be teaching at UNC in the fall on Coursefork.  In the meantime, check us out!

Pitching Your Pre Seed Startup Part 2

*What are YOUR goals? This is the first question you should ask yourself when looking for investors. It’s the question I’ll leave you with, because it’ll take some time to think through.

You need to know what your goal is so that you can effectively communicate that goal. Plenty of investors will not be a good fit for you to achieve your goal, and that’s OK. Just make sure you keep the conversation focused on goals so that all parties can quickly evaluate whether a deal makes sense.*

Read more on www.exitevent.com
How To Pitch Your Pre Seed Startup Part 1

Fun aside: this was published on the day we officially registered the business with the Delaware Secretary of State. We got our first term sheet a few days later.

Coursefork is in the midst of pitching to angel investors and we’ve learned a ton, so I thought I’d take the time write a post that can hopefully save you time and/or effort. There was a distinct shift for us a few months ago when investors started taking meetings instead of giving us the “keep me updated.” This is how we got there.

Read more on www.exitevent.com
Raspberry Pi
My wonderful wife Erin bought me a Raspberry Pi for my birthday in November 2012.  It's changed the way I think about computers and coding education.  I wrote a long form post about my latest ideas on HASTAC.org.  You can read more by checking out my G+ feed, and below are some selected posts from it.   I started Comp-core.org, the Computational Core Curriculum, to collect and collaborate on course materials (and code, via our github repos) for those of us who teach this material.  It's small now  I first got this idea from a panel I moderated in the Fall at UNC called Code in the Classroom.  A little wrap-up of that event, which featured profs from Duke and UNC, is here.   So check it out and shoot me an email or  join comp-core's open google group if you want to contribute!   Some G+ Posts I've written about the Pi:
VNC running into my Pi from my iMac:

Finally,  see also this post on HASTAC, which is a longer case study of how my VNC project was enabled by the modern Internet.

How I Use Hastac

Basically, HASTAC is a sounding board and sketchpad for ideas. Pretty much all of the posts I’ve written have felt experemental, tests of ideas. The reponses I get are always energizing, as I hope my comments are to others’ posts. Here is a case study in how posting some experemental ideas on HASTAC has blossomed into real-world expereinces, virtual connections, and tangible improvements to my ideas.

Read more on www.hastac.org
Three Aspirations For 2013

Read more on www.hastac.org
Inspired by this post by Harj Taggar, I took email off of my iPhone in September 2012. After a week or two, it's really helped me stay focused while I'm away from the computer. That, combined with Rescue Time when I'm at my laptop, has helped me be more efficient with the hours I spend working. I'm interested in this both from an information science perspective (when every device can do everything, how do we make space for thought and focus?) and from a personal perspective (how do I achieve what I want to achieve and leave time for life?).  I'll try to pay attention to both aspects.   Harj wrote his post after 6 months, so I'm going to give it plenty of time before I make any sweeping pronouncements.  Stay tuned and I'll post my reflections here.
I'm learning Clojure.  I'd like it to be my primary language. I spent tons of time evaluating languages, and have compiled my notes into a stub of a curriculum I'd like to teach at UNC one semester.  For now though, I thought it might be helpful to throw up a few links that I've found particularly helpful.  

What is Clojure?

To varying degrees of resolution: * a programing language * a LISP dialect * Clojure is a dynamic programming language that targets the Java Virtual Machine (and the CLR, and JavaScript). It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language - it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.  (from Clojure.org)
The features of Clojure that caught my attention
  • Edit code at runtime
  • Prototype blazing fast
  • Macros: programs that can make other programs at run- or compiletime
  • LISPy languages make sense to my brain
  • ClojureScript
  • Companies I admire like Factual like it and are supportive
  • Big companies don't use it, but many startups do (each of these is a plus)
  • Runs in JVM
What has been built with Clojure?  Glad you asked

Trying out Clojure with no install

Trying out Clojure is super easy, thanks to the geniuses who wrote 4Clojure.com.
  • Open a REPL in one tab (tryclj.com is a good one)
  • Open one of the Clojure Problems in another tab
  • 4Clojure problems are fill-in-the-blank code.  The REPL will help you test pieces of code.
  • Submit - If you got a green light, congrats!  Move on!  If not, repeat from the top
  • (Optional) Create an account to track your progress and play Code Golf
Note there is no compiling needed here.  You are running a real Clojure REPL in the browser.

Installing & Learning More

The Clojure koans are great for learning.  I actually started them before 4Clojure, but I list them after because they require an install.
  • Get started
  • My setup, shown below, is two terminals, one with VimClojure editing a koan file, the other running the koan script.  Edit and save (:w) in vim and the koan script will automatically move on to the next blank (or koan that you got wrong).  It still seems magical to me that I'm editing code while a program is running.

Note: Getting the cool highlighting and rainbow parens are described below at the VimClojure link.


There are all sorts of great blip.tv videos on Clojure related topics.  (I recommend this one featuring Rich Hickey, the originator of Clojure.  He's not talking about Clojure per se, but design/programming techniques 'from the hammock', using your 'background mind'.  Watch the video to see what he means).  

Getting Serious with Clojure

I'm just barely serious with clojure, so this is a stub.
  • VimClojure - I started out using pico, which served me well, but now mostly use vim for terminal editing.  Set up rainbow parens in vimslime as described here.
  • Clojure Eclipse Plugin - Everyone's favorite IDE (ok, a lot of people's favorite) has a Clojure plugin, called CounterClockwise.  Instructions for a nice setup are here.
  • Emacs - Emacs is too smart for me.
I'm spending the summer of 2012 working on a Phylogenetics project with NESCent, supported by Google's Summer of Code program. I'm about 4 weeks in now and have really enjoyed things so far. For a real-time view into what I'm up to, check the project's public Google Folder, wiki page, and github project page. For a view into something I'm working on this week, check out this recently added wiki page!
16,000 Words
In one image:

...Masters is turned in!

GooglePresentations Think PowerPoint but easier and everywhere. Google still doesn't have the tight integration that Office does, but for me that's more than made up for by the ease and access. Prezi An excellent tool for creating show-stopping presentations. The software uses vector graphics and takes advantage of that fact to allow near-infinite scalability. What does that mean? Take a look at a Prezi I made about Prezi's innovative user interface: (press the play button and wait for it to load. use the mouse or arrow keys to navigate)   My other publicly available Prezis are here.   I always use Prezi now, unless I'm collaborating with people that prefer Google.  As a last resort, and in Enterprise situations, I'll use Microsoft Powerpoint.
Kinect Hacking!
My mother in law gave us an XBox 360 and Kinect for Christmas.  My adapter just came in the mail from Amazon (using free 2 day shipping, of course) and...well, I'm quite excited to start playing. plenty of resources out there.  I'll let you know what I end up using

There's a big difference between knowing no Linux and knowing a little Linux.  I highly recommend getting to a little Linux.  It's so easy! Try Before You Buy ...Well, the Linux is free so you'll never have to buy it.  But the best way to figure out what it is and play around is using VirtualBox.  You can load Linux within your current operating system. Killer.  Oracle spearheads the free/opensource project, so you know it's got some firepower behind it.  One day I'll post a tutorial on setting up VB. After you load it you'll be able to create new virtual machines.  Simply download the .iso for your preferred distribution (see below) and mount it as a virtual CDrom.

Elliott's Guide to Linux Distributions

Start Here: Ubuntu Ubuntu is quickly becoming the standard for non-server, non-expert Linux.  That said, there is perhaps the largest community of experts working to tweak and improve it.  It's also backed by a company- Canonical Ltd- which, despite the philosophical reservations of some idealists, makes the end product higher quality in my opinion.  You can even buy hardware pre-installed with Ubuntu from system76.com.  Pretty sweet. Ubuntu is focused on ease-of use, and it delivers.  It's also customizable and powerful.  A great blend, ready for almost anything you'd like to throw at it. ### Research Computing: the RedHat Clan Red Hat is another corporation that backs/spearheads open source projects.  RedHat, Fedora, CentOS, and even TarHeel Linux all owe some aspect of their existence to Red Hat the company.  RedHat Enterprise Linux is their flagship product, and is the backbone for a significant chunk of the Internet we know and love.  Fedora is the community-developed version of their software where they test out new features.  It's re-versioned every 6 months or so, whether it needs it or not, so it's great for cutting-edge, not so great for your standard user (that said, it's much much more stable than even a few years ago).  CentOS is RedHat Linux with the logos taken out. TarHeel Linux is UNC's version of RedHat Linux supported for research computing.  Check out Emerald, UNC's research cluster, for info on how to submit massive MatLab or Mathematica jobs to 700 processors. ### The Fun world of RAM only: Puppy Linux Puppy will fit on a small thumb drive.  It's blazing fast and tiny.  More soon. ### Style, Substance, Slimness: #!CrunchBang Linux I've just started playing with this distro virtually.  It's very slick.  More soon.

Database Management Software


SQLite is a simple, lightweight, cross-platform relational database sponsored by, amongst others, Bloomberg and Oracle.


Believe it or not, I learned Access back in 7th grade.  I just remembered that.  Nothing I learned really stuck with me because I didn't understand relational databases at the time.  See below for more on that.  Like most Microsoft products, Access is very powerful and widely misunderstood and underutilized.

Filemaker Pro

Filemaker Pro was bought by Apple at some point.  The suite of products includes Bento, a template-centered system for personal information management to Filemaker Pro Server, a multi-user environment.


Real men (or hapless students) use the command-line based SQL*Plus.  SQL Developer is the graphical interface.  These products are database management systems.  They both manage Oracle's relational database, called Oracle v11.

Databases Proper

Check out my Reading list for a sense of my perspectives on databases.  If you find any inaccuracies or imprecisions in the below, let me know. I'm very interested in different types of databases and their implications for information, knowledge, and scholarly practice.  In contrast to the management software discussed above, the below focuses on the underlying structural options for storing and organizing data. Relational Databases Relational Databases run your life:  they contain your eBay account, your Hospital Records, your Drivers License info, etc, etc, etc.  These things keep track of your membership in things, your account values, store inventories, etc.  They are excellent for 'complete' systems, where the user can define ahead of time what kinds of data will go into the system and, crucially, is certain of the content.  Big, subtle problems come along, though, when RDBs are misunderstood or stretched beyond  their capabilities (or, as I'm investigating, when indeterminacy or functional indeterminacy enters the picture).  Much like statistics, this system is only a grammar that relates elements in predefined ways.  I'm working on a formal evaluation of the capabilities/pitfalls of RDBs. There are many ways to use this one basic format  Access and FileMaker both support the Relational Model (developed by E.F. Codd), as does database giant Oracle.  SQL is supposed to be a standard interface protocol (it's not really a language) to the relational model. Relational Databases break related data into tiny bits so that they can be more efficiently coordinated.  How do you know where to make a break?  Well, there's a whole science to database design (and the dreaded Normal Forms), but essentially you identify fault lines within the data for aspects that vary independently of each other.  For instance, 'Author' varies separately from 'Title' in a book (e.g. one Author writes many books, or many people write a text called 'Biology').  But within 'Author', we can specify 'First' and 'Last' names.  We could specifiy 'First letter,' 'Second letter', etc of each name.  But if, in our case, these series of letters always appear together, we know we've gotten granular enough.  Knowing when to stop splitting up your data is the art of database design.  There's also a science that can tell you when splitting your data up (e.g. into individual letters) won't be very efficient.  That doesn't mean it's not desirable, though: I believe that genetics databases split each nucleotide out and use references to the nucleotide in allele descriptions rather than storing 'ACCG' etc.  Ok time to zoom out again. Many people use databases and they can get very complex.  So far I haven't found many people with the technical skills to manipulate them and even fewer who can give a good conceptual overview.  Hopefully the above is serviceable.  Please do shoot me an email if I've gotten it wrong. Data Warehouses ('Atomic Data Stores') Large organizations (particularly in Healthcare and Finance) use Data Warehouses to analyze massive amounts of static data.  The entire industry of 'Business Intelligence' is pretty much predicated upon their existence.  They are a type of Relational Database utilizing a special data model called a Star Schema (or, when it's more complex, a Snowflake Schema).  Basically, the schema collapses the standard relational model down into Facts (the 'atom' of atomic) and dimensions.  Roughly, the Facts correspond to 'measurements' you've made and Dimensions are aspects you want to analyze.  It's all a design question, though. The difference between a data warehouse and a regular relational database is that the latter is operational: it's updated on the fly.  Warehouses are for storage and analysis only.  Their schemata (or, for mere English speakers, 'schemas') are optimized for retrieval and comparison.  If you start trying to update the 'facts' you'll have to go through all of them to make sure you don't introduce any irregularities. Document-Oriented Databases (via Lew Hassel) Above we talked about the field 'Author' and how it might be reasonably broken up into 'First' and 'Last' names.  The details of this are part of a database's schema.  Think of a schema as a blueprint, or plumbing pipes, or electrical wiring.  And just like those systems, if you didn't plan ahead for certain functionality, chances are trying to add it will break the model.  So to break the model above, all we have to do is try to add a 'Co-Author'. Imagine trying to add a sink where there wasn't any plumbing.  That's realizing that what you're trying to do wasn't anticipated in the design.  It's frustrating. Document-oriented databases try to circumvent all this by being build around 'documents' instead of into a rigid schema.  Think of them like a modular house that you can plug together like legos: you will still get horrible results if you don't plan to have things meet up, but the pieces can be more autonomous and so it's easier to add on as you go. Document oriented databases allow the functionality we love in Apps like GoogleDocs. An interesting feature here is that 'documents' are really just a grouping of fields.  There are no specified relationships between documents or fields (i.e. no foreign keys), so the relationship between the fields is latent and dependent upon the capabilities of the field's data format.  For instance if I want to know if a 'document' (say, this blog post) was created by the same author as the rest of the blog posts here, I'll just search all the posts' 'Author' field and see if they match up.  This is a consequence of the document-oriented databases' 'flatness'- their lack of rigid relations. The document orientation ('persuasion,' if you will..) is great for semi-structured content like blog posts.  It would be horrible at tracking your bank account balances. Object Oriented Databases I don't understand object oriented databases very well.  More when I do.
Data Curation
In early November I was asked to talk about Data Curation for Art Markets research by the Duke Art, Law and Markets Initiative (DALMI) conference.  For a small, interdisciplinary, international and growing field like Art Markets, data curation and sharing has the potential to be a powerful catalyst for growth.  Currently, sourcing data from archives or previous publications can be a huge part of the work- before analysis begins.  Economists may not have the historical background to collect or evaluate appropriate data, while Art Historians may not have the quantitative toolsets they need for effective analysis.  Collaboration has been the solution for the field, but shared, vetted, appropriately described data is the way forward. See all of my [public] Prezis here.   Prezi 1: Data Curation in Art Markets Research Prezi 2: DALMI Next Steps
Diagramming & UI
OmniGraffle Omnigraffle is the Big Kahuna of diagraming programs.  I use it extensively.  There are complaints I have about it, but they are the kind of complaints you have when you find a piece of software so useful you know all of its quirks.  That said, Omni group's software ergonomics pretty much beat anyone's. Visio Visio is the de-facto standard for Windows diagramming.  I don't like to use Windows, so don't have much experience creating content with Visio. You may like it though.  Not to be confused with Vizio. Gliffy Gliffy is a neat web tool that wants to be a web-enabled version of OmniGraffle. Not only is it a great diagraming option for Macs, it's one of the best I've found that works with Linux. (sorry, Dia...) It runs on the web and there is a free version. It's pretty powerful, and certainly more convenient than box-bound software. It's not as powerful as Omnigraffle, though, and the interface isn't as refined (for instance, there's no equivalent to holding down alt to duplicate elements). I used Gliffy back when I was just starting to learn about ER diagrams: I haven't found it useful enough to upgrade beyond the 5 documents you get for free.  Instead, I bought Omnigraffle. UX Evaluation TechSmith's Morae is an interesting- and very expensive - entry into the UX Analysis Space.  It combines screen & webcam capture with indexed notetaking form multiple observers. I'm sure there are more programs in the UX space.  Stay tuned.
Data Visualization
****Update Via Richard Marciano's Digital Humanities Class: GeoCommons: georeferenced data in the cloud GeoCommons is a sharing platform for georeferenced data, from .kml to ArcGIS and other pro formats.   BatchGEO: Upload a spreadsheet, get a map Free-as-in-beer mapping.  The free version looks quick and easy, and the pro version looks decently powerful.   ***Update This isn't so much data visualization as data presentation, but there're are neat things being done with WebGL fight now...For instance:  (note that you may need Chrome to view some of these) ************* Protovis Beck Tench's awesome site has a link to Protovis, a free open source tool developed at Stanford's Visualization Group.  Click below to check it out:

I think you'll see if you visit Beck's site, though, that nothing beats pen and paper...In her hands at least..



Adobe Flex I found out about Adobe Flex from The Stanford Natural Language Processing Group's Dissertation Topic Visualizer.  Looks powerful & clean: google-viz like.  Output is .swf. Like a lot that Adobe does, expect it to be slick and powerful.   Microsoft Excel I debated putting I went ahead and put Excel in strikethrough.  It's the go-to dataviz tool for the masses, and is great at what it's designed to do.  But if you have limited needs there may be something easier and freer.  And if you have advanced needs, Excel's extremely limited/hard to use visual formatting options will drive you up the wall, as they did to me during my art history thesis research. Linux Tools IBM has a great rundown of Data Visualization Tools for Linux. (Via classmate Lisa Speaker) Tableau Software Tableau is an expensive but interesting option geared towards business intelligence.  I'm keeping an eye on them... (Not to be confused with Tableau, LLC, forensic data analysis hardware provider) Google Fusion Tables This is a labs product, so don't expect fireworks.  But take heart that Google has projects like this up its sleeve.  Basically, you connect to or upload data and then select from some canned visualizations.  The components of the vis are open to public comment.  An interesting but mildly useful feature as implemented. More to come! - Meanwhile, check out this sweet post on visualization by Hilary Davis.  (Thanks to Alex Gallin for being the reason I found Hilary's post)
Growing up, I was the kid who never took notes or did homework assignments.  I would read alot, but not always the things that were assigned for class...  The upshot of all this is that I'm uncommonly knowledgeable about random things and have stunted organizational skills. I do homework now (mostly reading), and man, it takes a lot of time and planning!  I've had to impose order on my mind and on my time to get it all done.  I started trying to think in a structured way about tasks, priorities, and my capacity to get things done.

There's an App for that?

A few months ago I started looking into a to-do list program.  There are millions of them.  Some are a one basic list, others have nesting and categorization, and some offer syncing across all your devices.  The good ones seem to be expensive (though there are some free ones to try too).  Dig through this list if you'd like to see some offerings. So, not wanting a new system before I could prove to myself that I could use a to-do list at all, I decided to use what I already had.  Last semester (Fall 2010) I started using the to-do list capabilities of Calendar for Mac, synced using MobileMe.  Basic, sturdy, but with an egregious lack of support on the iPhone.  The interface was clearly not tweaked, either.  Apple seriously fell short on this.  Even the recent major calendar update had no changes to the to-do list.  Bummer. But using a to-do list was great!  I could put all my readings, etc in there and, though the list itself got HUGE, Calendar let me set it to only display those items due within the timeframe I was looking at (usually a week at a time).  Which was great because I also started using the Mac calendar system heavily (again synced with MobileMe), and I could tick off items while planning my week. Somewhere along the way I started to hear about the Getting Things Done system. This isn't a computer program but a system described in one of those self-help type books on productivity.  I'm extremely suspicious of such things.  But I'm always willing to give a suspicious listen.  The basics of the system are to state your goals, align your projects with your goals, break your projects into actionable items, and do your items within their necessary contexts.  I started planning in the GTD style, and quickly found that a simple to-do list won't, so to speak, do.  May sound confusing at first, but, as I hope to show with OmniFocus, the software based on GTD I've decided to use, it's pretty powerful. I'm still not buying the book, though...

OmniFocus offers a 14 day free trial period.  The first time I tried OmniFocus (spring 2010) I didn't quite get it.  Now I know that, before trying a heavy-duty productivity program,

  1. you should first start living with a perpetual to-do list and get used to that first and
  2. you have to have a LOT of things to do before nested to-do lists, projects, and contexts really pay off.
So my experience with the Mac to-do list wasn't all for nought and my crazy grad school schedule ends up being a plus.  I'd suggest picking a free to-do list solution, living with it for a week or two, and then doing the OmniFocus 14-day trial.  Make sure it's a busy time, too- otherwise you won't see the benefits. Aside:  There's no free trial on the iPhone version of Omnifocus, but, if you find yourself in the moderately-in-need of a to-do program category, this might be the better solution.  It's got most of the major functionality and if most of your to-do aren't connected to links to pdfs (i.e. grad school reading homework), you may not miss the stuff the desktop app has.  Also, the desktop software is a whopping $80 ($50 for students), while the iPhone app is only $20.  For those of you hesitant to buy software, seriously consider this.  It's a great app under active development. The Library
Screenshot of my Projects Library. This view is where I do my planning, listing out all the actionable things I can think of for each project.  There's even a place, the Inbox, to dump to-dos and assign them to projects later on.
The Library is where you plan.  Think of all of your goals, and make sure you've got a project that corresponds to each.  So, if you want to keep in touch with friends, make the Keep in Touch with Friends Project.  Then start listing the actionable items (buy stationary, set up facebook account, write a letter to Johnny, friend Martha on facebook) within that project.  You can make items recurring (though the recurrence support is a little bit basic...), to support Write Martha a Letter popping up every 2 months, call Johnny every week, etc. If other Projects are related to each other, such as your classes in grad school, just group them in a folder.  You can even nest projects within other projects. Focusing A great thing about organizing things this way is that you can highlight a project or folder and Focus (Ctrl-Cmd- F).  This will hide everything not connected with the project(s) or folder(s) you selected.  This means that you can forget about Martha long enough to get your schoolwork done.  It also lets you make a to-do list of fun stuff (yes, fun stuff) that you can focus on during the weekends.  Forgetting about other stuff is crucial to getting the thing at hand done, and OmniFocus supports it.

The screenshot above includes an item, 'Revise Personal Productivity Post'.  ...Check!

Notice that I have lots of folders within 'School' and they're not all relevant all the time.  So, for instance, when I'm doing my homework, I'll focus only on the 'Class' folder to screen out stuff like the W-9 I have to fill out, etc.

Contexts help you tackle tasks that require similar resources - going to the Library, for instance - at the same time, regardless of which project they're for.
Contexts are a way of looking at tasks through the lens of what resources you have.  For instance, say you're on your Mac and want to get some things done.  The Mac context allows you to filter out tasks that requre your girlfriend or being on campus, so you can concentrate on what you can get done now.  I really like this view for things like getting library books, filling out paperwork in x office, and going to the grocery store. Doing what you can now is a great way to be super productive.  Need to grab a library book?  Add the task, select the Library context, and put it on your calendar during the week.  Any other books you add to the list in the meantime will be waiting for you in the Library context so you can make sure to get them all done when you're there.  Same thing with groceries, filling out forms in your department's office, and responding to emails.  You can even make a person a context, so you can remember to do specific things the next time you see your significant other or your tax guy. Interface Like OmniGraffle, another excellent product from the Omni, the interface is excellent.  I have some small gripes with it here and there, but in most cases there is a way to do everything I initially complain about that makes better sense than how I would've done it.  That's the classic tradeoff in interfaces- intutive may not always equal efficient.
That said, in other cases, like the menu bar to the right, it works exactly the way you'd expect.  You can tell it to display overdue (red) and/or due-soon (orange) tasks by context (as shown).  The icon will always show you the total.  (I was busy when I took the screenshot to the right...right now, the icon only says 2, one of which is writing this post...). As a professional ap, pretty much everything is customizable.  So, above, where I told you that Red means overdue...well, you can pick any color you want.  The fonts for various sections of the ap are all separately formatable in the preferences.  Keep that in mind and take a second look at those screenshots. Upcoming:  iPhone app review OmniFocus supports syncing across multiple macs pretty well, but it also syncs with its spiffy iPhone app.  I'll review that app, with screenshots.
Citation & Literature Management
**Update:  Mendeley is now the center of my scholarly workflow.  In about 8 months of using it, I've accumulated 1500 scholarly papers from school, the lab, and my personal research, using about a gigbyte of cloud storage. How else could I have managed? Elliott Hauser's citations It offers syncing with a web account (500MB free), so my citations AND pdfs are always nearby.  It allows group joining/sharing of PDFs (though the group has to be closes/restricted access, to avoid copyright violations, I suppose). It's got an excellent full-screen PDF reader and annotator:

There's even an iPhone app that lets you read or send citations and papers from your phone. I really dig it.  I'm using it manage all of my class readings (extra love to professors who provide links to PDFs), take notes, and collect interesting citations.  Along with [intlink id="340" type="post"]OmniFocus[/intlink], it's an indispensable part of me getting things done. Highly recommended.  It's free-as-in-beer, which means you get some in the hopes that you buy more.  I think it's definitely worth it.  I'll likely start paying for web space once/if my 500MB gets filled. Ed.:  I started paying for extra space, then got mondo space for free when I became UNC's Mendeley Advisor  in May 2011.  But I'd still be paying the $5/month even it it wasn't free.  It's that awesome. ____________ **[Older] Update:  I got started on Mendeley.  Am setting it up now. [caption id="attachment_261" align="aligncenter" width="567" caption="Mendeley does support Zotero and CiteULike live-updating!"][/caption] I also have set up Zotero, but don't really like it because it's stuck in Firefox.  I use Safari most of the time because Firefox is so dern slow. [caption id="attachment_265" align="alignright" width="304" caption="Mendeley's link-based importer in my QuickBar in Safari"][/caption] Even if I don't ever use Zotero myself, this integration means that I can join Zotero-based groups.  That was a big concern for me: making sure the system I chose could play well with others.  I'm at a grand total of 3 sources right now. So far I'm impressed with Mendeley's link-based import (even though it utilizes pop-ups). As I put Mendeley through its paces, I'll pay particular attention to:
  • Adding web-based sources
  • Adding sources directly from the Library's page
  • Annotating and noting on sources (e.g. pp. 112-123, or 'as contra Foucault')
  • Searching through online groups and publically available bibliographies
  • Searching through others' annotations
Heurist I learned of Heurist Scholar during the Virtual Cities Digital Histories Symposium.  Haven't tried it. _________________________________________ The below written before I had chosen a system to try: When I was an Undergrad at Duke they provided Endnote (it was v4 back then if I recall) as a citation manager.  The newer versions of Microsoft Word have had citation support through the powerful, underutilized, and clunky document field functionality (the same features that will give you a Table of Contents or even a linked index). RefWorks is UNC's offering to its students and faculty.  It's a web-based citation tool and, like all niche tools, has come core functionalities that make it worth considering and some drawbacks that users love to hate. Zotero is the free open source offering.  I'm a big fan of free open source, so I really want Zotero to rock.  And it looks like it's come a long way and does rock.  See niche software comment above, though.  It's first on the list to test because if it's good enough I'm done looking.  I'll not be at UNC forever, and I don't want to have to pay for access to my citations if I am using RefWorks. CiteUlike is another contender.  Recommended by University of Chicago's Mark Olsen. Mendeley is another contender, with both a web and an application-based client. First mentioned to me by Jason Priem. I'm currently selecting from these alternatives because I desperately need to manage my lit.  Stay tuned for thoughts and reflections. Aside:  George Mason's Center for History and New Media is the impetus behind Zotero.  As this software becomes more and more useful in the production of scholarly work, it's interesting to factor a project like Zotero into the mix.  The scholar who provides serious and ongoing help to the production of Zotero may benefit his field- and all of academia- in a way that's hard to measure.  Ultimately, unless his institution supports this contribution, his open-source contributions will be deleterious to his tenure chances.  I suppose the non-tenure track staff/associate research prof plug belongs here, as well as a big up to tenured profs who spend time & energy on open source.
Health Records
This is a stub of health records and health informatics standards and resources.  As a Carolina Health Informatics Program student, I'm studying all of these. The department of Medical Informatics at Columbia University maintains the Medical Entities Dictionary, a concept-oriented repository with links to many of the vocabularies and codes below. The Veteran's Association maintains an open source health records/clinical support system called VISTA HL7 is a pioneering data interchange format for health data.  It focuses on interpretability between different formats.    This allows specialist medical fields to choose best-of-breed equipment and information systems without compromising the ability to communicate with other aspects of the health system. LOINC is a controlled vocabulary for clinical and laboratory results.  This allows standardization of observations like "patient had a temperature of 105"  "Strep positive" etc. CPT is an established standard of medical procedures maintained by the American Medical Association.  For instance, '26010' is 'Drainage of finger abscess; simple' ICD-9, ICD-9-CM, and ICD10 are standardized, hierarchical controlled vocabularies that have their origin in linking billing with the patient's chief complaint.  Like all controlled vocabularies, they have their problems.  Also, since they're used for billing, they're not perfectly representative of diagnoses, etc.  They demonstrate the huge potential of standardization, though, and are the basis of many secondary analyses of clinical data. SNOMED is another medical controlled vocabulary that focuses on coverage scope and multilingual support. UMLS is maintained by the National Library of Medicine.  It is the most comprehensive system (6.4 million concepts from over 100 source vocabularies) and subsumes and interrelates many of the systems above.  It includes a Metathesaurus, a Semantic network, the SPECIALIST Lexicon, and a Metamorphosis configuration tool.  There have been concerns with this service's efficiency and precision, but it's pretty much the only attempt to unify so many standards. Check out the National Center for Biomedical Ontology for more resources and calls for proposals.