Technical writing - my first ten years
Posts on the @LunatechLabs tech blog, 2005-2014 2021-03-02 #writing
People sometimes ask me about starting a public tech blog, to give developers an opportunity to write in public, and promote their work. The recently-resurrected Lunatech Blog shows how I did this, from 2005 to 2014. I started regular blog posts in my first year at Lunatech, which had no other online content marketing at the time.
I produced Lunatech’s blog by example, writing about half of the (roughly) twice-monthly posts myself. I wrote about a variety of topics: technical articles for developers, agile software development, reviews, and company events. At the time I didn’t worry much about which topics to choose, although analytics data gradually revealed that niche technical topics had the most long-term traffic.
2005
Looking back to 2005, I like the one about information radiators the most, because I found it so satisfying to update the chart every day. Of course, the chocolate cocktails also delivered plenty of satisfaction.
- Unforgiven - user-interface labels
- Paranoid configuration - tamper-proof text
- Struts URLs for perfectionists
- The same but different- web application comparison support
- Progressive - the dark side of new software
- Catalogue search/browse
- Chocolate cocktails
- Information radiators
- Displaying access key assignments
- The geoweb - open standards for publishing geodata
- Web application navigation design patterns
- Navigation design patterns - details page
- JavaPolis 2005
From a technical writing perspective, the articles about web application user interfaces make me cringe now, because they say so little. At the time, I had just started exploring the idea of writing about technical topics, and remember that using How does this work? as a prompt, helped me start writing. The post about URLs in Struts (a then-popular Java web framework) generated the most traffic, illustrating that articles that solve a real and recognisable problem have more value that merely describing things.
2006
In 2006, I tried two new things: book reviews and a customer project summary. Although I expect more readers found the books for software developers article useful, I still really like the think piece Wiki is my word-processor, which I’ve thought about re-writing several times. Now that we no longer use wikis, I would probably title that Notion ate my wiki today.
- Web application post-submit messages
- Struts Action Mappings - configuring web application URLs
- Book review - Slack, Tom Demarco
- Book review - To Engineer Is Human, Henry Petrovski
- Book review - Designing Interfaces, Jenifer Tidwell
- Dynamic calendars - iCalendar feeds using iCal4J
- Books for software developers
- Task management - the difference between urgent and important
- Development - Ernst & Young Indirect Tax
- How to use bullet lists
- Struts page-level authorisation
- Wiki is my word-processor
- JavaPolis 2006
I improved the tech blog in year 2 by building on the previous year’s web framework article success, with follow-up Struts tutorial articles. Meanwhile, the bullet lists article shows that I had started thinking more deliberately about technical writing.
2007
2007 started with another think piece about business class, based on a conference presentation I’d seen at JavaPolis: I don’t like the blog post much, but its insight still resonates. Meanwhile, I started translating user group events (marketing budget spent on beer) into blog posts, and writing more tutorials. My favourite article of the year remains the technical writing tutorial on how to write user-interface instructions.
- Business Class or Economy?
- Eclipse plug-in installation
- How to write user-interface instructions
- UML class diagrams in Confluence using Graphviz and DOT
- Boss Benelux User Group, 8 June 2007
- JSF-Facelets custom date converter
- Book review - Wikinomics
- Web application 2.0 features
- Amsterdam Java Meetup, 21 September 2007
- Eximion game artwork archive
- Benelux JBoss User Group, 2 November 2007
- Benelux JBoss User Group, 2 November 2007 - photos
- No fields are required
- Lunatech at JavaPolis 2007
- The European Union - a metaphor for JBoss Seam
- Seam in action - JavaPolis presentation
2008
2008 continued previous themes: mostly company events, a review and a tutorial. Fortunately, I still found space for a more quirky articles, in How to draw lolcats and The programmer’s private office, both disguised think pieces.
- Benelux JBoss User Group, 29 February 2008
- Benelux JBoss User Group, 29 February 2008
- Marketing books for developers
- Benelux JBoss User Group, 29 February - photos
- Seam is the new Struts
- How to draw lolcats
- The programmer’s private office
- How to explain Twitter
- Seam presentation video on parleys.com
- Meeting-avoidance for developers - Devoxx08 presentation
- Meeting-avoidance for self-managing developers - Devoxx 2008
- Seam meetup at Devoxx
- Getting a list of time zones in Java and Seam
2009
In 2009, I returned to more serious technical tutorials, to write about JBoss Seam, our new favourite Java web framework at the time. I don’t remember why I wrote fewer posts in 2009 than in other years, although spending half the year commuting to a customer’s office in, might have cost me the time I might have spent writing. At least I had time for another cocktail recipe.
- Language localisation in JSF and Seam
- VisibleLogistics - Supply Chain Visibility SaaS
- Localised attribute values in JSF and Seam
- Benelux JBoss User Group, 22 May 2009 slides
- Support for original language in Accept-Language header
- Confluence as an enterprise Facebook
- Decision service architecture with JBoss Rules
- Chrimble cocktail
- Decision service business rules in JBoss Rules
2010
The blog changed in 2010: I doubled my writing output, writing many more tutorials. I also started to look at new kinds of articles, finding new topics in recruitment, and conference attendance tips.
- How to build a decision service using JBoss Rules Execution Server
- JBoss Rules (Drools) implementation Execution Server
- Running Lumbermill on OS X 10.6 Snow Leopard
- Plan Cruncher - shorter business plans
- Play framework usability
- Presentations - Drools and the perfect programmer at 42
- Plan Cruncher - Play! in production
- How to localise a Play framework 1.0 web application
- Activiti next-generation Business Process Management and work-flow
- Play framework 1.0 cheat sheet
- How to demo the Play framework 1.2 - live coding script
- Panzano Sandwich Cruncher
- Literal data structures in Scala
- Play framework 1.0 content negotiation
- How to get a job at Lunatech
- How to get a job interview at Lunatech
- Play framework 1.0 built-in validations
- Localized Play framework 1.0 validation messages
- Play framework meet-up at Devoxx 2010
- 10 Devoxx tips
A new Java web framework drove this change, as I became a committer on the Play framework, to edit and write its documentation. Writing on another ‘project’, five years after starting this tech blog, changed a lot about my experience of technical writing.
2011
I wrote even more blog posts in 2011, mostly as a result of writing companion articles to other activities, and experimenting with web framework documentation ideas. Having decided that volume counts, this increase came from more systematically asking can I blog about this? Today, the comparison of Scala, Ceylon and Kotlin language goals still resonates the most with me from 2011’s articles, not least because I wrote my first Kotlin code only two months ago.
- 2organize Scrum master
- Declarative model class enhancement in Play 1.2
- Integrating Play framework 1.2 with jQuery DataTables
- Ajax DataTables with the Play framework 1.2
- The Software Estimation Manifesto
- Play framework 1.2 file upload with play.db.jpa.Blob
- The myth of the on-site customer
- Three Scrum benefits (video)
- Lunatech Invitational Golf Event 2011
- jQuery UI Ajax autocomplete with Play 1.2
- Turkish Play framework community
- Lazy loading page content with jQuery UI, Ajax and Play 1.2
- August Play!ground presentation slides & video
- Own goals - Scala vs Ceylon vs Kotlin
- Logging debug messages with Drools
- Lunatech presents Play Framework at JavaZone 2011
- JavaZone Play framework presentation video
- Fronteers at Lunatech. WTF?
- Review - Play Framework Cookbook
- September Play!ground in Rotterdam
- Logging rule activation with Drools
- Play!ground presentation slides & code
- Selector dialogue with jQuery UI, Ajax and Play
- Progress bars with jQuery UI, WebSocket & Play
- December Play!ground in Rotterdam
- Play framework meet-up at Devoxx
- Devoxx 2011 tips
- Why Play isn’t a Java web framework
- Play 2.0 demo - live coding script
- What’s wrong with the Java Servlet API
2011 also featured another technical writing escalation: I started co-writing a book with two Lunatech colleagues that would take two years to complete. This book - Play for Scala - taught us a lot about technical writing that helps people get things done, and improved how I approached tutorials.
2012
Developer conference presentations dominated my year in 2012. I also wrote my first agile software development experience report, the first of several articles about Scrum, while in an interim Scrum master role on-site at a customer. By this time I had become used to the idea that I should write about my current work, even if I would prefer to write about other topics.
- January 2012 Play!ground
- URL-centric web application design
- Late Christmas at Lunatech
- February 2012 Play!ground at Paddy Murphy’s
- February Play!ground presentations and photos
- Lunatech presents Play at Jfokus 2012
- Lunatech presents at Scala Stockholm
- Play rescues kittens at Jfokus
- Java Spotlight podcast - Play 2.0 & Akka 2.0
- Jfokus 2012 Play Framework 2.0 presentation video
- Review - Drools Developer’s Cookbook
- First 010DEV event
- Play framework 2 books
- Lunatech presents Play at GeeCON 2012
- Lunatech presents Play at GOTO Amsterdam 2012
- Lunatech presents at 010DEV
- Typesafe consultancy partnership
- Transparent development and the project management
- The double-sided Scrum board
- Scrum and non-functional requirements
- Scrum software project documentation environment set-up
- Scrum when the product owner is not available
- Essential Scrum hardware - lots of whiteboards
- Scrum project documentation - development
- GeeCON 2012 Play Framework 2.0 presentation video
- Lunatech presents Play at JAX London 2012
- Lunatech presents Play at Topconf 2012
- Lunatech presents Play at Øredev 2012
- Øredev 2012 Play Framework 2 presentation video
- Planning Scrum project documentation
- Øredev - recommended presentations
2013
2013 saw fewer blog posts, presumably as a result of working on finishing our book. After that, I applied what I had learned about writing tutorials to a new series about early versions of Slick, a database access library.
- Typesafe training partnership
- Typesafe at 010DEV
- Good bug reports come in four parts
- Fast Track to Play training certification
- Lunatech feeds Happy Melly
- Getting started with Play and Slick 1.0.1
- Using the Scala console with Play and Slick 1.0.1
- Defining database table columns with Slick 1.0.1
- Using Play framework database evolutions with Slick 1.0.1
- Defining database queries with Slick 1.0.1
- Executing database queries with Slick 1.0.1
- Mapping Slick query results to case classes 1.0.1
These Slick tutorials explored a new technical writing constraint: no forward references. I’d seen that in the book Atomic Scala, as a way to make the book easier on readers.
2014
I kept up the writing pace at the start of 2014, with two posts per month at the start of the year. Most intriguingly, I wrote about remote working, eleven months before I would start permanently working from home (and have ever since).
- Inserting database table rows with Slick 1.0.1
- Code review observations are not failures
- Benefits of remote working
- Third-party Logistics (3PL) domain expertise
- Speaking the language
- Business process visibility with ALEK
- Lunatech blog retrospective - 2005
- Lunatech blog retrospective - 2006
- Lunatech blog retrospective - 2007
- Lunatech blog retrospective - 2008
- Lunatech blog retrospective - 2009
- Lunatech blog retrospective - 2010
- Lunatech blog retrospective - 2011
- Lunatech blog retrospective - 2012
- Lunatech blog retrospective - 2013
I didn’t write any new topics in the months before I left Lunatech, at the end of June 2014, hence the series of retrospectives. I did write a lot after that, though. I left Lunatech for a six-month sabbatical in London, where I started this personal blog with a vengeance, writing 31 posts in the first two months. 😀