ChrysaLisp - <AUTHOR> https://github.com/vygr/ChrysaLisp <comment><USER2> Thanks again folks for the interest. You catch me yet again when I'm at work but I'll try answer question in an hour or so once I get home. Regards to all. Chris

<comment><USER2> Just a quick comment till I can get home. There are three main layers of in use. The more Lisp like layer in apps/ and cmd/. The lowest level VP assembler and an assembler with stack variables and expression compiler I call C-Script. This is my hobby and a follow up to Taos that I did back in the 90's. See 'Virtual Processor' page on Wikipedia for link articles of various scans from back then. Got to head into the car now.....

</comment></comment><comment><USER3> Taken from the documenation:

Lisp

It's probably worth a few words specifically about the included Lisp and how it works, and how many rules it breaks ! The reason for doing the Lisp was to allow me to create an assembler to replace NASM, I was not concerned with sticking to 'the lisp way', or whatever your local Lisp guru says. No doubt I will have many demons in hell awaiting me...

First of all there is no garbage collector by choice. All objects used by the Lisp are reference counted objects from the class library. Early on the Lisp was never going to have a problem with cycles because it had no way to create them, but as I developed the assembler I decided to introduce two functions, push and elem-set, that could create cycles. However the efficiency advantage in coding the assembler made me look the other way. There are now other ways that a cycle can be created, by naming an environment within its own scope, but again this was too good an efficiency feature to miss out on. So you do have to be careful not to create cycles, so think about how your code works.

No tail recursion optimization ! There is a single looping function provided in native code, while, every other looping construct builds on this primitive. There are also two native primitives some! and each! that provide generic access to iterating over a slice of a sequence/s, while calling a function on the grouped elements. Standard some and each are built on these but they also allow other constructs to be built and gain the advantage of machine coded iteration. I try to stick to a functional approach in my Lisp code, and manipulate collections of things in a functional way with operations like map, filter, reduce, each etc. I've not found the lack of tail recursion a problem.

All symbols live in the same environment, functions, macros, everything. The environment is a chain of hash maps. Each lambda gets a new hash map pushed onto the environment chain on invocation, and dereferenced on exit. The env function can be used to return the current hash map and optionally resize the number of buckets from the default of 1. This proves very effective for storing large numbers of symbols and objects for the assembler as well as creating caches. Make sure to setq the symbol you bind to the result of env to nil before returning from the function if you do this, else you will create a cycle that can't be freed.

defq and bind always create entries in the top environment hash map. setq searches the environment chain to find an existing entry and sets that entry or fails with an error. This means setq can be used to write to symbols outside the scope of the current function. Some people don't like this, but used wisely it can be very powerful. Coming from an assembler background I prefer to have all the guns and knives available, so try not to shoot your foot off.

There is no cons, cdr or car stuff. Lists are just vector objects and you use push, cat, slice etc to manipulate elements. Also an empty list does not evaluate to nil, it's just an error.

Function and macro definitions are scoped and visible only within the scope of the declaring function. There is no global macro list. During macro expansion the environment chain is searched to see if a macro exists.

</comment><comment><USER4> This is cool, but the code is... strange? [https://github.com/vygr/ChrysaLisp/blob/master/gui/canvas/tg...](https://github.com/vygr/ChrysaLisp/blob/master/gui/canvas/tga.vp)

The code doesn't look like Lisp at all. Is this some sort of lower assembler language that Lisp is implemented on top of?

<comment><USER5> As someone who isn't familiar with this Lisp dialect / DSL, something that stands out to me is the (def-struct ...) ... (def-struct-end), (def-method ...) ... (def-func-end), (switch) ... (endswitch), and (vpif ...) ... (endif). The appeal of s-expressions is that their nested structure is supposed to delineate the abstract syntax tree of the program, with the opening and closing parentheses denoting the boundaries of a construct. IMO this language's syntax isn't faithful to the spirit of Lisp.

<comment><USER2> The (def-struct) stuff is part of the assembler ! Not the Lisp.

Same with (def-enum) etc.

I am going to have to write a document to clearly state where these boundaries between the Lisp, the C-Script and the VP layers. I realise it's not that obvious sometimes.

Chris

<comment><USER6> (def-func-end) and other 'ends' look pretty un-lispy to me. Helps readability, though.

</comment></comment></comment></comment><comment><USER7> For the curious:

2019 [https://news.ycombinator.com/item?id=18897817](https://news.ycombinator.com/item?id=18897817)

2017 [https://news.ycombinator.com/item?id=15466124](https://news.ycombinator.com/item?id=15466124)

Related, on the TAOS operating system:

2018 [https://news.ycombinator.com/item?id=16727565](https://news.ycombinator.com/item?id=16727565)

2017 [https://news.ycombinator.com/item?id=15527936](https://news.ycombinator.com/item?id=15527936)

2015 [https://news.ycombinator.com/item?id=9806607](https://news.ycombinator.com/item?id=9806607) (with lots of comments by original contributors)

</comment><comment><USER8> Previously: [https://news.ycombinator.com/item?id=15466124](https://news.ycombinator.com/item?id=15466124)

</comment><comment><USER9> Very confusing. It's not actually Lisp but some new language with superficially Lisp-like syntax. It doesn't say what it's for or why the hell anybody would want to use it.

<comment><USER10> What makes it "not actually Lisp but some new language with a superficially Lisp-like syntax"? (Never mind that it's ostensibly a lot more than just a language but an entire OS with a Lisp-geared runtime -- I'm assuming you're just referring to the language).

[https://github.com/vygr/ChrysaLisp/blob/1808d2db54cdda378aae...](https://github.com/vygr/ChrysaLisp/blob/1808d2db54cdda378aae071d4b3dc0108b085ea2/apps/freeball/app.lisp) sure looks like plausibly a Lisp dialect to me.

Is your objection to the execution VM (all the files ending in .vp)?

<comment><USER11> 1\. no garbage collector

2\. No tail recursion

3\. There is no cons, cdr or car stuff. Lists are just vector objects and you use push, cat, slice etc to manipulate elements.

Only this much is radical enough to say that it isn't a Lisp but disguised in Lisp syntax. Lisp is as much about semantics as the syntax. The power of Lisp to do amazing things comes from the language capabilities. If you cannot reasonably translate powerful programs from Lisp textbooks, then is it a Lisp?

Some languages (example: JavaScript, Python) make it easy to create an inefficient Lisp interpreter that could execute common textbook programs. Minimax, A-star search, unification matching, etc.

<comment><USER10> Welp, you're right, all of those things are true for the lisp files too (not just vp). I just read some sample source and missed [https://github.com/vygr/ChrysaLisp/blob/5483e0926b926c2cde63...](https://github.com/vygr/ChrysaLisp/blob/5483e0926b926c2cde634946a3ec1d943bf087cb/docs/LISP.md) . I agree those are pretty serious deviations that make "only superficially lisp-like" a reasonable statement. Thanks!

(IIUC the "garbage collector" is refcounting; I'm not sure what "All objects used by the Lisp are reference counted objects from the class library." means in practice, and specifically I'm not sure if that means "you basically have a GC in lisp as long as you don't make cycles".)

<comment><USER2> It means what it says ;)

All objects used by the Lisp are instances of classes from the class library, ie that stuff in class/ folder.

These instances are ref counted objects, as they are derefed and they drop to 0 refs they get deinited and freed.

The Lisp is constructed from these, for example Lists in the Lisp are an instance of the class/vector, numbers are an instance of class/num, the environment is a chain of class/hmap etc.

So yes, you do have GC if you don't make cycles, and you do have to care about not doing that just as you would in C++.

</comment></comment></comment></comment></comment><comment><USER11> One interesting thing is the idea that app applications and utilities are in a virtual object code rather than native code.

This reminds me of the UCSD p-System of the early 1980's.

To port the OS all you had to port was the very small p-Machine emulator (PME). Once you had a bootable PME, everything else, the entire OS, utilities, and all applications instantly came along for the ride, without even being recompiled.

I could only imagine a modern OS that would take an approach like this, but Hotspot JIT everything to native code.

<comment><USER12> I mean that's basically the JVM, isn't it?

<comment><USER11> Yes. As a long time Java developer. But the UCSD p-System was much earlier (and more primitive) than Java.

p-System never did JIT. Remember this was for machines with 64 K of memory. Not 64 MB. But 64 K! The p-Code was much more compact than native code. Interpreting most code was plenty fast for most things -- even on the slow (under 10 MHz) clock speeds of the era. Critical operations could be written in assembler. The p-System had its own assembler for native code.

JVM is a whole other world. Adding GC is a whole new dimension in complexity. But decades of research have gone into the JVM making it the amazing runtime platform it is today.

<comment><USER13> There were toolchains that did compile P-System into native code though.

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

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

Adding a GC to bytecode systems, is what Xerox PARC did with their Interlisp-D, Smalltalk and Mesa/Cedar workstations.

The CPUs were microcoded and as part of the boot process they would load the respective hardware interpreter for the environment being booted into the workstation.

A similar idea was explored in one of Oberon's implementations, where instead of using straight native code like on the Ceres workstation, the modules would have a compact representation, JITed into native code on module load.

See section 7, Machine-Independent Mobile Code on [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90....](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.90.7173&rep=rep1&type=pdf)

<comment><USER11> I remember Corvus quite well. (I've been doing this job for a _loooong_ time.)

</comment></comment></comment></comment></comment><comment><USER14> It's real deja vu looking at this thread. Many of the questions/comments here are exactly the same ones that came up in the early 1990s with Taos on CiX, and then later with Elate/intent. :)

Chris was far ahead of the curve - a heterogeneous, load-balancing, multi- processor, multi-tasking OS, with Object-Oriented Virtual Processor, byte code, load-time translation, support for multiple CPU types (including RISC/CISC/transputer and LE and BE), and tiny footprint message-passing kernel, when most people used MS-DOS 3.3 or DR-DOS 5.0, with Windows 95 still a gleam in Bill Gates's beady eye! Nearly 30 years on and he is still ahead of the curve!

p.s. no one has mentioned it yet - try a Google search for "edge tao spyfish". That was 1995!! Not released, but still very interesting reading material.

</comment><comment><USER15> This is pretty amazing! would appreciate some more documentation on this and perhaps some benchmarks.

<comment><USER2> There is a start on documentation in the docs/ folder. I know it's sparse at present I do aim to add more over time.

The system can build itself from source after clean, on my 2014 Macbook in under 0.4s. It's not exactly a standard benchmark though, but it's not slow considering that's a Lisp (like) interpreter doing all the compiling and assembling !. Footprint at the moment for everything is 158KB.

The snapshot.zip file contains 3 separate snapshots for the 3 ABIs supported currently.

</comment></comment><comment><USER3> This is quite an intersting and approchable OS. Hope to see progress on it.

Could this be run this in VMWare? Or is it specifically bound to a host OS?

<comment><USER2> It's not bound to any host OS. I am using SDL to provided a simple abstraction to open a Window and obtain key and mouse input. I use very little of the SDL features, just a rectangle fill and rectangle bit blit. See the gui/ctx/class.inc for all those, everything else in the GUI, like the compositor and vector graphics library, widgets et al are done in VP on the CrysaLisp side.

I have a small abstraction to the host OS via the sys/pii/functions, these just use the jump table you can see in the main.c file. Any host OS should be able to compile the main.c with little or no changes, but eventually there will be a native filesystem available from VP/Lisp.

I will be doing direct bare metal hardware support, and there are things happening on that front but I can't talk about that here.

But during my experimentation stage it was very useful to have it running hosted, and I'll keep the hosted version running going forward as it provides a nice dev environment.

I do have a plan to get a version done that could boot under VMWare etc, but I've only got so much time on my hands and have to spread myself over the whole codebase as best I can. :)</comment></comment>


EU mandates that public sector information be shared as open data - <AUTHOR> http://europa.eu/rapid/pressReleasesAction.do?reference=IP/11/1524

<comment><USER2> To expand, in the USA most (all?) of the data produced by the US Federal government is public domain (things like map data, nasa results etc.). In EU this is not the case. As a result lots of governments, say, map the country using tax payer money, then charge for access to this data. You can't make mashups or derived works.

<comment><USER3> > To expand, in the USA most (all?) of the data produced by the US Federal > government is public domain

I doubt it's all, since there's a lot of confidential stuff in there.

<comment><USER4> As far as I know, classified information is in the public domain, but simply isn't released. Its basically equivalent to a trade secret.

</comment></comment></comment><comment><USER5> The EU is making some surprisingly good decisions lately when it comes to matters such as data and "intellectual property". I'm glad to be living here.

</comment><comment><USER6> Whilst this is positive, first we have to see that it is just a 'strategy', not an enforceable policy (i think the title of this article as 'EU mandates' is slightly misleading). Secondly, as a 'strategy', it is missing any pointed reference to the difficult issues - for instance QANGOs, which often hold much information that has been government funded, however can be resistant to releasing their data - sometimes for good reasons...

The idea is, of course, a good one - lets hope it filters down into real positive action soon....

</comment><comment><USER7> How do we get the UN to free up its data as well?

</comment><comment><USER8> The article doesn't really say what kind of information this would affect...

Would this remove research articles from public universities from paywalls?

<comment><AUTHOR> Sadly, I don't think it extends to universities, although there's also work being done there in some European countries.

I think it's mostly government services. Although, as archives and museums are included to an extent, I could be wrong about this.</comment></comment>


The Game of Pogo (2011) [pdf] - <AUTHOR> http://cossdesign.com/teacher_resources/PogoRules2.0.pdf <comment><AUTHOR> My son plays this at recess every day in Seattle. He'd said something about the rules being written by a former teacher at his school so I tried looking them up and found this.

The game he plays is pretty much the same as explained here. He claims they are big differences but they're pretty minor.

<comment><USER2> If you have time to share the differences, I'm curious</comment></comment>


Qwant: A European search engine that respects privacy - <AUTHOR> https://about.qwant.com/ <comment><USER4> Said the same here 12 days ago: [https://news.ycombinator.com/item?id=15631473](https://news.ycombinator.com/item?id=15631473)

Sadly, the search engine reports many duplicate results. For example, I searched: "arid land reforestation", and results were ([https://screenshots.firefox.com/wl6JuVa5sbWNgy2o/www.qwant.c...](https://screenshots.firefox.com/wl6JuVa5sbWNgy2o/www.qwant.c...)):

* 1st: [http://haringey.store/reforestation/in/reforestation_in_arid...](http://haringey.store/reforestation/in/reforestation_in_arid..).

* 2nd: [http://haringey.store/reforestation/in/reforestation_in_arid...](http://haringey.store/reforestation/in/reforestation_in_arid..).

* 4th: [http://maestron.store/reforestation/in/reforestation_in_arid...](http://maestron.store/reforestation/in/reforestation_in_arid..).

* 5th: [http://pipcoins.store/reforestation/in/reforestation_in_arid...](http://pipcoins.store/reforestation/in/reforestation_in_arid..).

etc, etc. All of which were "bad" websites. It's a shame because some good results (science direct, …) were inside the lot. The content isn't even a pdf.

You should implement a "unique" webpage result fingerprint in order to avoid showing duplicates (well, I suppose it's easier said than done..).

<comment><USER5> > You should implement a "unique" webpage result fingerprint in order to avoid > showing duplicates (well, I suppose it's easier said than done..).

It is, mainly because people have very different ideas what "unique" actually is. At one time I had add the host of a page to their hash because people complained that if we hit the same content at two different hosts we filtered one out, which wasn't okay for political reasons.

The two first results in your example are "fun". That page returns different content with each call ... yay.

</comment></comment><comment><USER6> The only way to have privacy in search is not to give your queries to a 3rd party i.e. you need decentralised search.

The basic principle of decentralised search is an individual only needs a tiny fraction of all knowledge available, so the solution needs to focus on indexing their interests and social connections - <USER3> [http://www.mathaware.org/mam/04/essays/smallworld.html](http://www.mathaware.org/mam/04/essays/smallworld.html)

It has been tried already. There's YaCy [https://yacy.net/en/index.html](https://yacy.net/en/index.html) but the UX is horrible ( [https://yacy.net/en/Screenshots.html](https://yacy.net/en/Screenshots.html) ) - not for the mainstream software consumer.

Then there's [http://www.faroo.com/](http://www.faroo.com/) ( see [https://en.wikipedia.org/wiki/FAROO](https://en.wikipedia.org/wiki/FAROO) ) which has been ticking along since 2005 and tried to appeal to consumers but arguably aliened early adopters most by targeting Windows. They seem to have stalled otherwise ( [http://www.faroo.com/hp/p2p/history.html](http://www.faroo.com/hp/p2p/history.html)) but it still works as a service I believe.

Lastly there's [https://www.bitclave.com/](https://www.bitclave.com/) \- the new kid on the block. They seem to be aligning themselves with crypto- currencies somehow - perhaps there's a path there to monetisation - <USER3> [https://www.cryptocoinsnews.com/bitclave-search-engine- taps-...](https://www.cryptocoinsnews.com/bitclave-search-engine-taps- blockchain-decentralize-advertising-ico-planned/) and [https://hackernoon.com/bitclave-the-decentralised-search- eng...](https://hackernoon.com/bitclave-the-decentralised-search- engine-257511813599) \- one to watch.

<comment><USER7> _> The basic principle of decentralised search is an individual only needs a tiny fraction of all knowledge available,_

That may be a reasonable assumption but it omits a major tradeoff: some types of "knowledge" require the search engine to "see" the _entire index_ and synthesizing such knowledge cannot be delegated to decentralized nodes.

To reduce the search engine tradeoff to a simple math analogy: You can "decentralize" the calculation of a SUM to individual nodes. However, you can't decentralize the calculation of an AVERAGE. Divide-and-conquer strategy of calculating an average will give the wrong result.[1]

Some searches are like "SUMS", and some are like "AVERAGES". If a search is pure text retrieval without regards to relative weighting or ranking, decentralized nodes with each holding partial segment of the index will work. (E.g. you want to retrieve a chili recipe so your search query hits the decentralized node that has recipes starting with "C" or whatever hash algorithm.) That's a "SUM" type of problem. However, if you want to find the top 10 ranked recipes by links, the decentralized nodes can't answer that. That's a "calculate the AVERAGE" type of problem. Also, determining which webpages in the index are "fake news" or SEO "link farms" and other "bad actors" is also an "AVERAGE" type of problem. The machine learning algorithms need to see the whole index (or pedantically, a very large portion of it) to "learn" what "fake news" looks like.

Google's ability to comb their entire index in a centralized place lets them discover new insights to evolve the Pagerank algorithm from Panda->Penguin->Hummingbird->etc.[2]

Yes, you gain more privacy with decentralized or p2p search, but you also lose the ability to search on certain types of queries.

[1] [https://math.stackexchange.com/questions/115091/is-the- avera...](https://math.stackexchange.com/questions/115091/is-the-average-of- the-averages-equal-to-the-average-of-all-the-numbers-originall)

[2] [https://conversion-hub.com/wp- content/uploads/2016/08/Compar...](https://conversion-hub.com/wp- content/uploads/2016/08/Comparison.bmp)

</comment></comment><comment><USER8> It's just meta-search engine (like DuckDuckGo) that relies on Bing search engine, plus a small scale crawler for French sites.

Exalead, a former real Google competitor made in France is a real search engine, used to be sponsored by European Union, France and Germany, and features a real large scale web crawler. Unfortunately it got bought by Dassault (Catina 3D CAD) and stalled, though it's still online: [https://www.exalead.com/search/](https://www.exalead.com/search/)

</comment><comment><USER9> First impression: heavy and slow. I use search engine to search something, not to read news or watching pretty pictures. Why not just a search box, a button, and a logo? Sure, it's probably gonna be looks like Google, but hey, it loads faster.

<comment><USER10> There's a lite version for that:

[https://lite.qwant.com/](https://lite.qwant.com/)

</comment></comment><comment><USER11> > We should always ask our search engine what are the personal data that it > does not collect

I like this - the default choice should be to explain rather than the other way around. There's a huge "information symmetry" gap and the more the gap widens the more difficult it is for people who don't have the required information to prove something violates privacy.

</comment><comment><USER12> The UI doesn't seem to have been tested, and isn't usable. On my iPhone in safari, when I tap on the search box it JavaScript-scrolls out of view, revealing a picture of a football field that plays a video if clicked accidentally. Once it even played without being clicked. This also happens on the results page, except here it disappears under a very irritating 1/6 screen "download our app" nag bar.

</comment><comment><USER13> Why is it better than: [http://duckduckgo.com/](http://duckduckgo.com/) ?

<comment><USER14> I'm not necessarily replying to why it's better, but I just need to say this about DDG. Duckduckgo's biggest issue is its name. It does not instill trust, and it does not sound serious. We need to change this name! DDG has a great user experience, and it looks great!

<comment><USER12> Google and Yahoo!, on the other hand, are very serious, business-like names.

</comment></comment></comment><comment><USER15> In France they have an ad campaign running on mainstream French TV channels at peak time [1], playing on the fact that search engines know everything about you from your age, family members, food preferences to who you talk to on dating websites as a married man.

[1] [https://www.youtube.com/watch?v=Evahh1PXJIg](https://www.youtube.com/watch?v=Evahh1PXJIg)

</comment><comment><USER16> I don't think they need to show images right now at the top. For many search results they aren't even that great (it's just featured images from blogs). This would speed-up the site, too.

Also, I don't understand why the searches only show up for 1/3 of the screen. Is it because they plan to show big ads on the right? Still 2/3 of the screen for that seems excessive.

<comment><USER17> The other columns are for "News" and "Social" search results. Try searching for Elon Musk, it should fill the entire screen with results.

</comment></comment><comment><USER18> Did a small test by searching for "fish shell for loop"

* qwant.com did not return useful results at the top

* google.com did okay, but answer was behind the first link

* duckduckgo.com displayed the answer at the top of the page

<comment><USER19> The answer? I don't even get what the question was.

</comment></comment><comment><USER20> recent discussion: [https://news.ycombinator.com/item?id=15631473](https://news.ycombinator.com/item?id=15631473) (12 days ago)

</comment><comment><USER21> Quite good results

Defaults to French Though

</comment><comment><USER22> searx protects your privacy much better.

</comment><comment><USER23> I wonder who's behind that... Europe is probably pushing this to counter Google. No ?</comment>


P++ idea:  FAQ - <AUTHOR> https://wiki.php.net/pplusplus/faq <comment><USER2> If they pull this off I just might return to PHP for a lot of work.

I love PHP's pragmatism, I love that it's batteries included, and most of all I love the deployment story. It's basically zero-config AWS Lambda without vendor lockin. If they manage to split off a better language without splitting up the community like Python 2/3 or Perl 5/6 did, then that's a spectacular win in my book. Having a little header on top of each file is real nice (and it also opens the door for mixed PHP/P++ projects, another thing Perl and Python failed at).

I find it telling that the PHP community keeps getting this sort of stuff right (they also got the php4->5 migration right back in the days, through collective community action; they fixed the error that was PHP 6 before it was too late, and so on). Pragmatism to the max, things have to not just keep working, but also stay convenient (like Hack wasn't).

<comment><USER3> I do not mean to be rude or offensive but are there plans to fix the half- baked type system?

I am using PHP7 at work and the ability to annotate functions with types is a good idea until you get arrays which can take anything (so you can have an array of who-knows-what) so you can't assume further down the call stack that you're dealing with a known type so have to test what you're dealing with, or objects.

It's a bit of a mess to me and makes reading the code very difficult without running it in a debugger to step through what you're dealing with. Generics or some form of strong typing (which seemed to be what the type annotations and return value types hinted at) would really help, particularly with large projects. I am coming from a C++ background.

Any pointers or tips or documentation for me would be welcome.

If P++ pushes some of this strictness further onto the language then great. It saves me having to do it in code.

<comment><USER4> > until you get arrays which can take anything

There's a widely-used PHPDoc standard for annotating arrays: `Foo[]`, and there are at least three PHP static analysis tools that can correctly interpret those annotations: Psalm ([https://psalm.dev](https://psalm.dev)), Phan ([https://github.com/phan/phan](https://github.com/phan/phan)) and PHPStan ([https://github.com/phpstan/phpstan](https://github.com/phpstan/phpstan)).

Phan and Psalm also support a docblock syntax for generics - I wrote about it here: [https://medium.com/vimeo-engineering-blog/uncovering-php- bug...](https://medium.com/vimeo-engineering-blog/uncovering-php-bugs-with- template-a4ca46eb9aeb)

<comment><USER3> Thanks for this! This is just what I was looking to know

Thanks!

</comment></comment></comment></comment><comment><USER5> I think proponents of this change are dramatically underestimating how difficult and limiting it will be to maintain seamless interop between two dialects of a language. Interop between languages is _hard_ , and many of the features and changes that you might like to add to a "P++" would make it either expensive or verbose to call or be called by "legacy" PHP. Ultimately I think this could go one of two ways:

A. The "P++" effort ends up hamstrung by the need to maintain seamless interop with "legacy" PHP, and is therefore only able to implement a small subset of the clean-ups and enhancements they envision. It's not clear that this is better than continuing to improve PHP in a backwards-compatible way.

B. Changes to P++ make it so that interop with "legacy" PHP is either very verbose (specifying types, casting, etc.) or incurs a heavy runtime cost. To avoid this, most significant PHP libraries get a P++ clone, and the language effectively forks into two separate communities.

It would be awesome if it's possible to avoid this, but I haven't seen a specific technical proposal for a significantly improved language that maintains seamless interop.

<comment><USER6> The same concern definitely crossed my mind as a reader, but I think the coloring of the critique should be less #000000 and more #888888. A lot depends on the technical goals of the "P++" variant - and on the culture among the language maintainers.

* If everyone generally views both language frontends as equal and shared responsibilities with valid technical rationales and only some specific/reasoned differences, then it's probably sustainable.

* If the team becomes polarized, or if one subteam wants to substantially reinvent their language ("Let's make it purely functional too! Bring on the monads!"), then yes... they'll feel hamstrung.

It might be interesting for them to consider comparisons with other systems that support multiple language frontends, e.g.

* GCC supports C and C++ (not to mention C++11, C++14, ad nauseum).

* HHVM support(ed) PHP and Hack

* JVM and CLR both support a range of language frontends.

My guess is that GCC is a more favorable analog (it feels normal+realistic to support C99 alongside C++11 and C++14). JVM/CLR seems like an unfavorable analog (they've supported many very different languages... but involve many large teams and diverse technical specs).

HHVM is probably the most pointed analog. It's just... mixed. On one hand, HHVM succeeded in supporting two similar languages for a long time (in spite of significant idiosyncrasies of PHP). On the other hand, HHVM eventually gave up on PHP and went pure-Hack. But (as an outsider) I'm not really sure the reason. It could be that they got boxed-in on a technical issue of language- interop, or it could be they got boxed-in organizationally ( _being a separate team maintaining a secondary implementation amid a continuous drip-drip of external changes - not a great position_ ).

I interpret the original link above as basically an assertion (crude paraphrase): "The HHVM folks were broadly right about PHP and Hack and technology and all that; but their implementation hasn't succeeded on organizational grounds, and we-here can do those organizational things better."

<comment><USER4> By providing PHP-backwards compatibility HHVM, Facebook provided an off-ramp for themselves and other existing PHP users at a time when HHVM was much faster than the PHP interpreter.

But then PHP sped up, and once it became clear that people had stopped using that off-ramp, Facebook demolished it. The off-ramp was infeasible to maintain, and of no benefit to anyone.

</comment></comment></comment><comment><USER7> It's a little galling that the proposal makes no mention of Hack ([https://hacklang.org/](https://hacklang.org/)), which is _also_ an evolved PHP with static typing that is designed to coexist with PHP 5/7 code on top of a single runtime (HHVM).

 _Edit: as noted below, since I made this comment, a new section has been added to the doc about this topic._

<comment><USER8> It does make a reference to it further down from the synopsis.

The difference here I think is that most of the PHP community seems to abandon support for Hack, so Hack (as far as I can see. I am happy to be corrected) in the wild is more or less contained to Facebook and its properties. I think a couple of large companies like Slack use it in some places too, but its mainly been disregarded by the broader community (none of the largest frameworks support Hack anymore, for instance).

Which makes sense why Hack is no longer developing with PHP compatibility in mind.

<comment><USER9> Slack is also a large scale user of Hack:

[https://slack.engineering/streamlining-your-workflow- debuggi...](https://slack.engineering/streamlining-your-workflow-debugging- for-hhvm-effd7db3c72d)

</comment></comment></comment><comment><USER10> > dynamic, with strong BC bias > it could be more daring with BC

What is BC?

<comment><USER8> Backward compatibility in this context.

<comment><USER10> Thanks. I have used the "backward compatibility" term many times but never abbreviated it nor seen it abbreviated. The only idea that comes into my mind when I see "BC" is "Before Christ" which actually feels pretty much relevant :-)

Indeed they should really have spelled it out first and only used the uncommon abbreviation for subsequent occurrences.

</comment></comment></comment><comment><USER11> I really struggle to see what the case is for PHP anymore.

I maxed out '04 to '14.

After working in a dozen other languages, the only motivation left seems to be sunk-costs and job-market openings.

It's so domain-specific that you're hamstringing yourself in the future.

That you'd _create a new language_ out of PHP just seems mad.

Who's the audience?

The pragmatic (market) motivations don't exist.

<comment><USER8> I agree with this. I'm struggling to get out of my current role/job right now, because I want to move away from PHP (I'm really growing to dislike it as a whole, and in my personal experience have some very negative connotations around the development practices of the PHP developers I deal with on a day in day out basis)

I been looking at C#, what did you find was easy to translate to quickly?

<comment><USER11> Might seem cliche (?) but Python.

Ignore all the java lipstick that went on after PHP5; PHP doesnt work like a static language and C#/Java really quite different.

Python fits the mental model of PHP far more closely, in that everything you expect to be able to do easily (dynamic dispatch, OO, closures, etc.) are easy. And everything hard (mixins, metaprogramming, etc.) is about as hard.

Most things are easier.

C# may seem more "grown up". From a PHP-culture perspective "Java OO" is grown up, and "procedural C" is babyish. That has more to do with PHP3 vs PHP5 than either Java or C. The latter of which, as with python, includes the best programmers in the world.

From a web job-market perspective I can't say. I got into data science a few years ago, and haven't much contact since. C# may make more sense; it would have back when I was in the area.

<comment><USER8> I actually _started_ with Python, and ended up on PHP because of job changes in the last 2 years (my employer closed their satellite teams so I jumped to a local university. Turns out Drupal is huge in university land, and so PHP. Has not been a stellar experience. I think I had some pre-formed notion that I'd at least be working on more interesting problems, but alas).

I would love to get back to Python, but where I live I mostly see Java/C# job openings (I don't want to live in the Bay Area. My wife has health issues and its complicated to get her care set up again).

and I can't seem to find any places hiring remote Python devs (I did web backends in Python, for reference, not data science. I don't have a CS degree, so I feel timid trying to pushing into Data Science even though I'm a quite knowledgeable Python programmer. I still keep up with all the latest Python news and libraries even).

I'm torn on what to do next. I really would love writing Python full time again. Hell, I'd love to do just front-end web development full time even. I have so much more passion for either than I have writing PHP code. I feel like a glorified Forms creator. Nothing of remote interest is happening in PHP land for me.

When I wrote Python full time we did real-time networking and web back ends. Lots of websocket programming. Async/Await had _just_ taken hold (I came up on Python 3.4 and by the time I was writing it full time we had updated to Python 3.6+). DataClasses was sooo exciting to me. I just miss that energy.

Now with static site generators becoming so vogue I can see all the potential in the world Python has to make the day to day web development experrience so good (IMO, its better at munging data than even gatsby is. Numpy, SciPy, etc. combined with a gatsby-like platform that normalizes all your data into consumable views would be mind blowing)

I know this is a bit of a rant, but I really miss that energy I had when I was living in Python all day. Things just made sense to me. And if I ever had a real performance bottleneck, I could always write a C extension.

Maybe I just need to job hunt better. Unforunately if I can't do C#/Java it needs to be remote work, and I don't feel like I meet the qualifications for any places that hire remote workers. They all want super engineers and I don't really know if I am one :(

<comment><USER4> Give C# a go. I'm a full-time PHP programmer, and C# has a lot of great things that PHP probably never will.

> Nothing of remote interest is happening in PHP land for me.

Nobody can make you interested in anything you don't want to be, but I'm trying to solve a bunch of non-trivial issues here: [https://github.com/vimeo/psalm/issues](https://github.com/vimeo/psalm/issues)

<comment><USER8> I forgot how many people are on HN of such high caliber. I would be happy to see if I can make any reasonable contribution to pslam.

</comment></comment></comment></comment></comment></comment><comment><USER12> _The first likes PHP roughly the way it is - dynamic, with strong BC bias and emphasis on simplicity_

Personally, I have a strong AD bias. Seriously, though, what does this term mean?

<comment><USER2> Backward compat - something that's been pretty holy in PHP land for ages and hence got abbreviated in the internals community. Pretty fair IMO to abbreviate something that's so core to a language's vision. Don't forget that HN isn't the target audience of this post: it's people who are involved with PHP internals.

<comment><USER12> _Pretty fair IMO to abbreviate something that 's so core to a language's vision._

When talking to the faithful, sure. Language communities need to constantly fight against a tendency towards navel-gazing and only wanting to talk to the faithful.

<comment><USER2> Come on, this not a blog post. It's a page on the internal dev wiki.

<comment><USER12> Sure. Maybe I came across harsher than I meant. Please take this in a constructive spirit. I'm a hoary old veteran who has been a part of a non- mainstream dynamic language community which fell under the naval-gazing trap. In the age of the Internet, a language should always be thinking about outreach. It doesn't matter if you have the best technology, or it it's faster and more nimble. The community needs to keep up with the outreach side.

</comment></comment></comment></comment></comment><comment><USER13> The people who wanted strong static typing have already left PHP. I don't think they're catering to their userbase.

<comment><USER14> The PHP base is huge, I've known many good PHP developers who prefer stricter implementations, but work with PHP because they get paid to, and because they know the language and libraries end up using it for new projects. This proposal provides a gradual migration path for those users, and makes adoption a lot more likely.

</comment></comment><comment><USER15> I'm very interested in this and will be watching to see where this goes. I've just started PHP this summer as an intern at a company that uses it. At first I was really put off by the language, I had never seriously worked with either web languages or languages that used dynamic typing. So many things seemed strange, dated, or even just plain wrong. On top of that, the official documentation is often confusing as far as best practices go and the ~20 year old comments can only add to confusion (though it is neat when one helps out).

All that said, I've come to enjoy the language for what it is. It works seamlessly with HTML/CSS and can provide so much function with little effort put into configuration. Nearly everything I need to be done can be accomplished without frameworks or libraries, maybe just Bootstrap's CSS to make things pretty enough for the end user.

I could see P++ being useful for PHP as a chance at rebranding. PHP horror stories had made me believe it just had to be bad language. If P++ brings all of the good of PHP along with typing and better syntax in general, I believe it would be a much easier sell to devs in a situation like my own.

<comment><USER16> > At first I was really put off by the language, I had never seriously worked > with either web languages or languages that used dynamic typing. So many > things seemed strange, dated, or even just plain wrong.

Did you keep a list of these things? That would be really useful to have, because the discussions on the internal mailing list end up saying "We need to talk to users and find out how they found it" and never do...

<comment><USER15> No I did not make a formal list, but I probably have some gists from when I started that could jog my memory a bit. Where would be the best place to provide feedback?

<comment><USER16> If you don't blog, Medium. Or even a detailed gist.

And then share it around - even on the php.internals mailing list if you're feeling brave (but wear a fire-retardant suit when you do)

</comment></comment></comment></comment><comment><USER4> There's a long discussion of the FAQ in the internals mailing list: [https://externals.io/message/106503](https://externals.io/message/106503)

It's important to understand that this is just a proposal from a core PHP developer - at the moment it seems that most other prominent core developers aren't enthusiastic about this particular approach.

</comment><comment><USER17> I don't get the push to add static typing to dynamic languages. If you don't want to use a dynamic language, then use one of the statically typed ones, like Java, Typescript or Go. If it's a case of dynamic languages not scaling well beyond a certain point because of the lack of static typing, then right tool for the job should apply. Don't scale a dynamic language to that size.

<comment><USER18> It's mostly from companies with existing codebases built using dynamic languages. Plus everybody's standards for tooling are going up and one of the best ways to improve tooling is through types.

<comment><USER17> It's the same argument for continuing to manage Excel applications as they scale up to complicated messes.

</comment></comment></comment><comment><USER19> Rewrite is always a terrible idea. Doing it inside out is an awesome idea.

</comment><comment><USER20> Sounds like python 3 saga all over again, but in php land.

<comment><USER21> I disagree, Python 3.x was always meant to be the next version of the language. This seems to intentionally not take that position because the dev team can't settle on which way to go. Python 3.x was difficult to pull off, but it happened, and I actually think it was a bit too conservative with its changes. This would be a parallel language built-in to the same tool.

It'd be kinda like if there was a way to declare your Python code's major version, and then having Python being able to run either.

</comment></comment><comment><USER22> I see a lot of comments defending PHP with arguments about how fast it is.

They may be right about the PHP7 implementation generally executing faster than most popular Python or Ruby implementations, but they're really missing the point when we're talking about languages and language design, which is what these conversations are really about.

Languages aren't fast or slow, implementations are fast or slow (and all to varying degrees in various contexts).

Implementations are also limited in how much they can impact speed, because the speed of execution is primarily a function of the code, how it's written, and sometimes input size (not how it's executed). In other words, speed improvements derived from implementation optimizations are generally constant- time improvements, not improvements that scale with code complexity or input size.

That means speed of implementation is mostly a concern of certain specific domains where milliseconds really matter. A few of them are HFT, computer graphics, UI rendering, systems programming, etc. Outside of that, code and system design optimizations will be far more fruitful than implementation optimizations.

PHP's design is so intertwined with the HTTP request-response lifecycle that it has been (pretty much) completely and permanently relegated to a very narrowly defined set of use cases, mostly template rendering (or more organized code in the same vein as template rendering, WP, most Laravel projects, etc) and HTTP APIs.

Nearly all PHP use cases involve network latency for every user interaction that makes it past caching layers (to where it's actually executed by the PHP7 interpreter). Allowing network latency to impact user experience for every user interaction (which is practically the only thing PHP knows how to do) isn't acceptable anymore in 2019, and the solution is client-side rendering (JS/V8/webkit/blink/etc). PHP cannot (could not) solve that, because no matter how much you optimize it, it will still take 500ms of network latency to reach the user's browser.

So there's really no use case or domain where PHP is the correct choice if speed of execution is a primary concern, and that would continue to be true even if you made PHP's interpreter run as fast or even faster than V8. The language's design is inherently incompatible with use cases that care about speed, because of how deeply in bed it is with HTTP request-response lifecycle.

What this leaves us with is a language that is only functional in environments and use cases where implementation speed does not matter.

PHP's marriage to HTTP request-response lifecycle has also had the effect of enabling bad coding practices at the interpreter level, because when no process lives longer than a few seconds, a lot of things that should matter just stop mattering. This is why very few people have ever tried to use PHP outside the context of HTTP, and those who have returned with the worst kinds of horror stories.

What that leaves us with is a language that can't even reasonably be called a general-purpose programming language.

And through all the efforts to save PHP from these problems, what are we trying to save? The most inconsistent, cluttered, disorganized and ugly syntax and standard library of any prevalent modern language.

I understand that a lot of people have to work with PHP, that good communities can form and be sustained around that, and that some people can even like it. But if there's going to be any semblance of objectivity in any conversation about language design, it has to be agreed that PHP is a terrible language.

A language that served a great purpose and arguably accelerated the success of the web to a historical degree, but not a language that still needs to be here in 10 years.

<comment><USER23> > The language's design is inherently incompatible with use cases that care > about speed, because of how deeply in bed it is with HTTP request-response > lifecycle.

Maybe I'm misunderstanding you, but it sounds like you're saying that speed doesn't matter when responding to HTTP requests. This couldn't be further from the truth. The less time a response takes, the more requests can be handled per second, which is critical for scaling Web services. PHP 7.x handles 2-3 times as many requests per second on the same hardware compared to PHP 5.

Also, I don't agree that PHP is only suitable for responding to network requests. I've also found it ideal for writing CLI programs which can run on a schedule and share logic with HTTP APIs.

</comment></comment><comment><USER24> There's already a statically typed version of PHP, it's called Hack.

Why anyone would use any variation of PHP for a new project in 2019 is simply _inconceivable_.

<comment><USER5> Somewhat surprisingly, the main PHP implementation has made huge performance improvements since Hack was released in 2014, and has actually become one of the fastest mainstream scripting languages.

Speed + ubiquity in shared hosting environments + a huge corpus of existing frameworks and code make it pretty attractive for web applications, especially of the CRUD/CMS variety.

<comment><USER25> > shared hosting environments

I see shared hosting and VPS eventually going the way of the dodo now that cloud hosting is mainstream. Has the market seen any growth recently?</comment></comment></comment>


Sweden Wants to Fight Disposable Culture with Tax Breaks for Repairing Old Stuff - <AUTHOR> https://www.fastcoexist.com/3063935/sweden-wants-to-fight-our-disposable-culture-with-tax-breaks-for-repairing-old-stuff <comment><USER2> This is beginning in the wrong end IMHO. One of the big problems today is that products are:

1) Not made to be repaired. 2) Not made to last 3) Repair manuals are not easily and widely available 4) Manufacturer have monopoly on replacement parts making them extremely expensive.

I would instead create tax incentives which encourage manufacturers to make repairable and durable items, and pass laws which makes it easier for the competition to make compatible replacement parts so they are cheaper.

How many products don't we have where one stupid little plastic thing breaks and it becomes useless. Getting the part is difficult, expensive or hard to install.

<comment><USER3> There's another angle too. For a long time the only tailor in town was basically a bridal tailor. They charged steep prices for simple work on everyday clothing, and wait times were long.

Fast forward to today. I had ripped holes in a few pairs of pants, and was wondering if it made sense to have them repaired- I was pretty sure I was going to be charged as much as the pants were worth for a fairly simple repair. Luckily there's a new shop in town, run by a group of older ladies who seem to have grown up tailoring, that charges sane prices.

Anyway, the point is repairing can be uneconomical simply because of lack of availability of repair resources.

As an example on the other side, Autozone has enabled countless mechanics with their tool library programs and other basic shadetree services like easy oil recycling.

(P.S. Maybe I should learn to sew & get an inexpensive sewing machine, but that isn't the point)

<comment><USER2> Repair services in any western country will be hideously expensive because it can't be automated and has to be paid western wages, while the products themselves are made in an automated fashion with third world wages.

For this repair stuff to work, we have to make it easier to do so that people can do it themselves.

<comment><USER4> It does depend on the product.

I have a KitchenAid blender and a KitchenAid stand mixer that I've had to repair. In both cases, the part was purchased for under $10 online and repair only took a few minutes. The alternative was buying a new $300 or $100+ product.

Sure, I did the repair myself, but a local KitchenAid service center (yes, they exist!) would probably have done the job even faster.

It boils down to cost/benefit. Would I have done the same thing with a $30 mixer? Not worth it; simpler to buy a replacement, but in this case, the products are built to last (both broken parts were "sacrificial" and designed to fail before something more expensive failed).

<comment><USER5> Sacrificial parts are great design IMO, specifically when they protect a much more expensive part. However, it does bother me that the parts are often very custom and only available from the manufacturer.

I enjoy listening to a conversation where some blowhard talks about was was obviously a shear pin breaking in some mechanical peice of equipment and then replaces it with a grade 8 bolt.

</comment></comment></comment></comment></comment><comment> J-dawg This idea seems so sensible it's a no-brainer. (I'm almost dreading the comments explaining why I'm wrong!) The human race is producing unprecedented quantities of non-recyclable "stuff".

It's pumped out of the ground as oil, converted into plastics, and after a short life, buried in the ground again. Maybe this wouldn't be so bad if much of it didn't also end up floating in the ocean, being eaten by animals and contaminating the human food chain.

The only potential counter-argument I can see with this sort of policy is that the goals of minimising CO2 and minimising waste sometimes seem to be in competition with each other. Anecdotally I've heard of examples where (e.g.) washing china plates has a greater carbon cost than using disposable ones.

<comment><USER6> The _idea_ is great. The problems will be with the implementation, how it will change incentives, any loopholes introduced, cost of enforcement and unintended consequences.

What exactly is a repair? Are parts covered, or only labour? Think ship of Theseus. Is an upgrade a repair, can I put a better compressor, rather than like-for-like in my refrigerator when it's failed? Can I have my TV repaired by replacing all the parts, except the power cord? How broken must something be before it can be repaired? Totally failed, failure imminent, or just worn? (Unintended consequence: people have their things fixed long before it's strictly necessary, leading to greater waste than if they'd just let the thing fail and bought a new one. Another one: appliances are only upgraded to newer, much more energy efficient ones much later than otherwise).

And for labour, where is the line drawn? Is the labour cost of diagnosing a problem covered? What if the problem is bigger than expected, and it isn't economical to carry out the repair? What if I have you upgrade the Foo (not a repair), which is trivial, while you've taken the widget apart anyway to fix the Bar (a repair)? What about repairing something, pocketing the tax break, then selling it (perhaps outside of the country)?

Once you have considered all of these questions, you either have a lot of loopholes which will make the tax break much more expensive, or have a very long body of legal texts, and some very exited lawyers and auditors which will impose an indirect cost on society broadly.

Sure, it's pessimistic, but I'm essentially working backwards from an attempt to impose a tax on dietary fat (for health reasons) in Denmark. Sounds great, right? Hilarity ensued over mixed nuts (the accountants had a field day with that one, and IIRC all kinds of meat being taxed at the same level, and the tax was repealed after only 15 months.

<comment><USER7> A alternative approach could be taxing garbage. Perhaps inevitable once sensors become pervasive and cheap enough. Too some extent this is already done and enforced for disposing of blatantly dangerous things. In some cases you could end up in prison in addition to fines, if caught. The more subtle things that add up to a big problem have been given a lot of leeway.

Right now it is profitable for many parties to extract non-renewable resources, assemble them in to something that has a short life cycle, and be sold to consumers who would rather keep buying the same thing over and over again than a single time. There have been big incentives on the government side for hitting GDP numbers, which has led to both low interest rates and an urgency to extract and process non-renewable resources as quickly as possible. Capital utilization numbers certainly doesn't account for any of this and very well exacerbate the problem.

I don't want to confuse cause and effect here, but the consumption of low quality products directly relates to the volume which they are produced. The actual costs have just been transferred to the future. In the future there will be both fewer resources to produce those goods and more pollution/ecosystem effects to account for it.

At Berkshire Hathaway's shareholder meeting this year Charlie Munger specifically said he thought all petrochemical reserves would be eventually exhausted to make things, not for fuel (there was a specific word he used which I never use and forgot.) Billionaires are thinking about resource exhaustion. Poor, uneducated people are not, unless they are still in hunter- gatherer societies and see problems first hand.

We often think of food and bio-products as renewables, but in many cases they are not. National Geographic (August 2016) ran a great article on the exhaustion of the Ogallala aquifer. California gets a lot of attention, but ground water is being drained globally. Longer term, there may be limits with phosphorus as well. Food production is going to become a lot more expensive, global warming or not.

I don't know about the returns, but Al Gore's Generation Investment Management philosophically probably has the right approach.

The flipside to all of this is that technology can make using the same resources much more efficient. My leading theme for the past 5+ years or so has been exponentially more efficient technology running head on in to global government policies -- of all political leanings -- of creating GDP growth at all costs. The two don't mix, and the results could be very ugly.

<comment><USER8> Unfortunately, there is something far easier and cheaper (from the end user's perspective) to duming in a controlled landfill: dumping in random places.

It's been a long battle in many places to get people to properly dispose of their trash in a proper way, it's still way too easy to revert to prior behavior. In many places in the US, people have to pay a private company for disposal or haul their trash to a landfill (usually in more rural areas). So it's a very visible cost, making savage dumping more compelling.

<comment><USER9> Exactly this. We socialize the cost of garbage disposal in the first world to disincentivize dumping. Worth it, IMO.

</comment></comment></comment></comment></comment><comment><USER10> The only problem with repairing devices is labour cost, nothing else.

I've had a broken subwoofer that I took to a small electronics shop(in UK), and was quoted 60 pounds to even have it looked at. Not repaired - looked at. The subwoofer cost me 80 pounds on ebay. So predictably, it went straight to the bin.

Same with washing machines, dryers, etc - I bought a Hotpoint washing machine for 220 pounds, but a standard call out charge for an engineer to come and have a look is at least 100 pounds. Plus any parts + cost of labour billed per hour = it's cheaper to just buy a new washing machine and at least have a warranty on it.

Now, I feel like this is exclusive to western countries, because people value their time a lot(as they should!) - but where I'm from(Poland) it would be stupidly cheap to get anything repaired. I had an old LCD TV repaired locally, the guy spent half a day fixing it, and only charged 100 zlotys(20 pounds/30 USD) - that included parts.

Not sure how we can change that, unless we get the labour cost down.

<comment><USER11> On your subwoofer, you can try listing that kind of thing on Freecycle/Freegle. Commonly someone technically competetent will pick it up to see if they can fix it.

<comment><USER12> Some cities also have repair cafes, where skilled idealistic people hang out with tools and help you try to fix it yourself.

</comment></comment></comment><comment><USER13> There are downsides to repairability. It means more fasteners to come loose, and more connectors to give trouble. It means more bulky devices; you can't cram everything in as tightly if it has to come out later.

I restore old Teletype machines, which were designed to be 100% repairable. You can take them apart down to the individual parts and put them back together. Everything is attached with screws and lockwashers. Restoring an 80-year old machine is routine.

They are not low-maintenance. Each machine has over 600 lubrication points. There are hundreds of things to be adjusted. You need a sizable tool kit and two suitcases of parts for normal maintenance. And you have to study up on how to do all this. Few people want to bother with that level of detail any more.

<comment><USER14> Are those museum pieces, or are there some insane industries still using actual Teletypes?

<comment><USER13> Museum pieces. It's a hobby.

</comment></comment></comment><comment><USER15> I fail to understand why Scandinavian politics always manage to make sense.

Is that cultural, historical, economical, or does the tough climate force people to think a little bit more about how they manage their society?

<comment><USER16> I see why you and many others living outside of the region would think that. Sweden is very good at only extolling her perceived "virtues" and sweeping the rest under the rug. Waaaay under the rug.

There is a real moral and intellectual superiority among many Swedes that I find deeply distasteful. From environment to politics to how to bag your groceries, and yes--even close a door properly, the "Swedish way" is always promoted as the only "right way."

<comment><USER17> Out of curiosity where do you live? Perhaps this is a regional thing but down here in Skane people are very humble about being Swedish, almost as if they are ashamed of some sort of history.

They certainly wouldn't describe something as "the Swedish way" unless it was something about how the police are ineffective due to bureaucracy or something similar.

<comment><USER18> It seems a lot more complicated than either your view or the grandparents. If you watch Fredrik Lindströms "Världens Modernaste Land" it explores the question of the conflicting Swedish self-image pretty well (and the history of how it became what it is today), but I wouldn't know how to summarize it in a Hacker News comment.

</comment></comment></comment></comment><comment><USER19> There seems to be plenty here that like the idea of lowering the Value Add Tax on repairs. Let me ask: Why stop at 12.5% VAT for repairs? If you'd go all the way down to 0% - the repairs could potentially be up to 25% cheaper than they are now.

<comment><USER3> Perhaps if they make repair _too_ sweet, abuse will skyrocket asymptotically.

Or, perhaps it transforms from "incentive" to "subsidy".

</comment></comment><comment> semi-extrinsic What we really need is financial penalties on companies that make stuff deliberately hard to repair. Set up a department of the Consumer Rights Bureau (or whatever it's called) where people can report devices the've been unable to fix due to deliberate obfuscation/etc., and that forces manufacturers to refund the consumer the entire purchase sum of that device no matter how old it is.

Anecdote: my washing machine recently broke the main bearing, and I was going to fix it. Even found a nice teardown/reassembly vid on Youtube of the exact same model (a bit older than mine). After 2 hours of work, I discover Bosch has gone from using screws on the outer drum to plastic welding it shut. So fixing it means replacing the entire assembly, costing 2/3 of a new machine and with a four week delivery time for the part. I learned this is only done to screw consumers over, and that all manufacturers do it now. The drum still has all the mounting tabs for being screwed together, so they're literally just saving $0.30 on screws.

<comment> J-dawg That is utterly infuriating. Stuff like this really shakes my faith in capitalism.

To think that someone in charge at Bosch has actively decided to 1. Screw over the customer 2. Impose a massive external cost on society and the ecosystem. I honestly wonder how they sleep at night.

The market clearly can't fix this issue, so regulation must be the only option.

<comment><USER20> _To think that someone in charge at Bosch has actively decided to 1. Screw over the customer 2. Impose a massive external cost on society and the ecosystem._

Alternatively, they know that very few people did repair the old versions (barely anyone know how to do it themselves, and labour costs in the developed world make it uneconomical to call someone) and they decided to reduce waste (and costs, win-win) by cutting down on the number of screws.

I don't know what actually happened, but it's unproductive to assume malice. The reality is that for the most part, markets optimize for what's valued for the consumers, and "easily repairable" is not a feature people value that much.

</comment></comment></comment><comment><USER21> Anyone can reuse old fully workable products in their every day life, it really is super easy and in many cases can be cheaper. While I do go occasionally go into thrift or antique stores, I also hit up garage sales, but my main source is ebay.

Besides the good feeling from putting something back into service that would other wise be junked there can be some serious nostalgia involved. Examples, I have a Toastmaster 1b16 fully automatic toaster like my grandparents had in the 50s, works perfect regardless how many slices pass through it. Old glass plates (morgantown, crinkle, etc) that we use every day for eating. Milk glass spice dispensers, salt & pepper, and old glass water containers in the fridge for ice tea. You can even buy old tupperware or ceramic and glass storage for the refrigerator. My favorite has to be a the vintage fans, a six bladed brass Emerson (blades look like ship propeller) is flawless in use and over a hundred years old.

About the only things I won't use are higher tech electronics, efficiency aside the older items may not even be usable because of software or serviceability

<comment><USER22> I really like this idea. I collect old videogame consoles, so I'm pretty used to paying Ebay for nostalgia. However, I wonder if old electronics are much less efficient and end up using more electricity - thus actually causing more harm to the environment than a newer but more disposable plastic model.

</comment></comment><comment><USER23> This is a very nice move to see.

Other people have discussed washing machines below, but there's even more to say on them. Washing machines used to have long warranty periods. Nowadays they tend to be sold with a 2 year warranty, which I believe in the EU is the required minimum. And these manufacturers (Bosch, for example) even have the gall to claim that their products are high quality and that this warranty period somehow proves this, or is in any way a long period.

AFAIK washing machines used to have 10 year warranties, but they cost more along the lines of £800. Now we have £250 washing machines with 2 year warranties. One way of reducing costs is to reduce the number of parts. Sealed tanks, as mentioned below, are one such example. This directly impairs the repairability of the product.

I suspect also that models are released at greater frequency, possibly due to a need to take advantage of price fluctuations in wholesale parts markets (if you can make a washing machine using Part A or Part B, and one month A is more expensive than B, and then this inverts, this creates pressure to constantly design new models to minimise pricing). Though this is just a suspicion, it would make sense: I do know that the (monolithic) spare parts are stocked for a particular model for less time, which means that the prices of the spares which are available are very high.

Water efficiency regulations also appear to have forced modern washing machines to use inadequate water for rinsing. There are numerous stories of hypoallergenic people who find that their new washing machine leaves significant detergent in clothing. Some people have even tracked down old (and for that matter better made) washing machines just to get one which will rinse properly. At other times the actual temperature of the water on the '60 degree' setting has been tested and found to be rather on the low side. (Supposedly all of this efficiency regulation, rather pathetically, only tests the 60 degree programme in the first place, putting a certain degree of competitive pressure on energy efficiency for this setting.) This is particularly insane given that the environmental cost of these quasi- disposable 2-year-warranty washing machines must be much higher than the environmental cost of their resource consumption.

I think consumer goods legislation should recognise that different minimum warranty periods are appropriate for different kinds of product. A legally required minimum warranty period of 6 or 8 years for washing machines, for example, would instantly create pressure on manufacturers to increase the longevity and repairability of their machines.

<comment><USER24> I am only aware of one brand of washing machine that explicitly claims to be designed to be repairable by the end-user--Staber. I have never actually owned or used one before, so I'm not sure how fit for purpose it may be otherwise.

I have successfully repaired other brands of washing machine, dryer, and refrigerator, though. It isn't that difficult, but obtaining the replacement parts is absolutely ridiculous. The first-party site for ordering replacement parts often charges 50-80% of the MSRP of a complete new appliance for just one replacement part.

If any country wanted to encourage repair over replacement, tax incentives are probably not the best way to do it. Publish national standards for appliance form factors, such as case dimensions, screw hole placement, subassembly dimensions, connectors, drive belts, elastic ring sizes, etc. Then phase in requirements that all new appliances must conform to the standard by 20xx.

If all washing machines conform to standard WM-S, WM-M, WM-L, WM-I, or WM-X, and those standards only have three different sizes of drive motor and one kind of power connector and one control connector, then manufacturing third- party replacement motors becomes more economically possible than the current situation, where a Brand X replacement motor might not even fit correctly in two different Brand X models.

The chassis, outer panels, and drum of a washing machine just don't really need to be replaced, unless the paint chips and they rust out. Bearings, seals, motors, belts, control electronics, and knobs, on the other hand, those wear out.

Perhaps I have just been spoiled by ATX standards for computer parts, and connector standards for ISA, PCI, AGP, PCIe, ATA, SATA, SCSI, M.2, and USB. All those standards mean that third-party manufacturers don't have to maintain separate silos for Apple, Dell, HP, Compaq, Tandy, Amstrad, etc. The third- party motherboard manufacturers can just conform to Intel + ATX to sell a product, and maybe also micro-ATX and mini-ITX to cater to small-system builders. It is not difficult at all to assemble a working computer where the CPU + chipset, motherboard, case, power supply, system memory, SSD, hard drive, removable disk drive, graphics card, monitor(s), keyboard, mouse, speakers, wi-fi, and Bluetooth are all made by different companies.

But if you try to replace a single-phase AC 120V 60Hz 5A 0.5hp motor in an appliance with another of a different brand with exactly the same power rating, it probably won't work. The taxes are not the problem--it's getting the parts. As long as the only reliable source of usable replacement parts is the original manufacturer, of course repairing won't be viable. They would much rather sell you an entirely new product!

<comment><USER23> I think this is a bad idea. Standards are nice, but companies shouldn't be coerced into using them because there can be legitimate reasons to not use a standard. It prevents innovation not envisioned by the standard.

I really think the simplest way to make this sort of thing happen is to increase the minimum warranty period. If 8 year warranties become mandatory, companies will need to be able to stock replacement parts for much longer if they don't want to have to replace the machine outright with a newer model when it breaks. They may then find that standardising parts is in their interests, etc.

<comment><USER24> Standards can change when necessary, in a way that gives all participants in the market ample warning, so that no one goes bankrupt when the big companies suddenly change direction.

When PCI was introduced, motherboard manufacturers gradually increased the number of available PCI slots and reduced the number of ISA slots until the point where most of the market really didn't want that last ISA slot as much as they needed another PCI slot. ISA is still a standard. Nobody uses it because PCI was better. Likewise, AGP appeared, and then went away, because PCIe is better. Wi-fi standards have likewise evolved, from A, to B, to G, to N, to AC. Many devices are backward-compatible.

But an ATX motherboard manufactured last week will still fit in the ATX tower case I bought in 1999, with a power supply I bought in 2009. The original manufacturer of that case does not need to stock parts for it, or even still be in business, because if I want another 120mm case fan, 10 different companies can sell me a new one that will fit (and 20 more would be willing to buy a fan from one of the former 10, stencil a logo on it, and resell it to me at a markup).

Perhaps it would be better to enforce a mandatory standard for 10 years, to establish it in the market, then make it voluntary again, so that innovation could occur. Once a standard exists, there has to be a really good reason for deviating from it, otherwise the market quickly allows the non-standard thing to fail. If it succeeds, it becomes a new _de facto_ standard, and the official standard is likely to either adopt it outright or make the next version compatible.

I think you absolutely do have to coerce a standard if one does not already exist. But after it exists, it is largely self-enforcing.

To buck off the standard entirely, you literally have to be the size of Apple. And even then, I know for certain that there is at least one person alive that refuses to buy Apple hardware in part because of their proprietary connector shenanigans in a world where USB is a standard.

<comment><USER25> The ATX standard is the reason why no one bothers buying desktop computers any more except extremists and gamers. These computers are _way_ too large and inefficient and ridiculously noisy too, because they aren't properly engineered for sound and ventilation (because they're held back by the 90s-era ATX standard).

Everyone's just given up on it altogether and now they use laptops, or worse, tablets.

Even corporate desktops abandoned ATX ages ago and went to proprietary SFF cases.

<comment><USER24> I am moving from a laptop as my at-home computer to a quiet-build mini-ITX system literally this week, after the last parts arrive from Newegg.

I think the ongoing market fragmentation resulting from the incompatible proprietary laptop form factors is pushing the whole industry towards consolidation and mergers, and will result in less consumer choice in the long run. I have been privately railing against this crap ever since Dell started shipping not-ATX-but-looks-like-it-at-first-glance power supplies in late 1990s. And Apple has always almost gratuitously used proprietary connectors and form factors, even when a perfectly usable standard already existed. They can all go to a Hell where nothing can interoperate without at least two adapters, and you never have both.

I was driven to the custom build when the headphone jack on my laptop broke. I opened up the case and desoldered the broken one, and the microphone jack, and resoldered the unbroken jack into the headphone jack's place. That worked for a while. Then the laptop keyboard stopped responding to about 5 keys--all of them rather indispensable for typing words. So I replaced the keyboard, and the replacement is just a millimeter too small, so it constantly pops out of its recess whenever it shifts and the plastic clips disengage. Then the headphone-jack-formerly-microphone-jack broke like its predecessor. I already knew the component itself was impossible to find to replace it, so I looked to replace the motherboard. That would cost more than a newer, more capable laptop, if the part had even been in stock.

So I'm building a system such that if anything breaks, I can just replace that one part. I can't get decent repairability without building it myself, and I can't build it myself if there aren't any rassafrassin' _standards_! I would have built my own clamshell computer (not even necessarily a "laptop"), but no one mass-produces an empty clamshell case for consumer sales, because there is no laptop-standard form factor. Replacement parts for laptops are always expensive, and frequently out of stock.

<comment><USER25> I did something of the opposite: I used to have a big desktop. I got a laptop later so I could do stuff at coffee shops and elsewhere. But I eventually got tired of the size and noise of the desktop (even though it was loaded with big, slow 120mm fans), and of the syncing issues with the laptop. I had wanted to build a quiet miniITX system, but finally gave up on that idea because of everything I've seen with "standard" ATX and ITX cases: they just are not engineered for quietness. The best you can do is go to water cooling, and I find it ridiculous that I'd have to go to those lengths for some quiet.

So instead I've just gone the laptop route. I can buy a Dell enterprise-level Latitude laptop on Ebay for $150 easily, that's only a few years old, and it's portable and quiet and reliable. It even comes with a magnesium chassis. And if it breaks, I can buy a new one for $150 and resell the old broken one on Ebay to someone who wants the parts. These laptops are extremely ubiquitous (because they're used by so many businesses), so the parts are readily available if I want to just repair it, plus they're built to be fairly easily serviced (the older E6400 and E6410 had only one screw on the back panel). If you were buying consumer laptops, that was your problem: those things are crap and not made for easy servicing. You complain about "if the part had even been in stock": on my Dells, I can easily buy any part I want on Ebay: a new screen, a new motherboard, a new keyboard, a bare back panel, a speaker grill, anything. Everything is in stock.

You don't need to build a laptop yourself to get decent repairability; you just need to get a decent laptop and not a consumer-grade POS.

Then, so I can have a nice workstation, I got a docking station that supports dual DVI/DisplapyPort monitors, USB3, etc. These docking stations are standardized for Dell business laptops, so I can plug a huge range of them into it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> Globalisation vs the environment

Globalisation means consuming cheap stuff made in a low cost country that does usually not last that long and transported over long distances.

Built to consume in cellphones are integrated batteries and cheap components that by design fail after three years so we buy a new phone. Integrated storage of a limited size that you cannot expand. Making things that does not last is more profitable than making things that last long why is that?

How 16 container ships pollute more than all the cars in the world. [http://www.dailymail.co.uk/sciencetech/article-1229857/How-1...](http://www.dailymail.co.uk/sciencetech/article-1229857/How-16-ships- create-pollution-cars-world.html)

On one hand economists wants us to blindly consume as much stuff as possible since that is good for the economy. The other hand says we pollute the earth and use to much energy which means we need to consume more durable goods which lasts longer.

How do we integrate the environment in the economy?

<comment><USER27> Taxes. Externalities can be factored into the price. Build the price of recycling into the product, and make the vendor liable.

</comment></comment><comment><USER28> Correct me if I am wrong, but under ISDS rules (a la TPP/TTIP), companies could now sue Sweden for potential lost profits as a result of this legislation, right? (Assuming Sweden is signed onto an ISDS treaty, which it probably is not).

<comment><USER29> In the US, I can sue you just for making this hacker news comment. Doesn't mean I'll make it past the first hearing.

<comment><USER28> That lawsuit would be in a civil court, with civil lawyers and actual judges. Not a room full of round-robin corporate laywers.

My comment was not about whether it would be successful. My question was whether it provided the means to initiate a lawsuit.

<comment><USER30> So you'd rather the case be decided by a single lawyer^H^H^H^H^H^H judge than a panel of lawyers. Even in common law jurisdictions, most of these sorts of cases tend to focus on disputes over issues of law (hence tried by a judge), not issues of fact (which are the only issues which proceed to a jury trial). Judges are usually lawyers before becoming judges--that's not terribly surprising, considering that judges are expected to know a lot of legal theory, which is essentially the same training you undergo to become a lawyer.

Fearing the provisions of ISDS would undermine the principles of justice means that you would rather trust the judgements of a single, likely overworked, lawyer who is expected to know the entire relevant body of law and case history for his or her jurisdiction over the judgements of a panel of lawyers who are likely to have somewhat specialized in the area of dispute being covered.

<comment><USER28> You have thrown up a false equivalency and are pursuing it in an odd manner.

What I would prefer is that there is absolutely zero mechanisms for a corporation to sue a government over "potential lost profits".

This is just not at all the same as discussing a potential lawsuit over defamation / libel / whatever "you" would be suing me over a comment for. And, yes, in that case I would still prefer to go through the normal court system with laws written by my legislature rather than a room full of mega corps and trade representatives.

</comment></comment></comment></comment></comment><comment><USER31> The rationale behind is sound but the trick is to design the rules so that all gains aren't lost in the cost for administering the rules. Differentiated VAT and/or deductions are notoriously expensive and prone for cheating.

It is very difficult/expensive to check if a service provided was the repair of an existing item or a new item installed (or something else entirely).

</comment><comment><USER32> So the opposite of Cash for Clunkers.[1] Would a Keynesian then expect these tax breaks to crash the economy?

[1][https://en.wikipedia.org/wiki/Car_Allowance_Rebate_System](https://en.wikipedia.org/wiki/Car_Allowance_Rebate_System)

</comment><comment><USER33> This has probably more to do with Sweden having so high taxes on labour that repairs becomes impossible without a tax break.

An average Swede gets ~ a third of the money the company pays for his wages. (30% tax, 30% in social charges etc.)

If he is going to rent an hour from someone with the same salary as himself/herself, that will be three times the hourly salary. (I'll ignore the other costs here.)

So, in sum, because of the taxes etc, a Swede have to work [at least] a full day to buy an hour of work time.

(Reservation for the exact numbers. It was a while since I lived in Sweden. People might keep 40% or so now, but I also ignored a lot of extra costs.)

<comment><USER34> According to the OECD Taxing Wages report [1] for 2016, the total tax wedge for Sweden, including employer contributions, is 42.7%.

(Note: for those who are confused about it: This is _not_ the percentage tax paid out of contracted wages - the average tax paid on the contracted wages are much lower)

> If he is going to rent an hour from someone with the same salary as > himself/herself, that will be three times the hourly salary. (I'll ignore > the other costs here.)

That may be true, but not due mainly to taxes, but because you are also paying for "dead time", marketings costs and others.

[1] [http://www.keepeek.com/Digital-Asset- Management/oecd/taxatio...](http://www.keepeek.com/Digital-Asset- Management/oecd/taxation/taxing-wages-2016_tax_wages-2016-en#page20)

<comment><USER35> Don't forget to add their 25% VAT rate if you actually want to spend your money.. so you end up with 42.7% + 25%. That's nuts.

<comment><USER36> Wouldn't that be 42.7% + (57.3% * .25) = 57%?

<comment><USER33> The difference is that the previous government lowered the taxes for the first 20K SEK earned per month. (This was mostly after my time in Sweden.)

My point regarding the impossibility of service work at these levels stands. Quite a few tax exemptions had to be created to get the population to start paying taxes for those kinds of jobs.

Edit: For the part of the salary above ca 19K/month, you're correct. In fact, the taxes are progressive, so it is even worse.

</comment></comment></comment></comment></comment><comment><USER37> What is it about Nordic countries that allows them to avoid corruption and political decay? As an outsider, it seems that they're always experimenting with new approaches and evolving the government and laws to keep up with the changing needs of the citizenry.

In the US, I felt like we were starting to get somewhere back in the 90s, but it's been a downward fall since then. Now, corruption permeates even at the local levels. Many of the people that I talk to blame the lack of time. I don't know - but there's major apathy and cynicism, and it seems to be getting worse.

</comment><comment><USER38> Odd that appliances are on the list because we're likely to see another wave of changes for refrigerants.

Back in the bad old days people used refrigerants such as HCFCs that were bad for the ozone layer. Now they use straight HFCs (no chlorine) but those are potent global warming gases. At some point there is going to a push to replace those with fluoroketones.

So repairing old air conditioners, refrigerators and such may not be such a great idea.

</comment><comment><USER39> At this time, I am fighting with a Samsung Syncmaster 2333SW Plus. It started fading to white every time blue was displayed, then it would overflow back to a normal image and fade to white.

I'm told this is a fault in the t-con (timing controller) board - some people have noted it's just a bad solder connection, so I'm going to have a look before I replace the board.

I have a donor screen that I got apart (the 2333HD) in about four hours, but the 2333SW Plus... I've been trying for at least 12 hours to get that thing apart. (I've sanitized this post.) The sides of the casing are free, but the top and bottom edges just won't let go, and I can't afford to break the internal clips.

I honestly can't decide between RageGuy and Samir's rage at the printer not printing properly.

</comment><comment><USER40> Heaps of old stuff is broken because of planned obsolescence. Is it not a waste trying to repair that rubbish that was originally designed to break soon and hard and expensive to repair? Lowering tax for companies that produce sustainable products seems more efficient to me.

</comment><comment><USER41> One side effect of building for repairability is that objects will be bigger and clunkier, which will use more materials and cost more (and burn more fuel) to transport.

I'm all for repairability, and even better, building things that will last 25 years, not 25 months. But that will come at a different price than perhaps many expect, and in some cases, it actually won't make sense.

Money is how we measure and gate access to scarce resources. If it costs more to build repairable items, and then repair them, then it is likely the case that those repairs actually waste more resources! However, insofaras the resource being wasted is human work time, there is of course a trade-off to be made.

</comment><comment><USER42> If a company made a extremely enduring and time-resistant valuable product, wouldn't it make more sense for the company to lease the product out to the customers - and for the state to support this model by making it tax-free after a time?

</comment><comment><USER43> IMO the only reason we do not have a culture of repairing is because we subsidize the waste processing stream and thus we only see lower upfront costs.

If I had to pay an extra $25 disposal fee upfront on a microwave, maybe I'd be incentivized to buy a quality item or maybe repair it in the first place.

As well, repairing/reusing is a function of average cost of a worker. If a repair man has a fully loaded cost of $50 an hour, then you're not going to see many repairs happen. If its $5 an hour then you might see more. Expensive labor leads to all kinds of seemingly insane behavior.

</comment><comment><USER44> Impermanence could be considered a value in certain cultures. "Disposable Culture" vs. "Repairing Old Stuff" isn't a useful dichotomy. Everything has an expiration date, and often that date is carefully considered as part of a product's design. The goal shouldn't be fixing old stuff, but finding out how to increase efficiency either by making product's expiration dates further in the future, or compromising having an imminent expiration date by making the product easy to recycle.

<comment><USER45> What cultures value impermanence? The only one that comes to my mind is the US -- and we're unsustainable, burning through resources on an unprecedented scale. Take the time to do things properly, and they endure: Caxtons are the gold standard of book collecting in England today, and Albrecht Duerer's house still stands in Nuremberg.

(You also spend less money by building, or generally making, to last. Western and Central Europe have a lower GDP than the US but a comparable standard of living...)

</comment></comment><comment><USER46> To truly fix the situation would probably require: 1) Tracking every single saleable physical asset 2) Paying manufacturer's a small fixed income type subsidy for every extra year their product lasts. 3) Charging manufacturer's a small penalty tax when their product becomes waste.

#2 is essential because otherwise manufacturing obsolescence into the product will be more profitable for the company. The economic reward of long lasting product & enduring customer relationship needs to be better than sell one every few years.

</comment><comment><USER47> Never mind repairing old stuff; just make it easier to pass on stuff. I suspect that Sweden is similar to Norway (where I live) and immense amounts of current electronic gear is thrown away. A lot of it is in usable condition (for some value of usable anyway) but I am not allowed to take it away from a recycling station.

</comment><comment><USER48> Should the state really presume to sway cultural trends? It seems strikingly arrogant and likely to be counterproductive.

</comment><comment> a-no-n My MagSafe adapter has probably 5 packets of Sugru, both preventative (anti- drop and strain-relief) and repairs, on it and some two-part epoxy to fix some minor nicks in the small cable. The one of the cable winding "wings" just broke, but it still works. I might buy a second in 2018.

</comment><comment><USER49> Repairs are uneconomical because they have to compete with the assembly line. Assembly lines are an incredibly productive way to make identical things. Repairs are typically different. Like Tolstoy said, "Happy families are all alike; every unhappy family is unhappy in its own way."

<comment><USER50> You can adjust assembly lines to make your products easier to repair though. For ex: it's far easier to fix my old thinkpad laptop than my newer X1. Part of this is the demand for smaller/thinner products but I also feel it's a lack of effort by the manufacturers these days.

They are almost incentivized to make repair difficult and deprioritize longevity in favour of the customer buying new devices each year. Which is about as long as any of my cell phones typically last before I break or lose them (1-1.5yrs), although I'm a bit clumsy and forgetful (a symptom of ADD :P).

</comment></comment><comment><USER51> Basic income + no minimum wage would make it much more attractive to do local repairs instead of manufacturing stuff far away where wages are lower or labor and environmental regulation much more lax.

In my country, youth unemployment is around 20%.

</comment><comment><USER52> Reducing a 25% tax on repairs is seen as an insightful and brilliant way to incentivize repairs? Well knock me over with a feather. Where is the previous article about how that level of tax is crazy to begin with?

</comment><comment><USER53> I think ideal way is to charge people for dumping the waste, and use that money to properly recycle all the material therein. May not be ideal in terms of energy efficiency, but its highly workable solution.

</comment><comment><USER54> Alternative approach: Require people keep everything they buy for 10 years. They'll be quickly fed up with their houses full of old broken gadgets, cardboard boxes and used wrapping foil.

</comment><comment><USER55> "Own few but good things" \- love everything about this as it relates to living "modestly minimal" as I call it. Buy a small amount of high quality possessions, and take care of them.

</comment><comment><USER36> Wouldn't a high sales tax promote exactly that?

<comment><USER56> Sales tax also applies to the services.

More over, as labor is highly taxed in Sweden, it makes local repairing disproportionally more expensive compared to the manufacturing in a country with smaller labor costs.

<comment><USER35> > More over, as labor is highly taxed in Sweden, it makes local repairing > disproportionally more expensive compared to the manufacturing in a country > with smaller labor costs.

Sounds like a very clear flaw in their economic and taxation model.

<comment><USER56> This flaw is called free trade. This problem used to be fixed by higher customs. But we generally prefer free trade, so they have to try other initiatives.

</comment></comment></comment></comment><comment><USER57> I guess they'd need to explicitly de-classify commonly repaired items from this?

</comment><comment><USER58> Funny... I tried to fix an IKEA lamp and finding parts was impossible.

</comment><comment><USER59> Could a company hypothetically create an extremely solid phone with interchangeable parts when upgrades become available, and it's not done just because they profit more with the current model? Or is this just not feasible?

<comment><USER60> Yes, but it would be huge and expensive and nobody would want to buy it. Plus modularity and BW compatibility requirements would severely limit the design space available for further evolution (both look and feel and internal hardware aspects). Highly integrated hardware and systems-on-a-chip do have several advantages but are pretty much the antithesis of modularity.

</comment></comment><comment><USER61> I was happy to see that the author did pause to note the irony of this policy being implemented by the same country that brought the world IKEA.

<comment><USER62> Besides the category error of conflating corporate and state implementations - complaining about the existence of IKEA is a bit like complaining about the existence of fast food. Clearly there is massive demand for both, so lobbing darts at the most successful producers of same avoids all of the interesting questions.

<comment><USER61> I don't detect any complaining in my post. Just noting the (considerable) irony in Sweden leading the charge against "disposable culture", as did the article's writer.

<comment><USER62> Perhaps I read more into it than you meant - fair enough. You are still conflating Sweden and IKEA, which is just silly.

Also IKEA's m.o. is more cheap and cheerful than disposable, so what irony there is, is a bit weak.

<comment><USER51> Have you tried moving Ikea stuff? A lot of it is unlikely to stay in one piece. And I don't mean it can be disassembled and reassembled. Even their chipboard is of lower strength than ordinary, quite an achievement.</comment></comment></comment></comment></comment>


Learning from building a React Native app - <AUTHOR> http://blog.zmxv.com/2015/09/what-i-learned-from-building-react.html <comment><USER2> I don't understand what "native" is supposed to mean for a JS (web?) app. It seems rather senseless.

<comment><USER3> the ui is native

<comment><USER2> You mean, like, everything that runs in your browser has a "native" UI (namely that of your browser)? That seems to make the term "native" mean nothing at all. What runs in your browser and doesn't use your browser's UI?

<comment><USER4> React Native apps don't run in a browser. That's kind of the whole point...</comment></comment></comment></comment>


The Dreams of an Inventor in 1420 - <AUTHOR> http://publicdomainreview.org/2018/01/24/the-dreams-of-an-inventor-in-1420 <comment><USER2> Copy of the article: [http://archive.is/gj3sf](http://archive.is/gj3sf)

</comment><comment><USER3> That last image with the spheres seems like one of the most straightforward... The sphere is in 2 halves, the long U shaped piece with the barbs ties them together. The clasp at the top can enter the U shaped piece before it is inserted into the sphere. The tuning fork thing is the key. insert it through the 2 holes in the bottom and the barbs on the U shaped piece are bent back so the U can be removed.

</comment><comment><USER4> It seems the correct URL is [http://publicdomainreview.org/2018/01/24/the- dreams-of-an-in...](http://publicdomainreview.org/2018/01/24/the-dreams-of-an- inventor-in-1420/) with the final slash.</comment>