Faster – Fast key-value store from Microsoft Research - <AUTHOR> https://github.com/Microsoft/FASTER <comment><USER2> I had to opportunity to look at the code. I believe this should be compared against embedded hash database such as "kyoto cabinet, LevelDB, RocksDB" . They introduce a novel latch free hashtable that they say is faster than other in memory data structure.

They also introduce a new disk persistence system called HybridLog that combines in-place updates (in memory) and log-structured organization (on disk).

The interesting aspect of the HybridLog is that it act as a bufferpool but seem to work at the record level instead of working with pages like a B-tree buffer pool would or compressed block as levelDB block_cache does.

<comment><USER3> I was very surprised to see pretty much the entire implementation inside a file called faster.h rather than in a .cc file. Maybe that's all the rage in C++ libraries, I don't work with many of them.

<comment><USER4> It is because of the template class code. In C++, a template is not really a class or a function.

[https://isocpp.org/wiki/faq/templates#templates-defn-vs- decl](https://isocpp.org/wiki/faq/templates#templates-defn-vs-decl)

</comment></comment></comment><comment><USER5> For those wondering what this is, it is not a client/server app, from what I can tell, but an embedded engine. It looks like it's intended to be a library, and it's been implemented in two languages (C# and C++).

To get something like Redis or Riak you would have to build API, clustering, etc. on top of it. So it's more analogous to libraries like RocksDB, BoltDB, BDB etc.

Paper: [https://www.microsoft.com/en- us/research/uploads/prod/2018/0...](https://www.microsoft.com/en- us/research/uploads/prod/2018/08/p809-chandramouli.pdf)

<comment><USER6> c++ part is one liner intrinsic which may be supported directly with new .net and several io methods which would be heavy on pinvoke calls like 5 per method if in c#, but these are very simple. so c++ part could be done in c and easily ported to unix. i guess c# should allow for pinvoke strategy like in lua to replace c++ more.

<comment><USER7> What kind of different strategies did you have in mind? So far as I know, P/Invoke already tries to be as low overhead as possible - e.g. primitive types and blittable structs are just passed as is, with no conversions. The recently added Span<T> is also special-cased for P/Invoke.

<comment><USER8> > So far as I know, P/Invoke already tries to be as low overhead as possible

As low as possible maybe, but there's lots of limiting factors with P/Invoke, such as:

\- They are not inlined

\- Registers need to be saved pessimistically

\- The state at the point of the call is visible to observers outside of code the compiler controls so options for scheduling are constrained

\- Objects need to be materialised

\- All parameter values need to be available even if they aren't actually used

\- Objects passed have to be pinned or given an indirect handle

\- The caller has to be in a safepoint so GC can keep running

\- The compiler has to juggle things into place for the C ABI, where it may normally lay things out differently

\- etc

Going through a P/Invoke call is a whole inconvenient circus compared to an intrinsic.

</comment></comment></comment></comment><comment><USER9> "What differentiates FASTER are its cache-optimized index that achieves very high performance — up to 160 million operations per second when data fits in memory;"

I really dislike when papers make performance claims like this in the introduction. That "160 million" number is so meaningless at face value because everything from the runtime environment to the hardware is going to play a huge role in ops. I rather see how it compares against other key-value stores across a number of configurations and use cases.

<comment><USER10> It'd be awesome if they provided a comparison of other tools on the same hardware like, "on an AWS M4.xlarge instance we were able to achieve 160m/ops/sec when the dataset fit into memory where as redis only did X"

Lacking that I agree it's a pretty meaningless stat.

<comment><USER11> Don't do benchmarks on shared-host.

<comment><USER12> If that's your production environment then that's where you should run them.

<comment><USER13> That's not why you don't run them on a shared host.

It's because every other tenant on the machine is going to make run of the same benchmark unpredictable, and it will likely vary greatly through the day.

Even taking multiple runs of each benchmark isn't sufficient, because you don't know the usage patterns of other tenants.

<comment><USER14> You're making it sound like performance on such hosts in unknowable which isn't really accurate. 'Multiple runs of each benchmark' is vague enough to be potentially insufficient in just about any environment to boot.

<comment><USER15> Variance matters though. Test where you can reasonably be sure about low variance.

<comment><USER14> Sure. But it can be measured and accounted for. The idea that you can't or shouldn't benchmark such environments seems weird, given that they're pretty popular.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> For key value stores that make performance claims, it would be helpful if they would publish the time and space complexity graphs for various sample data workloads. Write/read, and various data homogeneity for at least one of the standard architectures in different kinds of memory and disk configurations if what is being touted is the novel storage architecture. And provide the scripts to generate said sample datasets.

</comment><comment><USER17> Haven't read the papers yet, but it immediately reminds me of Anna:

[https://databeta.wordpress.com/2018/03/09/anna- kvs/](https://databeta.wordpress.com/2018/03/09/anna-kvs/)

<comment><USER18> That link has comments between anna and faster authors. The best part being:

> There are two high-level design goals that separate Anna and FASTER.

> First of all, for Anna, we set out to explore an execution model that's > truly coordination-free; each thread accepts requests, performs computation > and sends out response without communicating or waiting for other threads. > We believe having a coordination-free execution model is the key to fully > exploiting multi-core parallelism within a single machine, and scale out > smoothly to a distributed setting. We acknowledge that the fundamental > caveat of having a coordination-free execution model is that strong > consistencies (linearizability, serializability) are not achievable. Anna > instead offers a wide-spectrum of coordination-free consistencies > taxonomized in Bailis's HAT paper > ([http://www.vldb.org/pvldb/vol7/p181-bailis.pdf](http://www.vldb.org/pvldb/vol7/p181-bailis.pdf)).

> In addition, in Anna we focus on exploring a unified architecture that works > at any scale, from a single multi-core machine to NUMA to a geo-distributed > setting. Under this goal, architectures that rely on shared memory within a > machine (including FASTER) need to be redesigned as we move to a distributed > setting. This complicates the software, and can introduce challenges in > maintaining consistency as the execution model within nodes and across nodes > are now different.

> Anna currently focuses on workloads that fit in memory. For larger-than- > memory data, we believe Anna can benefit from the hybrid-logging technique > in FASTER for efficiently persisting data to stable storage.

</comment></comment><comment><USER19> If you want concrete benchmarks, they compare to RocksDB and Redis around page 10 of their academic paper. ([https://www.microsoft.com/en- us/research/uploads/prod/2018/0...](https://www.microsoft.com/en- us/research/uploads/prod/2018/03/faster-sigmod18.pdf))

TL;DR:

I find their choice of benchmarks to be very convenient.

They tested on in-memory 8 byte payloads and were way faster than RocksDB and Redis. They then tested against _only different configurations of themselves_ for configurations that hit disk. They also tested an embedded version of their software vs a Redis that hits loopback (rather than e.g. running against the raw redis data structure implementation, which would have been a more fair comparison).

<comment><USER20> > They then tested against only different configurations of themselves for > configurations that hit disk.

In the case of Redis, AFAIK it can't support larger than memory use cases, right? And in fact they do compare to RocksDB for larger-than-memory, see Fig 10. Granted, it could be more detailed, but I think it makes their point.

<comment><USER19> They sure hid figure 10! Unexpected section, bad header choice, etc.

</comment></comment></comment><comment><USER21> I'm sceptical. Modern top tier in mem key value storages like LMDB are just within 20% 30% away from CPU maximum IO throughput on server class hardware. There must be some tricks in their metric.

Do they actually fetch data or they just measure how many memory pointers per second they can dump?

</comment><comment><USER22> Why the hell is Microsoft so bad at naming?!

I'm sure it will be easy to find information about this,

.NET,

abysmally performing FAST search product (which is named too close to this with too much overlap),

Creators update,

SQL Server like they're the only SQL capable server out there even though it's based on somebody else's product

etc...

</comment><comment><USER23> This is really interesting.

This is usually what people would do when using NoSQL database to reduce latency by caching elements with an in-memory database.

Basically they are mixing up Redis with RocksDB , which is what devs usually do to get even higher throughput by storing IDs in Redis to save a call to RocksDB.

Now what bother me is the look of repository , it looks completely rushed out.

No logo , unclear description of the tech...

Hence , as other mentioned it's just "an engine" , it doesn't actually contain the network layer, the clustering mechanism etc...

I guess it's probably the tech that is powering their flagship engine : "CosmosDB".

<comment><USER24> > Now what bother me is the look of repository , it looks completely rushed > out.

> No logo , unclear description of the tech...

it's not a product, it's the code that accompanies a white paper.

[https://www.microsoft.com/en- us/research/project/FASTER/](https://www.microsoft.com/en- us/research/project/FASTER/)

</comment></comment><comment><USER25> I have seen plenty of local-machine fast key-value stores, such as LevelDB (By Google), or RocksDB (By Facebook), but I have a hard time imagining what they are for.

What are the use cases for such a library?

<comment><USER26> Imagine you want to run a service. This service needs to maintain some intermediate state. This state might've frequently read. There might be little value in persisting this state. Also, your service is used by many users, so this state can grow to be pretty big. For example, contents of a shopping cart.

One solution is to maintain such state in some key-value store. Different functions of your service can query this state within the data center and never have to suffer disk delays - which are often much longer than the internal network of your data center.

<comment><USER27> I think it's an in-memory embedded library, so why not just use a global variable map/dictionary?

<comment><USER28> > so this state might grow pretty big

As mentioned by the comment you replied to, it's because FASTER (and similar libraries) allow persisting this to disk in an efficient manner. If it can fit in memory and your language/framework has an efficient hashmap implementation, then you're right.. it's probably not worth using something like this.

</comment></comment></comment></comment><comment><USER29> What does FASTER stand for? Because otherwise it's a terrible name, imo.

<comment><USER30> Microsoft tends to choose bad names: See Visual Studio Code, the most ungooglable name ever.

<comment><USER31> What are your thoughts on how "Googleable" these product names are: ".NET" and "Azure Functions"

<comment><USER32> Google makes it work. But then there are C# and F#, which are Googleable but fail on probably 99.9% of other sites and software with search functionality, including some of Microsoft's own products (e.g. NuGet).

</comment></comment></comment></comment><comment><USER33> "up to 160 million operations per second"

Read operations? Write operations? Per core, or using N cores?

For the case of one core at 3GHz, it would mean 20 CPU cycles per operation, which is barely enough for storing the data in the RAM for a log write. If using more than one core, e.g. one for writing the log, and others for updating the actual data structures, could imply much longer times for completing one operation, despite doing 160M per second on average: in that case it would not their "faster" would mean scalable rather than faster.

</comment><comment><USER34> The VLDB reviewers of their paper [1] must not have thought much of it because it's accepted as a short paper, which is not a great signal. No comment on the quality of the work though, as I only just started reading it.

[1] [https://www.microsoft.com/en- us/research/uploads/prod/2018/0...](https://www.microsoft.com/en- us/research/uploads/prod/2018/08/p809-chandramouli.pdf)

<comment><USER34> So this was a demo paper, backed by their SIGMOD paper [2]. Interesting work. Their Epoch Protection kind of reminds me of the functionality provided by RCUs [3]. It is unfortunate that they do not provide comparisons with other hash maps in [2], opting for end-to-end comparisons with other systems, but that doesn't take away from their results.

[2] [https://www.microsoft.com/en- us/research/uploads/prod/2018/0...](https://www.microsoft.com/en- us/research/uploads/prod/2018/03/faster-sigmod18.pdf) [3] [https://www.kernel.org/doc/Documentation/RCU/whatisRCU.txt](https://www.kernel.org/doc/Documentation/RCU/whatisRCU.txt)

</comment></comment><comment><USER35> It would be nice to know why I would use this instead of something tried and tested like Redis, but the sparse description doesn't really help.

<comment><USER20> You wouldn't - first and foremost, this is probably most useful as a storage layer for some more higher-level data store.

Second, think of software artifacts from papers as a proof of concept, or a prototype. It's intended more to demonstrate some architectural innovation, and less to serve customer needs. Their ideas revolve around supporting a high level of concurrent access and removing the locking overhead that would normally stem from this, and an interesting way to handle spilling over to disk in larger-than-memory scenarios. This might evolve into a customer- oriented product eventually. Or perhaps get retrofitted into the guts of something like MS SQL server.

</comment></comment><comment><USER36> Could somebody give an example of a use case for this?

</comment><comment><USER37> Faster? Really?

Name for fast X: Quicker

Name for fast Y: Speedy

<comment><USER38> Didn't Google call one of their HTTP extensions SPDY? Or am I thinking of something else?

<comment><USER39> Yes, Google's binary replacement for HTTP when run over TLS was named SPDY and is ultimately the origin of the HTTP/2 standard

Their encrypted replacement for TCP was named QUIC and is now being worked up for a standard also to be named QUIC (people working in this space call Google's GQUIC). The IETF's standard QUIC is firming up and may be finished in 2019 or so, but then I expected TLS 1.3 in 2016 so what do I know.

</comment></comment></comment><comment><USER40> So what's the underlying storage? Is it LSM with more tricks and prallezation + probabilistic algorithms + SIMD intrisics?

<comment><USER41> Memory.

</comment></comment><comment><USER42> Lots of people here are much deeper in key-value stores, Redis, etc. than I am. So, here I outline what I wrote for a key-value store for a Web server session state store long ago and am still using and ask for expert comments on any pros/cons.

So, for my Web site, (A) when I first send a Web page to a user, I send in the HTML of that page, in an encrypted, hidden field, a key that identifies the user's _session_. The data I want to keep on the user's session I make a _value_ and then write the key-value pair to my Web session state store; (B) when a user does an HTTP POST back to my Web server(s), I get the user's key and from my session state store get the value that is the user's session state. Each such value is just a byte array that is the serialized instance of my session state class, the instance particular to that user.

My session state store is just some simple .NET Framework software running as a Windows console application. The core of the store is just two instances of the standard .NET collection class, hopefully as fast as AVL trees (as in Knuth, _Sorting and Searching_ ) or red-black trees, IIRC, in Sedgwick. One collection class instance holds the key-value pairs. The other collection class instance holds for each key the time of the last access to the key-value pairs and is used to implement session time outs. The communications with the Web servers is just via simple TCP/IP sockets sending/receiving byte arrays.

The session state store is single threaded; so, there are no issues about, or efforts for, concurrency.

Then it would be good for the session state store to be sufficiently fast for the Web site and also to have a FIFO (first in, first out) queue of incoming requests. TCP/IP provides the desired FIFO queue, and, for the FIFO queue length, I'm setting that with just the standard option for TCP/IP.

So far, the session state store is all in main memory, but, of course, that memory might page as in virtual memory.

I'm guessing that there is more computing just for the TCP/IP than for the core of the session state store itself, i.e., the two collection class instances. If so, then as long as I'm using just TCP/IP communications, e.g., over my server farm LAN, the speed of the session state store code becomes a secondary issue -- the whole session state store operation as seen by the Web server(s) might not be much faster even if the session state store ran in 0 time. Maybe.

So far with my server farm software architecture, it should be easy to have as many executing instances of the session state store as needed for Web site performance and with no _user affinity_ between a particular user and a particular Web server. There would be affinity between a particular user and a particular session state store via whatever Web server instance the user most recently got assigned to via load leveling.

Q 1. Is there a fundamental and serious flaw in my design?

Q 2. Would Redis actually be much better for me?

Q 3. If my Web site becomes very busy and has me using, say, a full rack of servers just for session state store, should I look for a still faster way to do the work?

Q 4. Maybe solid state disks (SSDs) are now so fast that I should just program my session state store to use a solid state disk instead of main memory -- e.g., can get SSDs of several terabytes, and that much main memory would be much more expensive. Of course, this assumes that the LAN and software for the TCP/IP stack are fast enough that the performance bottleneck just the work on the collection class instances and that, even with the rest of the assumptions, and SSD would be fast enough -- sounds like a strange situation.

Q 5. Should I plan on using a 10 GBps LAN for communicating with a session state store? That is, might such a fast LAN significantly reduce the latency of the communications between the Web server(s) and the session state server(s)? Have the Web server wait less time for the read/write with the session state store might speed up the whole server farm. Anyone have any actual experience about such speeds?

Thanks!!

</comment><comment><USER43> Faster than the leading brand

</comment><comment><USER44> But is it faster than Aerospike or Tarantool?

<comment><USER45> Is it webscale?</comment></comment>


Monty Python at 50 - <AUTHOR> https://www.theguardian.com/tv-and-radio/2019/oct/04/monty-python-at-50-a-half-century-of-silly-walks-edible-props-and-dead-parrots <comment><USER3> "…strange references to things like exploding knees…"

It is highly likely (I just checked, it is 100% likely: [https://en.wikipedia.org/wiki/The_Goon_Show#Monty_Python](https://en.wikipedia.org/wiki/The_Goon_Show#Monty_Python)) that Monty Python were heavily influenced by The Goon Show, a BBC radio show released between 1951 and 1960. The quote from the article I called out would be completely at home in a Goon Show script.

For anyone who is a Monty Python fan it may be worth checking it out. I grew up listening to Goon Show re-runs on the radio or on CD and absolutely love them. Be warned though, as there is no visuals restricting the writers the shows are even more abstract than Python.

They are sometimes re-run on iPlayer, you can buy CDs (I think Amazon and eBay) and it is likely someone has "archived" the shows on the Internet somewhere.

<comment><USER4> John Cleese is currently on tour (aptly named "Last Time To See Me Before I Die") which is a sort of retrospective of his career and has said as much.

The other bit of it is that half the pythons worked together on a children's show (Do Not Adjust Your Set) and John and Graham Chapman were literally watching it one day and had the vague notion of pursuing shenanigans together. When they pitched Monty Python to the BBC they had... nothing. Somehow it was green-lit anyway.

So the lack of structure and imaginative child like absurdities were sort of built in.

<comment><USER5> Is there reason to think it's aptly named? From 5 years ago, same title: [https://www.youtube.com/watch?v=A_W1VF6Yj4w](https://www.youtube.com/watch?v=A_W1VF6Yj4w)

<comment><USER6> He's 79 years old. The average male life expectancy in the UK is 79.4 [0].

I mean, he's not unhealthy (as far as I know), but it's pretty common place for older folks to commiserate about their impending mortality.

[0]: [https://en.wikipedia.org/wiki/List_of_countries_by_life_expe...](https://en.wikipedia.org/wiki/List_of_countries_by_life_expectancy)

<comment><USER7> Life expectancy at birth isn't relevant to a 79 year old, though. The UK's life tables say a 79 year old male can expect to live another 9 years ( [https://www.ons.gov.uk/peoplepopulationandcommunity/birthsde...](https://www.ons.gov.uk/peoplepopulationandcommunity/birthsdeathsandmarriages/lifeexpectancies/datasets/nationallifetablesunitedkingdomreferencetables) ).

<comment><USER8> > Life expectancy at birth isn't relevant to a 79 year old, though. The UK's > life tables say a 79 year old male can expect to live another 9 years

This is one of my favorite examples when I have to teach statistics! (the other two being Monty Hall and the observation than outliers in a normal distribution depend mostly on the variance, and are essentially independent of the mean).

</comment></comment></comment></comment></comment></comment><comment><USER9> Anyone else noticed how much comic sensitivity changes? As a kid I thought python was hillarious, now it seems so tame and/or kinda boring (except the very best parts) -- seems like need more and more just to find anything funny.

<comment><USER3> Yeah, I noticed that too. I thought the whole lot was unbelievably funny back when I was a kid, now in the same boat as you.

</comment></comment><comment><USER10> Has anyone noticed that the Woody and Tinny Words sketch seems to have gone missing?

<comment><USER11> I definitely did. There must have been a huge copyright strike a few months ago, and some brave channels started reuploading the classics recently.

But no sight of the tinny sketch yet.

</comment></comment><comment><USER12> Truly revolutionary humor, top notch.

I can't wait for the pendulum to swing back the other way and make offending _everybody_ acceptable again, when done for the proper reasons.

<comment><USER13> By all possible measures you are _more_ free to offend people today than you were in Monty Python's time, not less. Remember the whole row when Life of Brian was released (nobody would bat an eye towards such "blasphemy" today), or that the word "masturbation" or swear words were censored.

<comment><USER14> I agree. As an example of just how offensive it was seen:

For Norway, Life of Brian represents the last time the country's anti- blasphemy law was used as justification for censorship (Life of Brian was not formally banned, but it initially did not get a classification, and so could not be shown in cinemas, at a time when there were few other options; it was finally granted classification about 6 months later). The law was finally repealed in 2015.

From the mid 70's until the law was struck off the Norwegian Heathen Society have periodically tried to provoke prosecution with the intent of triggering public opposition to the law, but they consistently failed to get the kind of reaction Life of Brian got.

Prior to that the last person affected was the poet/writer Arnulf Øverland, who in 1933 was charged (and acquitted) for the speech "Christianity – the tenth plague". The last conviction happened in 1912.

For something similar to happen again today would be near impossible - <USER2> the law was removed there had been cross party support for removing it for many years.

Of course that's one country, but similar secularisation has happened in large parts of the world, and I can think of very few parts of the world where the trend has gone in the other direction.

<comment><USER13> A funny story about that is that it was used in marketing by the pythons: "So funny it was banned in Norway!"

</comment></comment></comment></comment><comment><USER15> If you like Monty Python, and you own a Tesla, try naming your car after some of the characters, you mind find something hidden...

<comment><USER16> Care to enlighten us peasants who are Monty Python fans?

<comment><USER17> There are some videos on Youtube that shows the easter egg.

Worth it if you're a MP fan.

</comment></comment></comment><comment><USER18> Originally-proposed name: It's

</comment><comment><USER19> I liked Monty Python and the humor until I saw the final scene in 'the life of Brian'; couldn't find them funny after seeing that scene, as I used to remember that an awful lot of people died at the cross as a means of capital punishment, dying a slow and painful death. Didn't manage to swallow that 'Life's a piece of shit, When you look at it'.

<comment><USER20> You are 1900 years late with your complaint :)

In the first decades after the death of Jesus of Nazareth, the cross was not widely used as a symbol among Christians. Who wanted to be reminded of the humiliation of God's own son on the cross? It was the Christians (and their persecutors) that came after the first generations of followers who slowly turned it into a pop-art symbol (first in its abstract form, later with the shape of a human body on it)

<comment><USER21> > _Who wanted to be reminded of the humiliation of God 's own son on the > cross?_ For the Christians it was not a humiliation, but the moment of > triumph of Christ - he chose to be incarnated and sacrifice himself, that's > part of the whole point.

<comment><USER22> Sure that's how people think about it now. They were talking about how it was seen then.

<comment><USER23> I've always wondered what the christian world would look like if the Romans had hung jesus.</comment></comment></comment></comment></comment>


Distributed Hash Table Protocol (2008) - <AUTHOR> http://www.bittorrent.org/beps/bep_0005.html <comment><USER2> Since we're talking about DHT's, does anybody know what happened to OpenDHT? That had a lot of buzz and activity at one point in time, then just kinda disappeared.

And on the same note... is there a generally available, sort of "free for all" DHT system out there now? If not, what stops one from existing?

Just curious, as it seems like DHTs have lots of uses, but it seems redundant for every app that needs one, to re-implement their own DHT network.

<comment><USER3> You mean an open library? Or do you actually mean a unified DHT network, with many different applications all using the same network?

<comment><USER2> _Or do you actually mean a unified DHT network, with many different applications all using the same network?_

Yes, this.

<comment><USER4> router.bitcomet.com router.bittorrent.com

the latter runs: [https://github.com/bittorrent/bootstrap- dht](https://github.com/bittorrent/bootstrap-dht)

</comment></comment></comment></comment><comment><USER5> Anyone know of a good python or java implementation of Kademila DHT that this is based on?

Edit:

Found a list:

[https://en.wikipedia.org/wiki/Kademlia#Implementations](https://en.wikipedia.org/wiki/Kademlia#Implementations)

Would still like to hear your impressions if you have used any of them.

<comment><USER6> I've played around with openkad [1], but never got far enough to create anything meaningful with it. The authors implemented multiple distance metrics for more efficient lookup and distribution; these are described in [2].

[1] [https://code.google.com/p/openkad/](https://code.google.com/p/openkad/)

[2] [http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6...](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=6688703)

</comment></comment><comment><USER7> [https://www.youtube.com/watch?v=1eew8BngN7Y#t=3m14s](https://www.youtube.com/watch?v=1eew8BngN7Y#t=3m14s) might be interesting to some people.

</comment><comment><USER8> Er, this 2008 BEP is widely known and referenced and was updated in 2013.

Doesn't seem worth a post.

<comment><USER9> On other hand, it would be worthwhile if a reader had a paper for an alternative with better attributes. I wonder what the state-of-the-art is in these things.

</comment></comment><comment><USER10> Are there any experiments with incentivized distributed hash tables? eg. nodes could be paid bitcoin or something for servicing the network.

<comment><USER11> Enigma

[http://enigma.media.mit.edu/](http://enigma.media.mit.edu/)

[http://enigma.media.mit.edu/enigma_full.pdf](http://enigma.media.mit.edu/enigma_full.pdf)</comment></comment>


Robocalls are annoying, so this man is using Raspberry Pi to stop them - <AUTHOR> http://arstechnica.com/information-technology/2013/02/robocalls-are-annoying-so-this-man-is-using-raspberry-pi-to-stop-them/

<comment><USER2> Robocalls are evil!</comment>


Book Review: Winning Through Intimidation - <AUTHOR> http://www.kpkaiser.com/book-reviews/book-review-winning-through-intimidation/

<comment><USER2> Wow that was a long time ago. Fascinating read. However, the review is really too thin to do the book justice.

<comment><USER3> Indeed! One can also try the Amazon reviews, e.g. [http://www.amazon.com/Winning-Through-Intimidation-Robert- Ri...](http://www.amazon.com/Winning-Through-Intimidation-Robert- Ringer/dp/0449207862) ; the first one details how great a book on sales it is.

But to really get the flavor ... well, what about him entering a bank the minute it opens, dark suit and shades (in Florida perhaps?), with a check for at least $25,000 in today's dollars, cashing the check (which he knew the issuer would stop payment on, but he beat him) and stuffing the cash into his briefcase. This is a book both serious and funny, one that if you like will likely keep your interest which is not something I can say for the majority of business books.

I read it back when in came out in the '70s before I entered the real world and I think its advice was invaluable, even for an introverted scientist/engineer like myself who needs a day of recovery after doing my part of a sales call.</comment></comment>


Ask HN: Hackable external wireless SSD storage? - <AUTHOR> I've been looking at the Western Digital My Passport SSD Wireless devices with the idea of setting this up for a client for local server backup.
I already have the client setup for backup to remote storage (rsync.net) but for redundancy and speedier access in the case of an emergency I would like them to have access to a local backup.  However, through prior experience, I've learned that if any effort is required then eventually good practice stops.
So my thought is to have a small box that the user takes home (to avoid loss due to fire or other catastrophe at the office) and then at least once a week brings in to the office for the day and then takes home again.  The 'box' would automatically connect to the local wireless network and would be able to use something like rsync and would have access to the server necessary to make a full backup hopefully before the user leaves for the day. I'm thinking SSD is a better choice than a spinning disk for reliability while being carried around regularly.
A little research on the Western Digital wireless storage devices suggests linux is running underneath and that it is possible to enable SSH, login as root, and start hacking.
I guess my question is has anyone here actually done that and can you provide any additional details?  As far as I can tell this is not something that is officially supported by Western Digital.
Alternatively is anyone aware of a similar device (mostly closed box, rechargable internal battery, wireless accessible) that either has internal SSD storage or into which an SD card can be installed that also has a *nix filesystem underneath?
Access to a solid ZFS implementation would be a plus. <comment><USER2> This sounds over-engineered. Why not just setup something the user can leave connected to their home Internet connection and do the backups through there? In an emergency the user could simply drive home to get it.

If you're already thinking SSD, it's probably not that much data. Then they don't need to do anything other than set it up once. I think your plan of having them transport it to the office once a week has the same flaw you already mentioned (any effort needed on their part and it doesn't happen). And if they don't have to transport it, you can use an HDD and get a lot more space. Syncthing could handle the syncing.

</comment><comment><USER3> For the level of customization you're looking for, it sounds like what you're looking for here is called a "laptop computer"

Failing that, I'm pretty sure a few of the NAS brands support WiFi adapters being installed in to M.2 slots or USB ports. Couldn't help you with your battery requirement, but I'm not really seeing why it'd be useful in this application.

Personally, I'd just do it with a normal wired NAS if the only time it needs to be on a network is at the office. Have a defined station for it where there's always a wire and a power cord locked down. Hell, in a lot of cases a USB drive works just as well.

<comment><USER4> > For the level of customization you're looking for, it sounds like what > you're looking for here is called a "laptop computer"

Yep, and it also won't end up working how OP envisions.

Any backup solution that requires manual intervention(like weekly transportation and plugging in) is doomed to failure.

Since you are already using ZFS, setup your offsite NAS, replicate snapshots, and bring it on site for a restore. This way everything is set and forget.

You can use something like sanoid/syncoid to manage your snapshots and syncing. Setup email alerts on either side if there has not been a sync in a while, and setup the target to be a samba/nfs share with those services turned off. That way recovery is bringing it back on site and turning on the share.

</comment></comment><comment><USER5> So rsync.net is your cloud storage backup solution, and you also want something local that can be customized. But you want to...have the user carry it to and from work?

They'll never use that. That sounds incredibly annoying.

You've already got cloud storage. Add alerting for yourself if the user hasn't backed up within an acceptable period of time. Your user will always connect to the Internet wherever they are, so the backup will keep happening as long as you've set it up right.

Then, hook up a spinning USB drive to their laptop dock at work or whatever, and enable Time Machine/Windows Backup.

Anything more than that is:

1\. An indicator that the primary place for this important data to live on shouldn't be a portable workstation, it belongs on a well-engineered server in multiple data centers getting professionally backed up.

2\. Over-engineered and prone to break anyway

3\. Impossible to maintain once you stop being their provider

Finally, the most important part of backups besides backing up is to test your restoration solution. If you've never tried to restore your backup you don't really know that it's a backup at all.

<comment><USER6> "You've already got cloud storage. Add alerting for yourself if the user hasn't backed up within an acceptable period of time."

To wit: rsync.net has user-customizable "idle alerts" (or, inactivity alerts) that you can set at any threshold you like and which will generate any combination of emails, SMS, pushovers or webhooks.

"Then, hook up a spinning USB drive to their laptop dock at work or whatever, and enable Time Machine/Windows Backup."

... and although I am certain the OP knows this, just in case, let me point out that your .zfs/snapshot directory contains user-configurable "snapshots" of your entire account that are live, browseable and _immutable_. So whatever you set up with Time Machine, you can set up in your rsync.net account with ZFS snapshots.[1]

[1] By default, 7 daily, but configurable to any combination of days/weeks/months/quarters/years ...

</comment></comment><comment><USER7> I've made a rather hacky system that I carry everywhere, and allows up to 1 TB of backup in my pocket. It's not SSD-based though, it's only SD card, so it's slower. For backups I don't really worry though, because the incremental size is small.

I've got a SanDisk 512 GB SDXC card, into an SD female to microSD male ribbon, into a PQI Air Card (same firmware as Transcend, hackable with Ubuntu [1]), into an iFlash Dual, into an iPod 5.5G.

Usually I just use it for listening to music, but I can also use it as an SD- to-WiFi adaptor. Airport security thinks it just looks like a normal iPod.

Photo on Reddit. [2]

[1] [https://dmitry.gr/?r=05.Projects&proj=15.%20Transcend%20WiFi...](https://dmitry.gr/?r=05.Projects&proj=15.%20Transcend%20WiFiSD)

[2] [https://www.reddit.com/r/ipod/comments/9ldj8g/wipod_ipod_vid...](https://www.reddit.com/r/ipod/comments/9ldj8g/wipod_ipod_video_as_an_sd_cardtowifi_hotspot/)

</comment><comment><USER8> If you want backups from one system to another, I've been really impressed with Resilio Sync, which is commercial software, and Syncthing, which is open source. They've both got win/Mac/Linux/iOS/Android ports, and don't require either the client or the server to have publicly available ports open.

Odroid makes a couple "home cloud" variants of their single board computer, which lets you plug a 2.5" SSD (or a larger variant that support 3.5" spinning rust) into a SBC mounted onto a solid aluminum heatsink. [https://www.hardkernel.com/shop/odroid-hc1-home-cloud- one/](https://www.hardkernel.com/shop/odroid-hc1-home-cloud-one/)

You'd run Ubuntu server on the odroid, so BTRFS and ZFS would be available.

Whenever the odroid was powered up and had network, the sync client would connect and send deltas.

Disclaimer: I don't have any financial interests in the above companies. In building PhotoStructure, though, I get asked frequently how to back up photos and videos on people's smartphones, and personally needed a solution that could come with me and my family on trips, and also run PhotoStructure locally on the odroid. This is the setup we use. BTW: It's super convenient to sync at 50mb/s even when your internet WAN speed is something abysmally slow and has high packet loss.

</comment><comment><USER9> You don't say anything about the client machines but in general I'd very much avoid trying to reinvent the wheel especially for critical systems like backups. It's hard enough to do right so adding another layer of hacked and glued together software is not what you want.

Can't you use Carbon Copy Cloned or TimeMachine and set them to start the backup as soon as the disk is attached? Just add a calendar event to notify the user to bring the disk home from time to time.

</comment><comment><USER10> Wrote this up some time ago, might suit your needs: RPi based encrypted ZFS mirror on external storage.

[https://github.com/hughobrien/zfs-remote- mirror](https://github.com/hughobrien/zfs-remote-mirror)

<comment><USER11> +1 for the Pi.

I'm in the middle of tweaking BackupPC [1] on Slackware in one of these so it will regularly pull updated files from the handful of Windows machines, and ransomware won't be able to know it exists. The only thing on each Win box is a cygwin-powered rsync daemon; it doesn't need write access to any outside filesystems or services.

In the back of my mind, I think it could be used to set up a sort of tripwire for the presence of ransomware-- lots of files would be changed in a short time (unless said RW also decrypts them all silently and transparently on access, until the time comes to drop the ax on you-- that would only defeat the tripwire and most if not all of the files would be still saved in old backup sets anyway). Since it only stores identical files once, the change in space required for a single full backup will suddenly jump, and all you'd need is one automated email alert like the others.

Sorry that the thing doesn't actually do its job yet and I haven't likewise written anything up :(

[1] [https://backuppc.github.io/backuppc](https://backuppc.github.io/backuppc)

<comment><USER11> At the same time, there's a 'hosts allow' directive with the Pi's IP in the rsync config stored on each Win box, so it's not really invisible. Also, someone _might_ save the password to the BPC web frontend in their browser, so a sufficiently clever RW _could_ still wreck everything here. I hope it's just that the web server needs some 2FA/OTP.

</comment></comment></comment><comment><USER6> We (rsync.net) are happy to ship you a bare SATA drive with any or all of your account on it. It's a standard part of our offering and we do it all the time[1].

No funny business - just our actual cost for the drive + our actual fedex costs + $150.

So that's one option.

The second thing that comes to mind is that, as you already know, _any_ tool that runs over SSH/SFTP will connect to your rsync.net account. So, in a pinch, you could just use our drive mapper (or filezilla or WinSCP or sshfs on Mac or whatever) and let the client poke along at WAN speeds for a day or three.

Finally, I disagree with some of the comments that suggest this is overkill or unnecessary - I think it's a decent line of thought - but why not just add a line item to your clients' bill for "local DR service" and just dump the rsync.net account _back to yourself_ on any old drive that you control and if there is indeed a catastrophe you just drive it over there ?

Happy to discuss this further over email, etc.

[1] Almost always for DR drills - thank goodness ...

</comment><comment><USER12> Checkout CrashPlan for Small Business. You get unlimited versioned storage for $10 a month, and you can backup to multiple devices as well if you want to setup an offsite backup, like a home computer or laptop. I personally run it in a Docker image (which can be used with Synology or unRAID), since I use Linux for my desktop:

[https://hub.docker.com/r/jlesage/crashplan- pro/](https://hub.docker.com/r/jlesage/crashplan-pro/)

</comment><comment><USER13> I too was looking at the My Passport drive and although it does seem to be hackable I decided to go a DIY route. Primarily I just didn't want to have to keep tinkering with software and likely compiling from source constantly. I also wanted the ability to encrypt the volume and there was no clear path to doing that on the My Passport.

My use case is slightly different than yours though. My goal is to make a travel portable NAS. I can connect SD cards, any wireless device, or any USB device. I have access to my media on my server but public/hotel WiFi can make accessing video a pain. I'm editing on an older iPad that is storage limited as well. I just wanted to be able to have local copies of media accessible over WiFi for use on phones/tablets.

My solution was a NanoPC-T4 with a 1 TB m.2 SSD. Using hostapd it acts as a hotspot and using samba it shares files. My todo list includes adding encryption and a web interface for configuration as well as some kind of battery power.

Anyway, from what I've gathered playing with all of this, a single board computer with storage might cover your needs. The battery aspect doesn't seem to be a requirement in your case so just setting up a board would be easy.

</comment><comment><USER14> >Alternatively is anyone aware of a similar device (mostly closed box, rechargable internal battery, wireless accessible) that either has internal SSD storage or into which an SD card can be installed that also has a *nix filesystem underneath?

I am not sure to understand the rechargeable battery requirement.

I mean, the thingy needs to be connected to mains anyway to recharge the battery and - before or later - it will happen to exhaust the battery mid- backup.

Personally I would either get a "normal" UPS (that stays always in the office) and connect to it any of the "common" mini-pc's, sometimes called "brick pc's", like (example only) the Ibtel NUC's:

[https://www.intel.com/content/www/us/en/products/boards- kits...](https://www.intel.com/content/www/us/en/products/boards- kits/nuc.html)

But really, why do you want to carry with you BOTH the data AND the hardware?

Once upon a time those kinds of backups were made using ZIP disk, there was a "backup" machine on the network with a ZIP drive and what was carried home at night was just the ZIP disk (at the time the policy was "integral" backup every two days and there were three disks, labeled "Monday", "Wednesday" and "Friday" \- and yes, all the non-replaceable data did fit into 100 MB).

Nowadays all you need is either a USB disk in a case or a "cartridge like" disk, example:

[https://www.addonics.com/category/removable_drive_system.php](https://www.addonics.com/category/removable_drive_system.php)

</comment><comment><USER15> Datto, StorageCraft, Veeam, others have offerings that would allow you to have an on-site backup appliance that replicates to your own cloud or someone else's. I know Datto provides actual physical appliances, their lowest-end model is a NUC-like thing that they basically give away with their service.

For something more roll-your-own, Urbackup's commercial offering can replicate between appliances or to AWS / Azure. Free for up to 10 clients and 20TB.

[https://www.infscape.com/2019/03/07/community-edition- free-f...](https://www.infscape.com/2019/03/07/community-edition-free-for- commercial-use/)

</comment><comment><USER16> I do love the technical parts of the discussion here but do allow a slightly different perspective: You say it is for a client and you (presumably) can bill the client for this extra service. That being the case, aren't you better off using a commercial solution like others mentioned below (CrashPlan/rsync etc) and _charge_ the client for the same? This way you have a level of support and accountability than being liable for everything that can go wrong with the hacks.

I would, of course, encourage your quest for a hackable Wireless SSD for your personal projects :-)

</comment><comment><USER17> I'd stay away from things like drive-producer-specific solutions. There are many NAS solutions which will take any drives and support raid configs. For simple setup, check what can you run FreeNAS on. For very cheap, custom solution, have a look at something like odroid-hc1.

</comment><comment><USER18> I would look into pcengines. It has everything you have described (or a port to plug it to) except for the battery. This is my go-to device for anything specialized (router, backup).

</comment><comment><USER19> Raspberry pi with openmedia vault or with Nextcloud. Easy to setup, update.</comment>


DirecTV: Apple TV won't "obsolete our technology" - <AUTHOR> http://gigaom.com/apple/directv-apple-tv-wont-obsolete-our-technology/ <comment><USER2> Palm CEO Ed Colligan discussing Apple's imminent release of the iPhone in 2006:

      Responding to questions from New York
      Times correspondent John Markoff at a
      Churchill Club breakfast gathering
      Thursday morning, Colligan laughed off
      the idea that any company — including
      the wildly popular Apple Computer —
      could easily win customers in the
      finicky smart-phone sector.

      "We've learned and struggled for a few
      years here figuring out how to make a
      decent phone," he said. "PC guys are not
      going to just figure this out. They're
      not going to just walk in."

<http://daringfireball.net/2006/11/colligan_head_stuck>

</comment><comment><USER3> I bet that's exactly what Blackberry thought right before the iPhone came out, too. Not saying it will be that level of game changer (or that it even exists), but I think we've seen incumbents are notoriously bad at predicting when a new technology or competitor is about to take their business away from them.

<comment><USER4> It's probably also what Sega and Sony said before Pippin[1] came out.

I think there is room for a game change. From the juggling of remotes, to the horrific user interfaces[2], and just plain broken device interfaces[3]. The industry tolerates user abuse.

EOM

[1] <http://en.wikipedia.org/wiki/Apple_Bandai_Pippin>

[2] Toggling subtitles in less than 18 remote presses would be a nice feature. I'm looking at you AT&T.

[3] If I have had the same TV plugged into the same DVR for 2 years, it probably should stop choosing random resolutions and aspect ratios and just stick with the one I move it back to three times a week. Also 10 seconds seems like a long time to switch from one HDMI input to another. Audio that is synchronized to the picture, like in 1950, would be pretty cool too.

</comment></comment><comment><USER5> AppleTV is a middle of the row product in the set-top space in terms of software. Perhaps they have been holding back and now have something revolutionary. Who knows.

It would take a blow-me-away type of product for them to truly crack open this industry. In away where they could force the hand of cable companies like they did with AT&T. So it's going to be interesting to see what this hype is all about.

<comment><USER6> They aren't directly forcing the hand of cable tv companies, which is quite clever, imho.

We, the Developers will be tasked to do that with our content and that starts whenever they introduce APIs, likely to be this year's WWDC. Once we've built out Apps in the AppleTV app ecosystem, the consumer demand will follow.

The TV Channel/Show/Content is now an on-demand App. This will all coalesce slowly as people continue to unplug and switch over via internet as content is made available. I don't want to make any predictions about the AppleTV box vs iPanel but my guess is that both will coexist - with AppleTV box offering the best UX within its bubble while the iPanel will offer a more integrated comprehensive experience. Both utilize the same App ecosystem.

Apple has been laying the foundation for a while. Download the iOS remote control, play with any of the AirPlay functions, the regular tweaks to AppleTV's OS, etc... It's all right under our noses.

<comment><USER5> Who are "we the developers" in this scenario? This has already been played out on other platforms. Vimeo, Revision3, etc. will jump at the chance of reaching AppleTV devices but CBS, ESPN, AMC, etc. will not.

<comment><USER6> Your background is primarily in Chrome and Android - are you sure your reply to my post isn't biased?

I use that term to include anyone who develops for the iOS platform and wants to develop an App for AppleTV. Feel free to take yourself out of that.

How do you know that Apple hasn't created new parterships for their upcoming efforts? Do you have AppleTV? Have you noticed a slow growth in subscribing to new content? You can even purchase it In-App if you'd like.

There's many different potential ways to challenge the incumbent Cable TV business model. Don't assume that top-tier content producers are not interested. By the looks of what I'm seeing on AppleTV today, they are slowly coming on board.

<comment><USER5> You are mistaken on my background, and I have no preference on whether future Apple TVs succeed or fail.

What are you seeing on Apple TV that suggests that cable channels are going to embrace an alternative to cable?

</comment></comment></comment></comment></comment><comment><USER7> Netflix was really close to disrupting Cable TV. Unfortunately, the cable providers and satellite providers can pay more to the content producers. I imagine that Showtime left Netflix because they realized the cable fees brought in more cash. Someone is going to have to show Internet distribution will result in more profits.

DirecTV's technology is already obsolete to be honest. Their ability to make changes is so slow.

</comment><comment><USER8> DirecTV: Apple TV won't "obsolete our technology".

Maybe, maybe not but they will obsolete your customer base.</comment>


Review of GPS assisted quadcopter drone, with crash - <AUTHOR> http://arstechnica.com/gadgets/2014/06/flying-and-crashing-a-1300-quadcopter-drone/

<comment><AUTHOR> This would be awesome if mounted with a double camera and using Oculus Rift for the display. Probably the closest you could get to being able to fly :-)</comment>


Google Versus Others - <AUTHOR> http://daringfireball.net/2013/05/google_versus

<comment><USER2> Another pontification from Saint John: "They want everything; their ambition is boundless."

I fail to see how is this different from other big players: Facebook, Micrsoft, Amazon, or even Holy Apple: each wants a piece of the action, and each is prepared to fight for it to the best of their abilities.

Apple used to sell PC's. It now also sells smartphones, tablets, music, movies, e-books, and cloud services. Apple too has entered existing markets and has crushed (or tried to crush) smaller competitors when it served its interests.

There's nothing wrong with this, just please spare us the condescending tone. Google does some great things, Google does some shitty things, just like everybody else ( _and_ Apple).

<comment><USER3> Larry shouldn't complain about being pitted against other companies when Google is the one copying successful products/services so they can put ads all over them and release them for free.

</comment></comment><comment><USER4> "Be the first or be better."

Still, Google has pioneered a lot of concepts, some failed, some we take for granted now, while others are invisible to most people as they are too technical.

For instance: search was not new but better because PageRank was new.</comment>


Japanese KitKats Are Replacing Plastic Packaging with Origami Paper - <AUTHOR> https://mymodernmet.com/kitkat-origami-packaging-nestle-japan/ <comment><USER2> KitKats always used to come with metal foil (not plasticised) and a paper covering. I remember making small squares out of that paper and making origami models.

[http://www.heatspaceandlight.com/wp- content/uploads/2019/04/...](http://www.heatspaceandlight.com/wp- content/uploads/2019/04/Kitkat-original-in-foil-and-paper.png)

<comment><USER3> Is that the case in all markets? Japan, from all I hear, tends to wrap products in a lot of unnecessary plastic, so I wouldn't be surprised to learn that Japanese KitKats are wrapped with plastic to align with Japanese consumer expectation. Given that the article quotes a specific amount of plastic that Nestle is expecting to save though this substitution, I'm almost certain that their packaging is currently plastic.

<comment><USER4> Japan has a strong gift culture, many things come wrapped in many layers for the purposes of gifting. I think plastic bags containing individually-wrapped- in-plastic items come from this idea: you can give someone a single item without worrying about contamination from unclean hands. Hi-chews are a good example of this.

I remember buying a few items at a department store in Japan and the clerk individually wrapped each item in paper, then wrapped all the items together in paper, then put it all in a paper bag.

They extensively use a 'heavy tissue'-like paper to wrap many items. A decorative plate I bought as a gift for my grandfather was wrapped in about 20 sheets of this paper. Great protection, but it did feel a little wasteful.

<comment><AUTHOR> The worst part is most of this packaging is really high quality - I've reused paper bags and what not endlessly, it'd take ages for the stuff to fall apart. Mottainai.

</comment></comment></comment></comment><comment><USER5> Sony's Clie PDAs back in early–mid-2000s came with a CD in a paper tray- package. It was a thin box of sturdy paper, the size of a 'jewel' case, but from a side of it slid out a tray, also of paper, with the disc on it. And it didn't come out all the way but was held by something inside. I realized then that Japan treats its papercraft seriously.

</comment><comment><USER6> Does anyone have any data on when candy bars started switching to plastic from the foil and gloss paper method? I'm 25 and have some hold outs on the very edge of my memory.

<comment><USER7> The change was to "flow wrapping", and its mostly about the speed on the production line.

But there's an interesting piece on the change here: [https://www.huffpost.com/entry/why-is-chocolate-rarely- w_b_4...](https://www.huffpost.com/entry/why-is-chocolate-rarely-w_b_4099561)

</comment></comment><comment><USER8> I once bought a small Meiji chocolate with absolutely brilliant carton packaging. It looks like this:

[https://www.oyatsujiten.com/x/wp/wp- content/uploads/2019/04/...](https://www.oyatsujiten.com/x/wp/wp- content/uploads/2019/04/mc_stic.png)

The part where it says "open" can be opened and closed many times with a satisfying snap into place. Definitely recommend grabbing one if you see it somewhere.

</comment><comment><USER9> So Cool! I am envious of all the varieties of Kit Kat available in Japan. Take that, Plastic Vortex in the Pacific!

</comment><comment><USER10> slightly off topic, the black kitkat, those are dark chocolate kitkats?

The green packaged one is for sale now here, but now i learned there is a black one. (which they dont sell at our local supermarkets)

<comment><USER11> Japan has dozens or maybe even hundreds of different Kit Kat flavors that cycle into and out of production over the seasons.

<comment><USER12> I just found sweet potato and chestnut flavored versions on Amazon.

</comment></comment></comment><comment><USER13> its fine if the product is superior (paper straws aren't to plastic ones). i wonder how this will handle melted chocolates. I guess as long as it does degrade when that happens.

<comment><USER14> All candy used to be wrapped in paper, including Kit Kats. They will be fine.

<comment><USER15> I remember them being wrapped in foil and the foil was wrapped in paper. The paper would not have been in contact with the chocolate.

</comment></comment></comment><comment><USER16> What makes paper "origami paper"?

<comment><AUTHOR> Tried to find some source in Japanese - it seems like it's just ordinary paper actually:

[https://www.asahi.com/articles/ASM8144JVM81PLFA006.html](https://www.asahi.com/articles/ASM8144JVM81PLFA006.html)

Also will initially be applied to only 30% of the Kit Kats sold in Japan (5 types), they will change the packaging for the rest by 2022.

</comment></comment><comment><USER17> origami paper... and microplastics?

</comment><comment><USER18> This is only popular here in HN because of japan. A lot of countries have used non-plastic paper for ages. But the ah always so mysterious japan makes it seem so interesting.

<comment><USER19> It really doesn't seem necessary to rip on people for being interested in things.

<comment><USER20> I don't think they're ripping on people. It's a fair point that this makes the front page because people on HN love stories about Japan.

Try searching HN for titles with "Japan" in them vs. for example, nearly any African country.

<comment><USER21> So weird that there's more tech news from a country that has an enormous tech industry than from countries where people have to spend their time dealing with famine, tribal wars and preventable diseases.

<comment><USER20> HN in a nutshell lol.</comment></comment></comment></comment></comment>


The curiosity killed the cat - <AUTHOR> http://blog.sucuri.net/2009/08/curiosity-killed-cat.html

<comment><USER2> I bet those text-based browsers aren't subject to the same level of security audits as the more popular ones. I hope they're sandboxing said browsers properly...

<comment><USER3> In our case, we audited and were very careful with the data... Who knows what other sites are doing. A funny note is that since I published that article, the number of attempts increased :)

</comment></comment><comment><USER4> "We took the approach to htmlspecialchars() every single GET/POST variable even before processing them."

Didn't PHP magic_quotes prove that that is a really bad idea?

<comment><USER3> PHP magic_quotes proved that doing that by default for every application is a bad idea. Plus, lots of developers weren't even aware of that...

In the case of our specific tools (with some limited user input), it worked great.</comment></comment>


Tutor who helped students cheat by keylogging teachers gets 1 year in prison - <AUTHOR> http://arstechnica.com/tech-policy/2015/08/tutor-who-helped-students-cheat-by-keylogging-teachers-gets-1-year-in-prison/ <comment><USER2> This is exactly what happens when you value grades more than actual skill.

Such things are also happening at my university, we just have some "secret" places (Dropbox, some FTP) where sometimes Exam Material shows up. Nobody knows who does it and nobody says a thing. And even worse, im pretty sure some lecturers are aware of it and accept it silently.

<comment><USER3> I think this is exactly right. People conflate the "grade" with the "understanding". I once asked a high school student if he could "hack" his way into computer and have it print out credentials as a neurosurgeon, a job that pays really well, and he got a job at a hospital and was asked to operate and killed someone, would that be worth it? For what?

His parents kept telling him he needed "good grades" and I suggested that what he needed was "good understanding" the grades would take care of themselves.

</comment></comment><comment><USER4> Why do these people always _change grades_?

That's just pathetically stupid. I know what grades I gave my students. If you alter that, I'm going to know.

If, however, you are looking at test material ahead of time, it's going to be _much_ harder to notice.

</comment><comment><USER5> Seems a just sentence. Long enough of to hurt but too long that it is pointless punishment.

<comment><USER6> This is ridiculous. One year in prison is madness for such a thing.

One year in prison probably means that this guy is never going to complete his career (I assume he was a tutor at some university while studying there). He won't get a job afterwards. This essentially destroys his life.

Not even considering what may happen in crowded prisons.

So no, IMNSHO this is not "a just sentence".</comment></comment>


Ask HN: Facebook Account Disabled - <AUTHOR> Not sure if anyone has the answer but I had a bunch of emails from Facebook today asking whether or not I requested my password to be reseted. Of course I didn't.
Just to be sure, I decided to add my mobile number to my account to add two-step verification. As soon as I added my number and verified the PIN they texted, my account was disabled and they requested I upload a government ID to prove who I was and requested that I do a social verification with a bunch of random photos to verify my friends.
I'm confident I got 100% of the tagged photos right but it keeps going in an infinite loop even though I finish tagging everything correctly (5/5 each time). Eventually it said I exhausted all my verification, essentially getting me nowhere.
I took a picture and uploaded my ID but I'm curious how long this process actually takes and why my account would be flagged by adding my number (a number I previously had on my Facebook account before).
Anyone who works at Facebook or dealt with this knows? As of right now my entire account is disabled and even a friend looking me up can't access my page or anything. This also means I can't access messenger or anything else utilizing my FB login. <comment><USER2> Facebook does this to people sometimes. They usually think you have a fictitious name or used someone else's identity.

Chances are that someone hacked your account as well if you had a password reset that you didn't make.

Trying to verify your friends is hard because some of them don't use their face in their profile pictures but use some other picture instead. Also some people add users that they don't know for the games and sharing gifts each day.

[https://www.facebook.com/help/185747581553788](https://www.facebook.com/help/185747581553788)

Reasons for disabling an account:

Continued prohibited behavior after receiving a warning or multiple warnings from Facebook

Unsolicited contact with others for the purpose of harassment, advertising, promoting, dating or other inappropriate conduct

Use of a fake name

Impersonation of a person or entity, or other misrepresentation of identity

Posting content that doesn't follow the Facebook Terms

Facebook doesn't even give you a warning sometimes. Chances are someone reported you for some violation.

<comment><AUTHOR> I would agree if any of those applies but I almost never post anything. I post maybe a dozen times in a year on my FB, and everyone on my friends list should know who I am rather than report me (my feed shouldn't be public).

That said, whoever tried to reset my password didn't succeed as far as I know. My name is quite common so I doubt it comes off as a fake name. My account is old, so I can't imagine the reason being flagged for misrepresentation or impersonation, especially since I don't even proactively post stuff.

I use FB mainly to connect to chat on messenger, follow up on my news feed, and connect to some accounts that uses FB login. Nothing in recent memory other than adding my phone for two step verification could have possibly trigger this but could be something I am over looking.

At this point I just want to know how long this is going to continue. Thanks for the heads up though.

<comment><USER2> I can't say how long it will continue or if they will restore your account.

Facebook has no tech support phone number. So you can't call them and ask.

I have a real name that is shared with 300+ men in the USA. Have firstnamelastname at gmail.com and they give that address to people who write me instead. They forget the letters and numbers. They even try to reset my password and sign me up to different services. I use a different email for Facebook. If you have an email like that, possibly one of them claimed it was their email and Facebook account and tried a password reset and then filed a claim the account was hacked.</comment></comment></comment>


$14 Steadycam The Poor Mans Steadicam - <AUTHOR> http://www.cs.cmu.edu/~johnny/steadycam/ <comment><USER2> Its been there for last 5yrs or more. But why this on Hacker news?</comment>


Solar and Wind Just Passed Another Big Turning Point - <AUTHOR> http://www.bloomberg.com/news/articles/2015-10-06/solar-wind-reach-a-big-renewables-turning-point-bnef <comment><USER2> This is really exciting news. I'm not saying this from the prospective of a victory for capitalism and the market but as a hope that these 'alternative' energy sources will be standard energy sources. But it is nice when the market can make something good happen.</comment>


Wal-Mart Returning To Full-Time Workers - <AUTHOR> http://www.forbes.com/sites/rickungar/2013/09/25/wal-mart-returning-to-full-time-workers-obamacare-not-such-a-job-killer-after-all/1/ <comment><USER2> I was surprised to see this in Forbes but the author says _" I write from the left on politics and policy."_ and _" I am a Senior Political Contributor at Forbes and the official 'token lefty,' as the title of the page suggests. However, writing from the 'left of center' should not be confused with writing for the left as I often annoy progressives just as much as I upset conservative thinkers."_

I applaud Forbes for having opposing viewpoints and also applaud the author for defending himself vigorously in the comment section from the more conservative readers. A good time was had by all as far as I can tell.

<comment><USER3> It's Forbes, they have thousands of "contributors" and their site is nothing but a shell of blogspam now.

Make no mistake, there is no editing going on.

<comment><USER4> This isn't completely true. Rick Ungar is an actual published writer with a nontrivial history (most of it outside of politics--he was head of Marvel Productions for a while). He appears on Fox News--such as that is--programs as the token liberal.

</comment></comment></comment><comment><USER5> My favorite bit in the whole article:

"[Walmart] now hires people to work with its employees to help them sign up for Medicaid ..."

So Walmart cares about the health of it's employees, just not enough to provide them with a reasonable health care option.

<comment><USER6> > So Walmart cares about the health of it's employees, just not enough to > provide them with a reasonable health care option.

Walmart is not a person. It does not care one way or another. Not because it's evil, but because it's not a person. It can't care. About anything.

This entire "don't be evil" crap has really got to stop.

Corporations respond to incentives, not moral arguments.

If we, as a society, have decided that we want employers to completely provide for the health of their employees, that's fine. We should make laws requiring them to do so, with penalties in tow for non-compliance.

But please stop the entire "they just don't care!" crap. They're not supposed to. They're corporations, not people.

And yes, I know people run those corporations. Those people have fiduciary responsibilities to their stockholders, not to your moral compass. This is something resolved on a societal level, not on the corporate level.

<comment><USER7> Then shouldn't Costco cut all of its employees salaries by half? They are a publicly traded company as well you know...

<comment><USER8> I think the whole point is that "should" and "shouldn't" simply aren't very useful concepts when dealing with corporations, like talking about what a slime mold should or shouldn't do. Getting morally outraged at WalMart is like getting really indignant about what plantar fasciitis is up to. Individuals will respond to moral accusations, but corporations are really only effectively controlled via legislation.

<comment><USER9> > _Getting morally outraged at WalMart is like getting really indignant about > what plantar fasciitis is up to._

Except plantar fasciitis doesn't have a CEO, board or steering committee. Or a public reputation.

> _but corporations are really only effectively controlled via legislation._

That's true, but it doesn't mean we can't publicly shame corporations when they act in bad faith. Incorporation is not some magical get-out-of-ethics- jail-free card.

</comment></comment></comment></comment></comment><comment><USER10> NOTE! The submitter linked to the second page of a two page story. For those who want to start at page 1, try this:

[http://www.forbes.com/sites/rickungar/2013/09/25/wal-mart- re...](http://www.forbes.com/sites/rickungar/2013/09/25/wal-mart-returning-to- full-time-workers-obamacare-not-such-a-job-killer-after-all/1/)

<comment><AUTHOR> Oh my gosh, I could have sworn I was on the first page.

Sorry about that.

</comment></comment><comment><USER11> Oh, you mean when I can't buy things because they aren't on the shelves because there's nobody available to move them from the loading dock to the shelf, and I don't want to shop there anyway because the entire store is in disarray because there aren't enough employees to clean up the products that sales might drop?

<comment><USER12> On the other side of the coin, there also aren't enough employees to stop shoplifters and it's policy that they can't really challenge them anyway.

</comment></comment><comment><USER13> The author claims that shelves weren't being stocked because the employee mix had been shifted towards part-time workers.

OK, accurate or not, it says nothing at all about the total number of available 'worker-hours' just that the full/part-time mix had changed. It simply doesn't follow logically that there would be a shortage of labor just because the mix changed.

<comment><USER14> Is it possible that full-time workers would be more experienced and/or better motivated, resulting in increased productivity per worker?

<comment><USER15> They treat employees like crap and pay them as little as possible. Thus they get exactly what they pay for; sullen workers who do the bare minimum not to get fired.

</comment></comment></comment><comment><AUTHOR> >Wal-Mart's competitor, Costco, a company that experienced a 19 percent increase in profits in Q2 2013 while paying its employees 40 percent more on average (the average Costco wage is $21.96 per hour) than what a Wal-Mart worker can earn. In that same quarter, Wal-Mart numbers revealed the company is going nowhere fast given its current state of operations.

>the availability of a store clerk to get to the rather critical job of moving the merchandise from the box to the shelf where a customer can actually purchase it. But when there are insufficient numbers of store clerks available—due to Wal-Mart's commitment to using temporary workers or busting its full-time employees down to part-time so as to avoid worker benefit—the products Wal-Mart sells stay off the shelves and unavailable for customers to purchase.

</comment><comment><USER16> Some parts of this article may be correct, however this:

"For anyone who has not been following the Wal-Mart saga, sales have been sinking dramatically at the retailer as the company has turned to hiring mostly temporary workers"

... is simply wrong. Sales (from the '13 annual report):

FY09: $401b | FY10: $405b | FY11: $419b | FY12: $444b | FY13: $466b

Sales are sinking dramatically at the retailer? At best that's ignorance, at worst a sensational lie.

<comment><USER2> Sales are up around the world. He is referring to U.S. stores that are affected by domestic health care law changes.

[http://online.wsj.com/news/articles/SB1000142412788732354920...](http://online.wsj.com/news/articles/SB10001424127887323549204578317782804145490)

</comment></comment><comment><USER17> "In fact, Wal-Mart's unwillingness to pay most of their workers a livable wage"

Wal-Mart is paying their workers what the market will bear. In fact, it can be argued they are paying MORE than the market can bear, since they have 25 applicants for every opening.</comment>


Hard drive encryption on a server is nothing more than useless – Network World - <AUTHOR> http://www.networkworld.com/article/2236960/cisco-subnet/hard-drive-encryption-on-a-server-is-nothing-more-than-useless-.html <comment><USER2> I guess this was written in a pre-Snowden world.

> if you have servers at your datacenter that are inside locked server racks > growing legs and walking out - you have much bigger problems to solve.

Yes, and that problem is solved by encryption!

<comment><AUTHOR> But even Snowden accessed the data via an API. He didn't (at least I don't think) he walk into a server and start pulling drives. He went through various tools to get to the data.

At that point full disk encryption was pretty useless. The drive would be mounted and opened.</comment></comment>


Propster - tip jar system for stuff that matters - <AUTHOR> https://propster.me/browse/main

<comment><USER2> From the FAQ:

"Most other project owners have neither authorized nor are aware that a tip jar is allocated for them on this site."

Hmmmm… That's requiring quite a leap-of-faith that Propster will eventually "do the right thing" with any money "sent" via them.</comment>


Ask HN: Would you share your story of a failed startup, please? - <AUTHOR>

I am working on a new project. I think it could be of interest for the public. It's a place where you can share your story about your failed startup. It will be a detailed review of the project from its start to its end. There is a good approach to think that there is no bad experience. You are not a loser if you have a startup that didn't pay out with money or success. You with your experience can be a more valuable professional than the one who never faced all the hurdle of developing and promoting a startup. More than that, if there are only fewer than 10% of startups take become successful, why there is so little information on the remaining 90%? Together we can fill in this source providing images, statistics, interviews, images. It can then help new entrepreneurs make their decisions more wisely as well as it will make the whole image of startups life clearer.  I have almost done the design and coding of the site. I have more ideas for this site to implement when I start it. I would like to hear from you if you have your story to share. And another question to everybody - would you be interested in getting valuable information on this topic? If you would like to contact me directly, please do that over email: firstname.lastname@example.com Any ideas and suggestions are appreciated! <comment><USER2> We compiled a list of 25 post-mortems which may be useful: <http://www.chubbybrain.com/blog/startup-failure-post-mortem/>

We also analyzed all the post-mortems to identify the top reasons for failure. That is here:

[http://www.chubbybrain.com/blog/top-reasons-startups-fail- an...](http://www.chubbybrain.com/blog/top-reasons-startups-fail-analyzing- startup-failure-post-mortem/)

Hope that is helpful. Best of luck.

<comment><AUTHOR> I have reviewed links. I am sure they will help me with this work. Thank you!</comment></comment>


Mysterious JavaScript results in iOS Safari when eval'ing Object? - <AUTHOR> https://stackoverflow.com/questions/48121880/why-does-1-infinity-1000-infinity-0-nan-1-infinity-2-nan-1000 <comment><USER2> The third example in the screenshot is quite illustrative: It appears to be trying to optimise the object into an array, but accidentally exposes extra indices/elements.</comment>


OpenSCAD - The Programmers Solid 3D CAD Modeller - <AUTHOR> http://www.openscad.org/ <comment><USER2> I've been using OpenSCAD for personal projects for a couple of months, generally preparing models for 3D FDM printing. I'm a mechanical engineer by profession and a certified Solidworks professional. I'd estimate that designing in OpenSCAD - as in, modelling something up and iterating on the design as my understanding of the application develops and prototypes are trialled - takes me four to fives times as long as using commercial parametric 3D CAD that I'm already familiar with.

That's not a damning critique, but it is something I'd advise a friend or colleague who had a project to get on with. I'm still highly positive about OpenSCAD, because of its openness, its versatility, and the potential for using great programmers' tools (library code, scripting languages and version control) to make it much more powerful.

I've been working with vanilla OpenSCAD, downloading a few functions from people, and building little libraries of helper functions. Getting more familiar all along, figuring out the right way to do things. Some people have got a little further with creating scaffolding for mechanical design - projects like MCAD and OMDL. Of course, OpenSCAD is very versatile and people have many other uses for it. But I think when someone comes along and creates some really great libraries and frameworks on top of OpenSCAD - like LaTeX on top of TeX or Jupyter on top of iPython on top of Python - it would be suitable for any kind of design, competitive with the best GUI-based packages.

<comment><USER3> I used OpenSCAD almost exclusively for 5 years (Mech E by degree, but computer programmer by profession) and switched to Fusion360 in the last 3 months.

For me, within 6 hours Fusion was night and day more productive (even after a lot of experience in OpenSCAD). As one example, it was so much more productive that I can think of only 2 OpenSCAD designs in 5 years where I bothered to add fillets for strength and appearance. It's just too damn much trouble.

In Fusion360, I'll often have a simple part whipped up in 15 minutes and then spend 1 extra minute adding fillets and chamfers as needed. In OpenSCAD, that same part would likely be 30 minutes for the base part and the fillets another 15-30 minutes (with fairly poor performance once added).

<comment><USER2> That's fair enough. It's unfortunate that adding fillets is a big design change in OpenSCAD while it's something you can easily add last-thing in other packages.

Because it's so programmable, most things can be made fairly easy if you think of them in time, by writing procedures, once. I'm interested, actually: I would have thought that long-time users would have developed some sort of tip or trick for this, recognising at the start the kinds of changes that might be difficult to make laters and planning them in at the start. Maybe internal rounded corners are just too much hassle any way you look at it.

<comment><USER3> I never found a good way to semi-automatically do fillets. I did get good at many other kinds of manipulations, using the ! and % operators to help me "see what I'm doing", etc.

If you need boolean ops on cubes, cones, and spheres, OpenSCAD is great. If you need fillets on an oblique cylinder that intersects a curved surface, you're in for a much longer walk.

I have to admit that I'm not-so-secretly hoping someone will post "hey, here's my secret to easy fillets in OpenSCAD" and I can learn a new trick.

<comment><USER4> Sorry, no OpenSCAD secrets, but a different tool: Cadquery has fillets in their quickstart tutorial:

[https://cadquery.readthedocs.io/en/latest/quickstart.html](https://cadquery.readthedocs.io/en/latest/quickstart.html)

...and the fillet command is built-in:

[https://cadquery.readthedocs.io/en/latest/classreference.htm...](https://cadquery.readthedocs.io/en/latest/classreference.html#cadquery.Workplane.fillet)

<comment><USER3> Wow. That looks great. I'll play around with it and recreate a few of my recent F360 designs as concrete training material.

Thanks!

</comment></comment></comment></comment></comment></comment><comment><USER5> Years ago, I worked at a factory that had thousands of variations of a large, heavy product, some dating back to the 60s. This product has multiple units packed for shipping on pallets and random scrap pieces of wood and then strapped down like some sort of Jenga puzzle.

I created a generic OpenSCAD model for the product, and fed in parameters derrived from more than a dozen data sources to generate a model for every variation. Then, took the 90th percentile by production numbers, and overlaid the models to show the boundaries of the variations as one model. That shape was then used to generate stack-able, vacuum-formed trays to hold the product.

I had a couple of expensive 3D CAD products at my disposal there, but OpenSCAD was the solution I needed to programatically crank out models. That's how my foray into programming started and my career shifted from Manufacturing Engineering to Software. Thanks OpenSCAD team!

</comment><comment> pi-rat I keep finding myself falling back on OpenSCAD when trying to 3D model after getting frustrated with steep learning curve advanced CAD programs.

Even if you don't like the OpenSCAD DSL (it got it's quirks..) there are usually other options in more familiar languages. I use it via Clojure[1]. It's pretty fun, even for small stupid things like coding up a rolling oloid[2].

[1]: [https://github.com/farrellm/scad-clj](https://github.com/farrellm/scad- clj)

[2]: [https://www.youtube.com/watch?v=wXE3L8EU5U4](https://www.youtube.com/watch?v=wXE3L8EU5U4)

<comment><USER6> Similar to scad-clj for people preferring Clojure, there is SolidPython, for those who want, well, Python: [https://github.com/SolidCode/SolidPython](https://github.com/SolidCode/SolidPython)

</comment></comment><comment><USER7> I love OpenSCAD. I use it for all personal projects in 3D printing at home.

I use SolidWorks for work. The contrast between these two is incredibly striking. OpenSCAD is like a bicycle in comparison to an automobile.

It would provide literally billions (maybe tens or hundreds of billions) of dollars of value to the world if a few million dollars was spent developing an open source CAD/CAM package that was more than a mere bicycle and that wasn't terrible (sorry, FreeCAD, but we both know it's true). There needs to be an indiegogo campaign or something.

<comment><USER8> I would check out SolveSpace for some of your personal projects. It is no SolidWorks but it _is_ a parametric CAD program that works well, within its limitations. Very lightweight and not as crashy as FreeCAD.

If your part doesn't need lofts, NURBs, extrude-along-path, you can probably design it about as fast in SolveSpace as in SW, and with a similar mindset (vs. having to shift completely into programmer-mode for OpenSCAD).

e.g. Hood of a car? No way José, can't be done. Crankshaft and pistons? Easy.

</comment></comment><comment><USER9> It ain't perfect, but as a software guy with a 3D printer and almost no mechanical knowledge whatsoever, it has allowed me to make some things I'm really happy with, including this project I completed fairly recently:

[https://imgur.com/gallery/RpY5WEe](https://imgur.com/gallery/RpY5WEe)

<comment><USER10> That's super cool!

</comment></comment><comment><USER11> CadQuery is another good options to do parametric CAD from Python without using a DSL:

[https://github.com/CadQuery/cadquery](https://github.com/CadQuery/cadquery)

</comment><comment><USER12> Worth mentioning is also OpenJSCAD, a SCAD-like but with code written in JavaScript and entire environment running in browser: [https://openjscad.org/](https://openjscad.org/)

<comment><USER13> Also IceSL, which uses embedded Lua. [https://icesl.loria.fr/](https://icesl.loria.fr/)

</comment></comment><comment><USER14> I think OpenSCAD is great compared to other options I've tried. My primary issue with OpenSCAD is that everything is a set of 4 sided polygons. If I want a sphere with decent resolution I need an absurd number of faces. It's slow to process/render, makes a large output file, and doesn't result in resolution I'm that happy with.

</comment><comment><USER15> Before I moved on to Fusion 360, I remember the only sane way to fillet the edges in OpenSCAD was to apply the Minkowski function. Of course, that has to be the absolutely last thing that you do with the model, because the perf after minkowski was truly horrifying, n many cases taking more time than the subsequent 3D printing. Has anything changed since?

<comment><USER16> My desktop is an Intel 3700K overclocked to 4.1 GHz. So fast, but also ancient compared to modern CPUs. I have no issue designing models with many minkowski functions applied to them. The final build before export can take ~30s but that doesn't bother me.

</comment></comment><comment><USER17> I have used OpenSCAD for a while. I should write a more thoughtful critique but ... dang, it is often hard to know which approach will just dramatically consume _days_ of CPU time and which will not. I suppose one gets a feel for it eventually.

Modeling objects in my head parametrically is a snap.

The language is a bit clunky and counter-intuitive but I have gotten used to it. I do not mind its imperative nature; adding and subtracting material is imperative at its heart. Still, it makes more abstract reference points more difficult.

I found myself resorting to hacks like moving one object .001 into another object just to make sure they would meld smoothly.

The underlying library, last I checked, did not support multi-threading so the aforementioned CPU consumption is especially painful.

Exporting to giant .STL files is a little annoying. Sometimes the .STL files are "broken" according to Shapeways, so that is also bothersome.

<comment><USER18> Yeah I wanted to make a small change to Prusa's mk2/s extruder a long time ago. Rendering that design takes five or six minutes on my relatively-fast desktop, and it's an extremely simple thing. It was not clear to me why it was so slow.

In general I see OpenSCAD as a fun toy for making software-generated artwork, but not as a serious tool to make real things.

</comment></comment><comment><USER19> When I played around with 3d printers a number of years back, I tried a few free programs such as Blender, FreeCAD and Sketchup, but I found OpenSCAD for modeling and Meshlab for post-processing to be the best pipeline for my needs. OpenSCAD is particularly effective for making replacement parts where precision is more important than aesthetics. However I did find ways to have fun with it, such as building a printable dragon fractal: [https://s3.amazonaws.com/www.subalpinetech.com/images/dragon...](https://s3.amazonaws.com/www.subalpinetech.com/images/dragon.png) [https://s3.amazonaws.com/www.subalpinetech.com/images/dragon...](https://s3.amazonaws.com/www.subalpinetech.com/images/dragon_fractal.scad)

</comment><comment><USER20> OpenSCAD is my favourite programming language. I love the visual feedback, the quirky bugs, and the strict, functional nature of it. Learning OpenSCAD helped me really understand functional programming.

The documentation is also great. Once you have a basic grasp, this page is basically all you need.

[https://www.openscad.org/cheatsheet/](https://www.openscad.org/cheatsheet/)

Edit: Psych, you also need this:

[https://en.wikipedia.org/wiki/List_of_trigonometric_identiti...](https://en.wikipedia.org/wiki/List_of_trigonometric_identities)

I've neglected this project, but I'm working on a library to make one's reasoning more explicit by providing math utilities.

[https://github.com/MaxBondABE/batteries](https://github.com/MaxBondABE/batteries)

</comment><comment><USER21> I started modeling in OpenSCAD. It fit really well with my programmer mentality. The language is small, the concepts simple and you can do some really amazing things with it, far more than might be obvious from the primitives... except filleting and chamfering.

The limitations caught up really quickly after that.

I echo what the other folks are saying. Its great, but there is no "I knocked this out in 10 minutes in OpenSCAD" for any part that couldn't be done in less time in TinkerCAD.

Its difficult to imagine how you could fix this elegantly. "Pick a path that follows the intersection of these two solids" is difficult to express in code, and easy to express by clicking on the vectors that represent the path.

</comment><comment><USER22> If you like openSCAD, you can join the subreddit: [https://www.reddit.com/r/openscad](https://www.reddit.com/r/openscad)

It's been growing steadily in the last 7 to 8 years.

</comment><comment><USER23> IMO, I think if OpenSCAD somehow had an assembly feature it would really make it more attractive for users who are programmers to switch from the likes of Fusion360 etc.

<comment><USER24> What do you mean 'assembly' feature ?

<comment><USER23> "Assembly" as in if you have multiple parts in Fusion360 etc, you can select components and put them together by forming constraints. E.g. a screw into a mount hole with a nut on the other side. Expensive CAD software makes this relatively easy, you just select the objects and define the constraints. This is lacking in CAD software like FreeCAD (not very well supported), TinkerCad (where you have to create throw away objects), OpenScad is equally not easy, you have to manually position the objects and line them up in code to "assemble" them.

</comment></comment></comment><comment><USER25> Years ago I kept having trouble with openscad - even relatively simple loops would seemingly hang or use massive amounts of memory or give wired errors. Changing some tiny thing in the file would suddenly fix it, only for it to break again with a totally unrelated change.

It was as if it uses some stochastic algorithm that sometimes doesn't converge...

</comment><comment><USER26> OpenSCAD is really cool, but sadly very poorly implemented and very very slow. One can bring modern machine to it's knees for minutes rendering 10 cylinders in 10 cylinders in 10 cylinders. It's basically only appropriate for making a single parametric shape, but it's great for that job.

</comment><comment><USER27> If you use openSCAD for 3d printing then you'll love hob3l

It takes OpenSCAD files and generates meshes vastly faster for complex models.

[https://github.com/moehriegitt/hob3l](https://github.com/moehriegitt/hob3l)

<comment><USER28> This might come handy, thanks!

A lot of big name 3d printing software are really badly written and perform horribly on complex models.

</comment></comment><comment><USER29> There was a presentation at SCALE 18x earlier this year (pre-shutdown):

* [https://www.youtube.com/watch?v=G39tJdmLuAI](https://www.youtube.com/watch?v=G39tJdmLuAI)

</comment><comment><USER30> Used a whole lot of openscad to design and print my own version of the mpcnc, but recently i switched to the much simpler tinkercad because openscad was just not productive enough.

</comment><comment><USER8> I do a bunch of random little things on my CNC router -- mostly I make and sell wood handgun grips.

I used 4 open-source CAD programs before finally just concluding I need SolidWorks to do serious modeling. But I do still use one of the open source alternatives sometimes.

* Blender

OK, technically I didn't really give this a try for CAD. I had used it in the past for scene modeling and I knew it was extremely powerful for that but a huge pain for doing CAD-type work. Doing CAD with triangle meshes is total madness, CSG is the only way to go.

* OpenSCAD

I'll write the most about this because it's the subject of the article. If you come into this from a Blender background, it is awesome: finally I can define my model with a few key parameters, and have the program generate all the other dimensions from there! And CSG makes way more sense than meshes -- I can make a box, then put a hole through that box, then cut a countersink on that hole. Awesome.

But all the other parametric CAD programs have that stuff too. You've got constraints in sketches, support for formulas in equations, and templating features like linear patterns. So you can typically get the same level of flexibility where if you want to change your model in a big way, you just edit the few dimensions from which all else is derived. There are cases where you can't "program" your model in terms of those 3 common CAD features, while you can in an OpenSCAD file. But they are few and far between.

And the way the other programs do it is not only easier to "write" by clicking buttons on a UI, but much, much easier to "read" by viewing the sketch drawing. You can see how a sketch is defined a lot faster than you can understand the OpenSCAD code that does the same thing. Trying to revisit an old OpenSCAD project has a steep learning curve.

I really did fall in love with this way of defining models for a short time, but I realized that I was making more work for myself when the models I get out of other parametric CAD tools are equally "programmable" for practical purposes.

* FreeCAD

First thoughts: Wow! This thing is pretty cool! I found the default controls for moving the view a little "off" based on my past experience but that's easy to adjust to. And at first, FreeCAD is really impressive because it brings complex features to the table like "loft", which is something I really missed from SolidWorks. It's almost a must-have for my grip designs.

The main problem I had with FreeCAD is that it just breaks too often. When I started making complex designs using those features I loved so much, FreeCAD would get unstable. It's very frustrating to work on parts when the editor keeps crashing, sometimes mid-save corrupting the current file. I would have to go back to the drawing board and try another way of defining the same shape in hopes that FreeCAD liked the new way better. Ultimately I just got too annoyed by it. Also, I really wished that I could use guide curves for lofts -- but here I am asking them both to make a complex feature MORE complex AND to fix the existing bugs with it, which is a really tall order.

FreeCAD is an amazing achievement for volunteer work but it's not useful to me.

* SolveSpace

With its unconventional looking UI, this seemed like it was going to be one of those idiosyncratic open source programs like Blender or GIMP where you spend half the time just cursing them out for doing things a weird way and making you learn it.

On the contrary, once I worked through the first tutorial on their official website, I felt like I had a pretty good understanding of the program. Some stuff like defining new workplanes was still a bit confusing, but I got the hang of it. The shortcut keys are super handy and easy to learn by hovering the buttons. Best of all, SolveSpace is fast and _usually_ stable -- though you can get it to stack overflow, sometimes on save, by turning up the modeling resolution too far.

This lacks advanced features like the aforementioned loft, and sadly lacks a quick fillet/chamfer tool too. The modeling resolution thing can be a little bit of a pain (OpenSCAD has this problem even worse) coming from a commercial tool like SolidWorks where you don't even think about it until it's time to export to STL.

But overall, SolveSpace is a good example of keeping it simple, constraining the feature set to something manageable and then just doing that _well_. So I still use it now and then for quick stuff where I know I'm not going to need flowing 3d surfaces, just boxy extruded things with a few curved edges. It feels a lot more responsive than SolidWorks -- it's like using a text editor vs. using MS Word.</comment>


Tell HN: It's not P(you, us) > P(you)P(us) - <AUTHOR>

It's P(you, us) > P(you) + P(us) - P(you)P(us) <comment><USER2> I kinna get what you are trying to say but please elaborate!</comment>