6,400 karma · joined November 30, 2008
Ex FAST/Yahoo/Google/Telenor
I used to have long conversations with frontend developers that "no, when I log on I don't want to be forced through a look-at-the-new-feature-we-made" sequences. And then they went ahead and did it anyway. And usually whatever flag they tried to set to make sure you only saw it once would malfunction, so next time you'd get to click through it all over again.
(If you want to tell users about new features, show a unread flag on a notification icon and make it a one-click affair to make it go away. Don't get in users' face with stuff they don't want)
When I see these dialogs listing they have 1289723 gazillion vendors they share data with, I know that whoever is in charge of analytics, privacy or both at the company is incompetent.
Back in the day, this is how we introduced AWS at a large company. We just did it. And once done, they couldn't deny that it cost a fraction of what we were paying our supplier and that things took minutes to set up rather than weeks. And that they worked a lot better.
Yes, there was shouting in meeting rooms. And yes, people said "you can't do this". Turns out they were wrong. A few years later I mentioned this to Werner Vogels. During a meeting. Where my CEO and CTO were present. And where everyone was feeling very good about us being one of AWS' biggest customers in our region.
So when someone says "you can't do that", sometimes you should make them prove it.
(At the time AWS was a good idea. Today dependence on a US service provider is a harder sell in Europe. The _first_ question you get today is if we can host it ourselves if we need to or if we can use a local service provider.)
From the customer perspective it is a pretty important product.
The customer may not be aware of this until it is too late. It becomes tempting to store your data with application providers because it seems more "cost effective".
I try to avoid storing a lot of data with services that offer online storage as part of a product. For instance image storage coupled with image processing applications. Because I really care about my pictures, so I don't want to have my choice of image processing software dictate where I store them. There's also the fact that I do not trust the company that makes the software I use for image processing. I use their software because in the pre-enshittification era of their business, I got used to using it. Switching has a cost.
Now the image processing software I use is a bit of a liability. They haven't done anything that is so bad that I'm motivated to ditch them, but it feels like they are one bad product decision away from me jumping ship.
I haven't looked at Dropbox from an investment point of view, so I can't say if their business is growing, declining, still sound, or just unsexy because it is undramatic. Perhaps there has been drama and I didn't notice. But from a user point of view it is really attractive to have storage services that are JUST storage.
I find real value in not having storage tied to Google, Microsoft, Adobe and whatnot. And if that makes Dropbox boring: good. They should be utterly dull.
I don’t use Google that often anymore.
Look at exceptions in Java, for instance. In theory the mechanism is there to guarantee that errors will be handled. In practice there are multiple schools of thought — several of which purposefully circumvent this mechanism by throwing runtime exceptions because they think checked exceptions just leads to a lot of unnecessary work.
It has been too long since I used Java to remember all the arguments for and against. But I do remember trying multiple approaches and realizing that only using checked exceptions turned out to be a bit too inflexible. That there were legitimate reasons to use runtime exceptions.
Go’s type system is probably “good enough”. Sure, I’d love to have option types and results. And it would have been nice to move some of the things in vet, lint, staticcheck into the compiler. But in _practice_ separating them is actually beneficial. Because it allows you to trade build speed for security. For instance when you are making a tiny change and you just want to make sure it still builds. That’s a _practical_ tradeoff you could not have made if the compiler were always strict.
One thing I wish Go would have adopted is Javadoc-like comments with explicit markup to document parameters, return values and possibly panics. Those were _more_ useful in practice than exceptions in Java because you could force people to be more deliberate when designing “contracts”. When I did Java we used to have the build fail if classes and methods did not document all params, return values, exceptions etc.
I also taught people to write unit tests while _only_ looking at the Javadoc for what they were testing and notating at the code. Even after years of doing this, I’d regularly find that implementations didn’t behave as documented when writing tests. This made people care about interfaces/seams/APIs/contracts and spend less time obsessing over having the compiler save them from sloppiness. It put the developer in the driving seat rather than have them run behind the compiler and just nudging things into a state where it compiles. It helped people think more about why something failed from a design point of view rather than put all their faith in the tooling.
I think that’s the biggest mistake of Go: it doesn’t care about documentation and to the extent it does, it introduces really, really stupid, pointless formal rules that does nothing to help developers.
While the first occupies more lines I suspect I’d spend less time spotting it in the code. The physical shape of the expression is something my brain is used to seeing after 40 years of programming. Even when code grows more complex.
The second is OK when it stands alone, but I am not so certain it would be as easy to spot in more complex surroundings. Even on a single line, there is something a bit ugly about the code. Even before we get to the desperate triple-pipe. That kind of reminds me of the desperate attempts at repairing JS after they realized its equality semantics were shot. Just heap more characters on it.
The thing is: it is actually very hard to judge how ergonomic a language is by just looking at it. You have to use it and you have to use it enough to realize where the paint points really are. I’ve read through a lot of the responses in this discussion and I’ll be honest: I think a lot of people who criticize other languages (be they Rust, C, Go or whatever) aren’t very fluent in them. It takes a couple of years to develop fluency.
But as someone else pointed out, unhandled errors are very rare in practice in Go because every Go project tends to use static code analysis tools that catches this. When people talking about things blowing up during runtime I can’t help but think that they can’t be serious Go users.
On every build I generally run vet, lint (revive), staticcheck, gosec and test. And that’s the “light” build that doesn’t run leak analysis, fuzzing, race testing, benchmark regression and integration tests in addition. The light build is still faster than the Rust compiler. I haven’t compared the heavier build.
When people pretend the absence of features is a huge problem, I tend to think that these are people who either aren’t regular Go users or perhaps they are more interested in debating languages than writing code.
Let’s not pretend this is something it isn’t.
Yes, he could be harsh online, but he also had a sense of humor about the persona he had created for himself online. And it was a persona. That doesn’t mean he was tolerant of stupidity, or what he saw as stupidity, in real life, but face to face there was a passion and a sense of humor that got filtered away by having lots of infrastructure between you and him.
We disagreed on many things. Some of them, in retrospect, he was right about. And we had many heated discussions (mostly entirely in private - neither of us needed an audience to turn the heat up in a discussion). I remember him fondly, I miss talking to him and I was very sad when he passed. I still think about him.
I remember thinking in the early 1980s, when I struggled to get my first dot matrix printer to work with an old instrumentation computer that in the future printers will just work. And then the future came and printers became orders of magnitude more frustrating to use — let alone own.
And I remember the early days of the internet and later the web. How much more fun it was. Now the Internet is this annoying, enshittified sewer that I have to tolerate in my life. If I could I would have preferred for it to not play any part in my life anymore. I can understand that most people who were born later than me can’t imagine life without the Internet. This is people’s lives now. But I can still remember what it was like to be entirely free. To have more real relationships with people you liked.
I used to think people who got rich and left the tech world to pursue more “offline” interests were perhaps a bit nutty. Now I understand where they come from. The ultimate privilege today is to not have to care, to not take part, to just drop off the face of the world/internet.
I need only open my email to be reminded of how little I want to be online.
Why do so many grown-ups fail civics 101 so blatantly?
This is why we get people with expertise to figure out what’s important and temper the utterly, utterly childish impulses of easily corruptible politicians.
And I live in a place where BMW sent two engineers and a test car to verify that, indeed, the roads here rattle cars to bits. They were not getting ripped off by people pretending their beemers broke.
I've had a 300cc Vespa GTS for a decade now (alongside a few motorcycles) and the thing that is the most striking about it is how relaxing it is to drive. Despite being somewhat heavy, they are very manoeuvrable due to the low center of gravity. The suspension is very good and despite the roads here being awful it just glides over any bumps and smooths them out. The 300cc engine is fairly quiet and provides more torque than you need. When the lights turn green you'll be over the intersection before the motorcyclists have had time to release the clutch and get going.
It does well on the open road too. It isn't a race machine, but it'll do 120km/h (75 mph) which is good enough. And you won't feel stiff and bent when you arrive if you decide to take it on a 6 hour ride.
I didn't get it for the looks/style. Yes, I did think it was a bit of a gimmick. And then I tried it. I thought I was doing 60/kmh when I was doing 80km/h. And it just glided over bumps.
(And yes, I have a motorcycle as well, but I'm European so it means I don't ride a motorcycle to get into road rage incidents. We actually try to get along here)
Also, the range is pretty good. About 160 miles on a full tank, which no electric motorcycle or scooter I've tried can match. Drive it carefully and you can extend that range to probably 180 miles. You'll be lucky to get 80-100 miles out of an electrical motorcycle.
As for torque, sure the smaller Vespas could use more torque, but the 300cc has more than you will ever need in a city. And to be frank, it doesn't do too badly on longer trips either. It is certainly more comfortable than my Ducati.
Update: As for "modern". Note that my 300cc Vespa is about 10 years old now. So it isn't all that new either.
You are arguing my point for me by way of self-parody.
No, seriously. If I write 5.000 words on a topic and then re-use 500 words I myself have written earlier without attribution because they are appropriate to the current article, how do you make that «bad manners».
I meant what I said about people who can’t see this without help earlier.
(Yes, they are morons because no reasonable person would think this is fair. You need convoluted nonsense arguments to justify this)
This is the kind of thing politicians in a reasonable world would make illegal and subject to sanctions.
Teaching isn’t just about delivering a monologue. Even at university level. It is about connecting and interacting with people. Or else people would derive no more benefit from education than simply reading a list of curriculum books and hand in papers.
How do you envision that this plays out, right now, with AI, when teaching at a K-12 and high school level? Which is much more demanding because you are doing far more than just throwing knowledge and facts at people.
You don’t know what you are talking about which makes you invent fantasies that have no contact with concrete, observable reality. But rather than realize that you are talking nonsense and perhaps educate yourself and think things through, you just carry on.
Again, look at what the original post was about, and what corner you have painted yourself into. Did you, at any point, ask yourself if you had gone off the rails somewhere?
It isn’t so much that you and I disagree. It is more that you disagree with reality. To the extent you are aware of reality.
And keep in mind, if you move to a country you kind of have to accept that they won’t be able to offer you education in every possible language. In fact, learning the language is often a prerequisite for permanent residency.
I am not going to ask you how you envision that AI somehow magically solves this, since we have already established that education isn’t something you appear to know much about. The last thing we need is more speculation, fantasy or anecdote.
Have the courtesy of at least researching things online for more than 2 minutes before you expect to be taken seriously.