Model-View-View Model in Swift

Srdan Rasic wrote a good post on creating wrappers around value objects (like Strings, say) and custom-glue them to an application’s interface. It’s a technique I have used in my book on Mac architecture at one point but which seems to be tremendously useful for virtually anything view-related once you get to a high enough level of abstraction.

It’s weird that articles related to programming are so hard to quote. Instead of a quotation, let the resulting code illustrates what he has to say:

class ArticleViewController {
  var bodyTextView: UITextView
  var titleLabel: UILabel
  var dateLabel: UILabel
  var thumbnailImageView: UIImageView
   
  var viewModel: ArticleViewViewModel {
    didSet {
      viewModel.title.bindAndFire {
        [unowned self] in
        self.titleLabel.text = $0
      }
   
      viewModel.body.bindAndFire {
        [unowned self] in
        self.bodyTextView.text = $0
      }
   
      viewModel.date.bindAndFire {
        [unowned self] in
        self.dateLabel.text = $0
      }
   
      viewModel.thumbnail.bindAndFire {
        [unowned self] in
        self.thumbnailImageView.image = $0
      }
    }
  }
}

So now when viewModel’s properties change, the view controller will update the corresponding interface component. Sweet.

Exploring Mac App Development Strategies – Patterns & Best Practices for Clean Software Architecture on the Mac. Don’t worry about big software design decisions anymore. Take on Mac app development with solid principles, guided by extensive examples and explanation. Buy the book now!

Making Good Use of Singletons in Refactoring the iOS App Calendar Paste

Like I promised last weekend, I am going to write about the process of cleaning up the already rotten source code of Calendar Paste. In order to break massive view controllers into manageable pieces and un-tangle everything, I have to make sure that I don’t break the current implementation. Calendar Paste didn’t have any automated tests in place. To change this fact is my first priority.

Continue reading …

DEVONthink and Zettelkasten

My dear friend Marko Wenzel has written an excellent review about DEVONthink and how to use it as a Zettelkasten note archive.

I have used DEVONthink myself a few years ago, but I think Marko’s expertise has far outpassed everything I ever knew about the app. I hope he’ll show us the various preview and link building scripts he created, too, because they make his workflow truly unique.

I’m About to Release a Little E-book on Domain-Driven Design and Mac Application Development

I’m adding a file monitoring feature to the Word Counter. This is a huge change to the application’s source code. To tackle this problem with style, I mulled things over for a while and considered my existing application’s design. I wanted to try out a few new things, so it was a no-brainer to start a sample project from scratch and fiddle with it.

Continue reading …

Core Data Violates DDD Principles by Default

I’m working on a way to make the Word Counter watch files and folders on a user’s disk. This will enable to measure project progress. Until now, I always used .plist files to store records with the end in mind that I’m going to switch to a better alternative in the future. Since I’m adding all-new data tracking, I thought I might as well try different solutions now.

Continue reading …

The Word Counter, NaNoWriMo, and You

To finish NaNoWriMo you are going to need rock-solid habits, lest you give up due to a lack of motivation. That’s because habits don’t deplete, but excitement, discipline, and will-power do. NaNoWriMo isn’t a sprint you can finish by feeling joy alone. It’s a marathon. It will require more than talking yourself through the finishing line. You’ll feel joy, but you’ll encounter despair, too.

Continue reading …

How I Edited my Last Zettelkasten Post and Came up With Something Even Shorter Than the Post Itself

I struggled with my last article on the Zettelkasten portal because I didn’t know how to express a tiny piece of theoretical background in the right way. It was about a constructivist approach to cognition and information. Because it bugged me so much, I began to write this journal entry while editing the article. Maybe you’d like to have a look behind the scenes, so here it is.

Continue reading …

Making the Word Counter More Useful

Last week, I released an update which introduced a calendar view to the Word Counter where users could look at their past achievements. I call this calendar view the History. There’s a lot of stuff on the roadmap still. The History is useful, but still pretty basic. I want to add analysis features. At the moment, users can look at the amount of words they write each day. But they have to find out if a day was only a good day or if it was an excellent day themselves. The Word Counter will soon help users with this, offering comparisons, calculating the mean, and helping users reach their daily goals.

Continue reading …

Summer Knowledge Challenge 2014

This year, I read Justice for Hedgehogs1 by Ronald Dworkin. In philosophy, ethics was always my favorite topic. In fact, I always was into most of the topics of practical philosophy. I heard about the book a few times already and I thought it’d be great to extract knowledge from a contemporary author’s work for my Zettelkasten. Also, people said Dworkin is kind of resurrecting a Socratic take on morality, so I was intrigued from the start.

These are the posts so far in chronological order:

Still want to join? Tell me about your book of choice and add a link to your blog so I can mention you here!

  1. Affiliate links; I get a small kickback from the vendor if you buy from my link but it won’t cost you anything. 

How I Prepare to Work on a Research and Writing Project

This post has moved to Zettelkasten.de. Read it there.

How do I deal with reading and research projects for University? I plan and prepare the work. This is the second post of the Summer Knowledge Challenge: here, I tell you about the first step, extracting reading notes from Justice for Hedgehogs and preparing the project. The procedure I describe applies to other University assignments and writing projects as well.

Continue reading on Zettelkasten.de …

Introducing Myself on Zettelkasten.de

As I have announced last week, I’m going to move a lot of my Zettelkasten-related writing to the project website at zettelkasten.de.

To deal with my forgetfulness, I have learned to install useful habits and techniques into my life. I believe you have to have a working task management in place which watches your back while you do hard work, like researching and writing. Task management is there to keep real life at bay. You need both to succeed. My journey as a knowledge worker and writer began when I finally got stuff done.

Like Sascha, I have started with an introduction of myself. Since I never really told you how I came to find out about the tool called “Zettelkasten”, you might want to read it, too.

Self-Fulfillment and Growing Up

Teaser image

Today is the day I turn 27. Years ago, I had expected to feel older by that age, more like I imagined the grown-ups to feel when I was a child, but I don’t. When they say “you should grow up”, they want you to become boring. Because the grown-up stuff consists of getting a job and decent salary, finding a partner in life, maybe building a house – the classic dream of my parents and their parents alike. Seldom do folks tell you to find your destiny and fulfill your dreams (unless they are about having a house, a car, …).

Continue reading …

Composing and Revising – The Two Modes of Writing

This post has moved to Zettelkasten.de. Read it there.

Since I recently released the Word Counter for Mac, I have given more thought to the process of writing itself, especially since your comments on writing vs editing started to pour in. I count my words to increase my productivity as a writer. “But!”, people exclaimed, “How do you account for rewrites, deletions, and correcting grammar?” By dividing composing from revising.

Continue reading on Zettelkasten.de …

Word Counter v1.1.0 – Now With Daily Usage Statistics

Teaser image

Quantified Self nuts rejoice: I have just released the first big update to the Word Counter, the writing productivity monitor. Find out when you write, how much you write, and which app you really use. Now you can see how you spend your productive time for every 24 hours of a day. The distribution of words per app per hour is at your very fingertips. With these stats, for example, you now can tell when you were using your writing apps and when you were just browsing the web.

Continue reading …

Challenge: Apply the Knowledge Cycle to Reading a Single Book

This post has moved to Zettelkasten.de. Read it there.

I plan to write a long term paper at University later this year. It’s going to be about the book Justice for Hedgehogs by Ronald Dworkin, and I’ll be able to mostly work with this single source exclusively. Consequently, there won’t be much additional research. How does the Knowledge Cycle apply if you read a book and don’t do research? I invite you to take the “Summer Knowledge Challenge” and find out with me.

Continue reading on Zettelkasten.de …

Feed for All Zettelkasten Posts

You can now subscribe to the posts tagged with “Zettelkasten only. I created a new feed which you can find here. With this feed, you get the Zettelkasten stuff without all the other news. The thing is that you’ll miss all the productivity tips which have nothing to do with the Zettelkasten method.

Don’t know what a feed is and wonder what your browser displays when you click on the link? The US Government website got you covered:

It’s an easy way for you to keep up with news and information that’s important to you, and helps you avoid the conventional methods of browsing or searching for information on websites.

Feeds are means to subscribe to website updates. The updates get pushed into your feed reader inbox, just like e-mail. This is far better than checking pages you like manually all the time. In Firefox, for example, you can bookmark website feeds and get an auto-updating list of new articles in your bookmarks bar. Most modern browsers got plug-ins to subscribe to feeds. Also, see a list of feed readers on Wikipedia for inspiration.

I use Fever to subscribe to other websites’ feeds.

If you didn’t know, the feed for all kinds of posts on this website is here. Subscribe to this one to receive notifications for all posts to this here “Worklog” of mine.

New Article Overview

I just added a manual, curated overview of articles on this website. There, I have collected (mostly) Zettelkasten-related posts and grouped them under headings which, at this time, make sense to me. This is subject to changes when the archive grows, of course.

At the moment, the big categories are these:

  • Knowledge Management: general information about what it means to work and learn efficiently.
  • Writing: posts on the production of lasting knowledge, and about sharing it with others through your own texts.
  • Reading: posts about the process of acquisition of new things and the organization of sources.

I will add longer pieces to the list. Most items here aren’t blog posts but articles sporting 2000 words or more. I will leave out smaller posts like this one and the occasional software announcement. Only the ‘featured’ posts will be added to the list, you could say.

With this change in place, I feel free to blog more often. I didn’t want to water down the timeline of higher quality content with short posts. The curated overview will help you find the gems on this site, and it helps me preserve them. I hope you like it.

Use a Short Knowledge Cycle to Keep Your Cool

This post has moved to Zettelkasten.de. Read it there.

It’s important to manage working time. Managing to-do lists is just one part of the equation to getting things done when it comes to immersive creative work where we need to make progress for a long time to complete the project. To ensure we make steady progress, we need to stay on track and handle interruptions and breaks well. A short Knowledge Cycle will help to get a full slice of work done multiple times a day, from research to writing. This will help staying afloat and not drown in tasks.

Continue reading on Zettelkasten.de …

Edit HTML with TextEdit for Mac

Teaser image

In June, I told you about how to customize nvALT’s Markdown preview template so you can include images from a sub-directory of your notes’ directory with ease. Turns out that you probably aren’t able to edit the preview .html file in the first place without some effort. Here’s how you configure TextEdit, Apple’s own editor which comes with every Mac by default, to edit HTML files the way you need to.

Continue reading …

Make Writing a Part of Your Identity

This post has moved to Zettelkasten.de. Read it there.

Brian Crain talked about increasing productivity by tracking progress. To have a continuous metric is both motivating and informative. I, too, buy into the saying that you can only improve what you measure. The corollary is: when you care about something, when you really commit to it, you have to do your best to track it and improve. Writing is one such skill. You become a writer by writing more, and you can shift your identity consciously to make this change stick.

Continue reading on Zettelkasten.de …

How to Track Your Writing Progress

This post has moved to Zettelkasten.de. Read it there.

There’s an interesting 8min talk by Brian Crain on optimizing productivity. Brian found tracking his progress useful: I learned that having a continuous metric is enormously motivating since it allows you to continually improve yourself. These small, continuous changes make a huge difference over time.

Continue reading on Zettelkasten.de …

Include Images in nvALT for a Multi-Media Zettelkasten Experience

This post has moved to Zettelkasten.de. Read it there.

nvALT sports features which are not so well-known. You can make it work with an image repository to easily include images in your Zettel notes. I don’t make heavy use of the preview at all, but when I do, it’s mostly because I want to take a look at images. For this purpose, I decided to stick to a simple folder structure and customize the preview template to work with it.

Continue reading on Zettelkasten.de …

Developing a Word Counter for Mac – Apply as a Tester

Teaser image

I promised to tell you more about what I was doing in the past weeks. I am developing a Mac application. Actually, I work on it since December.
The application I’m working on is a word counter for Mac. I believe that tracking the daily output is useful to stay productive, and I found tallying words written each day is a real booster. Whenever I write, I’m happy to see that the counter increases and that I meet my goals.

Continue reading …

Calendar Paste v2.1.0 released

Teaser image

A Calendar Paste update hit the iOS App Store, in response to a very sound feature suggestion: Display Titles.

User dubble_d pointed out in an App Store review that calendar entries with the same name can’t be distinguished in the template list. Say you have four different kinds of “Team Meeting”, each lasting one hour, but belonging to different calendars or having different notes attached. Until now, Calendar Paste would’ve simply listed these four.

screenshots of the app
Introducing a Display Title makes distinguishing events with the same name easier and keeps the original title for pasting into your calendar

With the current update, you can add your own descriptive title to a template, called Display Title. This way, you can still call your calendar entries “Team Meeting” while showing something else in the event template list. This is especially useful when the event name would’ve been too long to fit on your iPhone’s screen: simply assign a shorter Display Title to see at a glance which event template is which.

It’s a bummer I can’t respond to App Store app reviews in any way. Apple doesn’t provide any customer support mechanisms. So I’ll say it here: Thanks, dubble_d, for the feature suggestion! I think this feature was a great idea.

Get Calendar Paste 2 on the App Store.

How I use Outlines to Write Any Text

This post has moved to Zettelkasten.de. Read it there.

Nowadays, I write all of my texts in outlines. This post is no exception. I found this to be a game-changer when it comes to writing, so I thought I’d share the process. I start with a few broad strokes and go into detail, which equals using deeper levels of indentation. Every item in the outline is going to be a full sentence. This way, I can rearrange paragraphs sentence by sentence in my text editor. Most of the time, though, blog posts simply are too short to make much use of re-arranging their parts. I use this feature heavily in my book manuscript, though, and I found that research-laden posts benefit from an outline, too.

Continue reading on Zettelkasten.de …

Building Blocks of a Zettelkasten

This post has moved to Zettelkasten.de. Read it there.

I am working hard on the “Building Blocks” chapter of the Zettelkasten book and I want to finish it first to show it to the public. It covers all parts of the toolkit. To sketch a structure and talk about its components, I need to get the requirements and implementation done before talking about workflow details. Today, I want to show you a birds-eye view of the overarching systems metaphor I’m using in the book.

Continue reading on Zettelkasten.de …

The Zettelkasten Platform – 2 Ways You Can Contribute

This post has moved to Zettelkasten.de. Read it there.

Today, I’m thrilled to announce the next step in the Zettelkasten.de platform. I offer two exciting ways to contribute to the overall project: a central tools collection, and river of news. This way, we can create a unified base where the online discussion is aggregated so that everyone can follow easily. It will be a useful resource for anyone who wants to find out more about knowledge management and implementing the Zettelkasten method.

Continue reading on Zettelkasten.de …

SlipBox (Mac) Note Archive Review

This post has moved to Zettelkasten.de. Read it there.

SlipBox is a Mac-only application with iPad/iPhone companion apps to manage a note archive. When I found out about the app, I was curious about its ability to traverse a organically growing, tree-like ontology of keywords. That’s the app’s killer feature. SlipBox didn’t disappoint, but I come to the conclusion that it is best suited for project-based note databases.

Continue reading on Zettelkasten.de …

Lessons Learned from Losing All Routine

This post has moved to Zettelkasten.de. Read it there.

We finally finished moving into our new apartment. During the ten days it took to arrange the new place, I noticed how strong I’m bound to my routines, and what it means to lose all of them at once for a period of time. There was a daily workout routine, where I hit the gym twice a day on four days each week for both strength training and cardio. In total, I had at least 10 workout sessions per week. Before the morning workouts, I used to write for at least one fixed hour. In the evening I used to have weekly recurring appointments at work where I help organize a team of student advisors or help students with writing tasks and presentations. Also, the evening was my most productive time: I would either continue writing for a bit or dive straight into programming tasks.

Continue reading on Zettelkasten.de …

Using nvALT as a Zettel Note Archive

This post has moved to Zettelkasten.de. Read it there.

I want to start this series of reviews with a software I’m fairly familiar with. While most things apply to the Notational Velocity base application, I will talk about nvALT exclusively in this review. nvALT is a fork by Brett Terpstra and David Halter of the original Notational Velocity, which was created by Zachary Schneirov, and a few modifications by yours truly. It’s Open Source, free, and very popular.

Continue reading on Zettelkasten.de …

Baseline for Zettelkasten Software Reviews

This post has moved to Zettelkasten.de. Read it there.

I’m going to take a close look at applications to find out which are suitable to implement the Zettelkasten note archive. I already talked about reference managers. While reference managers can be switched pretty easily, migrating a database of notes is far from being a trivial task, depending on the software you used in the past. Therefore, we have to chose how to implement the note archive with great care. Here you’ll find my criteria.

Continue reading on Zettelkasten.de …

The Need to Craft

Teaser image

My last posts were rather prescriptive by nature. Before I start sprinkling in the casual software reviews, I want to slow down a bit and change the pace. Lately, I wondered why I do things. My answer is pretty plain, and I’d like to know what drives you to worry about organizing information. So I’ll begin to share, and then you may, if you like.

Continue reading …

Reading Habits: Putting It All Together

This post has moved to Zettelkasten.de. Read it there.

I am moving next month, and so I though about getting rid of stuff in my life. There are lots of books I’ve read, but from which I never processed all the notes. I know for sure that at I finished least one book in the collection about two years ago! You see, I was, and still am, vulnerable to the Collector’s Fallacy. While I try to get through the pile of books, I reviewed my reading process. This is a summary where I put together some of the topics I already wrote about

Continue reading on Zettelkasten.de …

You Only Find What You Have Identified

This post has moved to Zettelkasten.de. Read it there.

I want to answer the question: Why are unique identifiers useful when you work with a Zettelkasten? The objective of a Zettelkasten note archive is to store notes and allow connections. Both are necessary to extend our mind and memory. As long as the software you use doesn’t provide any means to create links between notes, you have to come up with your own convention. Even if the software did provide such a mechanism, I’d suggest you think twice about relying on it: I want to evade vendor lock-in for my Zettelkasten, and I think you should, too. So let’s assume you don’t care about the software and create your own hyperlink scheme.

Continue reading on Zettelkasten.de …

Learn Faster by Writing Zettel Notes

This post has moved to Zettelkasten.de. Read it there.

As a knowledge worker, you have to learn a lot in your field. The internet is full of information, and there’s the books you just have to know in and out. How do you speed up the process and learn efficiently? Scott Young learned linear algebra in 10 days due to a very efficient method. It works for other fields of knowledge as well. The “Drilldown Method” consists of three stages:

Continue reading on Zettelkasten.de …

Editorially is Shutting Down. What About Alternatives?

This post has moved to Zettelkasten.de. Read it there.

Editorially will shut down on May 30.

I used Editorially for some time now and me and my collaborators were getting accustomed to the platform. It was more convenient to use Editorially than sharing plain text files in Dropbox, especially when multiple people were involved.

Editorially wasn’t designed for people collaborating at the same time, unlike files in Google Drive, née Google Documents. Also, commenting was a rather finicky task in my eyes. I’m accustomed to using the keyboard only, while Editorially required use of the mouse cursor. But it worked, and it made sense for people not accustomed to plain text writing environments. Editorially connected us Markdown geeks with the rest of the world.

What now?

  • Writeboard.com was shut down, too. It was a simpler tool, but it supported versioning. 37signals are re-structuring their business, so Writeboard.com had to go.
  • Draft is well. This app is focused on getting editorial reviews for your drafts, see changes and integrate them into your document. I have to test it with friends some more until I can judge the service. Unlike Editorially, Draft doesn’t highlight Markdown syntax while you write. It has a ‘preview’ action, though.
  • Authorea is alive and kicking, it’s backed by Harvard University, and it’s especially useful for larger projects: you can collaborate on articles or book manuscripts simultaneously, one section per person. Behind the scenes, Authorea creates one text file for each section. Since there’s no one big document file, you can restructure the document easily. It will only change the order of file references in a table-of-contents file. This is similar to Marked, mmd_merge, and the book format of Leanpub. It’ll cost you some money to create private projects, though. Authorea is designed for Open Science where you’re encouraged to let other people see and fork your articlesIt’s like GitHub for scientific articles – it even supports LaTeX!
  • Open Source has lots of proof-of-concepts. collaborative-markdown may be one way to go. It works fine at the moment, though it isn’t polished at all. Maybe one will have to combine it with syntax highlighting editors like Ace just as the people at OakOutliner seem to do. Also, there’s things like OpenEtherpad.

It seems there’s enough Open Source technology available to create an online collaboration tool if Draft and Authorea won’t do the job.

Do you know of any other alternative?

Note-Taking when Reading the Web and RSS

This post has moved to Zettelkasten.de. Read it there.

In the last post, I detailed that collecting texts may become a tempting replacement for obtaining real knowledge, but also that collecting in itself doesn’t get us anywhere. I called this the “Collector’s Fallacy”. I think we need to conquer this lazy, stuff-hoarding part of ourselves with good knowledge management habits.

Continue reading on Zettelkasten.de …

Count Your Words to Increase Your Productivity

This post has moved to Zettelkasten.de. Read it there.

Did you ever wonder how some people finish non-fiction manuscripts in no time? When we do knowledge work, our craft is to write. To be good at it, we need to be efficient at it. We don’t need to win a Pulitzer (right now), so let’s think a little about methods to increase our output, to get better and faster at writing. Today, my good friend Sascha will share with us the objective and the rationale to become better writers.

Continue reading on Zettelkasten.de …

Looking for Alpha Testers

Teaser image

Just a quick notice to all you readers: I’m looking for alpha testers next week.

I’m working on something that’s about to be released in this first quarter of 2014. It’s going to be a tool to help you enhance your writing productivity. For a start, I need just a handful of people with varying Versions of Mac OS X. Details will follow soon.

Zettelkasten newsletter subscribers will be notified early, and they will be favored. Chances are, if you read this blog and if you care about writing in particular, you’re subscribed anyway. Otherwise, hurry up and subscribe to the newsletter!

So, that was the service announcement.

(Photo Credit: blakespot, via Compfight cc)

The Collector’s Fallacy

This post has moved to Zettelkasten.de. Read it there.

There’s a tendency in all of us to gather useful stuff and feel good about it. To collect is a reward in itself. As knowledge workers, we’re inclined to look for the next groundbreaking thought, for intellectual stimulation: we pile up promising books and articles, and we store half the internet as bookmarks, just so we get the feeling of being on the cutting edge.

Continue reading on Zettelkasten.de …