HN user

spieglt

249 karma

https://github.com/spieglt

theron@spiegl.dev

Posts14
Comments65
View on HN

It's a very cool idea, but the first barrier that comes to mind would be that when the clients join the hotspots, they don't have internet access, so joining the network would mean losing internet, for laptops and phones without cellular data. I know the LocalOnlyHotspot API I use on Android doesn't offer internet tethering. I'm not sure how possible it is to ensure that on Windows and Linux devices that host hotspots. Also, the device that offers the hotspot in Flying Carpet is pretty much acting like a normal WiFi access point in infrastructure mode, so a real mesh network would probably look a lot different.

Thank you! Yeah, obviously the UI is a weak part. I'd like to improve it eventually but as a one-person project I don't want it to have as minimal of an interface as AirDrop. With all the ways transfers can go wrong, I want that information to be in the user's face so they can submit issues and I can help debug easily.

And no, it can't detect anything about the other device until they're on a WiFi network together, and that can't happen until it knows the peer's OS because it has to know whether it or the peer should be hosting the hotspot. Windows has precedence, then Linux, then Android. (The iOS version doesn't need to know the peer's OS because iOS and macOS can't stand up a hotspot programmatically anymore, so it always has to join.)

I don't really know how many users I have, so I don't know how "meaningful" my projects are, but I have found some of them posted on French, Chinese, Greek, Russian blogs etc., so hopefully they fill some people's needs besides my own.

https://github.com/spieglt/flyingcarpet

https://cloaker.mobi

https://github.com/spieglt/cloaker

https://github.com/spieglt/whatfiles

https://github.com/spieglt/winage

I learned to program because I was frustrated that after working in IT consulting for several years, I still had no idea how computers worked. I started with "Learn Python the Hard Way" and "Automate the Boring Stuff with Python". Then got a job doing some Windows consulting stuff, and they said they'd hire me as a software engineer if I learned Go, which was a pretty easy step from Python. I'd tried to learn programming as a kid several times and always found it too frustrating. I started working on side projects as a way to learn new languages, improve my resume, and scratch my own itches. The hardest part was coming up with ideas for useful/worthwhile projects. I was super frustrated one day that the easiest way to get a file between two machines that were right beside each other was sending them out to the internet via Google Drive or Dropbox, which made me want to write "cross-platform AirDrop", which became Flying Carpet. If you find yourself wanting a simple piece of software that seems like it should already exist, that's a great project idea.

I like making my side projects cross-platform when possible. But I'm done trying to get code signing to work, I won't pay Apple $100 to distribute free software, and I have no interest in using XCode, so I feel basically restricted to Linux and Windows only at this point.

Reminded me of this:

"In the strict sense, it is not true that one's character is unchangeable; rather, this popular tenet means only that during a man's short lifetime the motives affecting him cannot normally cut deeply enough to destroy the imprinted writing of many millennia. If a man eighty thousand years old were conceivable, his character would in fact be absolutely variable, so that out of him little by little an abundance of different individuals would develop. The brevity of human life misleads us to many an erroneous assertion about the qualities of man."

- Nietzsche, Human, All Too Human

I work on open source projects* when I have a need that other tools don't quite fill properly, and because I like to work with languages like Rust and C that I don't get to use at my day job. I'd like to have a "buy me a cup of coffee" button on my Github because I have put thousands of hours into my side projects, but have no idea how to monetize really. And I wouldn't want to use the monthly supporter model because often when I finish a project I want to take months off, and may not have another idea for a while.

*like https://github.com/spieglt/flyingcarpet

https://github.com/spieglt/whatfiles

https://github.com/spieglt/cloaker

Exactly, it's a difference in degree, not in kind. Rust isn't perfect with regard to memory errors, it's just massively better than C. I don't think pml1 will be convinced, but I've been working on a C project lately and I've never appreciated Rust's memory virtues so much as when using valgrind to debug my string and hashmap implementations. Chased a memory leak for two evenings that was just having free() a few lines off in a function. Stupidly simple error, but my eyes just glazed over the code from having read it so many times. In Rust, it never would've happened because the borrow checker would've dropped the memory at the proper time.