skysight-inc/HackerNews huggingface dataset:
I didn't know what BBS was until I Googled. So to save a question/google:

A bulletin board system (BBS), also called computer bulletin board service (CBBS),[1] is a computer server running software that allows users to connect to the system using a terminal program. Once logged in, the user can perform functions such as uploading and downloading software and data, reading news and bulletins, and exchanging messages with other users through public message boards and sometimes via direct chatting. In the early 1980s, message networks such as FidoNet were developed to provide services such as NetMail, which is similar to internet-based email.[2]

https://en.wikipedia.org/wiki/Bulletin_board_system
I bought a few of these for testing purposes. Completely unusable.
Oh God.. I got as far as reading SAS statistical software. I briefly got my hands dirty with that a little over ten years ago and remember thinking at the time how it was the ugliest most bug ridden heap of shit I'd ever had the misfortune of using.

Fortunately my time using it was on the order of a week or so.. it doesn't at all surprise me that the bug described was only (recently?) discovered.

The vendor of that product (I can't remember who that is) clearly had a serious quality control problem ten or so years ago -- purely going on SAS -- and it sounds like they still do...
This somehow didn't really work reliably for me. The NextDNS web interface always showed "This device is using NextDNS with no configuration." and browsing felt slow, like there was a small delay with every interaction. Went back to the macOS CLI client for NextDNS and it's working well again.
> The definitions of "framework" are always a sticky issue.

Hence why the article defines what it means by framework, and by the definition in the article, software rarely has any implied frameworks within as one of the definition points is that there is code in the framework the user is not free to change.

There certainly can be frameworks emerging within large projects, but by the definition in the article they're not problematic because they don't lock you in: You can change those pieces. You in particular ultimately remain in charge of the flow of control in the code. Those "frameworks" don't take away control and put you in a straightjacket.

The article could perhaps have been framed better as "how to write a framework or framework-like thing which doesn't become a problem". Some thoughts might be:

* Structure it as decoupled components where you can opt in and opt of different elements, including of control flow. E.g. Padrino - a Ruby web framework fits well here. You can pick and choose which ORM to use; you can opt in to a router, controller, admin interface, mailers, logging, caching, and view libraries, or not use them at all. You can start with plain Sinatra and add in bits of Padrino as and when you choose, or supply your own.

* In particular, if possible, externalise the control of flow into replaceable components. Doing this alone can often be enough to get you out of the straight-jacket of "frameworks as defined by the article"

* Allow users to override/replace all components rather by defining clear interfaces and not assuming you can call hard-code calls between the different components. Padrino again fits well there. So did e.g. Qmail treated as a "framework for building a mail server" ("nobody" used pure Qmail, but Qmail defined the interfaces between each individual program which made up the full system, so you could replace every single bit step by step). In particular there should be no "magic" glue which there isn't a well defined way of tearing out.
Do domestic IPv6 networks typically expose things by default?

I can just about get on board with using legal addressing for internal nodes, but I wouldn't dream of exposing everything just because the addressing scheme allowed it.

This is a genuine question. IPv6 is yet to reach me at home.
Thanks for taking the time to look through the architecture. There are definitely some choices that would have seemed weird to me when we set out to build this, but that we did not make lightly.

We actually initially built this on Kubernetes, twice. The MVP was Kubernetes + nginx where we created pods through the API and used the built-in DNS resolver. The post-MVP attempt fully embraced k8s, with our own CRD and operator pattern. It still exists in another branch of the repo[1].

Our decision to move off came because we realized we cared about a different set of things than Kubernetes did. For example, cold start time generally doesn’t matter that much to a stateless server architecture (k8s’ typical use), but is vital for us because a user is actively waiting on each cold start. Moving away from k8s let us own the scheduling process, which helped us reduce cold start times significantly. There are other things we gain from it, some of which I’ve talked about in this comment tree[2]. I will say, it seemed like a crazy decision when I proposed it, but I have no regrets about it.

The point of sqlite was to allow the “drone” version to be updated in place without killing running backends. It also allows (but does not require) the components of the drone to run as separate containers. I originally wanted to use LMDB, but landed on sqlite. It’s a pretty lightweight dependency, it provides another point of introspection for a running system (the sqlite cli), and it’s not something people otherwise have to interact with. I wrote up my thought process for it at the time in this design doc[3].

You’re right about shared backends among multiple users being supported by Plane. I use per-user to convey that we treat container creation as so cheap and ephemeral you could give one to every user, but users can certainly share one and we’ve done that for exactly the data sync use case you describe.

[1] https://github.com/drifting-in-space/plane/tree/original-kub...

[2] https://news.ycombinator.com/item?id=32305234

[3] https://docs.google.com/document/d/1CSoF5Fgge_t1vY0rKQX--dWu...
I guess zsh is better at handling command histories of several concurrent shells than bash?

But still, you can do better. I'm using a snippet from this page: https://spin.atomicobject.com/2016/05/28/log-bash-history/

export PROMPT_COMMAND='if [ "$(id -u)" -ne 0 ]; then echo "$(date "+%Y-%m-%d %H:%M:%S") $(pwd) $(HISTTIMEFORMAT= history 1)" >> ~/.logs/bash-history-$(date "+%Y-%m-%d").log; fi'

This give an easily greppable shell history. An entry looks like this:

2022-10-13 09:14:54 /home/bhaak 1000 vim ~/.bashrc
This very parallax effect. We know how far the Sun is from the Earth, and the Earth has moved twice this distance from January 1 to July 1. This in turn allows us to extrapolate distance to some of the nearest stars by their apparent motion relative to the other, "fixed" stars.

https://en.wikipedia.org/wiki/Cosmic_distance_ladder

https://www.youtube.com/watch?v=7ne0GArfeMs
It seems that there are mostly 2 types of devs:
- those that use tools, learn them and master in them,
- those that always want to create their own tools, and will usually oppose adopting and learning existing ones.

I belong to the first type. I love frameworks because they give publicly available documentation that plenty of people contribute to - so my project will have access to all of it even if I'm gone. Another reason is that frameworks have opportunity to be battle tested in terms of robustness and in terms of use cases. My stance here is that I love to use wheels instead of creating my own ones. I'm a project developer and not an academia developer.

The second type of devs are what I would avoid hiring to my projects if they wouldn't be an academia projects. I need to deliver business goals in a most efficient way. That efficiency has to be on multiple levels. One these levels is to that the code won't be depending on one or two my best developers, because there is a high chance they will go at some point. My project would then rely only on what they created and documented, hoping that documentation cover everything. But my project would also slowly deteriorate technically, because most devoted contributors would be gone. Frameworks usually take much longer to become abandoned.

I believe first type should work for businesses. The second type - should aim academia.
A library is not a framework. You can write framework-free apps while using libraries (in fact, most do - not wanting to be burdened with a framework doesn't mean you have to write all functionality yourself).

A framework is either about inversion of control (it calls your code, e.g. you write web request controller logic, and it sets up the infrastructure for calling your controllers), and/or a set of ways to structure your code, like classes to extend, folder structure, a set of patterns you must follow to work with it, like a specific MVC-like organization of code, and so on.
GP didn't mention those because they are all points in favor of Android.

Privacy: Android lets you install apps without telling anyone. iOS requires you to tell Apple. God forbid you want to use an app you build yourself because then you also have to give Apple your banking details. Android lets you get your location from the GPS sensor without telling anyone. If you want to get your location at all on iOS, you must also send your location to Apple. Android lets you use fully offline maps and have that handle map links. All map links on iOS must be opened by Apple Maps, telling Apple what you're looking at. I could go on and on.

Security: Android updates the browser and other system apps without rebooting the phone. iOS requires a reboot, meaning updates are batched before delivery and then applied more slowly. Android app stores have superior security, with F-Droid having reproducible builds and the Play Store running apps in VMs to do dynamic analysis. The App Store had to rely on external researchers to find Xcodeghost apps to take down, not even having basic static analysis do it themselves. The exploit market has responded by pricing iOS vulnerabilities lower than Android vulnerabilities. Despite what Apple tells you, the walled garden is for Apple's profits, not your security.

Performance: Despite Apple's hardware lead, the software is so unoptimized that it's not unusual to see iPhones lose to Android devices in app opening speed tests. A few years ago, iPhones were so slow that they would lose to previous generation budget phones on those tests.
"I really have proof for my argument, I swear, I'm just too petty to provide it, trust me bro". Are you serious?
1. "If you don't use a framework, you will end up creating one" -- And that's exactly how successful frameworks were born. If everyone uses an existing framework, who is to create better frameworks for the future?

2. Framework vs. Library -- Framework calls your code; Library is called by your code. There is clear inversion of control. The article touched on this, but I think it's a very important distinction to call out.

3. Framework makes me think inheritance. Library makes me think composition.

4. Framework is like CPUs. A more powerful CPU is a more powerful CPU, no doubt; but you need more power to bring out the performance. If your company don't have the resource to deal with the maintenance, Framework becomes a liability rather than asset. But if you can sustain it, it should still be a net positive.

5. In addition to the mixing of domain and non-domain concerns, poor Framework bring incomplete abstraction that expands the surface area for reasoning/debugging/maintaining. A good framework should provide the perfect abstraction that frees the developer from having to descend the stacks. I consider programming languages as good "frameworks". So are the layered networking architecture.

6. Watch out for self-fulfilling prophecies. e.g. in the web frontend framework space, a framework might claim it helps solve problem X, but it might also be very cause problem X. Accessibility, Routing, State Management... a lot of these can be solved by using the platform. Before you reach out for a framework, be sure to assess platform capabilities and single purpose libraries first.

7. Reliance on framework can be caused by lack of knowledge. If you are a manager, give your team the time, money, and endorsement they need to learn things, attend conferences, and provide ample budget for training and technical book purchase. They might pay more dividends than a framework does.
> frameworks add weight.

Not really true. Sure they add some, but the alternative (libraries) also add weight. So the question should be: do FWs add more weight than using libs directly.

There are some FWs in Rust where the weight is very minimal. That said the FWs are also very minimal.
for Java first hit in google 'java random' has counterexamples
I wasn't referring to letting the stock vest. I was referring to the concept of leaving them on the payroll until their stock vests. There's no reason not to vest the stock early and send them on their way.

Unless the original poster wanted to give them severance.
He has been profitible for years, and the business was started in 2006. I wish you were right, but the golden days of low hanging fruit for solo founders was years ago. It's much harder to carve a profitable niche and not have your business undermined these days.
“When designing a system, the goal should be to defer major decisions for a long as possible.”

I noticed that I tend to do this, but never knew it was a legit strategy.
I've used this a few times as a replacement for AirDrop (which hasn't been working well for me when sending things from iPhone to Mac) and it has worked very well. I would love to be able to send other things - not just files - as well, like sharing a web page from Safari. Basically everything I would do with AirDrop should ideally work with Taildrop.
> That's an average acceleration around 2g. This seems beyond the limits of tires and friction.

Tires don't only rely on friction but also on mechanical grip (the road and the tire are not perfectly smooth surfaces, they interlock) and chemical grip (just like glue). The last two also scale with surface area as opposed to friction. So you get two common misbeliefs about tires from school physics: that you can't go over 1g and it doesn't matter how large the contact patch is. Both false in practice.
Subscriber link:

https://lwn.net/SubscriberLink/910740/61a37b3ccb4d57da/
So OP should fire the employee 1 month sooner because "maybe he did worse things" and OP can't afford to "look weak"? This sounds more like a prison gang than a small startup.
Just for clarification, it was not campus wide, only a small part between some institutes. Also, the hardware was not consumer grade thanks to the electrical engineering, geodesy and geoinformatics labs.

Still, it was illegal and could get everyone expelled, so I wouldn't do it again.
> Hardware remote attestation is already here and it threatens to deny access to apps to all rooted phones

My phone is not rooted, but I use GrapheneOS on my Google Pixel for security hardening and to not have the google rootkit installed.

Funnily enough, even my banking app works, but not my countries eID system.

I imagine in a few years voting will be hard due to this bs ;(
If electricity was $0.65/kWh for me, I'd move out of the country lol. Assuming a more realistic $0.40/kWh (considered very expensive in the US, where most enthusiasts live), 8 hours of gaming a day, and a 200W power limit, you're paying $19/mo. Not bad.

Don't get me wrong, the 5800x3d is a phenomenal CPU. However like many owners of that CPU, I'm also in the market for a 4090 and intend to use the full 600W power limit with my water loop and outdoor radiator. CPU power consumption is just not an issue for enthusiasts.
I don't have the time to hunt all these down and refactor everything

Yes you do. You're just choosing to spend that time on other things rather than pay off some of the technical debt (that the framework introduced rather than you). Your decision to just live with the old version will prove to be a bad one in the long term: you'll find it frustrating, your skills will stagnate, new hires will find it frustrating (and will quit), eventually 5.2 will stop receiving patches so your security will be compromised, and you'll miss out on some of the shiny new features in the latest versions. This will get harder the longer you leave it.

It's worth investing the time to move with the framework even if the framework is a pain at times.
But that is also (or can be) an anti-pattern. Don't just blindly add dependencies - there are so many risks involved with that. Of course that is not unique to just frameworks like Django and Rails, but any piece of growing software.
that's a nice consistent sentiment, but not necessarily useful

if there's consensus then bad laws can be changed, or good ones extended, or the filibuster removed, etc. so why have them auto-expire anyway? (see the Patriot act, got extended without much fuss.)

it would make hiring people to these agencies uniquely challenging, and it wouldn't solve much of anything. (it's a typical libertarian-ish idea, without the usual props required to make these workable, eg. a society that favors cooperation, prefers to adapt their life to meet their goals, eg. like-minded folks moving en masse to make their own life much better, and also getting out of the way of others, instead of what usually happens, which is local groups fighting tooth and nail against any change that would inconvenience them)
Yeah, I think this is pretty language specific and really case-dependant. My ports-and-adapters project in golang is built so that I can easily switch out gin or gorm or graphQL in a bit. I don't really get this discussion haha
> what would you do?

I would get a decent lawyer who knows the rules of evidence.
US is all texting. Only foreigners use WhatsApp.
Representative urges US gov to stop dangerous AI models “like Stable Diffusion”
"Qualify for UBI"? Do you know what "U" in "UBI" stands for?
The thing is that I'm not sure of what you are saying.

Can physics explain that if you put together a glass of water and a glass of ethanol you end up with a mixture of water and ethanol?

Do you agree that it's possible - but unlikely - that they don't mix?

For other comments of yours it seems that your conclusion would be "I have no way of knowing. It depends on the positions and velocities of each of the molecules and they will either mix or they won't."

I really would appreciate having a clear answer to the question "Can physics explain that if you put together a glass of water and a glass of ethanol you end up with a mixture of water and ethanol?". Don't be shy to answer "no" if that's your idea of physics!
Oops, thanks. Too late to edit now.
exactly. and the way to do that is not rm -rf --no-preserve-root, but incremental refactoring, lots of tests, etc.
Of which you are the creator and expert

No, I'm not. The guy who quit 2 years ago was. I've worked with custom frameworks, and while they where both clever and powerful with some quite cool features which would have been tricky to do in a more generic framework, they where also virtually undocumented, fragile, difficult to extend and slow to get people up to speed on.
> Given your comments, it’s very hard to believe that you’ve used VR much if at all. VR has many problems, but not the ones you’ve mentioned

After all this time, you’re still getting confused and think my complaints are about VR. They are not. I’ve used VR for gaming and simulations on and off for 6 years now.

The problem is not VR. The problem is Meta’s approach to what VR should be used for. They are taking some of the worst facets of business and copying them as-is into VR.

That’s why the DMV analogy. They’ve done nothing to improve the actual meetings which is why they would do nothing to improve the DMV experience beyond making the entire thing virtual.

You know what would be great? A VR DMV replacement for a basic driving test. Yet you didn’t even suggest that because your fixated on the most boring aspects of VR like Meta is.
That’s why I always start a new app by writing my own operating system for it first.

Use frameworks, use libraries. They will save you time, make your code less buggy, make it easier to hire other people.

Writing your own ball of mud is great for a hobby but not for business.
Developers use frameworks because frameworks that are used by many others take care of edge cases that most engineers have no chance of fixing, or even discovering, on their own.

Web framework code is typically riddled with comments like "this extra margin is added to the input to work around a bug in Internet Explorer 11 where Tibetan characters are cut off".

Good luck solving such issues without having tens of thousands of eyes and hundreds of hands to help you.
How’s your jaw? Did you start grinding your teeth / clenching your jaw?

Your symptom cluster is very similar to me since a long long time before Covid.
On the flip side i bet the team knows this person is terrible.

And letting them vest means you're telling them slacking off is fine, and you'll give them a piece of the company that could have gone to the people who actually work.

Sure, they'll be fired, so the others will see it's not acceptable. But still.

It'll be resentment either way.
Theory vs reality.
Not necessarily if one installs bash from homebrew.
A Bootiful Podcast: Google Mad Scientist Josh Suereth
You’re actually getting at some of the issues the article explores. The case studies are there to illustrate; they’re not the central point. I almost dismissed the piece based on the headline, but I’m glad I didn’t. You might find it unexpectedly interesting too. If I misjudged whether or not you read the OP, my sincere apologies. No harm intended.
I agree on how this article is mis-titled. It's clear that the author just hates Rails.

Now - I use RoR and other ecosystems and I really miss Ruby or RoR features in those other ones.
If I saw a review on glassdoor for a company stating that they were fired a month before vesting and received nothing, I would never work for that company. Not only that, I would actively advise my professional network to never work for that company.

The time to fire them was months or years ago.
Speaking purely about web software / web APIs, most software is 90% CRUD. It absolutely makes sense to use a framework to save new hires from grokking 90% of it's capabilities. You can have a new developer do stuff right out of the gate.
It was a massive pain in the butt in that time. Just try to intregrate a "standard library" like libjpeg or libpng into your cross-platform project. That's exactly why everybody has switched over to stb_image.h to quickly load image data without hassle.
Community development is still thriving, a custom handcrafted setting is the most popular private server at the moment. https://uooutlands.com/
UO kind of shaped my life. The first piece of code I ever wrote was creating a bow with my name on it. It felt like magic and it was so exciting that I never stopped coding since then.

After two degrees, moving to a whole another continent, and getting my “dream” job, I only can hope to find that kind of excitement again.

I still get chills whenever I hear game’s music. Incredible game indeed.
VR doesn’t solve low latency, which is what causes people to talk over each other. I assume you haven’t tried VR with one participant on a saturated coffee shop WiFi 2k miles away.
Many people here in the UK view his whole time in government as one big defacto bribe...
Is there any info on how it interacts with Magic DNS?
In my opinion, that would make things even worse:

The sentencing clearly states that the earth revolving around the sun "is a proposition absurd and false in philosophy, and formerly heretical", and by that time, Copernicus's De revolutionibus orbium coelestium had already been placed on the Index of Prohibited Books.

Are you saying the church actually knew Galileo was right, and did this anyway?
Shouldn't be a problem, because along with the law you can also hand down what it is supposed to achieve, and how.