100DaysToOffload

#100DaysToOffload I thrive in a low-tech environment

A vacation is a great chance to step back and reevaluate my current situation, maybe try a few new things and also maybe just refill the batteries. I’m still in the middle of the three weeks summer vacation so any reflections are probably not yet solidified enough, but I anyways wanted to put these few little insights here, because the summer vacation part itself is kind of over - the last of my three weeks will be spent visiting my brother and mom.

The main thing that I have realized:

I actually do enjoy a low technology environment and it makes me do the right or interesting thing more often.

The right or more interesting thing is reading, writing or being attentive in the here and now and enjoying my surroundings more, being more available to my partner or the dog. Part of that is not wearing headphones and listening to podcasts all the time.

While we were staying in a hut without electricity I managed to finished one book, read half of another and wrote a bunch in my handwritten journal. At the same time I took immense pleasure from the surroundings: we were staying in a national park on an island that could only be reached by boat. Listening to podcasts or watching youtube would have only taken away from the experience. I conserved my phone’s battery so much however, that I could listen to a podcast while falling asleep, which made listening to the podcast so much more valuable as well, since it was not a resource that I could access all the time or that was so plentiful as to be exhausting.

A photo of table inside a cabin, on which are laying a few items: a base cap, an empty soda bottle (club mate), an ebook reader and a notebook with a strap holding it closed and a pen tucked inside it

Writing in a little notebook by hand has been great, too. I was able to add some stickers and my intention to write did not get redirected to consume social media or whatever when looking at my phone.

Living (and not only working) at my own natural pace is really the key to my happiness. I will have to see how to integrate this with the demands of my job. I have noticed, though, that I am looking more frequently for more efficient ways to do things.

Example: I am emptying the dishwasher now by taking the dishes out in a way that batches them according to where they go (plates get taken out together, cups and glasses etc.) instead of emptying them according to the drawers in the dishwasher. This old way was less effective, because it meant closing and opening the same doors and pulling and pushing the same drawers over and over again. Now I just do that once and I can empty the dishwasher with less effort.

(Last updated: )

#100DaysToOffload Reflexions After Two Weeks Of Having Accepted My Ineffectiveness

(I started #100DaysToOffload on the first of June and have written - not including this one - 12 Posts. I guess that’s enough to make it? About a third of my days are spent pressing publish on a blog post. So far so good. Before I finished this paragraph, I was thinking that I was too slow …)

I had reasons to maybe reflect more inwardly for a moment, which is why I didn’t write for a couple of weeks or so. Things at work didn’t go so well, which was mostly because of me being told I was slow (and having been shown incontrovertible evidence proving this) and having to learn and having to un-learn and to accept a new truth about myself: That I am being slow and me being good (as good as I am which is good but not evenly good and certainly not fast) at my work was and is mostly a result of being slow and willing to make up for it by working longer. Which is not a mode of working that is economical and that pays the bills.

In a big company this might not matter as much. You’re embedded within a team, within a project and within a department, which will protect you somewhat from being directly exposed to your impact on the company’s bottom line. But the smaller the company the more directly the way in which you’re contributing to the value that is being created by that company is noticeable. You’ll feel it way quicker and more directed towards yourself if things are out of order if it happens to be cause by the way you work. In my case being called ineffective repeatedly over my first year at the new job was both shocking and accompanied by disbelief and dread. But I only needed to look at my estimates, the time it actually took to implement a feature and how many of the hours the company could actually charge the customer and compare that with my coworkers. The feedback was real and objective. It still took me almost a year to accept it.

As you can imagine: Realizing that you’re slow and ineffective had and still has all sorts of cascading side effects. I reexamine what I believe to know about myself and what I think is true about the nature of work and live in general. Contemplative sense-making has become more of an important part of a good live for me than the only way of being. I notice others that are slower and see companions. Like my barber, for example. And I appreciate that she takes her time. Whereas before I was sure that any criticism of a slow life is just an uninformed un-thought-through opinion, I now come to recognize - intellectually, if not yet experientially/emotionally - that you can maybe also want to be effective instead (or in addition). I still bristle at the insinuation that living an exploratory, tranquil live has anything to do with wasted effort, but I will have to somehow figure out a way to combine economical pressures with the qualities that make a live, no, my live, worth living: Reflexion, focussed attention, taking my time, craftspersonship, exploration, deep understanding, empathy, diversity. I kind of still don’t know what this all means.

I’m willing to find out, though. And what I do understand: That not being effective is what holds me back in my career, maybe in live. So I will have to go through this crucible. I am not making money in a contemplative career - I am no writer, academic, critic or whatever. So I can’t just turn around and proclaim that a fiber of the reality I live in is somehow “wrong” as if there is a choice to be made by me. I may bring myself to call it a negative or bad aspect of a modern, digital, data-driven and market-oriented society, but this still means I’ll have to live with it and master it to the best of my abilities.

(Last updated: )

#100DaysToOffload Difference Between Productivity And Efficiency

As I’m trying to figure out how to become more efficient, I need to figure out what that even means, especially because efficiency can be easily confused with productivity. So let’s have some term definitions:

  • Productivity measures how high the volume of production in a given time frame is
  • Efficiency measure the degree of avoidance of effort during production

So productivity is about how much you can do in a given time and efficiency is about how to avoid extra steps and still get the same job done.

Productivity can be a trap sometimes because it speeds us up to get more done, where a better way would be to do less without producing less output.

In programming, we have two types of work: analytical and implementation work. I think that in both cases there are ways to limit the amount of unnecessary effort.

If the work is analytical, the question is alway what do I need to know right now to make it work? Knowing a little too much about a given module without knowing it all, might make me want to change the code more than I need to. Instead, I should write down what I have learned in my notes system. “How to run the importer without downloading images” could be an example. I would want to know more than that, maybe also how to change the importer, so that it excepts a parameter to not having to monkey around in config files, but knowing where to go and what to comment out is enough and gets the job done.

If the work is implementational (is that a word? now it is!), then there are many ways to exert extra effort: I could create new classes, interfaces, services, methods, refactor unwieldy code, add parameter and return types, make a piece of code behave more according to the architecture, add missing tests, … the list is endless. So far I always looked for best practices within the company or outside the company if there was no consensus yet on how to do things. But best practices add up to become an endless list of what to do and how.

This imagined list of things to do when touching or creating code can have a cascading effect, because change begets more change.

I will have to keep my eyes open for things that I do that strictly speaking don’t need to be done to be a more effective programmer.

(Last updated: )

#100DaysToOffload Hub "Efficient Programming"

Changelog

  • 2024-06-23 - Created this note
  • 2024-07-04 - Added “Reflexions After Two Weeks Of Having Accepted My Ineffectiveness”

Note

See Post Hubs for an explanation of these kind of posts.

The efficiency part is where my main problem lies: In order to deliver on time I will need to learn to cut corners and leave messy code as it is and even add my own mess on top of the rest at times.

This doesn’t seem to enable delivering greatness. After having read Slow Productivity recently, that has a completely different philosophy about work - “do fewer things”, “work at a natural pace”, “obsess over quality” are its main points - this job stands at odds with this philosophy (that I am whole heartedly agree with).

I now think that this is not the correct framing. It’s reasonable to assume that I will work for the rest of my career in situations that demand - more or less - efficiency. “Delivering greatness”, in part, is about making it happen under economic constraints. Entrepreneur or salaried worker: This means that I need to be a good investment to be allowed to work on whatever I deem “high quality greatness"™. — Quality And Efficiency

This post was a first attempt at framing the problem of being an ineffective programmer. Before this one, I wrote a very emotional one that was mostly fueled by fear of getting fired for taking too long at work:

It sucks to admit, but I am pretty slow, when just measured on delivered features compared to many others. The main reason is that I am unable, maybe also unwilling, to “just deliver”. — Just Deliver

I am now trying to figure out what makes me inefficient and how I could become more efficient.

After two weeks sitting with the problem I think my framing of overcoming my own ineffectiveness is correct: I will not be able to escape it and it’s good to challenge myself:

(Last updated: )

#100DaysToOffload Categorizing Code Changes

In an effort to become more efficient, I wondered how I have tackled issues at work so far:

Here’s a little categorization of how I approach different kinds of code changes.

(Disclosure: I don’t do this literally, but intuitively …)

First, I ask myself if the change is trivial or not. Is it just something really small and contained, like changing a constant or what is returned from a method? Or a small visual change? This is so easy that I generally only do that change and nothing else. Maybe I add a type hint or update some kind of documentation if it exists. But that’s it. Hard to get more efficient here.

If the change is more complex, I subdivide this category immediately into two subcategories: is it something entirely new or is it a substantial change of existing code.

What makes these two cases different is the kind of analysis (and implementation; see below) I’m doing. If it’s new stuff, I try to imagine what a good, modern, sustainably maintainable version of the app or website I’m working on might be in general. What would be a good, extendable starting point? Very often the tech stack is set, but the question becomes how to use what is given in the intended/best™ way.

For example I recently was asked to implement a CRUD-App as part of the admin interface of a website. After some probing on what the appropriate tech stack might look like - since I hadn’t yet done a greenfield implementation in this project - I knew what tech stack template to fill out. I decided what layers I needed, what build system to use for the frontend, how to bundle the backend code, how to test the code and how to run those tests in a pipeline on push. Some of these things were realized easily, others took longer, for some of them I had ideas for what modern best practices looked like, for others I had to research them. Because the system this crud app was a part of monolithic “portlet” system that subdivides the contents of a page into reusable widgets, we had to take this into account, even though we didn’t need that much complexity. In the end, I built a relatively modern portlet-compatible crud app. While implementing the core features I learned more about the entities we were dealing with and how they connected to the rest of the website, which meant doing revisions of the main model a bunch of times and it turned out that the JavaScript module had to be relatively complex because we wanted some interactivity that I knew about but hadn’t thought about hard enough beforehand. So yeah. Lots of extra work upfront to make working with this crud app nicer later and a good amount of revisions during the main implementation phase of the mvp to fulfill the architectural and quality criteria I had set for myself.

If it’s a complex code change the cuts across lots of different already existing modules or classes, the question is more how we can make these classes friendlier to accept change in the future in general and how my changes could be implemented in such a way that they themselves can be changed easily. So not only the integration code but also the feature code should be extendable, readable and hopefully easier to reason about after I touched it.

Another task I had was to repair and update a multi-tenant system’s copy tenant functionality. This was a complex task that cut through a big chunk of code. It was extra complex because the legacy system had some quirks you needed to know about and was very hard to test, because some of the classes were autogenerated and copying a tenant took minutes to complete. After a long and sometimes arduous process of trying to understand how the system worked and how its data was organized, I reimplemented the copy tenant functionality that had previously been based on copying its mostly hierarchical data on assumptions that didn’t hold true anymore, so that it would not presume things that would lead to broken tenants, fixed a handful of bugs and unexpected behaviors on the way, but also made sure that the button “copy tenant” basically did what it did before, only now finally correctly. I’m not going to lie: I had tons of help to accomplish this herculean task and it’s not humility that makes me give credit for most of the actual implementation in the end to one of my lead programmers. Big chunks of time were spent understanding the legacy code, figuring out where it went wrong and figuring out where and how to put the corrected code in a mostly non invasive way.

So both kinds of complex change consisted of chunks of implementation and blocks of analysis. Both types had some work that was extra in some way. So let’s look at the details of that.

The implementation of new software consists of creating lots of new files, folders and “hooks” that connect the new to the old. We can always immediately work within best practices: Clear separation of concerns, no spaghetti code, native type hints throughout and tests from the start to name just a few.

Implementation blocks in already existing code of varying degrees of decay is different. We talk about refactoring and just making a sensible “hole”, for us to fill with new features. We may need to change what a method returns, introduce a new service, rework an existing class, by adding properties, methods or making it conform to a new interface to make it more easily replaceable, change were business logic is located, accessed, or what it decides in what way. There are many ways to work with existing code. Some of them are about making the aforementioned hole for our new logic and some of them are about making it easier to comprehend the legacy code. I have yet to work in a project that actually took the time to do systematic refactoring that goes beyond just making a thing work. It’s all rather piecemeal.

The analysis parts are also pretty different: The new stuff consists mostly of understanding the modern best practices in the context of the concrete implementation I’m supposed to do. How does Vite want me to work? How does a modern Symfony bundle look? Should models have fluent setters/getters? Should models be immutable? Many of these kinds of questions are about how to bring ideal conditions into my concrete implementation. On top of best practice questions are questions about how things work. Like Vite for example. It took me some time to figure out how Vite’s library mode actually worked. How Vitest worked. How and why modern Symfony bundle practices wouldn’t work within the context of our legacy system, etc. The last example is also a good example of how we have to figure out how these best practices and technology options out there in the world actually map onto our concrete case. Because sometimes they don’t and we have to figure what that means for the project.

Analysis of old code often means just groking what it does and how it can be changed. If you know nothing like I did when I started working on the copy tenant functionality you may need to figure out the bigger picture as well as the details of the thing you’re actually supposed to change. This has many dimensions to it. From guessing intentions of programmers that came before me, over parsing of algorithms and business logic, following call stacks and simply figuring out where to look to understanding the data that flows through a given system, there is always a lot going on.

When it comes to complex changes especially, but also trivial ones can exhibit this, there is always an amount of extra work involved. This extra work might be part of the analysis blocks or part of the implementation blocks.

This extra work could be adding a code quality tool. Or it could be cleaning up a a method, while making sense of it. Or it could be taking the time to really get into understanding the details of how validation is done. Some of this extra work makes essential work easier. Most of it makes the essential work more fun, I find.

Analyzed like this it becomes more clear to me, that part of my problem of being inefficient is that I enjoy the extra work and that I am kind of stubbornly hoping when embarking on a new programming adventure that the extra work could be my main work. In other words: I am behaving irrationally!

Going forward I’ll have to limit the amount of extra work I do (e.g. less fucking around). That has to be part of the solution. Another point is that figuring out what to do and not fucking around and explore has been traditionally hard for me. I think (hope) that writing things down in a composable way using my trusty notes system will help me figuring out things faster, since I will be able to rediscover what I already figured out before.

(Last updated: )

#100daysToOffload Quality And Efficiency

What does it mean to do well at work? As far as I can tell, it means that you do the work reliably and do it quickly (or rather: efficiently) and do it in a appropriately qualitative way. For programmers that means delivering features, preferably within the given estimate (allowing for some margin of error and the ocasional outlier).

So: Reliability, efficiency and quality is what can be used to judge a programmer. If would need to judge myself, I think I have the quality part nailed down. I am not afraid to tackle structural problems in a legacy system, do refactorings and take the time to remove technical debt. However it’s the other two parts that I’m lacking.

The reliability part - meaning that I deliver consistently - is not as problematic than the efficiency part. This translates to me being able to deliver the same high quality in the same inefficient manner.

The efficiency part is where my main problem lies: In order to deliver on time I will need to learn to cut corners and leave messy code as it is and even add my own mess on top of the rest at times.

This doesn’t seem to enable delivering greatness. After having read Slow Productivity recently, that has a completely different philosophy about work - “do fewer things”, “work at a natural pace”, “obsess over quality” are its main points - this job stands at odds with this philosophy (that I am whole heartedly agree with).

I now think that this is not the correct framing. It’s reasonable to assume that I will work for the rest of my career in situations that demand - more or less - efficiency. “Delivering greatness”, in part, is about making it happen under economic constraints. Entrepreneur or salaried worker: This means that I need to be a good investment to be allowed to work on whatever I deem “high quality greatness"™.

I’ll have to learn to actually make hard decisions, because I will need to make more trade-offs. I will need to get an intuition for when I can cut corners, what corners can be cut, the different ways in which corners can be cut, how to argue about corners and trade-offs and so much more.

If you’re just looking at it from a “best practice, always” standpoint, these things seem not necessary to consider, but I’m now convinced that it’s actually efficiency + quality more than quality on its own that could bring me to the next level in my career.

#100DaysToOffload Just Deliver

I had a hard day at work. It was hard, because I ended a streak of about three days, in which I was unable to work productively and today was the day in which I finally had to “show my work”. And then nobody saw my work. But now it’s lying there, out in the open, awaiting feedback. And I have to go into the weekend with a feeling of dread.

I’m a programmer by trade and a slow, but hard-working, explorative kind of person in general. I love to find out how things work, how they maybe could work better and how to make a system such that it can communicate well with the people maintaining it. Which means that I’d rather spend weeks reworking a legacy system, improving its workings and reorganizing and tidying up its architecture than implementing new features. So I like to do the work that is most often appreciated by other programmers - on a good day (most often people will not really notice … until they do). Keeping a system in good working order. Like a well oiled machine. Notice that end users or features are not necessarily part of that. It’s not like features are uninteresting or unimportant to me, but the how and the why matter to me a whole lot more. Especially the how.

However. Because I get payed for features or bug fixes on features and not for refactoring, removing technical debt or thinking about software architecture, I am not the best programmer for the kinds of tasks my company offers, sometimes, I’m afraid. It sucks to admit, but I am pretty slow, when just measured on delivered features compared to many others. The main reason is that I am unable, maybe also unwilling, to “just deliver”.

I assume that being able to “just deliver” - meaning without refactorings (e.g. to make especially gnarly code comprehensible for me and future programmers) or enhancements of the project’s setup (e.g. to configure an autoload feature as I needed to do today) - is the result of either not seeing the problems (e.g. maybe not being as experienced, yet) or being experienced enough to not care about the problems anymore (e.g. maybe by having had to navigate some portion of legacy code so often, that they just know where to look without the need to make the code more comprehensible).

But I see it everywhere at my work: The people who are good enough to be hired permanently (which I was, too, somehow …) all seem to possess something I don’t. I hesitate to call it more experience or talent. Which is not to say that I am perfect. I do readily admit that I totally have blind spots. And even where I feel confident, I know that I could still learn a lot more. And I also admit that my values are sometimes at odds with what is the bread and butter of my job: just deliver features. On time. Without too much back and forth, in acceptable quality (but nothing more, since nobody is able or willing to pay for it).

So what is it then that makes my colleagues better at this? I think it is a willingness to not care as much. That’s the “just” part of the “just deliver” motto. I don’t mean that derogatory, even though it sounds like it at first. If you are able to not care about technical purity you may be able to deliver faster. You may be able to overlook a less than ideal implementation to have a working version earlier - which can be a good thing.

Apart from being less concerned about technical quality, I think there is a certain soberness in most of my colleagues. No matter how difficult some code may be to read or how tight a ticket’s allowed time budget may be, they seem to be able to not need to reinvent how to do things all the time - like I seem to. They can keep their powder dry. They do not need to go over the top, whereas I seem to go over the top by the drop of a hat. Maybe a reason for this is differences in personality type, sure. But I think that it might also be a difference in approach, which is much more interesting, because I might learn to incorporate that approach.

I think the soberness comes from having somehow learned to respect lines in the sand. Like today (Friday), when I had to hand in part of a feature and a whole lot of refactoring and general enhancements of a new (to me) project that I was introduced to on Wednesday. Another programmer would have not done that. They would have been able to not even seriously contemplate the possibility to do what I did. They would have done a more minimal job, probably cursed a lot, probably complained a lot, but they wouldn’t have spent the better part of three working days delivering two thirds of a feature that was supposed to take around two hours. All the while having to come up with justifications to do so.

So yeah. Other people don’t do that. As much. I’m sure this is a spectrum rather than just extreme me vs. moderate everyone else. That I’m so dismayed by this, is that I might also be considered too old to not have yet learned this already (I’m 37, with more than 5 years of work experience). In one word: I might be too expensive, if I don’t learn to bend a lot more. And quick. That’s enough to make me feel bad. Since it’s the weekend without any feedback coming my way until Monday, the bad feeling is mixed with anxiety.

I can’t really tell how bad it is this time. With the recent worsening of the IT job market and the general worsening state of the economy, I’m extremely unsure of what to expect if this problem continues of worsens over the next 6 month, let’s say. I feel like wasting almost three days after having been repeatedly told since I have been part of the company to pick up the pace (not in so many words, but basically that), be more pragmatic and trying to make smarter choices about which way to take to deliver solutions, I feel pretty gloomy to be honest. I feel defeated by my personality in some ways. I don’t know how long this can go well.

I hope that I will catch myself in time, next time. And for the things that have already been done: I hope I find a way to navigate the probably coming, somewhat difficult discussions ahead. That includes discussions around basically ignoring what I was supposed to do for the last few days and booking my hours in sometimes questionable (if technically justifiable) ways.

One silver lining: There is a chance that the extra work is welcomed after all. I might still be gently scolded, but in some ways taking the time to come up with a better solution and thinking long-term is almost always a positive, of course. So here’s to hoping that the people paying me think so, too. Fingers crossed.

#100DaysToOffload End of the myth of rational public discourse - The example of climate change

A couple more items that make it clear that climate change is not going to be stopped. National interests are more important than planetary problems.

Here’s Noah Smith with a piece about climate change as the only policy goal and how viable that is:

But despite what many of my friends and colleagues thought back in 2017, climate change is not actually the main reason for industrial policy, nor will it be going forward. And so they are shouting into the wind.

The main reasons for this are:

  • people are not moved enough to care about climate change to vote differently (in the US, but I’d wager in Europe, too. They are for sure not willing to pay for it.)
  • the green energy transition will come regardless of it not being the only priority (but I will add that the energy transition itself will not make climate change go away: yes, technological advances mean that switching to (mostly) solar + battery is going to happen, because its the cheapest way to produce electricity/power nowadays, but western countries are not the main polluters and even then everything that can be done is too little, too late. In a way the energy transition is almost decoupled from climate change. Taking the Jevons Paradox into account, we should expect more consumption and therefore more production, more use of resources and a bigger toll on the planet in the end.)
  • national security and reindustrialization are more important than climate change and climate change needs to be an argument for this reindustrialization to make any waves at all (Security and reindustrialization mean bigger footprints, not smaller ones)

In short: The changing world-political landscape makes it highly unlikely that rational arguments or strategic protests will persuade humans to change their ways (I think I’m allowed to generalize here).

And for individuals this means that we have to learn to live with ever hotter summers. As for example this professor expresses:

Youtube: Climate records keep getting shattered; expert says this is the new normal

So, yes. We can stop asking the question, how we can mobilize the public for climate change and against biodiversity loss and start asking the question how we can live in a world that is not going to bend to reason (at least at larger scales … I’ll have to explain that soon in more detail).

#100DaysToOffload #Oulu - Appreciating historical monuments

A scenic photo featuring Napu the dog, standing on a cobblestone path under a flowering tree, with the Merikoski hydroelectric power plant's dam visible in the background. The scene includes a grassy area and a bench where two people are seated, enjoying the serene environment. The dam and surrounding nature are bathed in warm, late afternoon sunlight.

We live in Oulu and Oulu is noteworthy in part because of the hydroelectric power plant that has changed the face of the City’s river (called Oulujoki, literally Ouluriver). My partner and me, we talked about the dam a little while walking along the basin on top of the dam and it made me think that a monument like this is interesting because of its multi-facetedness:

On the one hand, this hydroelectric power plant can - if the conditions are right - provide the city with about a third of the electricity needed in a year. It is therefore a marvel of engineering, and it doesn’t need to burn anything to produce this energy. It can therefore be considered green energy. On the other hand, the power plant changed the face and course of the river forever and has had a not insignificant impact on the nature of the river.

From an ecologist’s perspective, hydroelectric power in general is somewhat questionable because of the large impact it has on ecosystems. The straightening of a river and the creation of a dam are the opposite of protecting valuable, one-of-a-kind river ecosystems. Oulu, for example, had great rapids before the hydropower plant was established that are now gone and gone for good. Its name, “Merikosken voimalaitos” which translates to “sea-rapids power plant”, still points to this legacy. We are not preserving the planet just for us, so if a power plant like this produces “green” electricity, what does that even mean? So we can continue business as usual? That seems counterproductive and naive to think about it so narrow-mindedly. From a historical perspective, a dam like the one regulating the river here in Oulu is a monument to historical development in general. I would like to believe that a plan to build a similar power plant would be considered differently, that we would employ a lighter touch to protect more of the original nature - if we would built it at all. But Oulu’s power plant was built in 1940. And it seems appropriate to recognize that a decision like building this dam was made then within the historical context of 1940 and not today. We need to recognize that our views now are a response to developments of the past, which in turn were a response to past responses themselves.

That doesn’t mean we need to be apologetic about any and all past decisions, but at least from a distance, we can see that everything has historicity inscribed, which makes it possible to appreciate monuments like a dam with a historian’s eye. Our current understanding is the result of collective missteps, conservative take-backs, and risky bets. It’s the sum total of the mixed bags of everything humans have ever created.

We infer what is new, correct and just (for now) from looking at the past in one way or another. A dam with its volatile meanings can be a bittersweet reminder and example of our situatedness in historical time and our transitoriness. We won’t have the last word.

But because of the possibility of watching a dam like this, we can realize the beauty of us being transients in time by recognizing its aesthetic merit. We can recognize that the dam and the park area around the dam - with all their marks of alien-seeming decision-making - can look beautiful and interesting because of this historicity.

Appreciation for industrial monuments like this is possible without bracketing their ecological dimension, by including a historical dimension.

#100DaysToOffload Just Say The Thing

[I keep this nebolous for my own reasons. People in the know will know. Otherwise just take it as a general statement adding to my recent entanglement in the small web community I am a very small part of.]

Gotta be honest: I feel insanely shitty about this whole mb and associated drama. I loved that mb timeline for a while (I was looking forward to using the new Reeder Beta to finally have an app that has timeline sync…), and some (probably most) of the people there are decent people, but some of the responses of the main players in this drama here seem so “automatic”: like just taking the next step in a pre-choreographed dance or something. When you say something insensitive, you first deflect, then tell how you know how “feeling hurt” feels because of your past or whatever, too and then relativize what either you said or what others said. Finally you try to apologize without affirming the values of those you’ve hurt. And then you move on.

And me saying this about other people feels like I’m being unfair. And maybe I am. I long for more complex takes and interpretations (there are always some, but I always would want more), and I would wish for people taking those takes to be inclusive and not to act obtuse. A take is a take. Complex or not.

Complexity shouldn’t be used as a shield.

And if the take was deemed unacceptable and you are remorseful: Is it really so hard to express the problem explicitly? “I accept and welcome all people, trans (et al.) or not. I support LGBTQ+ people explicitly. I kind of forgot my privilege here.” or: “I may not have really thought about the whole OpenAI thing in terms of power relations. I should have not called anybody disagreeing with me part of an angry mob or extremists.”

Granted, that might not work. But I would’ve liked to read it or hear it. I want to give people the benefit of the doubt because I hate conflict the most. I want harmony above all else. But there exists a paradox here: Am I willing to support - sight unseen - people who seem to care about pronouns so much, that they can’t even be asked to put “he/him” in the box of a video game?

I just so wish online discourse would not feel so “rehearsed” in this sense. But what am I even saying? Is real life that different? Isn’t it also quite rehearsed? Am I expecting conservative people to not lose their minds when the topic of gender-affirming practices comes up, for example?

Anything that is informal and breaks the pattern somewhat in the course of a conflict like this is good, I find:

  • writing emails/ messaging in private
  • apologizing in public and showing remorse (in general)
  • using replies and comments to engage readers
  • trying to actually connect with people through the internet, not in terms of values, but in terms of humanness

But: I still want to hear you say the thing! Or express that you don’t understand yet - this might mean others will stay mad until you understand, but I would love to read that at least. Saying the thing is not optional. Connecting in terms of humanness is not a surrogate.

I find it hard to believe in rational discourse at large for this and other reasons - if I even let myself dream that rational discourse could be a real thing. It seems like an unhelpful assumption even in the smallest of (online-)circles.

P.S.: And I wish that there would be some good examples of reconciliation in online conflicts - if I am completely honest. In that sense, I agree with Jason Becker’s post.

#100DaysToOffload - Review: Cal Newport's "Slow Productivity"

I like Cal Newport’s writing - although the person itself is also slightly strange to me: who would mention Joe Rogan’s mike choice as an example for something? In any case. Some good observations on the broken idea of measuring knowledge work productivity like assembly line productivity and fake bussyness.

I noticed that he seems to like to read biographies of knowledge workers in a broad sense and mines them for examples to illustrate what to do or why some things are or need to be a certain way. I may have to try to read more biographies myself. I love memoirs as a genre (I should read more of them), but never gave biographies a chance - because I am kind of allergic to the exceptional in general (but super-curious about the mundane).

The contents of the book are just confirming my feeling that slow and small is the future. As I express also in the end of this post here, for example:

[M]y own life’s plan: A (relatively) small but reflected life in the here and now is more rewarding, more livable, more rational, more emotionally honest and also more ethically sound, than any sweeping pronouncements of a “big life"™ could ever be.

My recent personal manifesto was inspired in part by reading this book.

It’s a quick read (or listen, in my case), apart from the Joe Rogan thing (and it’s not that that mike choice example was offensive, it just was weird and suggests maybe what podcasts Newport listens to? Maybe? Hopefully not? Hopefully not in earnest at least?) quite inoffensive.

People who know Newport’s books will most likely have heard many of those tips from him before, but the reframing in terms of slow productivity is interesting.

(Last updated: )

#100DaysToOffload - Overview

  • Last updated: 2024-07-04 - 18:40

Similar to my overview for the WeblogPoMo, here’s one for #100DaysToOffload. I won’t be adding all 365 days here, yet, but will add dates as I see fit.

#100DaysToOffload Manifesto: Limiting Projects To Not Be Limited By Them

(Having recently ranted against Manifestos, I had a reason to formulate one of my own. I hope that this personal manifesto is more productive than something like the Manifesto for a Humane Web because it is only meant for me, actually includes the steps I’ll take and doesn’t need to scale in any way.)

So, let’s just start with the obvious: I’m here to write and post dog pictures. I am a programmer with a background in the humanities. But I’m unable to devote real time to any side projects apart from writing here. So I made a decision. No more projects. Actually: Way less projects.

  • I had the idea to update my crossposting workflow: that’s not going to happen
  • I had the idea of developing my own blot.im inspired micro blog sync client: I am not going to pursue that any further
  • I had the idea to develop a JavaScript-based DailyDogo viewing widget: I’m sorry, but it ain’t happening either
  • I am not going to create Newsletters, Websites, Blogs, Courses, Apps, Extensions, Plugins, CLI-Tools, Videos, Podcasts, Streams or anything else that could be considered content. I will write here and in my notes system. What I will do on my blog is my public persona on the web and what I will write privately will help me realize my potential. The important part is the writing. Not so much the design of the website. I will let the latter go.

I am going to write regularly in way that I find challenging and engaging. I will try to be vulnerable, I will try to not hide behind a veneer of safe agreeable stances and topics.

I will try to limit and down-size non-public personal projects and ongoing areas of responsibility as well:

  • I am not going to implement a manual notes and hightlights reviewing workflow: I just don’t have time for that every week. I review what I review. Readwise saves the highlights I made to my notes system automatically. That ought to be enough.
  • I am not going to commit to reading/listening to a certain amount of books this year: I read what I read.
  • I am not going to track, measure, document, visualize, or overly plan my life anymore. My ToDo-List is simple. If I can’t do what’s on the list for the day without overwhelm, I will remove items until it has become manageable again).

I am going to continue to write in private, incorporating my love for the abstract and trying to develop ideas and coming up with ways to live the small, slow life in a world that is on fire and probably will stay on fire for the rest of my lifetime.

I will try to embrace to do less things at work, too.

  • I am not going to see every opportunity for change in the company in general as a must-participate for me.
  • I am not going to let technical purity concerns block me from doing a good job.
  • I am not going to say yes per default to every challenge to my estimations and ways in which I’m going to approach the task at hand either.
  • I am not going to react immediately to any and every message in my work chat.
  • I am not going to ignore my scheduled time blocks to do focussed work or anything else I had planned.

I am going to try to hone my craft, with an eye for quality, architecture and pragmatic professionalism. I am going to take advantage of the 4 hours per week that I am supposed to be able to use for learning and growing as a programmer.