GitQlient – a multi-platform GUI-oriented Git client written with Qt - <AUTHOR> https://francescmm.github.io/GitQlient/ <comment><USER2> Is anyone aware of a publicly available code base to look into when searching for high quality Qt-based (desktop) applications? Think chromium-quality software quality code base. I am looking for inspiring patterns and also things such as naming schemes as I regularly change my mind when it comes to developing Qt based applications with regard to:

      - naming things (e.g. should signals/slots be prefixed (sigFoo() -> onFooBared())
      - how to deal with signal functions actually not implemented (clang-tidy warnings)
      - how to break up large main window classes in a reasonable manner

and so on. Typically I immerse myself in one of the larger code bases I'm aware of (Android, Firefox, Chromium, Tensorflow, and some others) and regularly discover pretty useful patterns I can make use of. However, I was unlucky to find something for Qt based.

<comment><USER3> Qt itself, like for example [https://github.com/qt/qttools](https://github.com/qt/qttools)?

<comment><USER4> Good suggestion. Code snippets showing the naming style they use:

        connect(contextShortcut, SIGNAL(activated()), this, SLOT(showContextDock()));

        connect(m_messageView->selectionModel(),
            SIGNAL(currentColumnChanged(QModelIndex,QModelIndex)),
            SLOT(updateLatestModel(QModelIndex)));

Taken from [https://github.com/qt/qttools/blob/7ec161d6f/src/linguist/li...](https://github.com/qt/qttools/blob/7ec161d6f/src/linguist/linguist/mainwindow.cpp)

</comment></comment></comment><comment><USER5> Nice, good job, specially for going with Qt instead of Electron.

<comment><USER6> EVen thought I understand the bashing Electron gets, it doesn't seem that Qt is the right choice right now.

I tried to test the software: Needed Qt as there are no releases, but Qt is behind a paywall, and according to a previous post here in HN [1] it seems they resorted back to tactics they already reckoned (In 2015) were not good. I guess I'll just have to wait until the page has the releases ready.

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

<comment><USER7> > but Qt is behind a paywall,

apt install qtbase5-dev / brew install qt / whatever works just fine here.

if you are on windows and absolutely want the official releases :

        pip install aqtinstall
        python -m aqt install 5.14.2 windows desktop win64_msvc2017_64 -O c:/Qt/

<comment><USER6> Cheers.

I'm on debian 10 and that didn't work, but I suspect it's something to do with my current installation that complains about a missing Qt4 software even after installing that (That I'll research when I have the time).

<comment><USER7> Likely.

        sudo docker run -it debian:10
        apt update
        apt install qtbase5-dev build-essential g++-8 qt5-qmake qt5-default git
        git clone --recursive -j16 https://github.com/francescmm/GitQlient
        mkdir build && cd build
        qmake ../GitQlient && make -j16

seems to produce a build without errors here

</comment></comment></comment></comment></comment><comment><USER8> This probably the less mobile friendly website I've seen in a while! I'll have to check it in my laptop later on.

<comment><USER9> I had trouble even on a laptop screen!

<comment><AUTHOR> I don't know what you talking about, because I has no any issues on laptop.[0]

BTW, Alternatively try read docs directly from repo on GitHub.[1]

[0] [https://i.imgur.com/9wGBlLJ.png](https://i.imgur.com/9wGBlLJ.png)

[1] [https://github.com/francescmm/GitQlient/blob/master/docs/ind...](https://github.com/francescmm/GitQlient/blob/master/docs/index.md)

<comment><USER10> \- text straight-up cuts off: [https://imgur.com/uYCAxbk](https://imgur.com/uYCAxbk)

\- very weird layout: [https://imgur.com/3uFfmSW](https://imgur.com/3uFfmSW)

\- mobile users may not even see content if they don't scroll left / right after scrolling down a bit: [https://imgur.com/UQrKtcy](https://imgur.com/UQrKtcy)

</comment></comment></comment></comment><comment><USER11> Looks really close to Sublime Merge[1], which is great.

1: [https://www.sublimemerge.com/](https://www.sublimemerge.com/)

<comment><USER12> After seeing quite a few new Git clients, Sublime Merge is still, imho, the easiest to use

<comment><USER13> i find magit even better, but of the non-emacs gits porcelains, smerge is way at the top of the heap.

</comment></comment></comment><comment><USER14> This looks amazing! Looks almost as slick as GitKraken, without requiring all of my RAM+1GB to run.

Great work! I'll be recommending this to anyone who is looking for a git GUI client.

<comment><AUTHOR> JFTR, Also take a look on _Guitar_ [0] - another Qt-based Git GUI client.

I actually use Guitar, but GitQlient is also installed on my PC.

[0] [https://github.com/soramimi/Guitar](https://github.com/soramimi/Guitar)

<comment><USER15> What does GitQlient do that Guitar, QGit, CodeReview, GitAhead, or git-cola do not?

<comment><USER16> I can open multiple repositories at the same time in the same screen. I actually forked from QGit becuase I was missing a lot of functionality and inactivity in the UI.

I couldn't find a way to do that in QGit and GitAhead at least. I didn't try the others.

</comment></comment></comment></comment><comment><USER17> This looks cool. I'm curious if people use Git's tree view, in any form, as part of the regular workflow? If so, how? I have never found it useful, intuitive, or usually readable / parsable. Not the graph drawn on the command line, certainly not Github's tree view GUI of forked projects. I've also only ever worked on a project with one or two main trunk branches (master, and maybe dev), and feature branches, and very little merging between other arbitrary branches.

<comment><USER18> I use it as part of my daily flow.

One example: I work on a feature, which necessitates some refactoring, maybe upgrading a dependency, and oh, while I'm in the middle of it I notice some other, unrelated things, that need changing. In order to not have to break my flow and think too much about which changes are required for what, I just commit it all on the same local branch.

This then gets broken up into different branches in individual PRs.

<comment><USER17> I don't understand what this has to do with a visual view of branches and merges

<comment><USER18> It certainly helps me when splitting, comparing and picking changes between branches. Also to keep track of how upstreams have changed compared to my working branch before doing rebases.

Oh, and re Githubs fork view (which could be improved on the UI side), is helpful when seeing if anyone else has picked up the ball on unmaintained repos.

If you don't find it useful, fine, I don't think we all need to grok each others personal workflows and motivate them to each other?

Maybe you can compare it to a visual file manager that visualizes your directory structure as a tree; some people find it a necessity to get an overview of their file system, some don't.

</comment></comment></comment></comment><comment><USER19> Tried this on win10: it seems to crash without an error message when I try and open a repository.

<comment><USER16> As @app4soft said, please open an issue and attach as many logs you can: [https://github.com/francescmm/GitQlient/issues](https://github.com/francescmm/GitQlient/issues)

To be fair, in windows the performance is quite low due to Git Bash performance as well. I need to improve that :)

</comment></comment><comment><USER20> The tree looks nice. Similar to gitk, sourcetree or bitbucket. For whatever reason, github and gitlab cannot manage to get a similiar clean vertical git tree view.

</comment><comment><USER21> Can this stage individual lines, and then display a view of only staged lines and no un-staged lines? AKA only the things you are about to commit.

In SourceTree this is called "split view staging" and I find it indispensable. But SourceTree is so old as slow and unsupported that I'm desperately trying to find an alternative. Most of the existing GUI clients don't have this option.

<comment><USER22> SublimeMerge[1] allows staging only chunks of files.

[1]: [https://www.sublimemerge.com/](https://www.sublimemerge.com/)

<comment><USER23> You can also select lines in the chunks of the file to stage individual lines.

Not super discoverable but pretty useful.

</comment></comment></comment><comment><USER24> The link's layout is broken on mobile.

</comment><comment><USER25> It certainly looks quite beautiful, but sadly UI interactions -- resizing, clicking around, etc. -- seem to be fairly laggy at this point. Love the look- and-feel, but I think the interactive performance is frustrating at this point.

<comment><USER16> Hi! Thanks for the feedback!

Which platform did you try it in? I'd love to have as much info as possible so I can fix it :)

<comment><USER25> This is on Windows 10 x64. I'm interested to try again when you have a new build.

</comment></comment></comment><comment><USER26> There's also gitg which is fairly fast [https://wiki.gnome.org/action/show/Apps/Gitg](https://wiki.gnome.org/action/show/Apps/Gitg)

</comment><comment><USER27> Kinda looks like GitAhead, but I'll be sure to give this one a shot.

[https://gitahead.github.io/gitahead.com/](https://gitahead.github.io/gitahead.com/)

</comment><comment><USER28> Great job on using QT!!

</comment><comment><USER29> It is awful how all git gui clients completely ignore git submodules

</comment><comment> chris-c-thomas How would I get this to run on MacOS?

<comment><USER30> Should be able to download the .app release from here [https://github.com/francescmm/GitQlient/blob/master/docs/ind...](https://github.com/francescmm/GitQlient/blob/master/docs/index.md#appendix- a-releases).

Looks to be build instructions as well in appendix b on the same page.

<comment><USER10> Sadly, if you follow the link to the releases section, there is no release for macOS.</comment></comment></comment>


DataFramed – A DataScience Podcast - <AUTHOR> https://soundcloud.com/dataframed <comment><AUTHOR> Interviews with the likes of Jake VanderPlas, Robert Change (AirBnB), Emily Robinson (Etsy), Claudio Perlich (DStillery).

itunes link in case it's useful: [https://itunes.apple.com/us/podcast/dataframed/id1336150688?...](https://itunes.apple.com/us/podcast/dataframed/id1336150688?mt=2)

Note: this is made by my coworker, Hugo Bowne-Anderson for DataCamp, but I've been enjoying listening to it on commutes.</comment>


Show HN: Write/Sprint – a simple writing sprint desktop tray app - <AUTHOR> https://getwritesprint.com <comment><AUTHOR> This app started as an experiment in building desktop apps for the first time. However, as I learned, I realized I could solve a problem I have had as a writer and a problem I know a lot of other writers have. Sometimes, you just need to have a focused period of time to write. Writing sprints are great for writers to get that time, but most writers time them using a stopwatch app or an online timer.

Those apps do a decent enough job at keeping time, but they also make it easy to miss the end of the sprint and keep writing (not inherently bad, but not god if you're trying to see how much you got done in a given period of time). These ad-hoc solutions also don't allow writers to track their progress.

This is where I think Write/Sprint can really help. It takes less than 10 seconds to set the time of your sprint and start it. Then, when the sprint is done, focus is pulled away from whatever app you're working in to Write/Sprint so you can enter your word count for the sprint. All sprints are tracked in an easy-to-view table format, so you can always see how much progress you made for a given sprint.

Write/Sprint is a completely offline app. No internet connection required. In fact, all data is stored on your computer always and forever. There's just no reason to send any of your data to a server somewhere.

It's currently only available for MacOS, but should the community show interest, releasing a Windows version won't be difficult. I look forward to your feedback!</comment>


How to name a chicken sandwich: thoughts for branders - <AUTHOR> http://www.begtodiffer.com/2009/10/to-name-a-chicken-sandwich-part-1/

<comment><USER2> Amazing how much thought goes into this now, when many of the most iconic brands are last names (Smuckers, Heinz, Disney) or names that were not chosen for ANY branding reason (Google). It seems that a lot of this article really applies best to naming a product that has to fit into an established brand.

Good insights nonetheless.</comment>


Crown Sterling Claims to Factor RSA Keylengths First Factored Twenty Years Ago - <AUTHOR> https://www.schneier.com/blog/archives/2019/09/crown_sterling_.html <comment><USER2> They posted a video of their attempt on YouTube demonstrating their claim - which was quickly taken down again. Thankfully it's been mirrored; one source: [https://youtu.be/ML41g0hb7hM](https://youtu.be/ML41g0hb7hM)

Some highlights:

\- they claim that the RSA equation underlies all electronic banking and public key crypto (when of course, DH, ECC and many other systems make no use of RSA)

\- they apparently surveyed 500 CISOs and claimed only 5% understood the math of RSA (well, yeah, you asked CISOs and not professional cryptographers - duh?)

\- as expected it was a really amateurish demo with pre-selected keys, not even remotely convincing. I'm actually surprised they even bothered to factor for real, rather than just faking the factorization of a 2048-bit RSA key or something

\- they claim it was 50 seconds on a laptop in their press release, but they're clearly SSHed into a Linux box with 32 cores (and it was 50 seconds per key, not for both)

\- one line of debug output from their script matches CADO-NFS exactly, which is probably just what they're using under the hood

\- they won't accept stranger's keys because they're worried that info could be used maliciously...

It's so utterly absurd that this is even a thing. They have absolutely got to be running a scam, I don't see how they could be serious about this (especially the bit about redressing CADO-NFS as their own factoring algorithm!!). If it's a scam, I definitely hope they get sued by their investors or something...

P.S. I thoroughly beat their little record with my actual 8-core laptop running YAFU - I did two keys in 28 seconds to their 2 keys in 1:40.

<comment><USER3> 5% sounds about plausible, anybody inquisitive and capable of say, a numerate degree subject - physics, engineering, anything over in that corner, can follow along in textbook RSA. But the CISO doesn't actually need it for their job.

These sort of people are often closer to delusional than straight scammers, so that's why there's a demo of a thing that doesn't really work - they sincerely think they're onto something, even as they fail to achieve anything significant.

<comment><USER2> I was thinking delusional, but the thing is that their thing does work - it's just not their work. They repackaged CADO-NFS (a well-respected factoring program) and pretended that they'd invented a new factoring algorithm. It's actually simple plagiarism.

Now, what I could believe is that there's a massively deluded guy at the top, and a bunch of underlings who are desperately trying to enact his crazy vision. But it's pretty hard to ignore the evidence that this is a scam.

</comment></comment></comment><comment><USER4> These guys are like Theranos if Elizabeth Holmes had never bothered to hide any of the shady stuff she was trying to do. It's such a blatant con game that I honestly kind of admire them just for their moxie. I mean, I'm not going to give them any of my money, but still.

<comment><USER5> Worse. They're suing ten people for booing them at Black Hat, as well as suing the conference for not providing a heckle-free marketing platform which they paid for.

[https://arstechnica.com/information- technology/2019/08/compa...](https://arstechnica.com/information- technology/2019/08/company-accused-of-crypto-snake-oil-sues-black-hat- anonymous-detractors/)

[https://www.schneier.com/blog/archives/2019/09/the_doghouse_...](https://www.schneier.com/blog/archives/2019/09/the_doghouse_cr_1.html)

</comment></comment><comment><USER6> Thread on RSA factoring progress:

[https://twitter.com/sweis/status/1175099502312620032](https://twitter.com/sweis/status/1175099502312620032)

</comment><comment><USER7> Video: [https://www.youtube.com/watch?v=ML41g0hb7hM](https://www.youtube.com/watch?v=ML41g0hb7hM)

nneonneo already posted some highlights. Another one (2m50s):

"[Public key crypto] depends on one simple math equation. It is prime_1 times prime_2 = composite number. This is what's called the discrete logarithm."

<comment><USER8> My algebra is a little rusty, but isn't the discrete log totally unrelated except for also sometimes serving as a pseudo-oneway function?

<comment><USER7> They're different things, indeed, and can both be used for public-key crypto. ElGamal uses intractability of the discrete log, RSA uses the intractability of integer factorization. Both are broken by Shor's algorithm on quantum computers.

<comment><USER9> To be fair, this is one point that I think they've actually gotten correct. Discrete log is easy <=> Integer factorization is easy.

</comment></comment></comment></comment><comment><USER10> Reposting from another thread:

From the video: in a computer with 200GB of RAM, and 32 cores, they factorized the key in 52 seconds.

The first key (in decimal) is 83473593554391843334619428139045661537976651941410655062632649869770538548577

This page [https://www.alpertron.com.ar/ECM.HTM](https://www.alpertron.com.ar/ECM.HTM) solved it in 3 minutes, 37 seconds. I guess they are not using a so powerful machine. (It says "This is the WebAssembly version.")

I'm too lazy to copy the second number, but I guess it will be as easy as factorize as the first.

Can someone just repeat this demonstration in travis-ci or something like that using an standard package?

</comment><comment><USER11> According to an Ars Technica profile, their Director of Cryptography has authored books and a musical about hidden codes in the sonnets of William Shakespeare. This company appears to be the Foucault's Pendulum of mathematical crankery.

</comment><comment><USER12> I love the absurd spooky British aesthetic they're going for... If you tried to register a company with a name that sounded like it was somehow official in the UK itself, Companies House would fuck you up.

<comment><USER13> It also seems they retraced/copied state symbol of Czech repiblic - Lion with two tails as their logo. [https://www.mzv.cz/hague/en/general_information_on_the_czech...](https://www.mzv.cz/hague/en/general_information_on_the_czech/the_state_symbols_of_the_czech_republic/index.html?sa=X&ved=2ahUKEwj2o6 --tOHkAhVLbFAKHegpBDkQ9QF6BAgMEAI)

Going for that grand traditional authority with corny metals aesthetic.</comment></comment>


What We Have vs. What We Want - <AUTHOR> http://radar.oreilly.com/archives/2008/01/what_we_have_vs_what_we_want.html <comment> daniel-cussen Pure, unadultered entrepreneurial genius. He should be awarded a visa immediately (assuming he'd like to come to US).

</comment><comment><USER2> What a great idea! An airplane that goes nowhere just to give the experience to those who have never had it.

Someone should do the same thing for computing. Oh wait, never mind. We have Windows.</comment>


Dizzying but invisible depth - <AUTHOR> https://plus.google.com/112218872649456413744/posts/dfydM2Cnepe <comment><USER2> This is part of the things that I list under "human-built things I technically understand (more or less) but are still completely baffling if I stop and think about it".

Amongst these:

\- same example with Google Instant: the fact that what I type goes to Google and back that fast and that I _never_ get somebody else's page is pretty amazing;

\- CRT monitors: a flow of electrons is bent with electric current to hit a specific point on the screen, for millions of dots at least 30 times a second and it never misses its targets; (leaving aside that we were able to get a constant flow of electrons in the first place…)

\- car engine: fuel is injected, compressed, lit up in cylinders at 3000rpm to make a 4,000 vehicle move at 65mph and the engine barely ever have hiccups.

\- cell phones: I'm driving in California and can talk to my Dad who is in a high-speed train in France. It works and you can't even notice a significant delay.

And there are obviously so many more things like these…

It's like this Louis C.K. bit about people who complain about being stranded 40 minutes on the ground before taking part of "the miracle of flight". We should spend more time amazed at when it works than pissed at when it doesn't.

<comment><USER3> I think that's a red herring.

I mean, isn't that just the marvel of abstraction? I can show you how it works, on a basic level: See, it goes around like this. This connects here. That switch opens. This moves back, and that's the behavior that we're looking for. Easy.

Why is it that when that same thing happens a hundred times a second, the emergent behavior suddenly becomes mind-boggling? It's just the same thing, _faster_. You already understand it. Your brain cant work fast enough to see what's going on, but thats exactly why we built the machines: to translate very fast things into things slow enough to understand. The complexity of the speed is illusory.

It strikes me as like a small child, watching the cars go by-- Zoom! Zoom! Surely that is the most amazing thing that exists. But when she grows up, she learns that _everything_ has a velocity, which has to be _some_ number, so it might as well be high. The interesting things are still interesting, moreso even, when it's going very slow. Just going fast is kind of boring.

What's cool are the things that emerge when you abstract. You have a car, and you know why that works. The connection between gasoline and forward motion is straightforward enough. But as soon as you have three cars on a road, you have _traffic_ , and that's something fundamentally new. And you can analyze the traffic, figure out how it works-- but can you see how traffic is fundamentally dependent on the behavior of gasoline? And gasoline on the behavior of a refinery?

And what happens when the refinery is run by people who drive to work? Now you have a recursive system. Can you still understand it? Maybe today. By tomorrow it will have changed itself. Can you understand the change?

What happens when you think you understand the change, so you make a prediction, but your prediction affects what happens, making you wrong? But you take this into account when you make your prediction, becoming right again, except now you're a part of the recursive system, and there will _never_ be a right answer. Understanding has become _impossible_.

Now _that's_ baffling.

(And not to get all political, but this is also why a properly functioning government is not merely a hard, but an intractable problem. No matter how much you know what you're doing, you can't control something that controls you... But that doesn't stop us from trying.)

<comment><USER4> >>But when she grows up, she learns that everything has a velocity, which has to be some number, so it might as well be high.

It's annoying how you say 'she' because it distracts me from your content into thinking about feminism.

<comment><USER3> You must get annoyed a lot.

</comment></comment></comment></comment><comment><USER5> I found this disheartening. Life is complex but its not unknowable.

One of those 'life choices' I faced when I entered college was whether or not I wanted to 'program' computers or to 'build' them. These would guide the choice of EE or CS degree. My father asked if people with EE degrees were allowed to program computers, I said of course they were. Then he asked if people with CS degrees were allowed to build them, and the answer was no they were not generally. So if I didn't know what I wanted to do, I should get an EE degree since then I could do either.

Turned out to be pretty sage advice and knowing _how_ the computer does what it does really helps program it. Especially if you are trying to wring every erg of performance out of it. When I graduated with my EE degree (and a minor in CS) I was proud of the fact that I could write a database in a languge for which I wrote the compiler on a computer architecture that I designed using circuits that I understood down to the physics of the PN junctions that governed the behavior of semiconductors. (It really is math all the way down sadly)

That being said, I firmly believe the human brain has a limit (which may be case by case) of how much stuff it can hold at one time. And the notion of abstraction, especially modularization and testable components, makes complex systems possible.

This comes up in a variety of contexts. Sometimes I interview folks who can draw a nice architecture on the white board with boxes and arrows and such. So I ask them do go into one of the boxes, and lets draw that out in detail. And then those sub boxes I want to go into their detail as well. My goal is to understand that the candidate understands that 'boxes' are only a good way of thinking about something if you understand what the box is really modelling.

A good example of this is that naive people treat a hard disk drive like a box. It has a port you tell it to read logical block A or write logical block B and it does some magic and makes it happen. But really it screws up now and then, and it has very variable performance. So if you can't explain how you have accounted for these properties of your box then you're not thinking deeply enough about it.

Sometimes an 'architect' type (you know the type, Joel called them Architecture Astronauts as I recall) they dismiss your whole area of expertise as a box in their model. This can lead to some pretty dismissive thinking by the 'doers' in the crowd, but it is important to know that without abstracting that thing you're working on, the architect person wouldn't have enough brain capacity left over to see the 'bigger' picture. As long as their picture of your box is accurate, you should cut them some slack.

The bottom line for me is that it can be 'amazing' at how the complex system runs but words like 'mystifying' and 'dizzying' make me nervous. If you're a software developer and its 'mystifying' how your program can do what it does that is a problem you should address. There was an excellent pointer to 'what every programmer should know about memory' and there should be equivalents to 'networks', 'processor architecture', and 'disks'.

</comment><comment><USER6> The technology that civilization creates is only possible because humanity specializes. Humans aren't so smart by themselves, but we can do a lot of thing if humans possess specific knowledge.

For example, one guy specialize and dedicate his life to metalworking. If I try to know everything in the world, I could barely scratch the surface of what that guy learned.

People can even specialize in multidisciplines. They don't know as deeply as a specialist in a subject area but they know two area well and combine them into useful combination.

It would seems that today's problem is more about the limit of human beings' ability to store and synthesize information across vast disparate field. In other words, we generated so much knowledge, but so much is just kept there not being used.

Spaced repetition is a good example. It's a very powerful memorization technique, but it is not being used in colleges and schools, except those who discover it on accident.

It's also a timesaving tool in the programming profession. Instead of googling and wasting 5 minutes for answers to our programming problem, we can save 5 minutes for many common tasks we memorize. It won't save us from debugging woes but at least we get to the important programming problems faster.

There's also a storehouse of reliable information on self improvement written by psychologists who done experiment and research things like willpower and discipline, why it fails, and so on. Instead, we got distracted by techniques that seems to work but have no scientific basis, or we get distracted by self improvement gurus that have no idea what we're talking about.

We are specialists but we miss a ton of useful stuff that would be useful to our specialization. It's like missing a thousand useful book every year because you can never read them fast enough.

<comment><USER7> Perhaps, but:

"A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects."

         -Robert A. Heinlein

[http://elise.com/quotes/a/heinlein_- _specialization_is_for_i...](http://elise.com/quotes/a/heinlein_- _specialization_is_for_insects.php)

<comment><USER8> Why is this quote worth considering or insightful? What does it add to the discussion? Have you done half of those things? Did you really get anything out of it? Some insects specialize, some do not. One could just as easily say farming is for insects, or flying, or a multitude of other things. Just because several species of insects do something does not mean we should not.

This quote, along with a few others, seem to be always dropped into internet discussions with no context or explanation, and I never see them add to the discussion.

<comment><USER9> Sure, lots of us have done more than half of those things. Its supposed to be illustrative of how a person is a gadget for figuring out how to do whatever comes along, instead of being programmed for a particular life plan.

But you knew that. I'd have to wonder why the pedantic complaint?

<comment><USER10> Because you didn't say any of it. The quote is amusing; using the quote to contrast with the post it replied to adds much more. And personally, I got something entirely different out of the quote than you did, and I found the point of view you just explained interesting.

</comment></comment></comment></comment></comment><comment><USER11> Reminds me of "Nobody knows how to make a pencil":

[http://alexbarnett.net/blog/archive/2006/11/18/Nobody- knows-...](http://alexbarnett.net/blog/archive/2006/11/18/Nobody-knows-how-to- make-a-pencil.aspx)

It's the same thing at every human technology. And this in turn reminds me of Mostly Harmless, by Douglas Adams, where the protagonist finds himself in a simple rustic village. He is unable to reproduce any of the technology from his civilization and settles as a sandwich maker.

</comment><comment><USER12> This article brings to mind "If Software Is Eating The World, Why Don't Coders Get Any Respect?" discussion - <http://news.ycombinator.com/item?id=2919708>

Perhaps by making technology a Black box, we unintentionally shielded those who deserve the credit (social and monetary) from receiving it. Maybe even allowed some grey-area experts from controlling an industry with ones and zeros at its core.

</comment><comment><USER13> I have my 14 months old daughter playing right next to me. Two cells merged and there was life, giggles, tears, words, laughter.

Now, _that's_ dizzying.

<comment><USER14> As amazing as it is, it gets far more dizzyingly complex once you look at the biology underneath it.

</comment></comment><comment><USER15> The real problem is in people patenting ideas that are of dubious innovation. In fact, the patent office should negate patent applications if identical ones appear within months of one another. This is because it shows that there is no genuine leap of innovation that has occurred.

<comment><USER16> This doesn't quite work; some of the most creative, innovative ideas in history bubbled up from the collective unconscious in several minds at the same time. Just look at the number of nobel prizes that get split between people that discovered _exactly_ the same thing at _exactly_ the same time but completely independently.

<comment><USER17> You're misunderstanding the purpose of patents. They're not a reward to be granted for every useful invention. Patents exist only to be an incentive for innovation. In almost every case where several inventors are competing to get the invention ready to patent, there is enough natural incentive that the patent is not necessary. In those cases, granting a patent can just as easily slow down the pace of technological progress, by forcing every inventor that didn't get the patent to either stop working in that area or negotiate a patent license before they can continue working to improve the invention.

<comment><USER16> They give an incentive for innovation by granting the original inventor time to bring his invention to market before an established entity uses its existing resources to block him out. This model isn't very useful to software, but it works perfectly fine with cars and tractors and other things that take five years from concept to product.

One trivial improvement might be to split patents the same way that major research recognitions are split. If two people come up with something simultaneously and independently, why not give it to both of them?

<comment><USER18> You're both missing the very important compromise of patents.

The temporary monopoly patents give were and are understood to be harmful. But, they're less harmful than a world of trade secrets. Which is what we had, before patents. See: guilds.

So, we the public offer intellectual property. And, in return, the details of that property become public from the very beginning. And, after a few years, everyone has freedom _and the instructions_ on how to make or do whatever.

<comment><USER15> Exactly. If the state of the world is that people can separately come up with the same "trade secrets", then there is a case against it being patentable.

</comment></comment></comment></comment></comment></comment><comment><USER19> In my opinion this post ignores the significant divide between the general understanding of hardware and software.

Most people have a general idea of how an internal combustion engine works, how their fridge works, how a tv works, hell, even about how a nuclear power plant works. Most people wouldn't know how to make any of these things, but it's not exactly a "dizzying invisible depth" either, and most people are capable of making informed decisions without being engineers.

When it comes to software however, most peoples understanding remains completely at the surface. I don't believe this is something we should accept as "normal", because this is exactly what leads to many of the issues our society is currently struggling with. Not just software patents, but many of the current security and privacy issues or the huge unemployment.

The general understanding of software was not, and still isn't part of peoples culture and education in the same way a basic understanding or hardware has always been. This significantly undermines the decision making on all levels of society, from government policy to personal choices. The patent mess is just a symptom.

</comment><comment><USER20> I often try to explain this to friends, but in a shorter way:

Driving a car is essentially a controlled explosion taking place every second about three feet in front of your face—and yet this very dangerous and messy process "just works" for millions of drivers every day. We are more afraid of other cars than we are of the fireworks right in front of our face. That's pretty amazing.

</comment><comment><USER21> Obligatory XKCD: <http://xkcd.com/676/>

<comment><USER22> <http://xkcd.com/485/>

</comment></comment><comment><USER23> Reminds me of a thought I had about babies: How does that little bunch of cells grow into a living, breathing human being? Surely there isn't enough information in there to do that.

Answer: It can't, and it doesn't. Not without the mother.

(I have no idea if this is indeed true, but I like the loopyness of the idea).

<comment><USER24> And here I was thinking this thing called DNA carried the information.

<comment><USER25> Not all of it.

<comment><USER26> What's about egg donors or surrogate mothers then? Doesn't the baby turn out like their parents?

<comment><USER27> You can't bootstrap in a vacuum. For one, the baby will inherit the surrogate mother's bacterial line.

</comment></comment></comment></comment></comment><comment><USER28> Sort of puts arguments about "leaky abstractions" in the appropriate perspective. Even assembly has a lot of turtles holding it up...

<comment><USER29> In fact on an x86 machine the byte code that programs are written in gets translated into a specialized micro code which is then executed.

So even assembly isn't the lowest language.

</comment></comment><comment><USER30> Well, this kind of puts a new spin on the saying "any sufficiently advanced technology is indistinguishable from magic"!

</comment><comment><USER31> As Matt Ridley puts it in his TED talk ( [http://www.ted.com/talks/matt_ridley_when_ideas_have_sex.htm...](http://www.ted.com/talks/matt_ridley_when_ideas_have_sex.html) ) :

Nobody on earth knows how to build a computer mouse (all by himself).

<comment><USER32> Actually nobody on earth knows how to make something apparently as simple as a pencil (obviously much, much simpler than a modern computer mouse).

<http://www.fee.org/library/books/i-pencil-2/>

<comment><USER33> I'm surprised nobody has mentioned the Toaster Project, where the artist is attempting to build a complete toaster from scratch (mining the metal out of the ground, smelting, etc)

<http://www.thetoasterproject.org/>

</comment></comment></comment><comment><USER34> Same submission from a few hours ago: <http://news.ycombinator.com/item?id=3115176>

(Apparently multiple sign-on URI leaked on my earlier submission)

</comment><comment><USER35> People who got somewhat of a buzz reading the above may enjoy James Gleick's new book @ <http://around.com>

</comment><comment><USER36> This is similar to one of my favourite interview questions. I usually ask my candidates to explain everything that happens from the time they type an address in their browser till when the page they requested is rendered. You can find a lot about candidates with this question.

</comment><comment><USER37> We need a new human layer to truly make meaning and create value over all the technology.We need all this to come together to change our lives in ways that parallel the invention of the wheel and the computer.Its clear the next big thing is Personal webs!

<comment><USER38> Are you talking about APIs that work directly with our biology? Like, get/set data in the brain?

</comment></comment><comment><USER39> Keep going and it gets simple again.

You put a bunch of leptons and quarks in a specific ordering and they start arranging other atoms in ways to help them understand their own specific arrangement.

That they can is why I think it is simple. in the sense of elegant.

</comment><comment><USER40> I've understood this for quite awhile but have had a really hard time articulating it. This piece is a godsend.

</comment><comment><USER41> I simply could not get past the Groundhog-day intro.

</comment><comment><USER42> Google "I, Pencil".

</comment><comment><USER43> Was I the only one who was thinking: "Jeez, I've seen some of the code that runs these complex systems, and the really amazing thing is that they ever worked at all!" :)

<comment><USER44> No, everybody thinks that. I'm strongly reminded of my commentary on Ryan Dahl's rant a few weeks ago - <http://news.ycombinator.com/item?id=3056534> \- "Everybody can look at a simple thing like a submit form in a web browser, and sigh at the inefficiencies in the whole stack of getting what they type at the keyboard onto the wire in TCP frames, the massive amount of work and edifices of enormous complexity putting together the tooling and build systems and source control and global coordination of teams and the whole lot of it, soup to nuts, into a working system to do the most trivial of work."

</comment></comment><comment><USER45> I actually find the _simplicity_ of computing devices staggering and beautiful. If the earth was wiped out tomorrow, one would only need to remember what a turing machine is and how to make a semiconductor to rebuild them.

Also, the rant becomes too broad to have a point.

<comment><USER46> Good luck with that.

Just making glass is going to take you a while.

Making semiconductors at a scale that you can start thinking of building a working computer will take you quite a bit longer.

It's simple in principle. It would be far easier to stuff a bunch of people in rooms with paper (assuming you could make that) and pencils (ditto) and have them execute your program.

<comment><USER47> Among other things, "how to make a semiconductor" is like that joke about how to make a million dollars: "First, you take a million dollars..."

You're going to spend years just bootstrapping your metal refinery to the point where you can bootstrap your machine shop to the point where you can bootstrap your chemical industry to the point where you can produce undoped silicon of sufficient purity to make a decent integrated circuit. Sure, maybe you can slap together a handful of cheesy transistors to rival the first-ever transistor (Google up the picture of the first transistor; it's _hilarious_ ; you can practically smell the hot glue wafting from that picture) but it takes a bunch of transistors to make a computer, and you'd probably like your computer to get through three whole clock cycles before melting.

You might actually be better off just recapitulating history by starting with vacuum tubes. You'll need to master glassblowing and vacuum pumps to build semiconductors anyway, and tubes have lots of handy uses. (You could build an oscilloscope, which you will also need.) But you'll need to bootstrap your metal wire industry (generators aren't that hard to make _if_ you can get hundreds of continuous feet of insulated wire...) and note that you'd better be very careful until you've had time to bootstrap your plastics industry; there are scary stories from the early days of TV when they had high-voltage circuits but nothing to insulate the wires with but varnish and paper...

<comment><USER48> Jeri Ellsworth managed to make transistors in a pottery kiln, starting with modern wafers. She said it took three years of research and interviewing graybeards who were working on it in the 1970s. Makes me hope she wrote that stuff down.

<comment><USER46> The wafer is the hard part.

That's why I suggested making glass first, it's a good primer on the kind of gear that might one day lead up to the tooling you'll need to make silicon pure enough to make a transistor.

You'd be _much_ better off choosing a road that leads via relays, that's just metalworking and some coating. Vacuum tubes would still be an order of magnitude easier than silicon.

Think sandy beach + pit mine, before you turn that into a working transistor you're going to be busy for a while.

<comment><USER10> > You'd be much better off choosing a road that leads via relays

One Portland State University professor built a relay computer, with an ALU:

<http://web.cecs.pdx.edu/~harry/Relay/>

Quite impressive to see it in action.

<comment><USER46> Thank you for that link. I took the liberty of re-posting it separately, it is one of the coolest things I've ever seen built. Besides the memory (and that would just add another couple of 10's of thousands of relays for a usable machine) that looks like the shortest direct path between 'man on a beach' and having a working automatic computer with a practical degree of reliability.

<comment><USER10> "practical degree of reliability" seems somewhat debatable; it apparently burns out components fairly often when running. IIRC it uses quite a bit more juice than it needs to, which might have something to do with it, so perhaps it could be made more reliable.

<comment><USER46> Relay contacts tend to spark when they engage each other. You can get rid of most of that sparking by adding diodes but that would be cheating (semiconductors again), to a lesser extent using small neon bulbs across the coils (that will still take them up to 90V though).

With 'practical' I meant that you would be able to run programs to completion for for instance numerical problems.

Vacuum tube computers suffer from different problems (such as tube filaments burning out) and I really wonder whether a well designed vacuum tube computer would be more or less reliable than a well designed relay based computer.

Vacuum tubes got awfully small in their final days but the voltages involved and the heat make me believe that relays would probably be more reliable, but likely also more expensive and much slower.

<comment><USER49> A capacitor will deal with the sparking -- they've been used (under the name _condenser_ ) in conjunction with _points_ and mechanical distributors in internal combustion engines for years.

This all presupposes a memory of methods to create reliable electricity, though -- including rectification and filtering, if that memory involves alternators. A purely mechanical representation of computing would probably be more practical in a forced Iron Age reboot of society. A treadmill-powered version of Photoshop would be a bitch, of course, but number crunching (at the level needed for serious societal progress) would come fairly quickly.

<comment><USER10> The relay computer does use a capacitor: a huge 1F capacitor.

<comment><USER46> That's to stabilize the power supply, not to help with avoiding contact erosion.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Secret History of Holywell Street: Home to Victorian London's Dirty Book Trade - <AUTHOR> http://publicdomainreview.org/2016/06/29/the-secret-history-of-holywell-street-home-to-victorian-londons-dirty-book-trade/ <comment><USER2> Forewarned, contains some NSFW images.</comment>


Turning an IBM Selectric into a Printer (2012) - <AUTHOR> http://hackaday.com/2012/06/13/turning-an-ibm-selectric-into-a-printer/ <comment><USER2> Does anyone have a serial / parallel / USB port driven daisywheel or ball printer they'd part with?

Looking for most any kind of 'impact' printer that could be driven from MacOS.

<comment><AUTHOR> Look on eBay. You can usually find one. Or try to find some law firm that is selling off their old tech.</comment></comment>


Hackable Electronic Badge - <AUTHOR> https://www.parallax.com/downloads/hackable-electronic-badge <comment><USER2> The chaos communication camp badge, a full featured SDR: [https://rad1o.badge.events.ccc.de/](https://rad1o.badge.events.ccc.de/)

There was a talk about how this badge was built (non-comercially); it was only possible with most of the chips sponsored and a few people doing pretty much nothing else for months.

<comment><USER3> A full featured SDR _capable of transmitting_ (based on hackrf).

Which, to my knowledge, is the first time a conference has handed out badges that were actually useful afterwards. Pretty awesome.

And here's the talk: [https://media.ccc.de/browse/conferences/camp2015/camp2015-68...](https://media.ccc.de/browse/conferences/camp2015/camp2015-6884-the_rad1o.html)

</comment></comment><comment><AUTHOR> This came across my inbox and I think it is one of the IoT applications that actually makes some sense. That Parallax made it a product seems like the next step.

My guess would be that something like this would be really good way for an Atmel or ST Micro to "sponsor" the embedded systems conference as well.

</comment><comment><USER4> Hackaday article about the same badge: [http://hackaday.com/2015/09/14/the- open-hackable-electronic-...](http://hackaday.com/2015/09/14/the-open- hackable-electronic-conference-badge/)</comment>


Mulesoft files for IPO - <AUTHOR> https://www.sec.gov/Archives/edgar/data/1374684/000119312517047884/d287291ds1.htm <comment><USER2> Some notes from the S-1:

* "Subscription and support" revenue is about $150M, with "professional services" about $30M. This is a software company with a services side, not the other way around. That's good as software companies tend to be valued around ~10x revenue and services companies only around 3x revenue.

* The company made $180M revenue in 2016, growing at ~70% / year, so it's probably on a ~$250M run rate right now.

* Last round of funding was raised at a $1.5B valuation. I imagine they'll try for 10-12x revenue, or $1.8B - $2.2B. Twilio is currently trading at around ~10x revenue.

* Sales & marketing spend is very heavy -- $122M of their $240M expenses, so about half, were due to sales and marketing. Engineering aka "research and development" only costs them 1/4 of that, or $30M / year. That's...okay I guess? It means growth is pretty expensive, but if they ever want to dial back that growth, they can rake in the $.

* Ownership: Big VCs own 68% of the firm, the original founder owns 6%, the current CEO owns 3%, other execs own another couple percent. Ownership of the other ~20% isn't clear, prob split between smaller VCs and employees.

<comment><USER3> How about a description of what the company does that a mere mortal could understand?

<comment><USER4> Their main product is an Enterprise Service Bus, a piece of technology that is supposed to help make it easy for software developers to integrate with multiple disparate third party solutions (and potentially internal solutions). So you can get a "Connector" for SAP, and another for Salesforce and consolidate, transfer or do practically whatever with the data in both systems, without having a bunch of developers working on an in-house solution to consume the requisite APIs.

My one criticism of them would be they focus very heavily on cloud, and their on-premises offering is woefully anaemic, lacking fundamental functionality, such as messaging.

<comment><USER5> I'd say their support for on-promises deployments is anaemic too.

For an open source product in the same niche, have a look at [http://servicemix.apache.org/](http://servicemix.apache.org/) which includes [http://camel.apache.org/](http://camel.apache.org/) and other bits.

<comment><USER6> I would also look at [https://zato.io/](https://zato.io/) which is a really nice Python based one.

</comment></comment></comment></comment></comment><comment><USER7> I applaud Mulesoft for going public. Too often today large (well past series C) tech companies (I won't name any names) refuse to go public and instead continue to take private equity and foreign investment and prop themselves up on absurd valuations with no-checks and balances. Some of these companies are absolute dog shit, yet they continue to receive unlimited funding and insane valuations in a vacuum with no market to short them.

Wall Street calls bullshit when they see it, and smart people short bad companies when they find them. Silicon Valley doesn't provide a way to short these propped-up companies, they just continue to self-promote themselves on private equity and foreign investment.

Kudos Mulesoft and best of luck.

<comment><USER8> There are rumors of Dodd-Frank getting repealed [1].

Afaik Dodd Frank had increased the reporting burden of companies to the point where it was much more difficult to IPO at a .com era revenue stage. So maybe its repeal will have the side benefit of allowing young but operationally strong companies to use IPO as a viable fundraising avenue again.

[1] though the Wall Street implications worry me.

<comment><USER9> I thought Sarbanes-Oxley, which added a lot of reporting/disclosure requirements for public companies and was passed in the wake of Enron and Worldcom scandals in the early 2000s was the primary driver behind the drop in IPOs? What provisions in Dodd frank are there that effect this?

<comment><USER8> Whoops I think I got them confused!!! :(

</comment></comment></comment></comment><comment><USER10> Why have I confused Mulesoft with Nullsoft all these years?

<comment><USER11> Because they're both single-vowel words followed by "soft."

<comment><USER10> Possibly, but also because "Mule" and Nullsoft's llama, plus things like EMule and WinAmp pairing so well.

<comment><USER11> MULESOFT. It kick's the llama's ass.

</comment></comment></comment></comment><comment><USER12> Love it. Mulesoft was a customer at my previous company and I always enjoyed working with them. Good luck for their IPO - it's a good thing for the ecosystem to see more tech companies going public this year.

<comment><USER13> What exactly does Mulesoft do?

<comment><USER14> The old terminology was ESB, or enterprise service bus. It's Java based, and basically feels something like Tomcat, but with a bunch of add ons. Things like api management, various protocol connectors, data translation, pre-built integrations, and so forth. Like a hub that can run your code, plus talk to most of what you already have.

</comment></comment></comment><comment><USER15> If it's anything like Apigee IPO it would be a huge disappointment for their employees

<comment><USER16> What went wrong with the Apigee IPO for the employees? I know that they got acquired by Google but I'm not familiar with anything else.

<comment><USER13> Quick research suggests this timeline to me:

Summer 2014 Apigee raises last private funding at a $600M valuation

April 2015 Apigee IPOs at a valuation of $500M

By end of 2015 Apigee closes at a valuation of ~$250M.

So the company lost almost 2/3rds of its value probably right as the lockup period was expiring for employees to sell shares.

<comment><USER17> Ouch. What is the justification for the lock up period? Is the idea that employees are somehow going to flood the market? Is the volume of vested options for the average worker bee really that high at the time of IPOs? Its seems like the plebes get burned a fair amount.

<comment><USER13> Yea, it's to keep the price somewhat stable after the IPO. It's a very standard thing to do and the share price of a company usually drops permanently when the lock up period expires.

Maybe a good rule of thumb is 10-20% of the company could be owned by employees at the time of IPO which could materially change the share price.

</comment></comment></comment></comment></comment><comment><USER18> Winamp goes public!</comment>


Intel and Nvidia  Fighting for Deep Learning Dominance - <AUTHOR> http://www.gurufocus.com/news/439770/intel-and-nvidia-fighting-for-deep-learning-dominance <comment><USER2> Related previous discussion: [https://news.ycombinator.com/item?id=12300868](https://news.ycombinator.com/item?id=12300868)

The real fight probably won't start until something like Knight's Mill ([http://www.anandtech.com/show/10575/intel-announces- knights-...](http://www.anandtech.com/show/10575/intel-announces-knights-mill- a-xeon-phi-for-deep-learning)) is launched. Even then, it seems that unless Intel provides a drop-in cuDNN-like library for deep learning the big frameworks will have a tough time supporting Intel hardware quickly/efficiently.

</comment><comment><USER3> Couple more data points:

Intel recently bought Nervana Systems, a startup focused on creating a neuromorphic ASIC for deep learning, which had been financed by DFJ. Nervana wrote a fast open-source library called neon for GPUs. I expect the Nervana team will be involved in this fight.

Right now, Intel largely owns the data centers while NVIDIA owns academic hardware acceleration. It's faster. Obviously those are generalizations. NVIDIA's DGX-1 is a way to leap into enterprise, while the Xeon Phi is Intel trying to compete on speed and distributed neural net training.

Interesting times.

</comment><comment><USER4> A more apt headline would be "Intel trying to dislodge Nvidia from its current dominance in deep learning."

It would be great for Nvidia to get real competition.

<comment><USER5> Intel has 82% of the x86 market, it would be great for Intel to get real competition.

</comment></comment><comment><USER6> Meanwhile, google already has an ASIC.

<comment><USER7> And there's this - Neural Compute Stick: [http://www.movidius.com/news/movidius-announces-deep- learnin...](http://www.movidius.com/news/movidius-announces-deep-learning- accelerator-and-fathom-software-framework)

</comment></comment><comment><USER8> Why isn't AMD able to compete here, given their GPU history (acquisition of ATI)? It seems like they would be a natural fit for the market.

<comment><USER5> Misplaced focus on integer performance, is among the reasons.

<comment><USER9> Integer is fine for most NN jobs, IIRC.</comment></comment></comment>


First BitKeeper commit - <AUTHOR> https://github.com/bitkeeper-scm/bitkeeper/commit/d4397fb3ec73362f39250221cb9112862f16fa17 <comment><AUTHOR> This is technically the second changeset, it seems, but I posted this one since the first is just blank: [https://github.com/bitkeeper- scm/bitkeeper/commit/a082174a1b...](https://github.com/bitkeeper- scm/bitkeeper/commit/a082174a1bc3a20b96b9b37e2c7a6b0e5b6ff138)</comment>


Tekton Pipelines – K8s-style resources for declaring CI pipelines - <AUTHOR> https://github.com/tektoncd/pipeline <comment><USER2> I literally just today bought a Tekton [1] torque wrench and was wondering what business they had that required CI pipelines.

Different company.

[1] [https://www.tekton.com/](https://www.tekton.com/)

</comment><comment><USER3> Looks like a pretty strong string of commits. This one has some mojo.

</comment><comment><USER4> The focus on source based flows is the right product decision here --- wonder if it unnaturally constrains the market and effectively cede ubiquity to a more generic tool

What is the plan here?

<comment><USER5> I think most things in software trade-off between general purpose and specialized.

My 2c is that we'll see more and more things become source-based over time. We're already seeing it with infra as code, gitops, git-ml, etc.

If the scope of Tekton expands, it will be because more things become source- based. And that would be great for everyone.

Disclosure: one of the leads and founders of Tekton, at Google.

</comment></comment><comment><USER6> Interesting but is it another argocd?

<comment><USER5> A closer comparison would be to Argo Workflow. Tekton and Argo Workflow provide ways to declare workflow pipelines for execution on Kubernetes. Tekton focuses on source based workflows, while Argo is more general purpose.

We've been working with the Argo team to make sure Argo CD works well with Tekton, and we now have a first-class integration in the tekton catalog, contributed by that team.

Disclosure: one of the leads and founders of the Tekton project.

<comment><USER7> How much, if at all, has the investment from Google in open source projects like Tekton changed at all with the post-Diane Greene leadership?

<comment><USER5> I can't speak for projects in general, but I haven't noticed any changes on Tekton or the other things I work on.

</comment></comment></comment></comment><comment><USER8> is there a good resource to read up how does this differs from the normal K8S tasks ?</comment>


Goodbye PNaCl, Hello WebAssembly - <AUTHOR> https://blog.chromium.org/2017/05/goodbye-pnacl-hello-webassembly.html <comment><USER2> This one I'm fine with since WebAssembly is a worthy replacement, but I'm still annoyed at Google discontinuing Chrome Apps.

Some examples of specialized apps I use all the time that would require a native app otherwise:

\- Signal Desktop

\- TeamViewer

\- Postman

\- SSH client

\- Cleanflight drone configuration tool

It was one of the best things that happened to Linux desktops in a long time and removing it hurts users and makes them less secure.

Now everyone is moving to Electron and instead of one Chrome instance, I'm now running five which use more than one GB of RAM each. Much less secure, too, since each has its own auto-updater or repository and instead of being sandboxed by Chrome's sandbox, they're all running with full permissions.

It also means I cannot longer use Signal Desktop on my work device since installing native apps is forbidden for good reasons, while Chrome Apps are okay.

It also hurts Chrome OS users since Chrome Apps are being abandoned in favor of Electron. It also makes it less useful for developers to create Chrome Apps since the market is much smaller.

Since Chrome Apps continue to be available on Chrome OS, I'm considering separating that functionality into a stand-alone runtime or making a custom build for Linux. Anyone wants to help with that?

<comment><USER3> Add to that list:

\- unblockable advertising

\- stronger DRM

\- Bitcoin mining that regular user can't detect

\- etc..

It will be good and bad, but, more bad than good.

We could choose not to run .exe .bat and the rest

So far, webassbly doesn't look optional.

<comment><USER4> > \- unblockable advertising

Ad blockers primarily look at domains, so blocking will continue to be possible at the request level. They aren't interpreting or parsing JS to begin with.

> \- stronger DRM

If sites were going to ship Web Assembly-based DRM, they would already be shipping Web Assembly along with the Emterpreter. Remember that wasm has a polyfill already. I haven't seen that happening, so I see no reason to believe it'll happen in the future.

> \- Bitcoin mining that regular user can't detect

A regular user certainly would notice the 100% CPU consumption. And anyway, bitcoin mining in a WebGL shader would be more profitable than anything wasm- based.

Moreover, though, surreptitious bitcoin mining on consumer PCs would be ludicrously unprofitable no matter what. Here a Stack Overflow answer _from last year_ that calculates how much a site with 2M daily visitors would make _if they could all somehow run the fastest C implementation_ [1]. It was less than 50 cents a day back then, and in the meantime the hash rate has grown by nearly an order of magnitude [2]. Good luck.

[1]: [https://bitcoin.stackexchange.com/a/42413](https://bitcoin.stackexchange.com/a/42413)

[2]: [https://blockchain.info/charts/hash- rate?timespan=2years](https://blockchain.info/charts/hash- rate?timespan=2years)

<comment><USER5> I doubt a regular user would notice 100% CPU usage and even less certain that they would know what to do about it or what was causing it. Most OSes operate chrome just fine when another process is asking for 100% as well.

<comment><USER6> Their fans running at max (or a very warm device) would let them know. This has been the experience among the non/less-technical users in my company.

<comment><USER5> Right, they might notice it, but why would they care? They don't know that they should care, it is just a computer being a computer and it probably spins up the fans for other tasks too. They would be right to not care unless told otherwise, sys ops isn't their job.

I think it would be smart to educate people as part of a regular security briefing for non technical staff though. But if it's something that high of concern to your company maybe an automated CPU usage monitor could alert the team to anomalies.

<comment><USER7> They would care when their laptop shuts down. [1]

[1] I was running a test today when the program being tested ran into a very tight loop and the fan _really_ kicked in. I was curious if it would finish and let it run for several minutes until all went quiet and the screen went dark. It had shutdown to prevent heat damage.

<comment><USER8> That means the fans need to be cleaned of dust.

A laptop overheating from few minutes of 100% CPU is not normal.

<comment><USER9> Unless it is a really crappy laptop.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Looks like Mozilla won this fight. When Mozilla didn't accept PNaCl and Pepper API proposed by Google, Mozilla went down the ASM path which now led us to Web Assembly being the general way forward.

<comment><USER11> Yup, when you consider that WASM can be polyfilled with Asm.js it's pretty obvious where things were headed.

<comment><USER12> Except with all browser vendors being involved with WebAssembly, _efficient_ polyfill-ability hasn't been a goal for a while.

<comment><USER13> WASM has 64-bit ints, did asm.js support those? How can you polyfill that without a real slowdown.

<comment><USER14> A property with getter and setter backed by singleton typed array instance?

<comment><USER13> "without a real slowdown"

Any operation, like 64-bit adds/muls/divs/etc would have to call emulation functions. It'll be orders of magnitude slower.

</comment></comment></comment></comment></comment></comment><comment><USER15> At this point, I really loathe adopting any facet of web-browser technology: there are too many broken APIs in too many browsers to maintain on both sides of the system: the browser developers have an insane number of combinations of features that need to be useful, secured and made reliable and developers for browsers are always at some weird disadvantage where they can spend months or years maintaining an application for the browser to find it rots out from underneath them.

Should you even be slightly successful in the use of an API, you always have to worry about deprecation when someone is no longer interested in doing the maintenance any more.

I am sure there were more than a few game developers that are are livid today about this announcement.

These things will go in cycles and I expect there will be an native- application cycle coming soon from browser-api-fatigue.

<comment><USER16> Yeah, we were looking at browser stats for our website today and during the last 30 days 20% of our distinct users were using IE 6, 7, 8, 9, 10, or 11. Of course most were on IE 11, but when you still have a significant number of people still using ancient versions of IE, I despair at ever being able to use modern web technologies.

<comment><USER17> The only way to move forward is to ignore them. Put up a message that advises to install Chrome or Firefox and get rid of all the cruft that supports browsers older than 5 years. Most probably already have a modern browser installed but use IE out of habit. I see it at large corporations all the time. I even heard "I wish it would remind me to just use Chrome"

<comment><USER16> Unfortunately that isn't an option for us. We are mandated to support everyone. And those people on IE are retail sales associates using our site on hardware that simply cannot be upgraded. It must be replaced to get a newer browser. But the replacement cycle is measured in decades.

<comment><USER18> > And those people on IE are retail sales associates using our site on > hardware that simply cannot be upgraded.

I'm sooooo glad I'm not you. I've literally halted all personal projects using JS until they get modules implemented natively.

</comment></comment></comment></comment></comment><comment><USER19> Then perhaps Andreas Gal's "Chrome Won" assertion wasn't entirely accurate. After all WebAssembly is something that was derived from Mozilla's asm.js.

<comment><USER20> The assertion was about market share so the fact that Chrome might have adopted some mozilla-derived technology doesn't affect its accuracy.

<comment><USER21> Yep, consider x86_64. That's an AMD instruction set but it's very safe to say that Intel at the moment has won the desktop CPU market.

</comment></comment></comment><comment><USER22> The most material result of this is that Chromebooks won't have a working SSH client starting sometime next year, because WebAssembly can't do real sockets without an external proxy.

<comment><USER23> No, FTFA: "We will remove support for PNaCl in the first quarter of 2018 everywhere _except inside Chrome Apps and Extensions_."

Chrome Apps (and extensions) using PNaCl will continue to work.

<comment><USER24> Yes, because non-portable NaCl has higher usage inside Chrome Apps and Extensions, but I don't for a minute believe that Google is going to continue investing eng resources in maintaining (non-portable) NaCl now that pNaCl is dead, so I'd expect that to get deprecated sometime in 2019 or 2020.

Disclaimer: My opinion, not that of my employer.

<comment><USER23> > Yes, because non-portable NaCl has higher usage inside Chrome Apps and > Extensions, but I don't for a minute believe that Google is going to > continue investing eng resources in maintaining (non-portable) NaCl now that > pNaCl is dead, so I'd expect that to get deprecated sometime in 2019 or > 2020.

Sure, it is deprecated and will be deactivated eventually (but maybe not soon; consider WebSQL). Google's got every incentive to make sure that WebAssembly (plus the APIs exposed in ChromeOS) provides a complete replacement for PNaCl and apps have had time to transition before doing that.

<comment><USER25> WebSQL is so sad.

[https://stackoverflow.com/questions/42288596/websql-has- incr...](https://stackoverflow.com/questions/42288596/websql-has-increasing- browser-support-whats-its-future)

</comment></comment></comment></comment></comment><comment><USER26> It seems like the browser vendors are doing a good job coordinating to provide a robust ecosystem around Web Assembly. Clearly much healthier for the future of the web than fragmented browser-specific solutions.

</comment><comment><USER27> I'm so confused why Google deprecated Chrome Apps. You'd think they'd take advantage of the abundance of Electron apps by extending the capabilities of Chrome Apps to grow their Chrome ecosystem and attract new developers.

</comment><comment><USER28> As a web developer working primarily in JS, what should I be learning now to stay relevant/up-to-date once WebAssembly is more common? Are we going to see more web stuff built with c++, like the dsp example in this blog post?

<comment><USER29> WebAssembly is a medium for ASM.js apps, and ASM.js apps are mainly C and C++ . You have to learn C and C++ period.

<comment><USER30> Right now, that's probably the best way to go if you're keen to build non- trivial wasm stuff, but I don't think it's a foregone conclusion that it'll stay that way. There's a Rust implementation now, for instance. And some talk of better support for garbage collected languages.

</comment></comment></comment><comment><USER31> Am I in the minority that I think it is a positive development, when Google is discarding proprietary ideas in favour of open developments?

Not perfect but the direction looks good so far.

<comment><USER32> If you care about security, performance or having portable offline applications its a sad day. Google just pressed reset and erased your work.

The way Google has abrubtly sent PNaCL to the knackery, rather than a gradual transition is just ugly. By removing the PNaCL functionality completely from builds they have broken faith with the development community. They didn't even commit to allowing PNaCL to run in deprecated mode via a feature flag or something.

In hindsight, I can see that Google had shifted their effort away from PNaCL several years ago. But to kill it they way they have it just brutal.

I would agree that for general web development this seems a way out of the javascript purgatory. But there is a long way to go before it can match what PNaCL did. And I find it bizarre that they created a 32 bit implementation; I know they had _reasons_ but they seem shortsighted.

<comment><USER33> AFAIK the main missing feature in WebAssembly that PNaCl had is shared-memory multithreading and that is implemented and waiting on spec finalization to ship. What else is there?

<comment><USER32> Security (code signing, timing determinism, large API attack surface, complex javascript interpreter/jit), performance (obvious deficit between an IR bytecode and jit, static analysis vs runtime checks), concurrency (how many cores on your new 2017 box? By 2027?), features (the p/nacl api let you do more, like access devices for video/graphics/audio; instead it will be an implementation specific thing; networking - open sockets to unrelated hosts; same origin is a straight jacket), elegance (wasm/asm.js/js is just hack, hack, hack; thanks Mozilla), maturity (just bugs need time to be sorted).

<comment><USER33> I don't think PNaCl guarantees timing determinism.

Not sure what you mean by "code signing" in this context.

The API attack surface is a non-issue; it's already accessible by any page that serves a PNaCl object.

There's a small performance deficit but it's getting smaller. AOT compilation and caching of compilation results is possible; asm.js did it.

I already mentioned shared-memory parallelism (it's just about done); did you read what I wrote?

Standard cross-browser Web APIs give you access to those devices already.

Same-origin is a strait-jacket --- a necessary one. "Break the Web's security model" isn't a desirable feature.

"Elegance" is just a point of view. From another point of view, "duplicate everything in the Web platform" is not elegant.

As for maturity and bugs --- having multiple interoperating implementations and real specifications is a good way to drive competition on quality ... and to distinguish "this is a bug, fix it" from "hello de-facto standard!"

</comment></comment></comment></comment></comment><comment><USER34> It's sad. PNACL is more efficient. Go to lichess.org/analysis, make a few moves, turn on the engine analysis. With firefox and WASM, my machine compute 300 knode/s. With chrome and PNACL, my machine compute 2000 knode/s. That's a big step backward.

<comment><USER35> I see nothing inherently more efficient about PNaCl. Both it and WASM expose an architecture-agnostic 32-bit virtual instruction set, then rely on the user agent to apply good optimization. WASM's performance will improve.

Non-portable NaCl did have the advantage that it could specifically target and optimize for one CPU architecture, and it had the beginnings of 64-bit address space support. These were nice, but not widely used. And we both could conceivably make it into WASM in the future.

</comment></comment><comment><USER36> From the asm.js FAQ:

        Q. Why not NaCl or PNaCl instead? Are you just being
        stubborn about JavaScript?
        A. The principal benefit of asm.js over whole new
        technologies like NaCl and PNaCl is that it works today

asm.js however wasn't good enough to actually be useful, as evidenced by the lack of adoption and the move to wasm. So now we have wasm which is not backward compatible. We would be further along now if Mozilla/Eich would have gotten behind Google's more mature effort, this really was stubbornness IMO.

<comment><USER33> PNaCl had two big problems Google never attempted to solve: * No spec, just import some particular version of LLVM and it does what it does * Dependence on Pepper for its platform API --- just a big pile of Chromium code that does what it does _and_ duplicates all the standard Web APIs

<comment><USER36> I don't have any insider knowledge, but my sense is that Google never tried to solve these sorts of issues because Mozilla made it very clear that they wouldn't support it. Now they're backtracking and building a non-js asm system too. Do you think wasm apps will always use slow JavaScript ffi to call opengl say? We'll get a new pepper in like another decade.

<comment><USER33> I personally told Google people that the Pepper platform API situation was unacceptable to Mozilla years before PNaCl even appeared. That didn't stop them pushing ahead. So if your theory is correct then Mozilla opposition was not strong enough to stop PNaCl development, and not strong enough to stop them exposing it to the public Web, but strong enough to stop them trying to turn it into a proper Web standard.

Wasm is only superficially non-JS. AFAIK every browser vendor is implementing Wasm by reusing the optimizing compilers in their JS engines.

I think we might see some extensions to WebIDL and Web platform APIs to improve Wasm app performance. We're sort of already seeing that with [AllowShared]. But there's no need to develop entirely new platform APIs, because fundamentally there's no reason calls from Wasm through JS API glue to the browser should be slow; JS API glue can be inlined into the Wasm code, for example.

</comment></comment></comment></comment><comment><USER37> OK, so where do I get a mosh client programmed in WebAssembly? Without it, my chromebooks might as well be bricks.

<comment><USER23> By the time Google disables PNaCl on Chrome Apps, this kind of thing won't be an issue. There is a reason why the announced 2018 deactivation excluded Chrome Apps and Extensions.

<comment><USER38> I haven't seen any real activity from browser makers to add raw UDP APIs.

<comment><USER23> > I haven't seen any real activity from browser makers to add raw UDP APIs.

Well, for the Chrome Apps use case for Chrome OS, chrome.sockets.udp seems to be available, and wasm can call out to JS APIs. What other browser vendors do isn't really relevant for Chrome Apps.

</comment></comment></comment></comment><comment><USER39> This is a sad day. NaCL was excellent tech, and its a shame it didn't get incorporated into LLVM proper, and that it didn't take off. We should be using NaCL/pNaCL for all apps everywhere, and for components within apps... etc.

ZeroVM was a desktop/server sandboxing environment that just didn't get any attention and mindshare. Shame!

I want a ZeroVM-like system that makes all of the Debian user-space available on any other OS, each app in a little sandbox... It ought just be another compiler target and automated.

Oh to what could have been! :(

<comment><USER40> How is it better than WebAssembly?

<comment><USER41> It executes (sandboxed) native code directly, instead of requiring JIT compilation to native.

<comment><USER42> Have you seen the "the birth and death of javascript"? More interestingly it could vastly reduce the cost of interprocess communication to the point where the idea of a process starts to look a bit weird.

Want to query a database? Upload a function you wrote yourself for complicated queries like GIS, or let the SQL parser generate the raw wasm on your behalf.

Want to authenticate your users, but don't want to deal with all the different permiations on hardare tokens, ssh keys, etc? Just let them upload a wasm function.

<comment><USER39> _cough_ java was supposed to do all that, right?

<comment><USER42> It seems like a lot of people were simply unwilling to support java. Bundling the execution enviroment with such an un-fun language was probably a mistake. Not to mention the patents and oracle in general.

It was before my time, but I don't imagine the open source community was ever going to really embace it.

</comment></comment></comment></comment></comment></comment><comment><USER43> I'm not familiar with what goes in a browser, but for some reason, browsers seem to eat up a lot of resources.

While I am happy that it looks like this will (more or less) be standardized across browsers, I still hope for the day where running a more minimal browser (text, image, maybe videos) will become viable. Of course, I'm pessimistic on this, seeing as so many sites are probably not functional without javascript and other related technologies, but maybe some web developers care about choice. Who knows.

<comment><AUTHOR> Well, there's AMP. Most people on HN seem to really hate that solution though.

</comment></comment><comment><USER44> We used PNaCl to port some games to a Smart TV. It was a painful experience. Debugging chrome from a custom gdb, breaking changes from release to release, and some very subtle bugs in pepper API. But the final results were surprisingly not so awful.

</comment><comment><USER29> Why bother investing time and resources in Google techs when they keep on discontinuing them? they don't care about enterprise software, if they did, they wouldn't act like that. AMP? lol, think again before implementing this, it will not be worth the effort since Chrome will eventually drop that too.

A good reminder not to invest in any Google specific technology.

> We recognize that technology migrations can be challenging.

You recognize you wasted a lot of people's time.

<comment><USER45> > Why bother investing time and resources in Google techs when they keep on > discontinuing them?

I really think this is a good question, despite the form of your post (hence the downvotes).

To anyone who decided "lets use NaCl or PNaCl", I have a genuine question: Are you honestly surprised to see this tech too go obsoleted?

> We recognize that technology migrations can be challenging. ... You > recognize you wasted a lot of people's time.

They are taking this from Apple's book: Don't leave any compatible stuff behind. Leave the maintenance-cost to others.

</comment></comment><comment><USER46> Is WebAssembley going to turn into yet another web technology that can be used by websites in order to track us or to annoy us with advertising?

I'm asking because every time something new is introduced, it feels like it ends up being used to abuse users (Javascript, XSS, Cookies, HTML5 Video).

<comment><USER47> It doesn't do anything that Javascript didn't already do.

By the way, why do you think HTML5 is a problem?

<comment><USER48> The suggestion I got was that "HTML5 Video" was the subject. Which still doesn't make sense; the alternatives which it replaced (Flash, QuickTime, WMV, Java-based video players...) were all radically worse, and much more abuseable.

<comment><USER46> HTML5 Video is just an example of shitty browser behavior, as for some reason, every web browser maker seems to think that autoplay videos are great. They're not because sites are abusing it.

Worst, some sites these days will waiting until you've scrolled down a bit before they start playing a video, leaving the user to locate it and stop it.

As for Flash, it was indeed bad, but at least I had the option of not installing it.

<comment><USER48> > every web browser maker seems to think that autoplay videos are great

Huh? This has nothing to do with browsers; it's purely a site author decision. Autoplaying videos is a site author decision -- and one that they already frequently made before HTML5 video was widely available.

<comment><USER49> Not really. Browsers just need to default stop autoplaying videos out of the screen view. Or better yet what they did to popup blockers. Give one chance to behave well, if the site doesn't then it gets blocked and the user has a notification that autoplay was disabled.

<comment><USER33> Blocking scripted calls to "element.play()" really sucks for Web developers building games and other kinds of apps. Safari on iOS did this and it was horrible for developers.

Firefox and Chrome let you mute tabs. Firefox Nightly also blocks playback in any tab you haven't actually looked at yet. Other than that there's not much they can do.

</comment></comment></comment></comment></comment></comment></comment><comment><USER50> Can somebody ELI 5 what is the benefit of WebAssembly vs Asm.js?

<comment><USER51> It's a format designed to be a target for static languages that do manual memory management (like C/C++) instead of JavaScript that some engines know how to recognize and optimize. The binaries are smaller and _much_ faster to parse and the sandbox model results in much less overhead.

For a concrete example, at least two JavaScript engines (those of Chrome and Firefox) need to emit almost no range checks on regular memory accesses with WebAssembly on 64-bit computers. (For those interested in going past ELI5, they do this by allocating a large chunk of virtual address space, such that any out of range pointers will land somewhere in that space (WebAssembly currently only has 32-bit pointers). Some of the space is filled with memory, and the rest causes a controlled signal/exception so the engine can safely terminate the instance.)

<comment><USER50>
        target for static languages that do manual
        memory management

So I will have to do all the garbage collection myself? Isn't that a huge burdon on the programmer? And will this lead to lots of apps with memory leaks that needlessly eat up my resources?

<comment><USER52> That's already the case if you want to do high-performance stuff with C/C++. WebAssembly is primarily about getting that into the web.

</comment></comment></comment></comment><comment><USER53> >We will remove support for PNaCl in the first quarter of 2018

While the new Google Earth with PNaCl was just introduced, a large engineering cost for a semester-lived technology! Too bad

<comment><USER54> Plenty of people were left scratching their heads when the new Google Earth was introduced, precisely because it was clear that PNaCl's days were numbered.

I think the likely explanation is that Google is a large company with numerous departments and those departments don't always pull in the same direction. I imagine some people within Google weren't happy with the Google Earth announcement.

</comment></comment><comment><USER55> Can someone get opencv running on it?

<comment><USER56> Webasm doesn't currently have access to SIMD instructions or the gpu. So that kind of intensive matrix math stuff might not benefit too much from webasm.

</comment></comment><comment><USER57> Say hello to memory-unsafe languages and resulting vulnerabilities in web apps?

<comment><USER33> To some extent yes, but not nearly as bad. One feature Wasm has (shared with asm.js, but NOT PNaCl) is that the stack of return addresses lives outside addressable memory, and therefore can't be corrupted by an arbitrary-write primitive, so no ROP attacks. Likewise Wasm memory is entirely non-executable so you can't return or jump to exploit code. Function pointers are quite restricted; you can only make an indirect call to a function that's explicitly listed as indirectly-callable.

Wasm applications can have type confusion bugs, use-after-free bugs, and array overflow bugs, etc, but this is inevitable for any realistic C/C++ compilation target.</comment></comment>


GTD Tickler file – a proposal for text file format - <AUTHOR> https://medium.com/@criticalmind/gtd-todo-tickler-proposal-fe18ab324bca <comment><USER2> Taskwarrior is also built upon the todo.txt format. [1]

Taskw supports various task dates – { due: scheduled: wait: until: recur: } [2]

Taskw supports various named dates like soq/eocq, som/eom (start/end of [current] quarter, start/end of month), tomorrow, later [3]

Taskw recurring tasks (recur:) use the duration syntax: weekly/wk/w, monthly/mo, quarterly/qtr, yearly/yr, … [4]

Pandas has a "date offset" "frequency string" microsyntax that supports business days, quarters, and years; e.g. BQuarterEnd, BQuarterBegin [5]

IDK how usable by other tools these date string parsers are.

W/ just a text editor, having `todo.txt`, `daily.todo.txt`, and `weekly.todo.txt` (and `cleanhome.todo.txt` and `hygiene.todo.txt` with "## heading" tasks that get lost @where +sorting) works okay.

I have physical 43 folders, too: A 12 month and a 31 day expanding file. [6]

[1] [http://todotxt.org/](http://todotxt.org/)

[2] [https://taskwarrior.org/docs/using_dates.html](https://taskwarrior.org/docs/using_dates.html)

[3] [https://taskwarrior.org/docs/named_dates.html](https://taskwarrior.org/docs/named_dates.html)

[4] [https://taskwarrior.org/docs/durations.html](https://taskwarrior.org/docs/durations.html)

[5] [https://pandas.pydata.org/pandas- docs/stable/user_guide/time...](https://pandas.pydata.org/pandas- docs/stable/user_guide/timeseries.html#dateoffset-objects)

[6] [http://www.43folders.com/](http://www.43folders.com/)

<comment><AUTHOR> Thanks for a detailed reply. Taskwarrior looks interesting will explore more. From what I see it seems to be pushing the limit of todo.txt file format by having all the different types of date formats. Does that mean that typical clients such as simpletask (Android) won't work with these todo.txt files? I have made sure I never touch the todo.txt file so all existing tools work fine while I track everything in tickler.txt

<comment><USER2> IDK how well simpletask handles the date formats that TaskWarrior supports. I just found simpletask-taskwarrior [1] which appears to use nl.mpcjanssen.simpletask.sort.DateComparator [2] (which calls hirondelle.date4j.DateTime.compareTo [3] ) for the date fields of TaskWarrior tasks.

Obviously, neither ISO8601 sort nor ASCII sort can correctly sort "tomorrow" or "weekly" with "2101-10-31". TaskWarrior recurring tasks have a parent template that presumably zero todo.txt tools can at all handle. Not even Markor.

[1] [https://github.com/mpcjanssen/simpletask- taskwarrior/blob/ma...](https://github.com/mpcjanssen/simpletask- taskwarrior/blob/master/app/src/main/java/nl/mpcjanssen/simpletask/remote/TaskWarrior.kt)

[2] [https://github.com/mpcjanssen/simpletask- taskwarrior/blob/ma...](https://github.com/mpcjanssen/simpletask- taskwarrior/blob/master/app/src/main/java/nl/mpcjanssen/simpletask/sort/DateComparator.kt)

[3] [https://github.com/IanDarwin/date4j/blob/master/src/main/jav...](https://github.com/IanDarwin/date4j/blob/master/src/main/java/hirondelle/date4j/DateTime.java#L1241)

Ctrl-F only finds one mention of "todo.txt" in [https://taskwarrior.org/tools/](https://taskwarrior.org/tools/)

</comment></comment></comment><comment><AUTHOR> Been a long term practitioner of GTD, I adopted todo.txt about 7-8 years ago and never looked for tools after that! I created something similar for the tickler file as well. Would love to get some feedback.</comment>


Google, Facebook, Neuralink Sued for Weaponized AI Tech Transfer - <AUTHOR> https://theaiorganization.com/google-facebook-neuralink-sued-for-weaponized-ai-tech-transfer-complicity-to-genocide-in-china-and-endangering-humanity-with-misuse-of-ai/ <comment><AUTHOR> This is fake right?</comment>


Number of Characters per HN Line - <AUTHOR> On one page at HN today, I saw a line with 161 characters.  Traditionally in formatted text, 161 is way more than usual.  In Firefox on my screen, by the time I get the magnification small enough to show the whole line, the characters are way too small to read.  Really, for the whole tread, I can't read it.<p>Please limit the number of characters per line to something easy to read, say, 60.  Thanks. <comment><USER2> graycat, could you dig through your browser history and email me the given link (email in profile)? I know you were being kind and intentionally avoiding revealing the specific post.

In most cases, lines that are so long that they make a mess of the usual HN display are handled to prevent making browsers need to do side scrolling. I have a hunch that I know what happened but I'd like to look at the example.

[http://paulgraham.com/gfaq.html](http://paulgraham.com/gfaq.html) > _" Why is the text on your site so narrow? It wastes screen space."_

> _" The aim of web design is not to use all available screen space. It is > legibility. Text is most legible with no more than 70 characters per line."_

<comment><AUTHOR> The thread was

[http://www.polygon.com/2014/7/15/5897811/ninja-pizza-girl- te...](http://www.polygon.com/2014/7/15/5897811/ninja-pizza-girl-teenage- girls-family-dev)

My post was

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

That post and that thread have a lot of lines with 161 or so characters.

<comment><USER2> As promised, I looked into it and did some testing. There's an old trolling tactic of posting something excessively long (wide, actually) so the browser expands the width of page beyond the width of the screen. The result is a side-scrolling page that is difficult to read. The code behind HN and most forum software have detection and mitigation for these types of side-scrolling attacks. If you had found something that was successfully blowing out the width of the page into a side-scroller then that would be a HN bug worth reporting.

The screenshot below is with a slightly older Firefox version 18.0.2 using a newly created user profile, without any plug-ins or add-ons, so everything is at default settings. The menu colors and green-on-black text colors are due to how the underlying graphics toolkit (gtk) used by firefox is configured on the system.

As you can tell from the image size, the display is running at 1920x1080 resolution, and although it doesn't matter, the screen is 18.5 inch diagonal (408mm x 230mm).

[http://www.designtools.org/pix/graycat01.png](http://www.designtools.org/pix/graycat01.png)

The longest line displayed in the image is 250 characters when using default browser settings and font (typeface) sizes. If you increase the font size, you decrease the number of characters per line. For example this image has 137 characters per line.

[http://www.designtools.org/pix/graycat01a.png](http://www.designtools.org/pix/graycat01a.png)

Setting "Preferences -> Content -> Fonts & Colors -> Advanced Button -> Minimum Font Size" can save your eyesight at the cost of making some badly written websites look worse than usual.

If the default display is still too wide for your tastes when using a larger font size, you have two options; (1) reduce the width of your browser window, or (2) write a browser plugin or addon to reformat everything to the way you want it.

HN allows for posting pre-formatted text in comments for when someone wants to post source code. The reason is the typical re-wrapping of text in a browser would make a real mess of source code formatting. To post pre-formatted text (code) to HN, just insert two leading spaces at the start of the pre-formatted lines. Unfortunately, this feature often gets accidentally misused for things like quotes. An example of misuse is in your own post:

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

You indented the URL to businessinsider.com with spaces, so it was turned into pre-formatted text and was not rendered as a clickable URL.

If you're curious about formatting options on HN, they're listed here:

[http://news.ycombinator.com/formatdoc](http://news.ycombinator.com/formatdoc)

Since HN does not re-wrap the pre-formatted text, it can be wider than the page, and would normally make a side-scrolling display, but by using CSS, only the pre-formatted portion has a horizontal scroll bar. In the image below, you can see how these "too-wide" lines are in their own little scrollable boxes.

[http://www.designtools.org/pix/graycat02.png](http://www.designtools.org/pix/graycat02.png)

Side-scrolling little boxes of text might be annoying, but it's better than making a mess of pre-formatted source code, so it's supposed to work this way.

If for some reason you're not getting the little scrollable boxes for the excessively long pre-formatted lines, then either your browser is much older than mine (unlikely) or some configuration, plugin, or addon you're using is making a mess of things. You can test this by creating a new user profile in firefox.

You mentioned ms-office, so it seems you're still running ms-windows. I think firefox on ms-windows creates a startup link to its profile manager on installation, but if I'm wrong, just use the command line:

      C:/> firefox -ProfileManager

If you're still seeing excessively long pre-formatted lines without being in little scrollable boxes, then you'll need to update your web browser.

If you're having trouble with something else (and I've totally misunderstood you), then please post link to a screen capture image of what you're seeing, or you could email it to me if you prefer.

<comment><AUTHOR> Thanks for the detailed response.

I didn't really think that the lines with 161 characters were pre-formatted.

Most of the pages at HN look fine on my version of Firefox -- 27.0.1.

I have understood and used the HN feature for pre-formatted simple text, say, programming language source code, and I'm sorry about indenting the URL. I'll try not to do that in the future.

I would have expected that if a formatted page is too wide for the Firefox screen window, then there would be horizontal scroll bars at the bottom of the HN window in Firefox. Looking at some CSS documentation, apparently there is a CSS keyword overflow-x which controls, at least for a DIV, if there are horizontal scroll bars.

In the HTML/CSS of the Web pages I've written, I said nothing about overflow-x and get scroll bars when the data to be displayed is larger than the associated Firefox window. I don't know why that isn't standard on Web pages.

Thanks for your help.

</comment></comment></comment></comment><comment><USER3> No disrespect, but surely that's your problem? Having a widescreen monitor, I appreciate that HN (mostly) takes advantage of it, instead of having most of the screen sitting empty while a relatively narrow colums of text occupies the middle. I find this easy to read and having long lines reduces the need to scroll as much.

If it's not working for you, perhaps a restyling plugin like Stylebot for Chrome or something similar would allow you to adjust the format to your taste.

<comment><AUTHOR> > No disrespect, but surely that's your problem?

Not really: I have what is called a 17" screen. Such a screen size may still be common on desktop computers and has to be common on laptop computers. For tablets and smart phones, the screen widths are much narrower.

My solution is to copy the text to the clipboard, copy it into my favorite editor, and use a macro I wrote that reflows lines but honors the existing left margins.

The screen I have was a relatively large screen when I bought it. But, sure, the next time I buy a computer, and, thus, put up with all the struggle of getting all my software running and configured again, e.g., get the 2003 version of Microsoft Office running with all its many updates, no doubt I will get a wide screen.

Still, there is an issue: Readability. E.g., long newspapers used pages, like screens, so wide that they could easily have had 161 characters per line but, still, stayed with narrow columns, supposedly for 'readability'. There are suggestions that a narrow column permits less left to right eye movement.

On readability, in

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

below in this thread is

> "The aim of web design is not to use all available screen space. It is > legibility. Text is most legible with no more than 70 characters per line."

<comment><USER3> I had a 17" screen until last year. I can't say I recall this being a problem, but then I consider layout of plain text something that should ultimately be managed at client side.</comment></comment></comment>