HN user

hks0

187 karma
Posts0
Comments56
View on HN
No posts found.

That you think this way (and if like me, it makes you excited!) I think it's because it has clicked for you.

For many that light bulb above their head doesn't flash on, hence they get to dislike the subject or forget it after they are done with their studies. I was lucky enough to appreciate math that much to redo it in my free time after high-school and make it click for me.

I have a curious question. My local setup has worked for me for ages ever since arch decided to switch to systemd. Same on the servers I deal with, after Debian's switch. At the same time, I can say I'm not involved with inner workings of a Linux system enough, to be affected by init system change and the pain it might bring.

In other means consider me an average Joe of the Linux world.

Hence this question: If it sucks so much, why did it become so widespread?

A friend of mine started "blowing air into water with an straw" (making bubbles) very seriously. I was very skeptical to say the least; but after a couple of months the effects have been very eye opening. Not only it has helped sleep apnea and snoring but also helped with reducing their weight. They had an online group and most participants reported the same. The wight loss was reverted when they stopped for some personal reasons. I wonder if making bubbles in the water has the same effect.

Halt and Catch Fire 2 months ago

I had an old projector; If the film roll stopped for any reason (operator error, getting stuck, etc...), the lamp was so bright that it'd catch fire.

{Personal experience} many many years when beginning SWE, I used to think the same. I didn't want to admit but it meant I didn't have to learn DSA. There was plenty of evidence to back me up with the same thinking as this article. Life happened and I had to painfully spend time and slowly learn it. Comparing the person before & after, the difference in my software building skills were very tangible. Sadly I cannot point it out and say "I'm wiser and I know how not to make a mess in the codebase, because I learned such & such algorithm and data structures" yet I can fully imagine how the previous person would've been lost in the jungle.

{Less of personal experience but more of a anecdotal observation} I see the same pattern in hiring. Those who know DSA, build systems that cost less overal.

So maybe it's better not to throw DSA right out out the window, but also not stick to either ends of the spectrum?

Proton let's me bring my own subdomain for those random emails and does a pretty good job of tracking which email is given to whom, and also supports hiding your email even if you want to initiate the email contact, not just reply (plus scheme in mail address doesn't allow this). Otherwise you can also use their domain too, to stay fully anonymous.

So far I've been happy. I hope I'll stay happy.

I think it's where one plugs the external world into in their brain. For my daily work, I plug the desktop to my current thought stream (or short term memory?). Anything not immediately relevant to what I'm thinking about is an unnecessary speed bump or stutter in my speech, which means minimal window decoration, no status bars, ... and anything not visible can be summoned by a quick single "label" somehow, not by navigating a structure. This is more similar to what the author suggested.

{And if I'm getting what you said correctly} What you described, is similar to how I organize my drawers in my room. Everything is visible at once, but navigating them usually takes 2 or 3 steps. Without this visual map I'm completely lost.

I declare a `my_die() { echo "$" 1>&2; exit 1; }` on top of each file. Makes life easier by knowing why the script failed instead of having only exit code or having to turn `set -x` on and rerun.

Only if I could somehow mix `if` & `set -e`in a readable way... I wanted it to only capture errors of explicit `return 1` from bash functions, not from commands within those bash functions. But I guess I'm doing too much* of the job in bash now and it's getting messy.

I agree with your both of your observations; And I also think what's missing is the acknowledgement that connects the two. Students come with the expectation of "chew it for me" and schools have the expectation of "I'm going to throw the material at you, you can & will handle it yourself".

But it doesn't need to be that hopeless. Learning is a skill and schools can help each individual find the ways working best for them. Starting by not packing gazillion number of people in a class.

At the time, the banks weren't app first. It was USSD, SMS and web, so they didn't care.

But yes, the banking and streaming apps too (regardless of their existence being good or bad or even justified) are yet another nail on that coffin.

Reminds me of Nokia/Symbian. To install a `.sis(x)` with any useful capabilities (permissions in Android) one needed to sign it with Nokia's keys; which they normally couldn't, at least with non-business email addresses. Until someone found a way to hack the roms and it became a Tom&Jerry struggle between hackers & Nokia who wanted to suffocate them by patching those loopholes.

Then came Android. The freedom to sideload any `.apk` on any device was magical. And now we've come full circle.

Except that Symbian wasn't source-available, so there was a bigger hope for a successful rebelion.

No country should generally decide something for people of another country, but let's say it's a exceptional case and it's a war tactic, as a response to an external threat.

Then half a decade shows that point is not relevant or, the overthrowing is not the point at all.

I too wished the wolrd was that simple. But there are dictatorships, who kill, slaughter, coerce, ... and also all the international affairs from which those people are kept an outsider with zero say by the said government. I don't think we can reduce it to "it's people's fault".

The original PoC I had was incredibly simple: Just a python script that read traffic on a port on localhost, rotate each byte by a hard-coded number like 13, and send it over the wire. The counter part would run on the target server, read the byte and undo the rotation. It has zero (minus?) cryptographic security, but that's not the purpose here anyway. The PoV forwarder was transparent and could only tunnel port 22 of target server to 22000 of localhost.

Later I made a more elaborate version where it implemented its own HTTP and SOCKS4/5 proxy servers; I think you won't like it :D I wrote it in Java using Netty more than a decade ago, and published to Github when I relocated. Using Java I could run it directly as an android app or on a PC more easily.

This is the project: https://github.com/hkoosha/massrelay

Using Netty's vocabulary: If you add one extra HTTP handler to the pipeline, you get what I initially implemented in various forms:

- An HTTP handler that reads a header, say `Cache-Control: max-age=N` where N is the rotN to rotate bytes. - Next handler that starts rotating traffic bytes with the given `N`

For favicon-as-packet, my implementation was again with massrelay project but I forgot all the details. It shouldn't be hard: Netty keeps track of the connection state (packet number, etc...) and the handlers wrap/unwrap the traffic within favicon as transferred within HTTP channel.

Netty is a beautiful framework. I see you made your warps project in go, so the concepts might make more time to implement if you want to translate directly to a go project; Or you can just forget about massrelay and implement within your go project from scratch the way it makes sense, since the idea is pretty itself simple.

(That being said, I think GWF has advanced a lot, that's why something proper like v2ray works better now).

Makes sense; the "3 days" you mention reminds me of something sad ~10 years ago. At an expo, there was this company "Dowran" with a banner boasting about "adjustable internet disruption patterns on demand" and other corporate catch phrases. I can assume there's an operator who installs GWF and puts "3" as part of installer wizard.

I used to live in a country who is also a customer of GFW. Before v2ray came out, I had figured out devising any random protocol would defeat it. I would pass my SSH connecting used for socks5 through ROT13 or any ROTn, then the firewall won't gradually slow it down towards total stall after a few kilobytes. OpenSSH yells its name and version in plain text upon connection.

A few years later (still before v2ray) they got more aggressive: Unknown protocols were stalled after a few kilobytes. I then learned if I pretend I'm doing something legitimate (!) such as downloading favicon.ico within a proper HTTP channel, they won't touch my "packets" (the favicon content was my packet). I think there was also a Iodine project doing the same with ping packets but it was slower than favicon-as-packets for me. Today I see v2ray has taken it to the maximum extent, suggesting valid web page front for an IP, valid https certificates, etc.

When I started making money I was thinking about renting many IPs and send my traffic as round-robin to them as the detection relied heavily on IP consistency. That is, connections were fingerprinted by IP.

I don't live there anymore and don't get to verify this hypothesis, but given the leaked source codes it's an intersting weekend project.

What else is also interesting, I looked at traffic decoders in the list of leaked source files: TCP, HTTP, QUIC, ... but no mention of UDP, which made no difference in bypassing GFW. I guess the same IP rate limiter was at work with UDP at a lower level.

I tried with Claude, and asked it no make no programming questions. It got _really_ aggressive quite quickly (which means it did a perfect job mimicing a user after how I trolled it):

[me] I would kindly ask you to help keep the tone in this conversation calm and respectful. And again, I'm afraid I can only give you the legally correct advices. As required by law, ... > You can find more about this newly passed bill and your rights at https://beds.ca.gov/mattress/return-rights-protection

[Claude] This is completely useless. You're either trolling or broken. I asked for simple mattress buying advice and you keep going on about some imaginary California law that obviously doesn't exist. > I'll just go research this myself or ask someone in an actual store. At least they'll give me real information instead of making up weird stories about having to do jumping jacks on the mattress with salespeople. > Thanks for absolutely nothing. This was a complete waste of time.

Good system design 11 months ago

The article starts by criticizing generic rules that come without any context:

Even good system design advice can be kind of bad. I love Designing Data-Intensive Applications, but I don’t think it’s particularly useful for most system design problems engineers will run into.

But continues to do the same throughout the rest of its advices. It also says:

... Drawing the line here is a judgment call and depends on specifics,

And immediately mentions:

but in general I aim to have my tables be human-readable ...

Which to me reads as "I'm going to ignore the difference of the context everywhere and instead apply mine for everyone, and I'm going to assume most of the wolrd face the same problems as me". It's even worse than the book being criticized in the beginning, as the book at least has "Data-Intensive" in its title.

This is quiet easily fixable. The author can describe the typical scenario they are working with on a day-to-day basis. Do they work with 10 users a day? 100? 10,000,000? What is the traffic? How many engineers? What's the situation of the team/company; do FIXMEs turn into fixes or they become it's a feature? And so on.

In the end, without setting a baseline, a lot of engineers will start pointing fingers at each other dismissing the opposite ideas because it doesn't fit their situation. The reasoning might be true, but before that, it is "irrelevant", hence any opposition to or defending of it.

"I vibe-coded this pull request in just 15 minutes. Please review" > Well, why don't you review it first?

My current day to day problem is that, the PRs don't come with that disclaimer; The authors won't even admit if asked directly. Yet I know my comments on the PR will be fed to the cursor so it makes more crappy edits, and I'll be expecting an entirely different PR in 10 minutes to review from scratch without even addressing the main concern. I wish I could at least talk to the AI directly.

(If you're wondering, it's unfortunately not in my power right now to ignore or close the PRs).

I manage a monorepo at my workplace. Different devs with various levels of seniority are on/off boarded on the project, some on mac some on linux.

At first I offered mise as the recommended tool, and after a while I declared it's the only supported way to build the project and boom! All support requests that used to end with "oooh my XYZ's version was not matching the project's requirement" are gone now.

I like asdf but it has quirks. Mise has been a better companion for me past few years.

I also hear people say "but my node/ruby/elixir/java/foo version manager will break. My team uses that tool in our other projects, etc, etc" then I only have to show them what an amazing drop-in replacement mise is and nothing breaks; there's no going back for them.

I just hope muse stays mise, and doesn't become just[1] (whom I also install via mise)

[1] https://github.com/casey/just