skysight-inc/HackerNews huggingface dataset:
That Bessemer vote was one of the most consequential votes of the coming decade.... hopefully there was some funny stuff for the sake of our communal well-being.
I built Accelerator Keys, a niche tool replicating Windows accelerator key shortcuts in Mac Excel [0]. I made it to scratch my own itch at first, as accelerator keys are a much more intuitive and faster way to use a shortcut intensive app like Excel. Before this, power users needed to run a full VM and use Windows Excel if they wanted to use these shortcuts. It seemed like overkill to me.

Last year, I decided to take the leap and try selling my first piece of software. Here's the PH launch from a few months ago [1]. It's not easy tracking down users, but I've managed to sell a few hundred licenses so far.

It has been a fruitful journey. Learned a lot while building it (e.g. about accessibility features on Macs), but making this a product also meant learning about licensing, payments, front end for the landing page, SEO and FB ads.

[0]: https://acceleratorkeys.com

[1]: https://www.producthunt.com/posts/accelerator-keys
>However, we were discussing mining revenue, not profits in general.

If you are talking about mining revenue then you are completely wrong about what you have been saying so far, because the rate at which you receive mining rewards is usually around 5-10% pa.

What you're trying to do is have your cake and eat it too. You admit that you are not talking about early adopter profits in general, but you complained above about cost basis of early adopters being low (that's how early adoption typically works).

This is the same as complaining about someone investing in 10 year government bonds and then the underlying currency increasing in buying power.

You could go buy Argentinian or Venezualan bonds right now and hope the peso or bolívar goes up in value. It's no different, all you need is seed money to get started.
These are great readings regarding errors in Go.

https://dave.cheney.net/2014/11/04/error-handling-vs-excepti...

https://dave.cheney.net/2015/01/26/errors-and-exceptions-red...
Creating an alternative or an extension to the DNS root is pretty ambitious. If they had chosen a TLD similar to .eth, .bit ... etc., it would have been more manageable, and they could've avoided issues with name collisions.

However, there are some advantages to decentralizing trust in the root since there won't be a need for a root KSK[0] or a central entity that manages the root zone making DNSSEC + DANE more appealing even for existing TLDs.

[0] https://www.cloudflare.com/dns/dnssec/root-signing-ceremony/
> 1. Culture of small api surfaces.

Agree, this is something many other langauges/systems can learn from.

> 2. Small api in the language itself. When reading and writing the language itself you do not have to scratch your head at new creative constructs.

Mixed feeling here. Sacrificing expressiveness isn't always worth it. The right tradeoffs are difficult to find, but IMO go is too far in the direction of offering too few useful constructs.

> 3. No inheritance. The lack of immense hierarchies of data structures means it’s dead simple to find out where the implementation for a given function lives.

I actually disagree here. Its no easier than any other language (and often harder), because your function or struct will accept some interface I, and call a function or functions of that interface. Finding the correct implementation of the interface is a matter of figuring out where/how the dependency was injected. Even with good codesearch and cross-reference tools, this can be difficult if there are more than 1-2 implementations of an interface.

Lack of multiple inheritance is absolutely a good thing, and composition in general does have value though.

> 4. Gofmt

Yes.

> 5. Simple error handling. Easy to wrap with all the contextual info you would need to fix a bug.

Mixed, I think explicit error handling (as opposed to raise/catch) is fine. I think better support for concise simple cases (the try macro, better Result types like in rust, or something like Google's ASSIGN_OR_RETURN macro) would all be strictly better for the language.

> 6. preference for short names.

I abhor this. Perhaps it depends on the exact culture, but at Google for example, the result of this is names that are only abbreviations, which requires mental translation to what the thing should be, making reading new code harder. The canconical example of this would be `fpb` vs `foo_pb`. This is maybe okay if you're dealing with a single proto, but if you have a number of related ones, you end up with abbreviation soup trying to remember which of rpcpb, rcpb, crpb, and bcpb you want.

> 7. Packages

This is, I think, a thing that only matters if you're coming from C/C++. So like sure?

> 8. No constructors.

I guess, I'm not sure how this aids readability, I guess you mean that it forces you to have named factories for any complex instantiation, instead of default or magic constructors?
try also, popcorn
>>> meanwhile traditional fiat currencies are secured by massive banking industries, governments, and militaries.

Crypto-currencies are also secured by those things in their present state. So long as crypto remains a small portion of the overall economy, it depends on the mainstream economy for its existence. For instance, it can't exist without an economic infrastructure that can develop and produce computer chips, telecommunications, the electric grid, and so forth.

The energy cost of Crypto is on top of the cost and externalities of the present day economic infrastructure.
> Still, the vast majority of cases in California have been in the metropolitan areas that have also had the strongest restrictions.

So are the vast majority of people, and greater population density makes it harder to control the spread of communicable disease. So you’d expect, all other things being equal, not only thr vast majority of cases but the highest per capita cases to be in the metro areas.

But, actually, the highest per capita infections (both total and current) were mostly in rural, not metropolitan, counties.
The terms "inflation" and "deflation" are used in the context of the amount of a currency in circulation, and in the wider financial context, they have little sensible meaning otherwise.

When talking about price, "increase" and "decrease" would be a more correct term, or in this case, "collapse".
Yeah, these all good points. The world is always more complex if you dig deeper. It does very much depend on your use case, and it can vary for different types of data.
Similar, yes, but Ion repeats a number of mistakes from the past:

* The text format doesn't have a version specifier, so any future changes to the text format will break existing codecs and documents.

* Uses ISO 8601, which has bad defaults (local timezone) and doesn't support real time zones (only offsets). ISO 8601 is also too big for what it does and non-free, resulting in inconsistent implementations (and thus security problems).

* Doesn't support chunking (so you must always know the full length before you start encoding).

* Lists must be prefixed with their length, so you must know the length before you start encoding. Converting a list from the text format to binary format would require loading the entire list into memory first.

* Only supports "struct" encoding, so you can't have real maps (for example using integers or dates as keys).

* Doesn't support arbitrarily long scalar values.

* Doesn't support NaN or infinity.

* Doesn't allow to preserve comments when converting to binary.

* Doesn't support arrays.

* Doesn't support recursive data or references.

* Doesn't have a URL or UUID or error type.

* Integer, date, and decimal float encodings are inefficient.

* Allows multiple sections, each with their own version declaration as a feature for mixing specification versions in the same document. This means that ALL codecs must support ALL versions forever, increasing bloat and attack surface.
>So far Western governments aren't actively forcing anything

What would you call the regular use of sanctions or the recent "trade war" with China?

I don't agree with the statement that criminal hackers mean we are at war, but if you consider that kind of damage war the US has been an aggressor for years.
> And what? Complexity, and BOM size are not a problem by themselves alone. You should not view it in isolation from the context.

Sure. So what's important about context? Is it impossible to have a 555 shortage?

> Blinkey leds, and an interlock in between few buttons is really an overkill for MCU, and should've been treated as such no matter how many cents can be saved.

Would you refuse to use 1% resistors if they were cheaper than 10% resistors? Overkill isn't bad by itself.

> You can save a few dollars on a screwdriver if you can put in screws with a hammer, but you are certainly better off not doing that.

It's more like a set of 100 drill bits being cheaper than the specific 20 you need all wrapped in individual boxes.
Making HTTP clients for use with netcat-like programs, part 2 of 2
# make new http client (yy025)
# hh2 is an #include in 025.l below
yy018 < ua.txt > hh2;
flex -8iCrfa 025.l;
# cpp -P 025.l|less;
cc -Wall -std=c89 -static -o yy025 lex.yy.c;

save as "025.l":

int yy_get_next_buffer();
int fileno(FILE *);
int setenv (const char *, const char *, int);
int dprintf(int, const char *__restrict, ...);
#define httpMethod "GET"
#define httpVersion "1.1"
#define Host ""
#define jmp BEGIN
#define Y(x,y) fprintf(stdout,x,y)
int count,path,ka;
int httpheaders(){
setenv("httpMethod",httpMethod,0);Y("%s ",getenv("httpMethod"));
Y("%s HTTP/",getenv("Path"));
setenv("httpVersion",httpVersion,0);Y("%s\r\n",getenv("httpVersion"));
#include "hh2"
fputs("\r\n",stdout);
return 0;}
int keepaliveclose(){setenv("Connection","close",1);return 0;}
%option nounput
%s xa xb xc
xa "http://"|"https://"
xb [-A-Za-z0-9.:]*
xc [^#'|<> \r\n]*
%%
^{xa} count++;setenv("Scheme",yytext,0);jmp xa;
<xa>{xb} setenv("Host",yytext,1);if(!getenv("Host"))setenv("Host",Host,0);jmp xb;
<xb>\n path=0;setenv("Path","/",0);httpheaders();jmp 0;
<xb>{xc} path=1;setenv("Path",yytext,1);httpheaders();jmp 0;
.|\n
%%
int main(){input();yylex();if(!getenv("nokac")){if(count>1){keepaliveclose();httpheaders();};}return 0;}
int yywrap(){dprintf(6,"%s",getenv("Host"));return 0;}
The article doesn’t say it’s “rarely used”. It says it “rarely happens”. It is not supposed to happen:

> Frameshifting almost never happens in our cells. It would lead to dysfunctional cellular proteins.

So the drug would disable an aberrant behavior that coronaviruses depend upon to replicate. This doesn’t sound like a bad thing. It’s also why trials exist.
Do you think the Israeli government was telling the truth when it denied using the phone call records transmitted to Amdocs' servers in Israel for intelligence purposes?
I don't think biological evolution is an important factor in modern humans.
Hmmm, I wonder if anyone has made program for this purpose that will read the rest of the file a declarative definition of a service? Like imagine a SYSTEMd unit file with a shebang at the top .
I write Java, but I prefer errors as values exactly because you can't only consider the happy path. It really makes you think about the appropriate response to this specific failure. You can do that with exceptions, but in practice it's exactly like you say: all error handling is delegated to some generic catch-all, which in a web app usually just gives a generic 500 Internal Server Error.

If I encode my errors as values (usually with Either), I have to decide how to gracefully fall back if a failure occurs before I'm even allowed to use the successful result. Maybe I just hide the part of the view that needed that data. Maybe I show an appropriate error message. Maybe I email operations to let them know about the problem. Whatever I do, I have to actually think about it and not just assume that the error will be caught somewhere by someone. The result is usually a dramatically improved user experience when failures inevitably occur.

Exceptions tend to pass the buck so far down the line that there's no context to make an appropriate decision. Values tend to force a decision early, when you still have enough context. (Obviously both can be used against the grain, but the question is which pattern is easier.)
I don't think anyone here is saying that PoS is somehow solving world poverty. The people who claim PoS is better than PoW typically do so because it is more power efficient and still capable of running an effective monetary network (at least what we've seen so far). I don't know anyone who says PoS is "more fair" although I would argue that delegated staking is certainly more geographically friendly than PoW (and to an extent, PoS) which will inevitably end up geographically focused in areas with low cost of operation (cold areas with the cheapest power and rent). PoS could be done on a Raspberry Pi plugged into your modem.
I agree with this. Go works like my brain, and I don't mind that. Sure you can do X in some fancy way in other languages, but that just leads to feature creep. I've never read Go code I didn't understand at first glance. I cannot say that about a single other language.
Ask HN: Any open source dotcom marketing sites?
We are looking to develop new dotcome marketing site (the site that provides landing page, overview and other marketing content). Is there any open source sites of a saas product that you know of?
Of course, you need _some_ amount of transactions. But that could theoretically be 500 a year and still adding just as much value as bitcoin today, so long as the transactions were sufficiently significant.
out of bounds panics aren’t all that common in practice. Yeah they’re easy to write, but usually if you have a slice you’re going to range over the whole thing or loop over it up to its length anyway. It’s not common to handle slice indexes on their own and keep them hanging around outside of the context of a for loop. The major exception to this is cases where you want the first element of a slice and didn’t check that the slice is non-empty first, which sucks. But in any case, it doesn’t come up all that often in production code. You can range over a nil slice or a slice of zero items safely.

Nil pointer dereferences are way more common, as is assignment into a nil map. Those I see coming up a lot in newer Go programmers’ code.
Thanks for pointing this out --

> That's a ridiculously low salary here, fine for a college kid with a part time job ("arubaito") at your local konbini, but not much else.

True -- min wage is 1000 yen, not hard to work out the lowest theoretical yearly salary would be with a 5 day work week. The usual exception of waiters that are below the min wage isn't here since the service sector generally doesn't do tipping.

> Maybe you got confused because China, Japan and Korea group numbers by powers of 10 000 ("man")?

Yup this is exactly it. Can't get used to dealing with that extra order of magnitude.
Thank you for the correction, I didn’t know it was that old
Thanks for pointing this out -- yup, 10 million yen is what I meant there, I corrected it in the original comment
Yeah, that wasn't the best choice of wording. Much prefer how you phrased it.

It's really just about carefully defining the behavior of the system in the face of failures. Typically that means in a CP you tolerate some failures, but eventually you lose the majority and (perhaps only on one side of a network partition) and you have to sacrifice write availability at the minimum to maintain consistency - and reads might now be stale.
I don't think you read my comment very carefully.

I said "the history". As in, _other_ studies have been used to reinforce misogyny in the past.

And I did not come close to "immediately discount".

Please read my comment again.
Another technologically interesting very low energy coin is NANO but it has his own challenges because with the feeless transactions the spamming costs almost nothing.

But still at one point it confirmed more transactions than BTC + ETH + LTC combined without tx fees and sub-second confirmation time:

https://www.reddit.com/r/nanocurrency/comments/lxbhh5/nano_c...

The spam is becoming a too big problem, but they're trying to mitigate it in the new versions:

https://www.reddit.com/r/nanocurrency/comments/namwzf/v22_hi...
Linux is not a target for common malware app developers, now. I’m not worried about the professional engineers.
Please don't post flamewar comments to HN. It's not what this site is for. Personal attacks are particularly not ok.

https://news.ycombinator.com/newsguidelines.html

Edit: since your account has been using HN exclusively for this, I've banned it. That's not an allowed use of HN, regardless of what you're for or against.
As well the argument about power management chips not benefiting from Moore’s law. Yes, but that’s been the case for decades. Thermal and current requirements demand a certain amount of silicon regardless of how small you can make features in a low-power chip.
Yeah I always laugh for the same reason when people describe organs as "vestigial."
I would say no. I've had no trouble at all "marketing" with less than $100 and getting thousands of users within a year. That's my benchmark.

It's not clear what the app does. I can see about 5 features there. Try to cut it down to one.

The screenshots are confusing too. I can't see what's going on and how that solves whatever problem it's trying to solve.

It's a lot harder to sit down and cut features than it is to add them, but that's probably what you have to do, at least in marketing.
Breaking the site guidelines this egregiously will get you banned here. Please read https://news.ycombinator.com/newsguidelines.html and stick to the rules from now on.

Edit: it unfortunately looks like you've posted flamewar comments repeatedly as well. Would you please not? We're trying for a different quality of conversation here, as you'll see if you read the link I just mentioned.
the fundamental tenet in Go is that every error should be handled. Here is an excerpt from Dave Cheney that clarifies this:

"For the truly exceptional cases, the ones that represent either unrecoverable programming mistakes, like index out of bounds, or unrecoverable environmental problem, like running out of stack, we have panic.

For all of the remaining cases, any error conditions that you will encounter in a Go program, are by definition not exceptional — you expect them because regardless of returning a boolean, an error, or panicing, it is the result of a test in your code"
I don't remember exactly. I've been with them since early 2005s, and some time later there was a change back in the days on this. I used to pay them 5$/month with discount for a year.

They're very good, I must've been a customer for 12+ years already and it's always been pleasant.
Look at any piece of Java code and try to guess the cyclomatic complexity of it. It's not simple. Because every line, and every function call can fail. And that failure is one more place where the execution tree of your code branches. You can't see it unless you check every method call in your code.

In Go -- every error is obvious, and you get a sense of a cyclomatic complexity of any piece of code by just going through it quickly.

So, that's it for me. The complexity of the code is visible.
https://github.com/Defi-Cartel/salmonella

Link for the lazy, super interesting read.
Sure, oversimplification in my question I guess - the returns on older fabs don't go to zero, but their products fetch a margin that's a function of how close to bleeding edge the process is. But the question still stands.

(btw fab site lifecycles don't usually correspond 1:1 to fab equipment generations, they tend to get refitted, this was also the case in Intel's D2 which had an old process by the time of retirement but not 30 years old)
11ty is great and it supports Jekyll-like templating and others too.
An earlier post (https://raphlinus.github.io/gpu/2020/09/05/stack-monoid.html) explains it. The elements of the monoid are stack operations represented by pairs `(n, vs)`, where `n` is a number of values to pop off the stack and `vs` is a list of values to push on afterwards. So e.g. `(3, [])` is “pop 3 values”, `(1, ['foo', 'bar'])` is “pop 1 value then push 'foo' and 'bar'”, etc. Two elements are composed by combining their pop counts and push lists to reflect what happens to the stack if you apply the operations sequentially, e.g. the previous two examples compose to `(4, ['foo', 'bar'])`. The identity is `(0, [])`.
There's tons of non-tourist spots where you'd fit. It's not super uncommon to find guys who are 180cm or taller, the tallest I've met is 194cm while waiting for the bus.

Even at 181cm you do have to watch your head though.. I've hit my head many times while going up stairs, and for those who don't know stairs are extremely common because many businesses are split up across multiple floors of a narrow building.
I'm not exactly sure what your point is. Inconsistent systems are not always horrible?

Mostly they behave well. It's really that they have edge cases that are unintuitive.

In your example of a user is switching between A and B all the time, imagine their confusion as their changes keep getting lost and reappearing. Now imagine they make other changes based on that situation.

This can also happen with different users communicating via a side channel.
Global Supply Chains in a Post-Pandemic World(2020)
> Exceptions tend to pass the buck so far down the line that there's no context to make an appropriate decision.

This is not true, and therefore your explanation is unsatisfying.
Diet drinks, unsweetened ice tea etc all pay the tax.
Promoters of Crypto Ponzi Scheme OneCoin Murdered in Mexico (2020)
https://www.coindesk.com/promoters-of-crypto-ponzi-scheme-on...
Most egregious example of an editorialized title I've ever seen on HN, ha.

You don't actually pronounce it "ESS-CUE-ELL ITE", do you?!
Ask HN: Would you be interested to try out my Heroku add-on (invite only)?
Hi, I've been working on an add-on (https://elements.heroku.com/addons/presbot) to allow users to create an embeddable chatbot for their website or app in a breeze. It's currently in alpha and is invite only.

I'd appreciate if you could help check out my add-on on your test/dev environment. It's simple, reliable, lightweight and free forever. Please DM me your email or drop me a line at hello@presbot.com if you'd be interested to give it a try and i'll send across the invite.

Cheers!

hello@presbot.com
If Buterin had sold the coins before donating he would have crashed their price by himself and I can see how that’s not something he wanted to do.

He gave away a lot and burned the rest, thus theoretically creating scarcity which should play in favor of the price. Then again, SHIB is a hyped shitcoin, it was never going to be worth much in the long run and it’s remarkable that it even reached the price it has right now.

Creating such a token can be done within an hour.

If the COVID relief fund gets stolen by officers, then that is unfortunate to say the least but once again, all things considered, Buterin did the best thing he could.
I've spent 5 years at university and turning 30 this year, I'm going to quit my job in about a month and throw it all away. Can't say that my family is thrilled but I'm gaining weight like crazy, don't like my job, I don't fit in the culture, I don't like sitting down all day in front of a computer, I drink to much because of this.

I'm playing with the thought of opening a store in some small country town where I can cook food and sell basic necessities.

Is it a good plan, who knows but going on like I do now is also unsustainable.

So you're not alone and sometimes you just have to go for it.
> the fundamental tenet in Go is that every error should be handled.

That's true in Java as well.
It's valid for Bitcoin since it doesn't scale on-chain, thus it cannot raise it's efficiency.

Also, BCH and BSV aren't "totally insecure" as that's far too black and white. If they were, then they would've been attacked and destroyed long ago and no exchanges would touch them.