skysight-inc/HackerNews huggingface dataset:
> Their is no such things as unsafe and safe Zig. All Zig is unsafe, but you can add additional runtime checks

Zig is meant to ultimately give you full memory safety, that you can selectively turn off. In addition, there are specific unsafe operations -- clearly marked -- such as casting an integer to a pointer or other non-typesafe casts.

A code unit with safety checks on and without unsafe operations is what I call "safe Zig."

> And without it your code isn't memory-safe.

This is simply not true. Perhaps you mean that you don't have a guarantee that your code is memory-safe, but that's not the same thing.

Our goal is not to write in a language with certain guarantees but to write programs with certain properties, say, without buffer overflows. One way of achieving such a program is to write it in a language that guarantees no such error can happen. Another is to write it in a language that guarantees no such error can happen in development, do some testing, and then remove the guarantees. In the second case it is true that our confidence in the lack of such errors is lower than the first, but in each case it is not 100%, and because the static guarantees are costly, it is possible that the second approach is even more effective at getting to more correct programs overall. They're both common ways for achieving the same goal.

As someone who works with formal methods, we do these tradeoffs in formal verification all the time. It is simple false that sound guarantees are always the best way to correctness -- it would be if they were free, but they're not.

Once you realise that the goal is achieving some desired level of confidence (which is never 100%, as that cannot exist in a physical system anyway) about overall program correctness -- which includes both "safety" and functional properties, each further divided into degrees of severity -- you see that there is no obvious way with the best effectiveness at achieving that goal.

> If you never explicitly test the value “1337” during you debug session, you won't trigger the UB and you won't know it's here

But here, again, you are looking at something in isolation. Because Zig is a simple language, the chances of such paths existing without you noticing are lower; also, because the language is simpler it is easier to write concolic testers that would automatically detect this.

In fact, if such a "rare path" exists in a complex language that causes some functional bug -- ultimately, we don't care what bug breaks our program or leaves it open to security vulnerabilities -- there's a smaller chance that it will be discovered. Which is exactly what I mean by soundness coming at a cost. It guarantees the lack of certain bugs, but because it complicates the language, it can make other bugs more costly to detect.
Great article title guys - I clicked it!
No it does. You make a point before bikeshedding.
I have been down the same road.

Windows Editor - Laughable piece of crap with one single undo step!

Notepad++, Slickedit, etc: Nice for some quick editing and hacking. Quickly fired up, but framework support is generally lacking.

Atom - feels super heavy for a text editor

VSCode - alright, but not really something will get you excited

WebStorm - Not free, but fucking great. Maybe not as lightweight as those Slickedit, Notepad++ options, but awesome framework support and by far the best diff tool that I know.
The US won Afghanistan handily, they just didn’t know what to do with it when they had it. I think America would have been better off placing Afghanistan under a military governor for a few years while they built up the country’s institutions.
Microsoft Is Exploring Lto+pgo for a Faster Linux Kernel
Well, you cannot say that LG is inflexible to market demands. That there might be a market is a bit sad. It probably is even counter productive.

Agreed that it doesn't make breathing harder. It is inconvenient if it is too hot and some masks get wet very quickly from breathing air.

In a large city like most Chinese cities, I would certainly opt for one.
Also it features a Pi 4 so it can't be older than June 2019.

(but yes, I do share your frustration and sometimes spend more time looking for ANY date than reading an article...)
I run tilde.fun. It's currently defunct but I'm migrating the site to a new server today.

We have an SSH signup form with no need for any personal details but an email address, written in Python, in the making (https://code.tilde.fun/tilde/ssh-reg) I'd really like to automate account creation and have someone look over it before I actually deploy it.

Write me an email (address in my profile) if you're interested in helping run/develop this or some MB of free HTML web hosting.

We are two admins and run a few other services (https://wiki.tilde.fun/tilde/start lists some of them). We want to take back the internet from megacorps into the hands of users. I have an empty server just waiting for some people with dank HTML skills!
My understanding: It's common to use Electron to build cross-platform desktop apps, but that basically ships a browser and a web server inside every app, so it takes a lot of resources.

This is a lightweight alternative.
Waymo is doing fine but they need more time (a lot more).

Tesla, on the other hand, is completely faking it. They have nothing to show for yet.
Thoughts on Work from Home (and Predictions for the Future)
>Software do not have a technical debt problem, software simply requires maintenance.
[...] There is no such thing as technical debt. There is work to do, that we can agree on, but it’s not debt payment.

The "technical debt" doesn't have a 100% universal agreement on what it means and apparently the author has only been exposed to one variation of it and that's what he's rebutting.

Another type of "debt" is caused by programmers writing bad/clunky code (often deliberately) to quickly solve a problem. The wikipedia article mostly talks about this definition of "debt"[1]. The programmers know the bad code will create "debt" that makes future maintenance harder. Example of this tension would be 2 different approaches to adding a feature or bug fix:

- (1) study the code base carefully -- maybe for hours or days -- and then write the properly architected code that makes future changes/extensions easy. E.g. expend the extra brainpower to see if the multiple edge cases or logic spread across files can be unified or simplified.

... or ...

- (2) quickly find the points in source code that seem "obvious" to modify just change it -- sometimes copy-pasting code and duplicating logic if if/then/else or switch/case statements in multiple files. Yes, now the immediate issue is "fixed" but you've simultaneously created "debt" down the road.

[1] https://en.wikipedia.org/wiki/Technical_debt

first sentence: Technical debt (also known as design debt[1] or code debt, but can be also related to other technical endeavors) is a concept in software development that reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.[2]
Once you discover once that swiping sideways on a message reveals metadata, you notice that this is transferrable to most messengers on iOS (all I use). The first time I discovered that was by accident while playing with the device. I notice that I pretty much never use this feature.
Maintentance is not technical debt, and confusing both terms is weird. While there are multiple definitions, I'd say maintentance is the work of making adjustments to keep the software in a working state, say supporting new operating systems, fixing bugs, updating to minor versions of libraries...

Technical debt, on the other hand, is quite literally a form of debt. You borrow time from the future by developing a solution that requires less work now, but that will need to be changed later on because it won't be enough future requisites, and that will create additional work (interest) in the long term while it's present. And every programmer does this, consciously or unconsciously. Say hard-coding some parameters in functions instead of creating user-defined options because it's easier, or writing a specific class instead of an abstract one that can be later extended, or writing a hack instead of refactoring so that new changes fit properly.

Of course, it's difficult to predict the future and some technical debt is never repaid. But it's important to make a distinction and to have in mind the technical debt in your project and when it's worth it to remove it.
How to Change Application State: Mutation vs. Events vs. Transactions
Ask HN: Please suggest uses for an old Mac
Hi HN,

Long time lurker (2007 or so onwards), first time poster.

I have a Mac Mini, circa 2010, 2.4GHz Intel Core2 Duo processor(s), 2GB RAM, 320 GB storage. OS: Mac OS X 10.6 (Snow Leopard, cant be upgraded beyond this). Its from my iOS app development days.

Since the power usage by a Mac Mini is low [1], I am keen to run something good on it. It may not be on the network, more of a standalone.

I am not into mining. I dont want to run shared-computing-for-a-cause type of applications.

What can I run on this, other than dynamic photo frames.

Thanks for your time. Cheers. Stay safe.

[1]: https://support.apple.com/en-us/HT201897
It feels to me as though this argument misses the point.

-- Technical debt is time that you have borrowed from the future. --

That makes perfectly good sense if you need a simple, working system, quickly.

But if you plan on extending it, then the workarounds and shortcuts that you took will need to be replaced, slowing you down in future. Concrete classes where abstractions will be needed in future, hard-coded values, all that stuff. The debt will have to be repaid.
Army Swaps Guns for Controllers
Political ads are one of the main reasons that people hate online ads and targeting techniques. Ad-platforms are ruining their own platform by allowing these kind of ads into their platform.

If you show an Android ad to an Apple fan, he is not going to hate it. But, political views are very different and political ads usually target people differently. It's a sensitive topic, and there have been many instances of abusing users by political ads.

Many of internet users were fine with targeted ads. Some users even preferred to see relevant ads instead of random ones, until a few years ago that everyone saw too many abuses from political ads and user tracking.

I think platforms like Facebook should blame themselves for making internet users too sensitive about ads instead of blaming Apple for providing privacy focused features that are asked by users.
Send me an email and I get you an account on tilde.fun.

It's pretty defunct right now but I'd like to have some actual users ;)

No need for any personal info besides your email address.
Yeah, but you're talking about Windows server and I was talking about Windows desktop :-)
I really think China has a lot to do with it. If Tesla is going to sell a lot of EVs anywhere, it’s going to be China (and by a lot I mean the only conceivable market pushing for electric that could possibly justify that market cap).

The bet is they can sell about 4 million cars in China, I think. That can justify the 200 billionish projection.

Toyota sold something like 10 million cars globally in 2019. If Tesla really is the best electric car people want, it should just be a matter of ramping up production.

Edit: My numbers were all based on 200 billion valuation mistakenly, so just double everything.
Or how about let users buy gift card or apps local currency(trading app). Which could then be used for anything within the app or can be transferred. That way it's no longer a purchase of digital good buy exchange of currency
Complete nonsense..
Racism, White Supremacy, and Far-Right Militancy in Law Enforcement
For me Keybase was a place to collect my public internet profiles in one place, with cryptographic auth that it's actually me.

All the chat, team, storage and crypto crap was just superfluous for me.
Pretty low-quality flaming post. Basically "battle of the word definitions".

Refactoring is observably the best way to get to know someone's code. Refactoring doesn't have to actually change behaviour; in fact, the word itself means "improving the code without changing its behaviour".

Not seeing any value in this post outside of "I disagree with some words, let's use others".
OK Swedish definitely wins. That's upping it by one, chuckles.
Many thanks! I've joined the discord and will have a go at setting up a Rapier-driven demo in a canvas element this weekend.
The article ignores that there are many ways to initially write code, and some are better than others. “Creating technical debt” is about not spending the time to find a good way to initially write the code, leaving it to a later point in time.

This should be a cautious decision (and I’ve seen it happen many times, at individual/team/even org level). This is “tech debt”, and it does exist.
The problem is urgency and we don't have an enough amount of uncertainty budget to chase fusion reactors. The scale of the problem is so huge that even Bill's fortune could be insufficient to make a dent to the problem in a foreseeable future. Yes, it'd be nice if Bill can make it happen but if not, he's going to regret it. I'm pretty sure that Bill already has done the math, concluded that we probably have only less than 10 years and next-gen nuclear fission reactor is the only feasible mid-term technology to fight against climate change.
what is a pelican in this context?
$1 revenue startups pay $0. $100k+ revenue startups have to pay $2k for the commercial license. Seems fair to me.
The forced restarts are a bit annoying but you can schedule them and for the Office part, you can just run LibreOffice on Windows.
It's shared computer/server. You got your SSH key and log in.

It has some social features inside - BBJ (command line driven forum), IRC chat, "timeline" command (think of local twitter on command line).

However main difference is that it's up to you how can you interact it others. You can setup some scripts/games for others, or just present yourself in your public_html folder. I have created gallery of those homepages and these are very diverse - https://tilde.town/~severak/gallery/ - so much good stuff hidden there.

For example - I have created cronjob, that builds youtube playlist out of songs added by !sotd command on IRC - https://tilde.town/~severak/town_radio.html (for technical description see https://tilde.town/~severak/sotds.html)
Things like smallish screens getting good and cheap enough, leading to the Oculus Rift and HTC Vive.

Or in the case of the Quest, having powerful and reasonably priced SoC's.
Sounds interesting, do you happen to have an image of this available? I was not able to find any more information about it
>Your comment is about nostalgia.

Nostalgia is thrown out as some kind of accusation all too often, but (and this is a trivial observation) things can absolutely worsen with change/time too.

Just because LEGO "had to adapt" doesn't mean that (given some set of principles on might have about it) any adaptation is equally good or as good as what was before...

E.g. on such principle could be: "What is good is building stuff with blocks from imagination, not pre-made movie-based themes"
I'm asking what the process of creating a borrowed dollar is versus the process of creating an inflationary dollar? Is there some financial instrument that the dollar is backed by that enables it to be paid back?
Personally I (a developer) use it most as a metaphor for business people explaining why we need to schedule time in-sprint for work that isn't explicitly tied to a new feature.

We have debt, we need to service it. Repayments come in the form of developer time. If our debt is well-serviced it enables us to keep up a nice quick pace of feature development.

If a feature is politically important and our tech-debt is under control we can fast-track its implementation knowing that we'll have time to polish it up later and it isn't likely to break too much.

If our debt is too high we can't borrow anymore. Sorry, that super important feature that the board wants by end of sprint simply can't be done. We're at our credit limit and if we try and borrow more to get that done we'll go bankrupt (the product crashes and burns).

All of this is the language of business
Best Practices of an Agile Leader
I really, really recommend reading the Bundesnetzagentur‘s reasoning for its preferred market structure of the energy grids. They have long time goal (building resilient and performativ smart markets and grids) that explain a bit how some perceived inconsistencies (or pains) are necessary from their point of view. (I don’t dare to judge if they are right or not). For example:
https://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sac...

But also some of their market and grid reports. It is really interesting, especially from a geeky perspective.
No, CSS is for the website designer to design the page. The point is that every page should conform to the users preferences automatically.
Using Microsoft Word with Git
> Then I feel cheated, knowing that the original form said something with the different meaning

ironically, "meaning" as a thing that belongs to a technical dissection of single words/phrases is a fairly modern notion.
Most of the time I think Hackernews obsession with self-hosting is misplaced.

But in this case, you're 100% right.

Like Medium, Substack's entire growth strategy is their own users ignorance of how important SEO is and how it works.

When you publish content on Substack, you're sharecropping. Plain and simple.

Just because you can charge for the Corn you grow on their land, doesn't mean you own the land. Your newsletter is building a steady audience of backlinks and users coming to substack.com, so ultimately, you're growing their business. Every time you publish content or advertise your newsletter, you're building authority for substack.com

And their business is the better one to be in. You do all the work, you generate backlinks and send users to their platform. They sit back and build a real sustainable business, while you're stuck tied to the weekly newsletter grind.

While its more work up front, I highly recommend you write your content on your own domain hooked up to a mailchimp or similar service. The importance of SEO and building authority on your own domain should not be overlooked.
This is what I've caught myself doing; instead of reading and trying to understand the code, I scan it and start "fixing" it to make it my own.

Writing and changing code is a lot less boring than just reading it. Focusing on details (formatting, function naming, ordering, files) seems to be a lot more "gratifying" than trying to grasp the bigger picture.

I guess this is why I'll never become a senior developer / architect. Mind you, atm I don't have anyone else working on the same codebase either so it's all me.
How to Create a Good Name for Your Startup
"My understanding of why the US can print money without regard for consequences is because there are always "buyers" for US dollars"

That's the usual view.

It isn't correct.

The US "prints" money because foreign US dollar earners don't spend all they earn. They "save". Which takes the dollars out of circulation.

And they do that largely because they end up on the asset side of some bank somewhere who then discounts them into the local currency.

That process locks the dollars (or dollar financial asset like a Treasury) in place. To get rid of the dollars they have to get rid of the local currency too.

All you can do is offset the net non-government savings (which includes foreigners. They are little different in the MMT view). Any more and you get inflation.

Argentina not only can do it, that is exactly what they do do as a necessary function of the way a banking system works. Balance sheets expand and contract through the day.

Again to the extent that there is excess saving in ARS, the government sector could offset that by simply hiring the resulting unemployed and paying them.

That there is unemployed tells you that there is excess saving. As Warren Mosler would say "if there are unemployed then we are overtaxed for the size of government we have".
I agree with this. 'Technical debt' always exists in the heads of the engineers: the rest of the organisation can't see it. It's an invisible problem, imagined by the engineers, and not always in touch with the practical long-term reality.

Software is a tool. Tools that are used often require maintenance, which in itself is not a novel concept.

Whereas saying 'technical debt' is like delivering a dramatically vague House MD diagnosis.

If you must, call it what it is – Maintenance – and let's move on.
Yeah look at this pic again:
https://static01.nyt.com/images/2020/08/30/magazine/30mag-Ne...

That's not the picture of a 13 year old, not even by a long shot. Could easily be someone in their 30s ++ even.

That task force obviously threw ethics well and truly to the wind.
Ah under Single Title license it says:

> $0K - $500K : $2000

But under Free License it says:

> Free for non-commercial use.

> Free* for use by companies with less than $100K annual gross revenue

Got confused.
I cannot even configure a printer on Windows 10 reliably. Out of ten ways to set the color mode only one correctly reported that it was overridden "somewhere else". I still do not know where that "somewhere else" is, as a result it only prints black and white when you access it from windows. I tried to uninstall the printer, install the most recent drivers (which only added cloud services) and went through all dialogues and settings I could find. Never had that much hassle with a printer on Linux.
Rather flat. Good guy, bad guy, a beautiful woman
Tenet is a science fiction thriller in which the unnamed protagonist, played by relative newcomer John David Washington, in the service of the CIA must save the world from a catastrophe that fades corona. The instigator, a Russian oligarch slash arms dealer (Kenneth Branagh in shape), has a special weapon at his disposal: time travel. Correction: the inversion of time. In plain Dutch: reversed. The characters patiently try to explain the phenomenon in the film, but at some point cut it off by saying, "Don't try to understand it, you just have to feel it." As if Nolan were saying to the viewer: now mainly experience the film, the theory and the discussion will end up on the internet afterwards.https://www.jacksoncountypilot.com/2020/08/28/watch-tenet-2020-hd-online-full-movies-streaming-free/
Not just that but even a Model 3 is a huge car in Europe. The streets here are narrow, garages are smaller, parking is precarious. Its just too big.

Additionally outside of the Autobahn, you're driving through congested city streets where the speed and acceleration is of no value.

We need a Tesla sub-brand that can sell cheaper, slower and smaller cars.
Spot on comment.

I'd add that there is also a principle of not trying to predict the future and make design over-general and over-flexible 'just in case', but rather to have the simplest design that fits current requirements (though of course it should be clean and follow good practice).

The may lead to technical debt in the future but it may not. The idea being not to spend until you have to.

Now, a fudge now to save time should only be done under tight schedule with a plan to fix it later... In an ideal world. I think this is the case that really fits the analogy of borrowing/debt.

Overall, technical debt is unavoidable in a ever changing, unpredictable environment
“Second Life” Reprogram Your Brain
That's not how labor laws work in many countries - if a driver is sleeping in the car, and not in his own bed at home that still counts as working time.