I started writing a more fleshed out vi compatibility mode for TextAdept earlier this year. As someone who understood the basics after going through :vimtutor multiple times but always struggled with the more "advanced" commands, there's no better way to actually grok vi than to just try to recreate it. It's pretty amazing how much Bill Joy managed to pack in. Of course, if you're implementing POSIX vi, there are quite a few features that have aged poorly, like roff/troff macros and line-editing, but there are also quite a few commands that I had never paid attention to (like _) that have subtle behaviors that sped up my editing even more. The hardest part about becoming proficient in vi is committing commands to muscle memory so you don't habitually fall back on hjkl.
> Of course, if you're implementing POSIX vi, there are quite a few features that have aged poorly, like roff/troff macros and line-editing
What do you mean by "roff/troff macros"?
EDIT: Ah, you're probably talking about the "section-wise" movements, defined in POSIX with language like "A line whose first character is a <period> and whose second and third characters match a two-character pair in the 'sections' edit option (see ex)" - that's the first time I've stumbled upon the 'sections' and 'paragraphs' options in the Vim manual ... Very quaint!
Yep, those are the ones! There's also the oddity of the [[ and ]] motions. In the POSIX standard, those are the only two-character motions. I was using a state-machine to implement motion commands, and that single command threw a wrench in the works. Of course, vim took two character commands and ran with it, so in vim [ can be followed by a whole host of characters that all do different things. Since g was not mapped in vi they also did the same thing there.
It's a shame that, being based on a full-blown Linux SBPC, it has an absolutely unacceptable boot time for a camera. 22 seconds. I can have my iPhone camera out and ready to capture an ephemeral moment of child's play in under 3 seconds, most commercial cameras boot in seconds as well. A film camera can be ready to go the second the lens cap is off. 22 seconds is an eternity in the world of photography. It's a shame that the SoC the Raspberry Pi line is based on has no kernel support (or IIRC hardware support) for S3 or anything similar.
It's unfair to compare an idling deep sleep device with a cold boot.
However, there is a shortcut: Just don't boot a full OS (thinking of custom firmware which boots in fractions of seconds, standard in the Microcontroller world). Or boot an optimized Linux user space. I am confident with a bit fiddling one can bring down a standard SBC Linux to a few seconds from cold to ready.
Functional comparisons among devices within a category are always fair. Pointing out a device’s perceived shortcomings is not an attack on the people that made it. One crucial role designers play (ideally) in product development is seeking out honest feedback, filtering it, and figuring out if that feedback can help make the product better for end users. The FOSS landscape needs a lot more of that.
> Functional comparisons among devices within a category are always fair
When they have the same prerequisites, yes.
But then you need to count in the time the iPhone needs to boot as well, which will probably mean you are at a similar range.
No, because the criteria here is state transition from not-in-use/power saving to in-use/"on". The Pi Zero has no meaningful sleep state, as I lamented above, thus the only valid "off-on" state transition for the Optocam Zero is a full boot. Sure, if you were to leave it on in your bag then there's no boot time, but then you're limited to 70-80 minutes of runtime. Then you get "instant-on", but you're limited to the photos you can take within an hour off the charger, which also renders it useless as a camera, and compares unfavorably to the iPhone . If it had a sleep state then we could compare apples to apples. Since the iPhone's default "off" state is sleep, that's what counts for "turning it on".
You don’t even need to technically justify the comparison. Apples and oranges can be compared if you’re discussing how useful each is for a particular purpose or in a particular context. Oranges are nice because the skin proffers protection from soil and bumps during travel. Apples are nice because you don’t have to peel them or deal with sections — you just bite hunks off of it. If you’re not throwing it in your bag, the shortcomings of the Apple might be totally irrelevant. If you’re going on a picnic, the convenience of the Apple might be less important. Similarly, it wouldn’t make much sense to abstractly compare whether moving trucks or motorcycles are better. It makes complete sense to say one has better cargo capacity, and one is way more fun to operate.
i built my own camera out of a Zero 2W [0] and by disabling Picam2 and letting the OS (Debian Bullseye) idle, i can get 2 days of shots and some videos while i walk around the city/hiking out of 3 18650 batteries... bringing 3 spare batteries in my backpack never put me needing battery in any situation! starting Picam2 takes a fraction of a second
Things lost to time: The Minolta Dimage A1 had contacts for detecting when gripped, so it could ready itself without any button pressed: https://en.wikipedia.org/wiki/Minolta_Dimage_A1 (You see it in the pic, but its not described in the article).
Comparing that to a real camera: I can "quick draw" pick up a Nikon DSLR that's off, flick the power switch and hit the shutter button one handed in one motion as fast as I can move and there's a good picture on the screen as soon as I let go of the trigger. Double click trash can and it's gone. Either will take less than half a second. Battery life is so long I usually forget to charge it. I suspect the power switch is just a "key lock" that prevents triggering anything because there's no delay. Either that or it's a wakeup in the microcontroller range of timing.
(You can easily get jank by filling up the buffer or slow memory card or autofocusing on something impossible, possibly in the dark etc, of course.)
Sub 2-second booting Linux is generally possible, either by bundling everything into a big image or by creating a fixed hibernation file and resuming from it. That's what they do for real embedded systems, but the downside is that they tend to be monolithic and not so update or modding friendly.
I bet this could be changed to seconds if a unikernel type approach were used. There’s no need to boot a full OS. I understand the developer starting with Linux, though, as I’m sure it’s easier for debugging.
yeah it's pretty fair if you compare them apples to apples.
an iphone boots in 15-20s depending on how stale things are, you'll presumably need to unlock it, and then navigate to the camera app however you do so.
it's just presumed you wont have to boot your phone.
The point they were trying to make was that if you take appreciation of assets into account, if your billion is appreciating by a relatively modest 5% per year, you are passively earning 50 million/year. Whereas someone with one million passively earns 50 thousand/year. One is enough to live in luxury anywhere in the world for several lifetimes, the other is enough to live comfortably in some parts of the US (or like a king in many parts of the world) but not enough to throw 6 figures at a programming language foundation for fun.
This is a common but silly claim; there is, generally speaking, no such thing as a safe rate of return that overcomes the inherent losses due to inflation. If you're getting a 5% rate of return on cash, that comes with both risk (someone with a billion dollars isn't going to benefit from FDIC insurance) and doesn't even overcome basic inflation.
That $50 million a year is also subject to income taxation and cannot be easily avoided. $50 million a year in interest on returns from cash will be hit at the 37% marginal rate, plus whatever the state assesses, so north of 50% in California.
Or to take an intermediate value, $10 million is 500k a year and most people will find it difficult to spend that much on themselves, so it’s going to grow on its own and compound. It will grow more rapidly if some is invested in the stock market.
Also, donating appreciated stock avoids taxes. This donation may have come out of a donor-advised fund.
Rich people can make substantial charitable donations rather easily and make a big difference. I suggest we encourage them.
We just bought our first (used) EV, and charging stations are the Wild West right now. Any random station you pull up to might charge close to the local cost of electricity, or some wild sky-high amount. And hopefully they’ll tell you what that is before you have to swipe your card. There the economics can swing towards gas cars depending on how absurd your local charging station prices are. For people filling their tank every couple days because of a 2 hour commute or something an EV may still not make sense financially. But if you’re putting in under 40 miles and have even a modest 120v 12 amp circuit you can plug into at home (e.g. a dedicated washing machine circuit) you’ll likely only need a charging station on rare occasions such as a road trip. As a matter of fact I am writing this from our first EV road trip. The inconvenience has been comparatively minor and our “fuel” costs should end up being about half of what they would have been in our hybrid SUV.
I'm sure the idea here was a physical quine, although since it only contains 2.5% of its own G-code it's not really a quine, any more than a "Hello World" program is a quine since the string "Hello World" is in the program text. It would be trivial to generate something like this depending on which part of the G-code you pick.
Many G-code dialects contain subprogram calls, loops, and conditionals that seem like they'd permit a physical quine. The standard RepRap firmware breaks the rules by taking input:
G-code is like assembly language for CNC. It’s human readable, you can write it by hand if necessary, most machines will compile it internally to machine instructions, and there are a million different flavors with incompatible macros, etc. The flavor I’m most familiar with is Klipper’s interpreter, which will let you write macros, but that would technically be cheating since you could just stuff an entire program into a macro.
For anyone thinking of this, I promise to be suitably impressed (defined as "upvoting it when I see it on Hacker News") if anyone does manage to get a true G-code quine in this sense. Go for it.
I work a lot with Aerotech's Aerobasic which is G code mixed with a basic like language. You can generate G code on the fly and execute it, manipulate files, call other programs, text boxes, menu boxes, etc.
I wrote a simple teach mode program that puts the machine into jog mode where you move the axes around and create points and associate a command for each, e.g. G0 rapid, G1 coordinated, G2 clockwise arc, G3 counterclockwise arc. Each move is then written to a file that is saved and loaded afterward for testing. Nice system but very costly.
I think ultimately the conclusion the author reaches is an interesting one, that the real "disease" of tourism is like sepsis. It comes not from without, the tourists themselves, but from within, the changes made by locals to try to capture the opportunities for wealth that the tourists create.
The paradox of the tourist is fascinating. All at the same time, a locality experiencing a flood of tourism will welcome the sudden wellspring of foreign currency pouring forth from the rock, and loathe the disruption the flood causes to the steady pace of life. Anyone who has been a tourist knows what the tourist wants, a break from the monotony of their own culture, a desire to know the other and tread in their footsteps, in some cases a wholesome longing to break down cultural barriers and prejudice. And yet anyone who has been on the other side of the interaction with a tourist feels the heady mix of emotions that comes with the experience of being the toured. The discomfort that comes from the wall being torn down unexpectedly. The inconvenience of disruption in routine. No tourist wants to do harm, but even the most sensitive and well-meaning tourist creates a breach in routine that is disruptive. Nobody likes change.
Houses are big, the air mass inside is big, convection and recirculation maintain a fairly consistent temperature throughout the house, and the thermostat is centrally located so it averages the temperature of the air. The air coming out of the vents is still often colder or hotter than the set temperature, so sitting next to a vent can be less comfortable. Cars have a much smaller air mass, much poorer insulation, a thermostat that is usually installed in the ventilation rather than in the cabin where the people are, so the perceived temperature inside of a car can vary wildly if you don't live in an extremely mild climate, even as a sibling commenter mentioned, between the back seat and front seat, or between the passenger seat and driver seat.
It also prevents all kinds of clients who (for various reasons) can't implement SSL from visiting your website. I'm sure this is a "small web" blog, whose author wants to be visited by e.g. a Commodore 64, an OS 9 iMac, or somebody who just wants to telnet in. If the sensitivity of the information on this page was critical or you were going to be submitting information then by all means yes, SSL is important, but if you're going to be reading a personal blog about calendars then http is probably fine. Of course the ideal solution is offering both and letting the client choose.
For anyone who was also curious what Justin Frankel got up to after the speculation at the end of the article, he founded Cockos Software and is the lead developer on the excellent REAPER DAW.
Oh, I had no idea. It's been a few years since I used it in anger but it was a very pleasant package to use, with an extremely friendly licensing scheme (purchasing a permanent license for <current.X> got you all releases up until version <current+1.max>)
Not to mention it's about as easy to use without a license as WinRAR, so you can trial it indefinitely and then pay the mere $60 for it when you're ready to release some music commercially
Easily one of the best values in commercial software if you have a need for what it does. I think I paid something ~$70 a couple of years ago. While there's a limitation on the number of updates you get based on release version, I'm still getting updates under the license a couple years on. All that and you get a genuinely professional level tool for much less than what similar software from competitors offer.
I'm no musician but I paid for a Reaper license just because the software is so good and useful and the licensing scheme is so reasonable. Like, it's kind of hard to beat that.
It's a shame, he's a genuinely cool guy! If I wasn't convinced that my kids would find a way to break it when I wasn't looking I'd definitely have an Acme Klein Bottle by now.
reply