Hacker News new | past | comments | ask | show | jobs | submit | wwalexander's comments login

While doing Instacart deliveries here in Maine, I dropped off a leave-at-the-door order which requires uploading a picture of the shopping bags at the entrance. However, there wasn’t any service in the rural area I was delivering to, and the app required a connection to even open the camera interface. So I had to drive away down the road until I had service, open the camera, drive back to the delivery point, take the picture, then drive away again to upload the picture and complete the order.


Same thing with paypal.

They require a mobile phone number now. If I give them one, they'll enforce SMS as a login path.

I live in an area with excellent cell service, except for a few miles around my house. I'm not going to try to log in, while buying something, then drive down the road and wait for the SMS.

Sheer stupid.


Why has this post been flagged? Category theory is extremely relevant to programming and this post has plenty of points and comments. Any thoughts dang?


I don’t know what I thought CNC stood for (something with Cutting in the name presumably) but I definitely didn’t think it stood for Computer Numerical Control.


I also find it frustrating, but I’ve come to appreciate that it’s a way to at least partially sidestep the hard problem of naming things. There are still idioms and choices to make, but using abstract symbols makes it easier to play with the abstract concepts being presented.

My most-used programming language is Go, but I’ve been writing mainly Swift for the past year or so. While there’s a lot I like about Swift, its verbosity leads me to waste an inordinate amount of time pondering what the correct verbiage ought to be, and I often miss Go’s more terse, often single-character naming convention.


> My most-used programming language is Go, but I’ve been writing mainly Swift for the past year or so. While there’s a lot I like about Swift, its verbosity leads me to waste an inordinate amount of time pondering what the correct verbiage ought to be, and I often miss Go’s more terse, often single-character naming convention.

Huh. I was expecting that comparison to go the other way given Go's notorious verbosity in terms of error handling, generics etc.. Maybe people compensate for verbosity in one area by being more concise in others (though that doesn't explain e.g. APL).


I would say that Go is extremely explicit, but I wouldn’t say it’s verbose.

Or, I suppose you could say that Go is semantically verbose (explicit error handling, no/low use of generics, no operator overloading), but syntactically concise (short variable names). Swift is the opposite, being semantically concise (extremely heavy use of generics, default arguments) but syntactically verbose (labeled arguments, English-like clauses, result builders).


I believe this stems from C originally only having 8 significant characters for identifiers.


Not only that, but screen space was really limited back then; it was not uncommon to develop on terminals with as low as 80 columns and 24 lines. Having shorter names meant more of the code could fit on the screen at the same time.


The limited size helps with keeping the code short and simple. ;-)


Historically there was a bifurcation between scientific/technical computing and business computing. The former wanted to write something close to E = mc², while the latter wanted `MULTIPLY MASS-IN-GRAMS TIMES SPEED-OF-LIGHT-IN-A-VACUUM-IN-METERS-PER-SECOND TIMES SPEED-OF-LIGHT-IN-A-VACUUM-IN-METERS-PER-SECOND GIVING ENERGY-IN-JOULES`. With the dotcom boom, the last vestiges of the old republic were finally swept away, and now even C programmers get slapped for writing `c`.


I still develop on a terminal with 80 columns, to this day!

...but it has 96 rows, and there are five of them, side by side across my monitor. Definitely an improvement! - but I still prefer not to have long rambling Java-style identifiers.



That’s only for external identifiers (the one the linker sees), and it’s only six characters. This limit comes from FORTRAN, and in turn comes from the world of 36-bit word mainframes. Those machines didn’t have bytes, only words. Words could represent numbers, or up to 6 characters (in a 6-bit character set, no lowercase letters).

Internal identifiers and macro names had a lower limit of 31 significant characters in C.

The more relevant original reason for short identifiers is that code completion wasn’t a thing, and to a lesser extent that screens were at most 80 characters wide.


The limit for syscalls in early Unix seems to be five though. I forget why.

Hence, famously, "creat" instead of "create"


Majority of those above are above 8 char length.


Alyssa Rosenzweig deserves a Turing Award!


Seriously, I keep waiting for the FOMO to kick in but the M1 is still so great that I don’t have any.

The only hiccups I ever have are resolving Swift result builder types…perhaps SwiftUI is just a big ploy to burn up all the extra CPU cycles.


I held onto my M1 Air for almost 4 years and only upgraded because the LCD somehow developed some random screen-dooring issues. It was always completely capable for what I needed though I do appreciate the additional real estate afforded by its 15" M3 replacement.


I was a huge Swift fan but SwiftUI and the changes supporting it in the language got me to switch to Rust for all my personal projects


I’ll admit the builder DSL stuff is a bit of a Turing tarpit for me. I may have wasted the day yesterday trying to implement a BNF grammar DSL.


> They also did move the Magic Keyboard and Magic Mouse to USB-C.

Only for the bundled peripherals, it seems. The Apple Store now only lists the full-size Lightning keyboard without Touch ID in white, which is even worse than before when you could get various permutations of tenkeyless, Touch ID, and black.


I guess it was still getting updated. All peripherals are available in USB-C versions for me now.


> Browser plugs fingerprint privacy randomizer


I don’t know why “repeat” isn’t very common in place of while/loop/etc; it works out nicely grammatically.

    repeat {}
    repeat while <condition> {}
    repeat {} while <condition>
    repeat <count> {}


One possible reason:

> The word "REPEAT" should not be used in place of "SAY AGAIN", especially in the vicinity of naval or other firing ranges, as "REPEAT" is an artillery proword defined in ACP 125 U.S. Supp-2(A) with the wholly different meaning of "request for the same volume of fire to be fired again with or without corrections or changes" (e.g., at the same coordinates as the previous round).

https://en.wikipedia.org/wiki/Procedure_word#Say_again

More seriously, PASCAL has repeat-until loops, similar to do-while loops in C.


Pretty C does aliases "repeat" for "do", so yeah, I've got you covered!


Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: