HNHacker News
TopNewBestAskShowJobs

gspencley

3,350 karma · joined September 21, 2021

submissionscomments
gspencley··on My AI skeptic friends are all nuts
> Never refactor. This is literally why everyone loves objected orientated and paint themselves in a corner that blows up in their face.

I try to get people to think about "write once" code as much as possible. Keep things small, single-purpose and composable. You maximize reuse potential, make testing a lot easier and greatly ease debugging.

But you're right about one thing: we do live in very different worlds. In the product world, the business never knows what they are making until something is in front of them and they decide they want something else. Therefore the majority of developer time is spent "maintaining" existing code (read: making code changes) vs building new code.

In that world, the "never refactor" mentality is suicide. Refactoring is improving the design of existing code in order to make it simpler and easier to change as requirements change.

And that is the one universal truth of software: it changes.

If you don't need the code to change, ever, then you might as well stick with a fixed circuit.

> I dont code anything so complicated. I come from linux, but they call it the 'unix philosophy'. Do one thing and do it well. Kind of akin to KISS principle.

So do I. I use Linux on all of my devices and came up as a *nix developer. Unit tests favour the unix philosophy. I often think of a "unit" of code as a single logical operation. But logic is a function of the human mind and humans make errors. Even in simple, one-liner, single-responsibility functions logic errors creep up. Then consider how your programming language helps you or aids you. I see type casting induced errors all the time that a simple unit test would have caught and avoided.

> Write clean simple code that self-documents itself that legit cant really go wrong.

Then why did you even bring up writing documentation lol. We're aligned here. I never document code because I consider that to be a failure of the code. Documentation and code need to be kept in sync... which never happens, not to mention people don't read it. So favour code that is self-explanatory.

> I do like the idea that you feel like im making the world worse by having AI do the chores.

You're deliberately straw-manning me there. If writing a unit test is a chore, your approach to testing is flawed. That was my point and you know it. My comment was also specific to using AI to write unit tests. Not to do anything else.

gspencley··on KDE for Windows 10 Exiles – Upgrade your software, not your computer
> My experience using MacOS

Well there's your problem lol.

I still have paid software from the 90s that I can run. And if things get really sticky due to OS incompatibilities, you can spin up an old version of an OS in a VM. The retro gaming community does really well at running software that is now 40-50 years old too.

I hear you about not paying for software. For most applications I use FOSS when possible. There are applications though where using proprietary is the lesser evil because the FOSS options - if they exist at all - are really bad.

And yeah, I might be in the extreme minority when it comes to users. I'm neurodivergent so that definitely contributes to my aversion to change. It doesn't mean my opinion isn't valid or that I don't have the right to complain though. What I want is software that won't change on me without my opt-in, and that will let me keep my data locally. Maybe most users don't want that, but there are those of us out there and that speaks to untapped niche. Maybe you won't get rich making software for us, but there are far more small mom & pop shops in the world than there are massive rich mega-corps. I'm happy giving them my money.

gspencley··on My AI skeptic friends are all nuts
> "generate unit tests" is interesting? I have literally never written a unit test before and the code it produces is lengthy. Unit tests are a waste of time; but others disagree and so AI can produce it.

This statement worries me for a number of reasons.

First, I work on a very massive codebase, with a large engineering organization. And I have seen a number of AI generated unit tests. I have not seen a single example of an LLM-generated unit test that didn't contain a number of test anti-patterns. To the extent where I would argue that they are creating a self-fulfilling prophecy. You said you think that unit tests are a waste of time. I would argue that they CAN be even worse than that.

The benefit of unit tests is that, at their best, they give you a safety net for refactoring existing code. If you change the implementation of a system under test, and the tests pass, you know you didn't introduce a breaking change.

But a lot of tests couple themselves tightly to the implementation details. Every single LLM-generated unit test I have observed in the wild introduces this anti-pattern. If you have a system under test, and changing the implementation of that system without breaking its behaviour causes a test to fail... that's called the "Fragile Test" problem. Now your unit test is not only failing to encourage you to refactor code... it's actively DISCOURAGING you from refactoring code. In this case, the unit test is providing DISVALUE rather than value.

So the fact that a) you think unit tests are a waste of time and b) you look at AI as a way to save you from a chore ... tells me that you have no business ever writing uint tests with or without AI. Please stop. You are making the world worse by leveraging an LLM to do these things for you.

I have NEVER looked at writing a unit test by hand as a "chore" or as a "waste of time." I often write my tests before even writing my implementation code, because doing so helps me think through both the design and requirements of my code... and gives me a little mini-sandbox context where I can make sure that the brand new code that I am writing is doing what I want it to. It's a problem solving tool. Not something to be done after the fact as a chore.

"Write Documentation" is not writing code. And if you don't read the documentation you're generating, no one else will. So what's the point of having it in the first place if no one reads it? Food for thought.

"Find problems" I see as being akin to a spell check, or the red squigglies when you have a syntax error. I do see the value of having ML tech within the internal IDE implementation. We've been using ML for email SPAM filters for decades. There are interesting problems that can be solved there. But this is an area where I want my IDE to flag something for me. It's not me actively prompting an LLM to generate code for me.

gspencley··on My AI skeptic friends are all nuts
The reason that I personally don't use LLMs was not addressed by the article:

I haven't found a way to use it that makes me develop faster.

The articles talks about "tedious code." If you need to generate a large static value table or something, then OK an LLM might give you a really fast result and cut through the tedium. Most of us were already writing short scripts to do that. I'm open to the possibility that an LLM can do it faster. But it's such a rare requirement that the productivity gains are truly negligible here even if they can. And in those cases, it's obvious what the repetitive task needs to be. I often find myself writing the code by hand to be quicker than coming up with a prompt to get it to write the code that I then need to review for correctness.

The article then mentions scaffolding. Things like "bookkeeping" when it comes to creating and setting up a new repo (whatever he means by that). This is why I have, historically, been a big fan of frameworks and generators. Point being, this is already a solved problem and I haven't found a way to further improve the state of this world with LLMs. LLMs might be an alternate tool that work just as well. But they haven't made my existing daily workflow any faster. Setting up new repos is also something that is done so rarely that even if an LLM netted a 100% increase in efficiency, it wouldn't really impact much.

I am an AI "skeptic" but I'm not a naysayer. I do use LLMs regularly. I just don't use them for developing code because I have yet to find a problem that they solve for me. Don't get me wrong, there are problems that they can solve... I just haven't come across any solutions to previously-unsolved problems. Meaning I can swap an existing solution for an LLM-based one... and it is a valid solution... but I don't observe any increase in productivity from doing so. The existing solution was already working fine.

I am genuinely looking forward to the day when this changes. When I identify a single existing problem without an existing solution that LLMs solve for me when developing software. I just have yet to come across one.

gspencley··on There should be no Computer Art (1971)
> I'll stick to the best definition of art that I've heard : "if it gives you an emotion, it is art".

Stubbing my little toe gives me an emotion, is that "art"? lol

I would suggest that art is a method is communication. One philosophical definition that I've often used is that "it is a selective recreation of reality in accordance with what the artist considers to be essential."

When viewed through the lens of how art might be a useful tool for human survival, it allows us, as rational animals, to communicate highly complex topics in a condensed, straight-to-the-point manner. Morality tales and other stories, paintings, statues, theatrical plays ... all serve to communicate something.

To circle back to computer-generated "art", I would say that if the computer-generated artwork has a human programmer who was trying to communicate something through the software and its output, then I could consider it to be "art." It is not the computer producing the art, it is the human being who is programming or otherwise directing the computer through an intent to communicate something. If you leave a computer alone, and using some kind of random entropy it just so happens to produce an image of something because that's what the random generator landed on, then it's not art. There was no intent to communicate.

And in the example of computers visualizing some natural phenomenon (the article mentioned an oscilloscope as an example), then it is no more "art" than the image projected into the eye from a microscope since there is no recreation. It is, in that context, a tool for observing reality as it exists, rather than a medium of communication intended to express an idea.

gspencley··on KDE for Windows 10 Exiles – Upgrade your software, not your computer
There are definitely advantages to companies. As an end-user, the only advantages I can think of are data centralization and device portability.

While we're talking about "webapps", generally, and not SaaS specifically... the two often go so hand in hand that it is the exception to see a webapp that is not also a SaaS product.. and as a consumer I kind of mostly hate SaaS.

With the above two advantages noted, lets look at the cons:

- Companies can, and routinely do, push unwanted UX changes on me without my opt-in. Pre-SaaS you would wait for a new version to come out and could see what the reviews were saying before deciding if you like the changes and want the new features. Now you're a guinea pig and get the new "features" whether they are a benefit to you or not.

- Forces me to have my data on someone else's computer

- The "other peoples' computer" issue means that if there is a software or a hardware failure that prevents me from being able to do urgent work that it is entirely outside of my hands and my ability to troubleshoot the majority of the time (though this is a double edged sword since for the average non-technical user it can be a big benefit)

- Can't work without an active Internet connection (though I'll concede that not having an active connection is becoming pretty rare these days)

- If the company goes out of business, say goodbye to your data in the majority of cases

- Often goes hand in hand with renting the software rather than paying a flat fee for a perpetual license. Given the choice, I will always opt for a perpetual license. I try hard to have as few recurring payments in my budget as possible. Utility bills are bad enough.

If, however, by "webapp" we just mean a desktop application that uses a DOM-based rendering engine then I couldn't care less. There are tradeoffs, but they are purely technical and rarely impact UX directly in the way that a general approach to software delivery and consumption does.

gspencley··on Google is burying the web alive
Feels like more curation than we had before. My wife and I recently bought a commercial space and have been trying to find contractors for renovation projects. It has kind of blown us away at how unresponsive most have been. Like, we'll reach out them ... wait DAYS, sometimes they get back to us ... maybe a week later they'll come for a site visit to give us a quote and then we need to keep following up with them ... just to get a quote.

We were complaining about this and a friend of ours said something very insightful: "There's a lot of good contractors out there who suck at SEO."

So we reached out in some local Facebook groups and had people out THAT DAY and the work was starting the very next day.

Point is, the companies we were reaching out to were the absolute busiest of the busiest because they were showing up at the top of search results. As soon as we stopped using web searches, we actually started getting results.

Now, this problem exists in spite of AI but I'm worried that it's going to make it even harder for smaller, less busy companies to show up AT ALL. AI is taking the system that already existed and is curating it further with "summaries" ... so what can we expect? Only the first "top 3" businesses in your area?

Google and other search engines were already starting to kill off the "long tail" ... but with AI I think its going to be the final nail in the coffin. If you want to search for the less popular options, if you want to try and find the niche stuff ... I don't know how well it's going to work. I suppose if you can prompt it: "All the 'top' options are ghosting me, give me some alternates" then maybe people will find ways around that with these tools. Or trying to find businesses with web search was already not going to give good results anyway in current year (return to classifieds and job boards was our recent experience).

gspencley··on When Americana doesn't mean American
> Perhaps because Canada has english, a east coast, a west, and the great plains.

There are geographical similarities but I think it is more cultural.

Culturally, Canada and the USA are extremely similar. What a lot of people who don't live in Canada often fail to realize is that the vast, overwhelming majority of our population is concentrated in southern Canada... and that these areas are often even SOUTH OF PARTS OF THE USA in terms of latitude.

For example, Seattle WA lies on roughly the same latitude as Ottawa, ON which is quite north of Toronto. Detroit Michigan borders Windsor, ON (my home town) and Windsor is to the south of Detroit.

When broadcast television and radio were in their prime, we all watched American TV and listened to American radio (and the northern USA got Canadian channels etc).

In border towns like Vancouver and Windsor, it's not uncommon for people to have family on both sides of the border or to even live in one country and hold a day job in another.

A lot of Canadians have winter homes in southern states. Florida is a popular destination for east-coast Canadians and, while I don't know if it has changed, a typical visitor visa for Canadians let us stay for up to 6 months before we have to go back. And a lot of people even hold dual-citizenship.

gspencley··on All four major web browsers are about to lose 80% of their funding
> I'm not exactly sure why I should find a corporate entity any less centralized or unelected or not respectful of rights than a government

Because corporate entities and government entities operate under radically different frameworks.

The domain of government is force. This isn't a bad thing, it is necessary. Government is the recognition that we, as human beings, can interact with each other in two fundamental ways: force or reason/diplomacy. That when reason/diplomacy is chosen life flourishes. People create, produce, trade, freely associate and basically build civilization. When force is chosen you get war, destruction, poverty, misery.

Government's primary role in society, in my opinion, is to remove the element of force from civil existence so that all interpersonal relations are consensual (there are edge cases - the parent/child relationship or the extremely ill etc. but I need to scope cap somewhere).

The concept of rights derives directly from this concept. They are the recognition that rational people can cooexist peacefully if certain aspects of the human experience are recognized and protected. Those aspects being that in order to survive as a human being your tools are reason and action; you need to be able to think freely and you need to be able to act in accordance with your rational judgements. The infringement of a person's rights is fundamentally interference in either the ability to think (freedom of expression / conscience) or the ability to act (freedom to own and acquire property, freedom to travel, freedom of association etc.)

This means that government's entire domain is force. It is the entity that gets to determine the rules around when the application of force is allowed. It is the entity that gets to step in when you and I can't agree on what the definition of "assault" is and one of us calls the cops.

Businesses ought to exist entirely outside of the domain of force. Business is what happens when you remove force from society and people are able to think, create, develop, produce and trade freely without gangs and thieves and thugs interfering.

Where things get blurry is when you marry government and business. But always remember that business operates under the rules that government creates. The more incentive there is for business to care about political policy, the more lobbyists and corporate interest groups you will create but that's the framework you're creating. Government forces it through laws. Business is just playing by the rules that you voted for.

gspencley··on Mark Zuckerberg says social media is over
Not only that, but people have discovered that comments shown to you on YouTube videos are also subject to "algorithmic scoring", based on your preferences, just like video recommendations.

About a year ago a video went viral where someone in a romantic relationship demonstrated that the opinions expressed in comments on videos shown to her differ radically from the opinions expressed in comments on the exact same video when viewed by her significant other using his account.

My wife and I then immediately verified that this was true for us as well.

gspencley··on The effect of deactivating Facebook and Instagram on users' emotional state
> I want you to think about how you would feel in a hypothetical about Chinese people.

I'm not the person you are asking this question of but, after reading your comment carefully in full, I would like to answer on behalf of myself:

I would feel absolutely no differently about any individual person of Chinese ethnicity or citizenship than I did before.

Personally, I try to distinguish between the individual and perceived collective associations. And I try not project my personal opinions about global politics or my personal prejudices about a country onto individual friends and acquaintances that I hang out with at a local pub in a completely different country than the one we're discussing.

My operating definition of "racism" is:

"The religious belief that you can know the contents of an individual's mind and heart based on superficial characteristics - such as their skin colour, ethnicity or country of origin."

You can bring your "nuanced" opinion of Israel into it all you want to. But to project that onto an individual in the context of hanging out with a group of friends fits my definition of "racism" exactly. And this would hold even if one were to, hypothetically, concede your opinion of Israel's actions entirely.

Your post is a great example of why people so often brand attacks against Israel as "antisemitism." There is nothing wrong with being critical of a government and its policies, or of how a war is conducted. But to project those opinions and feelings onto an individual who is living in a completely different country and who has nothing to do with that conflict other than the fact that they hold citizenship or ethic affiliations is another matter entirely. One is "nuanced" opinion, possibly even objective if the individual is trying to be. The other is trying to mask and justify bigotry and prejudice behind an heir of intellectualism.

gspencley··on Interviewing a software engineer who prepared with AI
> Side note, as far as a job requirements goes the bigger issue is asking for impossibly diverse experience and asking for things that can be easily learnt.

Really? That's the bigger issue?

Company wants to pay money to someone in exchange for services. They have unreasonable expectations. So that makes it OK for people to deceive them in order to have them believe that their unreasonable expectations have been met?

I don't think that unreasonable expectations should be rewarded. But an unreasonable expectation is just "being stupid and harming yourself."

Deceiving others in order to take their money under false pretences (which is fraud) is immoral and harms others.

The two are not remotely comparable.

> This promotes lying

No it doesn't. If someone feels "encouraged" to lie and defraud others because they want something from them (even if the "someone else" is objectively stupid), that is no one's fault but their own. And their wishes and desires are just as unreasonable as the company's. [The wish/desire on the part of the applicant is wishing that the company had reasonable expectations]

gspencley··on Airline Demand Between Canada and United States Collapses, Down 70%+
I don't dismiss any of these stories. I know that some of this is happening. But I want to share an experience that I recently had as a Canadian ACCIDENTALLY crossing into the USA.

I live in a border down. There are two border crossings here. I recently had something shipped to me using UPS as the courier. I did not engage the shipping. I did not pay for it. It was something that someone owed me, and they made these arrangements entirely themselves without my involvement or input.

UPS nonetheless wanted to charge me around $100 for "customs brokerage fees." I told them no way and that I would self-clear.

I had never self-cleared a package before, so I was in very new territory. But I was highly driven by my desire to not give UPS one penny of what I felt was a ransom demand (they were holding my property hostage unless I agreed to pay them money for services I did not solicit).

In order to self-clear, you just have to take a slip of paper that UPS gives you to your local CBSA office (Canadian Border Security Agency). The offices for these places in my city are at the border crossing.

I took a wrong turn, because I had no idea where I was going, only to find myself crossing over to the USA with no ability to turn around because it's one-way.

I did not have my passport with me!

The US border patrol officers were extremely nice. They assured me that it happens all the time. They had to pull me in and did search my vehicle but I was sitting in immigration for all of 20 minutes waiting for them to do some paperwork. As soon as they found out that I hold a valid passport, I just didn't have it on me, they gave me a visitor's visa and sent me on my way.

This was a week ago.

So yeah ... we hear horror stories. The news is alarming. And one single anecdotal data point does not statistics make.

I just want to offer a counter example to the horror stories because the news cycle loves to get people freaked out. That's their job.

gspencley··on Does Visual Studio rot the mind? (2005)
> Unfortunately though it may not be such an exaggeration after all. It's probably too early to say, but there is definitely mounting evidence that some of these useful tools are literally, genuinely rotting our brains.

> https://www.fatherly.com/news/gps-google-maps-cognitive-decl...

I think you may have fallen into a bit of confirmation bias there. The article you linked to words itself like so:

"According to research published in the journal PLOS One, navigating with a map and compass might help stave off cognitive decline and symptoms associated with Alzheimer’s Disease."

This means that the study found that there may be positive benefits to cognitive health when one routinely engages in navigation related activities using a compass and a map.

That is a very very VERY different statement than: "Using Google Maps causes cognitive decline."

In order to demonstrate any kind of causality between using Maps and cognitive decline, you would have to start with an additional premise that everyone engaged in navigation using a compass and map on such a regular basis that the switch represents a switch to a less healthy lifestyle.

I think that statement is specious at best.

I'm old enough to remember living without Google Maps. And the amount of time that I reached for a paper map and a compass was so infrequent that Google Maps represented something new for me more than it represented something different. That is to say, it wasn't replacing something I did regularly so much as it gave me a reason to start using any kind of a "map" in the first place.

Most people I know would say the same thing. We had some maps skills when we needed them ... but we tried to avoid needing them more often than not.

So yeah, the study might have merit. But I don't think it suggests what you think it suggests.

gspencley··on TypeScript types can run DOOM [video]
> I think you could turn the responsibility the other way around quite as easily, and I think you're mistaken grown complexity, one that is inherent in a company's system (accidental or not), when you outline what you mean as "framework" here.

No I'm not. I'm not reading the rest of your reply because you completely misunderstood me here and then proceeded to give me an insulting definition of what a framework means while completely ignoring the broader point I was trying to make.

In fact, I did the following to add clarity:

1. I put the word "framework" in quotes to make it clear that I was using the term colloquially

2. I elaborated that I was talking about custom supporting code and other tooling that was developed by the company in order to solve domain-specific problems.

I have built frameworks. I continue to build frameworks for my employer on a Platform team. We work with 3rd party frameworks and we need to build on our own. This is just normal encapsulation, building higher level APIs on top of lower level ones.

So when I say "the company's framework" I'm referring to the stuff that was buit in house in order order to develop highly domain specific functionality with a higher level API than what the 3rd party frameworks are providing out of the box.

A framework's super-power is that it applies the Holly Principle: don't call us, we'll call you. That's what distinguishes a framework from a library. Libraries sit there passively waiting for you to consume them. But in our industry, like the word "hacker" and "troll"... people start using the term colloquially. And in this case we're talking about the specific APIs that the company has developed which you need to ramp up on even if you are highly experienced in the specific 3rd party frameworks that they use.

And even if we take the word framework absolutely literally as you did in your comment, companies still build "literal frameworks" internally in order to try and simplify. But you gotta ramp up on those.

At my existing employer, we have even taken 3rd party frameworks and libraries, and forked them and developed our existing custom tooling with them because our domain specific requirements brought us to that level. So now you're coming in to our shop not only needing to ramp up on those 3rd party frameworks, but you gotta learn and understand how we changed them too for our purposes.

gspencley··on TypeScript types can run DOOM [video]
> "We've decided to prioritize other candidates, as you are strong in the fundamentals but lack the kind of experience in Vue that we're looking for."

I have a nuanced view of your particular example. I've been in this industry for almost 30 years. I cut my teeth writing C/C++, had an interest in language theory and frameworks and was brought up to care about portability. I always wanted to be able to easily transition from one language to another, or one framework to another.

And I always assumed this was the case for other engineers in our field as well.

However, I have worked for startups that like to move really fast, and hired talented developers who passed our technical screenings (read: "had the fundamentals down") under a "framework agnostic" hiring policy ... only to see them display stunning degrees of incompetence trying to learn our tooling.

The problems that compound this are:

- When you enter a new company with a large codebase that you have to ramp up on, you're not only required to learn the language or 3rd party frameworks and libraries that they use ... you need to ramp up on THEIR "framework." Depending on the complexity of the system, there is a lot of domain specific knowledge and custom supporting code that will have been written. Try to learn the ins and outs of Angular change detection, for example, while also ramping up on a massive codebase that does things in weird ways for legacy and historic reasons.

- Every business, but some more so than others, has time pressure. You need to be able to write functional, easy to maintain code but also get it shipped yesterday. If you come into a company unfamiliar with the languages and tools that they use, you are essentially coming in handicapped. Expectations that you can deliver are very high, despite the time that you need to ramp up. Maybe you're one of those 10x'ers who can learn all the ins and outs of a new tool in a week or two before starting your position and then apply that knowledge at the level of someone whose been working with the tool for years and has learned all of the hidden footguns ... but if so, you are a rare specimen indeed. The industry can save itself a ton of inefficiency if it takes a "better not take a chance" attitude.

- All problems are people problems. It's not that the company needs people who know how to code in the language or tool ... they need someone who has worked on enough different projects with that tool that they can navigate the completely fucked up ways that THIS company uses it. Because THIS company will for sure have years of active development behind it by developers of all sorts of different experience levels ... and some of those developers did it the right way while others found creative solutions and did things weird. The company doesn't need someone who can write the Hello World tutorial in the language or framework, they need someone who can evaluate the good decisions vs the bad ones in an existing codebase.

gspencley··on LibreOffice still kicking at 40, now with browser tricks and real-time collab
It's too bad that that's kind of changed.

Don't get me wrong, I use LibreOffice a lot, but I kind of despise it. The biggest headache I have, with Writer - which is what I use most often - is that if I select text in order to change the formatting, it changes formatting of stuff not selected. I think this has to do with paragraph styling .. it's just very unintuitive how it figures out what belongs to a paragraph or not. My human brain wants to separate paragraphs with line breaks. So why would formatting selected text on one line change the styling on adjacent lines that aren't selected?! It is extremely infuriating how its styling behaves in general.

I think it's also worth noting that rich text formatting is the primary reason to even use a word processor instead of a plain text editor in the first place. Embedded objects and exporting tools are all useful too. But most of what I use Writer for could be done in a text editor if I didn't need styling. So all these years later, a core feature - arguably THE core feature that necessitates the existence of the application to begin with - is still broken and unintuitive.

And when I search for help on how to get styling things working etc. and I find posts by other people that share these concerns, the answers are legacy document formats etc. that contain these bugs by design so it's something that's really hard for the developers to fix.

gspencley··on German civil activists win victory in election case against X
I also don't like this ruling from a moral point of view. I know others may disagree with me, because we obviously all value scientific research here and a lot of us don't really like social media in general, but the fact that you want to research something and that the results of that research will have value to others doesn't entitle you to someone else's services.

I might encourage X to volunteer this data, to the extent that things like privacy can be safe-guarded etc. But force them to with the strong arm of the law? No thanks. There's no rights basis here. We could benefit from the results of the research, for sure, but I don't think anyone has a right to the data other than those who produced it (individual users with respects to their personal data + X itself).

gspencley··on Reasons Not to Refactor
> We often reach a point during refactoring where it seems like there is an easy improvement that applies to almost all cases. It’s usually better not to impose additional abstraction if it only matches “almost” all cases.

Need to nit-pick on this one. There are design patterns, depending on your programming paradigm, that enable you to de-dupe the common stuff while allowing for all of those little variances to do their own unique thing without duplicating anything.

In OOP the Template Method pattern comes to mind.

I would even go so far as to say that the "almost all cases" problem is such a common problem in software development, that the patterns world has come up with various solutions to that which are intended to simplify, not complicate.

I'm sure there are concrete examples where there are no good pre-existing solutions, and there are often examples where cures can be worse than the diseases and you need to make a judgement call. But don't give yourself an excuse to duplicate code because you don't know how to de-dupe in the "almost all cases" scenario. That's a very solved problem.

gspencley··on Software development topics I've changed my mind on
> Elegance is not a real metric

While I agree with this in spirit, I once made the observation that:

"Code quality can be measured by the number of occurrences of 'WTF' uttered by other developers per minute when reading a PR."

Elegance might be subjective, but how easy code is to read and understand probably can be quantified even if we don't have the best tooling for that yet.

Meaning that if 10 engineers less experienced than me all tell me that they think expressing something one way is easier to understand than another, I take that as objective feedback and change course.

gspencley··on Think your dog can understand words? This scientist says you might be right
It gets even wilder than that.

There is a psychological concept called "anchoring" which associates two different things perceptually. For example, it's what happens when you listen to a song during a particular time in your life, and then many years later you hear the song and feel all the things you felt in that moment with all of the memories triggered etc.

You make a good point about language itself being some form of abstraction in reference to the objective world. But this conversation reminds me of a famous artwork called "The Treachery of Images." It is a painting of a tobacco pipe with the caption "Ceci n'est pas une pipe" ("This is not a pipe" in English).

Through the painting, we can appreciate that a picture of a pipe is an abstraction that represents a pipe, and is not the same thing as a pipe itself. It is a painting that appeals directly to reason.

The philosophical and scientific question is: when a dog hears the word "walk", or sees a leash, is it conceptual abstraction at play; the understanding of a logical category... or is it emotional anchoring that came about through Pavlovian conditioning and having that word associated with a memory of a concrete?

gspencley··on I'm Done with Ubuntu
I'm another Mint user.

IIRC it was when an Ubuntu update pushed the Unity DE on me that I abandoned it. And that would have been back in like 2012 or 2013 ish.

The reason I use Linux in the first place is because I know what I'm going to get. There may be a few UI tweaks between Mint MATE versions, but there's rarely breaking changes that completely and fundamentally alter the way that I'm meant to be interacting with my machine. As an end user I want stability in all things. Don't move menus or change keyboard shortcuts (and especially don't change the entire freakin' DE) without making a massive fuss that this "upgrade" might not be for all users with an option to .

In any case, Mint MATE gives me the compromise that I want between a smooth and "pretty" user interface that looks relatively modern without being a heavy resource hog like other DEs that strive for that (cough KDE cough).

gspencley··on Chat is a bad UI pattern for development tools
This is preference for sure, but I am of the opinion that ALL code comments are code smells.

And that's not even to say that I don't write code comments. When working on large legacy codebases, where you often need to do 'weird' things in service of business goals and timelines, a comment that explains WHY something was done the way it was is valuable. And I leave those comments all the time. But they're still a code smell.

Comments are part of your code. So they need to be maintained with the rest of your code. Yet they are also "psychologically invisible" most of the time to most programmers. Our IDEs even tend to grey them out by default for us, so that they get out of the way so we can focus on the actual implementation code.

This means that comments are a maintenance obligation that often get ignored and so they get out of sync with the actual code really fast.

They also clutter the code unnecessarily. Code, at its best, should be self-explanatory with extremely little effort needed to understand the intent of the code. So even a comment that explains why the code is weird is doing little more than shining a flashlight on smelly code without actually cleaning it up.

And don't get me started on "todo" comments. Most professional shops use some kind of project management tool for organizing and prioritizing future work. Don't make your personal project management the problem of other people that share and contribute to your codebase. There is zero rationale for turning shared code into your personal todo list. (and it should be obvious that I'm talking about checked in code .. if it's your working branch then you do you :) )

So if programming using LLMs is similar to writing comments (an interesting analogy I hadn't considered before), then maybe this is part of the reason I haven't found a problem that LLMs solve for me yet (when programming specifically). I just don't think like that when I'm writing code.

gspencley··on Think your dog can understand words? This scientist says you might be right
> What would it even mean in practice for them to think about concrete "walking" instead of the abstract concept? Verbs are inherently abstract.

Your example of the leash and the concept of "walking" is an excellent point.

To answer your question, all proper nouns are not abstract by definition. Your name refers to you, specifically and concretely, it does not refer to the concept of "person" or "people."

But to take this further, imagine the following thought experiment:

You have a newborn infant, and you isolate them from the rest of the world (remember this is a thought experiment, so we are not bound by ethical considerations for this purpose). You show them 3 identical staplers. You call the first one "Foo", the second one "Bar" and the 3rd one "Baz."

An infant might, on their own as they grow and mature, start to abstract and conceptualize a concept of a logical grouping here. They might observe that Foo, Bar and Baz have similarities and, being humans, they might even come up with some kind of verbal or non-verbal cue to reference this abstract concept.

But for a while at least, these are individual concretes. If all they ever see is one single concrete "stapler", they may learn to associate the word with the concrete and never even think about abstracting it. But if they do start to abstract it upon observation of similar "things" ... to what degree are non-humans capable of doing that?

You provide a lot of good evidence that dogs can to some degree. But to what extent? What are the limitations?

These are unanswered questions in both science and philosophy.

I hope I answered your question, as it was a valid one. I'm not giving answers to these hypotheses and philosophical conjectures. I'm saying that this is something that is still not quite figured out yet.

gspencley··on Think your dog can understand words? This scientist says you might be right
This speaks to an interesting question that is extremely difficult to answer:

"Can pets think conceptually?"

A word like "table", to a human, does not represent a concrete. It represents an abstraction, ALL tables, all things that have a flat surface and four legs.

When a dog hears "table", or "walk", do they understand the abstract concept of walking, or tables in general? Or do they interpret it as a very specific, concrete verb or noun?

That is the 6 million dollar question when it comes to an animal's ability to truly, genuinely understand spoken language. This is also why some philosophers conclude that animals cannot reason (it's a hypothesis, though, we don't know). Reason requires abstract thought and being able to prove that an animal is capable of abstract thinking is incredibly difficult.

gspencley··on Ross Ulbricht granted a full pardon
> and so in the first you get complaints the sentencing is too harsh, and in this one you get complaints that he shouldn't have been pardoned.

You can also hold both positions simultaneously without contradiction. That is to say that you can think that his sentence was too harsh while at the same time being of the opinion that what he did was a crime (and should be a crime) and that he should remain convicted and un-pardoned, just with a different sentence than the one he was given.

gspencley··on Supreme Court upholds TikTok ban, but Trump might offer lifeline
While I agree with you about domestic policy, I'm not sure why it's inconsistent or hypocritical to deal with an external threat posed from those who want to destroy or harm you.

The details specific to China and TikTok are kind of moot when talking about broad principles. And there is a valid discussion to be had regarding whether or not it does pose a legitimate national security threat. You would be absolutely correct in pointing out all of the trade that happens between China and the USA as a rebuttal to what I'm about to offer.

To put where I'm coming from into perspective, I'm one of those whacko Ayn Rand loving objectivists who wants a complete separation between state and economy just like we have been state and church and for the same reasons. This means that I want nothing shy of absolute laissez-faire capitalism.

But that actually doesn't mean that blockades, sanctions and trade prohibitions are necessarily inconsistent with this world view. It depends on the context.

An ideal trade is one in which both parties to that trade benefit. The idea being that both are better off than they were before the trade.

This means that it is a really stupid idea to trade anything at all at any level with those who want to either destroy or harm you.

National security is one of the proper roles of government.

And I don't think you necessarily disagree with me, because you're saying "we should also be protected our citizens from spying and intrusions into our privacy" and yes! Yes we absolutely should be!

But that's a different role than protecting the nation from external threats. You can do your job with respects to one, and fail at your job with respects to the other, and then it is certainly appropriate to call out that one of the important jobs is not being fulfilled. Does that make it hypocritical? Does it suddenly make it acceptable for enemy states to start spying?

By all means criticize your government always. That's healthy. But one wrong does not excuse another. We can, and should, debate whether TikTok really represents a national security threat, or whether we should be trading with China at all (my opinion is we shouldn't be). It's just that the answer to "why its bad when China does it but it's right when it's done domestically" is "it's wrong in both cases and each can be dealt with independently from the other without contradiction"

gspencley··on Nobody cares
> But sure, just assume it's because everyone is stupid.

He didn't say everyone was stupid. He said that no body cares. There is a very big difference between the two.

I tend to agree with him. Yes we can find examples, most commonly when it comes to safety standards, where there are systems in place that prevent the really bad stuff from happening. But why do those systems and checks need to be put into place? Because a lot of people simply do not care and would cut corners if their jobs didn't depend on them following the standards.

The problem with broad sweeping generalizations is that they never apply to all individual cases. It doesn't change the fact that the broad generalization is, well, broadly and generally true. Most people don't care about almost anything other than getting home to their families or pets. Most people will even happily admit that. It's not even that they're lazy necessarily (though a few people are). It's that they are working in what is, to them, "just a job / pay cheque." That's not even always a problem. It's just a fact of life that is as true as taxes and death. It's worth acknowledging because it is something that needs to be accounted for after identifying or choosing your fault tolerances. The systems and standards that you cite are the result of acknowledging this fact of reality.

gspencley··on Hotel booking sites overcharge Bay Area customers
> I had theory long time ago that booking hotel or airlines tickets from mac used to be more expensive than windows.

I currently work remotely for a company based in California and they issue MacBooks by default to employees. We can request Windows devices but our IT department prefers to have as many people on Macs as possible for admin efficiency reasons.

We hire remote workers from all around the world and so this Mac-first policy has raised quite a bit of discussion about what the majority of our workforce is accustomed to and has been trained on. It has come up time and time again that Macs are really popular in California but outside of that state Windows still dominates by a large margin.

Now, not all parts of California are affluent of course. And like every state the demographics are all over the place in terms of income. I bring this anecdote up because I wonder if both the Bay Area discrimination discussed in the article and your hypothesis about Macs stems from California stereotypes. Outside of the state, even though wildly inaccurate and unfair for a great many Californians, a lot of people tend to think of California as if everyone in the state is extremely privileged.

gspencley··on Software engineer pay heatmap for Europe
It worked for me (Brave). Shows Switzerland as the highest paying (if I had to guess it's due to the financial sector there) with the UK following close behind.

Was happy to see Iceland relatively up there, I've heard there's a strong tech sector in Reykjavik and my wife and I are in love with the country and have entertained hypothetical discussions about relocating there (from Canada), even if temporary.

← PreviousPage 4 of 22Next →