HNHacker News
TopNewBestAskShowJobs

spronkey

419 karma · joined March 4, 2013

submissionscomments
spronkey··on Getting 1Password 7 ready for the Mac App Store
I agree, especially around subscriptions. Too many light burnings already.

I use and love 1Password, but there's no way I'm switching to the subscription model. When my version stops working (either through incompatibility or serious security flaw), I'll begrudgingly find something else to use.

spronkey··on If Haskell is so great, why hasn't it taken over the world? (2017)
Shorthand isn't necessarily a good act to follow, as most shorthand requires a solid understanding of context, and it's not uncommon that the person who wrote the shorthand is the only one who can completely understand it in original form.

Personally, I'm familiar enough with Haskell to be able to slowly work my way through most code, but I'm not at the level where I would be confident in writing anything but simpler programs.

I find idiomatic Haskell suffers from what I call "have to limit my line length-itis" - i.e. "Ord" instead of "Ordered", using "x" and "xs" as identifiers instead of e.g. "first" and "rest". This makes for compact code, but not necessarily very readable code. And for anyone who wants to tell me that it's closer to mathematic notation, well, frankly, maths could take a few hints from modern software engineering about readability.

Then there's the dissonance between actually declaring an algorithm a la Haskell/FP, and actually describing how the algorithm works.

It is sometimes nice to declare algorithms compositionally. This thing I want is the max of this joined on to five of these filtered by this criteria. Lovely. But opaque as to the implementation.

I've found that in my experience with most software I write, the parts where the exact implementation isn't that important don't take a long time to implement. Immutability, idempotency, and removing side effects can work just the same in non-FP languages here. The other parts, which almost always involve some sort of IO, require very precise control over implementation, or state, or timing, and are often very difficult to declare with "is" - sometimes the only sensible way I can seem to think of them is a series of processes.

When I try to implement this sort of thing functionally it feels like a retrofit, and never as elegant as the simple imperative "do this, then this, then that".

I'm not trying to be anti-Haskell or anti-FP - I love and use FP principles every day. But I'm definitely in the camp that thinks "pure FP" is the best solution to only a small set of problems.

To me, where Haskell fails is that it has very little to offer for these imperative problems. Which, for many applications, makes it almost worse than even a crappy old imperative lang.

spronkey··on If Haskell is so great, why hasn't it taken over the world? (2017)
Indeed.

Though, will 200 hours spent learning Haskell gain you, well, anything productive?

Surely a non-genius would require at least 1000.

spronkey··on Apps for which macOS applies compatibillity fixes
I'm a tab monster and almost never have less than 100 open at a time, so no, I disagree that it's only great for those who can keep their tabs numbered.

Putting scrolling in a tab bar doesn't allow the user to take full advantage of spatial and muscle memories.

And when those memories fail, because scrolling tabs literally removes tabs from view, the user can't even revert to a visual search to find them! Instead one has to slowly scroll through a list of identically sized tabs, hoping that window #5 is actually the one containing the desired tab in the first place.

Oh dang, it was actually window #4.

Compare and contrast this to non-scrolling tabs, where tab size continually shrinks as tabs grow in number. #1 - you can identify which window is relevant by the tab sizes alone (so even if you move your windows around you're not lost). #2 - you can identify tabs by spatial memory, because you know approximately where, horizontally within the window, your tab exists, cutting your search space down to a few tabs only. #3 - you have visual cues as to when you might need to split out into a separate window for ease of tab management.

Of course, 1px is hyperbole, but 15px-30px is most certainly not, and on a modern display you can fit very many 30px tabs in a row without scrolling.

That's not to say that there aren't limitations to shrink-to-1px tabs, of course there are. But in all circumstances as a UI tool they are objectively better than scrolling tabs, until they shrink to an unusable size. At which point, scrolling tabs still isn't a good solution to the problem (grids, multiple rows, tab lists, tab groups are all vastly better options here).

spronkey··on Big tech products are mostly useless
That's quite untrue for more complex examples of 7 + 17.

"Hey Dingbat, what's 10 percent of 50 times 33 times 125. Oh sorry, 10 percent of open parentheses 50 times 33 times 125 close parentheses".

Even just talking it is substantially slower than typing the number into a calculator. App, desktop, or phone.

spronkey··on Apps for which macOS applies compatibillity fixes
Agree wholeheartedly. Firefox is basically dead to me because of this (that and it's now trickier than ever to fix it).

I'll take 1px wide tabs over scrolling.

spronkey··on List of screw drives
Pozidriv is the devil. It's impossible to distinguish visually in many cases between Philips and Pozidriv. Just use Torx, Square, or Hex. That way there is no confusion.
spronkey··on List of screw drives
I prefer square drive to Torx for larger screws. But I agree with Philips... yikes.
spronkey··on Intel's New Optane 905P Is the Fastest SSD
Doubtful, the 860 isn't that old.
spronkey··on Windows 10 1803 Update Failure
macOS is no better. It's getting worse too, High Sierra has been a clusterfuck all around.
spronkey··on Introducing .app, a more secure home for apps on the web
Considering your "Go to curb.app" solution, to be brutally honest I think at least 50% of the world has no idea what the difference between "Go to curb.app" and "Download the Curb app" is. They are both practically the same. "Guarantee that I won't be tricked away by a scammer" - yeah, no. There are already too many TLDs to squat on that remove any usefulness of a "short and memorable name" on a new one.

I feel like there's some sort of legitimate blockchain solution to be had here that doesn't involve a centralised authority. Who got there first, what domains they have owned continuously, and what products they control perhaps...

spronkey··on Introducing .app, a more secure home for apps on the web
As nice as an HSTS preload list is, using .app and .dev for this is infuriating.

Thanks for wasting about 6 hours of my time a few months ago by forcing me to change all my non-https local DNS entries to something other than .app and .dev, and then dealing with various flow on repercussions.

Really helpful that was. Especially the latter. How many decades of man hours are you wasting from this I wonder...

spronkey··on Is there a fix for impostor syndrome?
IMO the fix is for our industry as a whole to stop reinventing the wheel with yet-another-incompatible-alternative.

My personal imposter syndrome feelings are almost always related to either a) not knowing the "replacement" to an existing technology I am already familiar with (in almost all cases it's two steps forward one step back anyway), or b) not using a technology for a somewhat extended period of time, then coming back to it and realising that the landscape and ecosystem has completely shifted from underneath me.

The latter has hit me most hard lately in iOS development with the move to Swift (and then v2, v3), deprecation of NS*, autolayouts, APNS' http2 etc etc, and in JavaScript development.

We have far too many technologies that have established niches that all accomplish largely the same goals, but aren't transferrable. These days, boosting the toolchain for these technologies is a big feature too, which increases the differences between ecosystems. They require sometimes hundreds of hours of learning to become competent in, even for an expert in another similar technology.

It's some sort of crazy arms race that we don't seem to want to stop...

spronkey··on Show HN: ReLaXed – High-quality PDFs using web technologies
I'd suggest there's quite a lot more inertia to overcome with Chrome (or any HTML/CSS-based tech) to get improvements in print features than with a non-web tech... But hey, no reason not to try :)
spronkey··on I switched from iPhone to the Pixel 2: One-week report
The number of people who discover this too late is absurd, and the fact that you can't jam a MicroSD in the iPhone, even if only for photo storage, is still incredibly dumb.
spronkey··on Don’t buy the MacBook Pros even on sale, in my opinion
The first Unibody Mac was still a very nice machine, even if the display wasn't actually a unibody. The chassis felt like nothing before it, and it was so nicely machined with a super rigid keyboard. MagSafe with separate board. Extremely easy to access battery and HDD (with a really nicely designed little lever system). Unscrew the bottom cover and easy access to RAM. Rigidity of the chassis helped keep ports in good condition.

It's only real flaw IMO was the superglossy glass screen. Fragile and extremely annoying under fluorescent lights. Plenty of the machines lasted a long time despite the glue deteriorating from heat.

You're right about them spending no money on maintenance because repair is a profit centre for them. Rossman is right about Apple's durability issues, too - almost every generation of MacBook has had at least one significant design flaw (from the 8600GT to delaminating screen coatings).

They're only getting worse as they go over the top with proprietary connectors and interfaces, and iDevice levels of integration. I mean, Apple have reimplemented M.2 and NVMe in their stupid proprietary SSDs at least 4 times now. It's utterly ridiculous. If your custom blade SSD dies, which it inevitably will at some stage, your only options are Apple support or OWC (or gamble with second hand parts).

At least in the past they used to get the human stuff right (mostly). No Apple MacBook has ever shipped with a low quality LCD panel, for example. I've never heard significant coil whine from any Mac. I've never heard any Mac that has loud fans at idle (except under an error condition). I've never had a Mac that burnt me. I've never had a Mac with poor speakers. The trackpads have always been best-in-class. The keyboards have always been very good.

Until 2016.

spronkey··on Don’t buy the MacBook Pros even on sale, in my opinion
The latter point is not really true. There are plenty in web dev that need Adobe tools to open files. There are plenty in corporate environments that need Office to edit docs (Open/Libre doesn't really cut it for heavier stuff).

I share the frustration, mainly because both OS X and Windows are getting progressively worse over time as opposed to better, and the lack of a decent alternative is hugely frustrating.

spronkey··on Don’t buy the MacBook Pros even on sale, in my opinion
Ugh Xcode. What an awfully heavy piece of software. Makes Eclipse feel lightweight.
spronkey··on Don’t buy the MacBook Pros even on sale, in my opinion
I think there's definitely some blame on laptop manufacturers here for their ridiculous ever-changing collection of SKUs.

Even Lenovo Thinkpads are incredibly diverse in terms of the hardware you can find in them compared to any generation of MacBook Pro.

I'm constantly amazed by the lack of product leadership at some of these companies. I guess the fact that they all focus on pleasing enterprises instead of actually making a decent product line-up and selling it hard is to blame.

Isn't it about time someone stepped up to fight Apple at their own game? Instead of shitting out SKUs like they have diarrhoea, have some restraint and release only a single model per machine, with SKUs modifying only inconsequential things like CPU speed, RAM quantity, and storage. Get rid of the myriad of awful Wifi and WLAN cards (that often cause issues in Windows as well).

Do this for several generations so that the basic hardware and drivers are the same for every machine in the line-up. Focus on getting the basics right - no sleep/wake issues, no finicky nonstandard hardware, no coil whine, no excessive fan noise etc.

Microsoft are trying this with the Surface range, but they're only just starting to actually position products in competition with Apple's.

spronkey··on Software Testing Anti-patterns
I think the definition of a 'unit' here is possibly causing some strife.

If your product consists of somewhat reusable libraries that you compose together, and extend when needed, having strong unit tests for the low level functionality helps immensely when it comes time to refactor. You know, stuff like "when given int(2) and int(3) as arguments, add(int, int) returns int(5)".

Likewise those high level API tests that ensure the system-as-a-whole is still doing approximately what it's supposed to, regardless of what mess of wires and small aliens is inside the black box are super useful for moving forward as both proof of functionality and guard against regression.

It's the stuff in the middle that's icky IMO. Integration tests that are testing your glue that, especially these days with clouds, containers, microservices etc, can be quite far removed from any codebases you might maintain. I don't have a good solution for it, but I'm searchin'...

spronkey··on Software Testing Anti-patterns
IMO TDD has almost exactly zero to do with the design of your API.

You can TDD top down by writing an end to end test, and recursing TDD down each level until you get to a single unit, repeat until all inception layers of the tests pass.

You can TDD bottom up, by starting with components you'll know you'll need, working out some APIs at their level, then doing the same to piece together larger components.

Ultimately you're in control of how your API looks, and this has nothing to do with TDD itself - if you get caught up exposing a bunch of inner workings and configurations, then you're simply not designing well. It has nothing to do with TDD.

Likewise, if you get caught short with an API that's too simple, well, that has little to do with TDD either.

spronkey··on Reverse Engineering WhatsApp Web
It astounds me that something as simple as talking to people is in some ways objectively more difficult now than it was in 1990.

What the hell are we doing?

spronkey··on Ask HN: What is the best Modern C++ MOOC?
And a good article it is. I've never been a great believer in learning styles, but I do know that for me, it's far, far more convenient to watch a video and read a smaller amount of text than to have to solely read a book.

I read text all day. Watching a video is novel and exciting, and I think I tend to pay more attention because of it. But that's just anecdotal. Grinds my gears when people suggest that "books are the best way to learn" any kind of programming language.

spronkey··on Good news for Equal Pay Day: There is no gender pay gap
Well, there's plenty of evidence that the opportunities aren't the same. But that doesn't say whether they are equal in value.
spronkey··on It's Time for a DevTools for Designers
I agree with your latter statement - I've worked with a few teams now, and the best output always comes from teams that have designers with good foundation knowledge (i.e., of the psychology of design, alignment, balance, colour, gestalt, typography, white space etc - they could be highly effective print designers as well), who work closely with developers with deep understanding of the medium, where both sides are reluctant to compromise, but understand where they need to.

For the former though, I actually wish more designers had better knowledge of the "shallow and antiquated schools of thought" from the print world. A lot of that was born out of decades of iteration, and many of the toys that the web gives us aren't actually very useful for the kinds of content that many of them are tasked with publishing.

spronkey··on Apple starting to alert users that it will end 32-bit app support on the Mac
If Apple make the move, I kinda expect them to do nothing, and make their customers deal with incompatible software. They've been super hostile to their customers of late.
spronkey··on Apple starting to alert users that it will end 32-bit app support on the Mac
So much this. When you're a small team, this sort of thing can basically mean having a product vs not.
spronkey··on High Sierra macOS freezing and stops
I am the first to criticise Apple for absurd decisions with their newer hardware, and the declining quality of their software. But, 2016 MBP keyboard and touchpad aside, the build quality of Macs is a good step above the best ThinkPad or Dell XPS, and has been for many years.

Apple's machines are far less likely to exhibit issues like coil whine, interference on audio outputs, creaks and squeaks, physically broken connectors, electrical noise on USB bus, unstable network cards, poor battery life or longevity, display flickering, poor display uniformity, backlight bleed etc etc etc.

Dell's XPS range has had massive issues with Killer wireless dropouts, crackling audio jacks, mysterious battery drain, flickering screens, and a bunch of other stuff I can't remember right now.

Lenovo's ThinkPads are consistently equipped with sub-par LCD panels (caveat: I have not tried their OLED models yet). I haven't yet met a ThinkPad that didn't have coil whine coming from either itself or its power adaptor. I haven't yet met a ThinkPad that didn't either have or develop some kind of creaking panel.

Until the last couple of years, Apple was about the only manufacturer that cared about making their laptops near-silent, whereas Dell and Lenovo were content putting in stock standard high-RPM fans and running them conservatively. I still find Apple machines superior in this regard.

These might seem like petty little things, but they are the sorts of things that drive me absolutely nuts over the ownership life of a machine.

I'd also posit that neither the high end ThinkPads, nor Dell's XPS, are actually really any cheaper than Apple's machines when you consider like for like.

spronkey··on High Sierra macOS freezing and stops
To be honest, Snow Leopard was an immediate improvement on the abomination that was Leopard.

The only reason, to me, that I remember Snow Leopard as being so good is because Leopard was a steaming pile of slow shit.

spronkey··on A Message to Our Customers about iPhone Batteries and Performance
I'd assume that these processors use the same 'race to sleep' philosophy that Intel CPUs have been using for a while, which would mean that peak power draw would be requested very frequently in short bursts.

The degree of throttling that seems to be occurring does seem to be quite excessive. Excessive enough that I wonder whether they've had unexpected battery degradation in the field, or unexpected degradation of the power delivery circuit, or unexpectedly high load consumption or some kind of fault with the SoC.

Either that or they have just pushed the envelope a little too much knowing that their customers are likely to get fed up and buy new phones... hmmm...

← PreviousPage 5 of 12Next →