Python for Android - <AUTHOR> https://github.com/kivy/python-for-android <comment><USER3> Please note that Python for Android project is not meant to be used with Kivy only anymore.

It's a project that allow you to compile Python and dependencies, and package it along your own application. You could for example compile Numpy, ZMQ, sqlalchemy, zeroconf, etc...

We have a mechanism called bootstrap that allow you to select your primary technology that you're going to use for your application, such as "sdl2" (required for kivy), "webview" (it just start a webpage that connect to your phone port 5000, so you can start an embed webserver such as Flask to serve your app), "service_only" (if you don't need any kind of UI). New bootstrap can be written to support another type of apps.

Also, you could embed your whole UI in pure java if you wanted too, as the directory libs (to include .jar) or src (to include .java) are compiled. So you can imagine having your app in Java, but still call Python for something else if you really wanted too.

<comment><USER3> Just an addition, there is many others alternatives, but it may be hard for others to be able to compile the Python extensions you want (or impossible). That's what we wanted to do here: ability to pick the extension needed, provide a "recipe" that contain specialized tricks or patches to extension for running in Android, etc.

</comment></comment><comment><USER4> Some years ago I tried to use python-for-android, but found it too much of a burden to do what I wanted, which was just to simply integrate existing python code in native android apps (with Java). Don't know how much has changed since then, but python-for-android's bootstrap used pygame and pysdl to start an opengl scene, where you would have completely non-native widgets.

I rolled my own solution [0] which uses crystax distribution's of CPython for android (Python 3.5), and I did a very simple JNI bridge between java and cpython using an RPC-like mechanism over json. Basically, on the java side you call a function and pass the arguments [1], and on the python side you "route" it to your own functions [2]. I think all pybridge's code is very very simple for those who understand a bit of Java, a bit of C and a bit of Python, and I explain in the readme how everything works, including which classes/files are relevant.

I have an app where I use this [3], and although it hasn't earn me much money so far (~20 downloads, 110€), it is rated 4.7 in the play store, so the performance of accessing python functions on android is not bad at all..

[0] [https://github.com/joaoventura/pybridge](https://github.com/joaoventura/pybridge)

[1] [https://goo.gl/sw4JLt](https://goo.gl/sw4JLt)

[2] [https://goo.gl/17SlVb](https://goo.gl/17SlVb)

[3] [https://play.google.com/store/apps/details?id=com.flatangle....](https://play.google.com/store/apps/details?id=com.flatangle.charts)

<comment><USER5> I looked at the app, as far as I can tell, it seems fairly basic.

Why use python for this ?

<comment><USER4> Because I already had a lot of code doing a lot of things in Python ([https://github.com/flatangle/flatlib/](https://github.com/flatangle/flatlib/))..

</comment></comment></comment><comment><USER6> Can't do a lot of digging on this right now(phone), but for just running Python of various versions take a look at termux, QPython and SL4A. Some may now be defunct, but searches on those should guide you to current info.

It this is instead a way to package and distribute compiled Python it may be interesting but I'm not sure Android is the best target.

<comment><USER7> Seconding this.

1\. If you haven't already discovered Termux, do. It's the one thing on Android that doesn't manifestly suck.

2\. I don't mess much with Python, but Termux + python + pip allowed me to install youtube-dl and be able to download and play videos (from numerous platforms) on-device rather than streamed-only.

<comment><USER8> I followed the instructions at this site to install Jupyter/Python including numpy and matplotlib, on my Android phone:

leouieda.com/blog/scipy-on-android.html

It worked as advertised. Granted, it was a symbolic gesture, since I can't imagine doing any real work on my phone, but it answers the question of whether I could live with an Android tablet as a laptop replacement. My definition _du jour_ of a "real computer" is anything that can run Jupyter. ;-)

Being kind of ignorant of the inner workings of this stuff, I was quite impressed.

<comment><USER9> I can tell you from experience Termux works mostly very well on Chromebooks which come with the Play Store. Gives a nice option to putting the device in developer mode and installing Crouton.

The one main problem involves shortcut keys. Chrome OS intercepts certain key presses, such as "CTRL N" or "CTRL T", and routes them to the browser. Makes emacs / vim a little annoying, but a Chrome OS dev assured me this was on the "to fix" list.

<comment><USER7> No such keyboard issues on my tablet, FWIW.

</comment></comment></comment></comment></comment><comment><USER10> OT but this made me think of RubyMotion, which I remember being wildly popular (among Rubyists) back in the day but don't hear much about it now [0]. How many people still use it?

[0] [https://hn.algolia.com/?query=rubymotion&sort=byPopularity&p...](https://hn.algolia.com/?query=rubymotion&sort=byPopularity&prefix=false&page=0&dateRange=pastYear&type=story)

<comment><USER11> RubyMotion was amazing but what it had in ability was superseeded by React Native with everyone and their mother doing a React + Rails combo for websites now. In the end, writing plain Ruby became more cumbersome than writing React so people just abandoned the platform. The price tag of React Native didn't help the issue either (free) along with it just being a npm install away.

<comment><USER12> I do not thin react native superseeded RM by being a better product. RM is super polished but failed at popularizing itself hence losing a very big chunk of the market. RN on the other hand crushed their competitors by its huge popularity, number of articles, documentation and tutorials available.

<comment><USER13> > RN on the other hand crushed their competitors by its huge popularity, > number of articles, documentation and tutorials available.

That's means it's a better product. You can have the best code in the world, but nobody is going to give a damn if they don't know how to use it.

<comment><USER14> You've not heard of "worse is better" [1] then. Many times in the past the worse product has succeeded over the better product.

[1] [https://www.dreamsongs.com/WorseIsBetter.html](https://www.dreamsongs.com/WorseIsBetter.html)

<comment><USER11> Because the people who implement the technology aren't those who can admire the "quality". If it's been 6 hours at work and I have 30 minutes to pick a tech to start evaluating, I'm picking the one with better documentation/easier curve. Most people aren't a Facebook and don't need the best greatest thing in the world, just something to fix the current problem. You can kick the can down the road.

</comment></comment></comment></comment></comment></comment><comment><USER15> From a very cursory look this doesn't seem to hook into the android framework at all including the native UI or other system goodies like notifications and locations, etc. The apps would run in their own little world with their own provided non-native UI.

<comment><USER16> This seems to be just one of the components of a larger set spread across multiple repos. [1] seems to be the component to access native APIs.

[1]: [https://github.com/kivy/plyer](https://github.com/kivy/plyer)

<comment><USER17> AFAIK, Plyer will give you access to native APIs like accelerometers, but not to the native GUI layer.

An alternative approach is VOC ([http://pybee.org/voc](http://pybee.org/voc)) - this is compiler that takes Python code, and output Java bytecode. This means you can use the Android native UI components, because your Python code becomes indistinguishable from code written in Java. Combine with Briefcase ([http://pybee.org/briefcase](http://pybee.org/briefcase)), and you can get an Android app with one command; combine with Toga ([http://pybee.org/toga](http://pybee.org/toga)), and you can get a cross platform app using native system components.

If you want to see this in action, here's a video: [https://www.youtube.com/watch?v=RisCgSIWwLA](https://www.youtube.com/watch?v=RisCgSIWwLA)

(Full disclosure - I'm the primary author of these tools)

<comment><USER18> Hey Freakboy, always good to see your coding projects. Keep up the good work!

</comment></comment></comment></comment><comment><USER19> This project(Kivy) doesn't use the native Android UI components, so it's a bit of a negative. You don't get any of the stuff like accessibility.

So I remember hearing that a difficulty with hooking Python to Android is that there's some sort of limit to the amount of Java methods you can access through the JNI, but I could never find a proper explanation of this.

If I just had a version of CPython compiled on Android, given Java's nature of running on a virtual machine, wouldn't it be possible to dynamically load arbitrary classes through the JNI and use the native Android stuff?

What are the primary difficulties to this, if you ignore performance?

<comment><USER17> The primary difficulty is that JNI is _really_ limited on Android. It exists, but it's really slow, and there are some hard limits imposed at the kernel level.

An alternative approach is VOC ([http://pybee.org/voc](http://pybee.org/voc)) - this is compiler that takes Python code, and output Java bytecode. This means you _can_ use the Android native UI components, because your Python code becomes indistinguishable from code written in Java. Combine with Briefcase ([http://pybee.org/briefcase](http://pybee.org/briefcase)), and you can get an Android app with one command; combine with Toga ([http://pybee.org/toga](http://pybee.org/toga)), and you can get a cross platform app using native system components.

If you want to see this in action, here's a video: [https://www.youtube.com/watch?v=RisCgSIWwLA](https://www.youtube.com/watch?v=RisCgSIWwLA)

(Full disclosure - I'm the primary author of these tools)

<comment><USER20> I always get the feeling that if the Android team got to choose the NDK would never been a thing, rather it was an upper management decision that they had to offer some kind of support for C and C++.

Even nowadays with Android N, the NDK is kind of WIP.

<comment><USER21> We did Computer Vision work on Android before OpenCV ported to Android and the NDK was the only realistic way to achieve any real-time video/image analysis performance. Using the NDK was tedious and HR-expensive but we had no choice. So in that case, we were glad the NDK was an option.

<comment><USER20> I am also glad it is there, it is also where I spend most of my Android coding time.

My point is that the way Android team deals with NDK users seems like the NDK was imposed on the team, and they don't spend much developer time on it, looking from the set of open issues, outdated documentation where ndk-build is still used instead of cmake, integration with aar is still in progress, and set of available APIs.

[https://code.google.com/p/android/issues/list?can=2&q=NDK&so...](https://code.google.com/p/android/issues/list?can=2&q=NDK&sort=-opened&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter%20Opened)

I cannot deny they have done lots of progress, but there seems not to be much interest in having a comparable experience to the Java tooling.

</comment></comment></comment></comment></comment><comment><USER22> Firstly, Looks like it's been around for a couple of years. Is the idea that you could deploy your python code as an android app. I'd like to see some examples apps in the wild, so I could check out performance, etc. But could be cool. I can imagine redeploying my web-app with this, and then doing some funky database syncing with the cloud.

</comment><comment><USER23> I remember hearing about the Nokia phone with Python:

[http://www.artima.com/weblogs/viewpost.jsp?thread=148064](http://www.artima.com/weblogs/viewpost.jsp?thread=148064)

I never got to use one, but apparently there were APIs for just about every part of the phone that could be scripted with Python.

<comment><USER24> Yup, you could run it on any S60 phone, and even access stuff like 3D via OpenGL ES.

</comment></comment><comment><USER25> How big are the generated APKs compared to a normal Android app of similar functionality?

<comment><USER26> It looks like a 'Hello World' will result in about a 10 Mib APK which takes up roughly double that space when unpacked on the mobile device. This is not surprising because the APK must contain the Kivy library and a Python interpreter. After that initial hurdle it will scale relatively well, though that can depend on which extensions and other files you include.

<comment><USER25> That's not too bad. I see plenty of apps installed on my phone that are 2 to 6x that size, and a few even larger. Appreciate the info.

</comment></comment></comment><comment><USER27> I know this is about Python for Android. I just wanted to say for all those iOS users who might read this and think "well this is of interest" you might want to check out Pythonista

[http://omz-software.com/pythonista/](http://omz-software.com/pythonista/)

its not quite the same, but you can build apps (sorta, i guess?) right on iOS, you can run python, and with a package like stash you can even use pip!

[https://github.com/ywangd/stash](https://github.com/ywangd/stash)

this is cool for android though!

</comment><comment><USER28> From the issue tracker, it looks like the project could use some help - <USER2> want to hop on and triage?

<comment><USER29> you're someone

</comment></comment><comment><USER30> I wonder if this allows running things like mitmproxy on your phone. Or maybe someone is aware of a good alternative?

<comment><USER31> I've actually run mitmproxy on my phone in a chroot before, somehow (several years ago now). However, I can't remember if it was a rooted phone or not, sorry.

Suffice to say it's perfectly possible, most phones are plenty powerful enough.

[EDIT]: if it's not rooted, I know you can still use it with a large portion of mobile traffic by adding the trusted cert it generates and then setting it up as a network proxy through standard settings changes (ie: no iptables transparent proxy necessary). I believe some apps will detect this.

<comment><USER30> Yeah no problem if root is required, I just wanna know what did you use as a layer in between it and android. Maybe there's a relevant tutorial I could follow?

</comment></comment></comment><comment><USER32> Congrats to the whole team on the release!

</comment><comment><USER33> can Python now be used instead of Java?

for example Go language, I heard is not a total substitute for Java for Android

<comment><USER34> Yes, but with the caveat that you'll be running interpreted .py using a cross- compiled Python executable, rather than Python compiled to Android bytecode. Kivy itself (the project that spawned p4a) is a full cross-platform library for UI development; for any heavy computational lifting you'd want to farm it out to a C API library and import it the usual way, modulo some p4a recipe incantations.

</comment></comment><comment><USER35> I used Qpython for a little while. I think it's based on kivy.</comment>


Artificial intelligence for news: looking for beta testers - java-man http://news-ai.com

<comment> java-man Like so many startups, we claim to apply "artificial intelligence" to sort and analyze "your news". Email support@<...>

<comment><AUTHOR> The interesting market for this is for people who are going to act on the news. For instance, a business development person could waste hours a day reading news articles to look for potential customers.

<comment> java-man a year looking at the news through this system tells us there is very little intelligence in the news...</comment></comment></comment>


In Cryptography, Advances In Program Obfuscation (2014) - <AUTHOR> https://www.quantamagazine.org/20140130-perfecting-the-art-of-sensible-nonsense/ <comment><USER2> For those wondering why you haven't yet seen practical applications of this research, this answer[1] on Stack Exchange does a decent job of explaining:

> What must be understood is that in all these constructions, each circuit > gate must map to an instance of Gentry's fully homomorphic encryption > scheme, and at every clock cycle for the obfuscated circuit, all gates must > be processed, regardless of whether they are "active" or not in the circuit > (this is a big part of why the obfuscation theoretically works: it does not > reveal active gates, by always making them all active). This[2] article > gives performance result: on a rather big PC, we are up for minutes of > computation. That's for each gate in the obfuscated circuit, and for each > clock cycle.

> There are millions or even probably billions of gates in the envisioned > circuit, given the setup of functional encryption: the "obfuscated circuit" > must include asymmetric decryption and validation of zero-knowledge proofs. > So now we are talking about using all the computers currently running on > Earth, all collaborating on the computation, and they might make non- > negligible progress towards running one instance of functional encryption > within a few centuries.

[1] [http://security.stackexchange.com/a/50972](http://security.stackexchange.com/a/50972)

[2] [http://eprint.iacr.org/2010/520.pdf](http://eprint.iacr.org/2010/520.pdf)

<comment><USER3> Another reason why you won't see practical applications for a while is that we aren't really sure yet whether indistinguishability obfuscation exists at all. The first proposed construction has recently been broken [1], and while other candidates do exist, they are mostly based on similar principles, so most experts wouldn't bet a lot on their long-term security.

This is a rapidly evolving field, though, so I'm cautiously hopeful that some genuinely novel ideas will emerge soon to overcome the current stumbling blocks.

[1] [https://eprint.iacr.org/2016/147](https://eprint.iacr.org/2016/147)

</comment></comment><comment><USER4> Let me save you some time. Here's the beef. The rest of the article is prognostication and the names of many famous research institutions.

 _The team's obfuscator works by transforming a computer program into what Sahai calls a "multilinear jigsaw puzzle." Each piece of the program gets obfuscated by mixing in random elements that are carefully chosen so that if you run the garbled program in the intended way, the randomness cancels out and the pieces fit together to compute the correct output. But if you try to do anything else with the program, the randomness makes each individual puzzle piece look meaningless._

 _This obfuscation scheme is unbreakable, the team showed, provided that a certain newfangled problem about lattices is as hard to solve as the team thinks it is. Time will tell if this assumption is warranted, but the scheme has already resisted several attempts to crack it, and Sahai, Barak and Garg, together with Yael Tauman Kalai of Microsoft Research New England and Omer Paneth of Boston University, have proved that the most natural types of attacks on the system are guaranteed to fail. And the hard lattice problem, though new, is closely related to a family of hard problems that have stood up to testing and are used in practical encryption schemes._

<comment><USER5> I can't wait to find exploitable side-channels in the first-to-market implementations of this idea.

Lattice-based crypto is all the rage among snakeoil marketing (right after One-Time-Pads).

<comment><USER6> What's wrong with one time pads ?

<comment><USER7> Nothing's _wrong_ with one time pads. They're as good as they've ever been, which is to say: completely impractical for use on the internet and almost all other computing applications.

Also, no forward secrecy.

<comment><USER8> >Also, no forward secrecy.

My understanding of OTP's implies that these must be used only once. As such they offer the same PFS as all the schemes I know of. PFS does not guarantee the secrecy of a specific message. It does guarantee that if you are able to crack one message you can't use the key to crack others. Therefore if you use an OTP only once it gives you the same guarantees.

</comment></comment></comment></comment></comment><comment><USER9> Am I wrong or the phrase "a type of mathematical protocol for convincing someone that something is true without revealing any details of why it is true" is wrong and should be "a type of mathematical protocol for allowing someone to verify that something is true without revealing any details of how it is calculated to be true?"

<comment> Ar-Curunir No, that's what a zero knowledge proof is; at the end of the protocol, you are convinced that some statement is either true or false, and learn _nothing else_ about the "proof".

In NP-terms, you learn whether the NP instance is true (eg a 3SAT clause is satisfiable), but learn nothing about the witness (eg the assignment to the clause's variables).

<comment><USER9> So, which statement is right/better?

<comment><USER3> Not completely clear to me what you mean by "calculated to be true", but you may want to look at the difference between computational and statistical zero knowledge. A computational ZK proof hides the witness from computationally bounded (i.e. probabilistic polynomial time) adversaries. Statistical ZK, on the other hand, hides the witness from any adversary, even if they can carry out an unbounded amount of computations (there are slight subtleties there depending on the precise security model but that's the basic idea).

</comment></comment></comment></comment><comment><USER10> Title: Perfecting the Art of Sensible Nonsense

Date: 2014

Previous discussion: [https://news.ycombinator.com/item?id=7153657](https://news.ycombinator.com/item?id=7153657)

</comment><comment><USER11> This is precisely right: "Similarly, a black box obfuscator would provide a way to instantly convert any private cryptography scheme to a public one that could be performed over the Internet by strangers. _In a sense, obfuscation is the key to all cryptographies_."

Ciphertext is a higher-order, or simply, highly ordered, deterministically derived version of plaintext.

<comment><USER12> > Ciphertext is a higher-order, or simply, highly ordered, deterministically > derived version of plaintext.

Sorry, but what in the fuck are you even talking about?

<comment><USER11> It's a shame that so little philosophical thought has been given to cryptography. In fact, the very concept of order appears to have been lost in all contemporary discussions. Consider Leibniz's discussion and you may see some shocking origins: [http://www.labirintoermetico.com/12ArsCombinatoria/Leibniz_G...](http://www.labirintoermetico.com/12ArsCombinatoria/Leibniz_G_W_Dissertatio_de_Arte_combinatoria.pdf)</comment></comment></comment>


Web Trends of 2009 - Structured Data - <AUTHOR> http://www.readwriteweb.com/archives/top_5_web_trends_of_2009_structured_data.php

<comment><USER2> Semantic web? I think that was 2005, not 2009. The web of data is available through APIs, not semantic markup mixed into the view.</comment>


Where is the best(cheap too) place to turn for logo design? - <AUTHOR>

<comment><USER2> It's really very easy to create your own logos.

I'm not an expert, but fooling around with photoshop/illustrator and looking up several tutorials is a lot more rewarding than you might think. I consider myself fairly skilled at making logos, and that's not due to taking classes or having an extremely artistic mind, it's due to spending several hours trying out different options and trying to emulate other logos.

I'm not sure if you've tried, but give it a shot. It's quite easy to pick up, and also extremely satisfying when you settle on a design you like.

I'm just not an advocate of having to pay someone else for something you can easily learn how to do and especially with a logo, you'll feel more of a connection to it.

</comment><comment><USER3> Logos don't have to be very complex to serve their purpose:

https://www.paypal.com/en_US/i/logo/paypal_logo.gif <http://pics.ebaystatic.com/aw/pics/logos/logoEbay_x45.gif>

</comment><comment><USER4> You could try Cool Text for free (<http://cooltext.com/).> Their default settings are a bit naff but with a little effort, time and some 'taste' you can make something half decent.

</comment><comment><USER5> If you want cheap then do it yourself. If you want to make money doing business then and you realize that your logo is th face of your company, then pay someone a standard fee for a quality job.

In the end you won't be sorry.

</comment><comment><USER6> A University with a design department. Make some friends, chat up some people, and ask nicely. It will end up better than if you did it yourself, be fairly cheap if you're nice, and be a portfolio piece for them.

</comment><comment><USER7> I've heard good things about <http://logoworks.com> if you're looking for something cheap and decent looking.

</comment><comment><USER8> Dude Logos are so 1990s, just write the name in bolder and bigger font that is it.</comment>


Facebook Privacy Bugs w/ New Design - <AUTHOR> http://www.techcrunch.com/2009/03/20/facebook-bug-reveals-private-photos-wall-posts/

<comment><USER2> This bug has been around for at least 6 months, ever since just after the last major Facebook Profile redesign that moved profiles towards the 'Boxed' design.

For me, the bug lasted for at least an hour, or at least enough time for me to notice the bug, re-create a few friends lists, and browse a couple profiles. The next day when I logged on things were completely back to normal - AND my old friend lists had been restored.

One of the first things I noticed was that my friends lists had been deleted - and subsequently they no longer applied to photos privacy settings. Unfortunately I don't remember how or why I noticed this, maybe it was part of the exploratory feeling you get when something gets deactivated for a week and you want to make sure everything is OK.

The situatation also applied to my friends whose friends lists I was on. For example, if my friends didn't allow anyone to see tagged photos, I couldn't see their photos. But if my friend had just not allowed their 'Work friends' list to see their photos, and I was a Work friend, I could see their photos because my account no longer appeared under their friends lists entitled 'Work friends' - at least that's what I presume to have happened.

I do not recall if this affected the Networks as well. I don't recall if I was able to see normally private photos from strangers in other regional, high school or University networks. If it did, I probably would have a recollection of it because I did do some experimenting to see how far the bug extended.

Did I find any steamy secrets? Yes, in the form of insights into the nature of the human spirit and desire for privacy. And no, in regards to the underwhelming nature of photos. I should probably hang around in more exciting circles.

</comment><comment><USER3> Actually I'm not sure this had anything to do with the new design. It may have been coincidence that the bug was found now (I'll try to find out).

</comment><comment><USER4> This is just the tip of the iceberg. I've been picking at the new design for nearly a week and there is a host of security flaws and loopholes left there.

(up your privacy settings if you want to remain private!)

</comment><comment><AUTHOR> Why are they storing whose info I have access to see inside MY profile data and not within the profile data of the other user?

<comment><USER5> That's not necessarily what's happening. Another plausible explanation is that when you deactivate your account, you're removed from various lists in the profile data of all your friends. When you activate it again, you aren't put back on the list until a regularly scheduled task runs (or until data propogates through the servers?). So if one of the lists is "deny from seeing these photos", you get to see them until that happens.</comment></comment>


DeepMind's social agenda plays to its AI strengths - <AUTHOR> https://www.ft.com/content/cada14c4-d366-11e6-b06b-680c49b4b4c0 <comment><USER2> I look forward to seeing what DeepMind does with Starcraft II. Personally, I see a huge market for AI powered bots in gaming industry. More than you'ed normally expect. A post in Leauge of Legends form a few years back talked about how 30% of their users play Co-op Vs Bots, for example.</comment>


Twister-core 0.9.31: security fixes and more - <AUTHOR> http://twister.net.co/?p=575 <comment><USER2> Twister is a nice and decentralized substitute for Twitter. The only thing I really dislike about Twister is that it insist on keeping an arbitrary and archane 140 character limit on posts.</comment>


WeWork urges investors to see losses as 'investments', reports 1Q loss of $264M - <AUTHOR> https://www.cnbc.com/2019/05/15/wework-has-q1-loss-and-says-investors-should-see-losses-as-investments.html <comment><USER2> These guys are supplying office space, like Regus etc, right? I don't see how they have a thing they can protect that is worth pumping so much money into?

Uber at least has ridiculously good worldwide mindshare on a 2-side market - everyone around the world has heard of them and it would be hard to compete while they are still around. Sure drivers can use multiple apps, but as a user I'll use Uber thanks. There is a reasonable gamble that they can win the market.

But office space is fairly decentralised and there are lots of options. I'm not exactly in a tech hub but there are plenty of funky nice looking casual office spaces around here, and a whole commercial real estate market where you can rent offices at reasonable prices too.</comment>


NASA is about to land $830M InSight mission on Mars. second-by-second timeline - <AUTHOR> https://www.businessinsider.com/nasa-insight-mars-mission-landing-when-what-time-2018-11 <comment><AUTHOR> You can watch NASA's live landing coverage below starting around 2 p.m. ET on Monday

[https://youtu.be/wwMDvPCGeE0](https://youtu.be/wwMDvPCGeE0)</comment>


Get Your Shit Together - <AUTHOR> https://medium.com/@pat_wilson/get-your-shit-together-6ccbfd6bb755 <comment><USER2> Why is the avg starting pay for a c++ developer not even on par with java when c++ is a much bigger pain in the ass than java will ever be? I'm not saying java is all great mind you but for the insane complexity of c++ I expect more money dealing with it.</comment>


Ask HN: Is religious behavior built into humanity? (see Rails, TDD, .Net, etc) - <AUTHOR>

So do you guys think it is? <comment><USER2> First I thought 'wait, this question does not belong here!', but then I saw what you did there.

I think you are right to a certain extent. Nothing proves this more than Agile methodology. Most of us (including me) follow processes and adopt them without a forethought as to if the methodology is relevant to the project at hand.</comment>


Donald Knuth was framed - <AUTHOR> https://buttondown.email/hillelwayne/archive/donald-knuth-was-framed/ <comment><USER2> I'm glad to see this here, for two reasons: (1) In general it's nice when people return to the primary sources rather than second-hand accounts, and (2) this particular topic is of interest to me; here are a couple of previous comments that were somewhat well-received on HN:

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

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

For further context you can look at past and future issues of Bentley's column (and its spinoff); a list of them I collected here: [https://shreevatsa.net/post/programming- pearls/](https://shreevatsa.net/post/programming-pearls/)

I guess it's a long-standing tradition in literary reviews for reviewers to push their own ideas, rather than confining themselves solely to reviewing the work in question. That is what happened here. Knuth had written a program that he had been asked to write, to demonstrate the programming discipline. But McIlroy, as the inventor of Unix pipes and a representative of the Unix philosophy (at that time not well-known outside the few Unix strongholds: Bell Labs, Berkeley, etc), decided to point out (in addition to a good review of the program itself) the Unix idea that such special-purpose programs shouldn't be written in the first place; instead one must first accumulate a bunch of useful programs (such as those provided by Unix), with ways of composing them (such as Unix pipes). A while later, John Gilbert described this episode this way:

> _Architecture may be a better metaphor than writing for an endeavor that > closely mixes art, science, craft, and engineering. "Put up a house on a > creek near a waterfall," we say, and look at what each artisan does: The > artist, Frank Lloyd Wright (or Don Knuth), designs Fallingwater, a building > beautiful within its setting, comfortable as a dwelling, audacious in > technique, and masterful in execution. Doug McIlroy, consummate engineer, > disdains to practice architecture at all on such a pedestrian task; he hauls > in the pieces of a prefabricated house and has the roof up that afternoon. > (After all, his firm makes the best prefabs in the business.)_

There are other points (not mentioned in this article), e.g. the fact that _someone_ had to have written those Unix programs in the first place and writing them with literate programming can lead to better results, and the fact that Knuth's idea of using a trie (though not a packed/hash trie; that's no longer needed) _still_ seems fastest: [https://codegolf.stackexchange.com/questions/188133/bentleys...](https://codegolf.stackexchange.com/questions/188133/bentleys- coding-challenge-k-most-frequent-words) (please someone prove me wrong; I'd love to learn!)

Knuth gladly included McIlroy's review verbatim when he reprinted this paper in his collection _Literate Programming_. BTW here's an 1989 interview of McIlroy [https://www.princeton.edu/~hos/mike/transcripts/mcilroy.htm](https://www.princeton.edu/~hos/mike/transcripts/mcilroy.htm) where he looks back and calls Knuth's WEB "a beautiful idea" and "Really elegant", and his review "a little unfair", though of course he reiterates _his_ main point.

<comment><USER2> Counterpoint[0]:

Knuth really _is_ a fan of writing monolithic (rather than "modular") programs from scratch, in a way that goes against all the experience of software engineering accumulated over decades, so that criticism is well-deserved.

For example, his big programs TeX (1982) and METAFONT (1984) are each book- length and the source code of each is in a single large file amounting to about 20000+ lines of Pascal code. His programs do not contain much in the way of standard software-engineering practices like abstraction, modules (hiding implementation behind an interface), unit tests, libraries, etc. In fact, he has spoken out against unit tests and code reuse! [1]

> _the idea of immediate compilation and "unit tests" appeals to me only > rarely, when I'm feeling my way in a totally unknown environment and need > feedback about what works and what doesn't. Otherwise, lots of time is > wasted on activities that I simply never need to perform or even think > about. Nothing needs to be "mocked up."_ ...

> _With the caveat that there's no reason anybody should care about the > opinions of a computer scientist /mathematician like me regarding software > development, [...] I also must confess to a strong bias against the fashion > for reusable code. To me, "re-editable code" is much, much better than an > untouchable black box or toolkit. I could go on and on about this. If you're > totally convinced that reusable code is wonderful, I probably won't be able > to sway you anyway, but you'll never convince me that reusable code isn't > mostly a menace._

Moreover, his sympathies always lay with the "other" side of the "structured programming" revolution (he still liberally uses GOTOs, etc -- still coding like a 1950s/1960s machine code programmer), and in his 1974 paper "Structured Programming With Go To Statements", he approvingly quotes something that might horrify many software engineers today:

> In this regard I would like to quote some observations made recently by > Pierre-Arnoul de Marneffe:

> _In civil engineering design, it is presently a mandatory concept known as > the "Shanley Design Criterion" to collect several functions into one part . > . . If you make a cross-section of, for instance, the German V-2, you find > external skin, structural rods, tank wall, etc. If you cut across the > Saturn-B moon rocket, you find only an external skin which is at the same > time a structural component and the tank wall. Rocketry engineers have used > the "Shanley Principle" thoroughly when they use the fuel pressure inside > the tank to improve the rigidity of the external skin! . . . People can > argue that structured programs, even if they work correctly, will look like > laboratory prototypes where you can discern all the individual components, > but which are not daily usable. Building "integrated" products is an > engineering principle as valuable as structuring the design process._

> ... Engineering has two phases, structuring and integration: we ought not to > forget either one...

(This comment is slightly tongue-in-cheek, but hopefully provocative enough.)

[0]: Hey it's been a couple of hours and there's no reply attacking my comment, guess I better do it myself. :-)

[1]: [http://www.informit.com/articles/article.aspx?p=1193856](http://www.informit.com/articles/article.aspx?p=1193856)

<comment><USER3> Modularity incurs a complexity tax. If you are smart enough to keep it all in your head, like a Motie Engineer, you can simplify by omitting it. But if you're _not_...

<comment><USER4> That's the thing here. Knuth can easily juggle far more complexity in his head than the average programmer, and that's fine for software that only he has to maintain. But when something needs to be maintainable by average programmers, you need to write for them and avoid that complexity.

<comment><USER5> Who's writing for the average programmers? It's the average programmers. How can average programmers write code that is sufficiently abstract that it hides the complexity they can't handle? How can they change that code when it doesn't work? Does every company of 5 devs need to have a PhD?

<comment><USER3> > How can average programmers write code that is sufficiently abstract that it > hides the complexity they can't handle?

Well said.

Hiding complexity is harder than handling it. Designing an effective way to expose it for use amounts to (part of) a "programming system" [Brooks].

So it's library writers who hide the complexity for average programmers, with a "programming product": stdlib, open source project or (rarer these days) commercial "engine".

When there is no such library, we get the current state of our art: many projects failing.

</comment></comment></comment></comment></comment></comment><comment><USER6> There are many, many ways to tell this story. However it resonates because it fits well with an ongoing dynamic. Which is that programmers naturally want to build perfect tools while the business need tends to be for a quick and dirty solution that can be assembled out of prebuilt pieces.

Except that this one is extreme. It is hard to find any programmer who builds a more perfect tool than Knuth. There isn't a better known problem where the discrepancy between the perfect and the good is this dramatic. Therefore this became the poster child for this ongoing type of conflict retold by those who see themselves as on the side of the quick and dirty solution built out of preassembled pieces. Who, of course, slant the story to further fit their prejudices.

This kind of slanting is common. Take a famous WW II example where they were looking to improve bomber durability by putting more armor plate where the bombers were coming back hit. A wise statistician advised them that those were the spots that didn't need armor, they should put it on where the bombers were hit and _didn 't_ come back. Which, assuming that bombers were hit evenly everywhere, was all the places that they didn't find holes.

The reasoning is perfect, and illustrates a key point of statistical wisdom. But the retelling of the story almost never admits that the advice didn't really make a difference. The actual solution to the rate at which bombers were being destroyed was to drop chaff - strips of aluminum cut to half the length of the German radar - so that the radar systems got overwhelmed and the Germans couldn't find the bombers.

<comment><USER7> Another example people use for the KISS principle is of the 'space pen', where the US spent thousands/millions developing a pen that works in space whereas the Soviets used a pencil. However, almost none of the story is true. Regardless, it gets repeated over and over.

<comment><USER8> We'll be living in a pretty dull place if only true stories were allowed.

<comment><USER9> Bashir: "Of all the stories you told me, which ones were true and which ones weren't?"

Garak: "My doctor, they're all true."

Bashir: "Even the lies?"

Garak: "Especially the lies."

</comment></comment></comment></comment><comment><USER10> Site is down, but it looks like archive.org got it.[1] But the entire page is blank, because javascript. It has a fallback, which has what looks like the article in a noscript tag.

Hastily converted to markdown with pandoc, and put up as a github gist: [https://gist.github.com/tonyb486/eec2f16b06eef4692dac6e56362...](https://gist.github.com/tonyb486/eec2f16b06eef4692dac6e56362cac50)

[1]: [https://web.archive.org/web/*/https://buttondown.email/hille...](https://web.archive.org/web/*/https://buttondown.email/hillelwayne/archive/donald- knuth-was-framed/)

<comment><USER11> > _It looks like archive.org got it. But the entire page is blank, because > JavaScript._

The AJAXification of the web, even for trivial web pages, is defeating archive.org on multiple occasions, it's a huge threat to our history preservation. We cannot stop people from overusing AJAX, and we need to develop better archival tools.

<comment><USER12> This is an equivalent problem to the web search problem, right? I believe Google indexes webpages by visiting them in headless Chrome and dumping the resulting DOM - it seems like archive.org could do the same.

[https://searchengineland.com/google-will-ensure-googlebot- ru...](https://searchengineland.com/google-will-ensure-googlebot-runs-the- latest-version-of-chromium-316534)

(Also archive.today solves this somehow, no?)

<comment><USER13> Google has orders of magnitude more computing power and humans to throw at the problem.

</comment></comment></comment></comment><comment><USER12> Something related that's been on my mind recently: a lot of the advantage in building well-designed programs (documented, modular, built to be tested, free of smells, etc.) is less about getting the program right than about getting _future changes_ right, either by someone else, or even yourself when you've forgotten how to do it. But future changes only matter _if you want to use the existing program as a starting point_.

McIlroy's pipeline is a little bit hard to read, but I would bet that most people with moderate experience in building shell pipelines could rebuild something equivalent from scratch, even if they'd have trouble explaining how the current pipeline works. (Or people with experience in Python, Perl, etc. could throw together an equivalent script from scratch quickly.)

An implication is that, if you're in a language where you can write a productive program to do a task from scratch within (say) 30 minutes, there's a lot less of a reason to think about good programming design than if you're in a language where doing that same task from scratch is likely to take you a day. In the second language, most of the value of writing documented and well- structured code is so that it takes you 30 minutes when someone asks you to modify it. But in the first language, you can throw away your code when you're done with it and still solve the modified problem within 30 minutes.

Another possible implication: it's better to build reusable components (libraries and utilities) than easily-modifiable code. Part of why McIlroy's pipeline works so well is that tools like "tr" and "uniq" exist - and most of us will never have reason to modify the source code of those tools. We need to know what their interfaces are, but we don't need to know their internals.

<comment><USER14> This comment reminds me of something of a thought-experiment-come-hacky-side- project that I can't seem to find.

The premise was, what if you could never edit a function? Instead, you had to delete it and recreate it entirely whenever changes were needed.

The incentives are twofold - keep functions small, so you don't lose too much investment if you have to delete code, and think before you start writing, else you waste time.

As I remember, this project came with an AST manipulator that would helpfully delete your function if it's unit tests failed.

<comment><USER15> [https://github.com/munificent/vigil](https://github.com/munificent/vigil)

<comment><USER14> Yes! This is it

</comment></comment></comment></comment><comment><USER16> It seems to have the "HN Hug of Death" ... here's a snapshot summary from memory:

Knuth and McIlroy gave examples of a word count program. Knuth used Literate Programming and did it in 8 pages, McIlroy used shell utilities and did it in 8 lines.

This post goes back to the original paper and discovers that Knuth has been grossly misrepresented as to what he was trying to do, and what he achieved.

 _Edit_

bonyt's[0] comment[1] has links to copies of the content.

[0] [https://news.ycombinator.com/user?id=bonyt](https://news.ycombinator.com/user?id=bonyt)

[1] [https://news.ycombinator.com/item?id=22406365](https://news.ycombinator.com/item?id=22406365)

<comment><USER17> so a rebuttal/companion to [http://www.leancrew.com/all-this/2011/12/more- shell-less-egg...](http://www.leancrew.com/all-this/2011/12/more-shell-less- egg/)

<comment><USER18> Pretty much, yes.

The argument, in short, is that the problem Knuth is solving isn't "find K most common words", but rather "Use the K most common words problem as the basis to demonstrate how you use Literate Programming". Knuth actually tackles the latter, McIlroy's rebuttal is just the former, so doesn't actually serve as much of an argument about anything.

<comment><USER19> There's nothing surprising or underhanded here, and never was. It was just too complimentary perspectives.

McIrloy's paper shows the value of good hackery over engineering.

Knuth was set back by the blogger's dilemma of trying to show a technique that maybe useful in general but isn't very useful in a very short program.

<comment><USER18> I didn't mean to imply there was anything underhanded about McIlroy's critique. Just that that, because McIlroy's code isn't trying to solve the same problem, it shouldn't be taken as a rebuttal to Knuth's point, which is what, apparently, many people believe it to be.

<comment><USER20> There's lots of interesting facets here. Doug's solution requires a working Unix system. You might not have that in the problem space.

On the other hand, his solution shows that by assuming some nice things about your data, things which Pascal does not allow, you can do some useful things with terse programming. This is reminiscent of the array programming model of APL or J. I haven't written a solution but I'd be surprised if it is more than about 15 characters.

In the shell case, the terse program is like a Chinese classic. Written in its own jargon requiring basically a prior understanding of the program to read it.

<comment><USER21> > In the shell case, the terse program is like a Chinese classic. Written in > its own jargon requiring basically a prior understanding of the program to > read it.

However, if Knuth wanted to be terse, he could have been and write a Pascal program which uses his library routines without showing them ! -- in effect using Unix solution by Doug is equivalent to "not only you must use already pre-written libraries in order to be terse, they are even not the plain routines but they are instead packed as the whole executables, and to use these executables you have to use them on exactly this operating system, exactly using this specific shell, all that property of AT&T (at that time Linux didn't exist, and who had rights to use what wasn't clear, unless you've bought something expensive) just to be able to call these library routines.

So it can't be considered a serious "critique." At that time, under these circumstances, it was just an unfair ad.

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> I was around when that encounter happened. I still recall my feelings when I read it.

I don't recall feeling Knuth was framed.

Although McIlroy's solution didn't really address the question Knuth was asked, it was cute and demonstrated the power of this newfangled thing called "Unix Philosophy", which at the time needed some oxygen. However the words McIlroy accompanied it with were simply unnecessary, almost childish. I recall cringing when I read them.

I do remember wondering if Bentley had done the right thing in publishing McIlroy's raw comments, but decided the main attraction of his column was a refreshing honesty. He presented his pearls without any the usual breathless hype or artificial conflict a journalist might add to spice up interest. Having set up this experiment, it would not have been "Programming Pearls" if he didn't report exactly what happened, as it happened.

Bentely's style wasn't to constrain or direct for a particular outcome he wanted. That meant McIlroy had lots of rope and McIlroy used it to hang himself, that was McIlroy's problem.

</comment><comment><USER23> I'm not sure how it's a fair comparison between ready-made Unix tools and written-from-scratch solution. I mean it's like somebody asked me to implement a C compiler, and when I produced a huge pile of source code would tell me "Idiot, I can do all that by just typing "gcc"! Muah-hah-ha!"

<comment><USER24> In my second compiler design course, we were told we could use any language. I (jokingly) asked whether we could choose shell, and consider a C compiler a feature of the language. I was (in the same spirit) informed that it would be cheating.

<comment><USER23> Some languages do include self-compilers as part of the runtime... So probably "any" wasn't meant really "any".

<comment><USER24> The target language was (a subset of) C, so access to a lisp compiler wasn't going to help in quite the same way.

</comment></comment></comment></comment><comment><USER25> Title is a little (?) clickbait... Promoting a YOW talk: [https://www.youtube.com/watch?v=ATobswwFwQA](https://www.youtube.com/watch?v=ATobswwFwQA)

\-- The other day I was talking with a friend about structured editing and literate programming came up. LP was one of Donald Knuth's ideas, to structure programs as readable documents instead of just machine docs. He was interested in it, I was cautiously skeptical. We both knew the famous story about it: [https://en.wikipedia.org/wiki/Literate_programming](https://en.wikipedia.org/wiki/Literate_programming)

"In 1986, Jon Bentley asked Knuth to demonstrate the concept of literate programming by writing a program in WEB. Knuth came up with an 8-pages long monolithic listing that was published together with a critique by Douglas McIlroy of Bell Labs. McIlroy praised intricacy of Knuth's solution, his choice of a data structure (Frank M. Liang's hash trie), but noted that more practical, much faster to implement, debug and modify solution of the problem takes only six lines of shell script by reusing standard Unix utilities. McIlroy concluded: >>Knuth has shown us here how to program intelligibly, but not wisely. I buy the discipline. I do not buy the result. He has fashioned a sort of industrial-strength Faberge egg—intricate, wonderfully worked, refined beyond all ordinary desires, a museum piece from the start."

The program was print out the top K most-used words in a text. (and so it goes on...) \---

<comment><USER26> To clarify, it was an email newsletter. The YOW! thing had just gotten published so I got that out of the way before diving into the meat of the newsletter post, which was about LP.

</comment></comment><comment><USER27> Good analysis. Didn't Knuth famously say that his job was to get to the bottom of things, not to stay on top of things?

If I were writing a one-off program to do this once for a paid project, the shell script is absolutely the way I would go about it.

If I were writing it as a computer scientist, accustomed to teaching students how to find optimal solutions, something like the Knuth program is absolutely the way I would go about it (although in 2020, I would likely use C, not Pascal). I also would likely roll my own approach if I was writing it for the kind of target machine I work on now - a very small one (an embedded microcontroller). And Knuth made his bones when computers were (physically) huge but (in memory and speed) tiny.

</comment><comment><USER28> The shell script uses utilities that are written in C, probably totaling way more lines of system programming language code than Knuth's Pascal solution.

It's a pretty unfair comparison, since the literate programming solution was not presented in order to show a code-golfed word histogram, but how to annotate code.

The has trie structure was included in it for that purpose, to show how you use literate programming to annotate such a thing.

> _First of all, we found that Literate Programming as conceived by Knuth not > just "text, code, text, code"._

Unfortunately, it's something worse! It's a system in which you chop up a program into arbitrary sections, and give these macro-like names. The sections are presented in some aribitrary order and hierarchically combined together using those macro-like names.

Like, say:

 _The program 's overall structure is to accept input, performs some processing and produce output:_

       accept_input

       do_processing

       produce_output

The divisions don't follow function boundaries. A specific loop inside a specific function might have its own section, and the variable declarations above their own.

It's basically horrible. You can't see the code all in one piece at all when editing it. It won't play with your existing tools. The generated result won't even have proper indentation.

Web and CWeb are programs geared toward someone who is an academic, mainly interested in writing a paper that revolves around a small amount of code.

What you're really writing is a paper, such that both the typeset paper (with nicely typeset code), and accompanying code pops out from the same source. The raison d'etre is that paper though.

You would be suicidal to use this to write an actual application that doesn't need to be detailed in an academic paper.

Knuth did somewhat take it to those extremes, but working alone.

If we look at TeX, the bulk of it consists of a single tex.web file which is simultaneously not such a large volume of work (less than 25,000 lines of code of documentation and data, less than a 1024K megabyte) ... yet too large to be all in a single file.

<comment><USER2> I love this comment, and probably wouldn't even disagree with "It's basically horrible" :), but just to point out a few things:

\- "The generated result won't even have proper indentation." Actually, what you see in the typeset output generated by weave/cweave is what Knuth considers proper indentation, and he has written paeans multiple times to Myrtle Kellington (executive editor for ACM publications) who developed that style, etc. There are a lot of lines in WEAVE devoted to getting the indentation exactly so. I personally find it hard to read as well (as I imagine do most programmers), and both McIlroy in his review ( _" Second, small assignment statements are grouped several to the line with no particularly clear rationale. This convention saves space; but the groupings impose a false and distracting phrasing..."_) and Harold Thimbleby in his Cweb article mention these departures from what C (etc) programmers are used to.

\- _" Web and CWeb are programs geared toward someone who is an academic, mainly interested in writing a paper that revolves around a small amount of code."_ I would disagree: yes they are geared towards someone who is an academic -- specifically Knuth -- but from everything he's said, his love of LP is about the programs themselves, not papers about them. (Look at [https://cs.stanford.edu/~knuth/programs.html](https://cs.stanford.edu/~knuth/programs.html) for some of his programs; he says he writes several programs a week and keeps most of them to himself; the ones published online before Sep 2017 I had typeset here: [https://github.com/shreevatsa/knuth-literate- programs](https://github.com/shreevatsa/knuth-literate-programs) \-- I ought to clean up and refresh that stuff.)

\- Finally, WEB arose out of certain specific constraints. After he had written the original version of TeX in SAIL for his personal use, it turned out there was widespread demand for it, and people at other places had started porting it into their local systems/languages (with risk of incompatible/irreproducible implementations). For this he decided to embark on a two-year rewrite into the language that was available at the most number of university computer systems: Pascal. This language had been designed primarily for teaching, and at this time there wasn't even a Pascal standard by that name -- every compiler did its own thing. So he was targeting the "common denominator" of Pascal compilers, which meant no separate compilation units to be linked in; everything _had_ to be in a single file at least as seen by the compiler. (In fact his TeX78 in SAIL had been written as several separate files in a more conventional (to us) style.) And yeah, the fact that he had been requested to eventually publish the source code of TeX (which he did, Volume B of _Computers and Typesetting_ ) played a part.

BTW the author/maintainer of Axiom ([https://en.wikipedia.org/wiki/Axiom_(computer_algebra_system...](https://en.wikipedia.org/wiki/Axiom_\(computer_algebra_system\))) has been writing it for years in a literate programming style, and whether that is insane/suicidal is beyond my ability to judge at the present. :-)

</comment></comment><comment><USER29> I like the idea that code should look more and more like human language. I think that programming languages have gotten much more human-friendly nowadays and this trend will continue. I have created my own human-like programming language prototype to explore these ideas and have implemented TodoMVC with it: [https://github.com/tautvilas/lingu/blob/master/examples/todo...](https://github.com/tautvilas/lingu/blob/master/examples/todomvc/prog.lgu)

</comment><comment><USER30> Does anyone have any insight in the computational complexity of the two solutions?

The shell script sorts all the words (and then all the counts), so has complexity at least O(n log n) in the number of words.

It seems to me an optimal solution could be faster, and I wonder what Knuth implemented.

<comment><USER31> If you consider hash table insertion as O(1) then it is O(n) I guess.

</comment></comment><comment><USER32>
        KNUTH vs MCILROY

[https://comic.browserling.com/knuth-vs- mcilroy.png](https://comic.browserling.com/knuth-vs-mcilroy.png)

         WHO WILL WIN?!

</comment><comment><USER33> You cannot compare Knuth's software with a script that use pre compiled tools that have thousands of lines.

If you want to compare both solutions, use the Kolmogorov complexity: compress both programs together with any tool/compiler it uses and just then, compare both sizes. I bet Knuth's solution has an order of magnitude less complexity.

</comment><comment><USER34> These days, though, you can have it both ways with a Jupyter notebook or something similar. It's literate, in that you can keep thoughts and discussion in markdown cells, and you can neatly combine computations in computation cells.

</comment><comment><USER35> Unix shell scripting is an obtuse practice that is really hard to discover. That short shell script is built on hours of hard learned Unix experience that would probably be at least 8 pages long, if explained thorough.

</comment><comment><USER36> I will probably be downvoted for questioning the legends, but... I don't think the poster child of Literate Programming - TeX itself - really has that readable source code.

[https://mirror- hk.koddos.net/CTAN/systems/knuth/dist/tex/tex...](https://mirror- hk.koddos.net/CTAN/systems/knuth/dist/tex/tex.web)

<comment><USER2> The .web file is not supposed to be read directly. You're supposed to read the "woven" version: [https://texdoc.net/texmf- dist/doc/generic/knuth/tex/tex.pdf](https://texdoc.net/texmf- dist/doc/generic/knuth/tex/tex.pdf)

<comment><USER37> If you have to make changes to it, you'd have to read it directly, right?

<comment><USER2> I think the idea is that if you want to make changes to an existing program, you get up from your desk, go look at your shelves and pull out the sheaf of paper for that program, read/study it, think about what changes are needed, write down the code changes, then go to the computer and type it up -- only in the last step you're looking at the .web file but only for mechanical transcription from paper to computer.

(This is not a joke. Knuth still writes not just his papers/books but even his programs by hand on paper first. And this how TeX was written, according to the person other than Knuth who should know best: [https://news.ycombinator.com/item?id=10172924](https://news.ycombinator.com/item?id=10172924))

<comment><USER38> Actually you would go to your bookshelf and get the beautifully typeset book, rather than a sheaf of paper.

</comment></comment></comment></comment></comment><comment><USER39> Maybe people should take into account that Knuth is a mathematician and computer _scientist_ , not a software _engineer_.

His constraint is _correctness_ under all circumstances, an engineering constraint is about _efficiency_ which constrains correctness to a subset of the potential uses.

So from his perspective, the problem was something to be solved, not something to be implemented. As such, describing the problem and the solution is much more a literate requirement, being clear about it to the reader, than a computing requirement, being clear to the computer.

Personally, I think most software "engineering" is a crock, built on false assumptions and invalid data, subject to fads like "Agile" (or CMMI or SPICE or RUP or...).

The software industry would be better focussed on architecture, not the naive patterns of the GoF, but on fundamentals like types and data flows, Nouns vs Verbs and taking the science and making it practical for use in day to day development by incorporation into the tools used.

</comment><comment><USER40> If anyone managed to catch it when it wasn't down, care to share a screenshot of the article? I seem to be getting some Heroku error now.

> An error occurred in the application and your page could not be served. If > you are the application owner, check your logs for details. You can do this > from the Heroku CLI with the command

<comment><USER41> Lightly edited: [https://rentry.co/zq4r6](https://rentry.co/zq4r6)

</comment></comment><comment><USER24> I often recommend reading this essay. The conception of LP described (and embodied) is only tenuously related to modern systems claiming to be LP, and what's presented is really interesting.

That said, I still find myself unsure how it translates into practice. Does anyone have experience working on a system described this way? In particular, I wonder what refactors feel like, and how general problems around stale documentation apply (or fail to).

</comment><comment><USER42> Markdown Literary Programming that don't break the syntax of any programming language

[https://github.com/linpengcheng/PurefunctionPipelineDataflow...](https://github.com/linpengcheng/PurefunctionPipelineDataflow/blob/master/doc/markdown_literary_programming.md)

</comment><comment><USER43> I program mainly in R and I always use RMarkdown. I write extensively about question definition, notes, reference, exploration, different directions in RMarkdown. In the end if I ever need to have a script version I have some utility function to pick code chunks and output as script.

This serve as a very good documentation and is much better than code comments.

</comment><comment><USER4> Comparing Knuth's LP demo to a 6 line shell script is comparing apples to oranges. There's no language that's going to be able to do that job in as few lines as that shell script, but that doesn't mean all languages are useless. They're both interesting demonstrations, but it's a useless comparison.

</comment><comment><USER44> The proposed example problem that would be difficult to solve on the Unix command line can be written as a pipeline of just nine commands. See [https://www.spinellis.gr/blog/20200225/](https://www.spinellis.gr/blog/20200225/)

</comment><comment><USER45> I haven't heard of the leo editor. I have used org mode in Emacs for little things. I also came across a reimplmentation of the tangling functionality: [https://github.com/thblt/org-babel-tangle.py](https://github.com/thblt/org- babel-tangle.py)

<comment><USER46> It's worth playing with: it's primarily designed for writing literate Python, and I greatly enjoyed working with it on a project as an experiment. I shuttle between neovim, emacs and leo, and dream of an editor that would somehow bring together all of their benefits. Oh, and maybe some smalltalk too!

</comment></comment><comment><USER47> > Writing the code out-of-order is the whole point.

Yes!

MyDef, [https://github.com/hzhou/MyDef](https://github.com/hzhou/MyDef), is such a system.

</comment><comment><USER48> The unix command solution is likely orders of mangnitude slower than what Knuth wrote, which given the computer power of the time should have seemed fairly relevant.

</comment><comment><USER49> It seems to be down.

<comment> mark-r For me too. It's a shame given the inflammatory title - I really want to know what it means.

<comment><USER50> My guess is it's either about a picture of Donald Knuth, or Knuth's reward checks, being put in picture frames.

<comment><USER16> Neither.

<comment><USER50> Aw. Well, it was worth a shot, that kind of mild homonym abuse is kind of direction that these sorts of titles usually tend to take. Fortunately the real story is more interesting.

</comment></comment></comment></comment></comment><comment><USER51> Site's back up.

</comment><comment><USER52> I've seen similar defenses of Knuth over the years, but I'm still inclined to view this McIlroy's way. I think focusing on the shell script is a canard, the point is he picked what seemed like the right tool for the job. Isn't that what commenters are saying here all the time?

Anyway, perhaps I just suffer from a failure of imagination, but I can't see why the "Blah"s interspersed with `foo`s and `bar`s is meant to be revelatory.

<comment><USER53> The job Knuth was asked to do was "write a piece illustrating literate programming." A six line shell script is not the right tool for that job.

</comment></comment><comment><USER54> > The actual paper paints LP in a much better light than we thought it > did....The actual content is effectively his stream-of-consciousness notes > about what he's doing. He discusses why he makes the choices he does and > what he's thinking about as primary concerns. It's easy to skim or deep-dive > the code.

Now imagine if these stream-of-consciousness comments getting in the way of the code were written by your colleagues, rather than Donald Knuth.

<comment><USER55> Like all documentation, in real systems it would be edited over time. You do develop documentation for your systems, right?

<comment><USER54> My point is that people should be encouraged to keep code comments to a minimum, and always strive to first rewrite the code so that it is clear (well-chosen variable names, etc). LP does the opposite: it encourages verbosity, and tangential discussion.

<comment><USER55> My point is that literate programming isn't about _comments_. Comments are asides, they aren't the core focus of what's being read, the code is. Literate programming is about _documentation_ , which should be kept _concise_ , but not necessarily _minimal_.

As to whether this leads to tangents or not, that's up to the authors to determine how to organize. Appendices or rationale sections are a great way to separate the core focus from what others may see as extraneous.

<comment><USER54> Yes, sorry, I did understand that that was your point. I just feel very strongly about the tendency, for people (especially new programmers) to be told that it's important to comment code heavily.

Yes I've never seen a good solution for documentation in the teams I've worked in on larger systems/codebases. I'm not really a believer in documentation that evolves in a separate git repo (or god forbid, in Confluence) for the obvious reason that it gets even more stale than documentation that evolves in the same git repo. So that would put me in favour of your position here.

But, how can documentation (with appendices or rationale sections) be interleaved with code without destroying the ability to read the code? I've tried RWeave in R a long time ago, and I've even collaborated and published on a literate programming tool, and I have always come back to the conclusion that I want to read code with the minimum of intervening prose.

So my position is documentation should absolutely be written and maintained, it should be in the same git repo as the code, it should be in a separate file (not in comments or docstrings or automagically weaved sections using some special syntax), it should be written tersely and without much personality, and code reviewers should request documentation updates if a PR renders some documentation stale or requires new documentation.

So I'm pro documentation, anti LP, and pro minimal code commenting.</comment></comment></comment></comment></comment>


U.S. Launches Criminal Probe into Bitcoin Price Manipulation - <AUTHOR> https://www.bloomberg.com/news/articles/2018-05-24/bitcoin-manipulation-is-said-to-be-focus-of-u-s-criminal-probe <comment><USER2> For anyone who hasn't been following, the prevailing theory is that the largest Cryptocoin exchange "Bitfinex" also runs an altcoin called "Teather" which was marketed as being backed 1:1 by USD. So far they've created 2.8 BILLION USDT and coincidently the times they create millions of these happens to be in the middle of extreme market crashes.

See this chart: [https://i.imgur.com/Uo07d1d.jpg](https://i.imgur.com/Uo07d1d.jpg)

More details here:

[https://medium.com/cryptomedication/uncovering-the-real- cart...](https://medium.com/cryptomedication/uncovering-the-real-cartel-in- bitcoin-65b56a7a00a2)

[https://medium.com/@bitfinexed/latest](https://medium.com/@bitfinexed/latest)

[https://medium.com/@mattcollburner/bitmex-insiders-caught- in...](https://medium.com/@mattcollburner/bitmex-insiders-caught-in-a-web-of- lies-6d9b90baa693)

<comment><USER3> If there was a problem redeeming Tether for USD, you'd expect that the market price distortion of Tether. But it hasn't[1]

[https://www.tradingview.com/chart/?symbol=POLONIEX:USDTUSD](https://www.tradingview.com/chart/?symbol=POLONIEX:USDTUSD)

>they've created 2.8 BILLION USDT

Absolute numbers are meaningless and less eye catching when they're compared to the entire market. 2.8 ~ _~_ Billion _~_ ~ USDT is only 0.5%-0.8% of the market. Do you really think that a 300-500 billion dollar market is being propped up by less than pennies on the dollar?

What can be said about Tether: it's a trusted third party that's vulnerable to fractional reserve (like all other exchanges). I wouldn't recommend people use it but to point to the tether creation as proof positive of manipulation rather than discussion fractional reserve issues I think is people confusing lurid facts with silent evidence threats.

Other reading: [https://medium.com/crypto-punks/tether- misconceptions-298443...](https://medium.com/crypto-punks/tether- misconceptions-2984430e7e48)

<comment><USER4> The mechanics are probably this: suppose someone goes to Bitfinex to redeem 10million USDT into USD. Since Bitfinex is behaving fraudulently, they don't actually have the 10million USD they promised they would hold to back the USDT. But they do have the ability to issue new unbacked USDT.

So they issue 11million unbacked USDT and use it to buy bitcoin. They sell the bitcoin for 10million USD on one of the exchanges that allows bitcoin to hard currency exchange. The 10% loss is because you have to pay a premium to exchange bitcoin to real currency. Bitfinex then pays the 10million USD to the customer in exchange for the 10million USDT which is retired.

The net results are 1million new unbacked USDT have been printed, and the illusion that USDT is backed by USD has been maintained.

Possibly the "Bitfinex issues unbacked USDT to buy bitcoin" step is being done not based purely on customer demand, but on a periodic basis when bitcoin price is falling.

Maybe Bitfinex has a hope to preserve their fraud by propping up bitcoin, or to dig out from under the fraud by building a big long bitcoin position and hoping it will rise in value.

Or maybe the timing of USDT issues with market drops is just that bitcoin price falls when there are more sellers than buyers, which is the same time there are more USDT redemptions. So to carry out the mechanics above, Bitfinex has to print tether to fund the redemptions at the time of the drops.

<comment><USER5> That's a very interesting and plausible hypothesis.

One wonders whether the prolonged slump might lead to some sort of bursting of outfits like Tether/Bitfinex. It seems like a downward spiral of people selling BTC and Bitfinex doing the dance you described, and a bigger hole being created.

<comment><USER6> The other allegation (which is pretty viable) was with large reserves to play with, they could cause crashes or spikes in order to gobble up their users risky shorts. Shorts they would know the exact number and values of.

</comment></comment></comment></comment></comment><comment><USER7> >"The Justice Department has opened a criminal probe into whether traders are manipulating the price of Bitcoin and other digital currencies, dramatically ratcheting up U.S. scrutiny of red-hot markets that critics say are rife with misconduct, _according to four people familiar with the matter._ [...] Federal prosecutors are working with the Commodity Futures Trading Commission, a financial regulator that oversees derivatives tied to Bitcoin, _the people_ said."

Why isn't there a better source for this than "four people"? I didn't see anything on the DOJ site. Perhaps they are talking about this: [https://www.cftc.gov/PressRoom/PressReleases/7731-18](https://www.cftc.gov/PressRoom/PressReleases/7731-18)

However, that doesn't mention the DOJ so maybe not. Is it normal for the DOJ to anonymously report its activities to journalists like this?

<comment><USER8> > Why isn't there a better source for this than "four people"?

Because they're leaking. "Four people" is how a media organization says "it's not just one whackjob making shit up".

> I didn't see anything on the DOJ site.

Why would you? They don't appear to have publicly announced anything yet.

> Is it normal for the DOJ to anonymously report its activities to journalists > like this?

It's normal for _people at the DOJ_ to do so, yes. Some leaks are done on a semi-official basis ([https://boingboing.net/2017/02/22/the-leaky- leviathan.html](https://boingboing.net/2017/02/22/the-leaky-leviathan.html)), others are just individuals doing it on their own.

<comment><USER7> So it sounds like we are dealing with a rumor here. What reason do we have to believe these four people? I guess it is the reputation of the journalist on the line if the rumors turn out to be false.

<comment><USER8> > So it sounds like we are dealing with a rumor here.

Media organizations get _pretty_ good at distinguishing between rumor and leak. Any major one will have all sorts of policies on how a story gets verified, and they _tend_ to work. Mistakes do get made, as with anything involving humans.

> What reason do we have to believe these four people?

The media organization involved deems them credible enough to use as sources. It's left mostly up to you whether you trust that media organization.

> I guess it is the reputation of the journalist on the line if the rumors > turn out to be false.

Yes, essentially (and their editors, and the publication, and the media as a whole...). This is why reporters cultivate sources, vet their information, keep track over time of their reliability, and generally require multiple independent sources if those sources are leaking anonymously.

</comment></comment></comment></comment><comment><USER9> This going to be interesting. They will ask all the US based exchanges - Coinbase, Circle etc for their trade and order data for analysis. Coinbase has already fought and lost a case when it came to sharing the data for tax purposes. And one of the touted features of cryptocurrency has always been anonymity.

<comment><USER10> Bitcoin is traceable by nature. Anyone who makes claims of anonymity either doesn't understand how it works or has a system in place that provides uncertainty (ie tumbling).

<comment><USER11> Traceable yes, but also anonymous since a BTC address is just a number without any personally identifiable information attached to it. It's at the edges - e.g. exchanges - where it becomes traceable.

<comment><USER12> Good luck using bitcoin in a way where you can't connect the BTC address to a real person after a small number of transactions. Anonymizing data is very hard, pseudonyms are almost never anonymous.

<comment><USER13> I know people who have exchanged bitcoins and cash anonymously on the street. Sounds pretty risky to me and I certainly don't think it's feasible for large volumes of either currency, but it's possible and has happened, at least.

<comment><USER8> > I know people who have exchanged bitcoins and cash anonymously on the > street.

If I were a narcotics undercover agent, I'd be working to become _The Guy_ locally to trade Bitcoins with in this manner.

Have a partner snap a photo or follow them home to compile a list of people transacting like this.

Chances are good this is already happening in some cities.

<comment><USER13> Sure, as I said it sounds pretty risky (for many reasons), I'm just saying that it does happen and st least has a possibility of anonymity.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> The mechanics of manipulating price are just too easy not to do it. The wash trading is clearly so bad on many exchanges that I bet there are agreements with the miners to recuperate losses to trading fees. It is in all parties interest to prop the price up this way so why wouldn't they do it. So many sketchy things get ignored because they prop the price up.

The USDT situation will get interesting eventually. Somebody made a spreadsheet of non-fiat volume of cryptocurrencies.

[https://docs.google.com/spreadsheets/d/1pIrTYpJZrGbeI9QTIWGw...](https://docs.google.com/spreadsheets/d/1pIrTYpJZrGbeI9QTIWGwYdRmz9FFY_KRpXOcZbjwYu8/edit#gid=0)

Basically the fate of many shitcoins are tied together. My thought is that when USDT finally gets revealed as totally fraudulent the whole crypto house of cards crashes.

<comment><USER15> Tether will just be replaced by other stable coins if it turns out that Bitfinex can't back them if there were a run on Tethers (the only scenario we would find if this were actually true). There are alternative stable coins which will rise to compete with Tether and balance out the market, including Circle's USDC ([https://blog.circle.com/2018/05/15/circle-announces-usd- coin...](https://blog.circle.com/2018/05/15/circle-announces-usd-coin-bitmain- partnership-and-new-strategic-financing/)) and the ETH/Gold-backed MakerDAI: ([https://makerdao.com/](https://makerdao.com/)).

</comment></comment><comment><USER16> Funny how the cryptocurrency values were crashing in advance of this news...

</comment><comment><USER17> Here [https://drive.google.com/file/d/0Bzu6iGPza2s9amFURTFzenRWVGg...](https://drive.google.com/file/d/0Bzu6iGPza2s9amFURTFzenRWVGgxbzNWMUVsQ2pTLTUzc1Nv/view?usp=sharing) are some slides from a talk I gave last year at Strata about what spoofing and layering is, and how a trading firm or exchange might detect or prevent them.

<comment><USER18> Thanks for sharing!

</comment></comment><comment><USER19> Despite all predictions to the contrary, the US government is doing quite a lot to legitimize Bitcoin.

<comment><USER20> Or, Bitcoin finally got to a place where enough normal retail financial customers are exposed to it that the DOJ can't ignore scams, and by the time the ecosystem is locked down and the get-lambos-quick schemes are foreclosed on, Bitcoin will look about as attractive as it did in 2010.

<comment><USER21> Btc value increased not due to scams - neither the scammers nor the scammed ever hold the stuff (that is, off an exchange in a secure wallet), but due to long term holders, to whom it will continue to be attractive until some state goes back on the gold standard, which is not happening.

EDIT:

Also, the _number_ of people to whom btc is attractive is less important than the _type_ of people. It may be that there is _never_ mass adoption of Bitcoin - it is also the case that throughout history _most_ people never had any money at all. And even though most people never had any money, sound money has been extremely valuable _nonetheless_ because most people don't know what to do with money anyway.

<comment><USER22> Nobody knows why the value of BTC decided to spike like it did last year. Just like nobody knows why it is sliding back down to earth.

It is one of the many reasons it makes a piss-poor store of value.

(Of course the answer to the spike could very well be "somebody fired up the tether printer" plus "super shady exchanges did tons of wash trading/oughright made up fake transactions".

<comment><USER21> It is indeed a piss-poor store of value for people who have high time preference, but unmatched for those with low time preference.

<comment><USER20> There is no insane investment you can't say that about. Those metallic-cover special issue Marvel X-Men comics they used to "limited collector release" in the early 90s will eventually be of enormous value to archaeologists in the future, too.

<comment><USER21> Although this is a true statement it is not persuasive in that Bitcoin (unlike a special issue comic, or any other rare thing) has specific, meaningful properties (fungibility, divisibility, durability, etc.) that interact with the world according to well known principles (Gresham's Law, Lindy Effect, Theory of Computation, Network Effect, etc.) that must be shown not to apply in order to disqualify it as the best available store of value.

<comment><USER20> [https://tinyurl.com/Special-Pleading](https://tinyurl.com/Special-Pleading)

<comment><USER21> What principle is not being universally applied? Or do I misunderstand?

<comment><USER20> Many of the ostensible characteristics of Bitcoin you've provided also apply to special-edition 1990s Marvel comics. The idea that a good needs to be "divisible" to be valuable is nowhere supported by evidence and easily rebutted by counterexample. Your argument is essentially handwaving: all sorts of terrible investments are "great for people with low time preference", in that they will have no value in the immediacy, and their only hope of profitable redemption is to hold until some unspecified, unpredictable future date.

Illiquidity is a bad thing, not an generally an indicator that something is an especially good investment.

<comment><USER21> How could Gresham's Law apply to Bitcoin if it were not divisible? Or are you suggesting that comic books could be considered money (one property of which is divisibility) to the same degree as Bitcoin? Hopefully we agree that divisibility is not an "ostensible" characteristic of Bitcoin, but a "factual" characteristic of it?

Also your tendency to define things in binary terms (liquid/illiquid, value/no value) is troubling.

Why the struggle to pretend not to be able to tell the difference between Bitcoin and limited edition comic books?

<comment><USER20> I'm not "pretending" anything. I think the difference is illusory, except for the fact that you can actually read the comic book, so it has some marginal real utility.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> What grates my nerves isn't primarily Bitfinex/Tether, it's the other exchanges. Why did they accept Tether? Of all the 'altcoins', one backed by an asset like cash is the easiest to verify (or be skeptical of if verification requests are dismissed or ignored). When I signed onto Bittrex, USDT was one of the prominent trading pairs. It was a useful trading pair, because instead of seeing numbers like ".000000314121 : 1 BTC", you'd get a dollar figure you could mentally parse. Of course, the damned software could have done that automatically with a currency of the user's choice. That's kind of a tangent, though. Why weren't the other exchanges more critical of Tether and kept it after months of controversy and skepticism?

<comment><USER23> Coin price is determined by (amount of $ chasing coins) / (number of those coins). Tether is effectively inflating the $$ side by pumping USDT into the system and making people believe USD and USDT are virtually the same. As long as the game continues the prices go up, which benefits everyone in the coin scene, hence everyone is playing along.

Also I imagine that major exchanges could get discounts on volume USDT purchases - this would allow them to paper over their own cash shortfalls in exchange for lending legitimacy to the scheme.

</comment></comment><comment><USER24> Some context from a non-expert.

From what I understand, things like spoofing in financial markets (where you submit orders which you don't plan to have filled for the purpose that the market sees "interest" in a certain direction and in hope that moves the market), are regulated but still a grey area. The reason for this is that it's an activity that involves intent. Placing certain orders is perfectly ok if you're hoping that they get filled and you take a position, but placing the same orders could be spoofing if your goal is to cancel them once the market starts moving as a consequence.

<comment><USER2> This is an execelent flowchart detailing the regulatory policy on spoofing on US stock markets: [https://pbs.twimg.com/media/DXD3RlQVoAALYLa.jpg](https://pbs.twimg.com/media/DXD3RlQVoAALYLa.jpg)

<comment><USER25> Is this serious?

<comment><USER26> The person who wrote it was probably serious, but it is not correct.

<comment><USER27> "Everybody" hates HFTs, but everybody also wants the illusion of a continuous market that can be bought and sold into at any moment in any quantity. So a lot of the arguments/discussions are really about how we can pretend that the trading which is required isn't really happening.

</comment></comment></comment></comment></comment><comment><USER28> What is the track on Winklevoss' proposal to a self regulation org for crypto currency exchanges?

</comment><comment><USER29> Man I wish I could understand only 5% of the economics behind this. It seems so interesting.

<comment><USER30> Economics? Bitcoin has no intrinsic value and it's propped up by speculation. It's ridiculous.

<comment><USER31> Nothing has intrinsic value.

<comment><USER32> Food? It certainly has some kind of value that dollar bills, gold, and bitcoin don't. You may not like the word "intrinsic", but it's still in the right direction.

</comment></comment></comment></comment><comment><USER33> Why? I like the wild west landscape that is Bitcoin! If anything it's going to turn it to be an interesting experiment in macroeconomics!

</comment><comment><USER34> I was surprised to read that the US regulators feel they have jurisdiction to regulate bitcoin transactions. How can this be - is it just because there are BTC futures now?

<comment><USER35> How could they possibly _not_ have jurisdiction when a large percentage of bitcoin traders and several large exchanges are in the US?

<comment><USER36> more than that - the blockchain is global, reconciliation happens everywhere - and that doesn't mean that no country's laws apply to it, it means that ALL of them potentially do

</comment></comment></comment><comment><USER37> This is so strange to me because I was unaware bitcoin was a real financial instrument any country would care about. I've had three financial advisors, from Edward Jones, Stifel Nicolas and a little guy around the corner, all tell me to stay away from bitcoins. One even told me that, in two years, bitcoin would be dead.

So this is all strange to me.

<comment><USER38> To be fair almost every financial advisor ever would have told you to stay away from bitcoin because it was an unknown quantity and very high risk. In hindsight everyone of them was wrong if you bought in at any point between 2009 and mid - 2017 and sold in the last 6 - 8 months.

Also they have been calling bitcoins death since about 2009 when it was created so I would not put too much faith in those predictions. If anything this sort of thing could help bitcoin, either price manipulation is identified, the culprits prosecuted and bitcoin goes on as it is. Or no manipulation (or not significant manipulation) is identified and bitcoin carries on as it is but with a govt. seal of approval (up to that point).

<comment><USER11> They would've been right if it was the Zimbabwaean dollar if you bought it in the 80's, or one of Bernie Madoff's financial products.

They could still be right, given time. They've been right for Bitcoin Gold, for example. They were right when MtGox crashed.

<comment><USER38> My point was more that as a regulated individual a financial advisor should never have advised an investment in bitcoin. Even if the market proved them wrong (as it has up to now) it doesn't make them wrong for not advising you to invest in it.

<comment><USER39> Not necessarily "should never have advised an investment in bitcoin", that would depend on the investors risk profile.

</comment></comment></comment></comment></comment><comment><USER40> Markets are constantly manipulated and what we consider acceptable or not seems at times quite arbitrary. For instance quantitative easing is a practice we engage in whose entire purpose is to artificially inflate the value of markets to help spur 'growth.'

Is the problem that people may be trying to manipulate the price of decentralized commodity or that people are investing in a decentralized commodity without realizing that there may be people trying to manipulate it? I think there is a place for 'hard regulations' but I think there is also a time when the focus should be more on information than trying to enforce national rules on a global scale. Even more so when those rules are likely to fall subject to all the failings of political systems including graft, corruption, and the like.

<comment><USER25> Central banks are in the business of market manipulation via interest rates, and money supply. This is to control growth and inflation so that business cycles are smoothed out to a degree.

<comment><USER41> The problem with that approach is that market cycles serve important purpose: they faciliate best allocation of our resources by ensuring that inefficient companies will go bankrupt. Smoothing those cycles out enables poorly managed companies to stay in business for way too long. Then, since there's a limit to a market manipulation that central banks can do we end up with one huge crisis, like Great Depression, or 2008 housing buble, instead of series of small ones.

<comment><USER42> This austrian-style economic thinking about market cycles lines up with bitcoin ideology but is far from being accepted in mainstream economcs. It is flimsy pseudoscience.

<comment><USER40> Appeals to authority are generally not great, but this is made even more bizarre given that our current economic systems seem to be teetering on a precipice. Think about how truly desperate we are when we need to resort to quantitative easing, zero interest rates, and even flirting with negative interest rates - just to desperately try to maintain the status quo.

This doesn't mean any alternative is better, but rather that trying to refute alternatives by appeals to authority is an even worse idea than it usually is. And it's usually already an awful idea!

<comment><USER43> Europe did even more than flirt with negative interest rates and yesterdays reports proved the negative outcome of that experiment</comment></comment></comment></comment></comment></comment>


Portland police declare riot as anti-cop protesters torch union headquarters - <AUTHOR> https://nypost.com/2020/07/19/portland-police-declare-riot-as-anti-cop-protesters-torch-union-building/ <comment><USER2> As a liberal/progressive/democrat in today's society, you're pro-labor, therefore pro-union, right? When do you make an exception?

I see a parallel with our healthcare system. Undoubtedly, though things are bad and getting worse, capitalism kinda' works. But in the U.S., healthcare is a failed market and that's not going to change. Time to start over. Same with police unions.

<comment><USER3> In my view unions make most sense as a collective organization representing labor in negotiations against the collective organization of a corporation representing capital.

I'm not convinced yes that unions make sense when the other party represents the interests of the people - ie the government. As a similar example, I don't want our military to have a union - it seems like that would be overall detrimental as well.

<comment><USER4> The government might claim that it represents the interests of the people but they do not seem to put their words into actions. Would you support teachers employed by the state not having unions?

</comment></comment></comment><comment><AUTHOR> This post, which has a title that could be construed as critical of the protesters, has been flagged. You can search "portland" by date at HN and find many other stories about the unrest which have not been flagged. Articles are being flagged based on politics.

<comment><USER5> Not just the title. The article is heavily biased. Framing protestors as "vigilantes" implies wrongdoing, and using words like "protestors facing off with police" with no other context implies that protestors and police are equal or comparable in force. It's not even close.

<comment><USER6> > Framing protestors as "vigilantes" implies wrongdoing

Wouldn't want to imply wrongdoing on the part of arsonists, after all.</comment></comment></comment>


Ask: What is the best blogging platform?  - <AUTHOR>

I am new to the blogosphere and wondering the best place to get started. Honestly I am looking for a way to "get off" the social network grid, perhaps connecting to Facebook and twitter via APIs but not having an explicit account. <comment><USER2> WordPress has an awful security record:

<http://news.ycombinator.com/item?id=1328583>

<http://news.ycombinator.com/item?id=806910>

<http://news.ycombinator.com/item?id=1328261>

<http://news.ycombinator.com/item?id=354254>

<http://news.ycombinator.com/item?id=1328401>

</comment><comment><USER3> You should also check out Posterous.

</comment><comment><USER4> I've tried wordpress and Blogspot, and prefer blogspot, found its presentation slightly more customizable. It isn't, exactly, what I would like, but I can't say I'm willing to design my own. If I was, I'd consider finding free hosting, or hosting with a right side banner add, plopping a blog in the middle, and a microblogg feed on the left, because most of what I say doesn't have the depth of prose to really be called a 'blog'.

</comment><comment><USER5> Try installing wordpress 3.0 release candidate locally on XAMPP, then upload your blog to cheap web hosting once you have a minimum viable blog (MVB.)

</comment><comment><USER6> depends on your needs.

Wordpress: You get the power of manipulating the Server Side freely. Think plug-ins, widgets, Ajax... You host it yourself.

Blogspot: You only have JavaScript and few Server side commands. Good for simple blogging. They host it for you. Secure hosting that handle effectively massive traffic.

Others (Like posterous, tumblr...): You are limited, some how. I prefer to stay away from them, as they may surprise me with new rules.

</comment><comment><USER7> [http://venturefizz.com/blog/ten-steps-build-basic-content- hu...](http://venturefizz.com/blog/ten-steps-build-basic-content-hub)

</comment><comment><USER8> I created Bighow.com as a multipurpose Blogging platform [share news, resumes, classifieds etc.] - News Platform [team of news editors] in 2007.

</comment><comment><USER9> blogspot, wordpress, tumblr, posterous

You can get a free account on all these. There's also blogsome and livejournal, but not as good as the above.

</comment><comment><USER10> Tumblr

</comment><comment><USER11> Wordpress by far. You can get hosting for as low as $15/6 months that should do just fine for your initial efforts (I've gotten hosting from ASmallOrange at that price). Wordpress has the largest number of plugins and themes that can basically turn it into anything you need it to.

</comment><comment><USER12> Best? 'Best' means many things to many people. If you think 'Best' means ownership of the code and server, install WordPress. If 'best' means quicker Google Rankings, some suggest Blogger as the choice. If you want easy-to-use and quick-to-deploy, others might suggest Posterous.

I've used and demoed them all. Your mileage may vary.</comment>