• 1 Post
  • 16 Comments
Joined 2 years ago
cake
Cake day: June 4th, 2023

help-circle


  • On the Mac, I can run MacOS, BSD Unix, and via VMware, Windows and Ubuntu.

    On phone/tablet, I can build an app that works on every mobile device of that class shipped in the last 6 years.

    On Windows and Android, I have to test apps across a massive combination of features, and even then, there are some with strange configurations that will break the app.





  • Trying to Sherlock 1Passwd a second time? They tried it with iCloud passwords and it didn’t work.

    Live and learn, kids.

    Edit: To be clear, 1Passwd survived by:

    • Going cross-platform
    • Family plan (including family-shared vaults)
    • Enterprise
    • Bundling and partnering (with the likes of Eero)

    They had the know-how, people, and money to pull it off. Not every indie app getting Sherlocked can do that.








  • A few suggestions:

    • Having people remember all the docker, django, and poetry commands just slows things down. Maybe wrap those in a shell script, or better, in a pyinvoke tasks.py, or more even better, in a CLI using argparse or click. This way, people can install your tool using pip and create new projects, manage, and run them quickly.

    • If you need the user to answer a few interactive questions, questionary is pretty decent. The click library also lets you ask for input, have defaults, and also load values from environment variables.

    • Have lots of defaults in a central .env or config file that people can customize once the project has been created. Things like separate dev, test, prod or local and cloud settings.py files help keep things organized.

    • Think about ultimate deployment. Where is such a project going to get installed? As a single docker container, scalability is limited. Which cloud hosting services can you push to with one command? Add those to your pyinvoke or CLI.

    • When deploying to cloud, make sure security best practices are maintained. Keep SECRETS and API keys in a separate file which is also listed in your .gitignore so it doesn’t get accidentally checked in.

    • Think about the different stages. Initial, ongoing dev, testing, first deploy, and continuing updates after that. What can you do to make the job of the dev easier?


  • Let’s rewind the time machine… the original web concept was addressing a much smaller problem. That a document could reference or ‘link’ to another document. It came right after ‘gopher’ which was used as an index of indexes and had a text-based app that let you navigate the line items back and forth.

    Then came Ted Nelson’s idea of ‘hyperlinks.’ The original web mashed those two ideas together and threw in a sprinkling of SGML. There was no notion of styling of the presentation, a GUI, use of the mouse, multimedia, animation, or ‘scripting.’ It was just gopher with inline links, expressed in embedded markup.

    Multiple other players (Netscape, Microsoft, IBM, et al) morphed and bolted on extensions without really considering the consequences. The thing the web had going for it was precisely this decentralized process. It made for rapid evolution, but it also meant there was (and continues to be) a lot of fragmentation. Anyone wanting to go back and revisit something hacky had a lot of legacy inertia to overcome.

    So here we are today. It’s a messy, junkyard jalopy, but it does just enough that nobody has the time or energy to go back and clean up the technical debt. And if you want to start from scratch, it has to do much better than what is there today, while offering a reason for millions of people to unlearn what they know.

    As for sending ‘processes’ that’s essentially what a VM is. You’re sending a compact process as code (javascript, python, wasm, native binary) that a local runtime executes. We have app stores that manage the lifecycle, and script libraries to create abstractions and hide details. The embedded Javascript VM is as close as we have to a universal code execution environment.

    Sending ‘processes’ around also should account for malicious actors trying to do bad things. We’ve all seen how that ended up.

    That’s not to say people shouldn’t try to innovate, but at this point, it’s like trying to reinvent driving or the telephone.