> Tbh also not a fan of deleting content that’s more than 6 months old
Agreed. Aether's idea is that the community will hold on to material that is important, likely by reposting.
619 karma · joined August 10, 2017
> Tbh also not a fan of deleting content that’s more than 6 months old
Agreed. Aether's idea is that the community will hold on to material that is important, likely by reposting.
It:
- is P2P. Everyone using the app sees the same network; no federation keeping communities separate. This also means that everyone receives information from the network, including posts, comments, and moderator actions. One feature here is that if a moderator is overbearing, you can ignore their actions.
- features mod elections so that the default list of moderators can be selected by the community; mod actions are auditable since they're sent to all peers so you can see what the mod has done.
- is text only by default. I think there's a feature to approve domains to have their content render in the app, but it is mostly a text based community
- doesn't keep the whole history of posts to the network. I think this is probably a development choice to make sure clients don't have to download terabytes of history just to view recent posts. It's marketed as being ephemeral and won't keep track of your brain fart posts made years ago.
- is mature. Posts on HN about Aether have been made as far back as 10 years ago.
- features proof of work spam prevention. Every action you make takes a little bit of computing power to prevent network spam.
Maybe this example is relevant. Racket defines procedures `filter` and `map` for `list`. Also provided is `filter-map`, which I assume may satisfy your not-being-direct-expression concern about Lisp. But, `filter-map` exists for a particular reason:
> Like (map proc lst ...), except that, if proc returns #false, that element is omitted from the resulting list. In other words, filter-map is equivalent to (filter (lambda (x) x) (map proc lst ...)), but more efficient, because filter-map avoids building the intermediate list.
So it exists for performance concerns. It also exists in the "Additional List Functions and Synonyms" so it's not like it's being confused for a core, important function like `filter` or `map`. I still write Racket code where I just explicitly have something like:
(~>
(filter (lambda (x) (equal? 'some-value x)) some-list)
(map (lambda (x) (symbol->string x)) _))
without always jumping for a more concise abstraction.And, coming from other languages, DRY (don't repeat yourself) seems quite popular, so I am not sold on this being a Lisp-specific issue.
> (list 1 2 3 4)
is a way to create a list consisting of elements 1, 2, 3, and 4. This procedure is defined as returning a `list?` (a contract checking for a list) and the values provided are `any/c` (a contract representing any value). But many other languages can support something like that just fine. Where contracts further help are with composition and specifying allowable values or ranges of values. For example, > (round 2.4)
2.0
as we expect. But looking at the definition of `round`, we see that `(round x)` accepts an `x` satisfying contract `real?` and returns `(or/c integer? +inf.0 -inf.0 +nan.0)`. If you try to `round` Infinity or NaN, you get what you "expect" and not some new value. If you try to `round` POSITIVE_INFINITY in Java, you'll get > Math.round(Double.POSITIVE_INFINITY)
9223372036854775807
because, with types, Math.round() must return an int or a long.You can work with tables, trees, maps, vectors, etc. and if they can support list operations (filter, map, reduce, first, last, etc.) then they can be treated like a list and you can do those operations. You can still build IDEs that will show you tables of variables at runtime and graphs of your tree structures.
Nah, when I write Lisp programs, I have more of an appreciation for appropriate abstractions, not needless abstractions.
> A elegant lisp expression is meaningless in isolation.
Elegance is usually in relation to something. For example,
(list 1 2 3)
Is more elegant than var list = new LinkedList<Integer>();
list.add(1);
list.add(2);
list.add(3);
> When reading lisp code, you must recursively find and remember the definitions for each token on the page before you can understand what it does.You need to do this for any language. In Java and many other languages, having a "Go to definition" IDE function is very useful.
> Lisp programmers are blind to the power and clarity of thought that comes from direct expression - all definitions visible at once, with no indirection.
Not sure what this is referring to. Do you have an example?
> A lisp programmer might look down on a Java programmer's reliance on IDEs.
Plenty of Lisp programmers use Emacs, which has a great many tools to help developers including jumping to definitions, showing documentation, running and using a step debugger for code, etc. Not sure why Lisp programmers would look down on Java programmers because of an IDE.
> By crafting different bespoke DSLs for each new problem, lisp programmers lose the opportunity to hone one DSL to perfection.
This seems to be a Lisp meme. Just because Lisp can be used to make a DSL doesn't mean all Lisp programs are macro-implemented DSLs. There's plenty of Lisp code that looks just like Java code with function, struct, object definitions and calls, except it uses parens.
XMLElement el = <html><body>Hello World!</body></html>;
In JavaScript, we have probably the closest to Lisp in this regard with JSON. You can define JSON literals in your JavaScript code; config files like package.json are written using this object notation. If you want to work with, say XML, there are libraries to convert your XML to JSON and you can take it from there.But, JSON is limited. How do you define dates for your datatypes? Probably use a string. In Lisp, you can use a string or have some (date year month day) form. How do you represent rational numbers? Maybe you'll risk using floating point or you'll just go with a string. Lisps have rationals built in or you could roll your own with (rational numerator denominator). So your JSON
{
'name': 'John Doe',
'birth-date': '1970-01-01',
'account-balance': '1000.01'
}
can become (user #:name "John Doe" #:birth-date (date 1970 1 1) #:account-balance 100001/100)
When Lispers need to interact with JSON, they convert it to S-expressions. When Lispers need to interact with XML, they convert it to S-expressions. Wouldn't it be nice if the other languages had syntaxes that made you want to define data using that language's syntax and not JSON or XML?Same for Paxos.
> SBF/FTX was a fraud and was iFinex's biggest customer.
It's very likely that the FTX creditors will be very happy to receive their USDt that they held on FTX when they receive whatever amount of it from bankruptcy. They'll be able to redeem 1 USDt for $1 from Tether.
[1] https://www.cftc.gov/PressRoom/PressReleases/8450-21
[2] https://www.cftc.gov/sites/default/files/idc/groups/public/@...
0.1% chance the Feds get involved and sue AI companies for criminal copyright infringement.
> Billions Of Tether’s Reserves Were Stored At Cantor Fitzgerald, Capital Union And Ansbacher
So, the big player in the Treasury market, Cantor Fitzgerald, knows about Tether and their holdings.
> The case against patents can be summarized briefly: there is no empirical evidence that they serve to increase innovation and productivity. There is strong evidence, instead, that patents have many negative consequences.
$ racket
Welcome to Racket
> (read-decimal-as-inexact #f)
> (+ 0.1 0.2)
3/10
Lovely.Attestation reports from BDO Italia state that they hold US Treasuries and that this makes up the core of their holdings.
https://tether.to/en/transparency/#reports
> While the treasury market is large the players are small and no one claims to work with tether.
Even firms like Cumberland who are known to participate in the Tether creation/redemption process do not talk about working with Tether
https://protos.com/tether-minted-usdt-stablecoin-crypto-two-...
For the US Treasury market, the players are not small. Maybe that was believable for the commercial paper dealings for Tether, but you can just directly buy from the US Treasury at auction, or go through a banking partner like Deltec Bank, and none of "the players" will know anything about you.
> You can’t roll billions in treasuries without all the major players knowing who you are.
Of course you can. Direct and indirect bidders for US Treasury bills are routinely in the dozens of billions. No need to go through a primary dealer.
> And if they did they would release their cusips and put this to bed as there is only downside for them by withholding the cusips
Would you honestly be convinced if their attestation reports included CUSIPs? Do you think that people would still clamor for an audit and just move the goalposts to "anyone can look up CUSIPs for US Treasuries. Why aren't the primary dealers confirming their purchases?"
Deltec's response is that they're awaiting instructions on how to repay the loan:
https://www.deltecbank.com/2023/01/16/deltec-bank-trust-limi...
Shows a decline in market cap from $83B in May 2022 to $66B in July 2022. That represents $17B in redemptions over a few months. That represents Tether net paying USD to USDt holders.
https://tether.to/en/tether-banking-relationship-announced/
From https://www.deltecbank.com/2022/09/01/the-history-of-stablec...
> Tether
> Launched in 2014, Tether (USDT) came to extraordinary success with a current market capitalization exceeding 67 billion USD.
> This stablecoin fixes the issues inherent in the previous three. It relies not upon volatile reserves or the idea of persistent arbitrage trading, but on hard reserves of fiat currency. For every Tether coin in existence, there is one US dollar in a vault backing its existence.
> In this way, the stablecoin handles a complete theoretical rout with ease. Tether continues to serve the burgeoning digital asset space while garnering the implicit affection of regulators.