HN user

liamdiprose

52 karma

https://github.com/liamdiprose

Posts0
Comments24
View on HN
No posts found.

This is an example of how the internet was originally intended: Every user of the internet has a public address that any other user can send and receive messages from.

The design works just like postal addressing. Your postal address contains the directions to your building from any location on earth. Even if you live in a dormitory building with many other residents, I can still send you a letter directly by adding "door number: 42" to your dorm's postal address.

IP addressing use numbers instead of English terms like "door" and "street". So I can't simply add "door number" to your building's IP address, your building has to be given enough addresses so each resident's computer can have their own. When your computer has a public IP address, I can send Internet packets directly to you.

Harvard was early to the slicing of the IPv4-address pie, so they had enough addresses each of their residents, including Zuck. Anyone with internet could put Zuck's IPv4 address on an Internet packet and it would end up on his computer. Most of these packets would be HTTP requests to facebook.com, to which his computer would reply with a page from the facebook website.

This is the internet working as intended.

But we ran out of IPv4 addresses in 2012, which has forced internet service providers to adopt an address-sharing scheme called network-address-translation (NAT) that makes it impossible to send letters directly to other people's computers. Imagine I wasn't allowed to put any room number or name on my letters. If I sent a letter to your dormitory, the staff there wouldn't know what to do with the letter and would be forced to return-to-sender or discard it. This is what NAT does, and it has turned the glory of the Internet into a centralized monster of control and censorship.

If you want to host a website with a public IPv4, only established cloud providers that obtained enough IPv4 addresses before it was too late can help you (primarily Amazon, Google and Microsoft).

The successor of IPv4, IPv6, brings enough address space for every person, their dog, their dog's fleas, and their dog's flea's microbes. We can go back to hosting websites from our dormitories, sending chat messages directly to our friends (not via Google, Facebook and Microsoft), and start new ISPs that missed out on the IPv4 pie that actually have a chance at competing with the likes of Comcast.

IPv6 reintroduces equity to the internet that facebook benefited from in it's inception.

Who uses the indicator lights? - people looking behind a computer or at switchgear. They aren't regular users, they understand how networks operate and what the green/yellow lights mean. They're typically debugging a problem, for which you want the truest indication of what's happening on the wire.

For regular users who just care about working internet, you can notify the user of connection failure where they look - the screen.

From xkcd's "Interplanetary Cessna":

X-Plane is the most advanced flight simulator in the world. The product of 20 years of obsessive labor by a hardcore aeronautics enthusiast who uses capslock a lot when talking about planes, it actually simulates the flow of air over every piece of an aircraft’s body as it flies. This makes it a valuable research tool, since it can accurately simulate entirely new aircraft designs—and new environments.

https://what-if.xkcd.com/30/

I just use my index finger for both j and h. Are you used to the arrow keys? I noticed with jkl;, my fingers line up with the arrow-key directions.

Mapping the sequence 'jk' to Esc supercharged vim for me. Faster, but also helps me stay in the flow longer.

Run `:inoremap jk <Esc>` to try it out.

Protobufs/nanopb would be my go-to for minimal message size.

If you want small code size, CBOR seems like a good bet:

The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. [1]

This [2] C-implementation fits in under 1KiB of ARM code.

[1] https://cbor.io/

[2] https://github.com/cabo/cn-cbor

CouchDB 3.0 6 years ago

The link explains that CouchDB can have replicas on mobile phones and websites, meaning clients don't always have to be connected to the internet.

The Couch Replication Protocol lets your data flow seamlessly between server clusters to mobile phones and web browsers, enabling a compelling offline-first user-experience

From Google's Site Reliability Engineering book[1]:

SRE’s goal is no longer "zero outages"; rather, SREs and product developers aim to spend the error budget getting maximum feature velocity. This change makes all the difference. An outage is no longer a "bad" thing—it is an expected part of the process of innovation, and an occurrence that both development and SRE teams manage rather than fear.

I suspect Search has a lower error budget than Sheets.

[1] https://landing.google.com/sre/sre-book/chapters/introductio...

Some friends of mine are entry-level developers that work alone on an Arduino/C++ codebase. Baremetal development and C++'s bad library support encourages them to write huge amounts of their own, very bad, code. They've taken a year to write the functional equivalent of a few hundred lines of Python and some packages.

Their codebase would improve immensely if they used a more powerful chip to run Linux and Python instead.

I love the typed API svd2rust generates as well. Generally you can just let autocomplete do the driving, the only things needing a brain are the abbreviated register names manufacturers use and the order of operations needed.

I wonder if Rust would be better suited for Arduino/embedded beginners. Rust is quite painless when you just want to glue a few crates together. I'm sure everyone would rather debug a compiler error than some invalid memory issue happening on the microcontroller.

Go Turns 10 7 years ago

I've had similar success with the gradual typing in Python. NamedTuples are far superior to ad hoc dictionaries, for both documenting data structures, but also as a prompt to consider the software structure.

I wasn't aware that typescript type errors were only warnings. Every webpack/typescript project I've used must have had the typecheck set to error, leading me to believe typescript was some draconian type checker akin to Rust or Haskell.

Yeah. I can't find anyway to save the text either. Looks like the app is targeted towards deaf/mute people when looking at accessibility features it includes (e.g. phonecall texting).

It would be cool if they added a way to save text (and audio) though.