The idea that black box binaries are the future sounds like a future envisioned by someone interested in either selling you those binaries or tokens to build/maintain them.
The idea that black box binaries are the future sounds like a future envisioned by someone interested in either selling you those binaries or tokens to build/maintain them.
This is something I'm really trying to focus on this year but for truly introverted folks this is a huge challenge.
It feels like when I do make an effort that I'm speaking another language, even with common interest topics like programming.
Not sure where I'm going here but know that I'm trying.
I think this really became apparent working at a place where folks are fairly siloed. No pairing. No mobbing. No social chat spaces.
You give updates at standup but getting the work done is baseline so good work doesn't really get recognized. You get it done and move to the next thing.
For a long time I thought putting out good work, focusing on delivery, focusing on the work would be enough to be successful.
The real problem is good work doesn't matter if there's no one hearing about it. I underestimated how important non work socializing was to how folks talked about your work.
I'm a naturally (very) introverted person. Quiet, head down while working and active/engaged during meetings but it's generally down to business.
I'm not outwardly social but if someone talks to me then I'm very social. Especially if it's a topic I'm interested in.
One thing I wish someone had told me at the start of my career is that good work isn't enough.
A wise co-worker back in the β80s used to say this little rhyme, βI really hate this computer/I think Iβm going to sell it./It never does what I want/Only what I tell itβ. π
Software delivery summed up.
Picard programming tip: A computer is like a mischievous genie. It will give you exactly what you ask for, but not always what you want.
Moving up a stockfish level on lichess is kicking my ass. π΅βπ«
Lots of chatter about how software development was never about the code, it was about delivering solutions. But that misses the point. Good software design is about delivering *well-designed* solutions that can evolve and adapt. That takes time, not velocity.
Ahh... That's right. I had implemented a hindley-milner type system or a really basic one. I was in the process of implementing generics so now I'm coming back to that mess.
Prototypes that delivery the most value, for me, are ones that can be tossed.
You aren't shipping that prototype code to production are you?
Just thinking was about vibe coding and increasingly siloed development, coding agents reinventing more and more wheels...
What a can of worms that opened.... π π
So yeah, the feature I'm working on is the first editable Date type we've ran in to. All the other types (strings, booleans) serialize/deserialize as JSON fine so weaknesses in our typescript weren't obvious. Dates in JSON required some more lifting so it became obvious our types were just wrong.
Blueprint/layout of a house
I love this image. It appears to be a reasonable house with a reasonable layout but the longer you look at it the more you realize how poorly it's designed.
This house would be terrible to live in. Building software isn't hard. It's designing it to be livable and maintainable, that's the hard part.
This sounds obvious but it's important to reiterate as you can only trust well typed code you've written and tested.
Legitimate sources that should make you question that trust:
- Explicit or inferred "any" type
- Abusing "unknown" types
- Untested code (types can't replace tests)
- Javascript
You also need to have a realistic understanding of what typescript is. Type safety is literally only at compile time.
The debugger statement is javascript is great. Breakpoints can shift around during transpiling but the debugger statement is resilient.
Having ADHD and coming back to code you haven't touched in months. So many unstaged changes, project doesn't build...
So in related news my attention has drifted back to programming language design and implementation. π
I know some folks criticize Typescript type system complexity but honestly it's kind of amazing considering that it's designed to gradually type a dynamically typed language.
Yes, a lot of it's patterns make no sense sense for other languages but it's really brilliant for a language like javascript
I wrote a bit more on the circuit-bent PS2 (with more photos) and how recontextualizing gameplay becomes part of the creative process:
I just found out that I've hit merge instead of approve more than once in someone else's PR in the last week... π΅βπ«
1. That's so embarrassing. I'm mortified.
2. Gitlab's UI is hot garbage
A group of contractors asked to join already. That will almost double our numbers already.
It's prep work for a 3 amigos session before I start working on the story. A lot of the time the story is too big or doesn't have enough information.
How the story will be tested or accepted is unclear. If those are unclear how can you possibly start working on something?
The first thing that I like to do after picking up a story is reviewing it then asking some questions
- Does this still need to be done?
- How will I test this?
- How will the stakeholder accept this?
These usually lead to
- Do I have all the information? Is it accurate?
- Is it too big?
One of the worse things you can do when picking up a new story is start writing code.
In my experience it's rare that a story has enough information or that information is accurate. Even a story refined the day before could be out of date. I've seen that happen.
I've been trying to get a developer community of practice going and just got the first meeting scheduled. π€©