ucs
"Apple-supplied and -managed hardware"
—only to be quickly overruled by the marketing folks, who’d probably frown upon such a construction.On Usenet newsgroups and BBS conferences, sellers would post forms that looked exactly like that, except for the ads of course. Buyers would then send in their completed order form via either email/netmail or, preferably, via fax for added security.
I remember always choosing to fax in my orders; even way back then, sharing credit card details via email seemed like a very bad idea.
Fortunately that practice has been nixed for good. Now the helicopter shots are only mixed with the (real) sounds captured by the motorcycles.
The helicopter shots are always live.¹ There is however some prerecorded drone footage, filmed earlier in the year, that gets shown alongside landmarks of particular interest.
Whether or not you get to see this prerecorded footage depends on which feed your broadcaster is picking up. Domestic audiences watching on France Télévisions get to see all of it, but international broadcasters are given a feed with fewer prerecorded “heritage shots” (as well as a feed with no prerecorded material at all).
¹ The director can cheat once in a while, opting to time-shift a particularly beautiful landmark shot by a couple of minutes, but only if it would otherwise go unseen due to race action taking precedence.
The two camera helicopters do need to remain within range of a relay airplane at all times. This is often tricky in mountainous areas, as you’ve correctly identified. A camera helicopter losing sight of its airplane relay is the most frequent source of signal dropouts.
The relay helicopters are only used to relay the motorcyles’ signals, not the camera helicopters’ signals. The helicopter relays travel freely up and down the route, depending on where the motorcycles are located.
It goes something like this:
Moto cameras 1-5 -> Helicopter relay -> Plane relay -> Roadside HF/Sat relay -> Finish line compound
Heli cameras 1-2 -> Plane relay -> Roadside HF/Sat relay -> Finish line compound
While there are multiple HF relays, there is only one satellite relay truck per stage, located at a geographically convenient location at roughly mid-point through the route. Its role is to pick up all the HF signals, multiplex them, and uplink them to a satellite for downlink by the Euro Media¹ HF trucks back at the finish line. It also works the other way round, in order to relay signals originating at the finish line, such as the director’s orders, back to the crews covering the race.
This satellite relay stops being used as soon as the riders have passed the midway point; from that point on, the two planes and relay helicopters are linked to the finish line solely via HF and microwave. Shorter routes like the time-trial stages don’t require a satellite relay at all.
Another use of satellite uplinks is the midway sprint location, which is covered by a fixed camera on a crane. It is relayed back to the finish line independently of the HF relays, by a regular SNG truck.
¹ Euro Media is the outfit tasked with coordinating all the HF feeds, for delivery to the (adjacent) France Télévisions production trucks which are, in turn, responsible for producing the international and domestic TV broadcasts.
It is a companion to the book, "Making Games for the Atari 2600". A wonderfully clear and concise primer that I thoroughly enjoyed, even though I had no interest in the Atari 2600 per se. The NES was my first console -- and naturally the one I'd always wanted to program. Since it shares the same 6502 processor, I used this book as an introductory text before diving into the murkier waters of NES development wikis and forums.
Tail is the right tool for the job here. But if you wish to stick with your idiom, read will reliably consume a single line of input, regardless of how it is implemented:
(read -r; cat) < fileMy OS of choice was OS/2 Warp. It could handle a full-time, two-node BBS and still allow me to do other tasks without skipping a beat -- all on a 486 with 8 MB of RAM!
I also remember being rather envious of how cool Renegade, WWIV and company looked. Not to mention the more exotic software powering the, er, rather more questionable boards: software with ominous names like ViSiON-X or Oblivion/2... But after trying them all, I eventually switched from TriBBS to PCBoard.
It was the right choice: I loved the flexibility of PCBoard's scripting language and C SDK. Adding functionality to my BBS is what prompted me to pony up for Borland's Turbo C++ and get serious about programming.
Even more apropos was finger's .project file: it was meant to be a single-line status update about your current project.
To be fair, it never had much of a life to begin with. I bet I can count on one finger (sorry) the number of folks who ever saw the cute ASCII art in my .plan.
Carmack may well have been the only person in history to have put finger to good use. Even back in those days, using your .plan for actual status updates was virtually unheard-of.
Mapping it as an extra modifier seems a tad unergonomic. Ideally, each modifier key should be located on either side of the keyboard, so that you can always engage it with the opposite hand. To that end, I also remap the Menu key on my MS Natural Keyboard[1] to act as a second Super modifier.
Furthermore, since I'm multilingual and need an AltGr modifier on both sides as well, I map the combo Ctrl+Super to act as AltGr. See my US+International XKB keymap[2] should you happen to want a similar setup on Linux.
[1] https://www.microsoft.com/accessories/en-us/products/keyboar...
[2] https://gist.github.com/ucs1/fe673a3606442911dbd7d016a372646...
AltGr + e = é
AltGr + p = ö
Adding Shift to the mix produces É and Ö, respectively, as one would expect.
Debian stable is that distro in my case.
I agree that you shouldn't have to put up with an annoying bug or missing functionality until the next stable release; that's what the backports[1] system is meant to address. And when you cannot find what you're looking for in the backports repository, making your own is relatively simple[2].
The way I see it, the FreeBSD ethos is perfectly applicable in Linux land. It just requires a little bit of extra discipline on our part.
I was attempting a dual-boot setup with Windows 95 at the time and, being too inexperienced to recover from the mishap, lost everything in the process. (Although one could argue that nothing of value was lost; Windows 95 was practically unusable.)
I blame both Slack and LILO for traumatizing an impressionable young mind: some 20 years on, I still hesitate whenever I have to deal with a bootloader.
Thankfully, nowadays we can boot by straight-up running the kernel as a UEFI executable[1]. No more MBR/VBR/bootloader song and dance for me.
But I'm afraid that even in the DC metro area, among French embassy personnel no less, few people knew about such a thing. We certainly didn't. Most French folks who missed the Minitel just ended up subscribing to one of the major online services of the time, namely CompuServe and Prodigy.
Besides, without the benefit of those giant billboards featuring topless young ladies[1] the Minitel never stood a chance in the US.
[1] Was it 3615 ULLA? ;)
Once I finally got my hands on the serial cable needed to connect the family's Minitel to my first computer, an Amstrad CPC6128, I was in business... As if by magic, a new game had teleported through the telephone network, materializing on a previously blank floppy disk. My 9-year old mind was well and truly blown! This was 1989 and I had just downloaded a game.
Never mind that the transfer took an eternity, resulting in a hefty charge to my parents' phone bill. Never mind that I had very little interest in the game itself -- it was only Bubble Bobble, after all. No, the downloading process is what fascinated me. A whole new world of possibilities had just opened up.
But a year later I was crestfallen: we had moved to the United States and there was no Minitel. Perhaps fortuitously, there were no Amstrad computers either. The complete lack of Amstrad software stateside was solid ground for requesting a new computer. Now armed with a brand new 286 PC and a 2400 baud modem, the Minitel was soon forgotten as I discovered the joys of local BBSes, inevitably ending up running a rather popular one of my own.
America may not have had the Minitel, but it more than made up for it with a thriving BBS scene, fostered by those gloriously free local phone calls.
I'm afraid this is the C idiom for assigning a void pointer to a function pointer:
*(void **) &fptr = getvoidptr();
Without the silly cast you'd get the following warning when compiling with -Wpedantic: warning: ISO C forbids assignment between function pointer and 'void *'
Once you learn the idiom, and the reason behind it, it makes things (slightly) easier to parse than dealing with a bunch of typedefs, IMHO.I really like the idiom for passing sized arrays suggested at the end of that LKML thread[1]: pass them by reference!
void func(int (*arr)[256])
{
printf("arr size: %ld\n", sizeof(*arr));
}
int main(void)
{
int array[256];
func(&array);
}
[1] https://lkml.org/lkml/2015/9/7/147