Kicking of Project 1405: Software for Thinking (GHD015)

"GHDR Goal" Today I kicked-off another ten-year goal, Project 1405! This is the “make software for thinking” goal, and since I’ve never made software like this before, it’s going to be a long road. Good thing I gave myself 9 years to do it!. Details follow.

Software for Thinking?

So what is software for thinking? It’s software that I’ve wanted to have for organizing my thoughts in a visual manner. There isn’t quite anything out there that does it the way I want, so I figure I should get started. As software development of desktop and mobile applications is new to me, the first year or so will be spent just getting up-to-speed with the available development tools.

The first step I took today was to figure out how I was going to document the entire process to help me remember what I’m focusing on from day-to-day. I thought of using Scrivener or perhaps giving Evernote a third look, but neither of those programs are particularly good for taking notes for development because of their weak formatting support. I happened to read on Hacker Newsletter about a “programmer’s notebook” app called Quiver, which on first glance looks like every other digital note keeping app you’ve ever seen. It’s got a list of notebooks, a list of notes in the notebook, and an editing pane; it is very similar functionally to Evernote. What makes Quiver exciting for me, though, is its use of cells that contain a specific kind of formatted content, and can be freely mixed into the same note. For example, there’s Github-flavored Markdown (GFM). There’s a 60+ language syntax highlighted code cell. There’s LaTEX support for mathematical equations and even a diagramming cell for making sequence charts and flow charts. Because each type of cell contains a certain kind of content, it avoids the endless awkward formatting that comes from rich text “select-and-format” user interfaces. It makes writing code documentation elegant and fast! And that’s exactly what I need. Evernote and Scrivener are probably OK for general purpose writing, but Quiver was designed to be a PROGRAMMER’S NOTEBOOK. Add to this many other developer-friendly features, such as the JSON-based data format, ready access to customizing the underlying CSS-based templates, cloud storage support, export to PDF or HTML, and this seems like a product with its heart in the right place. At $9 for Quiver Pro 3.0, it was a no-brainer to snatch it up.

With the documentation problem out of the way, I spent a few hours figuring out how to approach the daunting software goal itself. I came up with this:

  • First, focus on making a very simple example app for several platforms. The platforms are OS X, Windows, Javascript/Heroku, Javascript/Desktop, and iOS. This will give me a really basic feel for the development tools and process.
  • The example apps at minimum should have an editable text field control in a floating window.

This is a pretty simple goal, which can probably be achieved by watching a few tutorial videos to go through the motions of setting up each development environment and generating a runnable application. The challenge is finding excellent sources for this tutorial information; quite a lot of what is easily found on the Internet are like bad recipes that have little insight into the tools themselves. That’s why I wanted to have a decent programmer’s notebook; I’ll be needing it to create my own high-quality tutorial references by filling in the gaping holes of most online material.

Today I started taking a quick look at Xcode and Apple’s new Swift language. I’m doing a fast overview of the tools just to get a feel for its complexity and philosophy behind the workflow. The Swift language seems pretty cool on first glance, but language is a tiny tiny part of software development. The real chore is gaining fluency of the thousands of different operating system services as it relates to creating an application. I want to focus largely on the holy triad of “events, user interface widgets, data binding” to get a feel for what an OS X app has in it, and then move on to Windows (probably Visual Studio with C# and .NET), Javascript/HTML5 as a deployable desktop app and a deployable web app, and lastly iOS.

GHDR Points Scored and Next Steps

Though I made a lot of headway, not a lot of points were scored on my Groundhog Day Resolutions goal list…or were they?

3 Talked about goals with someone face-to-face!
2 Made a map/model to help make a decision about what to do!
2 Reduced the scope of a new task so I could start it faster!
2 Posted words and photos about the goal
1 Researched Programmers Notebooks
1 Researched xcode/Swift

That’s 11 points…way more than I thought there would be. That makes me feel pretty good. I’m going to continue to peck at this xcode example app building, gathering information into my OS X notebook in Quiver, until I develop a rudimentary (and well-documented) understanding of the development process using XCode. This may take several weeks.

About this Article Series

For my 2016 Groundhog Day Resolutions, I'm challenging myself to make something goal-related every day from February 2nd through December 12. All the related posts (and more!) are gathered on the Challenge Page.