I am adjusting to a mobile digital life: the acceleration of convenience
The first time I used a computer was in 1962 when I was 11 years old. It was not convenient: my Dad had to take me to his office to use one of the early timesharing systems using a local teletype machine with punched tape for saving and reloading stuff. A few years later I took an extension course at a local UC campus, FORTRAN with punched cards with nice keypunch facilities: definitely a large improvement!
In the 1980s life really got good: my own Xerox 1108 Lisp Machine and an Internet connection.
In the decades starting in 1990 and 2000 there were continual improvements but progress was gradual: better Internet connections, the development of the Web, improvements in software tools like code repositories, IDEs, etc.
Skipping ahead to the present time, I am trying to adjust my digital life, including my work and writing flows, to a more mobile lifestyle.
Probably the biggest change for me is that I used to keep just about everything that I worked with and touched in a repository (first cvs, then svn, and now git). I no longer need incremental backups of all of my work because for low priority stuff I can always dig back in time using simple Time Machine backups of my MacBook Air. I do still use a lot of git repositories for high value assets like:
- Software development projects for customers
- My open source projects at github
- My own high value projects such as software and other assets for my web properties and commercial software products
- All assets for my writing projects: books I have written in the past, my current writing project, etc.
- A million + 1 small code snippets and small bits or program code organized by all languages that I use (Common Lisp, Java, Ruby, Scheme, Haskell, Python, Prolog, etc. (whenever I figure out a new coding technique, how to do something generally useful, etc., I always like to save a little code snippet to refer to later)
- Favorite pictures taken in my lifetime (old ones are now digitized)
- Favorite videos taken in my lifetime (lots of digitally converted 8mm videos from my childhood through recent vacation videos: everything!)
- All of my personal notes organized by travel logs, personal writing, etc.
- A large fraction of the huge amount of music that I have purchased, organized by artist (and sometimes also by album)
- Most of the eBooks that I have ever purchased if they are not in the Kindle format.
I am careful to not keep anything that is highly proprietary on DropBox (i.e., assets for customer projects). I used to also keep well organized directories of useful reading material found on the web (e.g., PDFs on AI, machine learning, NLP, server deployments, etc., etc.). I have very recently made the rather large step in throwing all of this material into Evernote, backing it up, and deleting it.
The really big win in relying on DropBox, Evernote, and the Kindle platforms is being able to switch between computers easily and also have most of my stuff available on my iPad and Droid cellphone. I use several computers and it is a slight nuisance doing a git pull every time I switch computers. I like to use mobile devices for reading and general thinking time and this is a lot easier now. I have been running Apple's beta OS X Mountain Lion that has iCloud integration. There is a chance that if iCloud is very well implemented that I may slowly transition away from DropBox to iCloud, and switch to using an iPhone. However, DropBox is very well implemented so Apple would need to make iCloud's implementation across all Apple devices very, very good for me to make the switch.
Saving the last big win for last: a mobile digital life promotes more of what Clojure creator (and general programming mentor) Rich Hickey calls "hammock time": the time you spend away from the computer thinking. I still use a pad or paper and a pen for away from a computer thinking time, but I find mobile devices augment this activity nicely.
Mark,
ReplyDeleteHow do you keep your code snippets organized?
Do you use some sort of tags?
Why not Gist?
Geert
Hello Geert,
ReplyDeleteI keep bits of useful code in a simple directory structure, one sub-directory for each language. I use long descriptive file names to describe what the snippets do.
I do this for bits of functionality that are too simple for a proper (reusable) library. For example, how to iterate through directories in Java, how to do a REST service call in Ruby or Python, etc., etc.
This is not DRY, but once I figure out how to do something, I never have to figure it out again.
Best regards,
Mark