Coming to programming in 2020: a year's reviewAll I want for Christmas is… an annual Free Software Foundation membership.
A year ago I did not really understood free software (or DRM) – and had long forgot the little programming I once knew.
How did I get here?
Why program if you work in the humanitiesMy abbreviated answer has to do with the digital literacy component I teach in my cultural studies course. I did not feel I could, in good faith, teach the practices of software/platforms as a service (SaaS/PaaS), e.g. digital mining, and then use such software in my course.
But I also wanted at least minimal participatory exposure to the knowledge domain that is programming as I thought this would improve my ability to teach it. I am consciously incompetent – but got to experience for myself how projected completion deadlines can change when tweaking a line of code suddenly throws everything else off.
I am also fascinated by multicoding esolangs. This is related to an unfinished childhood dream (Apple IIe kiddie programming, anyone?)
That interest was renewed when I began looking in to the variety of SaaS and PaaS either designed for or that could be used for teaching purposes. I spent days looking at the design – but also the terms of service of dozens of such services, and the latter was not always easy to find.
As I already have a full teaching load and other obligations, I literally lost sleep to do this research so I can understand that not everyone would be prepared for that level of engagement.
My conclusion was that, because my needs were quite simple, I should just build what I was looking for myself. The process was documented in this dedicated post. I have since discovered that the content management system (CMS) I chose uses Java Script (JS), which I am not currently a fan of.
If it’s broken, maybe we can fix it togetherSpeaking of JS: that is the perfect example of where a little bit of knowledge can lead to incredible realizations. In addition to anti-spyware/privacy/security browser additions (e.g. Privacy Badger, uBlock Origin, DDG Privacy Essentials, HTTPS Everywhere, tailored configurations) one now needs a block against invasive JS. My favorite is the GNULibre JS. But I can only use that one when I am doing basic internet searches; it is more practical to use the temporary permissions of NoScript – which reveals how much junk is activated on sites, and allows one to permit the minimum (e.g. Vimeo: which first shows one set of code to permit, then on allowing that can include multiple other packages, including scripts, etc., so using such apps is not for people who seek streamlined engagement with the internet). Being wary of JS shows how much of the internet ‘breaks’ once you decide to not allow just anything. I already don’t visit certain PaaS as it is, and agree with Mark Hurst who writes that we need to make sacrifices if we want a better digital experience.
The value of tools that augment freedomFor these reasons, when I hit a wall with some of the free software I use (e.g. emacs), I don’t return to other software because a) free software aligns with my values (e.g.), and b) I really appreciate how free it is in that the design does not dictate the use.
Not even children like to be talked down to… That said, though, I experienced a serious problem when I found a publication that was a perfect match for an article I wrote and tried to use the journal’s formatting package in emacs, specifically org-mode, together with org-ref and LaTeX. Trying to implement that package caused me to be unable to even convert to PDF, which I had been able to do when that package was not being executed. I know that LaTeX takes time to master, but this was also an example of where a lack of knowledge also meant a lack of knowledge of how to articulate the appropriate search terms to find the answer.
Lessons learned from this year of beginner’s programming
- How important it is to be specific when troubleshooting (though, frustratingly, as a beginner and as indicated above, this is hard or impossible due to incompetence).
- The importance of hierarchy, from default to other pages in a CMS to the hierarchy in CSS (what overrides what, order…)
- Remembering the promise of computers to facilitate work: thinking now about how to maximize this potential gain. This is offered best by free software because we can craft it to personal or local needs. Yes, other PaaS or SaaS is a better out-of-the-box experience, but users remain in a box through designed use patterns. These systems are to work for us, not the other way around!
- This goes for formatting academic references, too. I note that there is now an emacs-humanities thread, so maybe this will faciltitate the sharing of tips on how to do this.
- Some programming communities are friendlier than others.
Further reading, recommendationsI promised myself that if I could remind myself of enough of the programming I once knew, I could read Bob Nystrom’s Crafting Interpreters. I loved reading the first few pages and hope I am ready to learn from that book. I’m also looking forward to reading Andrew Hunt and David Thomas’s Pragmatic Programmer which was intelligible enough even to me half a year ago, when I put a dent in it. I also plan to read Bob Chassell’s An Introduction to Programming in Emacs Lisp. But I welcome any other suggestions – as well as suggestions and… recommend gifting an annual Free Software Foundation membership!