BlogEngine: Add RSS Reader

This commit is contained in:
Thomas 2023-02-08 21:18:53 +00:00
parent d9bc962d72
commit bfa2485db1
49 changed files with 501 additions and 438 deletions

View file

@ -11,38 +11,38 @@ tags:
- notion - notion
--- ---
This piece turned out a little long than expected because I really want to clarify that this is not a “Why Bear is better than Notion” article. It is a “Why Bear suits my needs right now better than Notion” discussion. So theres a little more nuance in my explanation. This piece turned out a little long than expected because I really want to clarify that this is not a "Why Bear is better than Notion" article. It is a "Why Bear suits my needs right now better than Notion" discussion. So there's a little more nuance in my explanation.
The crux of my point it is this: I am a scatter brained person who develops software, makes dance, and exercises semi-seriously - and I need a digital tool to help me manage my thoughts, writing, documentation, and general projects. I previously used Bear, a beautiful and simple markdown-esque note keeping app, but forgot about it when I moved cities and jobs pretty much all at once. In my new life I started using Notion, a cross-platform feature-rich editor, but Ive gone back to Bear. The crux of my point it is this: I am a scatter brained person who develops software, makes dance, and exercises semi-seriously - and I need a digital tool to help me manage my thoughts, writing, documentation, and general projects. I previously used Bear, a beautiful and simple markdown-esque note keeping app, but forgot about it when I moved cities and jobs pretty much all at once. In my new life I started using Notion, a cross-platform feature-rich editor, but I've gone back to Bear.
I went back to Bear because I like the simplicity - it let me categorise, expand, delete, and move things around in a way which is much closer to how I think about my life and work. Also, as a developer, if I want complexity Ill roll my own: between Google Docs and serverless providers I can achieve a lot. I went back to Bear because I like the simplicity - it let me categorise, expand, delete, and move things around in a way which is much closer to how I think about my life and work. Also, as a developer, if I want complexity I'll roll my own: between Google Docs and serverless providers I can achieve a lot.
## A brief love letter to Apps ## A brief love letter to Apps
I live my life in a couple of lanes: Im a front-end software engineer in a small team at a rapidly growing scale-up, and also a dancer/producer for a small contemporary dance company, and someone who likes to write and journal for their own personal development. I am asking a lot from any app, I want it to collate my thinking of software architecture; document specific practices across a range of projects; and keep track of myriad side projects, restaurants I want to visit, narrative structures and scene ideas; document research material and my evaluation of it; and outline workflows for funding applications. I want to do these things with as little context switching as possible. I want a killer app that doesnt exist: not only are these a contrived set of requirements, but how I think about each of them, my mental models for them, are different. I live my life in a couple of lanes: I'm a front-end software engineer in a small team at a rapidly growing scale-up, and also a dancer/producer for a small contemporary dance company, and someone who likes to write and journal for their own personal development. I am asking a lot from any app, I want it to collate my thinking of software architecture; document specific practices across a range of projects; and keep track of myriad side projects, restaurants I want to visit, narrative structures and scene ideas; document research material and my evaluation of it; and outline workflows for funding applications. I want to do these things with as little context switching as possible. I want a killer app that doesn't exist: not only are these a contrived set of requirements, but how I think about each of them, my mental models for them, are different.
But I really love the search. I love apps. I love the promise that a new App brings - its like buying a new blank notebook, non-blank regular book. Its the promise of a new you, a new way of thinking, doing, producing - one step closer to the way you work now, and a more productive, happier, wealthier, and skinnier version of yourself. I think this is the feeling which fuelled first decade after the iPhone was released, when everyone wanted to talk, read, write about the killer app for iOs (and now iPadOS) or OSX (and now OSX). But I really love the search. I love apps. I love the promise that a new App brings - it's like buying a new blank notebook, non-blank regular book. It's the promise of a new you, a new way of thinking, doing, producing - one step closer to the way you work now, and a more productive, happier, wealthier, and skinnier version of yourself. I think this is the feeling which fuelled first decade after the iPhone was released, when everyone wanted to talk, read, write about the killer app for iOs (and now iPadOS) or OSX (and now OSX).
It definitely feels now like this conversation has slowed down, the conversation is less around specific apps. However, every now and again, hype rises out of Product Hunt or Hacker News to offer up some crafter, artisanal interfaces. Bear and Notion have been two such apps: Ive seen them on twitter, in online publications, and other developers mention them. It definitely feels now like this conversation has slowed down, the conversation is less around specific apps. However, every now and again, hype rises out of Product Hunt or Hacker News to offer up some crafter, artisanal interfaces. Bear and Notion have been two such apps: I've seen them on twitter, in online publications, and other developers mention them.
## Bear ## Bear
[Bear](https://bear.app) is a beautiful note-taking App built for the Apple ecosystem (iOS, iPadOS, MacOS) by Shiny Frog. The premise is simple: you write in a markdown (or markdown-esque) syntax, which gives you access to a limited set of features: body text, headings, lists, links, images, inline code, bold, italics. Notes themselves are organised by any number of tags ( anything starting with # ) which can be nested, e.g. `post/post` versus `blog/portfolio`. Its been [recognised](https://blog.bear.app/2017/06/thank-you-yes-you-for-our-2017-apple-design-award/) by Apple number of times for their fantastic visual design. Which makes sense: it does one thing well, feels simple, but can be integrated into very powerful workflows (e.g. exporting to markdown and plain html). This is Apples philosophy, surely. [Bear](https://bear.app) is a beautiful note-taking App built for the Apple ecosystem (iOS, iPadOS, MacOS) by Shiny Frog. The premise is simple: you write in a markdown (or markdown-esque) syntax, which gives you access to a limited set of features: body text, headings, lists, links, images, inline code, bold, italics. Notes themselves are organised by any number of tags ( anything starting with #' ) which can be nested, e.g. `post/post` versus `blog/portfolio`. It's been [recognised](https://blog.bear.app/2017/06/thank-you-yes-you-for-our-2017-apple-design-award/) by Apple number of times for their fantastic visual design. Which makes sense: it does one thing well, feels simple, but can be integrated into very powerful workflows (e.g. exporting to markdown and plain html). This is Apple's philosophy, surely.
### In Praise of Bear ### In Praise of Bear
There are a couple of things I really liked about using Bear: There are a couple of things I really liked about using Bear:
- Creating notes comes with much lower entry requirements, I just hit ⌘N and I get a new note, it doesnt need to be anyway, I can just dump whatever I need into it and then organise it later. - Creating notes comes with much lower entry requirements, I just hit ⌘N and I get a new note, it doesn't need to be anyway, I can just dump whatever I need into it and then organise it later.
- Both apps are visually beautiful, but that doesnt mean I shouldnt mention it twice: the UI is very nicely designed. - Both apps are visually beautiful, but that doesn't mean I shouldn't mention it twice: the UI is very nicely designed.
- It specialises in one kind of content: slightly-enhanced text, and executes on that one idea well. - It specialises in one kind of content: slightly-enhanced text, and executes on that one idea well.
- Easy to export: I can get from a note to sanitised HTML, markdown, pdf, docx is two clicks and 5 seconds - which makes it so easy to integrate into any workflow. - Easy to export: I can get from a note to sanitised HTML, markdown, pdf, docx is two clicks and 5 seconds - which makes it so easy to integrate into any workflow.
### My time with Bear (2017-2018) ### My time with Bear (2017-2018)
After graduating my Ph.D. into my first software development job I was looking around for note taking apps, so I could keep track of what was happening in meetings, product development ideas, and my own personal learnings. My first job came with a lot of context switching - I was on a number of different projects, so flexibility was important. After graduating my Ph.D. into my first software development job I was looking around for note taking apps, so I could keep track of what was happening in meetings, product development ideas, and my own personal learnings. My first job came with a lot of context switching - I was on a number of different projects, so flexibility was important.
I came across Bear, probably from an App Store feature, and loved it. But around 6 months after starting the job, I relocated from Southampton to London, and not soon after I started actively looking for new job opportunities. The job I was in was okay, but not what I imagined it would be, or what I needed at that time in my professional journey. this is important because I was going through a lot of personal change and turbulence - I didnt have a system in place for anything, and it would have been pointless to develop one because things were changing so rapidly. I came across Bear, probably from an App Store feature, and loved it. But around 6 months after starting the job, I relocated from Southampton to London, and not soon after I started actively looking for new job opportunities. The job I was in was okay, but not what I imagined it would be, or what I needed at that time in my professional journey. this is important because I was going through a lot of personal change and turbulence - I didn't have a system in place for anything, and it would have been pointless to develop one because things were changing so rapidly.
So I left bear behind accidentally, I simply stopped using it and it never occurred to me to start using it again around the time I moved to London in early 2018. So I left bear behind accidentally, I simply stopped using it and it never occurred to me to start using it again around the time I moved to London in early 2018.
## Notion ## Notion
Describing [Notion](https://www.notion.so) is much less simple than Bear, they describe themselves as an all-in-one workspace. It offers an astonishing amount of functionality: Kanban boards, structured tables with filters, embedded web pages, todo lists… honestly I do a disservice in trying to list them all. Describing [Notion](https://www.notion.so) is much less simple than Bear, they describe themselves as an all-in-one workspace'. It offers an astonishing amount of functionality: Kanban boards, structured tables with filters, embedded web pages, todo lists… honestly I do a disservice in trying to list them all.
I started using Notion in early 2018 after moving cities and jobs - two big changes which broke a lot of my old habits and tools. I think I first saw it in a coding livestream by MPJ on his YouTube channel [funfunfunction](https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q) , and then finding this [profile by invision](https://www.invisionapp.com/inside-design/ivan-zhou-notion-interview/) on Ivan Zhao, the co-founder and CEO. He seems like a cool guy, really product focused, and making something productive and beautiful. So I started using Notion personally, and at work. I started using Notion in early 2018 after moving cities and jobs - two big changes which broke a lot of my old habits and tools. I think I first saw it in a coding livestream by MPJ on his YouTube channel [funfunfunction](https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q) , and then finding this [profile by invision](https://www.invisionapp.com/inside-design/ivan-zhou-notion-interview/) on Ivan Zhao, the co-founder and CEO. He seems like a cool guy, really product focused, and making something productive and beautiful. So I started using Notion personally, and at work.
I used it to help me organise my first ever cycle tour across France in 2019 (I got half way through and then rained off - 3/10, would not recommend), to track my route and AirBNBs. I used it to write documentation for projects at work. I kept a track of my personal and seasonal goals (shoutout to [Cortex](https://www.relay.fm/cortex/79) for introducing me to the idea of yearly and seasonal themes.) I used it to help me organise my first ever cycle tour across France in 2019 (I got half way through and then rained off - 3/10, would not recommend), to track my route and AirBNBs. I used it to write documentation for projects at work. I kept a track of my personal and seasonal goals (shoutout to [Cortex](https://www.relay.fm/cortex/79) for introducing me to the idea of yearly and seasonal themes.)
@ -51,10 +51,10 @@ I used it to help me organise my first ever cycle tour across France in 2019 (I
I initially got on really well with Notion, it had a number of really nice features: I initially got on really well with Notion, it had a number of really nice features:
- It is beautifully designed by people who care deeply about visual and software design.It is very obviously a well-considered piece of software. - It is beautifully designed by people who care deeply about visual and software design.It is very obviously a well-considered piece of software.
- Its cross platform, and even has a fully functional web-app, meaning I could access it from anywhere, at any time. - It's cross platform, and even has a fully functional web-app, meaning I could access it from anywhere, at any time.
- The number of ways it lets you store and present data, statically and dynamically, make it a very versatile tool. I used it to write long-form opinion pieces, plan cycle tours, and document software projects. - The number of ways it lets you store and present data, statically and dynamically, make it a very versatile tool. I used it to write long-form opinion pieces, plan cycle tours, and document software projects.
- It provides an opinionated way to store information: systems for categorising are very personal and its very easy to over-architect or make inconsistent. By enforcing a hierarchical structure, its harder to let things sprawl - It provides an opinionated way to store information: systems for categorising are very personal and it's very easy to over-architect or make inconsistent. By enforcing a hierarchical structure, it's harder to let things sprawl
- The structured content, and collaborative team sharing features built in, make it very obviously an excellent tool for organisations - so its a nice future-proofing tool. - The structured content, and collaborative team sharing features built in, make it very obviously an excellent tool for organisations - so it's a nice future-proofing tool.
### Moving away from Notion ### Moving away from Notion
@ -63,14 +63,14 @@ After 4-5 months, I started to notice some noteworthy drawbacks to using Notion
- Sporadic offline support. I would get semi-randomly logged out of my machine, and I the data would often not be available locally. To get deep work done, I like to take myself to wifi free areas and focus, and a number of times, Notion put a spanner in that plan. - Sporadic offline support. I would get semi-randomly logged out of my machine, and I the data would often not be available locally. To get deep work done, I like to take myself to wifi free areas and focus, and a number of times, Notion put a spanner in that plan.
- I rarely reached for the vast array of functionality available to me. I largely stuck with headings, web page embedding, and some tables, sometimes. - I rarely reached for the vast array of functionality available to me. I largely stuck with headings, web page embedding, and some tables, sometimes.
- When I write, I like to be hyper-focused (I am writing this on a plane, in full screen mode, with noise cancelling headphones) - my brain will get distracted by anything I can tweak (colours, spacing, organisation). Notion gave me a lot of options to get distracted by. - When I write, I like to be hyper-focused (I am writing this on a plane, in full screen mode, with noise cancelling headphones) - my brain will get distracted by anything I can tweak (colours, spacing, organisation). Notion gave me a lot of options to get distracted by.
- Poor iPad smart keyboard support. Even something as simple as pressing the down arrow to go to the new paragraph wasnt supported. This is my one feature-related complaint. - Poor iPad smart keyboard support. Even something as simple as pressing the down arrow to go to the new paragraph wasn't supported. This is my one feature-related complaint.
Underneath all of these was a really nebulous feeling that reaching for Notion felt like work. I had a couple of more systemic, underlying problems with using it which are harder to look past than UI or features. Underneath all of these was a really nebulous feeling that reaching for Notion felt like work. I had a couple of more systemic, underlying problems with using it which are harder to look past than UI or features.
Fundamentally, I felt a growing gap between how I thought of myself and my work, and how Notion made me present it. Notion organises each file as if it were a page on a website - in a tree-structure, with siblings, parents, children. This meant that everything had to belong somewhere, which is fine for fully formed ideas, organisations, or processes - but I found it didnt support the growth or development of concepts so well. Sometimes this is fine, because you know the content will mature - e.g. when you are documenting the architecture of software: you know the moving parts, their function, and their relationships. It becomes easy to add new parts and modify existing ones. Fundamentally, I felt a growing gap between how I thought of myself and my work, and how Notion made me present it. Notion organises each file as if it were a page on a website - in a tree-structure, with siblings, parents, children. This meant that everything had to belong somewhere, which is fine for fully formed ideas, organisations, or processes - but I found it didn't support the growth or development of concepts so well. Sometimes this is fine, because you know the content will mature - e.g. when you are documenting the architecture of software: you know the moving parts, their function, and their relationships. It becomes easy to add new parts and modify existing ones.
Sometimes, however, I found this limiting, and I had to force my ideas or notes to fit a structure that I hadnt defined and didnt want to define. I had a number of pages in Notion which were essentially lists of half-formed ideas, or were links to pages for half-formed ideas. This structural organisation felt so final, and high-cost. Like changing anything would require a lot of boilerplate and formulated thinking, when for me the note making and moving _is_ the thinking. Sometimes, however, I found this limiting, and I had to force my ideas or notes to fit a structure that I hadn't defined and didn't want to define. I had a number of pages in Notion which were essentially lists of half-formed ideas, or were links to pages for half-formed ideas. This structural organisation felt so final, and high-cost. Like changing anything would require a lot of boilerplate and formulated thinking, when for me the note making and moving _is_ the thinking.
When does something move to its own page versus sitting in bullet list of other whacky ideas? Where does this new page live? In my mind, it belongs with other half-formed ideas, because its in progress, but it also belongs with its thematic brethren: if its a software idea it doesnt belong next to a meal plan, cycle route database, or fitness training regime. When does something move to its own page versus sitting in bullet list of other whacky ideas? Where does this new page live? In my mind, it belongs with other half-formed ideas, because it's in progress, but it also belongs with its thematic brethren: if it's a software idea it doesn't belong next to a meal plan, cycle route database, or fitness training regime.
This is at the route of my move away from Notion: I learn best through experimenting and demonstrating to myself - and for this to be accessible, I need to have no investment in the results of experimentation. If I need to set up five different routes on Strava before I find the right one, I will happily just discard the old ones - its 2019 and data has never been cheaper. I could not learn a language, framework, or library by reading the docs or a blog post. This is at the route of my move away from Notion: I learn best through experimenting and demonstrating to myself - and for this to be accessible, I need to have no investment in the results of experimentation. If I need to set up five different routes on Strava before I find the right one, I will happily just discard the old ones - it's 2019 and data has never been cheaper. I could not learn a language, framework, or library by reading the docs or a blog post.
Notion is about creating a product., a well formed artefact. My process is about creating a lot of mess at very low cost. I felt guilty about deleting things or moving them within Notion, which is strictly a personal feeling, and not a design intention by the team behind the product (it might be, but I really dont think it is.) Notion is about creating a product., a well formed artefact. My process is about creating a lot of mess at very low cost. I felt guilty about deleting things or moving them within Notion, which is strictly a personal feeling, and not a design intention by the team behind the product (it might be, but I really don't think it is.)
## Returning To Bear ## Returning To Bear
Since moving back to Bear, Ive found writing a lot more pleasant and less intimidating. I actually managed to start _and then finish_ this piece, for example. Migrating all of my information from one to the other has been a little bit of a pain, but its now so easy for me to get started creating something, without worrying about where it belongs or how I should categorise it at the moment of creation. I have my beautiful, overflowing dumping ground, and in six months I look forward to coming back to Notion begging for their opinionated organisational structure. Until then, _vive lors_. Since moving back to Bear, I've found writing a lot more pleasant and less intimidating. I actually managed to start _and then finish_ this piece, for example. Migrating all of my information from one to the other has been a little bit of a pain, but it's now so easy for me to get started creating something, without worrying about where it belongs or how I should categorise it at the moment of creation. I have my beautiful, overflowing dumping ground, and in six months I look forward to coming back to Notion begging for their opinionated organisational structure. Until then, _vive l'ors_.

View file

@ -10,39 +10,39 @@ tags:
- frontend - frontend
--- ---
The elders tell us of a time where you would build websites by literally writing your `.html` files. If you wanted to add some styles, youd write them in a `.css` file and then `<link rel="stylesheet">` the two together. So youd write your entire site in semantic HTML, about whatever it is people did back then (like mammoth hunting or pyramid building) and then you would `ftp` that onto your server, and other people could view it. At least as long as they could fight off polio or resist rebelling against the bourgeoisie. Maybe youd go out and celebrate at the tavern afterwards, but actually that one sounds pretty relevant today. The elders tell us of a time where you would build websites by literally writing your `.html` files. If you wanted to add some styles, you'd write them in a `.css` file and then `<link rel="stylesheet">` the two together. So you'd write your entire site in semantic HTML, about whatever it is people did back then (like mammoth hunting or pyramid building) and then you would `ftp` that onto your server, and other people could view it. At least as long as they could fight off polio or resist rebelling against the bourgeoisie. Maybe you'd go out and celebrate at the tavern afterwards, but actually that one sounds pretty relevant today.
## Component-orientated architectures arrive ## Component-orientated architectures arrive
In the modern (but still terrifying) world of 2019 - HTML, CSS, and JS remain three central tenants of the internet: HTML providing content, CSS styling it, and JS adding functionality on top of everything. The way we get the result of these technologies, HTTP, has remained pretty constant too. In the modern (but still terrifying) world of 2019 - HTML, CSS, and JS remain three central tenants of the internet: HTML providing content, CSS styling it, and JS adding functionality on top of everything. The way we get the result of these technologies, HTTP, has remained pretty constant too.
However, at some point people started to realise that writing _just_ HTML could make it difficult to edit parts of their website. Say you have a navigation header, and you want to add a new page to your website. Well now you need to go through every `.html` file, find the navigation header, and add an item. And what happens if you miss one file by accident? However, at some point people started to realise that writing _just_ HTML could make it difficult to edit parts of their website. Say you have a navigation header, and you want to add a new page to your website. Well now you need to go through every `.html` file, find the navigation header, and add an item. And what happens if you miss one file by accident?
This is the problem which facilitated the evolution of component-centred architecture: a component being some pre-defined visual element, simply a “thing” on a website: a tweet in a list of tweets, a list of currently trending articles on BBC News, a users avatar image. This is the problem which facilitated the evolution of component-centred architecture: a component being some pre-defined visual element, simply a "thing" on a website: a tweet in a list of tweets, a list of currently trending articles on BBC News, a user's avatar image.
This lead to building websites as a set of components which you compose together, as opposed to single monolithic pages. This practice evolved, and more responsibility was handed over to JS and other technologies. People started writing Single Page Applications (SPAs), and static-site generators increased in popularity - where we could define and update components in a single place, and see them updated across our site without having to delve into the nested HTML ourselves. It doesnt matter if the site is actually just a single JS function or runtime which hooks into the browsers URL (e.g. a SPA written in React or Vue) or if it generates a set of HTML files (a static site generator). Component-based architecture is the practice of breaking out our visual element by their role, not their location. This lead to building websites as a set of components which you compose together, as opposed to single monolithic pages. This practice evolved, and more responsibility was handed over to JS and other technologies. People started writing Single Page Applications (SPAs), and static-site generators increased in popularity - where we could define and update components in a single place, and see them updated across our site without having to delve into the nested HTML ourselves. It doesn't matter if the site is actually just a single JS function or runtime which hooks into the browser's URL (e.g. a SPA written in React or Vue) or if it generates a set of HTML files (a static site generator). Component-based architecture is the practice of breaking out our visual element by their role, not their location.
Pairing components with external data sources, like in a CMS or a databases, means that a website does not need to be rebuilt or re-made whenever a new product is added to a store, or the price of an item changes. It has given a lot of power to people in the business, but who werent developers. And its freed up developer time to focus on more developer-y things, like complaining about meetings and fixing their parents wi-fi. Pairing components with external data sources, like in a CMS or a databases, means that a website does not need to be rebuilt or re-made whenever a new product is added to a store, or the price of an item changes. It has given a lot of power to people in the business, but who weren't developers. And it's freed up developer time to focus on more developer-y things, like complaining about meetings and fixing their parents' wi-fi.
## Where does CSS come into this? ## Where does CSS come into this?
Look, the point Im making is that modern web development considers a web page as composed of many components, which can be shared across pages (and even sites). But the way we do styling with CSS didnt immediately go through a similar revolution. In a lot of cases we were still left with one global CSS file, which we would simply `<style ref=stylesheet>` into our application. Look, the point I'm making is that modern web development considers a web page as composed of many components, which can be shared across pages (and even sites). But the way we do styling with CSS didn't immediately go through a similar revolution. In a lot of cases we were still left with one global CSS file, which we would simply `<style ref="stylesheet>` into our application.
This isnt to say it was still 1998 - we developed build chains and pre-processors - tools which would generate CSS, but gave us more advanced features - like inheritance and extension, and functions and variables. This made it much easier to update CSS, and quicker to write in general. This isn't to say it was still 1998 - we developed build chains and pre-processors - tools which would generate CSS, but gave us more advanced features - like inheritance and extension, and functions and variables. This made it much easier to update CSS, and quicker to write in general.
Despite this, these processes often output a single global stylesheet. In the past couple of years, some web developers have created technologies which remove this separation between components and styling - allowing developers to declare styles in the same way they declare components. Despite this, these processes often output a single global stylesheet. In the past couple of years, some web developers have created technologies which remove this separation between components and styling - allowing developers to declare styles in the same way they declare components.
## Why not CSS-in-CSS? ## Why not CSS-in-CSS?
(First off, lets acknowledge the fact that its now completely valid to specify that Im talking about CSS as in a `.css` file - how weird is web development?) (First off, let's acknowledge the fact that it's now completely valid to specify that I'm talking about CSS as in a `.css` file - how weird is web development?)
CSS is incredibly powerful, with a lot of nuance. Its a great technology and some people really love it - it can make websites beautiful and fast and just joyful. Despite what Im about to say, I really like CSS, and Ill use it by default where it makes sense. CSS is incredibly powerful, with a lot of nuance. It's a great technology and some people really love it - it can make websites beautiful and fast and just joyful. Despite what I'm about to say, I really like CSS, and I'll use it by default where it makes sense.
Despite this, there are very legitimate criticisms being levelled at CSS. Principally, these criticisms are due to the way that CSS is authored, managed, and generated - and the sprawling, dynamic, and unpredictable HTML content tree which is tightly coupled to it. Despite this, there are very legitimate criticisms being levelled at CSS. Principally, these criticisms are due to the way that CSS is authored, managed, and generated - and the sprawling, dynamic, and unpredictable HTML content tree which is tightly coupled to it.
There are a couple of problems which emerge from these large, single, often append-only stylesheets. These problems become more apparent, and costly, as an application reaches a certain size, and exists in the real world, where maybe several developers are authoring styles and creating different bits of the website. Even as a solo dev on side projects, Ive felt some of these negatives: There are a couple of problems which emerge from these large, single, often append-only stylesheets. These problems become more apparent, and costly, as an application reaches a certain size, and exists in the real world, where maybe several developers are authoring styles and creating different bits of the website. Even as a solo dev on side projects, I've felt some of these negatives:
- **Name collision:** Different parts of you application share the same logical name, like `.navigation-item` - but is that the nav item in your footer, side bar, or header ? All of a sudden, css is vying to apply the same styles to three three separate navigation items, which you might not necessarily want to look the same. This can lead to… - **Name collision:** Different parts of you application share the same logical name, like `.navigation-item` - but is that the nav item in your footer, side bar, or header ? All of a sudden, css is vying to apply the same styles to three three separate navigation items, which you might not necessarily want to look the same. This can lead to…
- **Over-specific selectors:** To combat the above, you might start chaining your selectors (e.g. `header > .navigation-item`) which is fine, until you have to chain 2, 3, 4 selectors - at which point re-structuring your HTML introduces visual regression and style changes, because your css nesting no-longer matches your HTML. - **Over-specific selectors:** To combat the above, you might start chaining your selectors (e.g. `header > .navigation-item`) which is fine, until you have to chain 2, 3, 4 selectors - at which point re-structuring your HTML introduces visual regression and style changes, because your css nesting no-longer matches your HTML.
- **Keeping styles in just-in-case:** It can be surprisingly hard to know which styles in css you are using, especially when paired with the above: its easy to see if a single class name is being used, but much harder to know, reliably, at a glance, if you have `header > .navigation > .navigation-item > .navigation-icon`. Imagine the complexity you add in when you start dynamically rendering elements with a JS library, or just using JS to add or remove classes from elements. This can lead to bloated CSS files which no one wants to touch or modify, for fear of introducing unforeseen regressions. Which is basically… - **Keeping styles in just-in-case:** It can be surprisingly hard to know which styles in css you are using, especially when paired with the above: it's easy to see if a single class name is being used, but much harder to know, reliably, at a glance, if you have `header > .navigation > .navigation-item > .navigation-icon`. Imagine the complexity you add in when you start dynamically rendering elements with a JS library, or just using JS to add or remove classes from elements. This can lead to bloated CSS files which no one wants to touch or modify, for fear of introducing unforeseen regressions. Which is basically…
- **Unpredictable side effects from modifying or deleting code**: This affects the developer experience and process - well-architected software presents a clear process for change, refactoring, or extension. When you cannot make changes with the knowledge of what youre going to affect, or at least _where_ youre going to affect - it is hard to maintain and extend software into the future. You end up with long, append-only style sheets, and worse, the cursed `!important` tag. - **Unpredictable side effects from modifying or deleting code**: This affects the developer experience and process - well-architected software presents a clear process for change, refactoring, or extension. When you cannot make changes with the knowledge of what you're going to affect, or at least _where_ you're going to affect - it is hard to maintain and extend software into the future. You end up with long, append-only style sheets, and worse, the cursed `!important` tag.
- **Source order specificity**: With more of our client-side applications being rendered, loaded, and managed by JS frameworks or libraries - we cannot reliably predict the order which CSS styles will be loaded into the DOM, because it may be loaded only for a specific page - either intentionally, or from automated code-splitting. Files which load later have higher _source order specificity_ and can override styles declared earlier. So styles can be unpredictably overridden by the way our users use the application. - **Source order specificity**: With more of our client-side applications being rendered, loaded, and managed by JS frameworks or libraries - we cannot reliably predict the order which CSS styles will be loaded into the DOM, because it may be loaded only for a specific page - either intentionally, or from automated code-splitting. Files which load later have higher _source order specificity_ and can override styles declared earlier. So styles can be unpredictably overridden by the way our users use the application.
## CSS-in-JS as a solution ? ## CSS-in-JS as a solution ?
As the name suggests, CSS-in-JS is the process of using JS to generate valid CSS style syntax. This is opposed to managing their styles by creating separate `.css` files (or `.less` and `.scss` for that matter). It is typically defined alongside a component, e.g. the JSX in a React component, or the template in VueJS. This is strongly related to the component-first architecture of modern web development - an extension of the idea that everything about the View of the application (capital V as in MVC) should be defined in one place - not two (a .js file and a .css) As the name suggests, CSS-in-JS is the process of using JS to generate valid CSS style syntax. This is opposed to managing their styles by creating separate `.css` files (or `.less` and `.scss` for that matter). It is typically defined alongside a component, e.g. the JSX in a React component, or the template in VueJS. This is strongly related to the component-first architecture of modern web development - an extension of the idea that everything about the View of the application (capital V as in MVC) should be defined in one place - not two (a .js file and a .css)
Its briefly worth mentioning here that CSS [can be scoped](https://medium.com/@pioul/modular-css-with-react-61638ae9ea3e) to single files - meaning that not all of this functionality is specific to JS. However, the ability to generate and modify styles with the JS language offers a lot of the power of CSS to the hands of those without intimate knowledge of the CSS syntax. Dangerous indeed. It's briefly worth mentioning here that CSS [can be scoped](https://medium.com/@pioul/modular-css-with-react-61638ae9ea3e) to single files - meaning that not all of this functionality is specific to JS. However, the ability to generate and modify styles with the JS language offers a lot of the power of CSS to the hands of those without intimate knowledge of the CSS syntax. Dangerous indeed.
CSS-in-JS is _not_ a singly library or package, and it is not an agreed syntax. A number of approaches have emerged from the community to address this problem. Some example libraries include: CSS-in-JS is _not_ a singly library or package, and it is not an agreed syntax. A number of approaches have emerged from the community to address this problem. Some example libraries include:
- [styled-components](https://www.styled-components.com) - [styled-components](https://www.styled-components.com)
@ -52,15 +52,15 @@ CSS-in-JS is _not_ a singly library or package, and it is not an agreed syntax.
## Why do people keep using CSS-in-JS ? ## Why do people keep using CSS-in-JS ?
Fundamentally: **Its a component-first way of thinking**. it takes the way modern web development thinks about web pages, and the widgets on them - and applies that philosophy to way we write our styles. It gives us a one-to-one relationship between our components, and their styling declaration (as opposed to one global stylesheet and many components.) This means your selectors arent traversing the DOM to find the `.navigation-item` that they _really_ mean. Fundamentally: **It's a component-first way of thinking**. it takes the way modern web development thinks about web pages, and the widgets on them - and applies that philosophy to way we write our styles. It gives us a one-to-one relationship between our components, and their styling declaration (as opposed to one global stylesheet and many components.) This means your selectors aren't traversing the DOM to find the `.navigation-item` that they _really_ mean.
This makes it easy and familiar to think about, and it **centralises our visual code into one place**. This is a nice philosophical benefit, but it pragmatically helps us by constraining where a set of styles are used. This means **they could be edited or deleted with more certainty that we arent about to accidentally change styles across the DOM**. This makes it easy and familiar to think about, and it **centralises our visual code into one place**. This is a nice philosophical benefit, but it pragmatically helps us by constraining where a set of styles are used. This means **they could be edited or deleted with more certainty that we aren't about to accidentally change styles across the DOM**.
For me, the strongest advantage of CSS-in-JS is the addition of functionality from a programming language, like JS. **This allows you to set styles based on global variables (e.g. a theme) or local state and props, and use functions and conditional statements.** This adds a huge range of flexibility and functionality, without having to manually add or remove class names from a DOM element. This drastically reduces the cost of creating complex or delightful user experiences (e.g. having cards hover when theyre under the cursor, or a button glow if its toggled on) without tightly coupling it to specific css classes or selectors. UI libraries and frameworks should abstract the author from the implementation details (i.e. managing the DOM), and CSS-in-JS fits this philosophy. For me, the strongest advantage of CSS-in-JS is the addition of functionality from a programming language, like JS. **This allows you to set styles based on global variables (e.g. a theme) or local state and props, and use functions and conditional statements.** This adds a huge range of flexibility and functionality, without having to manually add or remove class names from a DOM element. This drastically reduces the cost of creating complex or delightful user experiences (e.g. having cards hover when they're under the cursor, or a button glow if it's toggled on) without tightly coupling it to specific css classes or selectors. UI libraries and frameworks should abstract the author from the implementation details (i.e. managing the DOM), and CSS-in-JS fits this philosophy.
When we declare styles at author time, our library of choice (e.g. styled-components) handles the transformation into valid CSS, and inserts it into the DOM. As part of this, the library will likely generate a unique (hashed) classname, this means **developers dont have to worry about creating unique, or strictly-structured class names for their css** - they can just declare styles, and assume they will be correctly scoped. When we declare styles at author time, our library of choice (e.g. styled-components) handles the transformation into valid CSS, and inserts it into the DOM. As part of this, the library will likely generate a unique (hashed) classname, this means **developers don't have to worry about creating unique, or strictly-structured class names for their css** - they can just declare styles, and assume they will be correctly scoped.
Whats more, **the build chain which does all of these is integrated into the existing build process for the website**. We can keep our JS project as purely JS, and dont have to worry about building and bundling `.scss` or `.less` files. What's more, **the build chain which does all of these is integrated into the existing build process for the website**. We can keep our JS project as purely JS, and don't have to worry about building and bundling `.scss` or `.less` files.
## Articles I found useful ## Articles I found useful
I came across a couple of really nicely written articles when I was researching this piece. Id recommend them if youre curious: I came across a couple of really nicely written articles when I was researching this piece. I'd recommend them if you're curious:
- [Why I Write CSS in JavaScript](https://mxstbr.com/thoughts/css-in-js/) - [Why I Write CSS in JavaScript](https://mxstbr.com/thoughts/css-in-js/)
- [What actually is CSS in JS?](https://medium.com/dailyjs/what-is-actually-css-in-js-f2f529a2757) - [What actually is CSS in JS?](https://medium.com/dailyjs/what-is-actually-css-in-js-f2f529a2757)

View file

@ -10,28 +10,28 @@ tags:
- arts - arts
--- ---
This season turned out to be surprisingly busy with culture. I started the month by talking at two tech events in London, meaning I arrived into the full body of the month having produced some very technical, thoughtful output. I needed some really well-considered and curated culture to put everything back in the right places. Kind of like an internal tidy-up after Id rummaged through all of my draws to produce someone who was definitely more knowledgeable than I am, and probably a lot funnier and more extroverted. This season turned out to be surprisingly busy with culture. I started the month by talking at two tech events in London, meaning I arrived into the full body of the month having produced some very technical, thoughtful output. I needed some really well-considered and curated culture to put everything back in the right places. Kind of like an internal tidy-up after I'd rummaged through all of my draws to produce someone who was definitely more knowledgeable than I am, and probably a lot funnier and more extroverted.
## Historic Centre of Florence ## Historic Centre of Florence
Italy, UNESCO World Heritage Site Italy, UNESCO World Heritage Site
Hard as it is to believe now, a stonking four weeks later, but I started off this month in the centre of Florence, Italy. Its a city Ive visited every year since 2014, sometimes alone, sometimes with romantic partners, other times with friends. It is a place unlike anywhere else I have been on earth. The city is old and sprawling, the centuries-old city wall no longer even resembles an outer limit. It is one of the centres of the European renaissance, a hub of craftspeople, artisans, religion, philosophy, and hot blooded commitment to creating something beautiful. I dont care that its full of tourists (myself included). I dont care that I was only there for three full days, and that my Italian really has plummeted. I dont care that its a romanticised ideal that Ive created of a city in a country with some very real economic and political problems, and a culture which I dont think would fit me very well at all. The city reminds me of the wonder and joy of travelling to new places, and to the higher ideals of art and craftspersonship which I value, but can be pulled away from by the urgency of the day-to-day. It is a city which speaks volumes to me, in a quiet, old language that I have to be very still and quiet to hear. The historic centre [is a UNESCO World Heritage site](https://whc.unesco.org/en/list/174/), and I make the rules so I say it counts as culture, and boy am I glad to have had the chance to visit to visit there again. Hard as it is to believe now, a stonking four weeks later, but I started off this month in the centre of Florence, Italy. It's a city I've visited every year since 2014, sometimes alone, sometimes with romantic partners, other times with friends. It is a place unlike anywhere else I have been on earth. The city is old and sprawling, the centuries-old city wall no longer even resembles an outer limit. It is one of the centres of the European renaissance, a hub of craftspeople, artisans, religion, philosophy, and hot blooded commitment to creating something beautiful. I don't care that it's full of tourists (myself included). I don't care that I was only there for three full days, and that my Italian really has plummeted. I don't care that it's a romanticised ideal that I've created of a city in a country with some very real economic and political problems, and a culture which I don't think would fit me very well at all. The city reminds me of the wonder and joy of travelling to new places, and to the higher ideals of art and craftspersonship which I value, but can be pulled away from by the urgency of the day-to-day. It is a city which speaks volumes to me, in a quiet, old language that I have to be very still and quiet to hear. The historic centre [is a UNESCO World Heritage site](https://whc.unesco.org/en/list/174/), and I make the rules so I say it counts as culture, and boy am I glad to have had the chance to visit to visit there again.
## House of MinaLima ## House of MinaLima
Soho, London Soho, London
[MinaLima are a design studio](https://minalima.com/about/) founded in 2002 to create the entire visual language and style of the Harry Potter universe as it was being brought from page to screen. They contributed hugely to the visual props in the franchise. If youve seen the films, you have seen their work: The Daily Prophet (the wizarding newspaper), the most-wanted posters for Sirius Black and Bellatrix Lestrange, the Black family tree tapestry, the penmanship in Molly Weasleys howler that she sends to Ron after he flies a Ford Anglier into a magical tree. The whole thing is situated across four floors in a historic london terrace, with charmingly wonky floors, windows, and ceilings. The walls are full of all of the attention to detail that you could so easily miss by “just” watching the films. I grew up with Harry Potter, the books and the films, and that house felt so wholesome and warm - it is a really wonderful example of an intersection between visual design and world-building. If you are in north-ish London and want to kill 20-40 minutes, go and take a look. Its most wonderful. [MinaLima are a design studio](https://minalima.com/about/) founded in 2002 to create the entire visual language and style of the Harry Potter universe as it was being brought from page to screen. They contributed hugely to the visual props in the franchise. If you've seen the films, you have seen their work: The Daily Prophet (the wizarding newspaper), the most-wanted posters for Sirius Black and Bellatrix Lestrange, the Black family tree tapestry, the penmanship in Molly Weasley's howler that she sends to Ron after he flies a Ford Anglier into a magical tree. The whole thing is situated across four floors in a historic london terrace, with charmingly wonky floors, windows, and ceilings. The walls are full of all of the attention to detail that you could so easily miss by "just" watching the films. I grew up with Harry Potter, the books and the films, and that house felt so wholesome and warm - it is a really wonderful example of an intersection between visual design and world-building. If you are in north-ish London and want to kill 20-40 minutes, go and take a look. It's most wonderful.
## Faith Hope and Charity ## Faith Hope and Charity
The National Theatre, London The National Theatre, London
This piece makes up the final in a trilogy of new work by Alexander Zeldin. I havent seen either of the previous pieces, though I rather wish I had. _Faith Hope and Charity_ takes place in a community centre in London across a couple of months, seeing a host of believably-guarded and warey characters, as they come for a free lunch and choir practice. While I was watching it, I felt the pacing to be unbearably slow at times - but on reflection, the whole thing was staged and timed exactly as it needed to be. You were never force-fed any ideas, and the eight-or-so principle characters tore you between a number of simultaneous plots or points of interest. Certain people and events became more of a centre-piece later on, but for most of it I got such a real sense of London: disjointed conversations hindered by people not wanting to share or give too much - because they either dont know things about themselves or are scared to let other people see them as weak or frightened. Of people deflecting questions and awkwards conversations by busying themselves, or talking about anything (the biscuits, the leaky ceiling, anything) other than the things which very much needed to be talked about. [Susan Lynch, one of the actresses](https://www.nationaltheatre.org.uk/shows/faith-hope-and-charity) put it perfectly when she said that the piece is “about moments between people, and its about small acts of human kindness… the audience is as vulnerable as the players”. Its also the second time Ive seen Cecilia Noble on stage, and the second time Ive watched her command my attention - the woman is fantastic to watch. This piece makes up the final in a trilogy of new work by Alexander Zeldin. I haven't seen either of the previous pieces, though I rather wish I had. _Faith Hope and Charity_ takes place in a community centre in London across a couple of months, seeing a host of believably-guarded and warey characters, as they come for a free lunch and choir practice. While I was watching it, I felt the pacing to be unbearably slow at times - but on reflection, the whole thing was staged and timed exactly as it needed to be. You were never force-fed any ideas, and the eight-or-so principle characters tore you between a number of simultaneous plots or points of interest. Certain people and events became more of a centre-piece later on, but for most of it I got such a real sense of London: disjointed conversations hindered by people not wanting to share or give too much - because they either don't know things about themselves or are scared to let other people see them as weak or frightened. Of people deflecting questions and awkwards conversations by busying themselves, or talking about anything (the biscuits, the leaky ceiling, anything) other than the things which very much needed to be talked about. [Susan Lynch, one of the actresses](https://www.nationaltheatre.org.uk/shows/faith-hope-and-charity) put it perfectly when she said that the piece is "about moments between people, and it's about small acts of human kindness… the audience is as vulnerable as the players". It's also the second time I've seen Cecilia Noble on stage, and the second time I've watched her command my attention - the woman is fantastic to watch.
## Akram Khans Giselle ## Akram Khan's Giselle
Sadlers Wells, London Sadlers Wells, London
I feel lucky that I got a chance to see [this piece](https://www.ballet.org.uk/production/akram-khan-giselle/). Based on the classical ballet, in its characters and broad plot points, but has been adapted into contemporary movement and narrative by Khans choreography and vision. There is always a risk when you see contemporary movement given to classically trained dancers. They could hold back from the rawer moments or the unclean lines. Ballet dancers like to look good, its understandable. For the most part, if you werent looking at them thinking about this - I dont think you would worry so much about it. Tamara Rojos performance as Giselle was, appropriately, otherworldly. From innocence and smitten to fear-driven anger, she mixed vulnerability and strength in a way which I cant imagine ever being able to replicate. The first act was bullish, raucous, misplaced energy. Some wonderful folk dancing, animalistic movement, and very physical violence. The second act, all forty minutes of it, were heartbreaking, and I was furious when the curtain came down without letting me know what I need to do with these new emotions. It was wonderful to see the piece reimagined in this way, and set to a powerfully composed original score and soundscape, which pleased the contemporary dancer in me to no end. I feel lucky that I got a chance to see [this piece](https://www.ballet.org.uk/production/akram-khan-giselle/). Based on the classical ballet, in its characters and broad plot points, but has been adapted into contemporary movement and narrative by Khan's choreography and vision. There is always a risk when you see contemporary movement given to classically trained dancers. They could hold back from the rawer moments or the unclean lines. Ballet dancers like to look good, it's understandable. For the most part, if you weren't looking at them thinking about this - I don't think you would worry so much about it. Tamara Rojo's performance as Giselle was, appropriately, otherworldly. From innocence and smitten to fear-driven anger, she mixed vulnerability and strength in a way which I can't imagine ever being able to replicate. The first act was bullish, raucous, misplaced energy. Some wonderful folk dancing, animalistic movement, and very physical violence. The second act, all forty minutes of it, were heartbreaking, and I was furious when the curtain came down without letting me know what I need to do with these new emotions. It was wonderful to see the piece reimagined in this way, and set to a powerfully composed original score and soundscape, which pleased the contemporary dancer in me to no end.

View file

@ -12,30 +12,30 @@ tags:
- react - react
--- ---
A few weeks ago I was having a conversation with someone about modern web design, and we spoke about web fonts and variable fonts. In my experience, people who work in software development have a couple of hills that they will die on, if so required. For this person - the idea of not using system fonts (i.e. typefaces which are already installed on a users device) was completely baffling. Why are we increasing the time-to-load and packet size required to display a web page - just for a typeface. What about that horrible (re)appearing text, or worse, shifting text which happens when the browser finally loads the typeface. A few weeks ago I was having a conversation with someone about modern web design, and we spoke about web fonts and variable fonts. In my experience, people who work in software development have a couple of hills that they will die on, if so required. For this person - the idea of not using system fonts (i.e. typefaces which are already installed on a user's device) was completely baffling. Why are we increasing the time-to-load and packet size required to display a web page - just for a typeface. What about that horrible (re)appearing text, or worse, shifting text which happens when the browser finally loads the typeface.
System fonts, I had argued to me, are designed and considered specifically for the device viewing the page. Theyre curated in a way that we, as site authors, cannot easily curate. System fonts, I had argued to me, are designed and considered specifically for the device viewing the page. They're curated in a way that we, as site authors, cannot easily curate.
Ever since they introduced that tiny bit of doubt into my mind, I couldnt help thinking that maybe I should just be using system fonts. Long story short, I rewrote my entire personal site (https://thomaswilson.xyz) from [Nuxt](https://nuxtjs.org) (a Vue.JS application framework) into [Gatsby](https://www.gatsbyjs.org) (a React.JS static site generator). It took me like to evenings and Im happy with my decision. Ever since they introduced that tiny bit of doubt into my mind, I couldn't help thinking that maybe I should just be using system fonts. Long story short, I rewrote my entire personal site (https://thomaswilson.xyz) from [Nuxt](https://nuxtjs.org) (a Vue.JS application framework) into [Gatsby](https://www.gatsbyjs.org) (a React.JS static site generator). It took me like to evenings and I'm happy with my decision.
Look, there were a couple of other factors in this. Like, I had just taken the jump to go freelance so I needed to move my increasing portfolio over to my professional site. I wanted to move some of my older pieces of writing from Medium onto pages on this site. I was creating a beautiful list of my favourite albums of 2019 (note from 2023 Wilson: This page of 2019's hottest records didn't make the move between sites). There was a lot going on, and I was finding a lot of friction in the process of writing blog posts for this site. Look, there were a couple of other factors in this. Like, I had just taken the jump to go freelance so I needed to move my increasing portfolio over to my professional site. I wanted to move some of my older pieces of writing from Medium onto pages on this site. I was creating a beautiful list of my favourite albums of 2019 (note from 2023 Wilson: This page of 2019's hottest records didn't make the move between sites). There was a lot going on, and I was finding a lot of friction in the process of writing blog posts for this site.
## Why React, not Vue ? ## Why React, not Vue ?
Fundamentally, I have more personal and professional experience with React. I have created a lot of static sites and dynamic apps with React, Ive used a lot of styling solutions, state management libraries, application architectures, and third-party packages. I know my way around the ecosystem, around React-ive thinking. We should be careful of using tech _just_ because were comfortable with it, but when its your personal website which no one else will see or touch - familiarity is a major benefit. Fundamentally, I have more personal and professional experience with React. I have created a lot of static sites and dynamic apps with React, I've used a lot of styling solutions, state management libraries, application architectures, and third-party packages. I know my way around the ecosystem, around React-ive thinking. We should be careful of using tech _just_ because we're comfortable with it, but when it's your personal website which no one else will see or touch - familiarity is a major benefit.
It definitely didnt help that I was having _big_ problems getting my codebase to build on a new Laptop (a 2019 MacBook Pro, not even something obscure). It couldnt get the Nuxt -> TypeScript build chain to work, despite hours of debugging. Im not a dev-ops or build-chain kind of developer, but really this shouldnt have happened, and should not have been so obscure to solve. It definitely didn't help that I was having _big_ problems getting my codebase to build on a new Laptop (a 2019 MacBook Pro, not even something obscure). It couldn't get the Nuxt -> TypeScript build chain to work, despite hours of debugging. I'm not a dev-ops or build-chain kind of developer, but really this shouldn't have happened, and should not have been so obscure to solve.
Additionally, at the time of writing, the proposed [V3 of Vue.JS](https://medium.com/the-vue-point/plans-for-the-next-iteration-of-vue-js-777ffea6fabf?ref=madewithvuejs.com) will contain a lot of changes to the library and recommended practices. I am excited to see these changes, and I think Vue.JS is a better web application framework out-of-the-box than React and Angular - I believe V3 will bring a lot of hard-learned lessons about web apps into the framework. However, right now I didnt fancy re-writing most of a failing Vue app to have to re-write it again in a few months. _A la_ AngularJS vibes. Additionally, at the time of writing, the proposed [V3 of Vue.JS](https://medium.com/the-vue-point/plans-for-the-next-iteration-of-vue-js-777ffea6fabf?ref=madewithvuejs.com) will contain a lot of changes to the library and recommended practices. I am excited to see these changes, and I think Vue.JS is a better web application framework out-of-the-box than React and Angular - I believe V3 will bring a lot of hard-learned lessons about web apps into the framework. However, right now I didn't fancy re-writing most of a failing Vue app to have to re-write it again in a few months. _A la_ AngularJS vibes.
## Why Gatsby? ## Why Gatsby?
Ive used Gatsby a few times to build quick/simple sites for friends. Its very fast, both in development process, build process, and then loading times. I was looking for something I could be productive in quickly, at Gatsby was that. I've used Gatsby a few times to build quick/simple sites for friends. It's very fast, both in development process, build process, and then loading times. I was looking for something I could be productive in quickly, at Gatsby was that.
I want to give a special shoutout here to the `gastby-image` package for lazy-loading images (alongside the GraphQL support and `image-sharp` library for image processing. This kind of support for blur-up images, and an easy ability to control image size at build time are incredible, and a great step forward for the modern web. I want to give a special shoutout here to the `gastby-image` package for lazy-loading images (alongside the GraphQL support and `image-sharp` library for image processing. This kind of support for blur-up images, and an easy ability to control image size at build time are incredible, and a great step forward for the modern web.
Speaking of GraphQL (smooth, I know) - I think GraphQL is going to play a big part in web development in the next 3-5 years. No, not everything is going to be re-written to be GraphQL endpoints, obviously. That would be a bad idea, obviously. Yet, as a front-leaning full-stack developer, GraphQL is powerful and expressive enough to make me take notice. Gatsby gives you a GraphQL layer to query for all your data (local files, site metadata) - the chance to get familiar with this tech is something I am appreciative of. Speaking of GraphQL (smooth, I know) - I think GraphQL is going to play a big part in web development in the next 3-5 years. No, not everything is going to be re-written to be GraphQL endpoints, obviously. That would be a bad idea, obviously. Yet, as a front-leaning full-stack developer, GraphQL is powerful and expressive enough to make me take notice. Gatsby gives you a GraphQL layer to query for all your data (local files, site metadata) - the chance to get familiar with this tech is something I am appreciative of.
Recently the core-team has been pushing [Gatsby Themes](https://www.gatsbyjs.org/docs/themes/what-are-gatsby-themes/) (as I heard about on [here](http://www.fullstackradio.com/115), [here](https://syntax.fm/show/150/gatsby-themes), and [here](https://syntax.fm/show/150/gatsby-themes)). I love web design (have I mentioned that yet?) - and I love seeing the core-team take such an interesting, systematic approach to design as a core part of their frameworks architecture. It looks like Ill be able to learn a lot about systemised design through Gatsby. Recently the core-team has been pushing [Gatsby Themes](https://www.gatsbyjs.org/docs/themes/what-are-gatsby-themes/) (as I heard about on [here](http://www.fullstackradio.com/115), [here](https://syntax.fm/show/150/gatsby-themes), and [here](https://syntax.fm/show/150/gatsby-themes)). I love web design (have I mentioned that yet?) - and I love seeing the core-team take such an interesting, systematic approach to design as a core part of their framework's architecture. It looks like I'll be able to learn a lot about systemised design through Gatsby.
Lastly, I wanted to quickly/easily deploy my personal site on [Netflify](https://www.netlify.com) - a service which can build, deploy, and host static sites incredibly easy. It took, and I am not exaggerating, about 120 seconds to go from creating a git repo to having this website available on the World Wide Web. Lastly, I wanted to quickly/easily deploy my personal site on [Netflify](https://www.netlify.com) - a service which can build, deploy, and host static sites incredibly easy. It took, and I am not exaggerating, about 120 seconds to go from creating a git repo to having this website available on the World Wide Web.

View file

@ -9,32 +9,32 @@ tags:
- hereabouts - hereabouts
--- ---
Hi, my names Thomas Wilson but I often go by my just my surname. Im 28 years old, currently based in London, England, and I design and build software for a living through my small independent studio [tinyfox studio](https://www.tinyfox.studio). At the beginning of 2020 I quit my job to do this independently, and now Im building _hereabouts_ - an app that provides self-paced walks, tours, hunts, and races for travel adventurers Hi, my name's Thomas Wilson but I often go by my just my surname. I'm 28 years old, currently based in London, England, and I design and build software for a living through my small independent studio [tinyfox studio](https://www.tinyfox.studio). At the beginning of 2020 I quit my job to do this independently, and now I'm building _hereabouts_ - an app that provides self-paced walks, tours, hunts, and races for travel adventurers
In this devblog series I want to record to the process of building something modern and beautiful from the ground up. In this devblog series I want to record to the process of building something modern and beautiful from the ground up.
## My problem/frustration ## My problem/frustration
I love being in places. I love walking around the streets of London, and especially love how London feels like 30-40 little villages that you can find yourself in at any moment. I love learning things about the people who lived and made this place what it is today. Its my favourite part about travelling solo - is that I can walk around a new city at my own pace. I love being in places. I love walking around the streets of London, and especially love how London feels like 30-40 little villages that you can find yourself in at any moment. I love learning things about the people who lived and made this place what it is today. It's my favourite part about travelling solo - is that I can walk around a new city at my own pace.
The Pre-Raphaelites had studios in Bloomsbury, Virginia Woolf lived and wrote some of her work just south of Kings Cross, Sherlock Holmes got coked up just east of Regents Park. You could maybe walk between all of these locations in 60 minutes, and comfortably within an afternoon. Maybe youd notice something things if you read the [blue plaques](https://www.english-heritage.org.uk/visit/blue-plaques/) but really whats a sentence to describe a lifes work? The Pre-Raphaelites had studios in Bloomsbury, Virginia Woolf lived and wrote some of her work just south of King's Cross, Sherlock Holmes got coked up just east of Regent's Park. You could maybe walk between all of these locations in 60 minutes, and comfortably within an afternoon. Maybe you'd notice something things if you read the [blue plaques](https://www.english-heritage.org.uk/visit/blue-plaques/) but really what's a sentence to describe a life's work?
When someone visits London from somewhere else, or when they move here, or even if they just need a good idea for a fourth date - I want them to feel connected to the place and idea of London. Not caught up in frustration at the man who get on the tube before letting other people off, or the blind panic when you misjudge the timing of the turnstiles coming into the tube station. But these are both very real experiences of London, everyone who visits should have them. But theres so much more in a place. When someone visits London from somewhere else, or when they move here, or even if they just need a good idea for a fourth date - I want them to feel connected to the place and idea of London. Not caught up in frustration at the man who get on the tube before letting other people off, or the blind panic when you misjudge the timing of the turnstiles coming into the tube station. But these are both very real experiences of London, everyone who visits should have them. But there's so much more in a place.
## Hereabouts: self-paced walks, tours, hunts, and races for travel adventurers ## Hereabouts: self-paced walks, tours, hunts, and races for travel adventurers
Hereabouts is the name of the app I am building to address this problem. I want to create an app that lets people explore a new or old city by giving them guided tours, stories, puzzles, and races. Hereabouts is the name of the app I am building to address this problem. I want to create an app that lets people explore a new or old city by giving them guided tours, stories, puzzles, and races.
I want to reach adventurous travellers and sate their appetite to learn more about what makes a place beautiful. I want to reach adventurous travellers and sate their appetite to learn more about what makes a place beautiful.
I dont know what exactly it will look like or do. Thats part of the development process. I don't know what exactly it will look like or do. That's part of the development process.
## What I want to achieve ## What I want to achieve
By building this idea out there are two things I want to achieve, neither of which are overtly technical: By building this idea out there are two things I want to achieve, neither of which are overtly technical:
1. I want people to experience joy and connection form the place theyre in or connected to 1. I want people to experience joy and connection form the place they're in or connected to
2. I want to provide high quality story telling and information resources 2. I want to provide high quality story telling and information resources
For a while Ive wanted to build an app that helps people discover a place by being in it. I want to help people discover the same feeling I have when Im somewhere and I learn something about it. I want people to have fun in the real world, in real spaces without being tied to their screen, or a paper guide, or part of a pack of tourists. For a while I've wanted to build an app that helps people discover a place by being in it. I want to help people discover the same feeling I have when I'm somewhere and I learn something about it. I want people to have fun in the real world, in real spaces without being tied to their screen, or a paper guide, or part of a pack of tourists.
I love storytelling, and humans keep re-inventing how the do it. Oral stories, pictures, words, theatre, tv, movies, podcasts. Storytelling is probably the least talked about oldest profession. So I want to share the stories of the people who frequented, built, ruined, or just passed the streets. I love storytelling, and humans keep re-inventing how the do it. Oral stories, pictures, words, theatre, tv, movies, podcasts. Storytelling is probably the least talked about oldest profession. So I want to share the stories of the people who frequented, built, ruined, or just passed the streets.
@ -42,13 +42,13 @@ I hate that when I go to learn about a certain place, or person, or idea - the i
## Why build an app? ## Why build an app?
Something I keep re-learning about myself is that I have this drive to build and create things for me any myself. I first learned this about myself during my Ph.D. where I taught myself software development so I could make a web app for my education research. In the three years since I finished that, I have worked for a large company and a growth-stage VC-backed startup. I happily sacrificed a lot of myself into these jobs because I learned a lot from other people. Being self-taught is a good start but its a terrible middle. Something I keep re-learning about myself is that I have this drive to build and create things for me any myself. I first learned this about myself during my Ph.D. where I taught myself software development so I could make a web app for my education research. In the three years since I finished that, I have worked for a large company and a growth-stage VC-backed startup. I happily sacrificed a lot of myself into these jobs because I learned a lot from other people. Being self-taught is a good start but it's a terrible middle.
And to be honest, I think the things I want to achieve can _only_ be done on modern handheld technology (i.e. phones) because I want to bring multimedia (picture, audio, text) to someone based on the place theyre in. I think it _could_ be done by being walked/shown around by a professional. However thats not an idea that excited me, and I also think its too much like forced fun. Part of being an explorer or adventurer is being able to go down side streets, get surprise ice cream, or spend twice as long somewhere you find interesting. There should be guidelines, not fences/rails. And to be honest, I think the things I want to achieve can _only_ be done on modern handheld technology (i.e. phones) because I want to bring multimedia (picture, audio, text) to someone based on the place they're in. I think it _could_ be done by being walked/shown around by a professional. However that's not an idea that excited me, and I also think it's too much like forced fun. Part of being an explorer or adventurer is being able to go down side streets, get surprise ice cream, or spend twice as long somewhere you find interesting. There should be guidelines, not fences/rails.
This is also overlooking the fact that I am a software developer by trade/craft. It influences to way I see the world, solve problems, and build solutions. I enjoy designing and building software, and Im sure thats affecting my decisions. This is also overlooking the fact that I am a software developer by trade/craft. It influences to way I see the world, solve problems, and build solutions. I enjoy designing and building software, and I'm sure that's affecting my decisions.
I also want to call out a couple of very influential sources to me when thinking about if this is something that I _can_ or _should_ even be doing: I also want to call out a couple of very influential sources to me when thinking about if this is something that I _can_ or _should_ even be doing:
- [Basecamps books](https://basecamp.com/books) - specifically "Rework” and “It doesnt have to be crazy at work” have shown me the kind of company it is possible to build, and the way you can go about making something. - [Basecamp's books](https://basecamp.com/books) - specifically "Rework" and "It doesn't have to be crazy at work" have shown me the kind of company it is possible to build, and the way you can go about making something.
- The [indie hacker](https://www.indiehackers.com/start) movement have been excellent at showing me countless examples of people who have built businesses at various speeds and with various goals. - The [indie hacker](https://www.indiehackers.com/start) movement have been excellent at showing me countless examples of people who have built businesses at various speeds and with various goals.

View file

@ -11,98 +11,98 @@ tags:
- figma - figma
--- ---
UX design resists standardisation or templates. It cant be a one-size-fits-all approach, and the nature of the product, audience, and production team all mean that something different is needed each time. Whenever I get past the early stages of UX design (like understanding what a product does, and who it does it for) - I find myself with a different working document and process than Ive needed before. UX design resists standardisation or templates. It can't be a one-size-fits-all approach, and the nature of the product, audience, and production team all mean that something different is needed each time. Whenever I get past the early stages of UX design (like understanding what a product does, and who it does it for) - I find myself with a different working document and process than I've needed before.
I wanted to share the things I do that give me the momentum to get to a place where I can do this more specific kind of document. I wanted to share the things I do that give me the momentum to get to a place where I can do this more specific kind of document.
I am a very visual person, so this starts with low-fidelity UI mockups: clunky boxes and text, that I can setup and tear down quickly. My process is built around forcing me to move through all the parts of an app quickly. This means I force myself to encounter all the information an app needs,every way that its displayed, and everything a user can do with it. Seeing these things within a short time makes repetition and patterns more obvious - and helps me make connections and similarities. I am a very visual person, so this starts with low-fidelity UI mockups: clunky boxes and text, that I can setup and tear down quickly. My process is built around forcing me to move through all the parts of an app quickly. This means I force myself to encounter all the information an app needs,every way that it's displayed, and everything a user can do with it. Seeing these things within a short time makes repetition and patterns more obvious - and helps me make connections and similarities.
## Tl;dr ## Tl;dr
1. You are going to make a list of all the Screens & Components in your app. Youre going to do it in an ugly-ass looking document that youre never going to share and actively should not spend time to make pretty. Make this document however makes sense for you - Figma, Sketch, Paper, whiteboard, plaintext, WHATEVER I DONT CARE AND NOR SHOULD YOU - YOURE NEVER GOING TO SHARE IT 1. You are going to make a list of all the Screens & Components in your app. You're going to do it in an ugly-ass looking document that you're never going to share and actively should not spend time to make pretty. Make this document however makes sense for you - Figma, Sketch, Paper, whiteboard, plaintext, WHATEVER I DON'T CARE AND NOR SHOULD YOU - YOU'RE NEVER GOING TO SHARE IT
2. First, make a list of all the **Screens** in your app, and lay them out (roughly, dont fiddle with arrows) in an order that someone could realistically move through your app. I like to group similar screens closely together, and I also look for common screen patterns (e.g. screen with a header and a footer nav). 2. First, make a list of all the **Screens** in your app, and lay them out (roughly, don't fiddle with arrows) in an order that someone could realistically move through your app. I like to group similar screens closely together, and I also look for common screen patterns (e.g. screen with a header and a footer nav).
3. Youre going to make a note of all the high level **Components** on the screens. Start by just making a boring old box with really clear terms on it: e.g. “Account Details”, “Sign in form”, “Create account form”, “Recent transactions”. 3. You're going to make a note of all the high level **Components** on the screens. Start by just making a boring old box with really clear terms on it: e.g. "Account Details", "Sign in form", "Create account form", "Recent transactions".
4. Go through these high level components and start making the low level, more abstract/utility ones: “TextField”, “Button”, “Icon”, “Label”. And begin to compose these together in your higher level components.But **do not lay them out nicely**. 4. Go through these high level components and start making the low level, more abstract/utility ones: "TextField", "Button", "Icon", "Label". And begin to compose these together in your higher level components.But **do not lay them out nicely**.
5. Take your Screens and Components, and list all the variants in **State** that you can have: can a TextField be `selected` or `disabled` ? Can an event in a calendar be `upcoming` or `passed` ? Can the Screen for editing an article be in `edit` mode or `read` mode ? 5. Take your Screens and Components, and list all the variants in **State** that you can have: can a TextField be `selected` or `disabled` ? Can an event in a calendar be `upcoming` or `passed` ? Can the Screen for editing an article be in `edit` mode or `read` mode ?
6. Youre going to look at all the components you have that are **Actions** - i.e. can I click it, slide it, interact with it in a way that does something: navigates me somewhere, opens a modal, logs me out. Use this as a chance to understand all the ways a user can navigate around the app - going from one screen to another. 6. You're going to look at all the components you have that are **Actions** - i.e. can I click it, slide it, interact with it in a way that does something: navigates me somewhere, opens a modal, logs me out. Use this as a chance to understand all the ways a user can navigate around the app - going from one screen to another.
7. Look at all this amazing information you have about your app or product, and how you can organise it to help your team design and build a product in a way that creates the most value most quickly. 7. Look at all this amazing information you have about your app or product, and how you can organise it to help your team design and build a product in a way that creates the most value most quickly.
## Why even do UX? ## Why even do UX?
I mean, honestly, if you dont think it will serve you, your product, or your team, dont do it. Dont invest in work uncritically, if you dont see how it ultimately makes you more money or a better product. If you think what Im saying is dumb, dont listen or read - I think plenty of people have useless opinions, especially on the internet. I mean, honestly, if you don't think it will serve you, your product, or your team, don't do it. Don't invest in work uncritically, if you don't see how it ultimately makes you more money or a better product. If you think what I'm saying is dumb, don't listen or read - I think plenty of people have useless opinions, especially on the internet.
For clarity, when I talk about UX design, I am talking broadly at developing an understanding of an app or service from the end-users perspective. How will they interpret the thing we put in front of them, and what can a design/engineering team to do make sure that the creative vision is the same as the users experience? For clarity, when I talk about UX design, I am talking broadly at developing an understanding of an app or service from the end-user's perspective. How will they interpret the thing we put in front of them, and what can a design/engineering team to do make sure that the creative vision is the same as the user's experience?
Its like viewing a miniature model of a town: you can see distinct regions, connections between them, and kinds of buildings in each. But you dont get bogged down in the specifics, like “is that store a pharmacy or a grocery store?”. It's like viewing a miniature model of a town: you can see distinct regions, connections between them, and kinds of buildings in each. But you don't get bogged down in the specifics, like "is that store a pharmacy or a grocery store?".
More concretely, this understanding is useful in making a product that actually does what you want it to. Its no good having an app that does something “in theory” - because truly most of your users dont care about “in theory”. They want to learn a another language, make a claim on their insurance, or get a new beautiful handmade scarf. This is similar to the Jobs to be Done mentality. More concretely, this understanding is useful in making a product that actually does what you want it to. It's no good having an app that does something "in theory" - because truly most of your users don't care about "in theory". They want to learn a another language, make a claim on their insurance, or get a new beautiful handmade scarf. This is similar to the Jobs to be Done mentality.
From an engineering perspective, as someone who _makes_ apps, doing UX design helps break a “simple” app into exactly how many things need to be built, and what they need to do. It lets me build the necessary things, in a sensible order, and gives me a shared language/understanding that then lets me communicate effectively with a team. From an engineering perspective, as someone who _makes_ apps, doing UX design helps break a "simple" app into exactly how many things need to be built, and what they need to do. It lets me build the necessary things, in a sensible order, and gives me a shared language/understanding that then lets me communicate effectively with a team.
## 0: Screens & Components, State & Actions ## 0: Screens & Components, State & Actions
Everything I do in this early UX process is designed to help me understand my app along four heuristics: Screens, Components, State, and Actions. These are the things that I find it useful to break an app into - they might be useless to you and thats okay. Do read on, and see what sticks. Everything I do in this early UX process is designed to help me understand my app along four heuristics: Screens, Components, State, and Actions. These are the things that I find it useful to break an app into - they might be useless to you and that's okay. Do read on, and see what sticks.
- **Screens** - these are easy to intuitively grasp but hard to define. Assuming prior knowledge of the internet: theyre like URLs of a website, which will take you to a specific page, like a profile, sign-up form, or edition of a newsletter. More abstractly, theyre discrete, separate views into an application which are containers of other content (i.e. Components). - **Screens** - these are easy to intuitively grasp but hard to define. Assuming prior knowledge of the internet: they're like URLs of a website, which will take you to a specific page, like a profile, sign-up form, or edition of a newsletter. More abstractly, they're discrete, separate views into an application which are containers of other content (i.e. Components).
- **Components** - are also really hard to define - theyre visual _things_ on the screen. The [ReactJS](https://reactjs.org/docs/components-and-props.html) docs calls them “independent, reusable pieces, [that let you] think about each piece in isolation”. The most commonly thrown-around example of components are Buttons or Cards - theyre just reusable bits of UI, that can be really small (like a button) or larger (like a log-in form). - **Components** - are also really hard to define - they're visual _things_ on the screen. The [ReactJS](https://reactjs.org/docs/components-and-props.html) docs calls them "independent, reusable pieces, [that let you] think about each piece in isolation". The most commonly thrown-around example of components are Buttons or Cards - they're just reusable bits of UI, that can be really small (like a button) or larger (like a log-in form).
- **State** - is a way of modelling what information/data the app will store, it usually affects what will be displayed or how it will appear. For example, whats the name of the current logged-in order, what are the details of the current search/filter being set by the user? - **State** - is a way of modelling what information/data the app will store, it usually affects what will be displayed or how it will appear. For example, what's the name of the current logged-in order, what are the details of the current search/filter being set by the user?
- **Actions** - are the things a user can _do_ on a screen, what can they press, swipe, toggle, move, type into, etc. The consequences of these actions can be things like opening a modal (a Component, by the way) or navigating to a new Screen . - **Actions** - are the things a user can _do_ on a screen, what can they press, swipe, toggle, move, type into, etc. The consequences of these actions can be things like opening a modal (a Component, by the way) or navigating to a new Screen .
### You are creating a low-fidelity working document. ### You are creating a low-fidelity working document.
To help identify these things, were going to make a visual representation of each. At the early stage on the UX design process I have to remind myself often that **I am creating a working document** - one that wont be shared widely (or at all) within my team, let alone outside of it. This is just a way for me to organise my thinking. This isnt about making any kind of mockup that looks pretty, or crafting meaningful naming conventions. To help identify these things, we're going to make a visual representation of each. At the early stage on the UX design process I have to remind myself often that **I am creating a working document** - one that won't be shared widely (or at all) within my team, let alone outside of it. This is just a way for me to organise my thinking. This isn't about making any kind of mockup that looks pretty, or crafting meaningful naming conventions.
Your working document will probably be ugly. Mine _definitely_ are. I have intentionally put ugly images / mockups in this article so you can feel better about how bad yours look and how little you want to share them. Anything you create during this process is meant to serve you, not Dribbble or Instagram. Embrace the brutality and Spartan utility of your UX diagrams. Your working document will probably be ugly. Mine _definitely_ are. I have intentionally put ugly images / mockups in this article so you can feel better about how bad yours look and how little you want to share them. Anything you create during this process is meant to serve you, not Dribbble or Instagram. Embrace the brutality and Spartan utility of your UX diagrams.
Trying to optimise for visual and semantic consistency at this stage makes you _feel_ busy, without having to address the important questions. So long as I know what a component or screen means, then it doesnt matter. Trying to optimise for visual and semantic consistency at this stage makes you _feel_ busy, without having to address the important questions. So long as I know what a component or screen means, then it doesn't matter.
I also really encourage you to **work with pencil and paper next to you**. Even if youre prototyping on paper - have more paper ready just to jot down questions, sketches, ideas as they arise to your brain. You cant go chasing down every rabbit hole - it will break your flow, and I really think its important to build up a good flow, in this process. This flowcess. But you also dont want to lose any legitimate ideas or questions you have, they can help you a lot when youre doing higher-fidelity design. I also really encourage you to **work with pencil and paper next to you**. Even if you're prototyping on paper - have more paper ready just to jot down questions, sketches, ideas as they arise to your brain. You can't go chasing down every rabbit hole - it will break your flow, and I really think it's important to build up a good flow, in this process. This flowcess. But you also don't want to lose any legitimate ideas or questions you have, they can help you a lot when you're doing higher-fidelity design.
### Oh my plants ### Oh my plants
In this article Ill be using the example of an app that helps you keep track of all of your houseplants. Ive called it “all my plants” and Ive given it a very predictable green theme. In this article I'll be using the example of an app that helps you keep track of all of your houseplants. I've called it "all my plants" and I've given it a very predictable green theme.
## 1: Identify Screens ## 1: Identify Screens
So lets imagine the following user journey in _oh my plants_ - I want to get to a page that has a whole bunch of details about a specific herb. I can get there by searching for it, by seeing it in a list of plants Ive said I own, and perhaps by an automatically created list of plants (like whats in season). This gives us five screens: starting at _Home_ we can end up at _Plant Details_ by going through either of the three possible routes. So let's imagine the following user journey in _oh my plants_ - I want to get to a page that has a whole bunch of details about a specific herb. I can get there by searching for it, by seeing it in a list of plants I've said I own, and perhaps by an automatically created list of plants (like what's in season). This gives us five screens: starting at _Home_ we can end up at _Plant Details_ by going through either of the three possible routes.
![](/assets/blog-images/FF9A9D2E-BB92-4334-8EE6-67BE6F85B14C.png) ![](/assets/blog-images/FF9A9D2E-BB92-4334-8EE6-67BE6F85B14C.png)
This kind of layout, with the arrows drawn between them, is useful at some points, but its exactly the kind of over-optimisation I just warned against. Because what happens if I need to add in a new screen or remove one? I have to re-structure all of the positions and arrow flow. This kind of layout, with the arrows drawn between them, is useful at some points, but it's exactly the kind of over-optimisation I just warned against. Because what happens if I need to add in a new screen or remove one? I have to re-structure all of the positions and arrow flow.
Robust software architecture is about fighting rigidity and letting developers change individual parts quickly - because requirements are always changing. Good UX design can learn from this - build a working document is about rapid change - the tool you use should work as close to the speed of your thought process as possible so that one isnt lagging behind the other. Robust software architecture is about fighting rigidity and letting developers change individual parts quickly - because requirements are always changing. Good UX design can learn from this - build a working document is about rapid change - the tool you use should work as close to the speed of your thought process as possible so that one isn't lagging behind the other.
Ill end up with something like this: simply a list of screens, in some semblance of order that make sense to me. In Figma I make each of these into its own Component (or Symbol in Sketch) so that when I begin fleshing out user journeys later on (like the pretty arrow diagram above) - well see something less abstract than just white boxes and black text to represent a screen. I'll end up with something like this: simply a list of screens, in some semblance of order that make sense to me. In Figma I make each of these into its own Component (or Symbol in Sketch) so that when I begin fleshing out user journeys later on (like the pretty arrow diagram above) - we'll see something less abstract than just white boxes and black text to represent a screen.
![](/assets/blog-images/E8AEAC0A-FAE2-40B9-AABB-3BDA358F6167.png) ![](/assets/blog-images/E8AEAC0A-FAE2-40B9-AABB-3BDA358F6167.png)
## 2: Identify the Components ## 2: Identify the Components
Once youve got all the screens, start going one-level deeper by identifying Components - distinct bits of UI. I find it most useful to start with the high-level components - i.e. Start with high-level components - things driven by their use cases. I name these in very opinionated ways: “User Owned Plants” is a list of plants the user has said they one, and “In Season Plants” might be a list of plants that are ripe for planting. Once you've got all the screens, start going one-level deeper by identifying Components - distinct bits of UI. I find it most useful to start with the high-level components - i.e. Start with high-level components - things driven by their use cases. I name these in very opinionated ways: "User Owned Plants" is a list of plants the user has said they one, and "In Season Plants" might be a list of plants that are ripe for planting.
After Ive done that, I start identifying the lower level components: things which are not so closely tied to specific use cases. Prime examples are Lists and List Items, as well as Buttons or Cards. Use your own discretion and opinions here: is a `SearchBar` component distinct from a `TextField` - or should they be the same thing? I would advise leaning towards how you communicate things to the user: do you want them to conceptualise a search bar as the same thing as a field in a form? For me, I would keep them as different components, but I could very easily see it argued either way. After I've done that, I start identifying the lower level components: things which are not so closely tied to specific use cases. Prime examples are Lists and List Items, as well as Buttons or Cards. Use your own discretion and opinions here: is a `SearchBar` component distinct from a `TextField` - or should they be the same thing? I would advise leaning towards how you communicate things to the user: do you want them to conceptualise a search bar as the same thing as a field in a form? For me, I would keep them as different components, but I could very easily see it argued either way.
![](/assets/blog-images/34B9248A-544A-424A-8047-AE1A2AD07CB4.png) ![](/assets/blog-images/34B9248A-544A-424A-8047-AE1A2AD07CB4.png)
## 3: Identify State ## 3: Identify State
With your new list of screens and components, youre going to want to go through and make a note of every possible variant based on state. With your new list of screens and components, you're going to want to go through and make a note of every possible variant based on state.
![](/assets/blog-images/FD4E6849-5A3C-49FA-90E6-578E0754C050.png) ![](/assets/blog-images/FD4E6849-5A3C-49FA-90E6-578E0754C050.png)
This is when things start to get a little complex/tedious, because it can massively increase the sheer number of screens and components that it looks like youre going to have to design. Its also worth paying attention here to the kinds of State - chances are there arent that many discrete ones, and they can come in groups and are conceptually related: selected/disabled, read-only/edit, locked/available, active/not-active. This is when things start to get a little complex/tedious, because it can massively increase the sheer number of screens and components that it looks like you're going to have to design. It's also worth paying attention here to the kinds of State - chances are there aren't that many discrete ones, and they can come in groups and are conceptually related: selected/disabled, read-only/edit, locked/available, active/not-active.
When it comes to the actual design, youll be able to share visual metaphors here. In fact I would suggest that kind of consistency can make complex business logic or states feel much more simple than their implementation details. If things are disabled/inactive/locked, for example, the result in very similar to a user: theres a thing on the screen that I cant interact with right now. When it comes to the actual design, you'll be able to share visual metaphors here. In fact I would suggest that kind of consistency can make complex business logic or states feel much more simple than their implementation details. If things are disabled/inactive/locked, for example, the result in very similar to a user: there's a thing on the screen that I can't interact with right now.
### Wait, why do I need state on my components AND screens? ### Wait, why do I need state on my components AND screens?
Yeah, this is a very fine line - and totally _is_ a matter of opinion. This is one of the points that makes product and UX design a skilled profession. Yeah, this is a very fine line - and totally _is_ a matter of opinion. This is one of the points that makes product and UX design a skilled profession.
For me, it comes back to what I said at the beginning: UX is about understanding how the user will perceive the product. Even if the information were presenting is correct, its the _way_ its presented that makes the difference between a good and a great experience. For me, it comes back to what I said at the beginning: UX is about understanding how the user will perceive the product. Even if the information we're presenting is correct, it's the _way_ it's presented that makes the difference between a good and a great experience.
Enough talk, lets give an example. Imagine _oh my plants_ knows whens the perfect time to plant each garden herb. It has a `PlantList` screen - which is a simple list view of `PlantListItem`s. Enough talk, let's give an example. Imagine _oh my plants_ knows when's the perfect time to plant each garden herb. It has a `PlantList` screen - which is a simple list view of `PlantListItem`s.
A `PlantListItem` represents one individual plant - which is the thing thats in season. Following that logic, we want to flag each plant as in “in season”. A `PlantListItem` represents one individual plant - which is the thing that's in season. Following that logic, we want to flag each plant as in "in season".
![](/assets/blog-images/9AA37981-1E94-4C85-8923-4E183CEB439E.png) ![](/assets/blog-images/9AA37981-1E94-4C85-8923-4E183CEB439E.png)
@ -112,18 +112,18 @@ In practice, however, the fact that all the plants are highlighted means that no
An action is normally something that changes the state of a component or screen, or that navigates the user around the app. An action is normally something that changes the state of a component or screen, or that navigates the user around the app.
If you identify actions at this point in the design process, it should be really easy for you. Its probably anything that uses a component like `button` or `select` or `switch` or `tab`... you get the idea. If you identify actions at this point in the design process, it should be really easy for you. It's probably anything that uses a component like `button` or `select` or `switch` or `tab`... you get the idea.
![](/assets/blog-images/EB659E9B-3FC1-4A0F-B6C2-E1C2622159FB.png) ![](/assets/blog-images/EB659E9B-3FC1-4A0F-B6C2-E1C2622159FB.png)
Conversely, if you recognise there are actions that are triggered by clicking non-typical components, like undecorated `text` or `header` - then maybe these are interaction patterns you need to make discoverable to your users. Conversely, if you recognise there are actions that are triggered by clicking non-typical components, like undecorated `text` or `header` - then maybe these are interaction patterns you need to make discoverable to your users.
Whats considered “typical” depends on the conventions of the platform, e.g. long-press and double-tap on mobile dont really have equals on the web. What's considered "typical" depends on the conventions of the platform, e.g. long-press and double-tap on mobile don't really have equals on the web.
## 5: Go forth ## 5: Go forth
Look, you made it all this way, congrats because even I struggled to make it this far down when I was proof-reading. Hopefully at some point along this journey youve thought “wait, why am I doing this next bit, surely I should go off and do something else instead” - then good. Go do that other thing, like thinking about adding new features or, even better, removing others, or making clearer visual metaphors or condensing many metaphors into one. Look, you made it all this way, congrats because even I struggled to make it this far down when I was proof-reading. Hopefully at some point along this journey you've thought "wait, why am I doing this next bit, surely I should go off and do something else instead" - then good. Go do that other thing, like thinking about adding new features or, even better, removing others, or making clearer visual metaphors or condensing many metaphors into one.
Youve hopefully got a much more complete and accurate (read: big and scary) picture of your product: all the things it needs to do, what you need to build, and exactly how many designs youve got to flesh out and then build. Or throw over the wall to the developers and hear them argue over for the next 2-9 months. You've hopefully got a much more complete and accurate (read: big and scary) picture of your product: all the things it needs to do, what you need to build, and exactly how many designs you've got to flesh out and then build. Or throw over the wall to the developers and hear them argue over for the next 2-9 months.
Take this blueprint forward and make something youre proud of, or ignore my opinions and become successful anyway - I truly do not mind. Take this blueprint forward and make something you're proud of, or ignore my opinions and become successful anyway - I truly do not mind.

View file

@ -10,48 +10,48 @@ tags:
- react - react
--- ---
I am currently in the process of building herabouts - an app thats like a tour guide, only cooler. Most of my previous engineering work has been web-based (react and vue) because the internet is an accessible and very capable system for building modern applications. However hereabouts needed certain native functionality - like location, reliable offline data access, battery status, and access to the camera. Yes some of these things are _possible_ on the web, but theyre much more native functionality. I am currently in the process of building herabouts - an app that's like a tour guide, only cooler. Most of my previous engineering work has been web-based (react and vue) because the internet is an accessible and very capable system for building modern applications. However hereabouts needed certain native functionality - like location, reliable offline data access, battery status, and access to the camera. Yes some of these things are _possible_ on the web, but they're much more native functionality.
Ive made the decision to write the app in [React Native](https://reactnative.dev) - a library for creating applications for native platforms (like iOS and Android) using React and JavaScript. I've made the decision to write the app in [React Native](https://reactnative.dev) - a library for creating applications for native platforms (like iOS and Android) using React and JavaScript.
I wanted to share the reasons I made this decision because despite having worked with React Native for clients in the past, I was cautious about adopting it for a personal project. AirBNB famously [abandoned React Native in 2018](https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a) citing a couple of pretty damning reasons: long initialisation and first-render times; lack of code-sharing between platforms; mixed developer experience. I wanted to share the reasons I made this decision because despite having worked with React Native for clients in the past, I was cautious about adopting it for a personal project. AirBNB famously [abandoned React Native in 2018](https://medium.com/airbnb-engineering/sunsetting-react-native-1868ba28e30a) citing a couple of pretty damning reasons: long initialisation and first-render times; lack of code-sharing between platforms; mixed developer experience.
In the same post, however, they say that most (80%) of their devs found the experience at least slightly positive (subjective as that is), and acknowledged that a lot of their problems may relate to the the size and complexity of their team and product, alongside the early nature of React Native at the time. In the years since that was published, React Native and the surrounding ecosystem (like [expo](https://expo.io/)) have made the development experience of making a native app a _lot_ better. Big tech companies, like [Shopify, have also adopted](https://www.theregister.co.uk/2020/01/30/shopify_shifts_its_mobile_development_to_react_native/) React Native. In the same post, however, they say that most (80%) of their devs found the experience at least slightly positive' (subjective as that is), and acknowledged that a lot of their problems may relate to the the size and complexity of their team and product, alongside the early nature of React Native at the time. In the years since that was published, React Native and the surrounding ecosystem (like [expo](https://expo.io/)) have made the development experience of making a native app a _lot_ better. Big tech companies, like [Shopify, have also adopted](https://www.theregister.co.uk/2020/01/30/shopify_shifts_its_mobile_development_to_react_native/) React Native.
Its never a clear choice what tech to use, and its especially difficult when youre starting something new and have no constraints. So I wanted to make sure I was making an informed decision, and this article outlines that process. It's never a clear choice what tech to use, and it's especially difficult when you're starting something new and have no constraints. So I wanted to make sure I was making an informed decision, and this article outlines that process.
## Why not native-native? ## Why not native-native?
I initially started working on hereabouts as a native iOS application, written in Swift. At present (March 2020) Apple are transitioning the way UIs are written in Swift to use [SwiftUI](https://developer.apple.com/xcode/swiftui/). The API for SwiftUI is still in beta (currently beta 4) and still has a few quirks (e.g. see [this Reddit post](https://www.reddit.com/r/iOSProgramming/comments/fd7mpz/holy_shit_how_the_hell_do_i_use_swiftui_its_the/)) that made the process of building an app cumbersome and awkward. I was unsure of the relationship and split of responsibilities between the existing UIKit, storyboard, and SwiftUI. Given how SwiftUI is largely [seen as the future](https://www.macrumors.com/2019/06/03/apple-unveils-swiftui-framework/) of iOS development (and its declarative philosophy shared by react), I didnt want to tie myself to supporting an app written without it, nor did I like the possibility of having to maintain a hybrid UIKit/SwiftUI app where the roles and responsibilities of both parts were changing regularly. I initially started working on hereabouts as a native iOS application, written in Swift. At present (March 2020) Apple are transitioning the way UIs are written in Swift to use [SwiftUI](https://developer.apple.com/xcode/swiftui/). The API for SwiftUI is still in beta (currently beta 4) and still has a few quirks (e.g. see [this Reddit post](https://www.reddit.com/r/iOSProgramming/comments/fd7mpz/holy_shit_how_the_hell_do_i_use_swiftui_its_the/)) that made the process of building an app cumbersome and awkward. I was unsure of the relationship and split of responsibilities between the existing UIKit, storyboard, and SwiftUI. Given how SwiftUI is largely [seen as the future](https://www.macrumors.com/2019/06/03/apple-unveils-swiftui-framework/) of iOS development (and its declarative philosophy shared by react), I didn't want to tie myself to supporting an app written without it, nor did I like the possibility of having to maintain a hybrid UIKit/SwiftUI app where the roles and responsibilities of both parts were changing regularly.
This opened up the possibility of creating my app using a cross-platform library - not because I wanted a cross-platform app, but because I wasnt happy with the native tooling. This just happened to open up the Android market. Previously I made the decision to focus on iOS over Android because a) I am personally all in on the Apple ecosystem, and b) [more money](https://www.businessofapps.com/data/app-revenues/) [is spent](https://sensortower.com/blog/average-publisher-revenue) in Apples App Store and in the Google Play store. Although Im not making hereabouts to get rich, Id certainly like some gin money. This opened up the possibility of creating my app using a cross-platform library - not because I wanted a cross-platform app, but because I wasn't happy with the native tooling. This just happened to open up the Android market. Previously I made the decision to focus on iOS over Android because a) I am personally all in on the Apple ecosystem, and b) [more money](https://www.businessofapps.com/data/app-revenues/) [is spent](https://sensortower.com/blog/average-publisher-revenue) in Apple's App Store and in the Google Play store. Although I'm not making hereabouts to get rich, I'd certainly like some gin money.
## Reason #0: I already know React ## Reason #0: I already know React
The simplest reason for me choosing React Native, over say [NativeScript](https://www.nativescript.org/) or [Flutter](https://flutter.dev/), is that I already know React. Ive got experience writing production and personal static websites and enterprise apps in it. The declarative and data-bound nature of writing React, especially with [TypeScript](https://www.typescriptlang.org/), comes quite naturally to me now. The simplest reason for me choosing React Native, over say [NativeScript](https://www.nativescript.org/) or [Flutter](https://flutter.dev/), is that I already know React. I've got experience writing production and personal static websites and enterprise apps in it. The declarative and data-bound nature of writing React, especially with [TypeScript](https://www.typescriptlang.org/), comes quite naturally to me now.
NativeScript supports Angular and Vue as first class citizens, which I simply dont use as much as React. I started off my Frontend Engineering career writing apps in Angular, and Ive written a couple of fast and easy websites in Vue. Theyre good frameworks, but right now I think React has a large (if not consistently _good_) community. I know how to handle complexity in React, and I have opinions about styling and architecture that React doesnt fight. NativeScript supports Angular and Vue as first class citizens, which I simply don't use as much as React. I started off my Frontend Engineering career writing apps in Angular, and I've written a couple of fast and easy websites in Vue. They're good frameworks, but right now I think React has a large (if not consistently _good_) community. I know how to handle complexity in React, and I have opinions about styling and architecture that React doesn't fight.
Additionally, Google has a reputation for sunsetting projects with little notice, which makes me a little apprehensive about Flutter. Additionally, Google has a reputation for sunsetting projects with little notice, which makes me a little apprehensive about Flutter.
## Reason #1: React Native isnt a hybrid WebView app ## Reason #1: React Native isn't a hybrid WebView app
Many peoples gut reaction to creating a cross-platform app is to think of something laggy, and distinctly _un-native_. One of the simple and earliest approaches to adopting cross-platform mobile development was to use web technologies, which are famously cross-platform and system agonistic, and have the native app render the web app (in its own HTML, CSS, JS) through a WebView. This is how platforms like [Ionic](https://ionicframework.com/) and [Cordova](https://cordova.apache.org/) work - and theyre great for very simple apps, but theyre notoriously [not very performant](https://www.netguru.com/blog/why-you-should-migrate-your-app-from-ionic-cordova-or-phonegap-to-react-native). Many people's gut reaction to creating a cross-platform app is to think of something laggy, and distinctly _un-native_. One of the simple and earliest approaches to adopting cross-platform mobile development was to use web technologies, which are famously cross-platform and system agonistic, and have the native app render the web app (in its own HTML, CSS, JS) through a WebView. This is how platforms like [Ionic](https://ionicframework.com/) and [Cordova](https://cordova.apache.org/) work - and they're great for very simple apps, but they're notoriously [not very performant](https://www.netguru.com/blog/why-you-should-migrate-your-app-from-ionic-cordova-or-phonegap-to-react-native).
Native apps are better than, and distinguished from, websites by how “snappy” they feel - how responsive the app is to a button being pressed, giving haptic feedback, and then navigating somewhere. Its hardly noticeable when done right, but when theres a 400ms delay between pressing a button and seeing something happen - you _will_ notice. Native apps are better than, and distinguished from, websites by how "snappy" they feel - how responsive the app is to a button being pressed, giving haptic feedback, and then navigating somewhere. It's hardly noticeable when done right, but when there's a 400ms delay between pressing a button and seeing something happen - you _will_ notice.
However, React Native works differently: you write your views using JSX, and these are then bridged to native code for iOS and Android - meaning, at some point, it becomes native, and is not just a DOM. However, React Native works differently: you write your views using JSX, and these are then bridged to native code for iOS and Android - meaning, at some point, it becomes native, and is not just a DOM.
Lets just take a second to clarify some of these words: first **[JSX](https://facebook.github.io/jsx/)** is an extension to JavaScript (or to give it its full title: ECMAScript) that introduces XML-like syntax for creating structured data. It looks an awful lot like HTML, but with a few syntactic differences, and the ability to include data in the structure: Let's just take a second to clarify some of these words: first **[JSX](https://facebook.github.io/jsx/)** is an extension to JavaScript (or to give it its full title: ECMAScript) that introduces XML-like syntax for creating structured data. It looks an awful lot like HTML, but with a few syntactic differences, and the ability to include data in the structure:
``` ```
import React from react import React from react'
const Message = () => { const Message = () => {
return ( return (
<div style={{colour: blue}}> <div style={{colour: blue'}}>
<h1>Hello!</h1> <h1>Hello!</h1>
<p className=“message__text”>Welcome, friend</p> <p className="message__text">Welcome, friend</p>
</div> </div>
) )
} }
@ -59,22 +59,22 @@ const Message = () => {
export default Message export default Message
``` ```
**JSX** is [syntactic sugar](https://en.wikipedia.org/wiki/Syntactic_sugar) - its goal is to makes the code easier to write and parse by the humans who have to read and write it. Its also a separate library from React and React Native, but is used by both libraries by default as a way to construct a virtual representation of view elements, like HTML Elements or DOM Nodes. It compiles down to something different, and instructs React to do React-y things like `createElement()` but were not talking about that here. **JSX** is [syntactic sugar](https://en.wikipedia.org/wiki/Syntactic_sugar) - its goal is to makes the code easier to write and parse by the humans who have to read and write it. It's also a separate library from React and React Native, but is used by both libraries by default as a way to construct a virtual representation of view elements, like HTML Elements or DOM Nodes. It compiles down to something different, and instructs React to do React-y things like `createElement()` but we're not talking about that here.
The second term I want to bring out and talk about is **bridging**. For an application to run natively, it has to be able to talk to the system in a language and API it understands: e.g. UIKit and Objective-C/Swift for iOS, and android.View with Java/Kotlin for Android. This is a distinguishing factor between cross platform apps (like those in React Native) and the hybrid WebView Apps - we can use a cross platform application to communicate with native APIs, like maps or device orientation. The second term I want to bring out and talk about is **bridging**. For an application to run natively, it has to be able to talk to the system in a language and API it understands: e.g. UIKit and Objective-C/Swift for iOS, and android.View with Java/Kotlin for Android. This is a distinguishing factor between cross platform apps (like those in React Native) and the hybrid WebView Apps - we can use a cross platform application to communicate with native APIs, like maps or device orientation.
The part of the architecture that lets a JS thread, where a React Native application runs, talk to the native Threads, [is called the Bridge](https://hackernoon.com/understanding-react-native-bridge-concept-e9526066ddb8). The details of how this works are covered for both [iOS](https://reactnative.dev/docs/communication-ios) and [Android](https://reactnative.dev/docs/native-modules-android) in the React Native docs and arent really relevant for this discussion - just know they happen. The part of the architecture that lets a JS thread, where a React Native application runs, talk to the native Threads, [is called the Bridge](https://hackernoon.com/understanding-react-native-bridge-concept-e9526066ddb8). The details of how this works are covered for both [iOS](https://reactnative.dev/docs/communication-ios) and [Android](https://reactnative.dev/docs/native-modules-android) in the React Native docs and aren't really relevant for this discussion - just know they happen.
This article isnt an explainer about JSX (but JSX is a interesting idea, regardless of what you think about React itself) or Bridges - but theyre two big technological differences between React Native and other libraries that let you use web technologies to write apps. This article isn't an explainer about JSX (but JSX is a interesting idea, regardless of what you think about React itself) or Bridges - but they're two big technological differences between React Native and other libraries that let you use web technologies to write apps.
## Reason #3: The performance and benchmarking discussions are nuanced ## Reason #3: The performance and benchmarking discussions are nuanced
One of my core beliefs (read: something I work very hard at, but am not necessarily always good at) is only releasing/selling products that I would be happy for someone to pay for. Above all other things, I want hereabouts to have a native feel - to be responsive and feel intuitive to use. It needs to hit that magical 60fps bar, and _feel_ like a first class citizen on a mobile phone because that is what I would expect from an app that I paid for. One of my core beliefs (read: something I work very hard at, but am not necessarily always good at) is only releasing/selling products that I would be happy for someone to pay for. Above all other things, I want hereabouts to have a native feel - to be responsive and feel intuitive to use. It needs to hit that magical 60fps bar, and _feel_ like a first class citizen on a mobile phone because that is what I would expect from an app that I paid for.
Ive seen a couple of blog posts that (like [this one](https://medium.com/swlh/flutter-vs-native-vs-react-native-examining-performance-31338f081980) from inVerita, and [this one](https://thoughtbot.com/blog/examining-performance-differences-between-native-flutter-and-react-native-mobile-development) from Thoughtbot) about the performance of React Native that had me worried that Id be fighting an uphill battle to get performance two where I wanted it. I've seen a couple of blog posts that (like [this one](https://medium.com/swlh/flutter-vs-native-vs-react-native-examining-performance-31338f081980) from inVerita, and [this one](https://thoughtbot.com/blog/examining-performance-differences-between-native-flutter-and-react-native-mobile-development) from Thoughtbot) about the performance of React Native that had me worried that I'd be fighting an uphill battle to get performance two where I wanted it.
Fundamentally, though, good performance in React Native _is_ possible. It requires a [thoughtful consideration around what youre doing](https://reactnative.dev/docs/performance), and building with the tools that let you investigate and profile your app to let you know when theres a problem. Fundamentally, though, good performance in React Native _is_ possible. It requires a [thoughtful consideration around what you're doing](https://reactnative.dev/docs/performance), and building with the tools that let you investigate and profile your app to let you know when there's a problem.
Its much easier to read an article and see how React Native (or any tech) “has bad performance” but this depends too much on what youre doing and how youre doing it. Its a nuanced discussion and it also gets at the whole “software engineering is a skilled profession” thing. The research I did in this area was enough to assure me that I can code myself into a bad situation, but I can code my way (at least mostly) out of it. It's much easier to read an article and see how React Native (or any tech) "has bad performance" but this depends too much on what you're doing and how you're doing it. It's a nuanced discussion and it also gets at the whole "software engineering is a skilled profession" thing. The research I did in this area was enough to assure me that I can code myself into a bad situation, but I can code my way (at least mostly) out of it.
So Im not overly concerned about poor performance in hereabouts _just_ because its written in React Native. Of course I am concerned about it, but I dont think this is a problem unique to the platform. So I'm not overly concerned about poor performance in hereabouts _just_ because it's written in React Native. Of course I am concerned about it, but I don't think this is a problem unique to the platform.

View file

@ -9,93 +9,93 @@ tags:
- hereabouts - hereabouts
--- ---
Hi, Im Thomas Wilson, Im a web and mobile engineer building [Hereabouts](https://www.hereabouts.app) - an app thats like a tour guide if the tour guide was like [Roman Mars](https://99percentinvisible.org) after three beers. This is a devblog where I talk about my progress building that app. Also Im very sorry, Roman, youre one of a handful of people who I genuinely aspire to be like please dont take me seriously. Hi, I'm Thomas Wilson, I'm a web and mobile engineer building [Hereabouts](https://www.hereabouts.app) - an app that's like a tour guide if the tour guide was like [Roman Mars](https://99percentinvisible.org) after three beers. This is a devblog where I talk about my progress building that app. Also I'm very sorry, Roman, you're one of a handful of people who I genuinely aspire to be like please don't take me seriously.
--- ---
Well March 2020 has certainly turned out to be quite the introduction to working on a side project. Its the month that the UK (and Europe, North America, etc.) started nationwide lockdowns to prevent and slow the spread of Covid-19. Social distancing, self isolation, and quarantine are all in full swing. Well March 2020 has certainly turned out to be quite the introduction to working on a side project. It's the month that the UK (and Europe, North America, etc.) started nationwide lockdowns to prevent and slow the spread of Covid-19. Social distancing, self isolation, and quarantine are all in full swing.
Imagine starting a side project based almost entirely on being able to travel somewhere new, or even just go outside and walk around. Its a strange time, but everyones talking about it being a strange time, and honestly were all just trying to find a new temporary normal. So with that in mind, heres an inconsequential update on Hereabouts. Imagine starting a side project based almost entirely on being able to travel somewhere new, or even just go outside and walk around. It's a strange time, but everyone's talking about it being a strange time, and honestly we're all just trying to find a new temporary normal. So with that in mind, here's an inconsequential update on Hereabouts.
Im still pretty undecided on the format of a devblog, which makes this one a brain dump, but definitely the kind of brain dump that you should read. I'm still pretty undecided on the format of a devblog, which makes this one a brain dump, but definitely the kind of brain dump that you should read.
## Notable things ## Notable things
- The Covid-19 Pandemic. - The Covid-19 Pandemic.
- By September-October, I want something that I would be happy for someone to download, and happy to ask them to pay for. Assuming theres still an App Store to host on, a functioning economy, cities to visit, or people to buy it. Okay that was my last Coronajoke. And that, my last coronamonteau. - By September-October, I want something that I would be happy for someone to download, and happy to ask them to pay for. Assuming there's still an App Store to host on, a functioning economy, cities to visit, or people to buy it. Okay that was my last Coronajoke. And that, my last coronamonteau.
- Decided on running development in 4-6 week cycles. This is based off what Ive read from Basecamp, but also a general understanding about how long things _actually_ take to design and build to a certain quality. - Decided on running development in 4-6 week cycles. This is based off what I've read from Basecamp, but also a general understanding about how long things _actually_ take to design and build to a certain quality.
- Started building more formal documentation (in Notion and Figma) for use case + market summaries, user journeys, business entities, and visual design language. - Started building more formal documentation (in Notion and Figma) for use case + market summaries, user journeys, business entities, and visual design language.
* Purchased hereabouts.app domain, built a [simple landing page](https://www.hereabouts.app) (ReactJS on NextJS, hosted on Zeits Now), and created a mailing list that so far only my friends (and not even my parents (?!)) have signed up for (SendGrid, NowJS API routes, and CloudFlare worker). * Purchased hereabouts.app domain, built a [simple landing page](https://www.hereabouts.app) (ReactJS on NextJS, hosted on Zeit's Now), and created a mailing list that so far only my friends (and not even my parents (?!)) have signed up for (SendGrid, NowJS API routes, and CloudFlare worker).
* Started building the app. Started in Swift, moved to React Native. Enrolled in Apple Developer Programme (arguably too early - its a motivator) * Started building the app. Started in Swift, moved to React Native. Enrolled in Apple Developer Programme (arguably too early - it's a motivator)
## What an Emotional Rollercoaster, feat. The Covid-19 Pandemic ## What an Emotional Rollercoaster, feat. The Covid-19 Pandemic
This past month has been one of the most varied emotional months Ive had in a long time. I my emotions to be strong in number and force at the best of times, but imagine quitting your job to go freelance in what is possibly the worst time in 30 years. This past month has been one of the most varied emotional months I've had in a long time. I my emotions to be strong in number and force at the best of times, but imagine quitting your job to go freelance in what is possibly the worst time in 30 years.
I am not a stranger to self-doubt. I often think I am about to get fired, when in reality I have never been fired, or come close to being fired. Maybe I have and Ive just instinctively played the “you cant fire me I quit” card. I am not a stranger to self-doubt. I often think I am about to get fired, when in reality I have never been fired, or come close to being fired. Maybe I have and I've just instinctively played the "you can't fire me I quit" card.
The big situation here is the SARS-COV-19 pandemic thats needling through the globe right now, causing unnecessary loss of life and bringing an economic recession and a wake of social crises. What a time to be alive. The big situation here is the SARS-COV-19 pandemic that's needling through the globe right now, causing unnecessary loss of life and bringing an economic recession and a wake of social crises. What a time to be alive.
Can you imagine finally deciding on a side project you want to carry through to production/publication, and then a [global pandemic breaks out](https://www.who.int/dg/speeches/detail/who-director-general-s-opening-remarks-at-the-media-briefing-on-covid-19---11-march-2020). Not great for the global community or economy, or for an app specifically built around the idea of being outside. This comes at at time where most of the advice from European governments is to stay inside, with [increasing](https://www.bloomberg.com/news/articles/2020-03-14/spain-s-coronavirus-cases-jump-36-to-5-753-deaths-rise-to-136) policing and [enforcement](https://www.aljazeera.com/news/2020/03/europe-edging-total-coronavirus-lockdown-200316131203376.html). Can you imagine finally deciding on a side project you want to carry through to production/publication, and then a [global pandemic breaks out](https://www.who.int/dg/speeches/detail/who-director-general-s-opening-remarks-at-the-media-briefing-on-covid-19---11-march-2020). Not great for the global community or economy, or for an app specifically built around the idea of being outside. This comes at at time where most of the advice from European governments is to stay inside, with [increasing](https://www.bloomberg.com/news/articles/2020-03-14/spain-s-coronavirus-cases-jump-36-to-5-753-deaths-rise-to-136) policing and [enforcement](https://www.aljazeera.com/news/2020/03/europe-edging-total-coronavirus-lockdown-200316131203376.html).
Ive had to seriously think if building this app remains a good idea, and I think it is. I really struggle with shiny-things-syndrome, where I flit between and around ideas and never commit fully to something. Hereabouts is the first side project in 3-4 years that I decided to see through seriously _and then did something about_. Its the only one that made it past a line in a note on my iPhone. Its not the only idea Ive got rolling around in my phones notes, and its probably not even the best one. But its one that excites me: its an app I would like to have and use, and its something that I think can offer value to people. Its also going to teach me a lot about launching an app in the real world. I've had to seriously think if building this app remains a good idea, and I think it is. I really struggle with shiny-things-syndrome, where I flit between and around ideas and never commit fully to something. Hereabouts is the first side project in 3-4 years that I decided to see through seriously _and then did something about_. It's the only one that made it past a line in a note on my iPhone. It's not the only idea I've got rolling around in my phone's notes, and it's probably not even the best one. But it's one that excites me: it's an app I would like to have and use, and it's something that I think can offer value to people. It's also going to teach me a lot about launching an app in the real world.
Yes, a pandemic with strong government response _is_ a good mitigating factor - March 2020 has truly been wild, and I dont think anyone would blame me if I let the idea go to find something more stable. Like a Zoom alternative or remote yoga teaching software. Or just a Zoom alternative without extremely concerning privacy policies. Im sure video conferencing cant be that hard, theres no reason that all the alternatives are terrible to use. Yes, a pandemic with strong government response _is_ a good mitigating factor - March 2020 has truly been wild, and I don't think anyone would blame me if I let the idea go to find something more stable. Like a Zoom alternative or remote yoga teaching software. Or just a Zoom alternative without extremely concerning privacy policies. I'm sure video conferencing can't be that hard, there's no reason that all the alternatives are terrible to use.
Whats more, the current economic climate has seen travel and leisure industries basically tank out, and its looking a lot like many people this year wont be able to take holidays. Some of those holidays will be honeymoons, or retirement cruises, or long-overdue personal relaxation time. This pandemic is making a lot of us suffer in a lot of ways, but I digress. Theres a [global recession](https://www.theguardian.com/business/2020/mar/15/prepare-for-the-coronavirus-global-recession) [threatening](https://www.economist.com/finance-and-economics/2020/03/05/a-recession-is-unlikely-but-not-impossible) and although central economic bodies are all trying to act to mitigate these factors, theres a chance that people dont have money to spend. What's more, the current economic climate has seen travel and leisure industries basically tank out, and it's looking a lot like many people this year won't be able to take holidays. Some of those holidays will be honeymoons, or retirement cruises, or long-overdue personal relaxation time. This pandemic is making a lot of us suffer in a lot of ways, but I digress. There's a [global recession](https://www.theguardian.com/business/2020/mar/15/prepare-for-the-coronavirus-global-recession) [threatening](https://www.economist.com/finance-and-economics/2020/03/05/a-recession-is-unlikely-but-not-impossible) and although central economic bodies are all trying to act to mitigate these factors, there's a chance that people don't have money to spend.
I am aware that I dont want to continue under the guise of [hustle porn](https://www.inc.com/serhat-pala/alexis-ohanian-says-hustle-porn-is-most-dangerous-trend-in-silicon-valley-heres-how-to-eradicate-it.html) - I dont want to see this hardship and fight against it _just_ because its a struggle and it makes a great narrative. I dont want to think of myself as a company that was shaped by the COVID-19 quarantine and panic. I dont really see that as an influential factor in what Ive decided to do, or how. Whats more, I dont think end users really care about how or when an app was made, especially as people will (hopefully) start to forget what things were like during these times within months of them ending. I am aware that I don't want to continue under the guise of [hustle porn](https://www.inc.com/serhat-pala/alexis-ohanian-says-hustle-porn-is-most-dangerous-trend-in-silicon-valley-heres-how-to-eradicate-it.html) - I don't want to see this hardship and fight against it _just_ because it's a struggle and it makes a great narrative. I don't want to think of myself as a company that was shaped by the COVID-19 quarantine and panic. I don't really see that as an influential factor in what I've decided to do, or how. What's more, I don't think end users really care about how or when an app was made, especially as people will (hopefully) start to forget what things were like during these times within months of them ending.
The primary reasons I want to continue development of this idea, at least for now, is how early in development I am and how this remains a side-project. I have other full time work that lets me pay the bills and I dont _need_ this to take off. Ive given this project about 6 months, taking it to the end of summer (September-is) which was always going to be just off-peak for summer for tourism. But it looks like were not going to get peak tourism anyway on account of the global lockdown. I want Hereabouts to be an app that could be used by someone who already lives in a city, and as a cheap day activity for anyone. I think there remains a market for the app, and the possibility that I learn some interesting things from releasing it to a smaller audience. The primary reasons I want to continue development of this idea, at least for now, is how early in development I am and how this remains a side-project. I have other full time work that lets me pay the bills and I don't _need_ this to take off. I've given this project about 6 months, taking it to the end of summer (September-is) which was always going to be just off-peak for summer for tourism. But it looks like we're not going to get peak tourism anyway on account of the global lockdown. I want Hereabouts to be an app that could be used by someone who already lives in a city, and as a cheap day activity for anyone. I think there remains a market for the app, and the possibility that I learn some interesting things from releasing it to a smaller audience.
In short: Im going to continue with development. Its just a weird part of the Hereabouts story - that the worst pandemic in literally 100 years strikes just as I get going with it. What impeccable timing. In short: I'm going to continue with development. It's just a weird part of the Hereabouts story - that the worst pandemic in literally 100 years strikes just as I get going with it. What impeccable timing.
## Thinking about development cycle and Topic Lock ## Thinking about development cycle and Topic Lock
I disagree with common practice of two-week sprints and an endless backlog as the best way to manage and drive software development. I think its short sighted and makes you feel comforted by how busy you are and how much work you have to do. If somethings important, it will keep raising itself as important, and I shouldnt move on without it. If something _feels_ important but I forget about it quickly, and didnt latch on and flesh it out - it probably wasnt actually that important. I disagree with common practice of two-week sprints and an endless backlog as the best way to manage and drive software development. I think it's short sighted and makes you feel comforted by how busy you are and how much work you have to do. If something's important, it will keep raising itself as important, and I shouldn't move on without it. If something _feels_ important but I forget about it quickly, and didn't latch on and flesh it out - it probably wasn't actually that important.
This is especially true for right now: creating the idea for a new product, and then putting that into concrete UIs and code. What _is_ Hereabouts, what does it do, and how is it used? These questions are the most rabbit-hole kinds of questions, because theres a lot of edge-cases and what-ifs that can found or ruin a feature idea. This is especially true for right now: creating the idea for a new product, and then putting that into concrete UIs and code. What _is_ Hereabouts, what does it do, and how is it used? These questions are the most rabbit-hole kinds of questions, because there's a lot of edge-cases and what-ifs that can found or ruin a feature idea.
I want to feel I have the freedom to go down these rabbit holes because they are important and I dont want to spend time and energy justifying that when I could spend that energy exploring them. I want to feel I have the freedom to go down these rabbit holes because they are important and I don't want to spend time and energy justifying that when I could spend that energy exploring them.
To counteract the (very real) chance that I spend all the time designing or thinking of possibilities, and no time actually building them, I am thinking about how I can integrate the [Double Diamond](https://www.designcouncil.org.uk/news-opinion/what-framework-innovation-design-councils-evolved-double-diamond) process which is a needlessly buzzword-y way of saying that I am consciously separating out the processes of a) generating as many ideas as I can, and b) paring these ideas down to find the useful or recurring ideas. To counteract the (very real) chance that I spend all the time designing or thinking of possibilities, and no time actually building them, I am thinking about how I can integrate the [Double Diamond](https://www.designcouncil.org.uk/news-opinion/what-framework-innovation-design-councils-evolved-double-diamond) process which is a needlessly buzzword-y way of saying that I am consciously separating out the processes of a) generating as many ideas as I can, and b) paring these ideas down to find the useful or recurring ideas.
Alongside that, I am thinking about Topic Lock. This is something I first heard from CGP Grey said in the [Cortex podcast](https://www.relay.fm/cortex/95), in regards to his work as an independent content creator. Its influenced from the way movie studios produce movies, and the Kanban project methodology: have a fixed number of things that are in progress. Alongside that, I am thinking about Topic Lock. This is something I first heard from CGP Grey said in the [Cortex podcast](https://www.relay.fm/cortex/95), in regards to his work as an independent content creator. It's influenced from the way movie studios produce movies, and the Kanban project methodology: have a fixed number of things that are in progress.
I am striving to build a way of working that allows me to create and shape ideas, but also then critically examine the ideas individually and as a collective. I am striving to build a way of working that allows me to create and shape ideas, but also then critically examine the ideas individually and as a collective.
This is getting abstract and Im only a month in, so Im going to save this for another time. But look - Ive been thinking about how to create a process and environment that works well for me, my brain, and the product. This is getting abstract and I'm only a month in, so I'm going to save this for another time. But look - I've been thinking about how to create a process and environment that works well for me, my brain, and the product.
## User Journeys, Internal Documentation, and Design Language ## User Journeys, Internal Documentation, and Design Language
This is my party, Ill do what I want, and I want to start by talking about the tools I used to do this work because I find that more interesting than the work itself. Im not proud of this part of me, but I love well designed, cool, and hipster apps. This is my party, I'll do what I want, and I want to start by talking about the tools I used to do this work because I find that more interesting than the work itself. I'm not proud of this part of me, but I love well designed, cool, and hipster apps.
[Notion](https://www.notion.so) is hard to describe: its like a Google Doc meets a database. I actually wrote about [why I gave up using Notion](https://thomaswilson.xyz/blog/back-to-bear) back in August so this is a little embarrassing - but I stand by what I said: I cannot use Notion to write long form prose, like this. I am writing this blog post in [Bear](https://bear.app). [Notion](https://www.notion.so) is hard to describe: it's like a Google Doc meets a database. I actually wrote about [why I gave up using Notion](https://thomaswilson.xyz/blog/back-to-bear) back in August so this is a little embarrassing - but I stand by what I said: I cannot use Notion to write long form prose, like this. I am writing this blog post in [Bear](https://bear.app).
Notion does let me capture my thoughts in a much more organised way, compared to plain text and markdown. Im not going to go into detail about how I use Notion specifically, but I am using it for: Notion does let me capture my thoughts in a much more organised way, compared to plain text and markdown. I'm not going to go into detail about how I use Notion specifically, but I am using it for:
- Writing that I dont intend to share but need to refer back to, e.g. business models, elevator pitch. Like a classic Wiki. - Writing that I don't intend to share but need to refer back to, e.g. business models, elevator pitch. Like a classic Wiki.
- Articulating and formalising the goals I have for a particular development cycle. - Articulating and formalising the goals I have for a particular development cycle.
- Keeping track of the business entities or key “things” in the code base, like what is a “Tour” and “Place”, etc. - Keeping track of the business entities or key "things" in the code base, like what is a "Tour" and "Place", etc.
- Noting down research for both the content of Hereabouts (like interesting places), and the meta research around running a business. - Noting down research for both the content of Hereabouts (like interesting places), and the meta research around running a business.
Notion gives me freedom but also constrains me a little more than free form text. This is useful when I just need to get my goals and intentions down, and not spend hours worrying about how it looks. Notions got great design by default, kudos. Notion gives me freedom but also constrains me a little more than free form text. This is useful when I just need to get my goals and intentions down, and not spend hours worrying about how it looks. Notion's got great design by default, kudos.
Theyve also fixed the navigation by Smart Keyboard on the iPad THANK GOODNESS. Not being able to move around in a sensible way without using my slow meaty dumb fingers on the screen was infuriating. I didnt spend dozens of hours of my life forcing vims philosophy into my own world view to have it ruined like this. They've also fixed the navigation by Smart Keyboard on the iPad THANK GOODNESS. Not being able to move around in a sensible way without using my slow meaty dumb fingers on the screen was infuriating. I didn't spend dozens of hours of my life forcing vim's philosophy into my own world view to have it ruined like this.
### User Journeys and Design Language - Another blog post (in Figma and Notion) ### User Journeys and Design Language - Another blog post (in Figma and Notion)
Ive done a _lot_ of work this month doing visual and UX design. The results, and how I manage these parts of my thinking and planning cant / shouldnt be described here because this is a devblog. Ive made a note to write about them in more detail later. I've done a _lot_ of work this month doing visual and UX design. The results, and how I manage these parts of my thinking and planning can't / shouldn't be described here because this is a devblog. I've made a note to write about them in more detail later.
## React Native ## React Native
I wrote a more in-depth post about [why I choose React Native](https://thomaswilson.xyz/blog/2020-03-22-why-i-chose-react-native-for-app-in-2020), also on my blog. So yeah, Ill be writing this thing in TypeScript, using React Native, and the [Expo platform](https://expo.io). I wrote a more in-depth post about [why I choose React Native](https://thomaswilson.xyz/blog/2020-03-22-why-i-chose-react-native-for-app-in-2020), also on my blog. So yeah, I'll be writing this thing in TypeScript, using React Native, and the [Expo platform](https://expo.io).
Lets take a whole paragraph to acknowledge how good a job the Expo team are doing. Honestly, such brilliant tooling. Let's take a whole paragraph to acknowledge how good a job the Expo team are doing. Honestly, such brilliant tooling.
I started working on this project in Swift: first with SwiftUI then moving to UIKit.As someones whos more fluent in frontend engineering (3 years full-time professionally), having to debug some of the problems and limitations of the new SwiftUI API wasnt productive. I simply dont have the frontline experience of using Swift in a production environment that made debugging and interpreting documentation a viable option. I started working on this project in Swift: first with SwiftUI then moving to UIKit.As someone's who's more fluent in frontend engineering (3 years full-time professionally), having to debug some of the problems and limitations of the new SwiftUI API wasn't productive. I simply don't have the frontline experience of using Swift in a production environment that made debugging and interpreting documentation a viable option.
Moving to UIKit very briefly made sense, but SwiftUI is the future of development on Apple platforms so why waste time working through that. Moving to UIKit very briefly made sense, but SwiftUI is the future of development on Apple platforms so why waste time working through that.
Id like to come back to SwiftUI in a couple of months/years, when its out of beta. I hear good things about it, and it sounds like theyre bringing in an opinionated declarative philosophy. Im excited to see how this affects the UI development community at large. I'd like to come back to SwiftUI in a couple of months/years, when it's out of beta. I hear good things about it, and it sounds like they're bringing in an opinionated declarative philosophy. I'm excited to see how this affects the UI development community at large.

View file

@ -1,6 +1,5 @@
--- ---
title: "I don't want to be a unicorn, an engineer or a designer - I just want to build things better"
title: "I don't want to be a unicorn 🦄, an engineer or a designer - I just want to build things better"
author: Thomas Wilson author: Thomas Wilson
date: 2020-05-31 date: 2020-05-31
draft: false draft: false
@ -14,7 +13,7 @@ I like building software, or parts of software, which are visual and interactive
A lot of people either design _or_ code. People with feet in both sides of this skillset are often referred to as Unicorns 🦄, because people who do this are rare. A lot of people either design _or_ code. People with feet in both sides of this skillset are often referred to as Unicorns 🦄, because people who do this are rare.
I don't like the term Unicorn, but it is dangerously close to describing where I am working hard to move my career. I have a difficult time explaining what I do to people. This is a problem when I want some of those people to pay me real human money to do that thing that I can't quite explain. The current software/technology landscape has made it hard for me to feel I can convey my self, my interests, and my skills using the small number of keywords (_Engineer, Designer, Manager_). I don't _want_ to be a unicorn, or an engineer, or a designer - I would like to be seen as a professional who can help teams and companies build things better. And this little essay is nearly 2,000 words asking _why is that so difficult to convey in a way which is taken seriously 🤷‍♀️?_ I don't like the term Unicorn, but it is dangerously close to describing where I am working hard to move my career. I have a difficult time explaining what I do to people. This is a problem when I want some of those people to pay me real human money to do that thing that I can't quite explain. The current software/technology landscape has made it hard for me to feel I can convey my self, my interests, and my skills using the small number of keywords (_Engineer, Designer, Manager_). I don't _want_ to be a unicorn, or an engineer, or a designer - I would like to be seen as a professional who can help teams and companies build things better. And this little essay is nearly 2,000 words asking _why is that so difficult to convey in a way which is taken seriously?_
## Unicorns 🦄 ## Unicorns 🦄
@ -28,7 +27,7 @@ Despite this criticism, I think the relatively recent [expansion and funding](ht
## Specialisation and language ## Specialisation and language
I, like a lot of humans, am not just interested in one thing. I imagine very few accountants go home and keep thinking about accounting (by choice), and I'd imagine even less janitors go home and think about building maintenance. In the west we accept having hobbies and interests outside of work as normal, and to some extent, w expect it. If I go on a date with someone and they have literally 0 hobbies (liking food, travel, dogs, and gin are not hobbies or a personality 🙅‍♀️) that's probably going to be the last date. I, like a lot of humans, am not just interested in one thing. I imagine very few accountants go home and keep thinking about accounting (by choice), and I'd imagine even less janitors go home and think about building maintenance. In the west we accept having hobbies and interests outside of work as normal, and to some extent, w expect it. If I go on a date with someone and they have literally 0 hobbies (liking food, travel, dogs, and gin are not hobbies or a personality) that's probably going to be the last date.
In a professional context, however, it's much more common to do one thing, or a narrow set of things. Sure, we change jobs, but this is mostly in seismic events - a promotion, a sideways move, a career change. Economically speaking, allowing people to specialise makes sense - [it's division of labour](https://en.wikipedia.org/wiki/Division_of_labour). We should let jobs be done by those who are good at them, and we can offer more value to a company (and therefore the entire economy) by having a higher unit output per unit input. I can't turn up one day to work and play CEO, then turn up on Wednesday and be HR, then round the week off by being CFO. If you listen closely you can hear all the co/founders of small, scrappy startups blustering "BUT THAT'S WHAT I DO" - listen Jennifer, you know as well as I do that the first thing you'll do if you have money is hire someone to do the things you don't like doing, and they'll do it better than you've been doing it. You'd be mighty annoyed if you hired Benedict to do your accounts for you, and two weeks later he's running your Instagram marketing campaigns instead of running payroll. Stay in your lane Benedict 👎 In a professional context, however, it's much more common to do one thing, or a narrow set of things. Sure, we change jobs, but this is mostly in seismic events - a promotion, a sideways move, a career change. Economically speaking, allowing people to specialise makes sense - [it's division of labour](https://en.wikipedia.org/wiki/Division_of_labour). We should let jobs be done by those who are good at them, and we can offer more value to a company (and therefore the entire economy) by having a higher unit output per unit input. I can't turn up one day to work and play CEO, then turn up on Wednesday and be HR, then round the week off by being CFO. If you listen closely you can hear all the co/founders of small, scrappy startups blustering "BUT THAT'S WHAT I DO" - listen Jennifer, you know as well as I do that the first thing you'll do if you have money is hire someone to do the things you don't like doing, and they'll do it better than you've been doing it. You'd be mighty annoyed if you hired Benedict to do your accounts for you, and two weeks later he's running your Instagram marketing campaigns instead of running payroll. Stay in your lane Benedict 👎

View file

@ -12,14 +12,14 @@ tags:
Like anybody who makes interfaces for apps/websites, I spent a lot of time looking at _Design Inspiration_ (read: UIs, real or imaginary, made by other people). This is a really good way to look at visual conventions that other people made, and have used in their UIs and UX. Like anybody who makes interfaces for apps/websites, I spent a lot of time looking at _Design Inspiration_ (read: UIs, real or imaginary, made by other people). This is a really good way to look at visual conventions that other people made, and have used in their UIs and UX.
If I were to examine the time I spent “designing” more closely, and divided it between _actually pushing pixels around in Figma_, and _looking at other peoples work on Dribbble_ I would be shocked and ashamed. If I were to examine the time I spent "designing" more closely, and divided it between _actually pushing pixels around in Figma_, and _looking at other people's work on Dribbble_ I would be shocked and ashamed.
Allow me to justify this though: unless you are one of two-three social media giants, literally nobody spends the majority of screen time in your app. It would be incredibly arrogant to assume your app is good enough that people are willing to learn a whole new style of interaction, navigation, and visual metaphors for it. Allow me to justify this though: unless you are one of two-three social media giants, literally nobody spends the majority of screen time in your app. It would be incredibly arrogant to assume your app is good enough that people are willing to learn a whole new style of interaction, navigation, and visual metaphors for it.
In this teeny blog post, I just want to list some of the places I go when I want to find good UI to look at In this teeny blog post, I just want to list some of the places I go when I want to find good UI to look at
**A quick caveat though.** These sites are good in the same way that a buffet is good. But theyre also bad in the way that a buffet is bad. If youre not consciously selective in how you expand your UIs, it can feel like a collection of disparate widgets. Would you trust a website that could go from crunchy spring role to full-bodied bolognese, _just because a designer fancied it_? As a designer it is your responsibility to understand the types of data, interactions, and journeys that your app is trying to promote or facilitate. Sometimes “because it looks cool” _is_ enough of a reason - but this might not fly so well on a village GP surgery. **A quick caveat though.** These sites are good in the same way that a buffet is good. But they're also bad in the way that a buffet is bad. If you're not consciously selective in how you expand your UIs, it can feel like a collection of disparate widgets. Would you trust a website that could go from crunchy spring role to full-bodied bolognese, _just because a designer fancied it_? As a designer it is your responsibility to understand the types of data, interactions, and journeys that your app is trying to promote or facilitate. Sometimes "because it looks cool" _is_ enough of a reason - but this might not fly so well on a village GP surgery.
Anyway, this post isnt about that, its about some sweet sweet list of cool sites for design inspiration. Well have I got a twist for you, I actually made two lists (_Inception Horn_). Anyway, this post isn't about that, it's about some sweet sweet list of cool sites for design inspiration. Well have I got a twist for you, I actually made two lists (_Inception Horn_).
**Here are some sites that put words to visual design patterns**: **Here are some sites that put words to visual design patterns**:
@ -33,7 +33,7 @@ Anyway, this post isnt about that, its about some sweet sweet list of cool
- [mobbin.design](https://mobbin.design/) : Another nicely curated list of mobile app designs - [mobbin.design](https://mobbin.design/) : Another nicely curated list of mobile app designs
- [UI Movement](https://uimovement.com/) : Primarily mobile and animated interactions. - [UI Movement](https://uimovement.com/) : Primarily mobile and animated interactions.
- [Muzli search](https://search.muz.li/) : Find designs by searching words or colours, a cool little tool run by Adobe. - [Muzli search](https://search.muz.li/) : Find designs by searching words or colours, a cool little tool run by Adobe.
- [Dribbble](https://dribbble.com/) : Im putting these guys on the list, but they dont need the recommendation. - [Dribbble](https://dribbble.com/) : I'm putting these guys on the list, but they don't need the recommendation.
**And for Colour Palettes**: **And for Colour Palettes**:

View file

@ -10,6 +10,6 @@ tags:
--- ---
- **This tidbit about a literary villa**: Over three days in June of 1816 at a villa in Geneva, Mary Shelley started writing _Frankenstein, or The Modern Prometheus_ and John William Polidori started _The Vampyre_ (which preceded the modern romantic image of vampires). The latter inspired Lord Byron (who was also at the villa, by the way) to write _A Fragment_. Imagine being 2am whiskey drunk at that, wow. - **This tidbit about a literary villa**: Over three days in June of 1816 at a villa in Geneva, Mary Shelley started writing _Frankenstein, or The Modern Prometheus_ and John William Polidori started _The Vampyre_ (which preceded the modern romantic image of vampires). The latter inspired Lord Byron (who was also at the villa, by the way) to write _A Fragment_. Imagine being 2am whiskey drunk at that, wow.
- **This way to think about css/styling**: The decisions we make about the naming, structure, and languages/frameworks for modern styling tools just _move complexity_, they dont solve it. If you use CSS, it doesnt matter too much how do you name it (BEM or utility classes?) or how do you build it (vanilla CSS, post-CSS, SASS?). Likewise, CSS-in-JS vs inline styles wont affect things. _Be consistent_ and _know where the complexity in your codebase is_ ([source](https://shoptalkshow.com/425/)) - **This way to think about css/styling**: The decisions we make about the naming, structure, and languages/frameworks for modern styling tools just _move complexity_, they don't solve it. If you use CSS, it doesn't matter too much how do you name it (BEM or utility classes?) or how do you build it (vanilla CSS, post-CSS, SASS?). Likewise, CSS-in-JS vs inline styles won't affect things. _Be consistent_ and _know where the complexity in your codebase is_ ([source](https://shoptalkshow.com/425/))
- **This thing about viruses during a pandemic**: It makes evolutionary sense for a virus to be less virulent (to cause less disease). Those viruses which can infect more people will, by definition, be more evolutionary successful. This is one reason (alongside massive economic, medical, and societal changes) that the global death toll from HIV is lower now than it was in the pandemic of the late 1980s. ([source](https://www.nhs.uk/news/medical-practice/hiv-evolving-into-less-deadly-form/)) - **This thing about viruses during a pandemic**: It makes evolutionary sense for a virus to be less virulent (to cause less disease). Those viruses which can infect more people will, by definition, be more evolutionary successful. This is one reason (alongside massive economic, medical, and societal changes) that the global death toll from HIV is lower now than it was in the pandemic of the late 1980s. ([source](https://www.nhs.uk/news/medical-practice/hiv-evolving-into-less-deadly-form/))
- **This puur-fectly fitting French word**: The\** French word for the verb to purr is *ronronner\* - which sounds simply excellent with a French guttural accent. - **This puur-fectly fitting French word**: The\** French word for the verb to purr' is *ronronner\* - which sounds simply excellent with a French guttural accent.

View file

@ -20,7 +20,7 @@ tags:
- **My three decades alone, basking in the company of a mountain**, Susanne Sener for Psyche ([link](https://psyche.co/ideas/my-three-decades-alone-basking-in-the-company-of-a-mountain)). A personal piece written by a woman who has spent over 30 years living alone in a cabin by a mountain. I've been thinking about this importance of silence/lack of input recently. - **My three decades alone, basking in the company of a mountain**, Susanne Sener for Psyche ([link](https://psyche.co/ideas/my-three-decades-alone-basking-in-the-company-of-a-mountain)). A personal piece written by a woman who has spent over 30 years living alone in a cabin by a mountain. I've been thinking about this importance of silence/lack of input recently.
- **Popular Writers: A Stephen King interview**, Neil Gaiman on his own blog ([link](https://journal.neilgaiman.com/2012/04/popular-writers-stephen-king-interview.html)). King's written more books than a lot of us ever will, and I really enjoyed the following statement he makes on where/how he arrives at them: - **Popular Writers: A Stephen King interview**, Neil Gaiman on his own blog ([link](https://journal.neilgaiman.com/2012/04/popular-writers-stephen-king-interview.html)). King's written more books than a lot of us ever will, and I really enjoyed the following statement he makes on where/how he arrives at them:
> I never think of stories as made things; I think of them as found things. As if you pull them out of the ground, and you just pick them up. Someone once told me that that was me low-balling my own creativity. That might or might not be the case. But still, on the story I am working on now, I do have some unresolved problem. It doesnt keep me awake at nights. I feel like when it comes down, it will be there... > I never think of stories as made things; I think of them as found things. As if you pull them out of the ground, and you just pick them up. Someone once told me that that was me low-balling my own creativity. That might or might not be the case. But still, on the story I am working on now, I do have some unresolved problem. It doesn't keep me awake at nights. I feel like when it comes down, it will be there...
## What I've had on Rotation ## What I've had on Rotation

View file

@ -23,4 +23,4 @@ tags:
## Cool Articles ## Cool Articles
- [Mark in the Middle](https://www.theverge.com/21444203/facebook-leaked-audio-zuckerberg-trump-pandemic-blm) by Casey Newton for _The Verge_. This is a great bit of reporting on both Facebook and Mark Zuckerberg's approach to leadership and management. Zuck is a man who appears increasingly out of touch with human and social sentiments that make up a lot of the human experience. The article also highlights some wider tensions around Facebook which I had never previously considered, for example that Facebook employees are largely left-leaning but its customer base is increasingly right-wing; and how Facebook sells its mission to its employees as a democratising force for opportunity and connection for all. Ultimately, however, management within the company seems to continue to ignore the damaging consequences of providing a platform, and even amplifying voices, of hate speech and conspiracy theorists. The recordings in this article are also tightly integrated, and I love the design of the piece as a whole. - [Mark in the Middle](https://www.theverge.com/21444203/facebook-leaked-audio-zuckerberg-trump-pandemic-blm) by Casey Newton for _The Verge_. This is a great bit of reporting on both Facebook and Mark Zuckerberg's approach to leadership and management. Zuck is a man who appears increasingly out of touch with human and social sentiments that make up a lot of the human experience. The article also highlights some wider tensions around Facebook which I had never previously considered, for example that Facebook employees are largely left-leaning but its customer base is increasingly right-wing; and how Facebook sells its mission to its employees as a democratising force for opportunity and connection for all. Ultimately, however, management within the company seems to continue to ignore the damaging consequences of providing a platform, and even amplifying voices, of hate speech and conspiracy theorists. The recordings in this article are also tightly integrated, and I love the design of the piece as a whole.
- [After 15 Years as a Product Leader, CEO and Now VC, Heres the Advice I Always Share with Future Founders](https://firstround.com/review/after-15-years-as-a-product-leader-ceo-and-now-vc-heres-the-advice-i-always-share-with-future-founders/) on the _First Round_ blog. This is a nice reminder of the importance of always staying product and experience focused, accepting nothing less than what you envisioned. Even as products and teams grow (or bloat), these shouldn't slip (but pretty much always will). There's definitely some gems in there, but not every company can afford Google levels of financial, time, and mental resources. I don't think anyone can just stop everything and only ship excellence (as much as we all want to say we can and do). - [After 15 Years as a Product Leader, CEO and Now VC, Here's the Advice I Always Share with Future Founders](https://firstround.com/review/after-15-years-as-a-product-leader-ceo-and-now-vc-heres-the-advice-i-always-share-with-future-founders/) on the _First Round_ blog. This is a nice reminder of the importance of always staying product and experience focused, accepting nothing less than what you envisioned. Even as products and teams grow (or bloat), these shouldn't slip (but pretty much always will). There's definitely some gems in there, but not every company can afford Google levels of financial, time, and mental resources. I don't think anyone can just stop everything and only ship excellence (as much as we all want to say we can and do).

View file

@ -14,7 +14,7 @@ A few months ago a prominent figure in the tech and software space was uninvited
[^1]: I don't want to name them in this post because this isn't about them, or really the situation. Please oh goodness please don't let anything I say here be seen as any critique or defence of anyone or their action. [^1]: I don't want to name them in this post because this isn't about them, or really the situation. Please oh goodness please don't let anything I say here be seen as any critique or defence of anyone or their action.
> They had to make Software Craftsmanship because Agile became too much about project management and not about code. This made software devs sad because they hate it when things arent about them. [Person of Interest] and others thought too much code sucked. And people weren't paying enough attention to writing code that didn't suck. They decided the solution was to LARP as medieval craftspeople. And pretend they were making beautiful woodcarvings instead of pop up windows on websites. > They had to make Software Craftsmanship because Agile became too much about project management and not about code. This made software devs sad because they hate it when things aren't about them. [Person of Interest] and others thought too much code sucked. And people weren't paying enough attention to writing code that didn't suck. They decided the solution was to LARP as medieval craftspeople. And pretend they were making beautiful woodcarvings instead of pop up windows on websites.
Look, I'm all for making fun of nerds, especially when they put on ill-fitting armour and probably very itchy wool and run at each other in a field, we've all seen _Role Models_. Just as people make fun of the nerds who have nothing better to do on a Tuesday evening than write things no one will ever read because it feels mildly more productive than watching the third episode of Ru Paul's since dinner. Look, I'm all for making fun of nerds, especially when they put on ill-fitting armour and probably very itchy wool and run at each other in a field, we've all seen _Role Models_. Just as people make fun of the nerds who have nothing better to do on a Tuesday evening than write things no one will ever read because it feels mildly more productive than watching the third episode of Ru Paul's since dinner.

View file

@ -30,4 +30,4 @@ I don't know how well these items hold for longer pieces, or opinion pieces. Som
You can see the full transcript for the episode on the[ episode page](https://changelog.com/jsparty/141), but the original quote comes from [Stephanie Morillo](https://www.stephaniemorillo.co/) that sent me on this thought is: You can see the full transcript for the episode on the[ episode page](https://changelog.com/jsparty/141), but the original quote comes from [Stephanie Morillo](https://www.stephaniemorillo.co/) that sent me on this thought is:
> You know the recipes you get with a Blue Apron or a Sun Basket subscription? They fit on a card, right? And theyre not superfluous and theyre not using all these great words. Every word there is there for a reason, and theyre not gonna give you the back-story and all that fun stuff. They are “You've gotta do this, you've gotta do this, you've gotta do this.” But the great thing is that as a result, you pretty much dont mess up the recipe. > You know the recipes you get with a Blue Apron or a Sun Basket subscription? They fit on a card, right? And they're not superfluous and they're not using all these great words. Every word there is there for a reason, and they're not gonna give you the back-story and all that fun stuff. They are "You've gotta do this, you've gotta do this, you've gotta do this." But the great thing is that as a result, you pretty much don't mess up the recipe.

View file

@ -29,7 +29,7 @@ I just assumed that the JS runtime was the browser or server where the JS actual
JS runtimes get a bit of flack for causing bad performance, whatever that generic term means. Take this [critique from Sebastian De Deyne](https://sebastiandedeyne.com/going-deep): JS runtimes get a bit of flack for causing bad performance, whatever that generic term means. Take this [critique from Sebastian De Deyne](https://sebastiandedeyne.com/going-deep):
> Were adding heavy runtimes to support multiple platforms instead of staying close to the metal, and we pay the price in performance. > We're adding heavy runtimes to support multiple platforms instead of staying close to the metal, and we pay the price in performance.
This criticism brings us a little closer to a useful definition of a Runtime: it **includes the libraries and frameworks which act as the intermediary between the code you've written, and the operating system it is running on**. So if we take this mental model a little further, a runtime is the abstractions that sit between the bare metal and the running program ([StackOverflow source](https://softwareengineering.stackexchange.com/questions/304427/what-really-is-the-runtime-environment)). This criticism brings us a little closer to a useful definition of a Runtime: it **includes the libraries and frameworks which act as the intermediary between the code you've written, and the operating system it is running on**. So if we take this mental model a little further, a runtime is the abstractions that sit between the bare metal and the running program ([StackOverflow source](https://softwareengineering.stackexchange.com/questions/304427/what-really-is-the-runtime-environment)).

View file

@ -25,4 +25,4 @@ It's time of year again: Spotify have released their _Rewind_ - showing you what
## Cool articles ## Cool articles
- [Why Religion Is Not Going Away and Science Will Not Destroy It](https://getpocket.com/explore/item/why-religion-is-not-going-away-and-science-will-not-destroy-it) by Peter Harrison for _Aeon_. This is an interesting piece which looks at how a fanatical belief, in either secularism or religious-ideals, are not conducive to finding a middle ground. Instead they can lead to further conflict and bad-opt - [Why Religion Is Not Going Away and Science Will Not Destroy It](https://getpocket.com/explore/item/why-religion-is-not-going-away-and-science-will-not-destroy-it) by Peter Harrison for _Aeon_. This is an interesting piece which looks at how a fanatical belief, in either secularism or religious-ideals, are not conducive to finding a middle ground. Instead they can lead to further conflict and bad-opt
- [The UK has approved a COVID vaccine — heres what scientists now want to know](https://www.nature.com/articles/d41586-020-03441-8?utm_source=pocket-newtab-global-en-GB) by Heidi Ledford, David Cyranoski, and Richard Van Noorden for _Nature_. The past month has been abundant with really great vaccine news for COVID-19. This is a massive step towards getting us closer to our pre-2020 lives. There's a still a lot we're uncertain of with the vaccines, like if people can still transmit the disease if they have been vaccinated; how long do people remain immune for?; or exactly effective are they in certain demographics (primarily age and gender)? - [The UK has approved a COVID vaccine — here's what scientists now want to know](https://www.nature.com/articles/d41586-020-03441-8?utm_source=pocket-newtab-global-en-GB) by Heidi Ledford, David Cyranoski, and Richard Van Noorden for _Nature_. The past month has been abundant with really great vaccine news for COVID-19. This is a massive step towards getting us closer to our pre-2020 lives. There's a still a lot we're uncertain of with the vaccines, like if people can still transmit the disease if they have been vaccinated; how long do people remain immune for?; or exactly effective are they in certain demographics (primarily age and gender)?

View file

@ -23,7 +23,7 @@ Happy New Year 🎊🥳🍾 It's been one hell of a ride, 2020, and I hope that
## Cool reads ## Cool reads
- [Seasons in a Pandemic: Mary Shelley on What Makes Life Worth Living and Natures Beauty as a Lifeline to Regaining Sanity](https://www.brainpickings.org/2020/04/16/mary-shelley-the-last-man) by Maria Popova for _Brain Pickings_. A beautiful little tribute to Mary Shelly' semi-autobiographical _The Last Man_, a novel about a pandemic which one-by-one kills of humanity. Covid references aside, Popova lays out some of Shelly's personal traumas that lead her to write this book, and quotes some of Shelly's writing about the reassuring rhythm of nature's seasons. If you like well written and researched newsletters, you'll bloody love Brain Pickings, you can sign up for it [here](https://www.brainpickings.org/). - [Seasons in a Pandemic: Mary Shelley on What Makes Life Worth Living and Nature's Beauty as a Lifeline to Regaining Sanity](https://www.brainpickings.org/2020/04/16/mary-shelley-the-last-man) by Maria Popova for _Brain Pickings_. A beautiful little tribute to Mary Shelly' semi-autobiographical _The Last Man_, a novel about a pandemic which one-by-one kills of humanity. Covid references aside, Popova lays out some of Shelly's personal traumas that lead her to write this book, and quotes some of Shelly's writing about the reassuring rhythm of nature's seasons. If you like well written and researched newsletters, you'll bloody love Brain Pickings, you can sign up for it [here](https://www.brainpickings.org/).
## Fun things ## Fun things

View file

@ -23,4 +23,4 @@ tags:
- [State of JS 2020 Results](https://2020.stateofjs.com/en-US/). If you're a software engineer who writes for the web, you should read this article. It breaks down responses from almost 25,000 software engineers, and gives State of the Union for frontend technologies, and highlights where things could head in the future. The [Svelte](https://svelte.dev/) framework really shone through this year, and TypeScript continued its dominance in the wider ecosystem. - [State of JS 2020 Results](https://2020.stateofjs.com/en-US/). If you're a software engineer who writes for the web, you should read this article. It breaks down responses from almost 25,000 software engineers, and gives State of the Union for frontend technologies, and highlights where things could head in the future. The [Svelte](https://svelte.dev/) framework really shone through this year, and TypeScript continued its dominance in the wider ecosystem.
- [Dense Discovery Issue #120](https://www.densediscovery.com/issues/120). I've mentioned Dense Discovery in previous editions of _things I learned_, but I want to give a shoutout to this week's edition in particular. It's such a well curated, thoughtful newsletter run by [Kai Brach](https://twitter.com/KaiBrach). I really advise [signing up for the newsletter](https://www.densediscovery.com/). This week's issue had the following quote which stuck out to me, as someone who has recently found themselves thinking "I really just should get my head down and finish this book", without considering my enjoyment of that book: - [Dense Discovery Issue #120](https://www.densediscovery.com/issues/120). I've mentioned Dense Discovery in previous editions of _things I learned_, but I want to give a shoutout to this week's edition in particular. It's such a well curated, thoughtful newsletter run by [Kai Brach](https://twitter.com/KaiBrach). I really advise [signing up for the newsletter](https://www.densediscovery.com/). This week's issue had the following quote which stuck out to me, as someone who has recently found themselves thinking "I really just should get my head down and finish this book", without considering my enjoyment of that book:
> ... as a society we increasingly see reading as mining a text for information instead of it being an exercise of contemplation. He calls it the Silicon Valley view of the mind that treats brains like computers: the more effective the input and the data processing, the better and therefore more successful the output. There is a whole category of tech innovation that wants to make reading more efficient from the many speed-reading apps to subscription services that give you the time-saving gist of annoyingly comprehensive books. > ... as a society we increasingly see reading as mining' a text for information instead of it being an exercise of contemplation. He calls it the Silicon Valley view of the mind' that treats brains like computers: the more effective the input and the data processing, the better and therefore more successful the output. There is a whole category of tech innovation' that wants to make reading more efficient from the many speed-reading apps to subscription services that give you the time-saving gist of annoyingly comprehensive books.

View file

@ -23,7 +23,7 @@ tags:
## Cool Articles ## Cool Articles
- [This tweet from weetabix](https://twitter.com/weetabix/status/1359074254789165059?s=20). A light-hearted tweet that I think did the rounds a few weeks ago. Truly horrifying, I'm not okay. - [This tweet from weetabix](https://twitter.com/weetabix/status/1359074254789165059?s=20). A light-hearted tweet that I think did the rounds a few weeks ago. Truly horrifying, I'm not okay.
- [Shit's Broken: Why we need mindful notification and how to design them](https://thistooshallgrow.com/blog/mindful-notifications/) by Clo S for _This Too Shall Grow_. The attention economy is a good way to think about, and make better decisions in, the modern world. It's easy to forget about because people and companies are designing things to stop you thinking about it. Sorry to get all tinfoil hat here. This article was a nice reminder about understanding what is important when all our apps and platforms are telling us that they alone are important. I particularly like this quote from Clo, which I think summarises the problem nicely: "the LinkedIn announcement that someone you dont know started a new job, are given the same importance as an email from your client saying they accepted your budget". The author goes on to talk about how you can just go ahead and turn off anything that isn't important. And if you're involved in making products, design _mindful notifications_ that align the urgency and prominence of a notification with that of its content. - [Shit's Broken: Why we need mindful notification and how to design them](https://thistooshallgrow.com/blog/mindful-notifications/) by Clo S for _This Too Shall Grow_. The attention economy is a good way to think about, and make better decisions in, the modern world. It's easy to forget about because people and companies are designing things to stop you thinking about it. Sorry to get all tinfoil hat here. This article was a nice reminder about understanding what is important when all our apps and platforms are telling us that they alone are important. I particularly like this quote from Clo, which I think summarises the problem nicely: "the LinkedIn announcement that someone you don't know started a new job, are given the same importance as an email from your client saying they accepted your budget". The author goes on to talk about how you can just go ahead and turn off anything that isn't important. And if you're involved in making products, design _mindful notifications_ that align the urgency and prominence of a notification with that of its content.
## Fun Things ## Fun Things

View file

@ -12,7 +12,7 @@ tags:
- **This cassette revival**: Last year's (2020's) sale of tape cassettes, the 90's mainstay of car sound systems and OG Walkmans (Walkmen?) were the highest they have been since 2003. An increase of 94% on 2019. Despite having inferior sound quality to CDs and vinyl, the medium is a lot cheaper and easier to produce which means a lower initial investment and potentially higher profits, which is great for indie musicians. Especially given how reluctant modern streaming services are to pay musicians and livable or useful fee for their streams. The global pandemic has made it a lot harder for musicians to tour, and a the related economic recession has made shifting merch a little harder. The sudden demand for cassettes is part of the "you can't hold a digital download" trend which has seen a resurgence in tangible, physical things. It makes sense, if you love music or artists, then you want things that resonate with that belief: band Ts, a vinyl collection, a feeling of belonging, ya know? ([link](https://theconversation.com/audio-cassettes-despite-being-a-bit-rubbish-sales-have-doubled-during-the-pandemic-heres-why-157097)) - **This cassette revival**: Last year's (2020's) sale of tape cassettes, the 90's mainstay of car sound systems and OG Walkmans (Walkmen?) were the highest they have been since 2003. An increase of 94% on 2019. Despite having inferior sound quality to CDs and vinyl, the medium is a lot cheaper and easier to produce which means a lower initial investment and potentially higher profits, which is great for indie musicians. Especially given how reluctant modern streaming services are to pay musicians and livable or useful fee for their streams. The global pandemic has made it a lot harder for musicians to tour, and a the related economic recession has made shifting merch a little harder. The sudden demand for cassettes is part of the "you can't hold a digital download" trend which has seen a resurgence in tangible, physical things. It makes sense, if you love music or artists, then you want things that resonate with that belief: band Ts, a vinyl collection, a feeling of belonging, ya know? ([link](https://theconversation.com/audio-cassettes-despite-being-a-bit-rubbish-sales-have-doubled-during-the-pandemic-heres-why-157097))
- **This money making chimp**: Raven, who is a chimpanzee, is the most successful chimpanzee on Wall Street. In 1999, she created an index fund by throwing darts at a list of 133 internet companies. The fund saw a 213% return on investment, outperforming thousands of professional Wall Street brokers. So here's your reminder that humans like to construct stories and narratives around what is actually chaos, and like to believe that we have more control than we actually do. Anyway, yeah, Raven the chimpanzee. ([link](https://www.guinnessworldrecords.com/world-records/most-successful-chimpanzee-on-wall-street)) - **This money making chimp**: Raven, who is a chimpanzee, is the most successful chimpanzee on Wall Street. In 1999, she created an index fund by throwing darts at a list of 133 internet companies. The fund saw a 213% return on investment, outperforming thousands of professional Wall Street brokers. So here's your reminder that humans like to construct stories and narratives around what is actually chaos, and like to believe that we have more control than we actually do. Anyway, yeah, Raven the chimpanzee. ([link](https://www.guinnessworldrecords.com/world-records/most-successful-chimpanzee-on-wall-street))
- **This paper computer**: _Magic: The Gathering_ is the oldest collectible card game, which had its first set of cards released in 1993. There are literally billions of _Magic_ cards in circulation right not, which is cool. It's actually a really fun game, you should totally play some time. Anyway, _Magic_ is technically Turing Complete, a term used to describe a machine that can take and perform any arbitrary computer algorithm, i.e. any set of arbitrary instructions. This means that (practicality be damned) _Magic: The Gathering_ can perform anything that most programming languages could. The authors of the cited study acknowledge that using this technique might be possible but in practice "may effect an individuals ability to successfully execute the combo due to concerns about the sheer amount of time it would take to manually move the tokens around to simulate a computation on a Turing machine. This would not be a concern for two agents with sufficiently high computational power" so I guess we should just let the robots play the game for us now. ([source](https://arxiv.org/abs/1904.09828)). - **This paper computer**: _Magic: The Gathering_ is the oldest collectible card game, which had its first set of cards released in 1993. There are literally billions of _Magic_ cards in circulation right not, which is cool. It's actually a really fun game, you should totally play some time. Anyway, _Magic_ is technically Turing Complete, a term used to describe a machine that can take and perform any arbitrary computer algorithm, i.e. any set of arbitrary instructions. This means that (practicality be damned) _Magic: The Gathering_ can perform anything that most programming languages could. The authors of the cited study acknowledge that using this technique might be possible but in practice "may effect an individual's ability to successfully execute the combo due to concerns about the sheer amount of time it would take to manually move the tokens around to simulate a computation on a Turing machine. This would not be a concern for two agents with sufficiently high computational power" so I guess we should just let the robots play the game for us now. ([source](https://arxiv.org/abs/1904.09828)).
## What I've had on rotation ## What I've had on rotation
@ -21,5 +21,5 @@ tags:
## Cool articles ## Cool articles
- [Nothing breaks hearts like A.I](https://pudding.cool/2021/03/love-and-ai/) by Pamela Mishkin for Pudding. Pudding is pretty much everything I love about the internet: nerdy cool people making nerdy beautiful things. In this piece, Mishkin uses GPT-3, probably the most advance text-generating AI, to generate part of a personal romantic essay-cum-story. It blurs the lines about what's real: the details or the sentiment. The piece is also incredibly well produced and presented. You can tap to re-generate certain parts of the text, to rotate wheels. For example, half of this sentence was generated by GPT-3: "GPT-3 doesnt care about my friends. It doesnt care that I work at a start-up, live in a city, that I am quarantined in a house with two other people. It doesnt care that Omar and I didnt have the language to say what we wanted from each other, that we fought about his insecurity and my loneliness, that I felt like I was losing myself. It doesnt care which of my sentences are tired or stale or cliche." Could you guess which part? Which of that feels like it wasn't written by a human? - [Nothing breaks hearts like A.I](https://pudding.cool/2021/03/love-and-ai/) by Pamela Mishkin for Pudding. Pudding is pretty much everything I love about the internet: nerdy cool people making nerdy beautiful things. In this piece, Mishkin uses GPT-3, probably the most advance text-generating AI, to generate part of a personal romantic essay-cum-story. It blurs the lines about what's real: the details or the sentiment. The piece is also incredibly well produced and presented. You can tap to re-generate certain parts of the text, to rotate wheels. For example, half of this sentence was generated by GPT-3: "GPT-3 doesn't care about my friends. It doesn't care that I work at a start-up, live in a city, that I am quarantined in a house with two other people. It doesn't care that Omar and I didn't have the language to say what we wanted from each other, that we fought about his insecurity and my loneliness, that I felt like I was losing myself. It doesn't care which of my sentences are tired or stale or cliche." Could you guess which part? Which of that feels like it wasn't written by a human?
- [Why growing mushrooms at home is everyone's new pandemic hobby](https://www.theguardian.com/lifeandstyle/2021/mar/17/mushrooms-as-houseplant) by Adrienne Matei for The Guardian. This is such an odd piece, and I can't explain it but looking at pictures of mushrooms makes me deeply uncomfortable. They're so alien, and they're almost in an uncanny valley: my brain can't decide if they're alive or not. They're plants but they're not. Apparently there's been a boom in growing them indoors since the beginning of the pandemic, which is cool I guess but not for me. I love when people grow (and then eat) things. Matei also reports that some people have started growing mushrooms to trade for eggs and bread - so we've been in the pandemic long enough for an emergent goods-and-barter economy to arise. - [Why growing mushrooms at home is everyone's new pandemic hobby](https://www.theguardian.com/lifeandstyle/2021/mar/17/mushrooms-as-houseplant) by Adrienne Matei for The Guardian. This is such an odd piece, and I can't explain it but looking at pictures of mushrooms makes me deeply uncomfortable. They're so alien, and they're almost in an uncanny valley: my brain can't decide if they're alive or not. They're plants but they're not. Apparently there's been a boom in growing them indoors since the beginning of the pandemic, which is cool I guess but not for me. I love when people grow (and then eat) things. Matei also reports that some people have started growing mushrooms to trade for eggs and bread - so we've been in the pandemic long enough for an emergent goods-and-barter economy to arise.

View file

@ -12,16 +12,16 @@ tags:
# Things I Learned #34 # Things I Learned #34
Weve made it to the Easter weekend. Spring has arrived here in London, which is to say it was 20 degrees C earlier this week and this morning it was 0, windy, and overcast. This time a year ago, my mental state was dominated by COVID-19 (something I barely even think about now), but that also lead me to notice the beauty of spring for the first time. Im normally more of an autumn person. My wildflower seeds have started to come up, my tomatoes have been sown, and I made an asparagus risotto this week (largely so I could drink white wine while cooking, _al la_ my middle-aged housewife dream). We've made it to the Easter weekend. Spring has arrived here in London, which is to say it was 20 degrees C earlier this week and this morning it was 0, windy, and overcast. This time a year ago, my mental state was dominated by COVID-19 (something I barely even think about now), but that also lead me to notice the beauty of spring for the first time. I'm normally more of an autumn person. My wildflower seeds have started to come up, my tomatoes have been sown, and I made an asparagus risotto this week (largely so I could drink white wine while cooking, _al la_ my middle-aged housewife dream).
- **This product search duopoly**: I try and keep things pretty fun and light hearted here. Find some irreverent fact about a victorian butterfly hunter, you know. But Im also interested in tech and business as a force for good and change (and therefore also as a point of stagnation of source of moral evil). The past couple of years have seen increasing calls for big tech firms, like Amazon and Google, to be disassembled. They have so many resources available to them that they stifle market forces and creativity by being able to undercut any competitor, and subsidise initially unprofitable efforts in some areas (e.g. logistics) through their massive profits in others (e.g. cloud computing and advertising). As a case-in-point, approximately 60-70% of people who need to find a product online will start their search at either Amazon or Google. The problem for small businesses then becomes about discoverability and visibility: how do people find them. So they go to advertisers. Who are the advertisers: Google & Facebook (and most commonly, Amazon). Amazon will allow businesses to advertise on their platform, and compete against their own products. This hardly seems fair or right, but it does sound hella profitable. ([source](https://www.emarketer.com/content/do-most-searchers-really-start-on-amazon)). - **This product search duopoly**: I try and keep things pretty fun and light hearted here. Find some irreverent fact about a victorian butterfly hunter, you know. But I'm also interested in tech and business as a force for good and change (and therefore also as a point of stagnation of source of moral evil). The past couple of years have seen increasing calls for big tech firms, like Amazon and Google, to be disassembled. They have so many resources available to them that they stifle market forces and creativity by being able to undercut any competitor, and subsidise initially unprofitable efforts in some areas (e.g. logistics) through their massive profits in others (e.g. cloud computing and advertising). As a case-in-point, approximately 60-70% of people who need to find a product online will start their search at either Amazon or Google. The problem for small businesses then becomes about discoverability and visibility: how do people find them. So they go to advertisers. Who are the advertisers: Google & Facebook (and most commonly, Amazon). Amazon will allow businesses to advertise on their platform, and compete against their own products. This hardly seems fair or right, but it does sound hella profitable. ([source](https://www.emarketer.com/content/do-most-searchers-really-start-on-amazon)).
- **This Victorian butterfly collector** Margaret Fountaine (18621940) lived in England and was a wealthy and independent woman who amassed a collection of some twenty-two thousand butterflies, and a million pages of personal journals. Despite her immense contribution to entomology (the study of insects) and lepidopterology (the study of butterflies) her contributions are largely noted as an assistant or amateur. This is, of course, entirely unrelated to the fact that she was a woman, and therefore unable to participate in the meetings of these societies. In 1897 Fontaine became a member of The Royal Society, though her contributions to science remain largely under-appreciated and rarely spoken about, namely because they are neither professional nor amateur. If you get the chance, read about the life Fontaine read: travelling across Europe (and the British Empire) to collect samples and view other butterfly collections. ([source](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4321127/)) - **This Victorian butterfly collector** Margaret Fountaine (18621940) lived in England and was a wealthy and independent woman who amassed a collection of some twenty-two thousand butterflies, and a million pages of personal journals. Despite her immense contribution to entomology (the study of insects) and lepidopterology (the study of butterflies) her contributions are largely noted as an assistant or amateur. This is, of course, entirely unrelated to the fact that she was a woman, and therefore unable to participate in the meetings of these societies. In 1897 Fontaine became a member of The Royal Society, though her contributions to science remain largely under-appreciated and rarely spoken about, namely because they are neither professional nor amateur. If you get the chance, read about the life Fontaine read: travelling across Europe (and the British Empire) to collect samples and view other butterfly collections. ([source](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4321127/))
- **This imaginary designer** Nikolay Ironov is a Russian designer but is also an AI. Ironov had created static and animated logos and logos for various clients (heres their [portfolio of work](https://www.artlebedev.com/nikolay-ironov/)): theyre a real mix of geometry and typography. I quite like them. The AI was created and maintained internally within the Art. Lebedev Studio, but kept completely isolated. Thats why it was given a human name, and was introduced to the team as a remote employee - even getting its own employee page. Its quite a cool concept but also a little terrifying - Im sure all of Ironovs colleagues werent super pleased to find their work has been outsourced to an AI. ([source](https://www.rbth.com/science-and-tech/332370-russian-ai-graphic-designer-fooled)) - **This imaginary designer** Nikolay Ironov is a Russian designer but is also an AI. Ironov had created static and animated logos and logos for various clients (here's their [portfolio of work](https://www.artlebedev.com/nikolay-ironov/)): they're a real mix of geometry and typography. I quite like them. The AI was created and maintained internally within the Art. Lebedev Studio, but kept completely isolated. That's why it was given a human name, and was introduced to the team as a remote employee - even getting its own employee page. It's quite a cool concept but also a little terrifying - I'm sure all of Ironov's colleagues weren't super pleased to find their work has been outsourced to an AI. ([source](https://www.rbth.com/science-and-tech/332370-russian-ai-graphic-designer-fooled))
## What I've had on rotation ## What I've had on rotation
-**Something New** _Justice_ by Justin Bieber (pop, 2021). After 2020s frankly insulting _Changes_, this new album from Bieber is a breath of humanity and honesty. The album doesnt rush but its poppy, its perhaps a bit laboured in its expression of love and gratitude for his wife but its a good album. ([links](https://songwhip.com/justin-bieber/justice)) -**Something Old** _Ocean Avenue_ by Yellowcard (pop punk, 2003). I went back this week to try and find some good grunge and rock from the 90s but ended up getting stuck on this album. Im not regretful, and Nirvana can wait for me. Probably related to my We The Kings re-listen that I mentioned last week. Im not even really sorry, early 00s emo music is in my bones. ([links](https://songwhip.com/yellowcard/oceanavenue)) -**Something New** _Justice_ by Justin Bieber (pop, 2021). After 2020's frankly insulting _Changes_, this new album from Bieber is a breath of humanity and honesty. The album doesn't rush but it's poppy, it's perhaps a bit laboured in its expression of love and gratitude for his wife but it's a good album. ([links](https://songwhip.com/justin-bieber/justice)) -**Something Old** _Ocean Avenue_ by Yellowcard (pop punk, 2003). I went back this week to try and find some good grunge and rock from the 90s but ended up getting stuck on this album. I'm not regretful, and Nirvana can wait for me. Probably related to my We The Kings re-listen that I mentioned last week. I'm not even really sorry, early 00s emo music is in my bones. ([links](https://songwhip.com/yellowcard/oceanavenue))
## Cool articles ## Cool articles
- [Squark Notes #7 (newsletter)](https://squarknotes.substack.com/p/squarknote-7 "Squark Notes #7") by Susan Fowler Rigetti. Rigetti is a writer and refugee from tech (shes the woman who ousted allegations of sexual abuse from Ubers CEO). She posts a newsletter every six-to-eight weeks, and its worth a subscribe. This edition contained the advice to write more than one thing at once. Or, if youre any kind of creative: always have multiple songs, poems, paintings, side hustles, whatever. I can butcher her sentiment, but she does it far more justice: when someone has _one_ thing and only one thing is that nothing ever happens with it. Sometimes its because that one thing simply isnt good. Sometimes that one thing is really amazing, but its not the right time or place and things just dont come together in the right way” - [Squark Notes #7 (newsletter)](https://squarknotes.substack.com/p/squarknote-7 "Squark Notes #7") by Susan Fowler Rigetti. Rigetti is a writer and refugee from tech (she's the woman who ousted allegations of sexual abuse from Uber's CEO). She posts a newsletter every six-to-eight weeks, and it's worth a subscribe. This edition contained the advice to write more than one thing at once. Or, if you're any kind of creative: always have multiple songs, poems, paintings, side hustles, whatever. I can butcher her sentiment, but she does it far more justice: "when someone has _one_ thing and only one thing is that nothing ever happens with it. Sometimes it's because that one thing simply isn't good. Sometimes that one thing is really amazing, but it's not the right time or place and things just don't come together in the right way"

View file

@ -9,39 +9,39 @@ tags:
- software-architecture - software-architecture
--- ---
I wrote this because of a paralysing problem in coding: how much should I design my new apps architecture before I dive into code if I can only learn about my apps architecture by coding it? I wrote this because of a paralysing problem in coding: how much should I design my new app's architecture before I dive into code if I can only learn about my app's architecture by coding it?
Im building Dash Dot, an interval timer iOS app from scratch, and this is the problem Ive been facing this month. I'm building Dash Dot, an interval timer iOS app from scratch, and this is the problem I've been facing this month.
The temptation is to answer all possible questions about your app before you start coding it, but you have to resist. Its good to have an awareness of what parts make up the whole of your system. If you dont, youre going to have to refactor and restructure your code frequently, especially at the beginning. But if you wait too long, if you _only_ answer questions, then youve got only theoretical answers. The temptation is to answer all possible questions about your app before you start coding it, but you have to resist. It's good to have an awareness of what parts make up the whole of your system. If you don't, you're going to have to refactor and restructure your code frequently, especially at the beginning. But if you wait too long, if you _only_ answer questions, then you've got only theoretical answers.
The issue is keeping your code and your design in-step with each other. If your code gets ahead of your design, its a mess and youve got to refactor and wrangle chaos. If your design gets ahead of your code, youve got a monotonous boring slog to just implement (potentially over-engineering, or outdated) solutions to changing problems. The issue is keeping your code and your design in-step with each other. If your code gets ahead of your design, it's a mess and you've got to refactor and wrangle chaos. If your design gets ahead of your code, you've got a monotonous boring slog to just implement (potentially over-engineering, or outdated) solutions to changing problems.
Code _is_ discovery. Code _is_ discovery.
Design _is_ discovery. Design _is_ discovery.
But theyre different kinds of learning, and you need them both. You can split the things you know about your software into two buckets: But they're different kinds of learning, and you need them both. You can split the things you know about your software into two buckets:
- **Obvious**: These are properties that you can glean, or deduce relatively quickly, just by thinking through your code. Your core business entities need to be persisted, so you need a way of talking to a persistence layer, and you need a way of communicating data from your persistence layer (like a database) to your codes logic (like an Entity). You need something to manage the publishers in your system, and you need a way for your other components to subscribe to these publishers. - **Obvious**: These are properties that you can glean, or deduce relatively quickly, just by thinking through your code. Your core business entities need to be persisted, so you need a way of talking to a persistence layer, and you need a way of communicating data from your persistence layer (like a database) to your code's logic (like an Entity). You need something to manage the publishers in your system, and you need a way for your other components to subscribe to these publishers.
- **Emergent:**: These things become clearer or more important as you start coding. You might notice that your Entity class has reached 400 lines in length, and realise you need a Factory class to take away some of that logic. You realise that youre passing around data through a lot of initialisers - does it need to be centralised somewhere? - **Emergent:**: These things become clearer or more important as you start coding. You might notice that your Entity class has reached 400 lines in length, and realise you need a Factory class to take away some of that logic. You realise that you're passing around data through a lot of initialisers - does it need to be centralised somewhere?
As you become a more experienced software engineer and architect, more things are in the Obvious bucket, and less things are in the Emergent. As you become a more experienced software engineer and architect, more things are in the Obvious bucket, and less things are in the Emergent.
The problem with Emergent Properties is that they are often Unknown Unknowns. Of course, this is a spectrum too. The more you deal with software architectures, the more you know the kinds of boundaries that become problematic. The problem with Emergent Properties is that they are often Unknown Unknowns. Of course, this is a spectrum too. The more you deal with software architectures, the more you know the kinds of boundaries that become problematic.
Building the code means we learn more, but not knowing enough means the code we write is less useful. There are some lessons we can learn without coding. My advice? **Do just enough design so that you can maximise your learning by building**. How do you know how much is “just enough”? Thats the whole problem, mate. Building the code means we learn more, but not knowing enough means the code we write is less useful. There are some lessons we can learn without coding. My advice? **Do just enough design so that you can maximise your learning by building**. How do you know how much is "just enough"? That's the whole problem, mate.
Ive been working on the meta skill of asking myself “is this enough design to get going?”, and then accurately answering myself. Thats what I want to share and talk about. I've been working on the meta skill of asking myself "is this enough design to get going?", and then accurately answering myself. That's what I want to share and talk about.
## The Takeaways ## The Takeaways
Were all busy, heres what Id recommend: We're all busy, here's what I'd recommend:
- **Work over dogma**: Get the app building and working. Want to list restaurants near you: get that webpage running, that map rendering, and that database queried. It doesnt matter how beautiful your abstraction if you cant show your user a list of nearby taco vans. - **Work over dogma**: Get the app building and working. Want to list restaurants near you: get that webpage running, that map rendering, and that database queried. It doesn't matter how beautiful your abstraction if you can't show your user a list of nearby taco vans.
- **Design and develop with your brain in mind**: I know that I like to do. I like to dive in and get started, so I have to train myself to wait and think things through for a bit before I start. You might be paralysed by the need to perfect the architecture before you even open your text editor. Whatever technique works for you, use that. - **Design and develop with your brain in mind**: I know that I like to do. I like to dive in and get started, so I have to train myself to wait and think things through for a bit before I start. You might be paralysed by the need to perfect the architecture before you even open your text editor. Whatever technique works for you, use that.
- **Good systems change fast**: The code youre writing at the beginning of an app will either a) live forever, or b) live for the next three days. Make sure new code can be, refactored, renamed, extended, and divided easily. If its hard to change, youll do bad things or workarounds because its easier than doing the right thing. - **Good systems change fast**: The code you're writing at the beginning of an app will either a) live forever, or b) live for the next three days. Make sure new code can be, refactored, renamed, extended, and divided easily. If it's hard to change, you'll do bad things or workarounds because it's easier than doing the right thing.
## Swinging the pendulum ## Swinging the pendulum
@ -53,36 +53,36 @@ My thoughts and approaches to building a new codebase have swung quite a bit ove
### TDD ### TDD
TDD was my first approach. Its how I learned Rails back in the day (or at least how I was encouraged to). I have often bemoaned a lack of _any_ testing in a lot of the professional projects Ive worked on and I thought to myself “this app will have flawless testing. I will be the jealousy of the town”. TDD was my first approach. It's how I learned Rails back in the day (or at least how I was encouraged to). I have often bemoaned a lack of _any_ testing in a lot of the professional projects I've worked on and I thought to myself "this app will have flawless testing. I will be the jealousy of the town".
Why was I doing TDD? Because I liked the idea of the finished product. I liked having a codebase which I _knew_ worked, it was inarguable. I had green ticks on my CLI, and the knowledge that a particular ticket or branch were complete. Why was I doing TDD? Because I liked the idea of the finished product. I liked having a codebase which I _knew_ worked, it was inarguable. I had green ticks on my CLI, and the knowledge that a particular ticket or branch were complete.
I spent a couple of weeks heavily pursuing this goal. However it fell apart. When youre building early systems and foundational code it is _highlly_ likely that things will change. In fact, Id say its certain. If youre writing perfect code on day 1 then bully for you but boy am I not that kind of engineer. I spent a couple of weeks heavily pursuing this goal. However it fell apart. When you're building early systems and foundational code it is _highlly_ likely that things will change. In fact, I'd say it's certain. If you're writing perfect code on day 1 then bully for you but boy am I not that kind of engineer.
“But Thomas, write your tests first to help design your API”. Yeah, actually good criticism. I agree - I think having code _and_ tests consume the API of a class forces you to think about abstraction early. It forces you to decouple things. However, **you dont know everywhere your code is going to be consumed**, especially on day 1. You dont know when certain parts of the codebase are going to grow in complexity and size (and reduce in readability) and need to be split out. And now youve doubled the work required in a refactor: you cant quickly and easily move code about, chop it up, rename it, etc. "But Thomas, write your tests first to help design your API". Yeah, actually good criticism. I agree - I think having code _and_ tests consume the API of a class forces you to think about abstraction early. It forces you to decouple things. However, **you don't know everywhere your code is going to be consumed**, especially on day 1. You don't know when certain parts of the codebase are going to grow in complexity and size (and reduce in readability) and need to be split out. And now you've doubled the work required in a refactor: you can't quickly and easily move code about, chop it up, rename it, etc.
But Thomas, the tests mean that your API surface remains stable so that even when you do that kind of refactoring, the end result still acts as expected. Right again, in theory. This is great when there is other code in your project which already depends on the stuff youre refactoring, and you want absolute certainty that what youre doing wont break a consumer. But thats just not whats happening here. This is the first step of whittling away the wood to let the sculpture emerge, I dont have to be delicate everywhere. I really wanted TDD to work for me here, and maybe if I was more intelligent and could preemptively know my API it would work. Or, if I was further into the project, it would let me know that Im doing okay with my refactor. "But Thomas, the tests mean that your API surface remains stable so that even when you do that kind of refactoring, the end result still acts as expected". Right again, in theory. This is great when there is other code in your project which already depends on the stuff you're refactoring, and you want absolute certainty that what you're doing won't break a consumer. But that's just not what's happening here. This is the first step of whittling away the wood to let the sculpture emerge, I don't have to be delicate everywhere. I really wanted TDD to work for me here, and maybe if I was more intelligent and could preemptively know my API it would work. Or, if I was further into the project, it would let me know that I'm doing okay with my refactor.
As a tool for writing the first bits of a new project, TDD just did not work for me. As a tool for writing the first bits of a new project, TDD just did not work for me.
### Interpretive movement design ### Interpretive movement design
Talk about a kickback reaction. Freed of the expectations of TDD and of the need to really write atomic and comprehensive tests, I just went about doing the thing every engineer loves to do: write code. Talk about a kickback reaction. Freed of the expectations of TDD and of the need to really write atomic and comprehensive tests, I just went about doing the thing every engineer loves to do: write code.
I created classes, and modules and methods and functions and utilities and it was lovely. I named things in a way that made sense in the moment and things felt right. I wasnt constrained by anything and could get my ideas onto the screen quickly. I created classes, and modules and methods and functions and utilities and it was lovely. I named things in a way that made sense in the moment and things felt right. I wasn't constrained by anything and could get my ideas onto the screen quickly.
This is a great example of where the “software engineering as a craft” argument gains credibility. This was a swing too far away from discipline and rigour, and towards creativity and reactive-ness. There was no structure to wrangle my code into readable, clear ideas. This is a great example of where the "software engineering as a craft" argument gains credibility. This was a swing too far away from discipline and rigour, and towards creativity and reactive-ness. There was no structure to wrangle my code into readable, clear ideas.
It didnt force me to notice similarities in my codebase. **It didnt encourage me to make similar solutions for similar problems, and I ended up writing code which was tightly coupled to its context**. Code should be decoupled. The canonical example for this was when I found myself with three Entity classes (the ActiveRecord-like classes which wrapped several persisted entities, like a “timer”) and three drastically different approaches to similar behaviours. I had different APIs and implementations for how I validated, persisted, updated/deleted my data - I stored different bits of information about them and under different names. It didn't force me to notice similarities in my codebase. **It didn't encourage me to make similar solutions for similar problems, and I ended up writing code which was tightly coupled to its context**. Code should be decoupled. The canonical example for this was when I found myself with three Entity classes (the ActiveRecord-like classes which wrapped several persisted entities, like a "timer") and three drastically different approaches to similar behaviours. I had different APIs and implementations for how I validated, persisted, updated/deleted my data - I stored different bits of information about them and under different names.
This was a bad approach - I had let myself get too excited with the joy of writing code, and hadnt taken a step back. “But Thomas, couldnt you have exercised a little bit of self-restraint?”. Look. Yes. I have known for a _very_ long time that I, as a person and professional, would much rather learn and discover while and through doing, rather than plan and prepare beforehand. Its mixed-blessing. Self-knowledge isnt about trying to change these things but rather putting myself in positions where this isnt a problem (wisdom to know the difference, and all that). This was a bad approach - I had let myself get too excited with the joy of writing code, and hadn't taken a step back. "But Thomas, couldn't you have exercised a little bit of self-restraint?". Look. Yes. I have known for a _very_ long time that I, as a person and professional, would much rather learn and discover while and through doing, rather than plan and prepare beforehand. It's mixed-blessing. Self-knowledge isn't about trying to change these things but rather putting myself in positions where this isn't a problem (wisdom to know the difference, and all that).
The interpretive-movement style of development was useful. It helped patterns emerged and it also helped me _do_ a lot more than I did with TDD. The result was always on the output: I want to see this data on the screen, I want to be able to have these kinds of interaction. Unlike TDD I was thinking a lot more as a real-life human user of my software, not like a software user of my software. But it needed to be paired with a little more forethought, and something which would help me anticipate similarities before they occurred. The interpretive-movement style of development was useful. It helped patterns emerged and it also helped me _do_ a lot more than I did with TDD. The result was always on the output: I want to see this data on the screen, I want to be able to have these kinds of interaction. Unlike TDD I was thinking a lot more as a real-life human user of my software, not like a software user of my software. But it needed to be paired with a little more forethought, and something which would help me anticipate similarities before they occurred.
### UML-driven development: ### UML-driven development:
Does anything feel quite so engineer-y as drawing bloody giant UML diagrams. You know the ones, with the boxes and class names and methods and arrows. Theyre great. I started drawing these when I came to the next logical part of my app (i.e. how do I, as a user of the app, _do_ a timer). Does anything feel quite so engineer-y as drawing bloody giant UML diagrams. You know the ones, with the boxes and class names and methods and arrows. They're great. I started drawing these when I came to the next logical part of my app (i.e. how do I, as a user of the app, _do_ a timer).
I sat down with the fantastic (and free) [diagrams.net] (formerly draw.io) tool to draft up the parts of my system, what they would be called, how they would communicate, what was similar and unifying, and what were the distinct parts. I sat down with the fantastic (and free) [diagrams.net] (formerly draw.io) tool to draft up the parts of my system, what they would be called, how they would communicate, what was similar and unifying, and what were the distinct parts.
I immediately made the decision to use this diagram as a sketch or an outline. I didnt want to specify every method, every relationship, every movement. It was about the high-level system design, and not about the specifics. UML diagrams may feel productive, but at the end of the day theyre not code. I immediately made the decision to use this diagram as a sketch or an outline. I didn't want to specify every method, every relationship, every movement. It was about the high-level system design, and not about the specifics. UML diagrams may feel productive, but at the end of the day they're not code.
For me, facing myself to write this broad-outline UML diagrams was _just enough_ design to make the code I was writing feel productive. It guided the direction and structure of the work I was doing, but it was vague enough that I could split things our and change implementation details. For example in a couple of places, I leaned heavily into the _Dependency Inversion_ or _Inversion of Control_ but these didnt need to be specified in the diagram before hand For me, facing myself to write this broad-outline UML diagrams was _just enough_ design to make the code I was writing feel productive. It guided the direction and structure of the work I was doing, but it was vague enough that I could split things our and change implementation details. For example in a couple of places, I leaned heavily into the _Dependency Inversion_ or _Inversion of Control_ but these didn't need to be specified in the diagram before hand
**I knew this approach was just-enough design because before I started writing code I noticed when too much responsibility was being put in one place, and when similarities between components started arising**. Just like the frustration of UI/UX design - it was impossible to design a good system by focusing wholly on the components. Components should serve the system and architecture as a whole. **I knew this approach was just-enough design because before I started writing code I noticed when too much responsibility was being put in one place, and when similarities between components started arising**. Just like the frustration of UI/UX design - it was impossible to design a good system by focusing wholly on the components. Components should serve the system and architecture as a whole.

View file

@ -10,17 +10,17 @@ tags:
- things-i-learned - things-i-learned
--- ---
The slightly cold-snap here in London continues. The optimistic sewing and sprouting that took place in my garden (such as it is in urban West London) have largely had to retreat to the comfort of the indoors. Covid-related deaths continue to fall in the UK, as we begin optimistically opening up after a _very_ long winter. Ive started to have more normal moments - more going into a (socially-distanced) office, going to (socially-distanced) gatherings of people outside of my household. With this spirit of early optimism (and copious tree pollen) in the air, lets begin: The slightly cold-snap here in London continues. The optimistic sewing and sprouting that took place in my garden (such as it is in urban West London) have largely had to retreat to the comfort of the indoors. Covid-related deaths continue to fall in the UK, as we begin optimistically opening up after a _very_ long winter. I've started to have more normal moments - more going into a (socially-distanced) office, going to (socially-distanced) gatherings of people outside of my household. With this spirit of early optimism (and copious tree pollen) in the air, let's begin:
- **This fact about parachutes**: according to a study published in the British Medical Journal in 2018, the authors found the use of parachutes “did not significantly reduce death or major injury”. Rather than a serious study into the efficacy of parachutes for people jumping out of planes (spoiler alert: parachutes will probably stop you from dying, not wearing a parachute almost certainly will not), the authors were taking a tongue-in-teeth approach to the double-blind randomised-trials — the gold standard in medical research. They argue that sometimes we arent able to effectively control, model, or simulate real-life situations for the benefit of experimentation. This is important in fields like medical research, where areas of discussion range from deeply personal experiences (like mental health and trauma) to almost purely biomechanic discussions (like vaccine efficacy). Part of expertise and knowledge is (in my humble opinion) knowing what constitutes “proof” or evidence in your current area of study. ([source](https://www.bmj.com/content/363/bmj.k5094)) - **This fact about parachutes**: according to a study published in the British Medical Journal in 2018, the authors found the use of parachutes "did not significantly reduce death or major injury". Rather than a serious study into the efficacy of parachutes for people jumping out of planes (spoiler alert: parachutes will probably stop you from dying, not wearing a parachute almost certainly will not), the authors were taking a tongue-in-teeth approach to the double-blind randomised-trials — the gold standard in medical research. They argue that sometimes we aren't able to effectively control, model, or simulate real-life situations for the benefit of experimentation. This is important in fields like medical research, where areas of discussion range from deeply personal experiences (like mental health and trauma) to almost purely biomechanic discussions (like vaccine efficacy). Part of expertise and knowledge is (in my humble opinion) knowing what constitutes "proof" or evidence in your current area of study. ([source](https://www.bmj.com/content/363/bmj.k5094))
- **This (yet) another impact of the pandemic**: I like bikes. I think theyre cool. In 2019 I cycled across France on a bike (and Ive not stopped talking about it since). Since the start of the pandemic, bicycle use in the UK has increased to 120% of its use relative to the year prior. Its up over 150% on weekends - suggesting that more Brits are getting out for weekend rides. Ive noticed a much more diverse set of people out on rides during my spring training: its not just [MAMIL](https://en.wikipedia.org/wiki/Mamil)s - Ive seen more women and partners of (presumably) pre-existing cyclists, more amateur groups and also a lot more international riders. The other week I was absorbed by a peloton of six-some Polish (I think) riders on a mix of hybrid and commuter bikes who seemed to be enjoying South Londons cycle superhighways rather a lot. Comparatively, tube and rail use are both down 70%, and cars about 15%. So-called “active travel”, like cycling and walking, is an essential part of meeting carbon emission goals. A journey made by bike represents about 30x lower CO2 emissions than a fossil fuel-burning car, and 10x lower than an electric car. ([source](https://theconversation.com/cycling-is-ten-times-more-important-than-electric-cars-for-reaching-net-zero-cities-157163?utm_source=labnotes.org)) - **This (yet) another impact of the pandemic**: I like bikes. I think they're cool. In 2019 I cycled across France on a bike (and I've not stopped talking about it since). Since the start of the pandemic, bicycle use in the UK has increased to 120% of its use relative to the year prior. It's up over 150% on weekends - suggesting that more Brits are getting out for weekend rides. I've noticed a much more diverse set of people out on rides during my spring training: it's not just [MAMIL](https://en.wikipedia.org/wiki/Mamil)s - I've seen more women and partners of (presumably) pre-existing cyclists, more amateur groups and also a lot more international riders. The other week I was absorbed by a peloton of six-some Polish (I think) riders on a mix of hybrid and commuter bikes who seemed to be enjoying South London's cycle superhighways rather a lot. Comparatively, tube and rail use are both down 70%, and cars about 15%. So-called "active travel", like cycling and walking, is an essential part of meeting carbon emission goals. A journey made by bike represents about 30x lower CO2 emissions than a fossil fuel-burning car, and 10x lower than an electric car. ([source](https://theconversation.com/cycling-is-ten-times-more-important-than-electric-cars-for-reaching-net-zero-cities-157163?utm_source=labnotes.org))
- **This hat piracy**: Benjamin Hornigold was a pirate in the 1700s, and youve probably not heard of him. His second in command was Edward Thatch, who went by “Blackbeard”. Hornigold and Thatch ran a thirty gun ship, the most heavily-armed ship in the area at the time, around the Bahamas in the 1700s. Piracy was rife as the Spanish Succession war had come to an end, leaving a lot of sailors and soldiers out of jobs. With no successful re-skilling plan in place, a lot of them too to looting merchant ships around Jamaica and the Bahamas. My favourite story from Hornigolds time as a pirate is the time he and his crew (about 350 men) got rip-roaringly drunk and threw their hats overboard during the night. The next day they attacked a merchant ship, stole the crews hats, left their goods untouched, and carried on. Hornigold later turned pirate-hunter (job title goals), a position at which he was pretty much entirely unsuccessful. ([source](https://www.thevintagenews.com/2017/07/07/notorious-pirate-benjamin-hornigold-once-attacked-a-merchant-ship-only-to-steal-the-crews-hats/)) - **This hat piracy**: Benjamin Hornigold was a pirate in the 1700s, and you've probably not heard of him. His second in command was Edward Thatch, who went by "Blackbeard". Hornigold and Thatch ran a thirty gun ship, the most heavily-armed ship in the area at the time, around the Bahamas in the 1700s. Piracy was rife as the Spanish Succession war had come to an end, leaving a lot of sailors and soldiers out of jobs. With no successful re-skilling plan in place, a lot of them too to looting merchant ships around Jamaica and the Bahamas. My favourite story from Hornigold's time as a pirate is the time he and his crew (about 350 men) got rip-roaringly drunk and threw their hats overboard during the night. The next day they attacked a merchant ship, stole the crew's hats, left their goods untouched, and carried on. Hornigold later turned pirate-hunter (job title goals), a position at which he was pretty much entirely unsuccessful. ([source](https://www.thevintagenews.com/2017/07/07/notorious-pirate-benjamin-hornigold-once-attacked-a-merchant-ship-only-to-steal-the-crews-hats/))
## What Ive had on rotation ## What I've had on rotation
- **Something New** _The Wind_ by Balmorhea (2021, Contemporary Classical). A couple of really beautiful classical albums came out this week but this is the one Ive been drawn to. This is the first album in a while which has been produced largely by just Rob Lowe and Michael A. Muller - the original duet of Balmorhea. This shows - there are moments that are so typically _them_ in their sound and composition. Apparently, it was recorded in the same studio as Nils Frahm records, and it has the same acoustic reverence as Frahms can bring. ([links](https://songwhip.com/balmorhea/the-wind)) - **Something New** _The Wind_ by Balmorhea (2021, Contemporary Classical). A couple of really beautiful classical albums came out this week but this is the one I've been drawn to. This is the first album in a while which has been produced largely by just Rob Lowe and Michael A. Muller - the original duet of Balmorhea. This shows - there are moments that are so typically _them_ in their sound and composition. Apparently, it was recorded in the same studio as Nils Frahm records, and it has the same acoustic reverence as Frahms can bring. ([links](https://songwhip.com/balmorhea/the-wind))
- **Something Old** _The Resistance_ by Muse (2009, Rock). I dont know why I completely ignored Muse while they were pumping out albums like _The Resistance_, so Ive gone back to give them some time. The musicality on this album is lovely, the production does feel a little dated in places but there are some real timeless moments. This isnt so much a rediscovery as a “getting round to it” discovery. Im still very glad that I did. ([links](https://songwhip.com/muse/the-resistance)) - **Something Old** _The Resistance_ by Muse (2009, Rock). I don't know why I completely ignored Muse while they were pumping out albums like _The Resistance_, so I've gone back to give them some time. The musicality on this album is lovely, the production does feel a little dated in places but there are some real timeless moments. This isn't so much a rediscovery as a "getting round to it" discovery. I'm still very glad that I did. ([links](https://songwhip.com/muse/the-resistance))
## Cool Articles ## Cool Articles
- [How to avoid death by PowerPoint](https://www.youtube.com/watch?v=Iwpi1Lm6dFo) by David JP Phillips for TEDxStockholm. Everybody hates giving presentations. Everybody hates watching presentations. With these things in mind lets at least work to make them at least a little bit more focused and usable. Phillips focuses on very actionable and psychology-focused tips for improving your PowerPoints. Theyre essentially around limiting the number of things you audience has to focus on. That comes from the visual design as well as the overall structure of your presentation. Give it a watch, its a little masterclass in giving good presentations, like watching Steve Jobs introduce an iPhone. - [How to avoid death by PowerPoint](https://www.youtube.com/watch?v=Iwpi1Lm6dFo) by David JP Phillips for TEDxStockholm. Everybody hates giving presentations. Everybody hates watching presentations. With these things in mind let's at least work to make them at least a little bit more focused and usable. Phillips focuses on very actionable and psychology-focused tips for improving your PowerPoints. They're essentially around limiting the number of things you audience has to focus on. That comes from the visual design as well as the overall structure of your presentation. Give it a watch, it's a little masterclass in giving good presentations, like watching Steve Jobs introduce an iPhone.

View file

@ -10,17 +10,17 @@ tags:
- things-i-learned - things-i-learned
--- ---
The cold snap in London is teasing us. Is it over? hopefully. But it will still be ~1C at night so dont get too complacent. Still, the days already feel long. I can hardly remember it being dark at 4pm but Im sure Ill remember as soon as October comes. Theres a lot of spring, summer, and autumn between now and then though. Heres some things I learned this week The cold snap in London is teasing us. Is it over? hopefully. But it will still be ~1C at night so don't get too complacent. Still, the days already feel long. I can hardly remember it being dark at 4pm but I'm sure I'll remember as soon as October comes. There's a lot of spring, summer, and autumn between now and then though. Here's some things I learned this week
- **This Breaking Bad character**: Mike Ehrmantraut is one of my top three characters in Breaking Bad (Walter and Gus, in case youre wondering). He almost wasnt a significant character at all. Bob Odenkirk, who plays Saul, was needed on set during the filming of season two of Breaking Bad, and so the show writers Brough Mikes character in to act as a go-between for information in the episode. Its one of those happy little accidents that remind us that if we roll with an unexpected change or limitation, the we can create something lovely. Maybe its different to what we imagined at the beginning, but it can still be good. ([source](https://screenrant.com/how-met-mother-breaking-bad-connection-mike/)) - **This Breaking Bad character**: Mike Ehrmantraut is one of my top three characters in Breaking Bad (Walter and Gus, in case you're wondering). He almost wasn't a significant character at all. Bob Odenkirk, who plays Saul, was needed on set during the filming of season two of Breaking Bad, and so the show writers Brough Mike's character in to act as a go-between for information in the episode. It's one of those happy little accidents that remind us that if we roll with an unexpected change or limitation, the we can create something lovely. Maybe it's different to what we imagined at the beginning, but it can still be good. ([source](https://screenrant.com/how-met-mother-breaking-bad-connection-mike/))
- **This one book**: Lord of the Rings, the famous and seminal work for fantasy fiction by JRR Tolkien was written as one book. It was published as three, presumably because someone said to him John, these four hundred and eighty thousand words will not fit in one book, you need three books or well need to sell a magnifying glass to everyone who buys a copy” and then I presume John answered first with a poem or song and then gave his actual answer. Oh, he didnt? Because thats not how people speak? Sorry, sometimes I forget myself. Tolkien considered what we now now as “books” as simply “volumes” in the story. The crazy part about this fact is that Tolkien wrote every word of Lord of the Rings before he published them, and here I am in 2021 waiting for like a dozen fantasy authors to write book #2 or 3 in their trilogy. ([source](https://scifi.stackexchange.com/questions/47419/is-lord-of-the-rings-a-trilogy-of-books-in-tolkiens-opinion)) - **This one book**: Lord of the Rings, the famous and seminal work for fantasy fiction by JRR Tolkien was written as one book. It was published as three, presumably because someone said to him "John, these four hundred and eighty thousand words will not fit in one book, you need three books or we'll need to sell a magnifying glass to everyone who buys a copy" and then I presume John answered first with a poem or song and then gave his actual answer. Oh, he didn't? Because that's not how people speak? Sorry, sometimes I forget myself. Tolkien considered what we now now as "books" as simply "volumes" in the story. The crazy part about this fact is that Tolkien wrote every word of Lord of the Rings before he published them, and here I am in 2021 waiting for like a dozen fantasy authors to write book #2 or 3 in their trilogy. ([source](https://scifi.stackexchange.com/questions/47419/is-lord-of-the-rings-a-trilogy-of-books-in-tolkiens-opinion))
- **This demographic fact**: About a third of new-born babies in the UK have at least one parent from outside the UK. London is a very multi-cultural city, and were carrying this figure heavily: 69% of babies are born to at least one parent from outside the UK here, with Newham topping out at 86%. I think thats cool - the more children that grow up seeing people from different places, seeing different cultures to the one theyre surrounded by immediately… thats only a good thing. In a very left-wing-cant-we-all-just-get-along way: Im happy to see this. ([source](https://fullfact.org/immigration/parents-born-outside-uk/)) - **This demographic fact**: About a third of new-born babies in the UK have at least one parent from outside the UK. London is a very multi-cultural city, and we're carrying this figure heavily: 69% of babies are born to at least one parent from outside the UK here, with Newham topping out at 86%. I think that's cool - the more children that grow up seeing people from different places, seeing different cultures to the one they're surrounded by immediately… that's only a good thing. In a very left-wing-can't-we-all-just-get-along way: I'm happy to see this. ([source](https://fullfact.org/immigration/parents-born-outside-uk/))
## What Ive had on rotation ## What I've had on rotation
- **Something New** _Kings Disease_ by Nas (2020, Hip Hop). This album won the grammy for best hip hop album and I hadnt heard that it even existed before. Whoops. Nas, of Illmatic fame, is undoubtedly one of the fathers of modern hip hop. Though, to quote Jay Z on Blueprint: he did put out one good album in ten years. Luckily it was good. Unfortunately I meant I had him written off as a forebear without being an active artist. _Kings Disease_ is good. Like, actually good - not just good because I want it to be good. The beats are slick the vocals and tight, the themes are good. Having two good albums over several decades isnt a great hit rate. As if Ive not said enough to crucify myself in the eyes of the real Hip Hop Heads: this album reminds of Common in places, and thats a good thing to me. ([links](https://songwhip.com/nas/kings-disease)) - **Something New** _King's Disease_ by Nas (2020, Hip Hop). This album won the grammy for best hip hop album and I hadn't heard that it even existed before. Whoops. Nas, of Illmatic fame, is undoubtedly one of the fathers of modern hip hop. Though, to quote Jay Z on Blueprint: he did put out one good album in ten years. Luckily it was good. Unfortunately I meant I had him written off as a forebear without being an active artist. _King's Disease_ is good. Like, actually good - not just good because I want it to be good. The beats are slick the vocals and tight, the themes are good. Having two good albums over several decades isn't a great hit rate. As if I've not said enough to crucify myself in the eyes of the real Hip Hop Heads: this album reminds of Common in places, and that's a good thing to me. ([links](https://songwhip.com/nas/kings-disease))
- **Something Old** _Summer Suite, Vol 1_ by Chad Lawson (2010, Classical). I go through phases of working in silence and to music. Im emerging from a more silent phase at the moment, but the light and upbeat vibe of this album is a perfect transition piece for that. Pop it on when you dont think you want sound but silence doesnt feel right either. ([links](https://songwhip.com/chad-lawson/summer-suite-vol-1)) - **Something Old** _Summer Suite, Vol 1_ by Chad Lawson (2010, Classical). I go through phases of working in silence and to music. I'm emerging from a more silent phase at the moment, but the light and upbeat vibe of this album is a perfect transition piece for that. Pop it on when you don't think you want sound but silence doesn't feel right either. ([links](https://songwhip.com/chad-lawson/summer-suite-vol-1))
## Cool Articles ## Cool Articles
- [Greta Thunberg: It just spiralled out of control](https://www.irishtimes.com/news/world/greta-thunberg-it-just-spiralled-out-of-control-1.4528477 "Greta Thunberg: It just spiralled out of control") by Leslie Hook for _The Irish Times_. A few years ago, Greta was fully in the limelight - very publicly active and outspoken. Shes recently turned eighteen and is back at school in Sweden, studying full time. In this piece, Hook gives a humanising account of Thunbergs current beliefs and attitudes. I was interested to learn that she doesnt actively talk about solutions to the climate crisis, seeing that as the job of others with more knowledge and expertise. Shes reluctant to give answers to the big questions, which I have mixed feelings about. Give the article a read, Gretas a cool person and I think we could all take a bit of her urgency. - [Greta Thunberg: It just spiralled out of control'](https://www.irishtimes.com/news/world/greta-thunberg-it-just-spiralled-out-of-control-1.4528477 "Greta Thunberg: It just spiralled out of control'") by Leslie Hook for _The Irish Times_. A few years ago, Greta was fully in the limelight - very publicly active and outspoken. She's recently turned eighteen and is back at school in Sweden, studying full time. In this piece, Hook gives a humanising account of Thunberg's current beliefs and attitudes. I was interested to learn that she doesn't actively talk about solutions to the climate crisis, seeing that as the job of others with more knowledge and expertise. She's reluctant to give answers to the big questions, which I have mixed feelings about. Give the article a read, Greta's a cool person and I think we could all take a bit of her urgency.

View file

@ -9,17 +9,17 @@ tags:
- things-i-learned - things-i-learned
--- ---
This week Ive been focusing on perspective and gratitude. Its harder than it sounds if you feel things are unfair and not in your favour. But, to quote about a million throw cushions on Pinterest: you cant control life, only how you react to it. So this week I am choosing to react by being grateful. Even if it has to start out feeling like a very pointed lie, or jibe to my less patient self. Anyway here are some things I learned this week: This week I've been focusing on perspective and gratitude. It's harder than it sounds if you feel things are unfair and not in your favour. But, to quote about a million throw cushions on Pinterest: you can't control life, only how you react to it. So this week I am choosing to react by being grateful. Even if it has to start out feeling like a very pointed lie, or jibe to my less patient self. Anyway here are some things I learned this week:
- **This misunderstood emperor**: Nero (AD 37-68) was the last roman emperor to be descended directly for Caesar Augustus, the first Roman Emperor. Nero has a reputation for being a little… callus. Hes the one who “fiddled while Rome burned” during the Great Fire of Rome in AD 64, and had his mother and (maybe) both of his wives murdered. But apparently much of what we know about him came from biased and vilified accounts of him and his life, which were pushed after he “committed suicide” (if youre forced to commit suicide its more spiritually aligned to murder, I propose) and a new emperor came to power. And then three others after the first, all within the space of a year. When Nero tragically killed himself independent of any political pressures or personal accusations, the power-vacuum left by him had to be filled by other ambitious men. Taking the Roman Empire from stable and long-lasting (normally) emperors into this rocky period required some careful PR work, and a lot of work was done to legitimise and justify the need for his death and the change. Hence much of the accounts and writing left about him are vastly anti-Nero. Our knowledge is largely influenced by the survivorship bias: the things which have survived (like official records and accounts by historians of the time) are obviously walking the party line. However, evidence from graffiti and the common folk, reveal that Nero was actually pretty liked by people, and our image of him as a tyrant is maybe undeserved. He competed in the public games, and acted on stage… He was probably a well-known and well-liked figure at the time. Scandelous though it may be to have an emperor perform on stage and race a chariot. He did still kill his own mother and wives though, lets not forget that. ([source](https://www.artlyst.com/previews/notorious-roman-emperor-nero-explored-new-british-museum-show/)) - **This misunderstood emperor**: Nero (AD 37-68) was the last roman emperor to be descended directly for Caesar Augustus, the first Roman Emperor. Nero has a reputation for being a little… callus. He's the one who "fiddled while Rome burned" during the Great Fire of Rome in AD 64, and had his mother and (maybe) both of his wives murdered. But apparently much of what we know about him came from biased and vilified accounts of him and his life, which were pushed after he "committed suicide" (if you're forced to commit suicide it's more spiritually aligned to murder, I propose) and a new emperor came to power. And then three others after the first, all within the space of a year. When Nero tragically killed himself independent of any political pressures or personal accusations, the power-vacuum left by him had to be filled by other ambitious men. Taking the Roman Empire from stable and long-lasting (normally) emperors into this rocky period required some careful PR work, and a lot of work was done to legitimise and justify the need for his death and the change. Hence much of the accounts and writing left about him are vastly anti-Nero. Our knowledge is largely influenced by the survivorship bias: the things which have survived (like official records and accounts by historians of the time) are obviously walking the party line. However, evidence from graffiti and the common folk, reveal that Nero was actually pretty liked by people, and our image of him as a tyrant is maybe undeserved. He competed in the public games, and acted on stage… He was probably a well-known and well-liked figure at the time. Scandelous though it may be to have an emperor perform on stage and race a chariot. He did still kill his own mother and wives though, let's not forget that. ([source](https://www.artlyst.com/previews/notorious-roman-emperor-nero-explored-new-british-museum-show/))
- **This health benefit of tea**: Coffee will forever remain my first love, but as I mature into a young gentleman, Im looking for any excuse to eat biscuits at about 4pm. Tea is one such excuse, but I ended up catching feelings for tea. Coffee gets a bad wrap for being full of caffein though, and although there are no negative health effects of chronic caffein consumption, I dont want to be dependent on it. Tea, although containing caffein, is thought to boost our mood and calm us, despite caffeins tendency to lead us towards jitters if we get a little over-buzzed. For instance, a study on South Korea found that adults who regularly drank tea were 21% less likely to develop depression over their life - the same effect as about 2.5 hours of exercise a week. Its unclear if this is because of individual or mixed chemicals in tea (like epigallocatechin gallate or l-theanine), or the ritual of preparing and then consuming the tea itself. Dont underestimate the fact that simply taking 5-10 minutes out of a day to sit down and not be stressed is probably good for us. Nevertheless, it does appear that drinking tea (and not a placebo) does help people a) feel more relaxed, and b) produce less cortisol (the stress chemical) - so in reality, it is likely some combination of the two. ([source](https://www.nature.com/articles/d41586-019-00398-1)) - **This health benefit of tea**: Coffee will forever remain my first love, but as I mature into a young gentleman, I'm looking for any excuse to eat biscuits at about 4pm. Tea is one such excuse, but I ended up catching feelings for tea. Coffee gets a bad wrap for being full of caffein though, and although there are no negative health effects of chronic caffein consumption, I don't want to be dependent on it. Tea, although containing caffein, is thought to boost our mood and calm us, despite caffein's tendency to lead us towards jitters if we get a little over-buzzed. For instance, a study on South Korea found that adults who regularly drank tea were 21% less likely to develop depression over their life - the same effect as about 2.5 hours of exercise a week. It's unclear if this is because of individual or mixed chemicals in tea (like epigallocatechin gallate or l-theanine), or the ritual of preparing and then consuming the tea itself. Don't underestimate the fact that simply taking 5-10 minutes out of a day to sit down and not be stressed is probably good for us. Nevertheless, it does appear that drinking tea (and not a placebo) does help people a) feel more relaxed, and b) produce less cortisol (the stress chemical) - so in reality, it is likely some combination of the two. ([source](https://www.nature.com/articles/d41586-019-00398-1))
- **This bee weapon**: Bees are cool and really useful. Did you know that they create their own air-circulation system? To keep the temperature in a hive a comfy ~30C, the bees beat their wings to circulate air around the hive. Unfortunately, bees are also under attack sometimes, and not just from cartoon bears with a hunkering for honey. One way that bees can defend themselves from invasive species, like wasps or hornets, is to gather around the invading individual and focus the hot air at the new guest. This essentially cooks them, or overheats them. Thats pretty hardcore, bees. ([source](https://ideas.ted.com/bees-can-remember-human-faces-and-7-other-surprising-facts-about-these-important-insects/?utm_source=pocket-newtab-global-en-GB)) - **This bee weapon**: Bees are cool and really useful. Did you know that they create their own air-circulation system? To keep the temperature in a hive a comfy ~30C, the bees beat their wings to circulate air around the hive. Unfortunately, bees are also under attack sometimes, and not just from cartoon bears with a hunkering for honey. One way that bees can defend themselves from invasive species, like wasps or hornets, is to gather around the invading individual and focus the hot air at the new guest. This essentially cooks them, or overheats them. That's pretty hardcore, bees. ([source](https://ideas.ted.com/bees-can-remember-human-faces-and-7-other-surprising-facts-about-these-important-insects/?utm_source=pocket-newtab-global-en-GB))
## What Ive had on rotation this week ## What I've had on rotation this week
- **Something New** _Wake_ by WVNDER (2021, Pop Punk). It feels a little like cheating to call a seven-song twenty-four minute CD an “album” but Ill take it. WVNDER not only have great album artwork (I had a little poke around and couldnt easily find the credited artist). This is a tight little pop punk/emo pop album with clean vocals and lovely moments. ([links](https://songwhip.com/wvnder/wake)) - **Something New** _Wake_ by WVNDER (2021, Pop Punk). It feels a little like cheating to call a seven-song twenty-four minute CD an "album" but I'll take it. WVNDER not only have great album artwork (I had a little poke around and couldn't easily find the credited artist). This is a tight little pop punk/emo pop album with clean vocals and lovely moments. ([links](https://songwhip.com/wvnder/wake))
- **Something Old** _Perotin_ by The Hilliard Ensemble (1989, Choral/Classical). This is one to listen to with headphones, or a good surround-sound. The medieval-era vocals are wonderful to work, walk, and exist to. ([links](https://songwhip.com/the-hilliard-ensemble/perotin)) - **Something Old** _Perotin_ by The Hilliard Ensemble (1989, Choral/Classical). This is one to listen to with headphones, or a good surround-sound. The medieval-era vocals are wonderful to work, walk, and exist to. ([links](https://songwhip.com/the-hilliard-ensemble/perotin))
## Cool articles ## Cool articles
- [Neuroscientist Christof Koch on How the “Qualia” of Our Experience Illuminate the Central Mystery of Consciousness](https://www.brainpickings.org/2017/05/25/christof-koch-consciousness-qualia/) by Maria Popova for _Brain Pickings_. Popova has a gift for merging the scientific and the poetic, though this is slightly easier where the two meet naturally. The study of consciousness is like that: were yet to have any functional answers. Instead its an area of science where interpretations reign supreme. If I was a cleverer man when I was sixteen years-old and chasing my studies, I wouldve chosen subjects that would let me into neuroscience. In this piece, Popova introduces the _Romantic Reductionist_ approach to studying consciousness, adopted by Christof Koch. Koch is a currently-active academic in the realm of consciousness, and his approach merges the reductionist (“things can be explained as a system of discrete and interacting parts”) and romantic (“things are beautiful and not the sum of their parts”). - [Neuroscientist Christof Koch on How the "Qualia" of Our Experience Illuminate the Central Mystery of Consciousness](https://www.brainpickings.org/2017/05/25/christof-koch-consciousness-qualia/) by Maria Popova for _Brain Pickings_. Popova has a gift for merging the scientific and the poetic, though this is slightly easier where the two meet naturally. The study of consciousness is like that: we're yet to have any functional answers. Instead it's an area of science where interpretations reign supreme. If I was a cleverer man when I was sixteen years-old and chasing my studies, I would've chosen subjects that would let me into neuroscience. In this piece, Popova introduce's the _Romantic Reductionist_ approach to studying consciousness, adopted by Christof Koch. Koch is a currently-active academic in the realm of consciousness, and his approach merges the reductionist ("things can be explained as a system of discrete and interacting parts") and romantic ("things are beautiful and not the sum of their parts").

View file

@ -10,61 +10,61 @@ tags:
- side-projects - side-projects
--- ---
Your side-projects deserve a decisive, merciful death at your hands. You dragged them into this world, youll fling them out. And do it quickly. Your side-projects deserve a decisive, merciful death at your hands. You dragged them into this world, you'll fling them out. And do it quickly.
I want to talk about killing our much beloved side-projects, and why this is totally a good idea. Then I want to talk about why this could be a terrible idea. Im not here for resolutions. I want to talk about killing our much beloved side-projects, and why this is totally a good idea. Then I want to talk about why this could be a terrible idea. I'm not here for resolutions.
There are two parts of my personality, plucked from the universe-scale D&D Players Manual, which make the question “should I carry on with this side project?” difficult to answer: There are two parts of my personality, plucked from the universe-scale D&D Players Manual, which make the question "should I carry on with this side project?" difficult to answer:
1. ** I like to flip-flop** - just because you made a decision in the past doesnt mean its the best decision, or that you owe your current time your past self. Your past self was probably dumb and optimistic anyway. What do you know now that you didnt know when you made the choice? Do you know that youre not enjoying yourself, that you dont have the money, that its not worth the time or investment? Cool, just put your tools down. This kind of thinking got me out of working freelance, a decision I thought I would love but actually did not. _Vive lempoi_. 1. ** I like to flip-flop** - just because you made a decision in the past doesn't mean it's the best decision, or that you owe your current time your past self. Your past self was probably dumb and optimistic anyway. What do you know now that you didn't know when you made the choice? Do you know that you're not enjoying yourself, that you don't have the money, that it's not worth the time or investment? Cool, just put your tools down. This kind of thinking got me out of working freelance, a decision I thought I would love but actually did not. _Vive l'empoi_.
2. **I like to commit** - if youre going to make a decision, act like youve made the decision. Sometimes thats about writing a blog post about random things you learn every week even when you dont want to. Sometimes its about finishing puppy school (with your dog, obviously), or building an MVP of that website youve wanted to build since 2014. Inaction is a choice. Relaxation and space are a choice. You can commit to restoring some inner peace and spend every night for four months in silent meditation, or watching Netflix, or going on dinner dates with different friends. Or you can commit to learning a new language, reaching a new fitness goal, whatever. I really dont care what the goal is, but I like to achieve goals. 2. **I like to commit** - if you're going to make a decision, act like you've made the decision. Sometimes that's about writing a blog post about random things you learn every week even when you don't want to. Sometimes it's about finishing puppy school (with your dog, obviously), or building an MVP of that website you've wanted to build since 2014. Inaction is a choice. Relaxation and space are a choice. You can commit to restoring some inner peace and spend every night for four months in silent meditation, or watching Netflix, or going on dinner dates with different friends. Or you can commit to learning a new language, reaching a new fitness goal, whatever. I really don't care what the goal is, but I like to achieve goals.
These two make for often uneasy bed fellows. Not quite sitcom-worthy misanthropes, but the two can make it difficult for me to feel confidently happy or fulfilled. Second guessing? Thats a lot easier. These two make for often uneasy bed fellows. Not quite sitcom-worthy misanthropes, but the two can make it difficult for me to feel confidently happy or fulfilled. Second guessing? That's a lot easier.
I am a front-end and full-stack software engineer by trade and craft. For the past several months I have been building DashDot, an iOS app for interval training. I started this project because it solves an actual problem I have, and because I wanted to try building something for a different platform. I am a front-end and full-stack software engineer by trade and craft. For the past several months I have been building DashDot, an iOS app for interval training. I started this project because it solves an actual problem I have, and because I wanted to try building something for a different platform.
Im going to stop building that app. Im not going to caveat that sentiment with “for now” or “at the moment”. I have excommunicated it from my life, and I have no intention to pick it back up, or open that Xcode project. I might do those things, sure. I might try again in the future. I just dont think I will within the next lunar cycle, and Im not setting any expectation to myself that I will, either. I'm going to stop building that app. I'm not going to caveat that sentiment with "for now" or "at the moment". I have excommunicated it from my life, and I have no intention to pick it back up, or open that Xcode project. I might do those things, sure. I might try again in the future. I just don't think I will within the next lunar cycle, and I'm not setting any expectation to myself that I will, either.
The minute I made that decision, I felt lighter. I was free from doing something that I had increasingly come to resent. Im not going to go into all the nerdy details about why I didnt like iOS development - but the short of it is that I do not want to do it. So I wont. The minute I made that decision, I felt lighter. I was free from doing something that I had increasingly come to resent. I'm not going to go into all the nerdy details about why I didn't like iOS development - but the short of it is that I do not want to do it. So I won't.
Maybe Im weird and this is totally natural to some. Maybe some people love giving things up and can do so without nary a backward glance. Youll know were similar people if hearing that you can do this, that you can simply _stop_, is a gleeful relief or reminder, not an obvious re-statement. Got a side project that simply isnt worth the investment any more? Great, kill it. No ones going to come looking for the body. Maybe I'm weird and this is totally natural to some. Maybe some people love giving things up and can do so without nary a backward glance. You'll know we're similar people if hearing that you can do this, that you can simply _stop_, is a gleeful relief or reminder, not an obvious re-statement. Got a side project that simply isn't worth the investment any more? Great, kill it. No one's going to come looking for the body.
Though the _killing_ metaphor is satisfyingly dramatic, I think excommunication is the better analogy. The idea of the project isnt dead, I can still go back to it. You can start building your ideas again whenever you want. Instead, Ive made the choice to have no interaction with it: Im not going to design, build, refactor, or plan anything else to do with this project. Its going to take up no more of my mental time and energy. It has been banished from my kingdom of effort and attention. Though the _killing_ metaphor is satisfyingly dramatic, I think excommunication is the better analogy. The idea of the project isn't dead, I can still go back to it. You can start building your ideas again whenever you want. Instead, I've made the choice to have no interaction with it: I'm not going to design, build, refactor, or plan anything else to do with this project. It's going to take up no more of my mental time and energy. It has been banished from my kingdom of effort and attention.
## You might be ready to excommunicate when… ## You might be ready to excommunicate when…
You ever catch yourself, mid-activity and think “wait why am I doing this”. How might you know when its time to excommunicate that project from your life? Here are some smells Ive been looking out for You ever catch yourself, mid-activity and think "wait why am I doing this". How might you know when it's time to excommunicate that project from your life? Here are some smells I've been looking out for
- **Does it spark joy?** - 2019 internet meme aside, Marie Kondo [has a good point](https://www.youtube.com/watch?v=9AvWs2X-bEA): how does your body respond when you think about, or work on the project? Are you excited by what youre doing or could be doing? Is it heading in a good direction? Or are you just a little weary? - **Does it spark joy?** - 2019 internet meme aside, Marie Kondo [has a good point](https://www.youtube.com/watch?v=9AvWs2X-bEA): how does your body respond when you think about, or work on the project? Are you excited by what you're doing or could be doing? Is it heading in a good direction? Or are you just a little weary?
- **Is it worth it?** - is all this time, money, and mental energy youre putting into the project actually giving you something back? Investment and returns arent just money: does it feel like a good use of your time and attention? If youre finding it hard to justify to yourself, think about why? - **Is it worth it?** - is all this time, money, and mental energy you're putting into the project actually giving you something back? Investment and returns aren't just money: does it feel like a good use of your time and attention? If you're finding it hard to justify to yourself, think about why?
- **Where is this going?** - follow through the thought process for “what happens next” for the next weeks and months. One of the last straws for me and my most recent side project was realising that even if things become wildly successful and people love the app, the thought of having to build, improve, and support an iOS app just did not feel like a good reward. And then if things went badly Id have to do active work to get more users so that I could support an app I didnt want to support. Is the project leading me closer to the life I want to live? No? - **Where is this going?** - follow through the thought process for "what happens next" for the next weeks and months. One of the last straws for me and my most recent side project was realising that even if things become wildly successful and people love the app, the thought of having to build, improve, and support an iOS app just did not feel like a good reward. And then if things went badly I'd have to do active work to get more users so that I could support an app I didn't want to support. Is the project leading me closer to the life I want to live? No?
## But what if I just keep picking things up and putting them down? ## But what if I just keep picking things up and putting them down?
Im worried about being that guys who gets a new personality-defining hobby every other month. I dont want to be telling my friends how great it is to feel the wet clay between your fingers, and then eight weeks later consider my chances as a professional oboe player. Theres nothing wrong with that, you have to pursue your own happiness in this life, but theres more than that. I'm worried about being that guys who gets a new personality-defining hobby every other month. I don't want to be telling my friends how great it is to feel the wet clay between your fingers, and then eight weeks later consider my chances as a professional oboe player. There's nothing wrong with that, you have to pursue your own happiness in this life, but there's more than that.
I worry sometimes that I jump between things, never finishing them or accomplishing anything with them. But also, massive spoiler alert, no matter how long your streak on Duolingo, youre still going to die. If you can wring joy from the scarce few hours we have on this giant hunk of space rock then, by all means, flit between things. Flit away. Keep flitting. This is [hedonism](https://plato.stanford.edu/entries/hedonism/), which I think gets a bad wrap and has a lot less to do with Roman orgies that youd think. I worry sometimes that I jump between things, never finishing them or accomplishing anything with them. But also, massive spoiler alert, no matter how long your streak on Duolingo, you're still going to die. If you can wring joy from the scarce few hours we have on this giant hunk of space rock then, by all means, flit between things. Flit away. Keep flitting. This is [hedonism](https://plato.stanford.edu/entries/hedonism/), which I think gets a bad wrap and has a lot less to do with Roman orgies that you'd think.
However, if you only ever get a few steps down a road, or you only do something when it is interesting or enjoyable - we miss out on something. However, if you only ever get a few steps down a road, or you only do something when it is interesting or enjoyable - we miss out on something.
Vasari, the first art historian and also debut biographer of Leonardo, [wrote in reference](https://academic.oup.com/brain/article/142/6/1842/5492606) to the famous renaissance artist, architect, natural scientist, and polymath: if he had not been so variable and unstable, for he set himself to learn many things, and then, after having begun them, abandoned them. Leonardo was a flitter. Vasari, the first art historian and also debut biographer of Leonardo, [wrote in reference](https://academic.oup.com/brain/article/142/6/1842/5492606) to the famous renaissance artist, architect, natural scientist, and polymath: "if he had not been so variable and unstable, for he set himself to learn many things, and then, after having begun them, abandoned them". Leonardo was a flitter.
If youve got the mental horsepower of Leonardo (which I certainly dont), then the curiosity does us benefit. Even with his almost mystic mental capacity, and despite working in one of the most productive and talented eras of artistry in European history, Leonardo left behind very few finished paintings. He left behind a lot of notebooks, with questions and observations, and he undoubtedly pushed a thousand tiny journeys forward, but he rarely reached “done” in his work. If you've got the mental horsepower of Leonardo (which I certainly don't), then the curiosity does us benefit. Even with his almost mystic mental capacity, and despite working in one of the most productive and talented eras of artistry in European history, Leonardo left behind very few finished paintings. He left behind a lot of notebooks, with questions and observations, and he undoubtedly pushed a thousand tiny journeys forward, but he rarely reached "done" in his work.
There are no more than eighteen surviving paintings which can be attributed to Leonardo (if you ignore all credible questioning on many of these works). Though to be fair his portfolio includes things like _The Last Supper_ and _Mona Lisa_, possibly two of the most recognised pieces of western art. This is compared to the literally [dozens of paintings by Raphael](https://en.wikipedia.org/wiki/List_of_paintings_by_Raphael) (who died at 37, a full thirty less life years than Leonardo), or Michelangelo who painted (or supervised) the _entire ceiling of the Sistine Chapel _, which accounts for over 500 squared metres and then also he sculpted _David_. To be fair, Michelangelo was probably a bit too dedicated, and maybe could have loosened up a bit. There are no more than eighteen surviving paintings which can be attributed to Leonardo (if you ignore all credible questioning on many of these works). Though to be fair his portfolio includes things like _The Last Supper_ and _Mona Lisa_, possibly two of the most recognised pieces of western art. This is compared to the literally [dozens of paintings by Raphael](https://en.wikipedia.org/wiki/List_of_paintings_by_Raphael) (who died at 37, a full thirty less life years than Leonardo), or Michelangelo who painted (or supervised) the _entire ceiling of the Sistine Chapel _, which accounts for over 500 squared metres and then also he sculpted _David_. To be fair, Michelangelo was probably a bit too dedicated, and maybe could have loosened up a bit.
Unfortunately, no ones really doing anything comparable to painting the Sistine Chapel anymore. I dont know why, maybe were all too remarkable to be remarkable anymore, or maybe weve become numb excellence. Youre not sacrificing an era-defining oeuvre so you can go to an introductory macrame class or get three pages into your bullet journal before never opening it ever again. But I do still think we owe it to ourselves to commit a little before abandoning ship. The process of mastery and craft run deep in us, I think. Unfortunately, no one's really doing anything comparable to painting the Sistine Chapel anymore. I don't know why, maybe we're all too remarkable to be remarkable anymore, or maybe we've become numb excellence. You're not sacrificing an era-defining oeuvre so you can go to an introductory macrame class or get three pages into your bullet journal before never opening it ever again. But I do still think we owe it to ourselves to commit a little before abandoning ship. The process of mastery and craft run deep in us, I think.
Thats because new hobbies or side projects are both themselves (i.e. making a clay pot, writing a book), but they are also meta-projects: the process of planning how you will dedicate your time and attention around them. The ability to engage with the terrible, awful imitation you have made and the shining exemplar you were trying to reproduce, and asking yourself “how did I get this so wrong?”. This is another time to mention [The Gap](https://vimeo.com/85040589) by Ira Glass. That's because new hobbies or side projects are both themselves (i.e. making a clay pot, writing a book), but they are also meta-projects: the process of planning how you will dedicate your time and attention around them. The ability to engage with the terrible, awful imitation you have made and the shining exemplar you were trying to reproduce, and asking yourself "how did I get this so wrong?". This is another time to mention [The Gap](https://vimeo.com/85040589) by Ira Glass.
If you hang around for long enough, you notice the transition from a project as itself, to a project as a meta-project. I think theres something inherently valuable in going through that, and I dont think you can force it. If you hang around for long enough, you notice the transition from a project as itself, to a project as a meta-project. I think there's something inherently valuable in going through that, and I don't think you can force it.
To give an example from my domain, when I dip into a lot of forums for web developers I see piles of novice engineers asking ill-formed, basic questions which either have a one-line answer (“how do I get data from an API in python?”) or no answer (“which JS framework should I learn?”). But a lot of the conversations I see happening between experienced engineers, or at talks from engineers - these are more philosophical or ideal. Broad, cross-technology approaches, team and inter-discipline management or integration. Once you have reached conversational fluency with the details, you can go one level higher. I really enjoyed learning the basics as an engineer but I am _really_ enjoying the work of a journeyman. To give an example from my domain, when I dip into a lot of forums for web developers I see piles of novice engineers asking ill-formed, basic questions which either have a one-line answer ("how do I get data from an API in python?") or no answer ("which JS framework should I learn?"). But a lot of the conversations I see happening between experienced engineers, or at talks from engineers - these are more philosophical or ideal. Broad, cross-technology approaches, team and inter-discipline management or integration. Once you have reached conversational fluency with the details, you can go one level higher. I really enjoyed learning the basics as an engineer but I am _really_ enjoying the work of a journeyman.
Similarly, with writing I deeply enjoy the feeling of _having_ written, I dislike much of the reality of writing consistently. I love having a blog where Ive written consistently for nearly a year, but I hate the Saturday morning fear that this might be the week I dont write a blog post about things I have learned. I love organising thoughts after they lay strewn in a text document, having stumbled over each other in a rush to get out of my brain. I love that I nearly always have a conversation starter or something to mention when Im out at the pub. Or if I was out at the pub and there wasnt a pandemic. Similarly, with writing I deeply enjoy the feeling of _having_ written, I dislike much of the reality of writing consistently. I love having a blog where I've written consistently for nearly a year, but I hate the Saturday morning fear that this might be the week I don't write a blog post about things I have learned. I love organising thoughts after they lay strewn in a text document, having stumbled over each other in a rush to get out of my brain. I love that I nearly always have a conversation starter or something to mention when I'm out at the pub. Or if I was out at the pub and there wasn't a pandemic.
Some of these things are about the actual act of writing but others are, more broadly, because I write. And I think I have only come to enjoy these things, and to even _see_ them in the first place, because I have committed to a regular writing practice. I dont think I would have got there if I decided to flit between ideas, or if I had committed to only writing when I feel like it or when something comes up. I do not know if I would even think to write something in the first place if I hadnt. Some of these things are about the actual act of writing but others are, more broadly, because I write. And I think I have only come to enjoy these things, and to even _see_ them in the first place, because I have committed to a regular writing practice. I don't think I would have got there if I decided to flit between ideas, or if I had committed to only writing when I feel like it or when something comes up. I do not know if I would even think to write something in the first place if I hadn't.
Ultimately, it still doesn't matter, obviously. Ill be dust in a hundred years and no one cares if I do or dont commit to things, so long as I seem happy. But there is hope among all the fatalism. But I think the things you gain, and the muscles you exercise at the beginning of something are different to whats necessary when the motivation runs out and youre looking to improve. **If those are the muscles you want to build, stop flitting.**All this, of course, if youre able to healthily bare the cost of getting there. Ultimately, it still doesn't matter, obviously. I'll be dust in a hundred years and no one cares if I do or don't commit to things, so long as I seem happy. But there is hope among all the fatalism. But I think the things you gain, and the muscles you exercise at the beginning of something are different to what's necessary when the motivation runs out and you're looking to improve. **If those are the muscles you want to build, stop flitting.**All this, of course, if you're able to healthily bare the cost of getting there.
Sometimes the answer is a resounding and valid “no”, “I really dont want to” or “I hate this”. If it is, excommunicate the project from your life. Put it deep in that freezer. Sometimes the answer is a resounding and valid "no", "I really don't want to" or "I hate this". If it is, excommunicate the project from your life. Put it deep in that freezer.

View file

@ -11,18 +11,18 @@ tags:
# (Not) Things I learned this week #38 # (Not) Things I learned this week #38
This week seems to have really flown by. Ive decided to take purposeful and intentional time for rest and personal recuperation this week. Im not feeling burned out, but I could certainly smell some distant smoke on the wind. So heres to taking evenings to get around to those household repairs Ive been putting off, to that growing pile of unread books. I said 2021 was my _Year of Discourse_ and as we transition from winter to spring, Im checking in with myself. Im observing the change of weather, daylight, and flowers. If you get 15 minutes to just sit in a public park, I would strongly recommend. This week seems to have really flown by. I've decided to take purposeful and intentional time for rest and personal recuperation this week. I'm not feeling burned out, but I could certainly smell some distant smoke on the wind. So here's to taking evenings to get around to those household repairs I've been putting off, to that growing pile of unread books. I said 2021 was my _Year of Discourse_ and as we transition from winter to spring, I'm checking in with myself. I'm observing the change of weather, daylight, and flowers. If you get 15 minutes to just sit in a public park, I would strongly recommend.
Because of that Ive not been browsing the internet as much this week, so instead Im just popping in with some music and reading recommendations. Because of that I've not been browsing the internet as much this week, so instead I'm just popping in with some music and reading recommendations.
## What Ive had on rotation ## What I've had on rotation
- **Something New** _if I could make it go quiet_ by girl in red (2021, Pop). Ive been listening to girl in reds singles since the algorithm started pushing her to me. The algorithm was right, guys. I love the mellow, low-key sad but energetic vibe of this album. The production makes you want to bop in some places and listen carefully in others. ([links](https://songwhip.com/girl-in-red/if-i-could-make-it-go-quiet)) - **Something New** _if I could make it go quiet_ by girl in red (2021, Pop). I've been listening to girl in red's singles since the algorithm started pushing her to me. The algorithm was right, guys. I love the mellow, low-key sad but energetic vibe of this album. The production makes you want to bop in some places and listen carefully in others. ([links](https://songwhip.com/girl-in-red/if-i-could-make-it-go-quiet))
- **Something Old** _Blink-182_ by Blink-182 (2003, Pop Punk). _I Miss You_ came on a shared speaker this week and everyone in the room knew all the words, and also how to mimic the winey American grunge accent. I got this album in physical when I was in the last year of primary school, or early secondary school (I cant remember anything, dude). Its a great album from a seminal pop punk group who are still influencing the genre. ([links](https://songwhip.com/blink-182/blink-182)) - **Something Old** _Blink-182_ by Blink-182 (2003, Pop Punk). _I Miss You_ came on a shared speaker this week and everyone in the room knew all the words, and also how to mimic the winey American grunge accent. I got this album in physical when I was in the last year of primary school, or early secondary school (I can't remember anything, dude). It's a great album from a seminal pop punk group who are still influencing the genre. ([links](https://songwhip.com/blink-182/blink-182))
## Cool articles ## Cool articles
- [Breaking Camp](https://www.theverge.com/2021/4/27/22406673/basecamp-political-speech-policy-controversy) by Casey Newton for The Verge. Indie tech darling, Basecamp, really messed up this week. In a company-wide memo they initially banned “societal and political” discussions at work, before backtracking a little, and clarifying that they meant “just not on the work chat”. To me this strikes of peak tech-bro culture where rich white men believe they can divorce themselves, and exist entirely independent of politics. Unfortunately, running a large, outspoken and (broadly) successful company is inherently a political act. I get the impression that DHH and Jason Fried (the two men at the helm of the company) didnt see the value in doing the work to create a company which actively combats racism/sexism in the workplace. I mean, I get it, it _is_ work but also for some people simply surviving somewhere where they dont feel welcome is also work. As I write this, about 25% of Basecamps employees (including the heads of marketing and design) have resigned. Unfortunately, I cant help but shake the feeling that this is what Basecamp wanted, given that they offered a six-month severance package to employees who wished to leave (if they had been there longer than a year). Theyll now be creating an ideological silo with low diversity of opinion and/or representation. What happens now? I honestly dont know. - [Breaking Camp](https://www.theverge.com/2021/4/27/22406673/basecamp-political-speech-policy-controversy) by Casey Newton for The Verge. Indie tech darling, Basecamp, really messed up this week. In a company-wide memo they initially banned "societal and political" discussions at work, before backtracking a little, and clarifying that they meant "just not on the work chat". To me this strikes of peak tech-bro culture where rich white men believe they can divorce themselves, and exist entirely independent of politics. Unfortunately, running a large, outspoken and (broadly) successful company is inherently a political act. I get the impression that DHH and Jason Fried (the two men at the helm of the company) didn't see the value in doing the work to create a company which actively combats racism/sexism in the workplace. I mean, I get it, it _is_ work but also for some people simply surviving somewhere where they don't feel welcome is also work. As I write this, about 25% of Basecamp's employees (including the heads of marketing and design) have resigned. Unfortunately, I can't help but shake the feeling that this is what Basecamp wanted, given that they offered a six-month severance package to employees who wished to leave (if they had been there longer than a year). They'll now be creating an ideological silo with low diversity of opinion and/or representation. What happens now? I honestly don't know.
- [A 23-year-old coder kept QAnon online when no one else would](https://www.bloomberg.com/news/features/2021-04-14/qanon-daily-stormer-far-right-have-been-kept-online-by-nick-lim-s-vanwatech) by William Turton and Joshua Brustein for Bloomberg. Some of the biggest modern questions, which came to a undeniable and ugly head in January 2021, are about free speech, access to platforms, the responsibility and role of social media platforms in relation to their content. Its a concern that “free speech” is becoming coded language for extreme and polarised speech. Its worrying that individuals and groups are able to find willing audiences to listen to at-best-grey-area rhetoric, and at worse false and actively damaging speech. The authors of this article look at someone whos making hundreds of thousands of dollars a year by providing technical services and platform to these damaging figures. Perhaps my favourite quote from the article is: - [A 23-year-old coder kept QAnon online when no one else would](https://www.bloomberg.com/news/features/2021-04-14/qanon-daily-stormer-far-right-have-been-kept-online-by-nick-lim-s-vanwatech) by William Turton and Joshua Brustein for Bloomberg. Some of the biggest modern questions, which came to a undeniable and ugly head in January 2021, are about free speech, access to platforms, the responsibility and role of social media platforms in relation to their content. It's a concern that "free speech" is becoming coded language for extreme and polarised speech. It's worrying that individuals and groups are able to find willing audiences to listen to at-best-grey-area rhetoric, and at worse false and actively damaging speech. The authors of this article look at someone who's making hundreds of thousands of dollars a year by providing technical services and platform to these damaging figures. Perhaps my favourite quote from the article is:
> Lim argues that the real political crisis facing the U.S. is not extremist violence but erosion of the First Amendment. He says that restrictions on online speech have already brought the U.S. to the verge of communist tyranny, that “we are one foot away from 1984.” After a moment, though, he offers a sizable qualifier: “I never actually read the book, so I dont know all the themes of the book. But I have heard the concepts, and Ive seen some things, and I thought, Whoa! Thats sketchy as f---.’ ” > Lim argues that the real political crisis facing the U.S. is not extremist violence but erosion of the First Amendment. He says that restrictions on online speech have already brought the U.S. to the verge of communist tyranny, that "we are one foot away from 1984." After a moment, though, he offers a sizable qualifier: "I never actually read the book, so I don't know all the themes of the book. But I have heard the concepts, and I've seen some things, and I thought, Whoa! That's sketchy as f---.'"

View file

@ -1,6 +1,6 @@
--- ---
title: "[LinkedIn Post] Being so customer-centric your customers think youre a robot" title: "[LinkedIn Post] Being so customer-centric your customers think you're a robot"
author: "Thomas Wilson" author: "Thomas Wilson"
date: 2021-05-05T20:07:00 date: 2021-05-05T20:07:00
slug: "2021-05-05-customer-centric-like-a-robot" slug: "2021-05-05-customer-centric-like-a-robot"
@ -13,15 +13,15 @@ tags:
(This is a cross-post of [a short article I wrote on LinkedIn](https://www.linkedin.com/pulse/being-so-customer-centric-your-customers-think-youre-robot-wilson)) (This is a cross-post of [a short article I wrote on LinkedIn](https://www.linkedin.com/pulse/being-so-customer-centric-your-customers-think-youre-robot-wilson))
Stop me if youve heard any of these: “your call is valuable to us”… “on a scale of 1-10 how would you rate our…”, ”at {companyName} we care deeply about our customer experience…” Stop me if you've heard any of these: "your call is valuable to us"… "on a scale of 1-10 how would you rate our…", "at {companyName} we care deeply about our customer experience…"
Have you literally ever believed anybody when youve heard or read these things? I have not. Not even once. Have you literally ever believed anybody when you've heard or read these things? I have not. Not even once.
But we should care. I know Oxwash does. We care a lot that people send us their wedding dresses, bedding, favourite band Ts and home team jerseys. Its one of the top three reasons I decided to work at Oxwash - everyone genuinely cares 💙 Im a front-end engineer, I make software that real customers use every day, and I care that they have a good experience. At very least I care that we should know if our software is confusing our new customers. But we should care. I know Oxwash does. We care a lot that people send us their wedding dresses, bedding, favourite band Ts and home team jerseys. It's one of the top three reasons I decided to work at Oxwash - everyone genuinely cares 💙 I'm a front-end engineer, I make software that real customers use every day, and I care that they have a good experience. At very least I care that we should know if our software is confusing our new customers.
👇 The good news is, its actually really easy to stand out. Literally all you have to do is act like youre a human being who cares. So Im bringing **four tips on how to talk with your customers like youre a human who actually cares about them** 👇 The good news is, it's actually really easy to stand out. Literally all you have to do is act like you're a human being who cares. So I'm bringing **four tips on how to talk with your customers like you're a human who actually cares about them**
1. 🕵️‍♂️ **Focus on who you want to talk to**: Youre not going to be able to talk to everybody all of the time. You have other things to do. I started talking to first-time Oxwash customers. Its enough that Im fielding e-mails every day, but theyre not banging down my door. I think its really important your software is understandable to first-time users. If they dont stick around long enough to learn the…quirks of your system then theres a problem. You might care about your longest customers, or those in a certain age range or who work in a certain sector. Start small, you can always go bigger. 1. 🕵️‍♂️ **Focus on who you want to talk to**: You're not going to be able to talk to everybody all of the time. You have other things to do. I started talking to first-time Oxwash customers. It's enough that I'm fielding e-mails every day, but they're not banging down my door. I think it's really important your software is understandable to first-time users. If they don't stick around long enough to learn the…quirks of your system then there's a problem. You might care about your longest customers, or those in a certain age range or who work in a certain sector. Start small, you can always go bigger.
2. 🤖 **Automate (but not too much)**: How many e-mails in your inbox were hand-crafted and delivered by artisanal humans? Probably less than half. Use automation services to send-off e-mails based on database and software events. Use snippets (shoutout to TextExpander and SuperHuman) so that certain thing (like instructions on how to update your version of the app in the App Store) arent hand typed every… single… time. But always, _always_ put something hand-crafted into a reply, especially when someones taken the time to send you useful feedback. 2. 🤖 **Automate (but not too much)**: How many e-mails in your inbox were hand-crafted and delivered by artisanal humans? Probably less than half. Use automation services to send-off e-mails based on database and software events. Use snippets (shoutout to TextExpander and SuperHuman) so that certain thing (like instructions on how to update your version of the app in the App Store) aren't hand typed every… single… time. But always, _always_ put something hand-crafted into a reply, especially when someone's taken the time to send you useful feedback.
3. 🎁 **Share your findings**: We now run monthly reviews with product, strategic, and technical staff. Every single bit of feedback (critical and complementary), every suggestion, every point of contention is brought up and discussed with real humans so that we can do something with that information. 3. 🎁 **Share your findings**: We now run monthly reviews with product, strategic, and technical staff. Every single bit of feedback (critical and complementary), every suggestion, every point of contention is brought up and discussed with real humans so that we can do something with that information.
4. ⏳ **Respect peoples time**: Every e-mail I send asking for feedback always gives people the chance to reply with “1”, “2”, or “3” (which stand for “good”, “bad”, “Im too busy at the moment”). Id love a considered and detailed response from every customer, but Ill settle for more data overall, if it means sacrificing a bit of depth. Trust me, people love telling you what could be improved, but rarely care to gush about your software to you. 4. ⏳ **Respect people's time**: Every e-mail I send asking for feedback always gives people the chance to reply with "1", "2", or "3" (which stand for "good", "bad", "I'm too busy at the moment"). I'd love a considered and detailed response from every customer, but I'll settle for more data overall, if it means sacrificing a bit of depth. Trust me, people love telling you what could be improved, but rarely care to gush about your software to you.

View file

@ -9,26 +9,26 @@ tags:
- weekly - weekly
--- ---
Im going to stop writing my “things I learned” blog posts. They dont serve me in the way that they used to. As [I wrote recently](/blog/2021-04-27-excommunicate-your-ideas): kill your ideas and side projects, gladly and without delay. I'm going to stop writing my "things I learned" blog posts. They don't serve me in the way that they used to. As [I wrote recently](/blog/2021-04-27-excommunicate-your-ideas): kill your ideas and side projects, gladly and without delay.
Death is more of a transition, though. The _things I learned this week_ post is becoming simply \_The Weekly. Death is more of a transition, though. The _things I learned this week_ post is becoming simply \_The Weekly.
Im not sure what Im going to use it to write about, Im going to take a few weeks to try some new formats out. Starting next week. This week I had to kill an old(-ish) friend. I'm not sure what I'm going to use it to write about, I'm going to take a few weeks to try some new formats out. Starting next week. This week I had to kill an old(-ish) friend.
Thirty seven weeks ago (in August of 2020) I started writing a weekly blog post with a collection of random tidbits I had learned that week. Id also put music recommendations and any cool articles I had come across. It was a great way for me to justify the time I spent on random corners of the internet, and share my love for the world. Theres just so much cool stuff going on. Bees cook their enemies, authors write seminal science fiction books over a summer in an Italian villa with other famous poets, some dudes stop millions of pounds worth of books from Gatwick airport. Thirty seven weeks ago (in August of 2020) I started writing a weekly blog post with a collection of random tidbits I had learned that week. I'd also put music recommendations and any cool articles I had come across. It was a great way for me to justify the time I spent on random corners of the internet, and share my love for the world. There's just so much cool stuff going on. Bees cook their enemies, authors write seminal science fiction books over a summer in an Italian villa with other famous poets, some dudes stop millions of pounds worth of books from Gatwick airport.
But I dont browse the internet as much anymore. If you keep looking at your screen the algorithms will keep serving you up content and it felt a) distracting, and b) like you would never reach the end of it. The algorithms are much less inclined to serve you up random historical facts, and much more inclined to show you snappy videos and hot takes. This is the problem with advertiser-driven models of business. But I digress. But I don't browse the internet as much anymore. If you keep looking at your screen the algorithms will keep serving you up content and it felt a) distracting, and b) like you would never reach the end of it. The algorithms are much less inclined to serve you up random historical facts, and much more inclined to show you snappy videos and hot takes. This is the problem with advertiser-driven models of business. But I digress.
I hate homework, and browsing the internet, fighting against the gain of _The Feed_ , started to feel like homework. The knack to a healthy side project is tricking your brain into thinking that its not homework (it definitely is though). I hate homework, and browsing the internet, fighting against the gain of _The Feed_ , started to feel like homework. The knack to a healthy side project is tricking your brain into thinking that it's not homework (it definitely is though).
So I was doing something I didnt enjoy or want to do because I felt I had to. Thats disingenuous. I dont want to be disingenuous and I want to spent my time on projects that fulfil me (even if I never do ship them). So I was doing something I didn't enjoy or want to do because I felt I had to. That's disingenuous. I don't want to be disingenuous and I want to spent my time on projects that fulfil me (even if I never do ship them).
**What now?** I want to keep doing weekly posts. I get a lot from it. For the past two weeks Ive put out a post nearly every 2-3 days. I obviously dont need the impetuous to write this week. But some weeks I do. As much as I bemoan “it feels like homework”, sometimes we need that homework. Delayed gratification and all that. **What now?** I want to keep doing weekly posts. I get a lot from it. For the past two weeks I've put out a post nearly every 2-3 days. I obviously don't need the impetuous to write this week. But some weeks I do. As much as I bemoan "it feels like homework", sometimes we need that homework. Delayed gratification and all that.
So Im going to continue writing weekly, and call them _The Weekly_. Ive got a few ideas about the kinds of thing Id like to write about, most entirely in the realm of non-fiction, but still distant enough from my day job that Im not just a software engineer all day every day. But hopefully something with a little more overlap to other areas in my life. Something where the algorithms of content can keep their tentacles away from. So I'm going to continue writing weekly, and call them _The Weekly_. I've got a few ideas about the kinds of thing I'd like to write about, most entirely in the realm of non-fiction, but still distant enough from my day job that I'm not just a software engineer all day every day. But hopefully something with a little more overlap to other areas in my life. Something where the algorithms of content can keep their tentacles away from.
Im uncertain if I would like to write timely or evergreen content. I see the benefit in both. I have written both. Lets see. I'm uncertain if I would like to write timely or evergreen content. I see the benefit in both. I have written both. Let's see.
This _is_ the The Weekly #39 (or #1 depending on how you count). Its taken me a few days to decide this was the best idea, and I dont much fancy trying to whip up something entirely new in the next two days. Accept this apology or dont. This _is_ the The Weekly #39 (or #1 depending on how you count). It's taken me a few days to decide this was the best idea, and I don't much fancy trying to whip up something entirely new in the next two days. Accept this apology or don't.
**You should write** If you are reading this dont write anything but think you might like to, or would simply like to write more, do it. Weekly. First thing on Saturday morning or last thing on Friday, pull up a chair to your kitchen counter, pour yourself a mug of something hot or a glass of something fun, and start writing. No ones going to read it anyway. **You should write** If you are reading this don't write anything but think you might like to, or would simply like to write more, do it. Weekly. First thing on Saturday morning or last thing on Friday, pull up a chair to your kitchen counter, pour yourself a mug of something hot or a glass of something fun, and start writing. No one's going to read it anyway.

View file

@ -9,9 +9,9 @@ tags:
- weekly - weekly
--- ---
Okay lets learn us how over the past 3000 years garlic has been espoused by healers and spiritual leaders to ward off disease and evil. Itll take you down a rabbit hole of medical advice, social segregation, and spiritual prohibition. Okay let's learn us how over the past 3000 years garlic has been espoused by healers and spiritual leaders to ward off disease and evil. It'll take you down a rabbit hole of medical advice, social segregation, and spiritual prohibition.
Garlic (_Allium Sativum_, of the*Allium* genus) has set its roots deep in the human story. And lets get one thing straight: garlic is bloody great. Its scientifically categorised in a group of foods called “please dont take these away from me”. Smash it, chop it, then fry it. Or top-and-tail the bulb and put it in camembert. Pop whole cloves in with your salmon, soy sauce, and lemons. Its versatile. Tell me youre not drooling a little bit, you liar. Garlic (_Allium Sativum_, of the*Allium* genus) has set its roots deep in the human story. And let's get one thing straight: garlic is bloody great. It's scientifically categorised in a group of foods called “please don't take these away from me". Smash it, chop it, then fry it. Or top-and-tail the bulb and put it in camembert. Pop whole cloves in with your salmon, soy sauce, and lemons. It's versatile. Tell me you're not drooling a little bit, you liar.
## The Ancients ## The Ancients
@ -19,33 +19,33 @@ Records of our obsession with this tiny _Allium_ starts some three thousand year
### The Egyptians ### The Egyptians
Heres what we know about Ancient Egypts relationship with garlic: i) It made up a massive part of the lower class (i.e. slaves) diet, ii) they recognised it medically, iii) Tutankhamen was buried with some. Here's what we know about Ancient Egypt's relationship with garlic: i) It made up a massive part of the lower class' (i.e. slaves') diet, ii) they recognised it medically, iii) Tutankhamen was buried with some.
The Egyptians knew it was an excellent nutritional supplement. It went alongside some probably very bland (but calorific) grains. Porridge and gruel with a side of garlic. Humans will find joy and love near anywhere, but Im sure its a little harder to find when its 30+ degrees, youre building a pyramid, and everyone else around you smells almost exactly like theyve not bathed for well over a month, and have only eaten porridge and garlic. The Egyptians knew it was an excellent nutritional supplement. It went alongside some probably very bland (but calorific) grains. Porridge and gruel with a side of garlic. Humans will find joy and love near anywhere, but I'm sure it's a little harder to find when it's 30+ degrees, you're building a pyramid, and everyone else around you smells almost exactly like they've not bathed for well over a month, and have only eaten porridge and garlic.
This wasnt just random guesswork from the Egyptians to keep their slaves alive longer. The Ebers Papyrus is one of very few surviving full-length (about twenty metres all-in, not a joke) hieratic documents. Its a medical treatise largely about herbs, dating from some 1550 BC. It recommends garlic as a treatment for abnormal growths. As a fun aside, it also tells us that the Egyptians recognised the heart at the centre of a super important circulatory system. This wasn't just random guesswork from the Egyptians to keep their slaves alive longer. The Ebers Papyrus is one of very few surviving full-length (about twenty metres all-in, not a joke) hieratic documents. It's a medical treatise largely about herbs, dating from some 1550 BC. It recommends garlic as a treatment for abnormal growths. As a fun aside, it also tells us that the Egyptians recognised the heart at the centre of a super important circulatory system.
But if garlic was a to medical and nutritional supplement, its odd that a couple of bulbs ere found in Tutankhamens tomb. It would be like burying the queen with some chia seeds. Of course, its always possible that it was left there by a careless labourer on their lunch break, but it could also have been so that the emperor would have something to keep him going in the afterlife. Or it could have been that he just really liked it (my personal favourite theory). But if garlic was a to medical and nutritional supplement, it's odd that a couple of bulbs ere found in Tutankhamen's tomb. It would be like burying the queen with some chia seeds. Of course, it's always possible that it was left there by a careless labourer on their lunch break, but it could also have been so that the emperor would have something to keep him going in the afterlife. Or it could have been that he just really liked it (my personal favourite theory).
### Medieval Europe ### Medieval Europe
Some two thousand years later, medieval Europe saw garlic as a nutritional or medical plants. It was given to relieve constipation and prevent heat-stroke. Just like the Ancient Egyptians, it was consumed by manual labourers to stave off heat stroke. Some two thousand years later, medieval Europe saw garlic as a nutritional or medical plants. It was given to relieve constipation and prevent heat-stroke. Just like the Ancient Egyptians, it was consumed by manual labourers to stave off heat stroke.
Medieval healers werent messing about: they recognised its medical properties and were bullish on eating it raw. Specifically this advice comes from the writings of Abbess Hildegard of Bingen (1098-1179), who was canonised in 2012. Hildegard was a polymath and advocate for scientific observation and method _way_ before it was cool for anybody (especially a woman) to do those things. Medieval healers weren't messing about: they recognised its medical properties and were bullish on eating it raw. Specifically this advice comes from the writings of Abbess Hildegard of Bingen (1098-1179), who was canonised in 2012. Hildegard was a polymath and advocate for scientific observation and method _way_ before it was cool for anybody (especially a woman) to do those things.
To her, our physical and spiritual selves were natural. In general, Hildegard sounds cool: she had prophetic visions of the end-of-days and wrote poetry and composed music. She also left behind medical writings (insofar as medical writings had come in the twelfth century). In these, much as in her spiritual writings, she oriented her attitudes of what was good in terms of _viriditas_, a Latin word meaning “greenness”, as in lushness and growth. Though she didnt create the term, or really use it consistently, Hildegard saw a lot to be admired and emulated in nature. To her, our physical and spiritual selves were natural. In general, Hildegard sounds cool: she had prophetic visions of the end-of-days and wrote poetry and composed music. She also left behind medical writings (insofar as medical writings had come in the twelfth century). In these, much as in her spiritual writings, she oriented her attitudes of what was good in terms of _viriditas_, a Latin word meaning “greenness", as in lushness and growth. Though she didn't create the term, or really use it consistently, Hildegard saw a lot to be admired and emulated in nature.
To medieval doctors, garlic was “hot food”, to be consumed during winter. I dont mean hot as in heated, I mean hot as in “this food will affect your heat humours”. Medieval science understood our body in terms of humours (hot/cold, wet/dry, sweet/bitter). Hildegard recommended we consume garlic in moderation, lest it make our blood too hot. To medieval doctors, garlic was “hot food", to be consumed during winter. I don't mean hot as in heated, I mean hot as in “this food will affect your heat humours". Medieval science understood our body in terms of humours (hot/cold, wet/dry, sweet/bitter). Hildegard recommended we consume garlic in moderation, lest it make our blood too hot.
### Judaism ### Judaism
This idea of garlic as a hot food isnt unique to Europe. It spread to the middle-east, back to Egypt. The _Talmud_, the central text of Rabbinic Judaism, refers to Jews who celebrate Shabbat (Sabbath) as “Garlic Eaters. Despite this culturally-identifying level of garlic love, not all Jewish figures advocated for it. This idea of garlic as a hot food isn't unique to Europe. It spread to the middle-east, back to Egypt. The _Talmud_, the central text of Rabbinic Judaism, refers to Jews who celebrate Shabbat (Sabbath) as “Garlic Eaters". Despite this culturally-identifying level of garlic love, not all Jewish figures advocated for it.
Maimonides (1138-1204) was a Sephardic Jewish philosopher who omitted all favourable mentions of garlic from his texts - advising minimal consumption, especially during the summer months. Maimonides (1138-1204) was a Sephardic Jewish philosopher who omitted all favourable mentions of garlic from his texts - advising minimal consumption, especially during the summer months.
## Garlic is a spiritual force ## Garlic is a spiritual force
Garlic wards off evil. Although weve moved on from understanding garlic as a “hot food”, in many places garlic is seen as a ward against malign spirits. Garlic wards off evil. Although we've moved on from understanding garlic as a “hot food", in many places garlic is seen as a ward against malign spirits.
It goes without saying that garlic can ward off a vampires. We use to hand wreathes of it on our house and over doorways to ward off the evil eye. Allegedly King Henry IV was baptised in garlic water. It goes without saying that garlic can ward off a vampires. We use to hand wreathes of it on our house and over doorways to ward off the evil eye. Allegedly King Henry IV was baptised in garlic water.
@ -53,7 +53,7 @@ The Ancient Greek goddess Hectate (goddess of crossroads, night, magic, and witc
In certain religions (Jainism, Brahman Hinduism, Buddhism) the consumption of garlic is prohibited. Jains believe its harvesting is too harmful for the plants, but other eastern religions see it as too stimulating, and to interfere with our spiritual wellbeing. In certain religions (Jainism, Brahman Hinduism, Buddhism) the consumption of garlic is prohibited. Jains believe its harvesting is too harmful for the plants, but other eastern religions see it as too stimulating, and to interfere with our spiritual wellbeing.
I dont think there are many other plants so beloved and feared across the world. To be seen as associated with witchcraft and night, and as worth burying alongside your beloved emperor king. Garlic has touched the collective human story, and its cool that so much history lives in something so commonplace I don't think there are many other plants so beloved and feared across the world. To be seen as associated with witchcraft and night, and as worth burying alongside your beloved emperor king. Garlic has touched the collective human story, and it's cool that so much history lives in something so commonplace
## Bibliography ## Bibliography

View file

@ -9,21 +9,21 @@ tags:
- weekly - weekly
--- ---
The Weekly is a 1000-word-or-less essay on something Ive been thinking this week. Lets talk about how productivity is (basically) a scam and how daily and weekly rituals are the backbone of any sane person's productivity. The Weekly is a 1000-word-or-less essay on something I've been thinking this week. Let's talk about how productivity is (basically) a scam and how daily and weekly rituals are the backbone of any sane person's productivity.
I once had the goal to move to Paris. I didnt achieve it (there was a pandemic). I had a goal to learn Italian (laziness). Weve all got visions of our future where were cleverer, skinnier, more intelligent, or in my case simply the same person but somewhere else. I once had the goal to move to Paris. I didn't achieve it (there was a pandemic). I had a goal to learn Italian (laziness). We've all got visions of our future where we're cleverer, skinnier, more intelligent, or in my case simply the same person but somewhere else.
But we dont _do_ visions. We reach them. But actually we dont reach them because the [Hedonic Treadmill](https://en.wikipedia.org/wiki/Hedonic_treadmill) keeps us all both in motion and stationary at the same time. But we don't _do_ visions. We reach them. But actually we don't reach them because the [Hedonic Treadmill](https://en.wikipedia.org/wiki/Hedonic_treadmill) keeps us all both in motion and stationary at the same time.
Im going to put the tinfoil hat on properly in about 500 words, but I genuinely dont think productivity people want us to be productive, and “productivity” isnt a thing. Its a thing only because businesses and organisations need way to quantify the impact theyre having. I'm going to put the tinfoil hat on properly in about 500 words, but I genuinely don't think productivity people want us to be productive, and "productivity" isn't a thing. It's a thing only because businesses and organisations need way to quantify the impact they're having.
You are not a business. You are an individual. You do not have to justify yourself economically to anyone. You are whole, you are complete, you are enough. You are not a business. You are an individual. You do not have to justify yourself economically to anyone. You are whole, you are complete, you are enough.
But we all want to be just a little bit…_more_. But we all want to be just a little bit…_more_.
The secret to doing that little bit extra is in ritual. Every day youve got to wake up and do the hard work of redefining what “being productive” looks like. One day it will be writing a eulogy for a family member, the next it might be six hours of visual design work, or a board meeting. Can you compare these things? Maybe, but what a waste of mental effort you could have spent _doing things you actually wanted to do_. The secret to doing that little bit extra is in ritual. Every day you've got to wake up and do the hard work of redefining what "being productive" looks like. One day it will be writing a eulogy for a family member, the next it might be six hours of visual design work, or a board meeting. Can you compare these things? Maybe, but what a waste of mental effort you could have spent _doing things you actually wanted to do_.
Im going to share what that actually looks like. I'm going to share what that actually looks like.
## My ritual ## My ritual
@ -31,31 +31,31 @@ There are two ways I store my productivity system: in my physical notebook ([the
I use these to do two things: I use these to do two things:
1. **Weekly Note** — Every Sunday I dedicate a double-spread on my physical notebook to a list of things I want to do that week. Theyre grouped roughly by work (ship feature x), personal (2 x Runs), side-project (refactor below-the-fold section of landing page). 1. **Weekly Note** — Every Sunday I dedicate a double-spread on my physical notebook to a list of things I want to do that week. They're grouped roughly by work (ship feature x'), personal (2 x Runs'), side-project (refactor below-the-fold section of landing page').
2. **Daily Notes** — Every day I have a double spread in my notebook and a daily file in Obsidian. One side of my paper has a list of high-level tasks (go for run), and the other has a list of things I might have thought about (luck is about increasing your surface area). The digital daily note is infinitely editable. I use it as a scratch pad for writings, or sub-tasks, or links to things Ive done that day. 2. **Daily Notes** — Every day I have a double spread in my notebook and a daily file in Obsidian. One side of my paper has a list of high-level tasks (go for run'), and the other has a list of things I might have thought about (luck is about increasing your surface area'). The digital daily note is infinitely editable. I use it as a scratch pad for writings, or sub-tasks, or links to things I've done that day.
Every week, before I create the next-weekly note, I review my previous week. I look at what I did during the days, I look at what I wanted to get done, and I index things: thoughts that came up, projects which might be important for long-term use. Every week, before I create the next-weekly note, I review my previous week. I look at what I did during the days, I look at what I wanted to get done, and I index things: thoughts that came up, projects which might be important for long-term use.
The entire process is vague and not-specific. But if I go into any more detail its not going to be useful to literally anyone else. How many other people are working in a small laundry startup, building language-learning tools, and taking nerdy notes on a small subset of podcasts because one day maybe something will stick and Ill be able to sound insightful in a conversation. There are none. The entire process is vague and not-specific. But if I go into any more detail it's not going to be useful to literally anyone else. How many other people are working in a small laundry startup, building language-learning tools, and taking nerdy notes on a small subset of podcasts because one day maybe something will stick and I'll be able to sound insightful in a conversation. There are none.
## /Puts on the tinfoil hat/ ## /Puts on the tinfoil hat/
Despite not making it to an apartment in Paris (yet), I like to think that I am a productive person. I got a PhD and once knew a lot of French. A lot of people would like to think theyre productive. Globally, the [personal development market is valued at around \$38b](https://www.grandviewresearch.com/industry-analysis/personal-development-market). Theres a lot of money to be made by helping people be more productive. Despite not making it to an apartment in Paris (yet), I like to think that I am a productive person. I got a PhD and once knew a lot of French. A lot of people would like to think they're productive. Globally, the [personal development market is valued at around \$38b](https://www.grandviewresearch.com/industry-analysis/personal-development-market). There's a lot of money to be made by helping people be more productive.
A pessimist would say theres a lot of money in making people feel unproductive, and that you can make them productive. A pessimist would say there's a lot of money in making people feel unproductive, and that you can make them productive.
People will try and sell you a framework, app, or system that will solve all your personal productivity problems. For a long time I was very committed to time-chunking, task managers, and efficient email. I dont religiously adhere to these anymore. People will try and sell you a framework, app, or system that will solve all your personal productivity problems. For a long time I was very committed to time-chunking, task managers, and efficient email. I don't religiously adhere to these anymore.
Or worse, there are the Vaynerchuck-esque “hacks” which promise, as [Pilta Clark writes in the FT](https://www.ft.com/content/d4e5d722-d6d3-4cca-bc89-4e596821295f) puts it, “to transform useless, Solitaire-addicted sloths into hard-charging models of efficiency”. Or worse, there are the Vaynerchuck-esque "hacks" which promise, as [Pilta Clark writes in the FT](https://www.ft.com/content/d4e5d722-d6d3-4cca-bc89-4e596821295f) puts it, "to transform useless, Solitaire-addicted sloths into hard-charging models of efficiency".
Learning the click-baity _14 Must Know Tricks For Productivity From A Wall Street Manager_ isnt going to help you. Learning the click-baity _14 Must Know Tricks For Productivity From A Wall Street Manager_ isn't going to help you.
Thats because knowledge isnt the problem. We dont have a knowledge deficit. We have abundance. An overwhelming abundance, things we want to do, or should do, or feel like we should want to do. If only we had the time to achieve them. That's because knowledge isn't the problem. We don't have a knowledge deficit. We have abundance. An overwhelming abundance, things we want to do, or should do, or feel like we should want to do. If only we had the time to achieve them.
When theres \$39b dollars at stake, and you want to keep it there, there are two things you can do: When there's \$39b dollars at stake, and you want to keep it there, there are two things you can do:
1. **Keep everyone feeling unproductive** — make everyone feel like theyre underperforming and need to keep up. Tell them they are unproductive and that your book or consultation or software are the only way to change that. 1. **Keep everyone feeling unproductive** — make everyone feel like they're underperforming and need to keep up. Tell them they are unproductive and that your book or consultation or software are the only way to change that.
2. **Keep giving people new goals** — as soon as youve achieved one goal, move immediately to the next. Or why even achieve it, just drop it and move on. 2. **Keep giving people new goals** — as soon as you've achieved one goal, move immediately to the next. Or why even achieve it, just drop it and move on.
Most worthwhile goals require sustained effort. Fat comes back, muscles decay, French words _disparaissent_ , and your fingers will forget a G-minor scale very quickly. Most worthwhile goals require sustained effort. Fat comes back, muscles decay, French words _disparaissent_ , and your fingers will forget a G-minor scale very quickly.

View file

@ -9,26 +9,26 @@ tags:
- weekly - weekly
--- ---
_The Weekly_ is a weekly essay on something Ive been thinking about in the last seven days. Theyre less than a thousand words long. This week I want to talk about the metaphors we use when we talk about designing for the web. _The Weekly_ is a weekly essay on something I've been thinking about in the last seven days. They're less than a thousand words long. This week I want to talk about the metaphors we use when we talk about designing for the web.
I read two (fantastic) pieces on the web this week: I read two (fantastic) pieces on the web this week:
1. [What even is a website anyway?](https://manuelmoreale.com/thoughts/what-even-is-a-website-anyway) by Manuel Moreale, who cited, 1. [What even is a website anyway?](https://manuelmoreale.com/thoughts/what-even-is-a-website-anyway) by Manuel Moreale, who cited,
2. [Brutalist Web Design](https://cmhb.de/brutalist-web-design) by Carl Barenbrug 2. [Brutalist Web Design](https://cmhb.de/brutalist-web-design) by Carl Barenbrug
Sometimes I have no time for Medium-style self proclaimed “think pieces” about the web and technology. Theyll expound self-indulgently on non-actionable points, while the rest of us get on with the mundane tasks of building things. This is a criticism I throw un-ironically from the glass house of my personal website. Sometimes I have no time for Medium-style self proclaimed "think pieces" about the web and technology. They'll expound self-indulgently on non-actionable points, while the rest of us get on with the mundane tasks of building things. This is a criticism I throw un-ironically from the glass house of my personal website.
The above pieces are good. Very good, actually. They remind you it doesnt have to be like this. We dont have to design and build websites and web apps against a feature list that never stands still. That were building for _our_ audience, not the public. The above pieces are good. Very good, actually. They remind you it doesn't have to be like this. We don't have to design and build websites and web apps against a feature list that never stands still. That we're building for _our_ audience, not the public.
When I started web development, I internally compared what I was doing to Googles work. Now its Stripes (their designers are ~ artists ~ though) and a milieu of other web apps. Every user, we tell ourselves, is expecting an experience which rivals AirBNB, and Reddit, and Etsy. Even when they land on our dinky little personal site. When I started web development, I internally compared what I was doing to Google's work. Now it's Stripe's (their designers are ~ artists ~ though) and a milieu of other web apps. Every user, we tell ourselves, is expecting an experience which rivals AirBNB, and Reddit, and Etsy. Even when they land on our dinky little personal site.
I dont think they are. I think we, the people who design and build things on the internet, are. Not every blog needs a load-balanced Elastic Search instance against it. Heck, not every website needs Card or a Menu component. I don't think they are. I think we, the people who design and build things on the internet, are. Not every blog needs a load-balanced Elastic Search instance against it. Heck, not every website needs Card or a Menu component.
You can build a feature complete website with maybe a dozen html tags and a single CSS file. Does it even need JavaScript? Itd be heckin fast and SEO optimised to boot. You can build a feature complete website with maybe a dozen html tags and a single CSS file. Does it even need JavaScript? It'd be heckin' fast and SEO optimised to boot.
It doesnt matter what other people are doing. Your website probably wont turn into the next Reddit or Tumblr. A website can be feature complete. A feature list can _not_ grow. It doesn't matter what other people are doing. Your website probably won't turn into the next Reddit or Tumblr. A website can be feature complete. A feature list can _not_ grow.
Barenbrugs piece (mentioned at the top) argues that we can see websites like Brutalist Architecture: created and inhabited by humans… Barenbrug's piece (mentioned at the top) argues that we can see websites like Brutalist Architecture: created and inhabited by humans…
> Brutalist architecture not only reduces construction to its basic materials, but it also finds beauty in that simplicity. > Brutalist architecture not only reduces construction to its basic materials, but it also finds beauty in that simplicity.
@ -42,13 +42,13 @@ I heard about [this quote](https://www.goodreads.com/quotes/749309-i-think-there
> I think there are two types of writers, the architects and the gardeners. The architects plan everything ahead of time, like an architect building a house. They know how many rooms are going to be in the house, what kind of roof they're going to have, where the wires are going to run, what kind of plumbing there's going to be. They have the whole thing designed and blueprinted out before they even nail the first board up. The gardeners dig a hole, drop in a seed and water it. They kind of know what seed it is, they know if planted a fantasy seed or mystery seed or whatever. But as the plant comes up and they water it, they don't know how many branches it's going to have, they find out as it grows. > I think there are two types of writers, the architects and the gardeners. The architects plan everything ahead of time, like an architect building a house. They know how many rooms are going to be in the house, what kind of roof they're going to have, where the wires are going to run, what kind of plumbing there's going to be. They have the whole thing designed and blueprinted out before they even nail the first board up. The gardeners dig a hole, drop in a seed and water it. They kind of know what seed it is, they know if planted a fantasy seed or mystery seed or whatever. But as the plant comes up and they water it, they don't know how many branches it's going to have, they find out as it grows.
I like this metaphor because it is chaotic and unpredictable. Its non-committed and it changes. I think these are good qualities to have in technology, and life. I like this metaphor because it is chaotic and unpredictable. It's non-committed and it changes. I think these are good qualities to have in technology, and life.
Gardening acknowledges the life of a project is out of your control. Something you can guide, and give suggestions to, but eventually something that will thrive best when given good conditions and space. Gardening acknowledges the life of a project is out of your control. Something you can guide, and give suggestions to, but eventually something that will thrive best when given good conditions and space.
## The Video Game Metaphor ## The Video Game Metaphor
I cant remember where I heard this first. I found some [good](https://evilmartians.com/chronicles/level-up-for-ux-design-lessons-from-videogames) [articles](https://www.nngroup.com/articles/usability-heuristics-applied-video-games/)[on](https://www.invisionapp.com/inside-design/the-ux-lessons-i-learned-from-video-games/) it, though. I can't remember where I heard this first. I found some [good](https://evilmartians.com/chronicles/level-up-for-ux-design-lessons-from-videogames) [articles](https://www.nngroup.com/articles/usability-heuristics-applied-video-games/)[on](https://www.invisionapp.com/inside-design/the-ux-lessons-i-learned-from-video-games/) it, though.
Video games are expertly and intentionally designed. Everyone who designs things can learn something from them. I like the analogy for two main lessons: Video games are expertly and intentionally designed. Everyone who designs things can learn something from them. I like the analogy for two main lessons:
@ -59,12 +59,12 @@ Video games are expertly and intentionally designed. Everyone who designs things
Nobody goes to QuickBooks because they just want poke around. People go to QuickBooks to make sure their receipts, invoices, and payroll are up to date then they _get the hell out of there_. Nobody opens the inventory in Diablo II to browse, you open it to check the stats on your fire staff and equip or sell it. Nobody goes to QuickBooks because they just want poke around. People go to QuickBooks to make sure their receipts, invoices, and payroll are up to date then they _get the hell out of there_. Nobody opens the inventory in Diablo II to browse, you open it to check the stats on your fire staff and equip or sell it.
I work at a laundry company. I agonise over creating the best user experience and interface elements I can. People dont go to our website because they want to look at a list of things they _could_ get cleaned. They go there to get their things cleaned then get out. People dont want to notice my new Receipt component design. I work at a laundry company. I agonise over creating the best user experience and interface elements I can. People don't go to our website because they want to look at a list of things they _could_ get cleaned. They go there to get their things cleaned then get out. People don't want to notice my new Receipt component design.
**Reduce friction.** Video games are challenging. It makes them rewarding. Hollow Knight is maybe the most frustrated I have felt in 2021 so far and _we are in a pandemic_. Hades is so frustrating I could cry at times. **Reduce friction.** Video games are challenging. It makes them rewarding. Hollow Knight is maybe the most frustrated I have felt in 2021 so far and _we are in a pandemic_. Hades is so frustrating I could cry at times.
If QuickBooks goal was to remove all stress and difficulty from a users life, theyd just say “pay us \$1/mo and well do all your accounting and filing and youll never have to worry about it”. The business fails but the customer succeeds. If QuickBooks' goal was to remove all stress and difficulty from a user's life, they'd just say "pay us \$1/mo and we'll do all your accounting and filing and you'll never have to worry about it". The business fails but the customer succeeds.
Your website or app is one thing your user will do today. Then, if youre lucky, theyll forget about you completely, and move on. Theyre okay with the friction of the task at large. Taxes are annoying, bank statements are annoying. But you cant solve that unless you become a government or bank. Your website or app is one thing your user will do today. Then, if you're lucky, they'll forget about you completely, and move on. They're okay with the friction of the task at large. Taxes are annoying, bank statements are annoying. But you can't solve that unless you become a government or bank.
Dont solve the puzzle, be a good puzzle piece. Don't solve the puzzle, be a good puzzle piece.

View file

@ -10,21 +10,21 @@ tags:
- weekly - weekly
--- ---
The Weekly is a weekly essay where I write about something Ive been thinking about in the last seven days. Theyre under 1000 words, and this week I want to talk about vision and problems when youre building a new product. The Weekly is a weekly essay where I write about something I've been thinking about in the last seven days. They're under 1000 words, and this week I want to talk about vision and problems when you're building a new product.
Im building [the lexicon](https://www.thelexicon.app), where I am (un-ironically) trying to build the worlds most useful language learning resources. I like Duo Lingo, but I dont think it helps you much in the real world ™️. Its born out of my desire (and previous moderate success) to be come proficient in French. The pandemic slashed my French proficiency, though. I'm building [the lexicon](https://www.thelexicon.app), where I am (un-ironically) trying to build the world's most useful language learning resources. I like Duo Lingo, but I don't think it helps you much in the real world ™️. It's born out of my desire (and previous moderate success) to be come proficient in French. The pandemic slashed my French proficiency, though.
Over the past few weeks Ive been thinking more about this product idea. I think theres enough scope in the vision of “best language learning resources in the world” that I can meaningfully do something new. I think I know enough about computers and learning to do something impactful. Over the past few weeks I've been thinking more about this product idea. I think there's enough scope in the vision of "best language learning resources in the world" that I can meaningfully do something new. I think I know enough about computers and learning to do something impactful.
The first thing I did? Set up a landing page with a sign-up form for a mailing list, and released two (free) sets of flash-cards with the most common words. If you want them, you know where to find them. The first thing I did? Set up a landing page with a sign-up form for a mailing list, and released two (free) sets of flash-cards with the most common words. If you want them, you know where to find them.
None of these things (which took real time and energy) solve any of the core problems that Im trying to solve, though. Ive got a vision for the company, and these things move me generally in the direction of it. I cant sell anything if people cant find where to buy it. None of these things (which took real time and energy) solve any of the core problems that I'm trying to solve, though. I've got a vision for the company, and these things move me generally in the direction of it. I can't sell anything if people can't find where to buy it.
But I dont think I solved the high value problems. But I don't think I solved the high value problems.
In his essay _how to get startup ideas_ Paul Graham says: In his essay _how to get startup ideas_ Paul Graham says:
> You should only work on problems that exist. And yet by far the most common mistake startups make is to solve problems no one has… The verb you want to be using with respect to startup ideas is not "think up" but "notice… The most successful startups almost all begin this way. > You should only work on problems that exist. And yet by far the most common mistake startups make is to solve problems no one has… The verb you want to be using with respect to startup ideas is not "think up" but "notice"… The most successful startups almost all begin this way.
I created this vision because I noticed a problem: I want to learn a language in an efficient way, that gets me to real-world use quickly. Having a landing page does nothing to solve that particular problem. I created this vision because I noticed a problem: I want to learn a language in an efficient way, that gets me to real-world use quickly. Having a landing page does nothing to solve that particular problem.
@ -32,12 +32,12 @@ What Graham says is (probably) true, but I also think they miss out on another d
## Getting Specific: Flashcards ## Getting Specific: Flashcards
Lets get specific. Let's get specific.
I produced some flashcards sets. These keeps within the vision, but what problems do flashcards solve? I produced some flashcards sets. These keeps within the vision, but what problems do flashcards solve?
1. Target-language translations of words (_être_ ➡️ “to be”) 1. Target-language translations of words (_être_ ➡️ "to be")
2. They decide what words youre learning 2. They decide what word's you're learning
3. The can be used in [Active Recall](https://en.wikipedia.org/wiki/Active_recall) 3. The can be used in [Active Recall](https://en.wikipedia.org/wiki/Active_recall)
This list, broadly, runs from most generic to most opinionated solutions. This list, broadly, runs from most generic to most opinionated solutions.
@ -46,19 +46,19 @@ This list, broadly, runs from most generic to most opinionated solutions.
Have you just learned _to pour/contribute_, _protest_ (noun), and _vaccine_ ? No. You maybe could have guessed the latter, though. Have you just learned _to pour/contribute_, _protest_ (noun), and _vaccine_ ? No. You maybe could have guessed the latter, though.
To remove the bilingual elements of language-learning flashcards would be an unexpected feature. Maybe replacing them with image/sound [can help](https://link.springer.com/article/10.1007/s11145-018-9906-x) (an auditory component for French ↔️ English translations would be beneficial) but largely, you need the bilingual text. This isnt a high-value problem. To remove the bilingual elements of language-learning flashcards would be an unexpected feature. Maybe replacing them with image/sound [can help](https://link.springer.com/article/10.1007/s11145-018-9906-x) (an auditory component for French ↔️ English translations would be beneficial) but largely, you need the bilingual text. This isn't a high-value problem.
**2. Decide what words**What words should I learn? This is a more interesting problem. Its actually one of the core problems that lead me to think about the lexicon. I dont think we teach useful words to new language-learners. **2. Decide what words**What words should I learn? This is a more interesting problem. It's actually one of the core problems that lead me to think about the lexicon. I don't think we teach useful words to new language-learners.
The problem of “what words do we learn, and in what order” is a problem worth solving. So I used data-backed findings to decide on the most common verbs. This is a higher-value problem. The problem of "what words do we learn, and in what order" is a problem worth solving. So I used data-backed findings to decide on the most common verbs. This is a higher-value problem.
**3. Encourage Active Recall **Active Recall is, almost irrefutably, a core component of any language-learning practice. When you use flashcards, you should see the prompt and guess the answer (actually guess it, like, say it aloud) before viewing the answer. Anything else is passive recall or lying to yourself. **3. Encourage Active Recall **Active Recall is, almost irrefutably, a core component of any language-learning practice. When you use flashcards, you should see the prompt and guess the answer (actually guess it, like, say it aloud) before viewing the answer. Anything else is passive recall or lying to yourself.
Active recall is essential to any effective language learning practice, and I was leaving it as optional. “Here”, I said, “are some flashcards. You know how to use them effectively, right?”. Active recall is essential to any effective language learning practice, and I was leaving it as optional. "Here", I said, "are some flashcards. You know how to use them effectively, right?".
A foolish assumption that was probably false (no one teaches these skills _de facto_ in schools) which essentially let the user determine exactly how effective or useful the language-learning resource was going to be A foolish assumption that was probably false (no one teaches these skills _de facto_ in schools) which essentially let the user determine exactly how effective or useful the language-learning resource was going to be
I had a chance to solve an important and unique problem (how to pair the “right” words with the “right” learning method) and I delivered it in static flashcards. I moved towards the vision without solving the particular problems: actually increasing your French vocabulary. I had a chance to solve an important and unique problem (how to pair the "right" words with the "right" learning method) and I delivered it in static flashcards. I moved towards the vision without solving the particular problems: actually increasing your French vocabulary.
I left the hard work of solving the problem to the customer. I shifted responsibility. I left the hard work of solving the problem to the customer. I shifted responsibility.
@ -66,12 +66,12 @@ I left the hard work of solving the problem to the customer. I shifted responsib
I was guided by a vision, without thinking about the unique and important problems. I was guided by a vision, without thinking about the unique and important problems.
A vision is like a slope. Its easy to know when youre heading up or down hill, and you can conform to a vision by degree: head directly down hill, or go diagonally. A vision is like a slope. It's easy to know when you're heading up or down hill, and you can conform to a vision by degree: head directly down hill, or go diagonally.
If a vision is a slope, a problem is a place. Or a least a region. The further away from the problem you are, the easier it is to head towards it. When you havent started, doing almost anything will get you closer. Setting up a landing page and a mailing list, for example. If a vision is a slope, a problem is a place. Or a least a region. The further away from the problem you are, the easier it is to head towards it. When you haven't started, doing almost anything will get you closer. Setting up a landing page and a mailing list, for example.
But you get a bit closer and youve got to change bearing. You were heading east, but now youve got to head north-east. And then north-north-east. Anything other than that and you start veering away your destination. Maybe youll find a different problem along the way (the infamous _pivot_) or maybe you wont. But you get a bit closer and you've got to change bearing. You were heading east, but now you've got to head north-east. And then north-north-east. Anything other than that and you start veering away your destination. Maybe you'll find a different problem along the way (the infamous _pivot_) or maybe you won't.
A mailing list, a landing page, and some static flashcards are not the worlds most useful language learning resources. Theyre part of the vision but not the product, A mailing list, a landing page, and some static flashcards are not the world's most useful language learning resources. They're part of the vision but not the product,
Set vision, solve problems. Set vision, solve problems.

View file

@ -10,29 +10,29 @@ tags:
- weekly - weekly
--- ---
_The Weekly_ is a series of essays under one thousand words where I write about something Ive been thinking over the last seven days. This week I want to talk about misinformation and conspiracy theories surrounding Covid-19, and why theyre more harmful than previous conspiracy theories. Ive been a little busier than usual this week, so lets get into it _The Weekly_ is a series of essays under one thousand words where I write about something I've been thinking over the last seven days. This week I want to talk about misinformation and conspiracy theories surrounding Covid-19, and why they're more harmful than previous conspiracy theories. I've been a little busier than usual this week, so let's get into it
Alongside the actual pandemic of Covid-19, the World Health Organisation (WHO) has declared an [infodemic](https://www.who.int/health-topics/infodemic#tab=tab_1): the “false or misleading information in digital and physical environments during a disease outbreak”. Alongside the actual pandemic of Covid-19, the World Health Organisation (WHO) has declared an [infodemic](https://www.who.int/health-topics/infodemic#tab=tab_1): the "false or misleading information in digital and physical environments during a disease outbreak".
The consequences of misinformation worsen the effect of a disease on a population (thats us). They can work directly by encouraging less-safe (i.e. less adherence to preventative measures, like wearing a mask or social distancing), as well as specifically dangerous (intentionally attempting to spread the disease) behaviour. The consequences of misinformation worsen the effect of a disease on a population (that's us). They can work directly by encouraging less-safe (i.e. less adherence to preventative measures, like wearing a mask or social distancing), as well as specifically dangerous (intentionally attempting to spread the disease) behaviour.
## Compassion & Sympathy ## Compassion & Sympathy
Before I begin, I also want to add that over the past few weeks I have felt a lot more sympathy for those who believe COVID-19 misinformation. [They are typically associated with](https://www.cambridge.org/core/journals/psychological-medicine/article/coronavirus-conspiracy-suspicions-general-vaccine-attitudes-trust-and-coronavirus-information-source-as-predictors-of-vaccine-hesitancy-among-uk-residents-during-the-covid19-pandemic/FEC34AA0D1972E3A761C784A39D26536) lower education, lower trust in the government, lower income, and lower scientific trust. Before I begin, I also want to add that over the past few weeks I have felt a lot more sympathy for those who believe COVID-19 misinformation. [They are typically associated with](https://www.cambridge.org/core/journals/psychological-medicine/article/coronavirus-conspiracy-suspicions-general-vaccine-attitudes-trust-and-coronavirus-information-source-as-predictors-of-vaccine-hesitancy-among-uk-residents-during-the-covid19-pandemic/FEC34AA0D1972E3A761C784A39D26536) lower education, lower trust in the government, lower income, and lower scientific trust.
[An American study](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8083329/) which looked at adherence to social distancing measures in American citizens found that those who disregarded social distancing were more likely to to have great pseudoscientific beliefs, lower governmental and institutional trust, lower risk perceptions, and [conservative political] affiliation. [An American study](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8083329/) which looked at adherence to social distancing measures in American citizens found that those who disregarded social distancing were more likely to to have great "pseudoscientific beliefs, lower governmental and institutional trust, lower risk perceptions, and [conservative political] affiliation".
I used to think believing the conspiracies was a choice, and now I think its much more a consequence of feeling unheard. Of seeing the world as unfair, and seeking a reason other than ignorance or a bureaucracy-over-people government. I used to think believing the conspiracies was a choice, and now I think it's much more a consequence of feeling unheard. Of seeing the world as unfair, and seeking a reason other than ignorance or a bureaucracy-over-people government.
Believing these conspiracy theories is easier when you dont want the world to be unfair. When you dont want there to be a disease that doesnt threaten you, but does threaten others. So you have to sacrifice something for “nothing” in return . Ill touch on cognitive dissonance later, but I think were retrofitting what were seeing into what we want to believe. Believing these conspiracy theories is easier when you don't want the world to be unfair. When you don't want there to be a disease that doesn't threaten you, but does threaten others. So you have to sacrifice something for "nothing" in return . I'll touch on cognitive dissonance later, but I think we're retrofitting what we're seeing into what we want to believe.
##  Belief in multiple conspiracy theories ##  Belief in multiple conspiracy theories
Im near the end of R. Brothertons [Suspicious minds: why we believe conspiracy theories](https://www.bloomsbury.com/us/suspicious-minds-9781472915641/). In it, they talk about how belief in conspiracy theories are often correlated. If you believe in one, youre likely to believe in another. Even when theyre unrelated. I'm near the end of R. Brotherton's [Suspicious minds: why we believe conspiracy theories](https://www.bloomsbury.com/us/suspicious-minds-9781472915641/). In it, they talk about how belief in conspiracy theories are often correlated. If you believe in one, you're likely to believe in another. Even when they're unrelated.
Previously, this would mean believing that the Kennedy assassination was connected to 9/11. Or that the Freemasons secretly run our governments and plan our wars. But what do you do with that information? Trot it out at parties to a silence nobody feels comfortable filling, or share it among your co-conspirators to nods and disgruntled feelings? Previously, this would mean believing that the Kennedy assassination was connected to 9/11. Or that the Freemasons secretly run our governments and plan our wars. But what do you do with that information? Trot it out at parties to a silence nobody feels comfortable filling, or share it among your co-conspirators to nods and disgruntled feelings?
You might be (probably) wrong, but youre also (probably) not hurting anybody with your beliefs. You might be (probably) wrong, but you're also (probably) not hurting anybody with your beliefs.
The Wikipedia page for [Covid-19 Misinformation](https://en.wikipedia.org/wiki/COVID-19_misinformation) runs several thousand words, and details at least ten broad categories of misinformation. These fall into a few groups: The Wikipedia page for [Covid-19 Misinformation](https://en.wikipedia.org/wiki/COVID-19_misinformation) runs several thousand words, and details at least ten broad categories of misinformation. These fall into a few groups:
@ -44,22 +44,22 @@ These are _massively_ different types of arguments. But they all push behaviour
Separate among the conspiracy theories which have emerged are that COVID-19 was a virus invented as a weapon to control global population, as a trigger to get us to inject microchips into our brains for mind control or to impart our ability to reproduce, and as a way to get us used to wearing face-coverings to make us more obedient citizens. Separate among the conspiracy theories which have emerged are that COVID-19 was a virus invented as a weapon to control global population, as a trigger to get us to inject microchips into our brains for mind control or to impart our ability to reproduce, and as a way to get us used to wearing face-coverings to make us more obedient citizens.
If youve got brain control, you dont need to persuade anyone. If youre trying to control population in a physiological way, why do you need wilfully obedient citizens? If you've got brain control, you don't need to persuade anyone. If you're trying to control population in a physiological way, why do you need wilfully obedient citizens?
Its possible to hold conflicting beliefs in our head. Our brains will shape them until theyre in-accordance with each other. We call that [cognitive dissonance](https://en.wikipedia.org/wiki/Cognitive_dissonance), and it saves us from a lot of distress and time wasted in examining everything we believe and do before we assimilate something new. It's possible to hold conflicting beliefs in our head. Our brains will shape them until they're in-accordance with each other. We call that [cognitive dissonance](https://en.wikipedia.org/wiki/Cognitive_dissonance), and it saves us from a lot of distress and time wasted in examining everything we believe and do before we assimilate something new.
Now, with COVID-19, even disconnected beliefs are pointing peoples actions in a single direction. Belief a maligned global power set against the free will of the people, or corrupt medical researchers, or an evil foreign state all point towards the belief that adherence to public health behaviours should be ignored because COVID-19 is a) not-existent, b) not dangerous, or c) a weapon to control us, and should be ignored. Now, with COVID-19, even disconnected beliefs are pointing people's actions in a single direction. Belief a maligned global power set against the free will of the people, or corrupt medical researchers, or an evil foreign state all point towards the belief that adherence to public health behaviours should be ignored because COVID-19 is a) not-existent, b) not dangerous, or c) a weapon to control us, and should be ignored.
Belief in one conspiracy theory makes you more likely to believe another, even when theyre not related. Even when theyre directly opposing. Belief in one conspiracy theory makes you more likely to believe another, even when they're not related. Even when they're directly opposing.
## Conspiracy theories fill a vacuum ## Conspiracy theories fill a vacuum
We do not know everything about COVID-19. The origin and nature of the virus itself, our governmental and societal response to it. The chance that we, in June of 2021, know everything there is to know about a pandemic which is still happening are very low. We do not know everything. That statement is caution. We do not know everything about COVID-19. The origin and nature of the virus itself, our governmental and societal response to it. The chance that we, in June of 2021, know everything there is to know about a pandemic which is still happening are very low. We do not know everything. That statement is caution.
This need for caution, of not overstepping our boundary or certainty, has left gaps in peoples understanding of the disease. This need for caution, of not overstepping our boundary or certainty, has left gaps in people's understanding of the disease.
A theory with less evidence than the one it opposes shouldnt be able to dislodge one with more explanatory power. But they can. When theyre more appealing or more conforming or more sensible to the people hearing them. A theory with less evidence than the one it opposes shouldn't be able to dislodge one with more explanatory power. But they can. When they're more appealing or more conforming or more sensible to the people hearing them.
Were already susceptible to these beliefs, and we dont have the infrastructure (legislative, technological) to stop them spreading. So theyre spreading. And theyre changing actions. We're already susceptible to these beliefs, and we don't have the infrastructure (legislative, technological) to stop them spreading. So they're spreading. And they're changing actions.
So theyre causing unnecessary deaths. So they're causing unnecessary deaths.

View file

@ -10,25 +10,25 @@ tags:
- product - product
--- ---
Im currently designing and building the lexicon, ambitiously explained as “the most useful language learning resources in the world”. I'm currently designing and building the lexicon, ambitiously explained as "the most useful language learning resources in the world".
The problem is that theres a lot involved in that, you know? Theres theoretical questions like “what does most useful mean?” and “how do humans learn languages”? The problem is that there's a lot involved in that, you know? There's theoretical questions like "what does most useful mean?" and "how do humans learn languages"?
Then theres small problems like “what is the shape of the JSON I send to the client?” and “how do I generate prompts & questions for language learning?”. Then there's small problems like "what is the shape of the JSON I send to the client?" and "how do I generate prompts & questions for language learning?".
Ive been thinking about these problems, in some capacity, for legitimately years. So its no wonder that I come to them with so much gusto. I've been thinking about these problems, in some capacity, for legitimately years. So it's no wonder that I come to them with so much gusto.
A lot of the questions are nebulous. “Best” is subjective, and learning is a spectrum. Proposing theories and ideas is okay, but making something and finding out is even better. A lot of the questions are nebulous. "Best" is subjective, and learning is a spectrum. Proposing theories and ideas is okay, but making something and finding out is even better.
The questions are big, and important to me, and so I dont want an imperfect solution. The tech has to scale, the processes have to be automated, everything has to be _just so_. Im building tools for problems I havent encountered but know I will encounter. Or would encounter, if I just got on with the work. The questions are big, and important to me, and so I don't want an imperfect solution. The tech has to scale, the processes have to be automated, everything has to be _just so_. I'm building tools for problems I haven't encountered but know I will encounter. Or would encounter, if I just got on with the work.
Problem solving is fractal. Every step you propose to get from A to B has a whole subset of steps if you look at it closely. If youre not careful it goes from A -> B, to A1 -> A2, to A1.i -> A1.ii. Problem solving is fractal. Every step you propose to get from A to B has a whole subset of steps if you look at it closely. If you're not careful it goes from A -> B, to A1 -> A2, to A1.i -> A1.ii.
Its like how [the coastline has theoretically infinite length]. It's like how [the coastline has theoretically infinite length].
What Im saying is that this week I challenged myself: no code, just design. Just product problems and questions. No infinite coastlines, no cartography. What I'm saying is that this week I challenged myself: no code, just design. Just product problems and questions. No infinite coastlines, no cartography.
So I made some designs. Theyre down below. This is what happens when I ask the question “what could the future of language education _actually_ look like” and then demand a concrete answer from myself. So I made some designs. They're down below. This is what happens when I ask the question "what could the future of language education _actually_ look like" and then demand a concrete answer from myself.
![the lexicon dashboard](/assets/blog-images/2021-06-13/dashboard.png) ![the lexicon dashboard](/assets/blog-images/2021-06-13/dashboard.png)

View file

@ -6,7 +6,7 @@ slug: "2022-03-13-discover-complexity"
draft: false draft: false
--- ---
Code changes frequently, and good code is able to change easily. That means that code must be both simple for other humans to interpret (so that the code is changed, not duplicated or added on to), and anti-brittle (so that changes dont require rewrites, or re-considerations). Code changes frequently, and good code is able to change easily. That means that code must be both simple for other humans to interpret (so that the code is changed, not duplicated or added on to), and anti-brittle (so that changes don't require rewrites, or re-considerations).
An (understandable) response to this need for change is to predict the need for change by forecasting changes to customer, business, or engineering requirements. An (understandable) response to this need for change is to predict the need for change by forecasting changes to customer, business, or engineering requirements.
@ -16,12 +16,12 @@ Discovered complexity is unearthed in the actual use of the software by the inte
Alternatively, complexity is invented. It does not come from real-world use. It is a guess. It is speculative. Pay attention to solving problems which *could* happen, because it dilutes focus on solving the *actual* problem. Alternatively, complexity is invented. It does not come from real-world use. It is a guess. It is speculative. Pay attention to solving problems which *could* happen, because it dilutes focus on solving the *actual* problem.
Invented complexity takes time and attention away from solving real, demonstrated problems now. It obscures the meaning or focus of the code youre writing, so youll pay another cost when future engineers (inevitable) attempt to understand it. Invented complexity takes time and attention away from solving real, demonstrated problems now. It obscures the meaning or focus of the code you're writing, so you'll pay another cost when future engineers (inevitable) attempt to understand it.
Solving for non-discovered complexity can lead to things like: Solving for non-discovered complexity can lead to things like:
- Adding a lot of flexibility to functions, even though they're only used in one case - Adding a lot of flexibility to functions, even though they're only used in one case
- Creating a lot of indirection in layers of software, even though theres only one actual path in use - Creating a lot of indirection in layers of software, even though there's only one actual path in use
- Naming things with less tangible names to accommodate future siblings, even though youre building an only child. - Naming things with less tangible names to accommodate future siblings, even though you're building an only child.

View file

@ -30,7 +30,7 @@ The final act of _Utopia Avenue_ is as mystifying and bewitching. A feat it shar
The book feels optimistic about humans, and about our ability to create for and inspire one and other. This quality is what draws me endlessly to John Green, who has entirely nothing to do with this book or David Mitchell but who proudly beats the same optimistic tune over a din of (not unreasonable) pessimism. One, perhaps forced and on-the-nose, moment has the aforementioned Jasper (or possibly Mitchell, through Jasper) consider aloud in front of a press conference if music can change the world: The book feels optimistic about humans, and about our ability to create for and inspire one and other. This quality is what draws me endlessly to John Green, who has entirely nothing to do with this book or David Mitchell but who proudly beats the same optimistic tune over a din of (not unreasonable) pessimism. One, perhaps forced and on-the-nose, moment has the aforementioned Jasper (or possibly Mitchell, through Jasper) consider aloud in front of a press conference if music can change the world:
> Which begs a question. “Who or what influences the minds of the people who change the world?” My answer is “Ideas and feelings.” Which begs a question. “Where do ideas and feelings originate?” My answer is, “Others. Ones heart and mind. The press. The arts. Stories. Last, but not least, songs.” Songs. Songs, like dandelion seeds, billowing across space and time. > Which begs a question. "Who or what influences the minds of the people who change the world?" My answer is "Ideas and feelings." Which begs a question. "Where do ideas and feelings originate?" My answer is, "Others. One's heart and mind. The press. The arts. Stories. Last, but not least, songs." Songs. Songs, like dandelion seeds, billowing across space and time.
Despite adoring _Bone Clocks_, I really struggled to get into _Cloud Atlas_ (2004). But _Utopia Avenue_ has reminded me of what I loved so much about Mitchell, and also how many of his books I have not read (six). Leaving a book feeling excited to read the author's existing body of work, despite previously failed attempts, is one of the finest endorsements of a book I can think of. Unfortunately it is a purely quantitative, personal review which isn't so translatable to others, but it is symptomatic. This book delivers worthwhile ideas with an unusually captivating language. Despite adoring _Bone Clocks_, I really struggled to get into _Cloud Atlas_ (2004). But _Utopia Avenue_ has reminded me of what I loved so much about Mitchell, and also how many of his books I have not read (six). Leaving a book feeling excited to read the author's existing body of work, despite previously failed attempts, is one of the finest endorsements of a book I can think of. Unfortunately it is a purely quantitative, personal review which isn't so translatable to others, but it is symptomatic. This book delivers worthwhile ideas with an unusually captivating language.

View file

@ -22,26 +22,26 @@ links:
This is a lovely book where classically fairy tale things happen. Set on the River Thames in Oxford around the turn of the 20th century, it follows individuals and families as a girl is found not-quite-dead in the river. Everybody sees somebody different in this child, they see the lost daughter they wished they could re-find, or the lost sibling who died some thirty years ago. We follow the people of the village as they attempt to care for, claim stewardship over, and make counter-claims about her. This otherworldly, captivating child precipitates the best and the worst parts of our characters and their pasts. This is a lovely book where classically fairy tale things happen. Set on the River Thames in Oxford around the turn of the 20th century, it follows individuals and families as a girl is found not-quite-dead in the river. Everybody sees somebody different in this child, they see the lost daughter they wished they could re-find, or the lost sibling who died some thirty years ago. We follow the people of the village as they attempt to care for, claim stewardship over, and make counter-claims about her. This otherworldly, captivating child precipitates the best and the worst parts of our characters and their pasts.
Ive been describing Setterfields book as “fairytales for grownups” which sounds like a good description to me, but Im also worried its a little dismissive. So please interpret it generously. This book made me feel like stories made me feel when I was younger: something wholly separate from real life. Something that I enjoy living in. I've been describing Setterfield's book as "fairytales for grownups" which sounds like a good description to me, but I'm also worried it's a little dismissive. So please interpret it generously. This book made me feel like stories made me feel when I was younger: something wholly separate from real life. Something that I enjoy living in.
The book opens on a pub somewhere along the Thames, near Oxford, where the local townsfolk gather to tell and hear stories. As beginnings go its only a few steps over “once upon a time” but it works. It sets the tone and the expectation: this is a capital-S _Story_ . And by knowing itself, its medium, and its limits, Setterfield gives us permission to get utterly lost and captivated in it. The book opens on a pub somewhere along the Thames, near Oxford, where the local townsfolk gather to tell and hear stories. As beginnings go it's only a few steps over "once upon a time" but it works. It sets the tone and the expectation: this is a capital-S _Story_ . And by knowing itself, its medium, and its limits, Setterfield gives us permission to get utterly lost and captivated in it.
A difference, though, between this book and an actual fairytale is how it weaves in and out of fantastical elements. You can read it most literally as a piece of historical fiction, or more fantastically as a piece of light urban-fantasy set in the past. A difference, though, between this book and an actual fairytale is how it weaves in and out of fantastical elements. You can read it most literally as a piece of historical fiction, or more fantastically as a piece of light urban-fantasy set in the past.
The core of the story is people: the big cycles of life and death, and the smaller infinite little plots that make up our lives, our families, and our communities. This book never loses focus on the individuals, which reminds me of Ken Folletts Kingsbridge series of novels. At times, the characters seem villainously evil and heroically chivalrous or noble, but archetypes have a place in stories. The core of the story is people: the big cycles of life and death, and the smaller infinite little plots that make up our lives, our families, and our communities. This book never loses focus on the individuals, which reminds me of Ken Follett's Kingsbridge series of novels. At times, the characters seem villainously evil and heroically chivalrous or noble, but archetypes have a place in stories.
Each character seems a little reduced to one trait which dictates everything they do: maternal love, selfish greed, parental guilt, financial gain. Its a story about people, but those people seem a little simplified at times. Each character seems a little reduced to one trait which dictates everything they do: maternal love, selfish greed, parental guilt, financial gain. It's a story about people, but those people seem a little simplified at times.
Still, I love a character-focused book. I love going page-to-page asking how would people like this react in a situation like that? Like a fairytale, its analogous to life: it gives us tools to recognise and understand the actions of people around us, and Setterfield does this well. Still, I love a character-focused book. I love going page-to-page asking how would people like this react in a situation like that? Like a fairytale, it's analogous to life: it gives us tools to recognise and understand the actions of people around us, and Setterfield does this well.
So I mean it in no belittling way when I say that _Once Upon A River_ is a lovely book. So I mean it in no belittling way when I say that _Once Upon A River_ is a lovely book.
It doesnt try to introduce new ideas, cunning literary devices, or poetic prose. Sometimes you need this no-nonsense “imagine these people doing these things” story. It doesn't try to introduce new ideas, cunning literary devices, or poetic prose. Sometimes you need this no-nonsense "imagine these people doing these things" story.
There are still moments of gentle beauty and fantastical elements. The language is florally embellished in places, as if it were a well-crafted tale being told aloud to you in a pub in the early 1900s. Its never self-indulgent, either - the language or words never distract or get in the way. There are still moments of gentle beauty and fantastical elements. The language is florally embellished in places, as if it were a well-crafted tale being told aloud to you in a pub in the early 1900s. It's never self-indulgent, either - the language or words never distract or get in the way.
There are certainly a few times where characters seem to transform or shift in a moment. Its like they were vehicles towards the resolution of the story: for there to be a happy ending they must accept that this child isnt their daughter, or to be in love one must let their fears go. I did take particular issue with one character who, for very personal and rational reasons, decided that she did not want to have a child - but abandoned those beliefs when she met the right man. A narrative that queer/asexual and anti-children people often face. The “you just havent met the right man” argument. It maybe would have been nice for the woman to not want children and realise its because she wasnt maternal, or maybe was queer - and resolve the story that way. Setterfield had the chance to break an expectation or convention yet still fulfil a fairytale ending, sort of like a genie, but instead she took the predictable and easy route. But I cant criticise a book too harshly for wanting to stick to whats already known, and for sticking to its genre. Still, its a missed chance for more representation. There are certainly a few times where characters seem to transform or shift in a moment. It's like they were vehicles towards the resolution of the story: for there to be a happy ending they must accept that this child isn't their daughter, or to be in love one must let their fears go. I did take particular issue with one character who, for very personal and rational reasons, decided that she did not want to have a child - but abandoned those beliefs when she met the right man. A narrative that queer/asexual and anti-children people often face. The "you just haven't met the right man" argument. It maybe would have been nice for the woman to not want children and realise it's because she wasn't maternal, or maybe was queer - and resolve the story that way. Setterfield had the chance to break an expectation or convention yet still fulfil a fairytale ending, sort of like a genie, but instead she took the predictable and easy route. But I can't criticise a book too harshly for wanting to stick to what's already known, and for sticking to its genre. Still, its a missed chance for more representation.
On some deeper level, I think having the characters change so quickly is a nice reminder that sometimes we need to only give ourselves permission to change our beliefs or our action. But I think Im looking into that a bit too much. On some deeper level, I think having the characters change so quickly is a nice reminder that sometimes we need to only give ourselves permission to change our beliefs or our action. But I think I'm looking into that a bit too much.
It was a nice read, a nice escapism read. Its a book Im going to remember because of how it made me feel, not because of the characters or writing. A good solid read for when you need something palatable and easily digestible. 3 ⭐ It was a nice read, a nice escapism read. It's a book I'm going to remember because of how it made me feel, not because of the characters or writing. A good solid read for when you need something palatable and easily digestible. 3 ⭐

View file

@ -20,16 +20,16 @@ links:
link: "https://bookshop.org/books/mrs-death-misses-death-9781867523253/9781867522959" link: "https://bookshop.org/books/mrs-death-misses-death-9781867523253/9781867522959"
--- ---
Godden has been writing and performing poetry since she decided to move to London instead of going to university. “Godden is a poet” headlines my review because it is so evident in every page of this book. Every transition from unknown narrator, to fourth-wall breaking direct address, to poetry, to “normal” prose. Godden barely pays attention to consistency when she writes, because she is trying to get across an idea. All books are poor transcriptions of spoken word stories that buoyed humanity through tens of thousands of years, long before we invented written word, paper, and typesetting. This book just acknowledges that more than a lot of other books I have read. Godden has been writing and performing poetry since she decided to move to London instead of going to university. "Godden is a poet" headlines my review because it is so evident in every page of this book. Every transition from unknown narrator, to fourth-wall breaking direct address, to poetry, to "normal" prose. Godden barely pays attention to consistency when she writes, because she is trying to get across an idea. All books are poor transcriptions of spoken word stories that buoyed humanity through tens of thousands of years, long before we invented written word, paper, and typesetting. This book just acknowledges that more than a lot of other books I have read.
Mrs Death Misses Death was written almost entirely in service to an idea. Sometimes youre not sure what that idea is, and other times youre frustrated that it is _just_ an idea, without resolution or arc, but most of the time you are spell-bound by how Godden writes. This is “exactly the sort of thing you expect when a poet writes a novel”, to quote Sara Collins in [her review for The Guardian](https://www.theguardian.com/books/2021/feb/11/mrs-death-misses-death-by-salena-godden-review-the-poets-debut-novel). Mrs Death Misses Death was written almost entirely in service to an idea. Sometimes you're not sure what that idea is, and other times you're frustrated that it is _just_ an idea, without resolution or arc, but most of the time you are spell-bound by how Godden writes. This is "exactly the sort of thing you expect when a poet writes a novel", to quote Sara Collins in [her review for The Guardian](https://www.theguardian.com/books/2021/feb/11/mrs-death-misses-death-by-salena-godden-review-the-poets-debut-novel).
This is all to say that Mrs Death Misses Death is interesting at a meta level. Perhaps more interesting than it is at the direct substantive level. The characters and story are secondary. The book is written by Wolf, a “bi-gender” young poet in London who meets death when she sells him some tobacco at a local store. Death, who has always been personified as male, tall, and slender, is shown here by Godden as a young, poor, black woman in London. Because this is the most overlooked, the least seen, kind of person. Wolf is captivated, maddeningly so, by Mrs Death, and Mrs Death is glad of the chance to speak to someone about the endless and laboured process of collecting souls as they leave life. Told in part by Wolf through testimony or flashbacks, sometimes in poems, other times from the perspective of Mrs Death - we explore this idea and the consequences of being or meeting death. This is all to say that Mrs Death Misses Death is interesting at a meta level. Perhaps more interesting than it is at the direct substantive level. The characters and story are secondary. The book is written by Wolf, a "bi-gender" young poet in London who meets death when she sells him some tobacco at a local store. Death, who has always been personified as male, tall, and slender, is shown here by Godden as a young, poor, black woman in London. Because this is the most overlooked, the least seen, kind of person. Wolf is captivated, maddeningly so, by Mrs Death, and Mrs Death is glad of the chance to speak to someone about the endless and laboured process of collecting souls as they leave life. Told in part by Wolf through testimony or flashbacks, sometimes in poems, other times from the perspective of Mrs Death - we explore this idea and the consequences of being or meeting death.
The book was written over the past five years, long before anyone could identify a spike protein, face mask, or socially distanced funeral out of a lineup. It was written before death figures filled our every news report for months and months on end. It was written independently of contract, i.e. Godden was writing without obligation to a publisher, and this freedom shows. Humanity and experience, largely unfiltered or unguided, are at the centre of this book, and I dont think the same result could be achieved if it was rushed or shaped by the need to fulfil or attract external attention. Despite this “business ruins art” talk, the book has already been [snapped up for film or TV](https://www.thebookseller.com/news/mrs-death-misses-death-optioned-film-and-tv-1235318) by Green Door Productions (a company owned by Idris Elba), as well as receiving generally favourable reviews. Its not an art-or-money situation. The book was written over the past five years, long before anyone could identify a spike protein, face mask, or socially distanced funeral out of a lineup. It was written before death figures filled our every news report for months and months on end. It was written independently of contract, i.e. Godden was writing without obligation to a publisher, and this freedom shows. Humanity and experience, largely unfiltered or unguided, are at the centre of this book, and I don't think the same result could be achieved if it was rushed or shaped by the need to fulfil or attract external attention. Despite this "business ruins art" talk, the book has already been [snapped up for film or TV](https://www.thebookseller.com/news/mrs-death-misses-death-optioned-film-and-tv-1235318) by Green Door Productions (a company owned by Idris Elba), as well as receiving generally favourable reviews. It's not an art-or-money situation.
Despite liking the idea of this book, and broadly adoring the language and sentiment, I didnt find it entirely engaging or sticky. Whenever I was reading it, I enjoyed it, but I did not find myself coming back to it unintentionally. If you can, read this book in as few sittings as possible, I think. Despite liking the idea of this book, and broadly adoring the language and sentiment, I didn't find it entirely engaging or sticky. Whenever I was reading it, I enjoyed it, but I did not find myself coming back to it unintentionally. If you can, read this book in as few sittings as possible, I think.
It is not a book where things happen, or where particular ideas are explored explicitly. It seems to follow a very brief period of time, a snapshot. We get glimpses of some of the things Mrs Death has to deal with, and the sadness and anger she feels as being seen as a man, and as being the opposite of life — but we never see that in action. We are with Wolf for the entire book, and Wolf is your classic unreliable narrator, and starving poet. We explore the tension between a childhood trauma caused by the early death of Wolfs mother and their subsequent upbringing by their bitter and probably cruel grandparents. This idea of intergenerational trauma was something that [I loved in Queenie](/book-reviews/queenie), but here it is not explored in as much length or detail. It is not a book where things happen, or where particular ideas are explored explicitly. It seems to follow a very brief period of time, a snapshot. We get glimpses of some of the things Mrs Death has to deal with, and the sadness and anger she feels as being seen as a man, and as being the opposite of life — but we never see that in action. We are with Wolf for the entire book, and Wolf is your classic unreliable narrator, and starving poet. We explore the tension between a childhood trauma caused by the early death of Wolf's mother and their subsequent upbringing by their bitter and probably cruel grandparents. This idea of intergenerational trauma was something that [I loved in Queenie](/book-reviews/queenie), but here it is not explored in as much length or detail.
I am glad I read this book, especially as somebody who loves books and poetry. I love that it wasnt a “traditional” book, and how Godden sees the world, or at least frames the world, in some interesting ways. The sentiment of grief and unresolved trauma runs consistently throughout this book, affecting both Wolf and Mrs Death, a supposedly other-worldly spirit or idea. It normalises the idea that death is a hard thing for those left alive to process. It treats that difficulty with patience and I hope lends sympathy and empathy. But there still werent any moments which shone above all others in this book. I would recommend it to you if you love books and reading and language and ideas, but not if you love stories and characters. This from a man who cant sit easily through a Chekov or Pinter play though, so dont listen to me. ⭐3.5 I am glad I read this book, especially as somebody who loves books and poetry. I love that it wasn't a "traditional" book, and how Godden sees the world, or at least frames the world, in some interesting ways. The sentiment of grief and unresolved trauma runs consistently throughout this book, affecting both Wolf and Mrs Death, a supposedly other-worldly spirit or idea. It normalises the idea that death is a hard thing for those left alive to process. It treats that difficulty with patience and I hope lends sympathy and empathy. But there still weren't any moments which shone above all others in this book. I would recommend it to you if you love books and reading and language and ideas, but not if you love stories and characters. This from a man who can't sit easily through a Chekov or Pinter play though, so don't listen to me. ⭐3.5

View file

@ -20,46 +20,46 @@ links:
link: "https://bookshop.org/books/after-a-doctor-explores-what-near-death-experiences-reveal-about-life-and-beyond/9781250263032" link: "https://bookshop.org/books/after-a-doctor-explores-what-near-death-experiences-reveal-about-life-and-beyond/9781250263032"
--- ---
**Declaration of interest** I am a spiritual person. I didnt come into this book desperately seeking answers, or in need of comfort or certainty. Youre never going to get that from any book, Im afraid. I believe that we are not just our bodies, and that consciousness exists (at least partially) separately to the brain. I came into this book because I was interested in hearing the experiences of a healthcare and scientific professional, and how they experience / grapple with these questions. And to hear from people who had almost died. That sounds pretty cool. **Declaration of interest** I am a spiritual person. I didn't come into this book desperately seeking answers, or in need of comfort or certainty. You're never going to get that from any book, I'm afraid. I believe that we are not just our bodies, and that consciousness exists (at least partially) separately to the brain. I came into this book because I was interested in hearing the experiences of a healthcare and scientific professional, and how they experience / grapple with these questions. And to hear from people who had almost died. That sounds pretty cool.
Death, as we know, is the only inevitable thing in our life that isnt taxes. But people seem to spend a great deal more time and attention trying to cheat or bemoan taxes. Death, as we know, is the only inevitable thing in our life that isn't taxes. But people seem to spend a great deal more time and attention trying to cheat or bemoan taxes.
_After: A Doctor Explores What Near-Death Experiences Reveal About Life and Beyond_ makes you think about death. Barely two pages pass where Greyson isnt telling us about a patient they saw who nearly died in some morbidly unique way. All throughout, Greyson approaches the subject of near death experiences (NDEs) as a practiced researcher and medical professional, and in doing so does what all good authors do: places their subject matter bang in the centre of something much larger. Death, living, almost dying, trauma, spirituality, and our relationships with ourselves, our families, and our mortality all come up. And while questions about the experience and impact of NDEs on someones life comes relatively answered, these broader questions about how we live are left open. _After: A Doctor Explores What Near-Death Experiences Reveal About Life and Beyond_ makes you think about death. Barely two pages pass where Greyson isn't telling us about a patient they saw who nearly died in some morbidly unique way. All throughout, Greyson approaches the subject of near death experiences (NDEs) as a practiced researcher and medical professional, and in doing so does what all good authors do: places their subject matter bang in the centre of something much larger. Death, living, almost dying, trauma, spirituality, and our relationships with ourselves, our families, and our mortality all come up. And while questions about the experience and impact of NDEs on someone's life comes relatively answered, these broader questions about how we live are left open.
At its core, however, it is a book about NDEs. So lets talk about that first. At its core, however, it is a book about NDEs. So let's talk about that first.
Near death experiences are _experiences_ that people have when they almost die. In some cases they do actually clinically die, but they eventually come back. The experiences themselves are vivid, and people who have them can tell them apart from dreams. Apparently theyre not quite like anything else. The term NDE was coined 1975 with Raymond Moodys _Life After Life_, though reports of NDE-like events predate this. It has remained active grounds for research by people involved across neuroscience to philosophy and anthropology. Near death experiences are _experiences_ that people have when they almost die. In some cases they do actually clinically die, but they eventually come back. The experiences themselves are vivid, and people who have them can tell them apart from dreams. Apparently they're not quite like anything else. The term NDE was coined 1975 with Raymond Moody's _Life After Life_, though reports of NDE-like events predate this. It has remained active grounds for research by people involved across neuroscience to philosophy and anthropology.
Current research suggests that some 10-15% of people who almost die experience NDEs. They are present across cultures, religious/spiritual beliefs, ages, and lifestyles. Greyson takes us through the building block questions like “what _is_ an NDE?” and why theyre worth studying. We get an overview of a few common characteristics: from the relatively innocuous change in time perception and clarity of thought, to seeing ones body from from outside your self, the “life review” (the addled phrase “my life flashed before my eyes”), and meeting and interacting with deceased people. Current research suggests that some 10-15% of people who almost die experience NDEs. They are present across cultures, religious/spiritual beliefs, ages, and lifestyles. Greyson takes us through the building block questions like "what _is_ an NDE?" and why they're worth studying. We get an overview of a few common characteristics: from the relatively innocuous change in time perception and clarity of thought, to seeing one's body from from outside your self, the "life review" (the addled phrase "my life flashed before my eyes"), and meeting and interacting with deceased people.
We are well-guided (though perhaps a little briefly) through the process of an NDE. From its immediate characteristics, to how it changes people in the weeks and years which follow. People who experience NDEs often live a different life after their experience, compared to those who almost died but did not have them. Sometimes they can cause conflict if the experience doesnt conform to somebodys pre-existing spiritual beliefs. In general, NDEs seem to be a force for good - leading people to live more patient and compassionate lives. We are well-guided (though perhaps a little briefly) through the process of an NDE. From its immediate characteristics, to how it changes people in the weeks and years which follow. People who experience NDEs often live a different life after their experience, compared to those who almost died but did not have them. Sometimes they can cause conflict if the experience doesn't conform to somebody's pre-existing spiritual beliefs. In general, NDEs seem to be a force for good - leading people to live more patient and compassionate lives.
This is a well structured non-fiction book. Any aspiring non-fiction writer would do well to pay attention to Greysons ability to plant the seeds of one question in one chapter, and then answer it promptly in the next. In some cases he points at something hes just said and them tells you hell clarify it much later. Youre never left wondering about things - Greyson has clearly guided many a novice down this garden path. This makes for an engaging read, one that you could burn through. This is a well structured non-fiction book. Any aspiring non-fiction writer would do well to pay attention to Greyson's ability to plant the seeds of one question in one chapter, and then answer it promptly in the next. In some cases he points at something he's just said and them tells you he'll clarify it much later. You're never left wondering about things - Greyson has clearly guided many a novice down this garden path. This makes for an engaging read, one that you could burn through.
At times it is a little frustrating that the evidence seems to be “I met Jane who almost died, and heres what she reported… I met Alex who almost died and they said…”. However, this does provide more personable that a table or chart might not. Still, it would have been nice to have a bit more formalisation. At times it is a little frustrating that the evidence seems to be "I met Jane who almost died, and here's what she reported… I met Alex who almost died and they said…". However, this does provide more personable that a table or chart might not. Still, it would have been nice to have a bit more formalisation.
In fact the entire book seems to work hard to directly avoid an academic tone. Rigour is very clearly cut off in favour of conversation and engagement. We get glimpses into the fact that Greyson obviously has a wealth of experience in dealing with NDEs and their consequences on others. However, I never got the sense that he had truly mastered the gnarlier corners of the field, or was attempting to push the shape of research forward from a collection of personal testimonies. In fact the entire book seems to work hard to directly avoid an academic tone. Rigour is very clearly cut off in favour of conversation and engagement. We get glimpses into the fact that Greyson obviously has a wealth of experience in dealing with NDEs and their consequences on others. However, I never got the sense that he had truly mastered the gnarlier corners of the field, or was attempting to push the shape of research forward from a collection of personal testimonies.
Depth is sacrificed for breadth in this book, even to the extent where I wonder if Greysons success can be attributed more to the impact and consequences of his patients experiences than to him as an individual or researcher. I get the sense he might give an excellent hour long seminar, or be lively company at a dinner party, but rather less that he fulfils the detail-oriented academic air. I suspect at least in part that this is because he has less literature to delve through, join together, or refute. He is a story teller, a founding father with a vision of a new nation. He is not a civil servant sorting through the minutia of allocating land and settling legal disputes. Depth is sacrificed for breadth in this book, even to the extent where I wonder if Greyson's success can be attributed more to the impact and consequences of his patients' experiences than to him as an individual or researcher. I get the sense he might give an excellent hour long seminar, or be lively company at a dinner party, but rather less that he fulfils the detail-oriented academic air. I suspect at least in part that this is because he has less literature to delve through, join together, or refute. He is a story teller, a founding father with a vision of a new nation. He is not a civil servant sorting through the minutia of allocating land and settling legal disputes.
At the same time, the only way that youll get a sense for the actual experience of an NDE is if you hear them spoken about. You can hear “out of body experience” and not think about it too much. These are loaded, emotionally- or spiritually-charged terms, for me at least. Having three or four concrete examples, each with undeniably odd situations around them (like noticing the state of someones attire while dead and having your eyes covered) does a better job at making you confront these experiences. I dont think the same could be achieved with the cool, polished marble of figures and numbers. At the same time, the only way that you'll get a sense for the actual experience of an NDE is if you hear them spoken about. You can hear "out of body experience" and not think about it too much. These are loaded, emotionally- or spiritually-charged terms, for me at least. Having three or four concrete examples, each with undeniably odd situations around them (like noticing the state of someone's attire while dead and having your eyes covered) does a better job at making you confront these experiences. I don't think the same could be achieved with the cool, polished marble of figures and numbers.
This becomes even more important when people talk about experiences which step past both our every-day lived experience, and the capacity of our language to communicate ideas. This becomes even more important when people talk about experiences which step past both our every-day lived experience, and the capacity of our language to communicate ideas.
It is here that we depart the actual topic of the book, and start talking about the meta aspects. It is here that Greyson is able to throw out half a dozen or observations about medical and scientific research, each fundamental to the way we conduct, review, and communicate research. In short - all very interesting ideas. Certainly they are not ideas to adopt wholesale. This wont be the book that topples the peer-reviewed, double blind study, but its a step towards there. It is here that we depart the actual topic of the book, and start talking about the meta aspects. It is here that Greyson is able to throw out half a dozen or observations about medical and scientific research, each fundamental to the way we conduct, review, and communicate research. In short - all very interesting ideas. Certainly they are not ideas to adopt wholesale. This won't be the book that topples the peer-reviewed, double blind study, but it's a step towards there.
The most interesting question this book raises isnt “what happens when we die?” it is “what is evidence?”. Greyson works in the gate-kept, largely conforming and heterogeneous landscape of academic research. The focus for many practitioners is on getting enough published research out to justify their positions and move towards promotion and tenure. It is not in their interest, really, to rock the boat too heavily. It is a much wiser choice to make sure your research looks, broadly, as it is meant to look, which means it looks like everybody elses, and like everything that came before it. The most interesting question this book raises isn't "what happens when we die?" it is "what is evidence?". Greyson works in the gate-kept, largely conforming and heterogeneous landscape of academic research. The focus for many practitioners is on getting enough published research out to justify their positions and move towards promotion and tenure. It is not in their interest, really, to rock the boat too heavily. It is a much wiser choice to make sure your research looks, broadly, as it is meant to look, which means it looks like everybody else's, and like everything that came before it.
This is not the most effective way to study every part of the human experience. If you hold NDE experience to the same standard as a vaccine trial (double-blind gold standard control), you will never get any data or information. From that stand point, NDEs simply do not exist. This is not the most effective way to study every part of the human experience. If you hold NDE experience to the same standard as a vaccine trial (double-blind gold standard control), you will never get any data or information. From that stand point, NDEs simply do not exist.
With the prevailing attitude that NDEs do not exist, if you almost died (especially if you tried to take your own life), and you experienced going someplace else and meeting your deceased grandparents or parents, would you tell the doctors around you what happened? Nope, youd probably stay quiet and maybe tell one other person in your life. Because NDEs do not exist, and there are no vehicles to get your NDE story outside of yourself. With the prevailing attitude that NDEs do not exist, if you almost died (especially if you tried to take your own life), and you experienced going someplace else and meeting your deceased grandparents or parents, would you tell the doctors around you what happened? Nope, you'd probably stay quiet and maybe tell one other person in your life. Because NDEs do not exist, and there are no vehicles to get your NDE story outside of yourself.
You would be worried the doctors would think you crazy, or judge you, and not listen. Theres a high chance theyd diagnose you with some kind of psychotic episode and maybe keep you in hospital longer. You would have gone through two very impactful events in your life (nearly dying, then having an NDE) and you will have no professional support to guide you through processing these and integrating them into your life. You would be worried the doctors would think you crazy, or judge you, and not listen. There's a high chance they'd diagnose you with some kind of psychotic episode and maybe keep you in hospital longer. You would have gone through two very impactful events in your life (nearly dying, then having an NDE) and you will have no professional support to guide you through processing these and integrating them into your life.
The healthcare professionals made sure the mechanics of your body wouldnt fail, and then sent you off. This is not the gold standard, end-goal of medical care. The question of “what is data” is not just a philosophical one, it is one which impacts us and our healthcare system. The healthcare professionals made sure the mechanics of your body wouldn't fail, and then sent you off. This is not the gold standard, end-goal of medical care. The question of "what is data" is not just a philosophical one, it is one which impacts us and our healthcare system.
Greyson makes a very convincing case for a human- and experience-centric approach to research. Both in the design of experiments and the consideration of publication. There is no point in doing research if it cannot be effectively conducted, reviewed, and published. If the standards for conducting, reviewing, and publishing research remain narrow, then only some kinds of studies will be published. Or things will be studied with inappropriate methods, because they suit the medium (research) not the subject (NDEs). Greyson makes a very convincing case for a human- and experience-centric approach to research. Both in the design of experiments and the consideration of publication. There is no point in doing research if it cannot be effectively conducted, reviewed, and published. If the standards for conducting, reviewing, and publishing research remain narrow, then only some kinds of studies will be published. Or things will be studied with inappropriate methods, because they suit the medium (research) not the subject (NDEs).
Research should push our collective understanding forward, and medical research should (eventually) result in better care. To support people who have NDEs, regardless of what you think they actually _are_, you need to understand them. To understand them, you need to be flexible in how you collect data about them. We need peoples testimonies and experiences to be treated as sacredly as though the were field observation or computational data. Research should push our collective understanding forward, and medical research should (eventually) result in better care. To support people who have NDEs, regardless of what you think they actually _are_, you need to understand them. To understand them, you need to be flexible in how you collect data about them. We need peoples' testimonies and experiences to be treated as sacredly as though the were field observation or computational data.
Even if you dont care the slightest about the spiritual or moral implications of this book, read it. You might think it all poppycock, but its a well told poppycock. Perhaps the strokes are too-broad and the author too American, but this is a good, accessible non-fiction book that raises more insightful points about our (the Wests) approach to healthcare and wellbeing. Even if you don't care the slightest about the spiritual or moral implications of this book, read it. You might think it all poppycock, but it's a well told poppycock. Perhaps the strokes are too-broad and the author too American, but this is a good, accessible non-fiction book that raises more insightful points about our (the West's) approach to healthcare and wellbeing.

View file

@ -25,7 +25,7 @@ I was gifted this book by my mother, so I feel terrible for what I am about to s
Credit where it's due: Hamilton captures this mood so well in _Hangover Square_, a book set in London in the winter of 1938. Written between 1939-1941, just as the Second World War loomed and then broke, the backdrop is bleak, and various characters' enthusiasm for the Nazi regime isn't particularly endearing. Credit where it's due: Hamilton captures this mood so well in _Hangover Square_, a book set in London in the winter of 1938. Written between 1939-1941, just as the Second World War loomed and then broke, the backdrop is bleak, and various characters' enthusiasm for the Nazi regime isn't particularly endearing.
This is a bleak book. There is little in it to broadcast hope. We get a few weak flashes, but we know well enough that theyre faltering and wont last the evening. Let alone the night. This is thanks to our hapless protagonist, George Harvey Bone: a man who seems rarely to have his own self interest at heart. A man who is in hapless love with Netta, a sometimes actress but always cruel woman who uses Bone for nothing more than social leverage and free drinks. This is a bleak book. There is little in it to broadcast hope. We get a few weak flashes, but we know well enough that they're faltering and won't last the evening. Let alone the night. This is thanks to our hapless protagonist, George Harvey Bone: a man who seems rarely to have his own self interest at heart. A man who is in hapless love with Netta, a sometimes actress but always cruel woman who uses Bone for nothing more than social leverage and free drinks.
The drudgery of unrequited love apparently runs in Hamilton's other works, namely _Twenty Thousand Streets Under The Sky_. He writes it incredibly well. Though I am largely unsympathetic to Bone, Hamilton draws out the sympathy, even when you're pretty stone-cold on the same narrative arc repeating itself for the fourth-or-fifth time in the book. The drudgery of unrequited love apparently runs in Hamilton's other works, namely _Twenty Thousand Streets Under The Sky_. He writes it incredibly well. Though I am largely unsympathetic to Bone, Hamilton draws out the sympathy, even when you're pretty stone-cold on the same narrative arc repeating itself for the fourth-or-fifth time in the book.
@ -37,8 +37,8 @@ But these are never explored. He's had dead moods for his entire life, but he's
At no point do you believe that Bone actually will change, or wants to change. He has no mastery of himself, he is subject to the abandonment of others. Romantically and platonically, people leave Bone. It's sad, but also I have no sense of who Bone was. He's taken advantage of by those around him, they see him as nothing more than the taxi fares and gin bottles he can buy. And they're not wrong. They're obviously callous and unkind and taking advantage, but... what else is Bone? Our poetic narrator. At no point do you believe that Bone actually will change, or wants to change. He has no mastery of himself, he is subject to the abandonment of others. Romantically and platonically, people leave Bone. It's sad, but also I have no sense of who Bone was. He's taken advantage of by those around him, they see him as nothing more than the taxi fares and gin bottles he can buy. And they're not wrong. They're obviously callous and unkind and taking advantage, but... what else is Bone? Our poetic narrator.
If nothing else, read sections of the book, just for the language. It is singularly the largest redeeming feature, making this book worth the (literally groan-inducing) effort that it took from me at other times. It reads as though freshly graduated from the school of Dickens, though with the bone-tired-from-the-effort-of-alcoholism that cant be bought at eighteen years old. A mature student of the Dickensian school, then. If nothing else, read sections of the book, just for the language. It is singularly the largest redeeming feature, making this book worth the (literally groan-inducing) effort that it took from me at other times. It reads as though freshly graduated from the school of Dickens, though with the bone-tired-from-the-effort-of-alcoholism that can't be bought at eighteen years old. A mature student of the Dickensian school, then.
Im unsure if the prose capture the 1940s accurately, or instead a few decades before. Im not familiar with literature of the time. The little interactions between characters, or our narrators internal monologue all shine. Simply worth reading. Hamilton was a talented writer, and though Ill gladly turn my nose up at his choice of subject, the way he wrote it was good. I'm unsure if the prose capture the 1940s accurately, or instead a few decades before. I'm not familiar with literature of the time. The little interactions between characters, or our narrators internal monologue all shine. Simply worth reading. Hamilton was a talented writer, and though I'll gladly turn my nose up at his choice of subject, the way he wrote it was good.
Read it, but don't expect to be drawn in. 2.5 ⭐ Read it, but don't expect to be drawn in. 2.5 ⭐

View file

@ -20,30 +20,30 @@ links:
link: "https://bookshop.org/books/project-hail-mary-9780593395561/9780593135204" link: "https://bookshop.org/books/project-hail-mary-9780593395561/9780593135204"
--- ---
When you read a Dan Brown book you leave it ready to put on your tin foil har. Andy Weir books make you feel ready to don a lab coat. He writes books that are clearly well researched and very involved, but theyre still readable. Dan Brown gets (at most) one of these two things. When you read a Dan Brown book you leave it ready to put on your tin foil har. Andy Weir books make you feel ready to don a lab coat. He writes books that are clearly well researched and very involved, but they're still readable. Dan Brown gets (at most) one of these two things.
Project Hail Mary is inevitably going to be compared to Weirs 2011 _The Martian_, a book which received (well deserved) critical and public acclaim. Its a good book (read it) and an okay movie (watch it with friends, drink if you want). Just like _The Martian_, we follow a lone human (Ryland Grace) confined in a spaceship in space and faced with a laundry list of life-threatening problems. Grace is there because theres an existential threat to the human race, and so hes got to get on a space ship to solve it. Project Hail Mary is inevitably going to be compared to Weir's 2011 _The Martian_, a book which received (well deserved) critical and public acclaim. It's a good book (read it) and an okay movie (watch it with friends, drink if you want). Just like _The Martian_, we follow a lone human (Ryland Grace) confined in a spaceship in space and faced with a laundry list of life-threatening problems. Grace is there because there's an existential threat to the human race, and so he's got to get on a space ship to solve it.
Whereas _The Martian_s Mark Watney speaks to us through Captains Log entries (v. enjoyable), Project Hail Mary has a more traditional narrative. Weirs 2017 _Artemis_ follows a bigger cast of characters, so the narrative is more traditional. In fact, Artemis suffered a bit too much from bing “more traditional” which is why not a lot of people talk about it. Whereas _The Martian_'s Mark Watney speaks to us through Captain's Log entries (v. enjoyable), Project Hail Mary has a more traditional narrative. Weir's 2017 _Artemis_ follows a bigger cast of characters, so the narrative is more traditional. In fact, Artemis suffered a bit too much from bing "more traditional" which is why not a lot of people talk about it.
The writing in this book is solid. Its caricatured in places, and rarely (if ever) poetic. I wouldnt highlight or want to remember any particular part of this book. But I didnt expect it to be. Weir presents us with some really interesting biological/evolutionary theories and ideas, which challenge what you might think of as “life”. I dont need lyrical prose if youve good big thinkers like that one. Still, dont expect to have your morals shifted. The writing in this book is solid. It's caricatured in places, and rarely (if ever) poetic. I wouldn't highlight or want to remember any particular part of this book. But I didn't expect it to be. Weir presents us with some really interesting biological/evolutionary theories and ideas, which challenge what you might think of as "life". I don't need lyrical prose if you've good big thinkers like that one. Still, don't expect to have your morals shifted.
Take his book as something to be enjoyed on its own. Its like a party: good for you to do, but hard for you to explain why. Take his book as something to be enjoyed on its own. It's like a party: good for you to do, but hard for you to explain why.
We follow Grace through various engineering and biological challenges, twists and turns, which he dutifully solves as he tries to save a) himself, and b) the rest of humanity. The pacing is textbook. It is predictable and unsurprising, but well-enough written that it never lags, though towards the end you certainly start to predict the rhythms. We follow Grace through various engineering and biological challenges, twists and turns, which he dutifully solves as he tries to save a) himself, and b) the rest of humanity. The pacing is textbook. It is predictable and unsurprising, but well-enough written that it never lags, though towards the end you certainly start to predict the rhythms.
The other problem is that the stakes never differ, or feel actually on the line. A problem emerges which is a 6/10 emergency, Grace does something to solve it and it goes down to a 0-3/10, and then something unexpected happens and were at an 8-9/10 before he solves things and we move on to the next cycle. The other problem is that the stakes never differ, or feel actually on the line. A problem emerges which is a 6/10 emergency, Grace does something to solve it and it goes down to a 0-3/10, and then something unexpected happens and we're at an 8-9/10 before he solves things and we move on to the next cycle.
Even though you might not understand the problems, you always know that Grace is going to solve the problem, because Grace always _has_ solved the problem. Everything is going to be okay in the end,. Even though you might not understand the problems, you always know that Grace is going to solve the problem, because Grace always _has_ solved the problem. Everything is going to be okay in the end,.
The content of the problems is what makes them interesting each time, though. Weir brings a level of knowledge and a depth of research that make you feel glad that youre not on a spaceship and that humanity isnt depending on you. Weir has the great scientific quality of “X happened… so therefore Y”. Hes able to set the table rules in physics, chemistry, and biology and then explore problems close enough within those rules. The content of the problems is what makes them interesting each time, though. Weir brings a level of knowledge and a depth of research that make you feel glad that you're not on a spaceship and that humanity isn't depending on you. Weir has the great scientific quality of "X happened… so therefore Y". He's able to set the table rules in physics, chemistry, and biology and then explore problems close enough within those rules.
If youre a practicing research scientists in any of these areas Im sure youll roll your eyes at it. Im sure it doesnt withstand informed scrutiny, but I enjoy it. If you're a practicing research scientists in any of these areas I'm sure you'll roll your eyes at it. I'm sure it doesn't withstand informed scrutiny, but I enjoy it.
Despite all this heroism and know-how, Grace is a coward. Not an entire coward, not cripplingly. Humans can be many things in many contexts. Grace is a high school teacher in his 30-somethings (before he goes to space). His life has been shaped heavily by a lack of action or boldness in everything other than his academic career. Even in that he doesnt commit to it. Despite all this heroism and know-how, Grace is a coward. Not an entire coward, not cripplingly. Humans can be many things in many contexts. Grace is a high school teacher in his 30-somethings (before he goes to space). His life has been shaped heavily by a lack of action or boldness in everything other than his academic career. Even in that he doesn't commit to it.
We dont see any character development or changes in him. At the end of the book you know that hes the same person he was at the beginning, and Im unsure if hes had any level of self-awareness or knowledge. But (low-level spoilers here) he does manage to save the world and humanity, so maybe hes earned the right to stay a flawed man. We don't see any character development or changes in him. At the end of the book you know that he's the same person he was at the beginning, and I'm unsure if he's had any level of self-awareness or knowledge. But (low-level spoilers here) he does manage to save the world and humanity, so maybe he's earned the right to stay a flawed man.
Its a reminder that “cowardly” people can do good things, and that Andy Weir can write excellent science fiction, just maybe not great character work. It's a reminder that "cowardly" people can do good things, and that Andy Weir can write excellent science fiction, just maybe not great character work.
I listened to the audiobook of this one, and I would definitely recommend. There are parts of the book which play with sound/language, where having an audio component _really_ made this shine. The production quality added in a few non-vocal aspects which really brought it to life. I would totally recommend picking this up on Audible if you even remotely like audiobooks. I listened to the audiobook of this one, and I would definitely recommend. There are parts of the book which play with sound/language, where having an audio component _really_ made this shine. The production quality added in a few non-vocal aspects which really brought it to life. I would totally recommend picking this up on Audible if you even remotely like audiobooks.

View file

@ -21,22 +21,22 @@ links:
link: "https://bookshop.org/books/sistersong-9780316320771/9780316320771" link: "https://bookshop.org/books/sistersong-9780316320771/9780316320771"
--- ---
_Sistersong_ is the debut novel from Lucy Holland. Set in Dumnonia, the Celtic kingdom which lasted between the 4th-8th century in what is now South West England, it follows the three children of the king (introduced as Riva, Synne, and Keyne), as they come of age and start to see the word “as it is”. _Sistersong_ is the debut novel from Lucy Holland. Set in Dumnonia, the Celtic kingdom which lasted between the 4th-8th century in what is now South West England, it follows the three children of the king (introduced as Riva, Synne, and Keyne), as they come of age and start to see the word "as it is".
The world now is far from the one the siblings grew up in. Threatened by the surrounding Saxons, losing connection to the lands magic, and waining religious beliefs all give this book an excellent backdrop. The world that Holland constructs (and the people she puts in it) are granular and realised. Holland believes a world into being, almost effortlessly. Dialog never feels forced, and the relationships between the siblings are rendered wonderfully. The world now is far from the one the siblings grew up in. Threatened by the surrounding Saxons, losing connection to the land's magic, and waining religious beliefs all give this book an excellent backdrop. The world that Holland constructs (and the people she puts in it) are granular and realised. Holland believes a world into being, almost effortlessly. Dialog never feels forced, and the relationships between the siblings are rendered wonderfully.
“Fantasy” literature is a broad scope, and books like _Sistersong_ do it justice by creating these complex, real characters. Although the book is set in an historical-fantasy setting, it is just a setting. I dont think Ive read a book that gives such, almost casual, voice to figures who might otherwise be voiceless. The prominence of trans, or gender identity, themes in this book came across as far more important than anything else. But still, other elements and people and their relationships come through. "Fantasy" literature is a broad scope, and books like _Sistersong_ do it justice by creating these complex, real characters. Although the book is set in an historical-fantasy setting, it is just a setting. I don't think I've read a book that gives such, almost casual, voice to figures who might otherwise be voiceless. The prominence of trans, or gender identity, themes in this book came across as far more important than anything else. But still, other elements and people and their relationships come through.
Yeah, theres magic, but even if theres magic theres still siblings who argue, and parents who dont accept when their children grow up, and men who only want one thing (sex). I would have a hard time putting this book into any particular genre Yeah, there's magic, but even if there's magic there's still siblings who argue, and parents who don't accept when their children grow up, and men who only want one thing (sex). I would have a hard time putting this book into any particular genre
Despite this excellent character work and writing, the pacing was off for me. The first and last third of the book felt right: things moved along at the right pace. Though I definitely felt the book swerve after maybe 100 pages. I feel like a certain pathway for the plot was set up, and then we just hopped over to another story. This felt jarring. Despite this excellent character work and writing, the pacing was off for me. The first and last third of the book felt right: things moved along at the right pace. Though I definitely felt the book swerve after maybe 100 pages. I feel like a certain pathway for the plot was set up, and then we just hopped over to another story. This felt jarring.
The middle third felt a little aimless at times, and without more of the world to investigate, or seeing things change, it felt like a slog to get through. The world painted is pretty bleak: the weather isnt great, theres a threat of a foreign invasion, and theres generally a lot of mistrust. I dont know if Holland is trying to create this feeling of claustrophobia or fear, but its all tension with no real consequence. Its exaggerated by the more focused chapters on either side. For a long time… nothing happens. The middle third felt a little aimless at times, and without more of the world to investigate, or seeing things change, it felt like a slog to get through. The world painted is pretty bleak: the weather isn't great, there's a threat of a foreign invasion, and there's generally a lot of mistrust. I don't know if Holland is trying to create this feeling of claustrophobia or fear, but it's all tension with no real consequence. It's exaggerated by the more focused chapters on either side. For a long time… nothing happens.
Removing content from a creative project is hard. Especially when you spent ages making it. I think this book could have benefited from a bit more even pacing, and more ruthless copy editor. Removing content from a creative project is hard. Especially when you spent ages making it. I think this book could have benefited from a bit more even pacing, and more ruthless copy editor.
Then again, maybe Holland wanted a book driven entirely by character, where plot is just a thing that happens in the background. Thats a fine aspiration, but it didnt feel consistent. Then again, maybe Holland wanted a book driven entirely by character, where plot is just a thing that happens in the background. That's a fine aspiration, but it didn't feel consistent.
Despite that, I enjoyed the themes: family, relationships, coming of age, and identity. Theyre themes that are strong in our oldest stories and ballads as humans, and theyre as relatable now as theyve ever been (apparently). Holland his tried to give new depth or new voice to an existing story - and has done so without being preachy, or really without making it a thing. Despite that, I enjoyed the themes: family, relationships, coming of age, and identity. They're themes that are strong in our oldest stories and ballads as humans, and they're as relatable now as they've ever been (apparently). Holland his tried to give new depth or new voice to an existing story - and has done so without being preachy, or really without making it a thing.
Read this book. 3.5 ⭐ Read this book. 3.5 ⭐

View file

@ -29,10 +29,7 @@ interface BookReviewListItem {
export class BlogController { export class BlogController {
static async singleton(): Promise<BlogController> { static async singleton(): Promise<BlogController> {
const markdownRepository = await MarkdownRepository.fromViteGlobImport( const markdownRepository = await MarkdownRepository.singleton();
blogPostMetaGlobImport,
bookReviewsMetaGlobImport
);
return new BlogController(markdownRepository); return new BlogController(markdownRepository);
} }

View file

@ -87,9 +87,12 @@ export class BlogPost {
return unified() // return unified() //
.use(markdown) .use(markdown)
.use(markdownFrontmatter) .use(markdownFrontmatter)
.use(remarkStringify) .use(remarkStringify, { unsafe: [{ character: '$' }] })
.use(remarkRehype, { allowDangerousHtml: true }) .use(remarkRehype, { allowDangerousHtml: false })
.use(rehypeStringify, { allowDangerousHtml: true }); .use(rehypeStringify, {
allowDangerousHtml: true,
allowDangerousCharacters: false,
});
} }
private markdownToExcerptProcessorFactory(): Processor { private markdownToExcerptProcessorFactory(): Processor {

42
src/lib/blog/RssFeed.ts Normal file
View file

@ -0,0 +1,42 @@
import type { BlogPostSet } from './BlogPostSet.js';
import type { BlogPost } from './BlogPost.js';
import type { BookReviewSet } from './BookReviewSet.js';
import type { BookReview } from './BookReview.js';
export class RssFeed {
constructor(private readonly blogPosts: BlogPostSet, private readonly bookReviews: BookReviewSet) {}
private blogPostXml(blogPost: BlogPost): string {
return `<item>
<title>${blogPost.title}</title>
<link>https://thomaswilson.xyz/blog/${blogPost.slug}</link>
<description><![CDATA[${blogPost.html}]]></description>
<pubDate>${blogPost.date.toUTCString()}</pubDate>
<guid>https://thomaswilson.xyz/blog/${blogPost.slug}</guid>
</item>`;
}
private bookReviewXml(bookReview: BookReview): string {
return `<item>
<title>Book Review: ${bookReview.title}</title>
<link>https://thomaswilson.xyz/blog/${bookReview.slug}</link>
<description><![CDATA[${bookReview.html}]]></description>
<pubDate>${bookReview.date.toUTCString()}</pubDate>
<guid>https://thomaswilson.xyz/blog/${bookReview.slug}</guid>
</item>`;
}
get xml(): string {
return `<?xml encoding="UTF-8"?>
<rss version="2.0" >
<channel>
<title>thomaswilson.xyz</title>
<link>https://thomaswilson.xyz/blog</link>
<description>I write about software and how I should have built it, and sometimes other things.</description>
<language>en-gb</language>
${this.blogPosts.blogPosts.map((blogPost) => this.blogPostXml(blogPost)).join('')}
${this.bookReviews.bookReviews.map((bookReview) => this.bookReviewXml(bookReview)).join('')}
</channel>
</rss>`;
}
}

View file

@ -4,6 +4,9 @@ import { BlogPostSet } from './BlogPostSet.js';
import { BookReviewSet } from './BookReviewSet.js'; import { BookReviewSet } from './BookReviewSet.js';
import { BookReview } from './BookReview.js'; import { BookReview } from './BookReview.js';
const blogPostMetaGlobImport = import.meta.glob('../../content/blog/*.md', { as: 'raw' });
const bookReviewsMetaGlobImport = import.meta.glob('../../content/book-reviews/*.md', { as: 'raw' });
interface BlogPostFrontmatterValues { interface BlogPostFrontmatterValues {
title: string; title: string;
slug: string; slug: string;
@ -30,6 +33,10 @@ export class MarkdownRepository {
this.bookReviews = new BookReviewSet(bookReviews); this.bookReviews = new BookReviewSet(bookReviews);
} }
public static async singleton(): Promise<MarkdownRepository> {
return await MarkdownRepository.fromViteGlobImport(blogPostMetaGlobImport, bookReviewsMetaGlobImport);
}
public static async fromViteGlobImport(blogGlobImport, bookReviewGlobImport): Promise<MarkdownRepository> { public static async fromViteGlobImport(blogGlobImport, bookReviewGlobImport): Promise<MarkdownRepository> {
let fileImports: MarkdownFile<BlogPostFrontmatterValues>[] = []; let fileImports: MarkdownFile<BlogPostFrontmatterValues>[] = [];
let blogPosts: BlogPost[] = []; let blogPosts: BlogPost[] = [];

View file

@ -0,0 +1,15 @@
import { MarkdownRepository } from '$lib/blog/markdown-repository.js';
import { RssFeed } from '$lib/blog/RssFeed.js';
import type { RequestHandler } from './$types.js';
export const GET: RequestHandler = async () => {
const repo = await MarkdownRepository.singleton();
const rssFeed = new RssFeed(repo.blogPosts, repo.bookReviews);
return new Response(rssFeed.xml.toString(), {
headers: {
'Content-Type': 'application/rss+xml',
charset: 'utf-8',
},
});
};