Kicking of Project 1405: Software for Thinking (GHD015)

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?

POINTS DESCRIPTION
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.

4 Comments

  1. Nick 8 years ago

    Awesome Dave! I look forward to seeing how this project evolves. I agree there’s a need for more visual thinking software.

    Here’s some sites which might be helpful in making software for thinking:

    http://zettelkasten.de http://hapgood.us http://worrydream.com (and especially http://worrydream.com/#!/TheHumaneRepresentationOfThoughtTalk )

  2. Nick 8 years ago

    Also Dave, have you seen Curio? http://www.zengobi.com/products/curio/

  3. Author
    Dave Seah 8 years ago

    Hi Nick! I haven’t seen any of those, so thanks for the links! I haven’t seen any of those links.

    I’m quite a ways from the point when I’m going to be designing the software; right now I’m researching basic software engineering practices for application development. There are several specific types of interaction that I want to make that would work as building blocks for manipulating ideas, hopefully in a visually-pleasing manner! I probably will start by not looking at what other people have done (and I have a lot of my own design work to draw on as well), to see what kind of approach arises.

    In the meantime, I’ll be lucky if I can get a text widget to appear on the screen on the five different platforms :-)

  4. Nick 8 years ago

    Ah ok, that makes sense. Good approach. To that end, only the last link is an actual product. The links in the first comment are focused on the philosophy of thinking and the human communication of thoughts.