Fossil SCM - <AUTHOR> https://www.fossil-scm.org/index.html/doc/trunk/www/index.wiki <comment><USER3> Here's my story. I wanted to use version control on my research projects, but asking my collaborators to use Git was too much. They were supposed to figure out a staging area and pushing and pulling and then they'd get a bizarre error about a merge conflict. They'd do a search and Stack Overflow told them to type in an incantation. The repo is messed up, the collaborator goes back to email, and I'm left sorting through the rubble formerly known as a repo.

I switched to Fossil a few months ago. Nice website that holds all the information. fossil commit -m "Message" is all they need to know. If they forgot to pull, it stops and tells them to do so. They type fossil update and go on with their lives. Zero problems so far and a more productive workflow overall.

<comment><USER4> This is a good point. I think once developers learn Git (or as much as they need to use), then they forget how esoteric the the cli tool is.

I think a lot of devs have the attitude that a tool being more difficult to use makes it a powerful one (cf. Vim/Emacs), whereas most people are happy when tool does the three things they need to get from a=>b, b=>c, a=>c.

Maybe this is to do with our desire for everything to be as flexible as the programming languages we write in. Most people don't view computers as blank slates ready to do their bidding, but as systems where the behaviour of a few facets is to be memorised without concerns for their mechanics or abstractions. This is probably one of the reasons that mobile software is seen as so easy to use, since it obscures/abstracts elements like the filesystem from the user.

Glad to hear Fossil is friendlier.

EDIT: I should say that I am a heavy user of Vim, Emacs, Git and Arch Linux, I am just saying that these tools often require a large up front investment, and this can be detrimental as well as sensible.

<comment><USER5> > I think a lot of devs have the attitude that a tool being more difficult to > use makes it a powerful one (cf. Vim/Emacs), whereas most people are happy > when tool does the three things they need to get from a=>b, b=>c, a=>c.

While I agree that there are those who take pride in how spartan tools they use, it's not correct to make blanket judgements about the whole suite of _hackerware_. Emacs, for instance, is not difficult to use, it is a different computing environment, which, when you get hold of it, can boost your productivity. I've written many little programs in it that I use every day which I'd never be able to write in other languages because a) I need to know at least one GUI framework and many other libraries, b) no other environment has the same use-hack-eval-use development experience, and c) the way you create GUIs in Emacs is so effective (mixture of special-mode, plain text and text with properties attached; all buffer-manipulation commands come in to your _app_ out of nowhere, gratis) that one can set sth. working in their first hacking session, and then on improve their tools while using it, all interactive, whereas in all other GUI frameworks you're left alone with widgets and a dev cycle that's nearly always approximately write-compile- debug-compile.

Git, instead, is a plain tool for one purpose with an arcane user interface. I believe the patch theory school of VCS tools (e.g. darcs) will overtake in future when they'll smooth out their rough edges as they provide a very intuitive way to work with code as a series of related changes.

<comment><USER6> Emacs is not difficult to use?

In order to get it to do half of what Notepad++ or Sublime or Kate do, you have to spend hours and hours to learn it and configure it in the hope that the investment will pay off and that the productivity gain will make up for it. And despite what you might say there's no data you can point me to that actually proves those increased productivity claims.

<comment><USER7> You are comparing Emacs with Notepad++. You are then not using Emacs as it's supposed to be.

The actual power of Emacs is realized once you learn elisp. Coding, documenting, commiting, blogging, browsing, file/dir manipulation, etc. all can be done efficiently using the same familiar buffer editing philosophy within Emacs.

</comment></comment></comment></comment></comment><comment><USER8> Fossil is the SCM I always wish I were using, but for the benefit of external collaborators, I stick with Git and GitLab (previously, GitHub). Fossil is a lovely, small piece of software that does exactly what I want in a nice and simple way. It's fast and uses SQLite for everything, making it easy to programmatically extend it and munge its internal data.

<comment><USER9> SQLite usage makes me wonder how will it behave over time with millions of commits. Also makes me wonder how will it handle distribution.

<comment><USER10> To be honest, I'm very wary of using SQLite for storage for anything long term. Over the years I've had a few SQLite databases become corrupt in various software I use. Always a headache.

<comment><USER11> SQLite has had corruption bugs but they have been exceeding rare. Far more often it has been other factors that caused SQLite to become corrupt (ie it is a victim not the cause).

[https://www.sqlite.org/howtocorrupt.html](https://www.sqlite.org/howtocorrupt.html)

[https://www.sqlite.org/testing.html](https://www.sqlite.org/testing.html)

</comment></comment></comment></comment><comment><USER12> I switched from Mercurial to Fossil for my personal projects about two years ago and have been very happy with it so far. (Not that I think Mercurial is bad, not at all).

The builtin Wiki was what really sold me on it, because it makes a great place to gather notes and such.

This is one nice piece of software, at least for my needs.

</comment><comment><USER13> I would also like to mention ChiselApp ( [http://ChiselApp.com/](http://ChiselApp.com/) ) offers free Fossil hosting. I run this service, originally run and created by James Turner.

<comment><USER14> Thank you super much!

</comment></comment><comment><USER15> For me, the ease of self-hosting my own source-code hub tipped the balance in favor of Fossil SCM, after I abandoned Subversion. Ironically, the difficulty of self-hosting Git was the raison d'être for why inherently centralized services such as Github/Gitlab/etc were created in the first place, despite all the nice talk about distributed systems. There is no a priori reason why hosting a source code repo should be any different from hosting any random blog page. And Fossil is the proof that it can work.

</comment><comment><USER16> I tried using Fossil as a DVCS/Project management tool for a class I'm currently teaching - but in the end I couldn't quite figure out self- registration combined with allowing authenticated push in a way that worked for ~25 students without needing much instruction/hand-holding.

If I'd had some form of user-database already, I could probably have gotten it to work with a proxy in front - but for now I've ended up using gogs: [https://gogs.io/](https://gogs.io/)

I'm not certain I actually prefer gogs to fossil, but apart for working as I wanted/needed without much setup it had the dubious benefit of forcing me to teach my students to use git, along with a rather cumbersome pull-request system (gogs tend to hickup on commits that probably should've been possible to fast-forward, possibly due to not forcing git to ignore white-space).

Dubious because as a bit of a mercurial fanboy, I think git has a frustrating and opaque command line interface, not helped by the fact that a standard workflow uses various "non standard" (as in: the most obvious) commands. Benefit because learning git is unquestionably a valuable skill, due to the popularity git enjoys, in no small part due to github's success.

I'd like to go back and revisit Fossil at a later time, but right now I'll probably spend any time I can find on (investigating) migrating from gogs to gitlab -- as it's turned out that the limits on pull-requests in gogs make it complicated to use with large groups of people new to version control.

That said, I'm a strong believer in combining wiki, version control and issues in a single repository supporting various DVCS workflows.

<comment><USER17> Glad to hear you're considering using GitLab. We have an importer for Gitea but not for Gogs [https://docs.gitlab.com/ee/workflow/importing/README.html](https://docs.gitlab.com/ee/workflow/importing/README.html) so I think you might consider a batch import [https://docs.gitlab.com/ce/raketasks/import.html](https://docs.gitlab.com/ce/raketasks/import.html)

<comment><USER18> I just started using this yesterday!

I setup a personal Gitea instance on Linode, but wanted to make sure I could easily back up my repos in case I ever lose access or stop maintaining my personal Linode server.

Gitlab made it easy to setup all of my repos to mirror and automatically update from my Gitea daily.

(One slight bug, Gitlab does seem to always say the repos failed to import, even when they're successful)

Thanks for the helpful feature!

<comment><USER17> Great to hear you're using GitLab already. Please consider creating an issue for the 'repos failed to import, even when they're successful' that allows us to reproduce it.

</comment></comment></comment></comment><comment><USER19> If anyone is interested in some of the deeper rationale behind SQLite and such, the FLOSS Weekly episode on this was pretty good.

[https://twit.tv/shows/floss-weekly/episodes/320](https://twit.tv/shows/floss- weekly/episodes/320)

</comment><comment><USER20> The previous submission of the link to fossil-scm.org ( [https://news.ycombinator.com/item?id=12673229](https://news.ycombinator.com/item?id=12673229)) has some interesting comments from the creator.

</comment><comment><USER6> My god, they've updated the CSS. It used to be quite a bit uglier. Now it's not GitHub, but it's definitely lighter on the eyes.

Nice to see - I think that good tools should have UIs that at least come close to the quality of their engineering.

<comment><USER3> While it's good to have a pleasant default, it's very easy to modify everything about the website, including the CSS, the menu, the homepage...

But to me, the most beautiful UI is one that offers the functionality I need while remaining lightweight.

</comment></comment><comment><USER21> Podcast with the creator of SQLite who also created Fossil, they also talk about the latter. Definitely recommended.

[https://changelog.com/podcast/201](https://changelog.com/podcast/201)

</comment><comment><USER22> GitLab contributors, please take note.

Fossil's UI is very fast and the navigation is intuitive and discoverable.

I know it's on the roadmap, but it is so often an afterthought.

<comment><USER17> Thanks, we're indeed working on making the UI faster in [https://about.gitlab.com/2017/02/06/vue-big- plan/](https://about.gitlab.com/2017/02/06/vue-big-plan/)

I've clicked around in the UI of Fossil. It indeed is very fast. About the navigation:

1\. Fossil has home, GitLab has a hamburger menu with different top level view, Fossil doesn't seem to account for multiple project but I'm probably overlooking something.

2\. Fossil timeline seems similar to GitLab Activity [https://gitlab.com/gitlab-org/gitaly/activity](https://gitlab.com/gitlab- org/gitaly/activity)

3\. Fossil code seems similar to GitLab Repository [https://gitlab.com/gitlab- org/gitaly/tree/master](https://gitlab.com/gitlab-org/gitaly/tree/master)

4\. Fossil docs seems similar to GitLab help [https://gitlab.com/help](https://gitlab.com/help) (in this case, for other projects I think it has the documentation of the project, not sure what standard they use)

5\. Fossil branches are in the GitLab repo view

6\. Fossil tickets are similar to the GitLab issues view

7\. Fossil wiki is similar to GitLab wiki

8\. Fossil includes a download tab, in GitLab that would be the tags view [https://gitlab.com/gitlab-org/gitaly/tags](https://gitlab.com/gitlab- org/gitaly/tags) to download the repo (not sure if this is always to download Fossil or the specific project)

9\. The Fossil "More..." link looks like a sitemap.

What would you change in GitLab to make it more discoverable?

<comment><USER23> The issue is not that Gitlab is missing any of the pieces. The issue, I believe, is the organization of such pieces so that you can find them intuitively.

This is admittedly a lot better in Gitlab today that it used to be. When I started, I literally could not figure out basic things like how to get to a specific repository inside of an organization. It also doesn't help that Gitlab has chosen to use its own jargon for each of the basic concepts. A "project" is a "repository" and a "group" is an "organization", etc. I can kind of grok it, but I sometimes do a double take when something isn't where I expect.

For example: In my mental model, "project" == "repository". But when I go to a project home page like say [1], I don't see a code browser or commit list, or options that obviously take me to either of those. Instead, I have to click the "Repository" tab first. (It turns out that tabs can have second-level tabs, which means those options are hidden initially and thus not discoverable.) But I thought a "project" was a "repository"?

I fully realize the Gitlab notion of "project" may be more general than just a "repository", but this is an example of the sort of cognitive dissonance that I get navigating around the site.

At this point I've mostly made peace with the Gitlab interface, so it's a bit hard for me to pull up examples like this now. And as I said above, the interface has improved. But when I first started using Gitlab, there were a _lot_ of things like this (little points of cognitive dissonance) which made it seriously an uphill battle to even use the product.

[1]: [https://gitlab.com/StanfordLegion/legion](https://gitlab.com/StanfordLegion/legion)

<comment><USER17> Thanks for the response, and I'm glad that it is better than it used to be.

In GitLab people can have a project without a repository, for example with just a wiki or an issue tracker. For that reason we use different words for it.

Single people also use GitLab as a single tenant we prefer to use the word group over organization. That will also fit better when we introduce nested groups in GitLab 9.0 [https://gitlab.com/gitlab-org/gitlab- ce/issues/2772](https://gitlab.com/gitlab-org/gitlab-ce/issues/2772)

Good point about showing files by default, we're discussing that in [https://gitlab.com/gitlab-org/gitlab- ce/issues/26834](https://gitlab.com/gitlab-org/gitlab-ce/issues/26834)

Thanks for using GitLab!

<comment><USER22> Thanks for the open discussion!

As eslaught pointed out, it's not about the obvious mistakes.

Unfortunately, the navigation is very fragmented. There's a left menu, which should be the primary one, but it changes all the time depending on the context.

The top menu is very inconsistent, presented in multiple layers, with different styles for each level, using very low contrast text with no other visual aid. There are no dropdowns or other ways to get to frequented pages faster. Being aligned to center also prevents me from memorizing the UI spatially (YMMV).

And there's also the issue with minimalistic buttons acting like links.

It is my humble opinion that rewriting the frontend in Vue will not, by itself, alleviate the matter; however, fixing this part of the UX will make GitHub and Atlassian _really_ run for their money.

<comment><USER24> Thanks for your feedback! This will an is becoming more and more a focus for us!

To join the discussion see: [https://gitlab.com/gitlab-org/gitlab- ce/issues/26348#note_23...](https://gitlab.com/gitlab-org/gitlab- ce/issues/26348#note_23730202) or [https://gitlab.com/gitlab-org/gitlab- ce/issues/18844#note_23...](https://gitlab.com/gitlab-org/gitlab- ce/issues/18844#note_23731395)

</comment></comment></comment></comment></comment></comment><comment><USER25> Surprised to see no LDAP support.

[http://www.fossil- scm.org/index.html/tktview?name=ec667f74f8](http://www.fossil- scm.org/index.html/tktview?name=ec667f74f8)

<comment><USER26> From what I can tell from the issue, they're suggesting the load balancer or server you put in front of Fossil to do the authentication (which can hit LDAP/AD).

Sure you can't do fine grained control or permissions, but for small shops/groups it seems like a good starting point.

<comment><USER27> You can sort-of hack it together offline, in that LDAP can be the source of identity (via REMOTE_USER + frontend, as you mention), and that Fossil has a reasonably fine-grained permissions model that you can (offline) sync from LDAP.

</comment></comment></comment><comment><USER28> I am huge fan of fossil and using it for my side projects , I also wrote a blog about it [https://fulstacker.wordpress.com/2016/04/11/all-you-need- to-...](https://fulstacker.wordpress.com/2016/04/11/all-you-need-to-know- about-fossil-scm/) . I am working on a React.JS Angular implementation of Fossil which is still in its primitive stage. I plan to open source it some day !

</comment><comment><USER29> I use Fossil whenever I can. Unfortunately, this means I have only ever used it for projects where I'm the only contributor.

</comment><comment><USER9> It's good to see so many SCM systems showing up. But it makes me wonder how many of them can actually work on GBs of codebase with over 1000 of programmers checking in on daily basis. I my experience most of SCMs are fine for small to medium projects, but they go down with crawling speeds and sometimes even not working at all when it goes large scale.

<comment><USER30> Hmm, really?

It's hard to measure objectively... but my perception was always that there was an explosion of SCMs around the early-mid 2000s, after everybody got sick of CVS, but eventually Git won out and a lot of the alternatives / diversity in the space went away.

Within short succession, there was Subversion, Arch, Darcs, Quilt, Bazaar, Mercurial. On the commercial side, perforce had a certain amount of traction, and the Linux kernel was using BitKeeper... which no doubt encouraged a lot of the innovation in the open-source space.

Then, once Git was developed, got huge exposure and traction through the Kernel, and GitHub came onto the scene, it quickly became dominant - <USER2> the alternatives, and despite the goofy interface.

<comment><USER5> I firmly believe that GitHub has at least 40% role in git's success. Another 40% is Linus, and the remaining 20% is git's technical merits.

<comment><USER30> Sounds about right to me... but it's hard to decouple things so neatly. It wouldn't really be _possible_ to create an SVNHub that worked as well as github.

<comment><USER31> Before everyone got onto GitHub, there was SourceForge and GoogleCode. Both worked well for a lot of people for quite some while. Also, if you really want to, you can use the SVN interface of GitHub and never go through git. You could, in its time, also use Google code with git repositories but without the pileup if nice little things that make GitHub more than just a git hosting service

</comment></comment></comment></comment></comment><comment><USER32> Veracity is the only other SCM I know of that takes the distribute everything approach of Fossil. Are there any others?

<comment><USER33> haven't seen [veracity]([http://veracity-scm.com/](http://veracity-scm.com/)) mentioned in a while! I always thought the idea of using JS as the built in scripting/templating language was ahead of its time.

<comment><USER13> Fossil has TH1 -- pretty much a stripped down Tcl, but can also (optionally) call out to full Tcl.

</comment></comment></comment><comment><USER34> I use Fossil for all my personal projects, and I use its wiki, technotes, and tickets for almost all of my knowledge and task management. It has become the centerpiece of my workflow. Where else have I seen as great a combination of reliability, simplicity, and flexibility? Oh yeah, SQLite. Thanks drh.

</comment><comment><USER35> No/manual rebase sounds awful

<comment><USER10> Genuinely curious: Why do you need rebasing?

I'm mostly a mercurial person, where doing a rebase is highly discouraged and nontrivial. After all these years on mercurial, I've never found a need to do it. Why is it so popular amongst git users?

<comment> iso-8859-1 If you like a readable commit history, rebase is useful to reorder and squash unnecessary commits. Some repositories, like Rails have a lot of merge commits. Why should I have to read through them? Also, all kinds of failed tests may have been developed in a feature-branch during month-long development.

Interactive rebasing lets you avoid that mess, I don't think it is that complicated. Mercurial uses the same underlying data structures, so I don't understand how rebasing can be more complicated on Mercurial than Git.

<comment><USER10> So let's say I branched off of master 3 months ago, and slowly developed the feature. Now if I rebase, will the commit history show all my local commits at the time they occurred (i.e. spread across 3 months)? Or will it show up as a single commit at the end?

As for "reading through them", I usually use a GUI that shows the commit history, and it will show all the commits in a branch in, well, a branch. I can easily ignore them.

<comment><USER36> Git actually maintains the following:

Author and AuthorDate: These will not change during a rebase. Unless maybe you do an interactive rebase and edit the commit... I'm not 100% sure how those interact.

Commit and CommitDate: These will change during a rebase, as a rebase is recreating the commit and that will be done with the current user and date.

</comment></comment></comment></comment></comment><comment><USER37> It would be great to add Fossil, as another backend to RhodeCode VCSServer that now supports git, Mercurial and SVN.

It's also written in python so it should be not so hard.

</comment><comment><USER38> Anyone using it for development? What is your experience?

<comment><USER39> I'm using it for a number of personal projects and a couple of projects with a small number of collaborators.

Advantages: The entire repository is a single file (SQLite database), which makes some things easy (backup, putting it on a USB drive, mailing it to another person) and has support for tickets and a wiki built-in. It is simple, but feature-complete for the use cases it is intended for.

Disadvantages: The command line interface is lacking in some regards (which can be fixed through addon tools, but isn't for everybody). In particular, there's a huge feature gap between `fossil ui` and `fossil timeline` for viewing history. Like Git (and unlike Mercurial and Bzr), you're forced to deal with commit hashes rather than numerical version numbers (which can be an annoyance when using annotate/blame, for example). Third-party contribution via `fossil bundle` is too limited IMO; you really want all contributors to have direct access to the repository to be productive.

<comment><USER31> Numerical version numbers in Mercurial are a good thing until they start to differ in different repository copies, after which you have to educate everyone to refer to versions by their hash instead of the numeric version

<comment><USER39> 1\. You can use the Bzr approach instead, which has universally valid revision numbers.

2\. Even local revision numbering has useful applications, such as annotate/blame, where numbers (unlike hashes) follow a chronological ordering. It is still better than not having them at all.

</comment></comment></comment></comment><comment><USER40> I wish it supported AJAX and the client UI was decoupled from the repository.

<comment><USER27> I'm not sure I understand what you mean with "client UI being decoupled from the repository". Wouldn't everything you do in an SCM necessarily be coupled to a repository?

<comment> david-given If you have multiple repositories, you have to set up the UI and ticketing setup in each one individually. (Although you can share a login database.)

I don't know if it's been fixed by now, but back when I was using Fossil regularly there were long-standing bugs where pushing the UI and ticket configuration from one repo to another didn't work properly, so synchronising look and feel across multiple repositories was hard.

</comment></comment></comment><comment><USER41> Too slow, tried to convert linux git repo to fossil but failed.

</comment><comment><USER42> I absolutely love Fossil. And the author is a great guy! It never gets the press or usage it deserves. Glad to see this come up on HN!

<comment><USER43> It came up on HN not long ago: [https://news.ycombinator.com/item?id=12673229](https://news.ycombinator.com/item?id=12673229). Normally we'd bury this one as a duplicate, but the community is clearly interested in this.

</comment></comment><comment><USER44> Fossil is running on [https://www.sqlite.org/docsrc/artifact/c3a749450a2f0d73](https://www.sqlite.org/docsrc/artifact/c3a749450a2f0d73) .. another lovely piece of software .. like it

</comment><comment><USER45> I dont see the point of Fossil, I looked into it. The commands arent that much easier to understand. If I'm using an SCM anyway and I still need to use a cmd line and I still need to memorize commands then I might just as well use git. And Git has Guis now.

<comment><USER30> Without having looked into the details... I do rather like the idea of an SCM with a built-in ticketing / documentation (wiki / markdown rendering system).

These are both things that every project ends up needing, but end up with some different solution, which then ends up with a loose, brittle, custom integration with the SCM - using your ticket name for branches, but the having to look up the details on a website - checkin hooks, these kinds of hacks.

It's not too difficult to imagine some simple, robust setup where the ticket state is and documentation (markdown) is store in the SCM, and you can view it either using the command-line, or fire up a local webserver embedded in the scm tool.

<comment><USER46> On the other hand, it does not make much sense for ticketing and documentation to be distributed. They inherently must be centralized for a project.

<comment><USER30> I disagree completely - I think these things have the same properties as source code.

Everybody thought SCM had to be centralized too, until it turned out that it didn't. I can see the same benefits of making local changes to tickets and documentation, then sharing those changes later when they're in a good state.

<comment><USER47> You might like [https://github.com/brandonson/evict](https://github.com/brandonson/evict). I used to use `ditz` but it was abandoned years ago and was tied to Ruby 1.8 in a bad way. I've been meaning to switch to evict but haven't ever been able to get it to compile :-).

<comment><USER27> IIRC, ditz and evict and b-e and ticgit and... all don't solve a problem for public projects which fossil does: random people on the Internet need to be able to submit bug reports.</comment></comment></comment></comment></comment></comment>


Kubernetes best practices: upgrading your clusters with zero downtime - <AUTHOR> https://cloudplatform.googleblog.com/2018/06/Kubernetes-best-practices-upgrading-your-clusters-with-zero-downtime.html <comment><USER3> Unfortunately, this is NOT really about Kubernetes - this is about GKE and GKE specifically. Nothing in this article except for the very general idea ("setup HA for masters then upgrade one master at a time") is useful for non-Google installations.

<comment><USER4> As someone who recently upgrade a GKE cluster with two mouse clicks, this whole post gave me a laugh. Basically an ad veiled as a blog post

<comment><USER5> It is an ad

"In this episode of Kubernetes Best Practices, let's take a look at how Google Kubernetes Engine can make upgrading your Kubernetes cluster painless."

This is the chief complaint I have about the Kubernetes community - <USER2> are vying to lock up the operational complexity in their commercial solution then leave no breadcrumbs to self-implementation.

Notice that nothing in that post can be used outside of Google except for higher level order of operations.

<comment><USER6> As a comment somewhere a week back said: Kubernetes seems like a platform designed for consultants.

</comment></comment></comment></comment><comment><USER7> Blog post author here. This is the only post in the series that is GKE specific, really strange it's the only one that ended up on Hacker News. I actually thought it would be the least popular.

You can see the other six episodes here: [https://www.youtube.com/playlist?list=PLIivdWyY5sqL3xfXz5xJv...](https://www.youtube.com/playlist?list=PLIivdWyY5sqL3xfXz5xJvwzFW_tlQB_GB)

<comment><USER8> It's a good series. Too bad people didn't take a look at the others before dragging it down.

</comment></comment><comment><USER9> This is just a GKE advert

</comment><comment><USER10> [https://blog.manifold.co/migrating-to-kubernetes-with- zero-d...](https://blog.manifold.co/migrating-to-kubernetes-with-zero- downtime-the-why-and-how-d64ba9a92619) << a less GKE specific article

</comment><comment><USER11> Does this mean federation is solid enough to call GA / Production ready ?

<comment><USER12> No, federation is still dead in the water.

</comment></comment><comment><USER13> its all about GKE , running multi-region masters for HA!</comment>


More Things I Wish I'd Known About Bash - <AUTHOR> https://zwischenzugs.com/ten-more-things-i-wish-id-known-about-bash/ <comment><USER2> This is a somewhat dangerous pattern for picking temporary files (from #8):

        $ NEWFILE=/tmp/newfile_${RANDOM}
        $ touch $NEWFILE

The problem is that any user on the box can create files under /tmp. An attacker can set up a bunch of symlinks like /tmp/newfile_1, ..., /tmp/newfile_99999 pointing to a file owned by your user. When your script then writes into this temporary file, you'll write through the symlink and clobber one of your own files. Especially dangerous if root :)

This has been a historic source of software vulnerabilities (often with the PID used instead as the guessable component instead of random, though). One recommended alternative is to use the `mktemp` command instead.

<comment><USER3> Nitpick: $RANDOM gives you an integer between 0 and 32767 (inclusive).

</comment></comment><comment><USER4> Portuguese speakers have counted for a long time with this gem, simply the best Bash doc/cheat sheet I've ever seen on the web. This is probably my oldest bookmark still relevant after 15 years.

It's in portuguese and I'm not sure if there's an official translation, yet it's easy enough to decipher if you know bash, and Google Translate will do a pretty decent job.

I gift you "Aurelio's Swiss Army Knife of the Bash Shell" \- [http://aurelio.net/shell/canivete/](http://aurelio.net/shell/canivete/)

<comment><USER5> Thanks for the heads up - it does work via translate.

I'll drop this: [http://tldp.org/LDP/abs/html/](http://tldp.org/LDP/abs/html/) If anyone, who has to do anything BASH related, has not seen it then they should!

<comment><USER6> I'd recommend _against_ the Advanced Bash-Scripting Guide -- it uses a lot of bad practices (like unquoted variable references!) that you're better off not learning. Instead, check out [http://mywiki.wooledge.org/BashGuide](http://mywiki.wooledge.org/BashGuide) and [http://mywiki.wooledge.org/BashFAQ](http://mywiki.wooledge.org/BashFAQ). Also, [http://www.shellcheck.net](http://www.shellcheck.net) is a good automated tool for sanity-checking syntax errors and common mistakes.

</comment></comment></comment><comment><USER7> As I mentioned in my comment on the article, setting $TMOUT if you want a timeout on a 'read' command is unnecessary and unclear. Just use "read -t":

        read -t 5 foo || foo='No reply'

Setting $TMOUT affects all following 'read' commands. Also, setting $TMOUT in an interactive shell sets a timeout for a response to the primary prompt, terminating the shell if the user doesn't respond in time.

</comment><comment><USER8> Fiy, heredocs also have a variant that strips all leading tab characters. Quoting from `man 1 bash`:

      If the redirection operator is <<-, then all leading
      tab characters are stripped  from  input  lines  and
      the line containing delimiter.  This allows here-
      documents within shell scripts to be indented in a
      natural fashion.

<comment><USER9> There's also a variant, where you single quote the marker, that won't expand variables:

        cat <<'EOF'
        This will not be ${expanded}
        EOF

</comment></comment><comment><USER10> I imagine most uses of random in Bash don't need to be that robust, but it might be worth mentioning that ${RANDOM}${RANDOM} has a lot of bias as a random number generator.

<comment><USER11> Fair point - have updated accordingly.

<comment><USER7> If you want 30 rather than 15 bits of randomness:

        echo $(((RANDOM << 15) + RANDOM))

</comment></comment></comment><comment><USER12> "Sigh. Hit 'up', 'left' until at the 'p' and type 'e' and return.". My solution for this one would be :

UP CTRL-A RIGHT RIGHT e

Which needs less thinking and 6 keystrokes instead of 8.

<comment><USER13> I don't like to use arrow keys, and on my system the following works: CTRL-P CTRL-A CTRL-F CTRL-F e I also prefer this to the solution in the article.

<comment><USER14> Potentially of interest: [https://github.com/Fakerr/goto](https://github.com/Fakerr/goto) sort of like the easymotion vim plugin.

</comment></comment></comment><comment><USER15> I'm so happy that Bash is getting the love it deserves.

<comment><USER11> Me too!

</comment></comment><comment><USER16> Just another plug for Zsh: it has all of these features and then some.

\- Safe-by-default parameter expansion: no word splitting unless you ask for it, even if you don't quote the expansion.

\- Ability to use histoy expansions (like !!:gs/foo/bar) on parameter expansions, meaning "${foo:A:h}" is equivalent to "$(dirname $(realpath $foo))"

\- Much better array support, including both integer-indexed and associative arrays

\- A built-in CLI option parser that's pretty robust ("zparseopts")

\- Lazy-loaded functions

\- Floating-point arithmetic

<comment><USER17> Production servers don't generally have zsh available, while most have bash. That means that ssh sessions will use a different shell, and scripts I write will use a different shell. And so, the upside for using some funky shell locally is greatly reduced.

Whereas if I stick with bash, I can run my scripts almost everywhere and almost every server I ssh into has a familiar environment. Thus my knowledge of edge cases and scripting idioms from bash pay dividends.

For situations where I need better arrays, associative arrays, floating point arithmetic, I'm probably better off writing it in an actual scripting language.

<comment><USER16> Fair enough! One tends to get spoiled with Zsh, trying to go back to Bash.

In the past I've actually downloaded Zsh, compiled it from source, and ran it out of ~/.local/bin with absolutely no issues. But that's not something I'd advise.

</comment></comment></comment><comment><USER18> _Sigh. Hit 'up', 'left' until at the 'p' and type 'e' and return._

One could also use <c-p>,<c-a> and <c-f> to achieve the same result much quicker.

<comment><USER19> Yup. The moment you need editing capabilities more sophisticated than those three keys, though, I recommend switching to vi input mode (set -o vi) if you are familiar with vim keybindings. Although tapping Esc is not as quick as Ctrl (or, my chosen alternative, Ctrl-[), you have an entire library of editing commands already at your beck and call. I find that using 'f' or 'F' and '.' more quickly triangulates the problem area of the text in most cases.

Of course, if you are an emacs user, more power to you with the emacs bindings.

<comment><USER20> IMO you might as well run "fc" (if you have vim set as your editor) in that case, rather than changing mode.

<comment><USER3> Or, if you already started editing a line, and decided that you'd rather finish it in a proper editor, you can press Ctrl+X Ctrl+E.

<comment><USER21> Didn't know that one, thanks.

</comment></comment></comment></comment></comment><comment><USER22> Interesting, most of these are from korn shell and well documented in "The korn shell command and programming language" by Bolsky and Korn.

</comment><comment><USER23> Well that first example with the mistyped grep command just blew my mind.

</comment><comment><USER24> I agree with most of it except for:

        ${RANDOM}${RANDOM}

A preferred way would be

        od -vAn -N4 -tu4 < /dev/urandom

/dev/urandom gives you random bytes, od dumps them in different formats (e.g: hex, octal, decimal and such).

This takes 4 random bytes and outputs them as a 4 byte unsigned int.

<comment><USER3> Explanation of options:

-v: Don't suppress duplicate lines. (It doesn't make a difference here, because there's always only one line.)

-An: Don't write input offsets.

-N4: Read at most 4 bytes.

-tu4: Print 4-byte unsigned integers.

<comment><USER25> [https://explainshell.com/explain?cmd=od+-vAn+-N4+-tu4](https://explainshell.com/explain?cmd=od+-vAn+-N4+-tu4)

</comment></comment></comment><comment><USER26> I use pushd and popd every day. If you forget what's in the stack you can see what's in it by using the "dirs" command.

You can also use pushd -n (where n is a number, although I usually end up needing trial and error to get the right one) to rotate the list of dirs without removing any from the stack - useful if the list has more than 2 directories, or 2+ directories you need to switch between repeatedly.

pushd and popd also work out of the box in Windows command prompt, although you don't get "dirs" or any fancier options like in bash, just push and pop on a plain old stack.

</comment><comment><USER11> Previous post discussion: [https://news.ycombinator.com/item?id=16084763](https://news.ycombinator.com/item?id=16084763)

</comment><comment><USER27>
        ^x^y^

Is that third caret necessary? I've never had to include it. Although that may be zsh taking a shortcut on bash syntax.

<comment><USER28> It's optional, also in Bash, even though I can't find it explicitly mentioned in the manual.

</comment></comment><comment><USER29> Things I Wish I'd Known About Bash: don't use it for script

</comment><comment><USER30> But you really should know that set -e is broken.

<comment><USER30> So... why the downvotes? Is it not the case that set -e is broken? Or is it that I provided too little detail? Or is it that it's broken in the same way in all shells?

FWIW, the bug (yes, it's a bug that the Open Group has decided is not a bug, but it really cannot be anything other than a bug!) is this: non-zero exits by commands/functions are ignored when invoked by functions invoked in a conditional expression context.</comment></comment>


The encryption pioneer who was written out of history - <AUTHOR> http://www.pcpro.co.uk/news/security/361669/q-a-the-encryption-pioneer-who-was-written-out-of-history

<comment><USER2> I first heard about this in _The Code Book_ , by Simon Singh, which he mentions and is excellent! It's unfortunate that they invented this when they did - it was obviously useful, but a practical implementation was not plausible at the time, so I guess the idea got put in a filing cabinet under "how to communicate without pre-shared keys," and forgot about it.

</comment><comment><USER3> He wasn't "written out" of history. He wasn't in history because his work was kept confidential. He was written into history later.

</comment><comment><USER4> Pre-emptive: yes, his name is Cocks. Get over it.</comment>


The App Design Handbook, iOS 7 Edition - <AUTHOR> http://nathanbarry.com/app-design-handbook/ios7edition/

<comment><USER2> Sorry, but lower your pricing on the 2nd and 3rd tiers by at least half and I'll _consider_ the purchase.

Too bad the pricing is nuts, because this looks like an excellent resource. But there are comparable quality resources available all over for much less or free.</comment>


We built this to learn Linux-anything on the cloud - <AUTHOR>

Here's the main link http://simtry.com/labs/4e3e64bf9b156e40a3000006
This starts Ubuntu on our servers, gives you noVNC access through your HTML5 browser. The bar on the right shows our AI agent analyzing your progress, and helping you along the way!
To find out more, check http://simtry.com/labs
What do you folks think? Would you want to use this if you were training someone ? I appreciate your help and thoughts <comment><USER2> Interesting stuff. As an ops guy who's been doing this stuff for 15 years, I'm always faced with training junior sysadmins. I could see a tool like this being very helpful. If you want some more detailed feedback, I'd be happy to chat. Email me gabriel _at_ opdemand.com.

FYI, looks like your terminal emulator gets confused with the debconf curses prompt for the MySQL password. I had to issue a `reset` to fix it.

</comment><comment><AUTHOR> Oh main post links aren't clickable .. Adding them here (let's see if it works)

Linux cloud lab: <http://simtry.com/labs/4e3e64bf9b156e40a3000006>

To find out more, check <http://simtry.com/labs>

Cheers</comment>


Red Lang goes blockchain - <AUTHOR> http://www.red-lang.org/2017/12/leaping-into-future-red-goes-blockchain.html <comment><USER2> I like Red, and I have been following it. I dabbled with Rebol back in my Amiga days, but not much. Red is a nice batteries-included, small, Lispy-forth language in my perception.

I am sticking with my Lisps (SBCL, Racket, Emacs Lisp, Shen, and Wasp Lisp) for now, and my beloved J [2], but I love the size of the whole Red/Red System environment. I think it is going to take off.

I know Naned, the man behind Red, was CEO of Fullstack Technologies, and it was based in Beijing after an initial $500k VC funding round from Chinese VCs [1].

Curiously, I predict a bunch of conspiracy theory people to relate Red = Communism, Blockchain/ICO/Coins = Socialized currency, and a decentralized internet running DAPPs to dilute the USA's currernt juice in the internet all with a connection back to China, but I am ecstatic about a distributed internet that cannot be censored like it is in China, or in less obvious ways in the US. I missed the Bitcoin buy-in when it was selling at $200-something, but I always knew in my readings that the blockchain is its secret sauce. Aside from the energy expenditure, I like the concept. How can it, or can it become energy efficient, but still stay difficult to mine to work out both ways? Seems like it will not be possible. You cannot make it easy for everyone, and hard enough to have value...

      [1]  http://www.red-lang.org/2015/01/dream-big-work-hard-and-make-it-happen.html

      [2]  jsoftware.com

<comment><USER3> s/Naned/Nenad

I recently got interested in J too by the way, how do you use this language and Lisps in your work?

<comment><USER2> I can't go back and edit the spelling error, thanks anyway.

I use J daily on my desktop as a calculator, and for more involved calculations. I am a senior project manager/technical designer/business developer at an engineering firm in the their Entertainment department. We do rock concerts, Broadway, film, live events, theme parks, stage machinery, art installation engineering and more. J is like my quicker-than-Excel-tryout- space. I have developed more mathematically-heavy applications in it, but when the need is for something beyond J's strengths of array handling and beautiful succinctness, I reach for Lisp for developing more of what people call apps, but they are for my sole use. Particularly SBCL. I also use Emacs Lisp a lot, since I am in Emacs all day for org-mode, writing, coding and LaTex. I am addicted to Emacs. It is the Lisp Machine for me until another is developed, or I can afford a relic.

I picked up Shen [1] a few years back to keep me from straying to far into Haskell/Idris, and I am working through The Book of Shen 3rd Edition. I had looked into Wasp Lisp years ago for fun, but I am now looking more into it since Chris Double ported Shen (and with it Klambda) over to the Wasp Lisp [2]. It made me leave any studies I started of Erlang or LFE, since my focus is on networking and distributed computing as a hobby. I always stay up to date with Racket, and use it for procedural geometry generation using Rosetta [3] instead of Rhino and Grasshopper. I actually used it to generate procedural truss for a sphere and then exported the centerlines to run analysis on the structure in RISA 3D [4].

I like to fiddle with Extempore for livecoding, but I am a mere dilettante [5]

      [1]  http://shenlanguage.org/
      [2]  https://github.com/doublec/shen-wasp
      [3]  http://web.ist.utl.pt/antonio.menezes.leitao/Rosetta/tutorials/introduction.html
      [4]  https://risa.com/p_risa3d.html
      [5]  https://github.com/digego/extempore

<comment><USER4> Have you dabbled with Julia [1] before? It sounds like it might be right up your alley. It's not a lisp, but it's very "lispy" in a lot of ways, and it's focused on scientific/numeric computing with an active community focused on the same. The creators also mentioned J as an influence I believe, though I haven't used J myself, so I can't comment on that.

[1] [https://julialang.org](https://julialang.org)

<comment><USER2> Yes I have. J and Wasp Lisp are tiny ecosystems, and I like that a lot about them. Julia is trying to be a Matlab replacement and a whole lot more. I'm going to wait until it matures. I'm teetering on Zig and Rust for my C replacement and as a hook into J's libraries, or a Wasp VM written in Rust.

</comment></comment></comment></comment></comment><comment><USER5> _edit_

I know we're all experiencing blockchain fatigue, but for once, I actually know what the tokens will be used for (beyond the usual snake-oil that other ICOs sell). For reference:

Some of the target usages for the token holders, will include:

\- voting rights: influence the Red roadmap, vote for features and issue tickets.

\- tipping: useful chat posts, code contributions, learning materials providers, etc.

\- intra-community cryptoeconomics (or rather tokenomics): selling/buying services from other community members (coding tasks, consulting, learning help, bug fixing, decentralized gaming, etc.)

\- paid Dapps, or in-app purchases.

In addition to that, the foundation will hold a significant amount of RCT, which will be used for rewarding:

\- code contributions

\- Red-related online learning or presenting materials (blog, documentations, etc.)

\- promotional actions (presenting Red at a conference)

\- any other actions that will help spread Red and make the community grow up.

I'm not sure I personally agree with turning the org into a "dapp", unless language-design remains with the core designers of the language and doesn't become influenced by decentralized decisions. _edit: It looks like "voting rights" may actually impact this_

There is always an issue with OSS projects struggling for funding. Regardless of how flawed the idea may be, at least they are trying to find a model to sustain themselves. It certainly trumps the model of depending on big-tech- company-X giving you handouts for your SSL library.

<comment><USER6> Literally everything except "voting rights" is better served by a more popular existing cryptocurrency, and program language design doesn't need a fancy voting system.

<comment><USER7> ICOs increase the emotional connection to a project by catering to the "in- group" tribal mentality no matter the original intent (i.e. greed). It can be debated how (or whether) this is fallacious, but the empirical evidence thus far indicates this model generally raising funds more quickly and in larger quantities than mere donations.

</comment></comment></comment><comment><USER8> Oh boy. It would suck ass to see those guys busted by SEC for offering unregistered securities. The voting rights will definitely make it a security from SEC's standpoint, so the only question is whether they will be considered too small of a fish to bother.

The irony with the ICO market is that it's safe for total scams with untraceable founders and it's safe for big players like FileCoin that voluntarily comply with the securities laws. But if you're a well-meaning techie with no legal team, you may be easily breaking dozens of security- related regulations without even realizing it.

<comment><USER9> The SEC has absolutely no say in this whatsoever, as the Red Foundation is being set up in France.

</comment></comment><comment><USER10> Not sure what to think of this. Smells like FOMO. I looked at their roadmap and they're planning to support so many different architectures. Adding EVM support seems like adding more complexity to the project just because blockchain.

I think something like this is needed for programming on blockchain, but I'd prefer to see a dedicated project instead.

<comment><USER11> also, documentation seems to have be an after thought. I want to like Red, but the documentation has been so scattered, unorganized and limited, I felt more slowed than I needed to be.

Will still keep an eye on Red though, hoping it will improve on that level

<comment><USER12> It's not an afterthought, but it takes a lot of time and work. The project priorities are driven by the people paying for the work, and it hasn't been a priority for them. We hope the new projects will allow us to improve the situation. In the meantime, telling us what docs are most lacking, or most needed, helps.

</comment></comment></comment><comment><USER13> "but after studying many other ICO, I am convinced now that this is not just a short-lived fad, but a real new model to fund projects, and especially open- source projects related to blockchains."

There's been quite a few of us suggesting people jump into blockchain just to get funding for more important stuff (e.g. language-level tooling or libraries) they'll produce as part of the coin offering they sell to investors. Plus, with the focus on correctness, it's easier than ever to get the private sector to invest in high-assurance tooling. Problem is they keep trying to clean-slate everything when there's piles of work to build on with better benefits in the long term. And this work is _hard_ even when doing simple things if you want end result to be widely usable. So, you better have a good justification for trying to redo decades worth of hard work on your own with some VC funding.

Anyone wanting a shortcut should build your language on top of capabilities of the SPARK Ada language [1] with this book [2]. Your smart contracts get all the benefits it currently offers plus whatever extra you build plus whatever they build with the influx of money for Pro edition. Recent projects already add some pointer [3] and floating-point [4] safety to what they already mostly automate with that tooling. This is also a mature tool whose development and commercial use goes back decades [5].

[1] [https://en.wikipedia.org/wiki/SPARK_(programming_language)](https://en.wikipedia.org/wiki/SPARK_\(programming_language\))

[2] [https://www.amazon.com/Building-High-Integrity- Applications-...](https://www.amazon.com/Building-High-Integrity-Applications- SPARK/dp/1107040736)

[3] [https://arxiv.org/abs/1710.07047](https://arxiv.org/abs/1710.07047)

[4] [http://lists.forge.open- do.org/pipermail/spark2014-discuss/2...](http://lists.forge.open- do.org/pipermail/spark2014-discuss/2017-November/001446.html)

[5] [http://www.spark-2014.org/uploads/itp_2014_r610.pdf](http://www.spark-2014.org/uploads/itp_2014_r610.pdf)

<comment><USER12> Thanks for the info @nickpsecurity!

</comment></comment><comment><USER14> Not sure why people are so skeptical. I'm hoping for ICO to become a successful model for open source projects. Maybe more projects will be able to sustain themselves with ICOs, Patreon, donations.

</comment><comment><USER15> I was pretty sure it was going to be a joke, but like the Long Blockchain Company announcement[1], it's pretty apparent that its real. Good god.

[1]: [http://money.cnn.com/2017/12/21/investing/long-island- iced-t...](http://money.cnn.com/2017/12/21/investing/long-island-iced-tea- bitcoin-blockchain/index.html)

</comment><comment><USER16> Exciting stuff. Just a heads up that NEO is being marketed as a decentralized platform but its roadmap describes a platform run by Trusted Third Parties, which have to be approved by NEO after proving their identity and proving they have a legal entity backing them.

The NEO team also promotes itself as compliant with regulations (probably to stay on the good side of the authorities in China where it is based). If they want to go down this route, that's their prerogative, but it's downright misleading to describe it as decentralized or even as in the same space as cryptocurrency. It's more like a traditional Fintech company, with greater separation of concerns between users and trusted third parties (e.g. updates to the database are cryptographically validated, with each user controlling their own private keys to authorize updates to their respective account), to provide more transparency and security than closed database models.

I would add Ripple, Stellar and EOS to this class of pseudo-cryptocurrency platforms, that while arguably offering interesting innovations on the centralized server-client architecture, are exploiting the hype around decentralization to raise funds and users for platforms that are not decentralized.

Its centralized consensus model means NEO can afford to place very high resource loads on its nodes (or really, servers), and use traditional programming languages that are not optimized for the decentralized world. This ability to use Java, C# and Python to write programs for it is actually one of its features that is marketed on its website.

<comment><USER17> There is nothing misleading about it at all. A delegated system is decentralized, whether it is decentralized enough for you is your decision, but it is misleading to claim otherwise.

Disclosure: NEO fan

<comment><USER16> A set of trusted third parties that are pre-approved by a central authority, and are operating in a platform designed to comply with rules created by a central authority (the government), is not decentralized, in any context, let alone in the cryptocurrency context, where the original Bitcoin whitepaper describes a radical consensus algorithm designed specifically to make trusted third parties unnecessary.

You could call it federated, but not decentralized.

<comment><USER17> This radical consensus mechanism has led to multiple hostile parties go into a pseudo economic war with each other. These parties are fairly centralized, miners, developers, and business interests, with the users largely standing on the sidelines of all of this.

A decentralized system takes power from one party and moves it to multiple parties. That is the definition of decentralization. A decentralized system is not one that completely does away with trust. That would be a trustless system.

<comment><USER16> >>This radical consensus mechanism has led to multiple hostile parties go into a pseudo economic war with each other.

I'm not arguing about the merits of its consensus algorithm or of decentralization. I'm providing context for how the term 'cryptocurrency' originated, and how 'decentralization' was used in this context.

Having a central authority determine who can be a consensus server, and being explicitly designed to put known and trusted third parties in charge to comply with the rules of a central governing authority, is not a decentralized system, especially in the context of cryptocurrency, where the term was used in relation to the absence of trusted third parties.

The economic wars you speak of could put to question whether Bitcoin succeeded in being decentralized, but it doesn't change the fact that NEO and other permissioned blockchains run by pre-approved and known trusted third parties, are definitely not decentralized.

>>A decentralized system takes power from one party and moves it to multiple parties.

But the ultimate power still resides in the hands of one party in NEO, because there is one party acting as a gatekeeper, deciding what can happen on its ledger, and who can run a server.

To call this decentralization, with whaboutisms about problems in the Bitcoin space, that are not even comparable, to justify the characterisation, is disingenuous.

<comment><USER17> I don't think that we will be able to convince each other. If you think that everyone needing to run a validating node in a blockchain ecosystem to be decentralized, then NEO certainly won't fit your criteria. I don't subscribe to this definition of decentralization

<comment><USER16> You're right that we won't convince each other and that carrying this on isn't a good use of either of our time.

I'll add however that "everyone running a validating node" is not my definition of decentralization. Needing to 1. identify oneself to the NEO Council, 2. be a legal entity and 3. get approval from the NEO Council, to run a fully validating node, is not decentralization according to any meaningful definition of the term.

If federations of trusted third parties are decentralized, then corporations with multiple shareholders are decentralized. Even the Federal Reserve, with its regional banks voted in by the member banks of each respective district, is decentralized, by this loose definition.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> I was actually looking at Red in consideration for my next year's personal projects.

I'd consider it further if I felt it was more complete. Perhaps this is a cursory evaluation, but it feels like the emphasis is to use what's built in as much as possible. Given a lack of json (yes, there is an implementation out there, but not built in), and still pending linux GUI support, it still feels too unfinished for me to invest my time into.

<comment><USER9> The lack of Linux GUI support is a dealbreaker for me.

</comment></comment><comment><USER19> Curious - How is Red sustained, who currently supports it? Or what does the roadmap look like for this to be a five-year sustainable project?

Edit: They seem to address this down in the blog post, with the creation of a RCT token. What is the incentive for a potential backer to buy this token?

<comment><USER12> @ZenoArrow is correct. Nenad Rakocevic supported himself, with modest donations and other work, until he could raise the initial investment money. He and another full time developer have been working on it for a few years, using those resources. This is the next phase, with one goal being to grow the core team, but also encourage community involvement by being able to reward people.

One incentive for backers is if they want a say in how things are prioritized.

</comment></comment><comment><USER20> I am excited. Wish they wrote more details on how to participate in ICOs as some - like me - never have.

<comment><USER21> Step 1: don't live in the US.

(I'm a bit jealous.)

<comment><USER22> Just use an VPN if you want to participate

</comment></comment></comment><comment><USER23> > We have produced a whitepaper earlier this year in October (co-authored by > Tamas Herman and myself), to describe with more details and context what we > are building. We will release it publicly in a few days.

Why not release them simultaneously?

<comment><USER24> > Nenad Rakocevic @dockimbel 00:35

> @OneArb I need to update the whitepaper with latest data, so it should be > available maybe tomorrow, or in a couple of days.

— [https://gitter.im/red/blockchain?at=5a4128da0163b02810796948](https://gitter.im/red/blockchain?at=5a4128da0163b02810796948)

<comment><USER23> Thank you.

</comment></comment></comment><comment><USER25> Anyone found their whitepaper for ICO? Looks pretty interesting to me.

<comment><USER3> As said in the article, it will be released in a couple of days.

</comment></comment><comment><USER26> What has been the most successful use of smart contracts so far?

<comment><USER27> That hasn't ended in theft (so far)? CryptoKitties, probably. [https://www.cryptokitties.co/](https://www.cryptokitties.co/)

</comment></comment><comment><USER28> I was hoping the Red project would announce something interesting at the end of the year; but not something as interesting as this.

<comment><USER12> We live in interesting times.

</comment></comment><comment><USER23> Do they have a plan for staying on the windy side of the SEC, or should US residents stay away?

</comment><comment><USER29> This reads like an Aprils Fools joke.

<comment><USER30> No it's Christmas Gift :)

</comment></comment><comment><USER31> God! Enough! At this point any announcement with "blockchain" should turn any informed person off of the whole project. Checking out Red was on my roadmap and now it's firmly not.

<comment><USER32> I'm with you about blockchain announcements, but this looks like it's actually appropriate.

From the linked page: "Such dialect will compile to the Ethereum VM (EVM) bytecode directly as first target, and more backends will be added later to support other chains, like NEO. "

That seems significant to me.

<comment><USER33> Sounds like an opportunity for a startup.

JSON input in one format, let the SaaS translate it to ETH, NEO, etc.

Thoughts/

</comment></comment></comment><comment><USER34> Still waiting for Red Lobster blockchain

<comment><USER35> I'd buy into that Initial Crab Offering.

</comment></comment><comment><USER36> I just bet myself 5:95 odds (lose means donate directly to the org - they just missed out on 12.5k) that there would be only rent-seeking or "voting" in the "token use cases". These guys don't know what they don't know.

Also, HA HA HA. I used to feel bad for the victims but now I think they deserve it.

<comment><USER37> Please don't post snarky dismissals to HN, even if something else is wrong or bad. That's no reason to make this place worse.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment></comment><comment><USER30> Fantastic news !!!

</comment><comment><USER38> Priorities. He realized that buzzwords are more important than multithreading.

</comment><comment><USER39> Its like a traditional ICO, but the code is already written. Interesting approach

<comment> T-A Not really:

> We are at the design stage, the first alpha (prototype) is planned for end > of Q1 2018.</comment></comment>


Adblock Sold to Mystery Company - <AUTHOR> http://www.businessinsider.com/adblock-gets-sold-acceptable-ads-2015-10 <comment><USER2> To anyone who is concerned by this change, I recommend taking a look at μBlock Origin [1,2]. It's blazingly fast, very flexible, and under active development. I made the switch about a year ago and it has served me very well.

[1] [https://github.com/gorhill/uBlock](https://github.com/gorhill/uBlock) [2] [https://chrome.google.com/webstore/detail/ublock- origin/cjpa...](https://chrome.google.com/webstore/detail/ublock- origin/cjpalhdlnbpafiamejdnhcphjbkeiagm)

<comment> david-given Just be sure NOT to install "U Block For Origin", by www.z1z2z3z4.com, which is currently the top hit if you search the Chrome extensions store for 'ublock'.

I don't know what it does, but I bet it's not good.

<comment><USER3> Wow; that's quite malicious.

Question for HN: back in the Napster days, were there likewise Napster clones ("napster"?) that purported to allow peer to peer music downloads but in fact had malware properties?

<comment><USER4> I don't remember any, but then again, I don't know when I (or most people) would have come across them if such a thing existed. If you wanted Napster, you just went to napster.com and downloaded it. There wasn't a gameable walled-garden app store like you have to go through to get uBlock Origin.

</comment></comment></comment></comment><comment><USER5> Note that Adblock isn't Adblock Plus:

 _AdBlock is not to be confused with Adblock Plus. The creator of AdBlock claims to have been inspired by the Adblock Plus extension for Firefox, which is itself based on another extension called Adblock. But otherwise AdBlock is unrelated to the other efforts._

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

No alarm here for ABP users. (Like me).

<comment><USER6> Okay _this_ is why we have registered trademarks. You're telling me that Adblock, Adblock Plus, and AdBlock are three separate things? What the hell? I just assumed they were all the same thing until now.

<comment><USER7> I kept rereading OP's comment and looking for the difference between Adblock and AdBlock. It wasn't until your comment that I noticed the capital B in Block.

Trademarks FTW. Great example of confusion in the marketplace.

<comment><USER8> I read through nearly the entire thread thinking that the Adblock mentioned had a capital B.

<comment><USER9> Coming soon: uAdblock Origin Plus+.

<comment><USER10> Upgrade to PRO Version for $29.99 a year.

<comment><USER11> Is that the one without ads?

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> This Business Insider article seems to be a thin layer of blogspam around its more-informative source, [http://thenextweb.com/apps/2015/10/02/trust-us-we- block-ads/](http://thenextweb.com/apps/2015/10/02/trust-us-we-block-ads/)

<comment><USER13> with a cringe-worthy, grammatically incorrect title

<comment><USER14> It's a little sloppy, but I don't think "got sold" is actually incorrect.

</comment></comment></comment><comment><USER15> It would be unbelievably obvious, yet ironic, if the "anonymous" buyer of Adblock ended up being an ad company. Why else would they want to remain anonymous?

<comment><USER16> That was my first thought as well. This has to be either a consortium of advertisers or a single big player.

<comment><USER15> My thought would be Doubleclick^WGoogle^WAlphabet.

<comment><USER17> ... or Cheetah Mobile [1] perhaps?

[1] [http://www.androidpolice.com/2015/08/29/popular-photo- galler...](http://www.androidpolice.com/2015/08/29/popular-photo-gallery-app- quickpic-has-been-bought-by-cheetah-mobile-and-users-are-pissed/)

</comment></comment></comment></comment><comment><USER18> I've always wondered what happens if a browser extension gets taken over by an entity someday that puts in bad code after millions of people have it installed and it gets auto-updated.

Sure it's open-source and will get noticed eventually, but there will be days if not weeks of exposure.

Same thing for all those android apps you have installed. If it doesn't add permissions, you'll never get a warning that something has really changed.

<comment><AUTHOR> I'm placing 80% of my bet on Google (Alphabet). The remaining 20% on Yahoo.

<comment><USER18> Didn't get that for a moment, you mean you think Google or Yahoo bought the very product that blocks their income?

Despite all the alternatives that can be installed instantly?

<comment><USER19> Adblock does not block Google ads by default.

<comment><USER20> by Google ads do you mean ads on Google? Or AdSense ads placed across the web (AFS? AFC?)? or do you mean AdSense + Doubleclick (DFA, DFP, ...) + AdExchange + AdMob + I could go on for a long while. Bottom line is google, more than anyone else, has a lot of skin in this game.

</comment></comment></comment></comment></comment><comment><USER21> I'm glad to see this here. I saw this update yesterday, and the text was so typical of a company-acquisition-I-should- _not_ -trust.

Excerpt: "I believe this is a great thing for you users". Yet this is not accompanied by anything that suggests how users will possibly benefit from any of this.

Can someone suggest alternatives to Adblock that aren't controlled by dubious/secret/obviously-sketchy third parties?

<comment><USER22> uBlock

<comment><USER23> Critically, uBlock _Origin_.

[https://github.com/gorhill/uBlock](https://github.com/gorhill/uBlock)

</comment></comment></comment><comment><USER24> "Adblock Plus to Allow Independent Board to Decide Which Ads Are `Acceptable' -

Parent company Eyeo says it will no longer help decide which ads can pass through its filters"

[http://www.wsj.com/articles/adblock-plus-to-allow- independen...](http://www.wsj.com/articles/adblock-plus-to-allow-independent- board-to-decide-which-ads-are-acceptable-1443553201)

[https://acceptableads.org/](https://acceptableads.org/)

<comment><USER25> Right, because after making 30 million US$ with their "Acceptable Ads" program, they're set for life: [http://www.mobilegeeks.de/adblock-plus- zahltag-30-mio-von-am...](http://www.mobilegeeks.de/adblock-plus- zahltag-30-mio-von-amazon-ebay-google-und-yahoo/)

</comment></comment><comment><USER26> BE VERY CAREFUL!!! I already used another popular extension, after a few months it was sold and the new owner just started to send EVERY PAGE users visited to his own servers!! This extension was blocked by Google, but it was waaaaaay too late and they was able to collected a lot of data from users like me.

</comment><comment><USER27> I just switched over to uBlock Origin. The lack of transparency here worries me.

</comment><comment><USER28> And this morning this extension gave me a popup saying they're going to have a default whitelisting going forward. Uninstalled and switched to uBlock.

</comment><comment><USER29> Having been using Adblock for Safari for some time now, I'm a little apprehensive about this development. Thankfully, Adblock Plus (see above - distinct from Adblock) exists for Safari:

[https://adblockplus.org/en/safari](https://adblockplus.org/en/safari)

Duly switched over.

<comment><USER25> AdBlock Plus does the same stuff, you might consider switching to uBlock for Safari.

</comment></comment><comment><USER30> Curious why I can't offload this task to a DNS server?

If such a solution truly doesn't exist (and I don't mean OpenDNS), would anyone like to talk about building something like that?

<comment><USER31> > Curious why I can't offload this task to a DNS server?

DNS doesn't provide nearly enough precision for ad blocking. Many servers serve both ads and content. Random example: some sites host actual non-ad video content on doubleclick.

<comment><USER25> Could you point me to an example of non-ad content doubleclick hosts? I haven't ever seen such content before.

<comment><USER31> Last time I looked through EasyList, it had some comments explicitly mentioning that they can't just block all of doubleclick because some sites (such as news sites) host their content videos there.

</comment></comment></comment></comment><comment><USER32> Ugh. There was a time AdBlock made pleas for donations for this mom and pop operation that won't sell out, and I donated.

</comment><comment><USER33> And uninstalled.

Are any of the adblockers open source? So, I can take a look at the code, and learn how they work.

<comment><USER34> [https://github.com/gorhill/uBlock](https://github.com/gorhill/uBlock)

<comment><USER35> Let's hope they trademark the name... After reading the comment above about Adblock, AdBlock, and Adblock Plus, it would be much easier to know exactly what product the news is about.

<comment><USER9> Too late [http://tuxdiary.com/2015/06/14/ublock- origin/](http://tuxdiary.com/2015/06/14/ublock-origin/)

<comment><USER36> Except uBlock Origin is actually the one you want, not uBlock itself. Some sort of drama with the creators, one of them split off and made uBlock Origin which is a better iteration.

</comment></comment></comment></comment></comment><comment><USER37> I just append [http://winhelp2002.mvps.org/hosts.txt](http://winhelp2002.mvps.org/hosts.txt) to my /etc/hosts.

</comment><comment><USER38> The most straightforward alternative is the original Adblock Plus.

<comment><USER36> uBlock Origin is better, Adblock Plus also does the acceptable ads program (they started it).

</comment></comment><comment><USER39> I don't think adblocking has gone far enough.

Adblocking for real life: [http://noad-app.com/](http://noad-app.com/)

</comment><comment><USER40> I donated initially when this came out because it was the only working Adblock for OS X Safari and Chrome at the beginning.

</comment><comment><USER40> Oh no. I hope it's not Cheetah Mobile.

</comment><comment><USER41> ironically "has announced via a pop-up to users"

</comment><comment><USER42> Google

</comment><comment><USER43> If theres a Business Insider article worth reading, you find it Hunna Fresh.

</comment><comment><USER44> The next ad blocker will need to have a strong mission statement that excludes this type of behavior.

<comment><USER45> Nah, people just need to go back to treating their adblocking software and their ruleset provider as separate things.

Either your adblocker blocks what you tell it to, or it doesn't. There's not a lot of room for fishy behavior.

The rulesets are where things are open to opinion and there are grey areas and they need a lot more maintenance and there's a lot of opportunity for abuse.

EasyList and AdBlock shouldn't be synonymous, and users should be aware that they can opt to use something other than EasyList, and that they can make their own rules.</comment></comment>


On cellular encryption (2013) - <AUTHOR> https://blog.cryptographyengineering.com/2013/05/14/a-few-thoughts-on-cellular-encryption/ <comment><USER2> I've preferred facetime audio over "regular" cell phone calls for years now.

I prefer them because the audio quality is shockingly better -- but facetime calls are also a whole lot harder to listen in on.

<comment><USER3> If eavesdropping is something you're concerned with, why not try Signal[0] for audio calls? Surely their privacy guarantees are better.

[0] [https://www.signal.org/](https://www.signal.org/)

<comment><USER4> Biggest problem with not using Signal, at least for me, is not its call quality and encryption guarantee. Though its call quality, I've noticed, is better than WhatsApp and encryption is of course evident.

It's that pretty much no one else among my contacts uses it. After I convince them to try it for a few days or maybe a week or so they uninstall, labelling it pretty much unusable and devoid of features. Having used this app passively for almost 2 years and actively for last 2 months I can see why. I have had more success with Telegram though.

</comment></comment></comment><comment><USER5> Worth noting is that ciphering, regardless of the technology (2G/3G/4G), is optional.

</comment><comment><USER6> The goverment doesn't need to worry about cellular phone calls being encrypted. The black boxes are installed at the switch, where there is no encryption.</comment>


Do you understand IPA pronunciation? - <AUTHOR> Survey: do you understand the IPA convention for pronunciation, e.g. that given as the first guide by wikipedia?<p>For example, if you look up 'deus en machina', do you look at the IPA /ˈdeɪ.əs ɛks ˈmɑːkiːnə/ or do you find yourself skipping to /DAY-əs eks MAH-kee-nə/? <comment><USER2> Yes; I've got a working knowledge of the full IPA, diacritics and all. Of course, I have an undergrad degree in linguistics, but still.

I think the IPA should be taught more widely than it is—perhaps not to a level of fluency, but at least to a level of moderate proficiency. Most of the other conventions for pronunciation are ad-hoc and ambiguous, whereas the IPA gives an unambiguous and international standardized system for pronunciation in every possible language, which is invaluable in many situations.

</comment><comment><USER3> No, and I speak more than a handful of languages. It's often easier to tell me about a similar sound, even if in another language.

IPA is the other Unicode.

</comment><comment><USER4> No I do not, as I have not studied IPA. In this case, unless you know IPA explictly, it's misleading. 'dei' would seem to be 'dai' but the segment is pronounced 'day'. 'əs' and 'nə' seem to repeat the ə character but the sound it makes is different in different parts - 'uhs' versus the higher pitched noise in 'na'.

</comment><comment><USER5> I recognize most of it, particularly sounds which are in English, but sometimes I have to look a letter up to recall the sound.

In the example, I do tend to skip to the latter part if it is available, probably because I can just "read" the latter part, but I would have to think briefly for each letter in the IPA part.

</comment><comment><USER6> I have as much understanding of IPA as one gets in a college gen-ed requirement linguistics class. I can usually understand the IPA transcriptions of English words (and sometimes a romance languages), but if the transcription includes non-English phonemes, I go to the respelling.

</comment><comment><USER7> I learned IPA for fun and much prefer it over the English-esque pronunciation guides, both because not only are the English ones often are often ambiguous, but they necessarily leave off important pronunciation details such as forward and nasal vowels and pitch.

</comment><comment><USER8> I can read it partly and I find it very useful for instance for French, where è, ê, ai and sometimes e are all pronounced [ɛ]. I have not learned it, however, and don't understand the meaning of all characters.

</comment><comment><USER9> I had to learn to use it for a linguistics class that I took out of curiosity, but I haven't memorized it. With a reference, I can usually work it out.

</comment><comment><USER10> Interesting. It was like the second thing they taught us during the English course at school (with the first one being the alphabet).

</comment><comment><USER11> I don't see how I'd ever be motivated to actually learn it, given I encounter it sporadically and never under pressure.

</comment><comment><USER12> I wish I still knew it, but it's one of those things you need to use frequently to retain.

</comment><comment><USER13> I had to learn it (at least how to use it from a lookup table) for a communications course in first year of college. So ya I can fairly read IPA.

</comment><comment><USER14> No, I've never bothered to learn IPA.</comment>


Show HN: Flatris – A fast-paced two-player web game - <AUTHOR> https://flatris.space/ <comment><USER2> Excellent! I love the animated feedback when bursting a line. Hope you won't get copyright issues.</comment>


Is this really why people are returning to java?? - <AUTHOR> http://rc3.org/2011/07/07/why-people-are-returning-to-java/

<comment><USER2> The author seems to confuse "JVM" and "Java". The Twitter team AFAIK are using Scala.</comment>


Germany hit a new high in renewable energy, briefly making prices negative - <AUTHOR> http://qz.com/680661/germany-had-so-much-renewable-energy-on-sunday-that-it-had-to-pay-people-to-use-electricity/ <comment><USER2> Isn't Sunday family day, culturally? At least when I visited last year, businesses were closed and there were many more families outside walking/biking/etc than on Saturday.

You'd have to pay me to use the power, too, if I would rather be outside in this perfect weather.

<comment><USER3> We're also having a RIDICULOUSLY hot may, with 27°C being my apartment's temperature for the past 4 or 5 days straight, with windows open and no heating on.

<comment><USER4> It's only been 11 days into May, the cold change is about to happen. And just two weeks ago, it was snowing.

</comment></comment></comment><comment><USER5> Real time prices go negative in U.S. energy markets as well. Usually during off peak hours with a high percentage of wind generation in the zone.

Look at the North Zone of New York, it spent a good chunk of Sunday negative: [http://mis.nyiso.com/public/csv/realtime/20160508realtime_zo...](http://mis.nyiso.com/public/csv/realtime/20160508realtime_zone.csv)

Use the LMP column(Locational Marginal Price)

It should be noted that most energy is purchased in the day ahead market, which I can't recall seeing negative - although maybe in Texas (ERCOT).

The provider will need to buy back the energy in at the realtime price if they are not generating. But I am not sure about the market rules for negative prices.

<comment><USER6> You can get negative day-ahead prices quite frequently due to congestion depending on what lines, generators, transformers, etc are out.

</comment></comment><comment><USER7> So many of these articles (and HN comments too) seem to regard negative prices as a terrible no-no.

I don't see why paying electricity users to timeshift is worse than paying for storage facilities.

I bet most of the German metal industry has already tweaked its production facilities to be able to ramp higher and lower on short order, while keeping weekly production stable. Good thing too IMO.

</comment><comment><USER8> Is Agora Energiewende still counting ethanol as "renewable"? Any article about German energy that doesn't mention the country is following the same disastrous path (of fulfilling new energy demands, caused by the loss of nuclear, by moving the energy sector inefficiently to agriculture) that the US took in the Bush years is negligent.

</comment><comment><USER9> Question: Why do they have to pay to put energy into the grid? If there's too much energy being generated, is there not a way to release that energy? Who gets paid, the consumer, or the local utilities? This sounds more like good energy conservation, than what will actually happen when Germany's nuclear plants go offline.

</comment><comment><USER10> That should be the goal of these "po public utilities". The public pays the upfront cost and assumes the risk of I stalling and maintaining these new systems. The should be able to relish in the benefits when those costs are overcome.

</comment><comment><USER11> If customers are getting paid to use electricity, is it legal for them to just send it to a ground wire the whole time rates are negative to get paid as much as possible?

<comment><USER12> At the powers involved you might melt quite a bit of the ground :). But some heating plants for centralized house heating do have electric water heaters, which are used, as soon as the electricity spot price goes below a certain number - the rest of the time they heat with gas.

These spikes would go mostly away, if more coal plants get replaced by gas plants which can be switched off very quickly. I guess, as soon as there are more of those days, this shift is getting financially attractive.

</comment></comment><comment><USER13> The problem is storage.. what to do.. what do do with all this .. freeze the pumped water storage to horizontal glaciers?

<comment><USER14> Melt very large vats of aluminium and then use that molten aluminium to boil water later on to drive some turbines.

Pump water uphill into a reservoir or series or reservoirs.

Produce hydrogen gas by electrolysis and sell it to fuel cell people.

Charge very large arrays of batteries.

I dunno.

<comment><USER15> Pumping water uphill is already in common use. Here are a couple of other ideas:

Use electric cargo trains to carry many loads of gravel from the bottom of a mountain to the top. Dump the gravel out into a huge pile. Later, load the gravel back in the trains and regenerative brake all the way back down the mountain.

Cut a large-diameter shaft into bedrock. Using the rubble from the excavation of the shaft as aggregate, pour a very heavy concrete piston that fits in the shaft. Pump water into the bottom to lift the piston, discharge pressurized water through turbines later.

Compress air and put it in old natural gas wells. Discharge pressurized air through turbines later.

Use a large heat pump to warm depleted uranium or similarly dense material in a large vacuum flask. Run the heat pump backwards (like a steam engine) later.

</comment></comment></comment><comment><USER16> "on Sunday" please.

</comment><comment><USER17> Marginal return. Include infrastructure investments required to build it all, and they're all probably still deep in the red?

<comment><USER17> Let me illustrate: an Uber driver may make money on a given day, if the cost of ownership of the car is not included. Payback period is a term used to describe the time needed at a profitable level to pay for the purchase/installation of a system. While its a good thing to see money coming in for your energy system, that means little in terms of the purchase decision.

</comment></comment><comment><USER18> Oh, wait, some engineer was cheating with the reporting software... :D

</comment><comment><USER19> This is a disaster for renewable energy and should be reported as such. The costs of such unreliable power are enormous. Such naive reporting does the world no favors.

<comment><USER20> Actually it is good for renewables industry as a whole as it provides business case for storage technologies which is lagging a bit behind.</comment></comment>


Android P is for poisoned platform? - <AUTHOR> https://www.zdnet.com/article/android-p-is-for-poisoned-platform/ <comment><USER2> A good read—not what I was expecting. I won't spoil it for you but I do have a comment about Android totally off he subject of the article but dear to me to tell this community so indulge me would you?

A couple of days ago, over the EOL of Android post, I can't recall it's actual title, I commented that Android was EOL with me after trying it for the third time. I got several downvotes. Maybe I wasn't clear so let me say this: I tried android when it was new and its UI was not clear and unpleasant. I went back to iPhone iOS of whatever it was back then. Time passed and I tried it again with similar results; back to iPhone/iOS. Then I wanted something new but tried Android again and it was, again, bad. But instead of going to iPhone, I went for Windows Phone and really enjoyed it. Time passed and I could see that it was failing and when my bank stopped their support I knew I had to leave it for... iPhone. This is present day. So now, my shared name for my phone is "I'm a sheep it's an iPhone". This should tell you my feelings.

End-the-end I do look forward to "what's next" but it can't come soon enough. I should add I did try webOS early on say 2012 I think and it was a gem. Golden. But when they did that splashy, live dev even in SD and they didn't give the attendees a free phone to develop on, I knew it too was over.

Well, until the next thing comes along I'll just be with the best there is to date and that's Apple's iPhone.

</comment><comment><USER3> (2018)</comment>


OCR and Neural Nets in JavaScript - <AUTHOR> http://ejohn.org/blog/ocr-and-neural-nets-in-javascript/

<comment><USER2> I'm writing an ML in JS series and I was excited to see another person talking about neural networks in Javascript (an upcoming post of mine). I was a little disappointed to see that the article doesn't talk about the actual neural net!

But still the message is clear: Javascript can do some damned cool things.

<comment><USER3> It's a turing complete language. Why is it surprising or note-worthy that you can implement ML algorithms in it?

<comment><USER2> Because up until relatively recently, JS was slow and crippled. The public image of JS is that its only use is Ajax and making popups. It's only recently being recognized as a "real language". Surprising and note-worthy that you can do ML in JS? No. But novel? Yes.

</comment></comment></comment><comment><USER4> I really don't know why people are so surprised/amazed by this kind of stuff. As soon as JavaScript had access to pure image data in the browser there was nothing else holding it back from these kinds of algorithms. It was always the sandbox that was holding it back, not the language.

Cool none the less...

<comment><USER5> Bear in mind this post is from 2009 so it was a bit more amazing back then ;-)

</comment></comment><comment><USER6> Related: <https://www.coursera.org/course/neuralnets> starting on 24 September 2012.

Does anyone here will do this class?

I'm currently doing the ML class, so I'm not sure.

<comment><AUTHOR> Signed up. I'm doing algorithms-1 course now - so not sure if I can complete all assignments. Btw, how is the ML course ? Is it too math intensive...

<comment><USER7> I'm taking both of those also, and the math in ML isn't intensive... but there is much more exposure to calculus and linear algebra in ML than in Algorithms I, and while I agree with the other commenter who said Andrew Ng walks you through it, an understanding of both helps with getting the "why" of things like the gradient descent formulas introduced in the linear regression lectures.

The ML course does start out with an optional linear algebra review lecture, but it's very focused on mechanics rather than underlying mathematical reasoning... for conceptual mastery (or even just brushing up) I'd recommend going through Khan's videos on the subject, if you have the time.

</comment></comment></comment><comment><USER8> I've been working on a basic multi-layer perceptron network using IndexedDB. I found IDB performance is not quite as fast as needed to pull it off with the algos I was using

<comment><AUTHOR> Is there any specific reason you are using a DB in this case ? As I understand, for most of the cases, the neural net data stays in memory and is persisted to disk only to save and load the network.

<comment><USER8> For me the big win is if this can be done purely on the client side. I see two main advantages: 1) the user doesn't have to give up her privacy in exchange for recommendations 2) the service doesn't have to burn CPU it would have had to otherwise</comment></comment></comment>


Is Making Public Data "More Public" a Privacy Violation? - <AUTHOR> http://33bits.org/2010/04/05/is-making-public-data-more-public-a-privacy-violation/ <comment><USER2> Very interesting topic!

I use random nicknames a lot. For example on Freenode IRC. I then started talking on different channels and also, without hesitation linked to some of my personal websites. Now I find IRC logs searching for my websites and leading from there, that random nickname which of course is not so random anymore then.

It is a weird thing. You know its public, but you do not expect it to end up in a search engine. After all it is realtime like a conversation and who would think of recording (and indexing and publishing!) those. Until now I used IRC like the real world. You know there are cameras everywhere but you do not expect to be seen on them.

</comment><comment><USER3> I've encountered this. A project I worked on was a API site that helped members of another site track their account milestones, using info gathered via a public API. Though the information was all public and available without any authentication, some people felt like it was an invasion or privacy and that others would use it to 'spy' on them. We could have actually used more telling and personal info, however, and chose not to - if someone was really interested in gathering data about another member, they could have done a lot better than to use our site.

Same principle, anyhow... public data made more accessible was considered a privacy violation. This does make sense, as lowering the access barrier to make other people's data attainable quickly and easily has a significant impact on whether third parties will view it at all.

</comment><comment><USER4> Once again, click through to the referenced Danah Boyd's talk if you haven't already:

<http://www.danah.org/papers/talks/2010/SXSW2010.html>

It's a perfect dissection of the Google Buzz issue, which encapsulates this whole debate.</comment>