This slowly alters the essence of The Internet, due to the permissionless nature of running any self-organising system like Bittorrent and Bitcoin. This is NOT in Android, just isolated Web Apps at desktops at this stage[0]. The "direct socket access" creep moves forward again. First, IoT without any security standards. Now Web Apps.
With direct socket access to TCP/UDP you can build anything! You loose the constraint of JS servers, costly WebRTC server hosting, and lack of listen sockets feature in WebRTC DataChannel.
<self promotion>NAT puncturing is already solved in our lab, even for mobile 4G/5G. This might bring back the cyberpunk dreams of Peer2Peer... In our lab we bought 40+ SIM cards for the big EU 4G/5G networks and got the carrier-grade NAT puncturing working[1]. Demo blends 4G/5G puncturing, TikTok-style streaming, and Bittorrent content backend. Reading the docs, these "isolated" Web Apps can even do SMTP STARTTLS, IMAP STARTTLS and POP STLS. wow!
Author here. I invented a novel polyglot executable format that makes developers lives easier, and we're helping the AV industry feel comfortable with that through openness and transparency. Every time I ship a release, I make an effort to upload all the executables to Microsoft Security Intelligence to give them a heads up and let them know that I wrote them (since there's currently no vendor neutral solution for code signing). If you build APE binaries, then you should do that too: https://www.microsoft.com/en-us/wdsi/filesubmission?persona=... Every time I submit the form, Microsoft whitelists them with zero hassle. They even let you upload a single zip file containing hundreds of executables, and they'll take care of them all. It's great. Doing that ensures Windows Defender won't cause issues. The good news is most other AVs are plugged into the same database as Defender (even Google Search bases their analysis on Microsoft's security intelligence) so that form actually gets you off the radar of a lot of AVs. As for CrowdStrike, if you have contacts there, then I'd be happy to share with them information about what our team is building and shipping, as well as documentation on the APE file format, in addition to free consultation from me for any help they need supporting it on their end. My email is in the blog post.
It's top-down 2D. You are alone in a large, empty warehouse. At regular intervals, a truck drops off a load of assorted objects at the back, and a few people ask you for some specific objects at the counter in front. Your role is to arrange the objects in the warehouse such that you can fill the requests in the least amount of time, and you can do this in any way that works for you (by color, function, name, etc).
As the game goes on, the truck drops off more and more different kinds of objects (usually ones that fit into more than one category), and the requests get more and more complicated.
At the end you get a time-lapse of the whole warehouse over the whole game and you can see your strategy evolving over time.
Pretty well executed and simple. Heard about it from one of its devs in a HN comment actually.
Then you'll love this project. The Holographic demo supports the Looking Glass display and I'm pretty sure natively supports the Kinect Azure but also works with a webcam.
The last paragraph is both funny and so so in phase with a lot of security by obscurity found everywhere:
"The V700 consults both “/proc/cpuinfo” to learn the CPU serial number of the device it is on, and a binary file associated with the device file system structure as part of its method for determining its AES (Advanced Encryption Standard) key. It then ignores all of these device-specific items, and reverts back to a static key “87654321” stored in the binary."
There are also some free tools and games worth getting
- Bravely Second Demo (story that's not avaialable in the full release + exclusives you can transfer over)
- Pokémon Sun & Moon - Special Demo Version (Ash-Greninja pokémon that you can only get here and transfer over to the full game)
- Pokémon Omega Ruby & Alpha Sapphire Special Demo (Glalie pokémon that you can only get here and transfer over to the full game)
- Pokémon Bank and Poké Transporter. Pokémon Bank will be free (currently $5/year) BUT the Poké Transporter app can be only downloaded from INSIDE the Bank app which only works if you have a sub... All NEW downloads will be impossible after the date so you better get the Transporter app now (pay the $5 for the remaining days) or else > doesn't bother and just pirate it. But honestly the writing is on the wall for the Pokémon Bank...
- Save Data Transfer Tool (permanently move, not copy, save data files from a physical cartridge to the 3DS
- 3DS F2P digital Pokémon games (Pokémon Picross, Pokémon Rumble World, Pokémon Shuffle)
- Flipnote Studio 3D and Picross Zelda (Nintendo My Rewards games but you can still get them)
Here's the advice I give to people about the entire Dune series:
Read Dune. If you don't like it, stop.
Read Dune Messiah. If you don't like it, stop.
Read Children of Dune. If you liked Messiah you'll probably like this as well.
Read God Emperor of Dune. This one stands alone. Lots of people hate it. Whether you like it or not, don't stop.
Read Heretics of Dune. If you don't like it, stop.
Read Chapterhouse: Dune. Weep that it's over.
In my experience, people who like Dune generally will enjoy at least through Children of Dune. Anyone who enjoys God Emperor of Dune is insane (maybe why it might be my favorite).
Regarding the other Dune books, read them out of curiosity if you like, but they're not really Dune books despite being in that universe. I've read about seven of them out of optimism and hope but didn't enjoy them at all. Even Sandworms of Dune which is ostensibly based on Frank Herbert's notes for Dune 7 wasn't enjoyable to me, although it was least bad.
Disclaimer: Fully blind programmer, have been for several years,learned as a teenager, later went on to teach various blind individuals as a side hustle for a while, culminating in a 2 month course done for the folks who make CodeJumper. With all that out of the way, let's go.
First, let me just comment on that comment by @conviencefee999. Kindly do your research before chiming into a discussion you quite clearly know very little about. I don't know your unique set of circumstances, but stating that one of the most viable career paths for a blind individual is not a viable career path is rather against the current and, as you yourself helpfully point out, anything but helpful.
While it is true that the barrier to entry is still somewhat present, particularly for the age group OP is asking about, it can absolutely be done. Case and point being myself, as well as various others I know of. There are discussion groups about this topic, mostly in the form of the admittedly rather antiquated mailing list. An example is program-l over at freelists.org.
Second, re: Python's indentation situation. I would actually argue that Python is a great starting point, because screen readers are able to either verbally or audibly indicate indentation levels when required, particularly on Windows and up to a point, in a more limited fashion, on Mac OS. This makes the "invisible characters" issue somewhat less problematic, and a braille display alleviates this issue even more, provided the blind computer user in question has access to one, which is more common in Europe than it is over in the States.
Now as for a couple recommendations.
Scratch works on the principle of instant gratification first and foremost: you do, you see. Right away. And it can be difficult to replicate that experience non-visually, particularly for younger children. I haven't really found a 100% equivalent alternative.
I worked with a group of researchers several months ago that is working on an accessible interface to Blockly, a Scratch competitor in a lot of respects, which came as close as I can think of a fully analogous experience. Unfortunately, I have no idea how that project is faring at the moment and if they ever made it further than the prototype I got to test back then.
The things I can think of that come closest are:
* Swift Playgrounds (mac/iPad): VoiceOver, Apple's screen reader, supports these environments rather well, describing the visuals within the game worlds you work in, so this could be something to look into.
* Freecodecamp/codecademy: I myself started learning how to program by writing HTML back when I was 10 or so. I liked the idea of writing some arcane things into a notepad and seeing it come alive on the page in front of me, and FreeCodeCamp essentially does that same thing, but gamifies it a bit more. That could be something to look into.
* SonicPie: SOnicPie is a ruby environment for creating music using code. There's a pretty accessible tutorial for newcomers that could work for, say, a 10-year-old I think, provided they have a love for music and sound. Could be another avenue to try, although the sonicPie editor isn't as accessible as it could be and takes a bit of getting used to.
Waiters and pollers are artifacts from the fact that Futures in Rust are lazily scheduled, unlike Javascript, for example, where Promises are eagerly scheduled and executed.
When you don't want to block your process and program in a reactive, non-blocking way, which is what futures and promises are an implementation of, what you are actually defining is something like this:
> "our process will do some synchronous work, then it will need to stop at point X to wait for asynchronous data"
> "after that data arrives, we can restart our process where it stopped, at point X, and do some more work until it hits point Y, where it will need to wait some more asynchronous data"
> "after that also completes, we can restart from Y, and process until the end of the function"
However, the problem that arises is _how do you store the variables that are being used in this function_? Particularly those values that would be saved in the stack, because by returning the function, the program needs to pop all those stack frames so that the caller can continue executing.
There are two ways of accomplishing this. The first way is to use stackful co-routines, aka threads. The OS does this, but platform threads have very high overhead, so many languages avoid it. You can also use the OS's reactive APIs or thread pools and implement your own scheduler with virtual threads on top, which is what Go or Erlang (and soon Java) do, but then you can't avoid that runtime overhead, which Rust and C++ don't want to have, or maybe you want a more lightweight model (which Javascript wanted).
In that case, the other approach you can do is explicitly represent the processes' variables and state as a structure in the heap, and create functions that operate on those structures. In Javascript you can easily do this (you can capture the values in a closure), and in Rust it is more complicated but doable, and in general you can do this in most languages.
The downside here is that, instead of being able to simply code your process in a straightforward way and have it block implicitly, you need to explicitly code the synchronous steps between each asynchronous wait, which results in either callback hell, confusing functional styles such as continuation passing, or future combinators and callbacks.
What async lets you do, then, is have the compiler write those state machines for you. If you mark your function as async, the compiler will create the closure for you, the state transitions for you, deal with waiting for nested futures for you, and so on, and you can just write the code in the 'dumb' synchronous style. This is common to all the async implementations, from Rust to JS to C#.
However, at some point, you need to actually drive these state machines. You need some kind of scheduling that is able to receive external events, get the state machine that is waiting for it, and execute the next state transition. Driving these state machines is done using those waiters and pollers. Rust exposes these APIs, because it does not bundle the executor, and so it exposes those methods so that async runtimes like tokio can be built against a standard API. Javascript, on the other hand, still needs to perform those tasks but, because it has a runtime of its own, implements an execution service implicitly, and so the external interface of Promise does not need to expose that concern.
I've heard of it, second-hand in a fictional account of one of the wars, but have failed to find information about its use in Italy. Here's what I did find.
> First, able-bodied POWs may be partially or wholly released on parole or promise if national law of the detaining power that of the State of origin of the POW permits this (art. 21, GCIII). As explained by the 2020 ICRC Commentary to GCIII, Article 21: “Such release typically occurs in exchange for a pledge not to take up arms again in the same conflict. The practice of paroling prisoners of war has declined considerably since 1949. In addition, many States today prohibit members of their armed forces from accepting release on parole” (para. 1920). Prisoners of war released on parole are compelled to keep their parole or promise.
I can't tell if this means parole for those interned in a foreign country, or if they were allowed to return home under parole so long as they didn't fight.
> The American Civil War was the last western conflict where paroles were regularly employed and honoured by both armies. 14
where 14 is:
> There were instances of parole in the Franco-Prussian War (1870-1871), the Boer War (1899-1902) and the First World War, but in general terms, after the American Civil War, the practice began its demise. For the Franco-Prussian War, see: Michael Howard, The Franco-Prussian War: the German Invasion of France, 1870-1871 (New York: Routledge, 2004), p. 222. The Prussian army allowed French officers to leave on their parole after the Prussian victory at the Battle of Sedan. For the Boer War, see: Major Gary D. Brown, ‘Prisoner of War Parole: Ancient Concept, Modern Utility’, Military Law Review, vol. 156 (June 1998), p. 207. The Boer guerrillas tried to place British POWs on parole, but these were largely disregarded. For the First World War, see: Paul Robinson, Military Honour and the Conduct of War: From Ancient Greece to Iraq (London and New York, 2006), p. 156. The French placed some German officers on parole early in the conflict, but the practice was not reciprocated by the Germans
> In summer 1940, the German Wehrmacht had captured 2 million Dutch, Belgian and French soldiers. All of the Dutch and Flemish and about a third of the French POWs were released on parole because the Germans coulnd't supply them and already had half a million Polish POWs as workforce (de facto: slaves). Mark Mazower, Hitlers Imperium: Europa unter der Herrschaft des Nationalsozialismus. C.H.Beck, Munich 2009. Page 152
You'll likely have to ask in a more specialized forum to find the information and documentation you're wondering about.
MENLO PARK, March 30 (Associated Press) - In what was widely characterized as "at least a dick move", malicious hackers of unknown origin were discovered yesterday to have been spamming the entropy pool of thousands of McDonalds self service kiosks with the phrase "i can haz jalapeno cheezeburger" during system boot.
While the direct ramifications of this action remain unclear, informal discussions are already being held in various constellations in congress to probe whether the FCC should be given an extended mandate to regulate randomness, according to several sources close to the food sales tech stack regulations sector who requested to remain anonymous.
In response to the swift call for regulatory action, several privately held businesses that supply PoS devices for tea shops have pledged to promptly deploy OTA updates that replace all sources of randomness in their systems with an infinite repetition of the second amendment.
Said Harry Parks, 37, of International Teaselling Machines Inc. - "In this country it is the given right of each man to select the randomness that he wants, so be damned, and I will happily sacrifice the security of my customers to make a stand for the unique freedom and liberty we have in this country."
I'm the designated car buyer for a few people. (this advice is US centric)
First off, the market right now is really terrible for buying. Possibly the worst it's been in a really long time. The same things that worked before, still work just as well as they did before, but the price you up with at the end is a lot more than it would have been two years ago.
The first thing to do is to decide on the Year/Make/Model/Trim/Options you want. Treat this as a separate search from actually purchasing the vehicle. If you want to, go to place that has lots of vehicles, like CarMax, and test them out, one after another. You may be happy with several different trims / makes, in this case just make a spreadsheet of how much more or less you each would be worth for you, and adjust the prices you get later in your search accordingly.
For every vehicle I've needed to buy, somewhere there is an old-school, year 2000 era bulletin board full of enthusiasts for this kind of vehicle. There's always a forum thread called "How much are you paying", in which people post detailed breakdowns of how much they paid and the eventual out the door price. There might also be Facebook groups that are similar. Go through these purchases and make a spreadsheet of the ones similar to what you want to buy. There's going to be a big range, from clueless newbie fanboys massively overpaying to seriously good negotiators / really lucky people. I tend to target about the 20%-30% percentile of these as my target price. Given that there are plenty of good negotiators in these communities, and people are more likely to post good deals than bad ones, this works out to paying far less than your average car buyer.
Next, look up five to ten dealers nearish you that have the vehicle you want. By near, I mean I usually search about a two hour radius, which hits several other metro areas. Then, first check their ads for discounts, then fill out a web form and ask for pricing on the vehicle you want. If it's not out the door pricing, email back and ask for it. Spreadsheet your answers!
Here's a couple truths about car dealers.
First, you aren't negotiating against some kind of magical invoice number, and that's not the metric of how well you do at negotiating. The car dealer is judging if they will make more money selling to you (and thus increasing how fast they turn over vehicles) than they will holding onto it, and selling it to someone else for a higher price. (after all you will only be willing to pay a below average lower price) However, where a given dealership is on that spectrum of how fast they want to sell will vary quite a lot. Maybe they have been selling out right away on a particular vehicle, even with higher than usual prices. They aren't going to budge a bit. All the negotiating in the world isn't going to do any good. This is why you need to be poking at lots of places. I've always found that at least one place is willing to sell for much lower than the rest.
The second thing to know is that car dealer are negotiating for their total profit on the deal. This means that they are taking into account how much profit they are getting from the trade in, from financing, from fees, from stupid overpriced accessories, etc. You have to think the same way as well. If you just negotiate an amazing "price" for your vehicle, then trade in for too little, and pay a couple thousands in fees, you've left a lot of money on the table. I tend to line up a price I know I can sell the previous vehicle for via carvanna or looking up private party sales before I start my dealer rounds. I mentally work in out the door prices then using their trade in price if it's better, or not if it's worse, across dealers.
The third thing to be ready for is that the majority of dealers lie. Its unbelievable how much I'll get lied to during a search - bogus facts about the vehicles I'm buying, made up things about state laws, "every dealer charges this" for outrageous extra fees, and everything else under the sun. By working across many different dealers, this becomes less of an issue except for your blood pressure. Just put a big lump of baysian uncertainty around every word that comes out of their mouths. Dealers will also bait and switch, some even so far as giving you a written out-the-door price, then raise the price when you get there to purchase. I've had this happen to me after an hour a drive, and another time after an hour and a half drive. Raise a big stink if you have it in writing. One place eventually gave me the price. One place didn't, and I didn't buy, and I bought somewhere else for the price I was looking for.
I've found that some dealers are good at making deals online or over the phone (and most purchase I've made have been with this kind), but many really only want to deal face to face. Quite a few dealerships will not give you a discounted price in writing, because they don't want you to shop around with it. If it's not too far away, just show up, talk see what you get, and leave if it's not good enough. Your superpower is leaving if it's not good enough.
When you are in a dealership negotiating, I've never met one that would just deal. They want to play their power games. It's going to be a ten or fifteen minute round trip each price change, while they do their scripted routines, first with the salesman going to the back for a while, on each change, and then eventually, inevitably with the sales manager coming out to you.
It's almost stupidly easy. You have a target price. You've already talked to X number of other dealerships and know what you could pay there. When they give you a price, if the total out the door price is too high, just say you were looking for more like your target price, and ask them if they can do better. Fifteen minutes later, you'll get a better price. Or if they tell you they can't go any lower, you get up and start walking, and sixty percent of the time, they can go lower.
Also, an easy win after the first round of the price going down is to negotiate the removal of the stupidly priced dealer accessories. Most will look like you have suggested murdering their grandmother, but 50% of the time, they will lose the accessories.
Anyway, I've always hit my target price. No special negotiating other than just saying that price isn't good enough, sitting there, and walking out the door if they stop lowering the price before you hit your target. If you've never done it before, just go to a dealership once for a vehicle you don't care about, and just practice it.
The overall secret is to have lots of dealers, which gives you lots of options, which lets you say no to bad deals, and inevitably, eventually, one dealer can give you a good offer.
This reminds me the 1968 Brazilian movie "Roberto Carlos em ritmo de aventura" when a pilot flow an helicopter inside the 250m (~ 820 feet) long Túnel Novo (New Tunnel) connecting the neighborhoods of Copacabana and Botafogo.
The specification, as written in the RFC, is pretty useless... But luckily people sat down and formalised TCP/IP as spoken on the Internet (10 years ago, Linux-2.4.20/FreeBSD-4.6/Windows XP): https://www.cl.cam.ac.uk/~pes20/Netsem/index.html
What is missing in 10 years of TCP? Apart from SACK and delayed ACK not much it seems (in FreeBSD congestion control algorithms are pluggable nowadays).
To avoid configuring every service for high-availability on two servers, you can do surprisingly well with a replicated VM and DRBD or equivalent.
In the event of unplanned failover, it looks to the VM like an unplanned abrupt reboot took place. In reality it reboots, usually very fast, on the other host.
All services running inside can recover in the usual way (journalled filesystems, databases, programs restart), and don't need any high-availability configuration or replicas configured.
You do need to ensure I/O is committed durably across the network, including I/O barriers. This is a combination of VM host, filesystem and DRBD config.
(It is actually possible to do this with the VM not even seeming to reboot, so network connections and processes are unaffected by the fail-triggered instant migration. This is done by running VMs in synchronised tandem and is a rather more advanced technique. I've never used it.)
You can measure RTT continuously, accurately, and even in the presence of packet loss just with selective acks and a little bit of extra bookkeeping in the sender.
It's hard to overstate how expensive TCP timestamps are. The thing is that they bloat every single packet including control packets. 2% of the world's bandwidth is being wasted on this.
The only reason for anyone to implement TCP timestamps today is that iOS clients have horrible receive window scaling if timestamps are disabled. (Well, that was the only reason a few years ago when I was still in the game of keeping up with the quirks of different TCP stacks.)
To the bashrc. I find the dumb "just complete a f@#$$# filename" completion to be at least predictable, even if it means i need to memorize a few more arguments to some programs. Just today, I created a test-user for something and hit <TAB> in bash expecting the dumb filename completion and instead it hung for about 90s then printed a python backtrace.
So for me both of those work as expected if I'm on my bashrc...
> If you are stuck with a color TV for your terminal, consider modifying it to accept a signal after the low-pass filter. This is not too hard for someone comfortable with a soldering iron, someone who isn’t scared of drilling a hole in their TV.
Even better, if you want a color terminal, feed the original RGB signal (or its approximation) directly to your TV, don't use RF modulators or a composite input, so there's minimum degradation of video quality. It should be easy on a relatively modern TV. Follow this flowchart.
1. Is it an European TV with a SCART connector? If yes, it already has RGB input. [0]
2. Does the TV include a YPbPr component input? If yes, read Linear Technology Application Note #57 [1], which shows you a circuit to convert RGB to YPbPr using LT6550 chip (or find a similar commercial converter box).
3. Does the TV have an S-video input? If yes, read Analog AD725 datasheet [2] and use this chip to convert RGB to Chroma-Luma component signal for S-Video (or find a similar commercial converter box).
4. Does the TV have onscreen display (i.e. menus overlaid on top of the image)? If yes, there already exists an RGB signal in the TV for feeding the OSD. You can hack your TV and expose the RGB signal input for your own use [3]. Caution: high voltage, discharge the tube, and never work on it with power on.
5. If everything else fails, don't forget the fact a TV's electron gun is ultimately driven by an RGB signal. You can design a simple driving amplifier to feed the RGB signal directly to the electron guns. Unfortunately, I cannot find a reference design for the moment. But it's doable.
One that may be of particular interest to HN readers: here's Gross interviewing Steve Jobs in 1996, right before his return to Apple and the long, remarkable run of successes that would come from that, on "the future of computer technology": https://freshairarchive.org/segments/steve-jobs-future-web
EDIT: And a few more blast-from-the-past interviews, for good measure...
Be careful: You can burn through $8M post-tax quicker than you think. We have a annual household income of >$1M pretax, so I have some experience here.
I'm assuming you live in the bay area. The price of nice but not stunning houses in many desirable areas is around $4M. Assuming your life expectancy is another 50 years, that's at least $45K/yr in taxes, so at least $2.2M in lifetime property taxes. The median home in Palo Alto is now >$3.2M, and that figure includes small or decrepit teardowns listed for land value alone. You won't be able to afford (and it would be a mistake to buy) some of the larger or newer houses on the market for $8M+.
Private school for two children can approach $100K a year (Castilleja in Palo Alto is $44K/year). You didn't say how old your children are, but if you include preschool and college, that could be $2M. You might want to hire a nanny. That's $30/hr, or over $70K/yr with employer taxes, or $1.4M without a raise for 20 years.
That's $9.6M for just a house, schooling, and child care. That doesn't include food, household cleaners, insurance, clothing, landscaping, pool maintenance, cars, a second house, hobbies, gifts to children, travel, etc.
Sure, maybe your investments will do OK. But on the other hand they need to beat inflation. Castilleja isn't getting cheaper. Your property taxes will increase, slowly but steadily, every year for life, and then there are local bond measures for additional taxes.
So my advice is to live below your means. We've tried this ourselves. Also you might want to stay employed, at least one of you, to extend your runway. Finally look for something meaningful in life. Attend a local church service over Christmas. Spending money by itself won't do it.