Limitarianism: academics is fascinating

This will be a short one, because I decided to pick up a topic that I can’t really say that I understand much, just to talk about something that makes me happy. I was reading a Washington Post opinion piece, Is it time to limit personal health? and that led me to looking into a research project at Utrecht University in the Netherlands, Fair Limits, which is focused on studying the question of whether it makes sense to talk about it.

What I want to talk about is not really about “limitarianism”, which personally I don’t think is that easy to apply meaningfully, or the tax rate discussion raised in the Post article, but really the idea that people have enough resources to actually launch a philosophical “program” to just think and write articles about this topic to get to the bottom of whether it’s really worth pursuing.

I love this type of academics!

Maybe it’s because it reminds me of some types of good fiction where the author will come up with a concept and just try to build a world around this concept to see if what comes out of the story is something that makes sense.

Maybe it’s because it reminds me of my own Ph.D. where I spent a while just pushing for what you could do if you represented everything as graphs and try to come up with structural patterns instead of numeric patterns. On my Ph.D side, I have to admit that I probably could have another few years to get to the end of it, and I didn’t because I moved to industry. Oh, well…

Anyway, thank you researchers out there for giving their best try at ideas!

People’s aversion to OOP is odd

From time to time I read an “opinion article” (just like this one) of why people think that OOP is very bad for the world and everybody should embrace Functional Programming (e.g. Why is OOP Such a Waste?).

I think people make good points about the issue with OOP, mostly centered around statefulness and what could be called an “un-natural relationship between logic containers in the code”. That leads to bugs and learning complexity.

My opinion is a little bit less extreme. While I can’t say that I’ve worked on a lot of “production” functional code, I’ve tried to read enough of it that it is pretty clear to me that there is a non-trivial challenge on how to actually document and structure functional code. I think there are two key pieces around this:

  1. The “dynamic compositional nature” of the code, where code can more easily be used across multiple use cases leads to a more “abstract” approach to coding, which is harder to clearly put into words.
  2. Some activities are much harder to represent without state, leading to developers to do hard-to-read tricks with the code in order to achieve this statelessness required by the approach. It doesn’t necessarily make the code less efficient, just harder to read.

Granted, I’m a big fan of FP. I also agree that makes code safer by default and leads to designs that end up being simpler and more decomposed.

What I don’t agree is to being stuck in this idea that OOP is just terrible, and the abstractions that it enforces are “pure evil”. I think there is value to the types of entities that it generates, the ability that people have to better relate to them, and sometimes the alignment with business relationships (which are often stateful themselves). So I feel like focusing on the bad things is almost like throwing out the baby with the bath water. There are good things about OOP and we should value them.

Probably one day I should revisit this topic with specific examples to share. For now I’ll leave it in this abstract-ish state.

The pandemic and virtual concerts

The COVID-19 pandemic was rough on a lot of different dimensions. But one that I want to highlight is the performing arts. Actually, more specifically than that, I want to focus on some organizations that decided to turn their concerts into virtual concerts.

I really like going to concerts, especially orchestral music, ballet, and opera. But since having kids, I don’t really have time to do it. It’s a big commitment, both in time and monetary. My kids were just never consistent enough in their needs for me to be comfortable buying tickets for something. That was a little sad.

Now enter COVID-19 and all concert places close. But some decide to figure out how to take it to the internet. On those, there were three kinds:

  1. Live concerts – you have a specific time that it starts and ends
  2. On-demand, but time-limited concerts – you have a few days to watch, but you can watch whenever you want
  3. Fully recorded – the concert is available to watch whenever you want and will be available forever (or at least for a very long time).

I think due to licensing costs, most professional performing arts organizations are doing options 1 & 2. Now, especially with option 2, I can watch it again! Which has been pretty amazing when I can. The best one this last few months has been the Pacific Northwest Ballet (PNB). I have to admit that out of those 3 types of performances that I talked above, ballet is the one that I understand the least. But being able to just sit at home, on my living room, and watch an “almost kind of live” concert has been pretty cool.

I hope when we come out of this, the virtual concerts will continue. Right now that’s what the next season seems to suggest, but it’s still a pretty “hybrid” state for the pandemic. So I can’t really tell yet if it will be something that is here to stay or not.

I can’t end this post without being saddened by the arts organizations that were not able to survive this pandemic. Switching gears and being able to figure out the technology and way to interact with the audience during this period was not for everybody. My hope is that things will come back. Just like many restaurants closed during this pandemic will likely be replaced by other restaurants, most (hopefully) of those organizations that closed will either reopen or be replaced by another organization to fill in the gap. We will get through with the pandemic.

Note taking

I spent a lot of time over the last few years thinking and trying out note taking strategies and applications. From Evernote, OneNote, Notion, Roam Research, Obsidian and today I played around a little with logseq (and I’m probably forgetting some others that I’ve tried – not to count Google Docs, Apple Notes, or to go into the to-do tracking tooling).

What am I using today? Roam Research

Do I like it? I’d say, yes. I think better than all the other note taking apps that I’ve tried before. Is it perfect? No. Part of its approach is really not to be perfect and to try to be simple and let you just write. But I’m getting ahead of myself.

Let me maybe start with what I use it for. I’ve been trying to do is two things:

  1. Archive learnings that can then be retrieved later
  2. Planning for things to do, things to write

I feel like Roam is pretty good somewhere in between the two. The main thing that it’s aimed for is for research, where you want to look at a lot of ideas and thoughts, and then try to find the connections between them to build on top of past things. It works well when things are “actively” used because they keep showing up when you try to reference something. So if all you want to use it for is something more like an archive that you want to retrieve specifically later (and not by accident while tying to reference something else), then it can become a little noisy pretty quickly.

On the planning side, there has been a lot of “hacks” that have been added into how to do to-do lists, schedule things in the future, track and manage goals. And I think those can work, but they all need effort. You have to populate something, jump between pages, or create templates with embedded pages to try to reduce this effort. But the unstructured nature of the tool, it ends up being work.

If I think it’s not a great match for what I’m looking for, why did I stick with it for now?

  1. I really like how quickly I can just add information and not have to worry about structure. I was a pretty heavy user of Evernote before and fine tuning documents, document tags, notebooks, and references to documents was very time-consuming.
  2. There is a component to what I do that is nice that I can start connecting dots by using the right tags and seeing what is there. I love the idea that I can do something like [[John Doe]] #FollowUp in the middle of notes and then build a query on “John Doe”‘s page that just shows all the things that I have to follow up with him.
  3. Very fast synchronization between multiple windows. At home I find myself sometimes switching between my work computer and personal computer a lot at night and it’s nice that whatever I write on Roam on one automatically appears on the other.

What I don’t like about it?

  1. Price – it is on the expensive side. I think it’s the most expensive of all tools.
  2. No useful mobile app – there are times where I mostly just want to query my graph on my phone and it’s not easy (I open the web app, but it’s not really meant for mobile). This is not that important today because I am mostly at home all the time, but I can see that being very annoying once I start taking the bus again and wanting to take notes about things then.
  3. Feels slow on feature improvement – a lot of the “modern clones”, like logseq and Obsidian (logseq is very Roam-like, Obsidian has a slightly different approach for some things) have a lot of good features, like templates with variables. Roam seems to me to spend a lot of its time on community building and not as much on externally facing feature development.

Some people are concerned about privacy and I agree that it makes sense to be concerned about it. Just not really something that today prevents me from using it.

Maybe one day I’ll post here all the pieces that I’ve added to my Roam to make my workflow faster. For now, I’ll stick with it and see what it will take me.

Long Live to the Semantic Web

I had a conversation this week that reminded me of my old days of thinking that the Semantic Web was going to make the world a much better place. Well, I can’t say that I was right there. Before I go further on why, let me step back and explain what I thought the Semantic Web was going to accomplish:

One of the problems of the internet is that you build these linked silos (sometimes not even linkable) of information and activity. Let’s say that you want to go to a coffee shop that is walking distance to you, has good reviews, and that a friend of yours has recommended. Today the only way you can do it is to hope that there is a service out there that has merged all those features and that is nice enough to allow you to filter things that way. But there are services out there that allow you to know what is walking distance (for your definition on how long you are willing to walk), there are reviews, there are communications with friends. It’s just that they are not connected in any way.

What the Semantic Web was going to do was to allow you to have a “meta-internet” which allows people to build features on top of other people’s data and activities that would tailor to specific goals. It would still maintain “ownership” of the data (e.g. it wouldn’t require somebody to crawl and keep a copy of all the data), it would just abstract the presentation of the data to a specialized system. And that system then becomes the source for even more specialized systems.

Sounds cool? Well, I thought it did (and actually part of me still thinks it’s cool). But it didn’t work (there are still semantic web researchers out there, so maybe some people think it hasn’t worked yet, but it may still one day work). Why didn’t it work? There are many really hard problems:

  1. There are many technical challenges of doing this distributed dynamic queries efficiently considering you don’t own pieces of it, so you have to constantly deal with potential availability and latency issues.
  2. Representing data in a way that it’s expressive and reusable is very hard. On my days of working at the Amazon catalog, I’ve learned the cost of getting high quality domain-focused data at scale. Imagine getting data that is “complete” so that it can be correctly connected to other things… So expensive that companies would need to have a very strong financial motivation to do it. Without owning the experience and guaranteeing stickiness, ad impressions, and constant feedback on how you can improve things, it’s very hard to show that financial motivation.
  3. Building the higher level applications also isn’t easy. The logic-based language that is used to represent knowledge and be able to navigate through it isn’t for the faint of heart.
  4. There are lots of security considerations around interacting through data.

That’s it. Can’t be done? Well, maybe there could be some partial light at the end of the tunnel. The key piece that is changing is that we now have much higher level “programming languages” that might be able to at least solve for (3) by moving away from this complex logic-based language into more of a natural language approach. Behind a lot of what voice assistants do today is technology that was researched by the Semantic Web people.

Another thing that has continuously evolved is on making data available through APIs. It’s not the same as (1) where everybody is talking the “same language” and you can connect concepts almost “out of the box” by just adding configuration. Every API that you integrate you need to write code specifically for it. But back to the higher level programming languages idea, maybe it’s becoming pretty easy to consume those APIs more consistently, so we can build that joint knowledge.

Now we are left with financial incentives for companies to open up their data and security considerations. On the security side there are some pieces of support for it, but making that efficiently and have some transitive permission model is still an open question (which points towards things like OpenID, which didn’t get much traction either). On the financial incentives, well… That’s not my area of expertise. If it wasn’t so expensive to do, I’d harbor some hope that a Wikipedia-like solution would eventually happen (like Wikidata), but I’m not so sure it can.

Maybe it will be built internally at a company to power their voice assistant and search and then the US government will come along and force it to break it apart and the only way they can keep powering both with the same source was to open it up for everybody to use. Yeah, wouldn’t that be cool?

Reading to learn

I’ve read a lot of different books and articles that highlight the importance of reading all the time to increase your knowledge and the most successful people are the ones that are constantly learning.

I’m going to agree that learning is important. But I think I have a slightly different take on what learning really is and how to do it. Actually, it’s not really novel, just something that I feel like a lot of these articles forget to emphasize.

The key concept that I believe is that we need to learn by doing. Just reading something and not putting it into use does not give you actual learning and I don’t think it is really that useful. Or else, considering the hours that the world spends reading Facebook, Twitter, WhatsApp, etc. we would be a very enlightened society. I don’t think we are quite there.

One consequence of doing it is that we can’t learn by just discussing the quantity of books that you read a day/week/month. More books can actually be the opposite as I’m going to claim (and I’ll weaken this claim a little below) that you are probably wasting a good amount of your time skimming through important information that you will just end up forgetting and never taking advantage of.

There are a couple of exceptions to this statement that come to mind:

  1. Reading for empathy sake: there is a good amount of research that supports the reading fiction is good for improving your empathy, your ability to put yourself in she shoes of somebody else (because that’s what you are doing reading those books). For that use, actually reading is all you need to do.
  2. Reading for building connections: there are some cases where you don’t really have a way to put something to practice directly, but you may do it by using that reading to then nudge your brain to connect concepts that you didn’t connect before. So you may be able to work on the concepts of book A and by reading book B and continuing to work through book A’s ideas, you will find yourself actually being able to connect A to ideas in yet another book C, because B provided you that mental bridge.

I think the most important thing to think about is really to spend time doing things.

Even if what you read is fiction only, spend time with it. Think about how the author develops the story or the relationships, and consider how that could help you develop relationships around you. Maybe take some time and rewrite a chapter of the book in a way that you think it could have gone. I’ve also seen people spending time actually trying to draw or build things that happen on the book, or cook the food on the book, taking you even deeper into the empathy that you get from it.

Yes, that will most certainly take time out of the time you’d be reading. My thesis here is that this is a good thing. Quality beats quantity.

Another side from it is that it will keep making the world better in aggregate. If most of us are just sinks for knowledge, or just filters of knowledge, then knowledge is not being built as quickly as it could be if we were all producing our own dimension to it, adding a little bit of insight and connection to the world.

Background music playlist-making frustrations

From time to time I decide that I want to listen to music while working. It’s not that often because my calendar is usually filled with meetings, so the best I often can do is to listen to music at the beginning of the day.

But today I had a big block without meetings so I decided to go for it and build new playlists of things to listen to. And that, for me means classical music. So I went to Spotify and did some research on what to listen to. When I don’t have an actual idea in mind, I often open their “new releases” playlist and then select a couple of albums from there to listen to.

Maybe let me step back and explain something that annoys me deeply about some (many) classical music playlists, especially the ones that are created by algorithms: they usually don’t include whole pieces, but just a movement of a piece, and then another movement of a different piece. That’s now how I listen to classical music, and I think that’s not how anybody should listen to classical music.

So back to my method: I’ll then go to each song that seem interesting and open the album to get the whole piece (and sometimes the whole album). So far so good, right? Well, not really. Thank you Spotify! Here are some examples:

I select an entry from the playlist…
I get a single?
Another example…

I had a lot of examples I could place here. I don’t know who it to blame for this, but some process is setting up tracks from actual albums as singles, so even if I wanted to listen to the whole piece I can’t!

I was frustrated about things like this (and auto-generated playlists) before and did try some classical music-focused services in the past and I’m not sure I was excited enough about those to stick with them. They were more expensive and considering that I don’t listen that often to them and they don’t offer as many integrations as Spotify (and Amazon Music), I ended up giving up on it.

So, well, today I’m ending my day still frustrated.

The spiral

It’s hard not to notice how much this year has forced us to adapt. March brought us (at least here in Seattle) COVID-19 and staying at home with kids almost all the time. We survived the kindergarten part of it, then came Summer and there was some sort of rhythm that was built at home of going out for a walk in the mornings and then starting the day. Then came first grade, which made things a little bit more complicated in the morning. Then came smoke and bad air quality which completely cancelled the morning walks.

But it’s fine, we adapt. Especially considering that I’m very fortunate of having the flexibility of choosing my own path to adapt. I still have my income, everybody in my family is healthy, my house is big enough that I can work at the same time as my older son is at his school Teams meeting and my wife is playing with my youngest, and nobody is interrupting anybody. I can’t say the same to a very large portion of the population.

Happy 2020!

It’s 2020 already and I feel quite old… For somebody born in the 1970s (yes, towards the end of that decade), 2020 feels like it was so far in the future!

The 2010s was a decade that contained a lot of changes. Marriage, 2 kids, 2 houses purchased (and 1 sold)… They were, for the most part, additive. So it was a pretty good decade (actually 2000s was pretty good too, but mostly circled about moving to the US and settling down here). What I expect (or don’t expect/hope won’t happen) in this decade:

  • Kids will continue growing. The oldest will be in high school at the end of the decade! (yikes)
  • Hopefully no more house buying or selling (but can’t be sure of that…)
  • I’ll probably still be a software developer at the end of the decade, or potentially doing more stuff in the management side. Unlikely I’ll retire or “semi-retire” (i.e. choose a lower-paying job that is more like a hobby-turned-business).
    • I will not make any statements on how many different companies I’ll have worked through the decade, because I think that’s something that can be interpreted incorrectly. I currently have no plans that include changing jobs in any planned window of time.
  • Looking back at the decade, the world and how we interact with the world would have changed a lot. I think a lot of it will be due to climate change and the things we will have to do to slow it down. It may be gradual and we may only be able to notice it in a more aggregate form, but it will happen.
    • Some of it will be good, of us being more aware of the resources we are using and the secondary effects around its use
    • Some of it will be bad. Many places and ecologies will be lost forever. Some activities will have to be adjusted to be more indoors, to move more inland where there will be less flooding.

I could go into technologies that I think will actually change in the 2020s, but I’m sure there are better lists on that out there.

Anyway, I’m happy we made it this far. Happy 2020!

Probability can be confusing (maybe…)

I’ll skip the long story that leads to the following statement, but I currently have a 1-year subscription to Blinkist. I think it’s a pretty good service that provides some interesting (but sometimes a little biased) summaries for nonfiction books.

So I was reading one of them, on The Drunkard’s Walk by Leonard Mlodinow and it had the following statement:

Imagine you start rolling a dice and recording numbers. Would you expect the results to be perfectly random? If they were, each number would appear exactly once every six rolls.

I stopped and re-read this a couple of times to make sure that I had it right. Well, outside a pet peeve of mine of using “dice” as the singular, where it should be “die”, the problem is that this is not the definition of “perfectly random”. It’s a definition of “very biased, where the 6th roll is always deterministic”. They are treating rolling dice as if it’s sampling with no replacement, which that’s not how dice work. The side is always there even after you roll it once.

First, I don’t think this is a problem with the original book, but with the summary provided by Blinkist. So why did the summary author make this mistake? Well, I think that it’s because actually probability thinking is not something that is natural to people. The book even talks about it being reasonably recent when it was formalized on even simple things like “why is it more likely to roll a 10 when you roll 3 dice than a 9?” It’s fascinating to think about that from the other side of having studied statistics for a while.

But don’t give up on the summary just because of a mistake like this, even if it was a little bad. The rest is actually pretty good. It doesn’t fully convey what is in the book, but it has a good amount of interesting bits that makes it worth reading.