• 6 Posts
  • 213 Comments
Joined 1 year ago
cake
Cake day: July 8th, 2023

help-circle
  • Its a tough problem. You have to find something that you want to exist; like an app or a website or a game. For example, try making a GUI for managing SSH keys. You know, like the ones github makes you create in order to clone and push to a repo. Make a visual representation of those keys (stored in the .ssh folder), and tools to add/delete them.

    Along the way you’ll find tons of missing things, tools that should exist but don’t. Those are the “real” projects that will really expand your capabilities as a developer.

    For example, I was coding in python and wanted to make a function that caches the output because the code was inherently slow.

    • but to cache an output we need to know the inputs are the same
    • hashes are good for this but lists can’t be hashed with the built-in python hash function
    • we can make our own hash, but hashing a list that contains itself is hard
    • there is a solution for lists, but then hashing a set that contains itself is a serious problem (MUCH harder than hashing a list)
    • turns out hashing a set is the same problem as the graph-coloring problem (graph isomorphism)
    • suddenly I have a really deep understanding of recursive data structures all because I wanted to a function that caches its output.


  • I agree, and here’s a few different avenues of examples:

    1. If trying to get past interviews, Leet code and hacker rank can be great. They’re not so great for real world problems, but not bad.

    2. Advent of code is a good middle ground between theory and practice in my opinion.

    3. To really learn real world problem solving, I’d recommend implement a specification, without looking at existing implementations. For example, make a basic regex engine (formal Regular Expressions not PCRE expressions), or try to implement the C Preprocessor, or the JS event loop.











  • This could actually be a pretty big deal

    1. The Eclipse foundation has been making alternatives to VS Code’s “killer apps” (Docker, Python, Go, C++, SSH, Live share, etc). AKA the closed source ones exclusive to VS Code offical that make all forks of VS Code a huge downgrade. The Eclipse foundation is also running the extension store that powers VS Codium.
    2. “why not just use VS Codium?” (With the killer extensions made by Eclipse)
      • VS Codium is great, but because of manpower limits, they always have to be “downstream” of VS Code. They can’t rewrite any of the core systems.
      • As someone who contributes to VS Code, and loves VS Codium, many issues I have with VS Code have been open on github for +7 years, with hundreds of comments and thumbs-ups. We can’t even sort the file explorer view by last-edited and folders-first (but we can do folders-first alphabetical). Thats been open since 2017.
      • Theia looks like it could finally be the hard fork I’ve been waiting for. A hackable editor, trying to be open source, where all my extensions work, and the community can actually make a PR, get it merged, and extensions are not excessively sandboxed.
      • Will it be that? Only time will tell, but the Eclipse foundation has a pretty good record. They’re definitely prepared for long term support.



  • Thank you for such a long and detailed post! I indeed did not know about things beyond the SIM, and I didn’t know about the extra details about the country codes either. That is extremely interesting to me.

    With the phone spoofing though, does that mean two factor with a phone number is basically useless? If I had authentication based on a MAC address, it would take seconds to break it. But I think, and sure hope, that auth based on phone numbers is more secure.

    I think your domain name answer – that for the most part computers didnt need them – is a very satisfying answer.


  • If I’m understanding correctly, you’re saying that right now the network doesn’t have an exhaustive table of IP addresses to physical locations. It has a cache, and a hierarchy, and the path to a location of the IP is fluid.

    But a system where every device could be directly contacted/identified like a Sim card, would effectively require a complete table of “what network is device ABC at”. A table that is updated every time the device changes network connections. It would be like trying to change domain name to point to a different IP address.

    The problem is, updating a domain to point to a new IP takes hours or days not seconds, so doing that every time a phone changes WiFi is not practical.

    Is that a good summary?


  • Finally :D thank you so much!

    So basically VOIP is “cheating” because its not actually handled by the network directly, the phone company pays for always-online servers, and phone(s) reach out to those server every time they change networks, in order for servers to be able to route calls to them.

    Which also means! it is possible to do the same thing for computers, but it requires having

    1. A static IP
    2. An always online server
    3. The device needs a daemon that tries to connect to an always online server, and authenticates itself
    4. That server needs to manually reroute traffic (through a VPN or some other means) from the static IP address to the device, wherever it might be

    Which also explains why general network providers wouldn’t want to create the infrastructure. Even if universal addresses were given to each device, which simplifies DHCP and address-leasing, and shortens time it takes to handshake with the network, all of that is less of a cost than the infrastructure needed track of devices as they change networks. (And that’s on top of ISP’s being slow to change from the legacy approach of local networks and desktops).

    ^ which is more the conversation I wanted to have but didnt really get with this post.

    Thats a sizable edit!

    Yeah 😅 I didnt want it to be this complicated of a question, but I didnt see how else to explain that current addressing systems don’t meet the same need as a phone number.