Two Months with Powershell on a Unix - <AUTHOR> https://code.joejag.com/2020/a-month-with-powershell.html <comment><USER2> If you don't want PowerShell reporting your activities back to the mothership, don't forget to set

      POWERSHELL_TELEMETRY_OPTOUT=1

in your environment before launching PowerShell!

<comment><USER3> A shell with telemetry. Insane.

<comment><USER4> Reminds me of a certain package manager with telemetry. Homebrew, was it?

<comment><USER5> Opt-out telemetry, specifically. Debian had popularity-contest (popcon) long ago, but it was voluntary (opt-in).

Regarding Homebrew, "Wonder if its GPDR complaint."

</comment></comment></comment></comment><comment><USER6> I spent some time with Powershell on Windows recently, more time than I am used to. Powershell is a clear winner over CMD.EXE by a mile, but…

\- As an interactive shell, it suffers from an ecosystem which is much poorer than the bash/zsh ecosystem,

\- As a scripting language, I'm going to use Python or Go the moment anything becomes larger than a few lines,

\- Installing Posh Git is just a really mediocre experience (indicative of various, more specific problems)

Some of these things can be fixed up, like the bad experience installing Posh Git—you have to update the package manager to a non-release version, but the signature is occasionally broken (it seems to happen again and a gain) so you have to disable signature verification, and then you can use the updated package manager to download the Posh Git package.

Through the journey I encountered so many stupid random problems that it's not something I can just step out and recommend to anyone. I'll continue using it as my primary shell on Windows, but for various reasons (I forget the exact details) I had to give up on it for working with Git. There was a lot of "action at a distance", like running ssh-agent would break the "ls" alias for Get-ChildItem, which leaves me high and dry without muscle memory.

Meanwhile, Microsoft is also spending time and money on WSL. Again, I'll still be using PowerShell on Windows but even there it is a damn rough experience. The command-line has been paradoxically a second-class citizen as well as a necessary tool for development on Windows for as long as I can remember, and it will take a lot more improvement to PowerShell before that feeling disappears.

<comment><USER7> My biggest issue with powershell is how undiscoverable it is. Good luck doing anything without searching for commands in a web browser.

But maybe that's just a result if it being so new. 'ls' has been around for almost 50 years...

What it really feels like is a complete programming language inside of notepad.exe because of the historically terrible windows command prompt.

<comment><USER8> Yes, but, POSIX shells aren't that much more discoverable, either.

It takes loads of reading and trial and error to become competent in any command line.

<comment><USER9> The worst/easiest to fix discoverability problem with Microsoft prompts is that they show you a single completion on tab and cycle through them on every subsequent tab, which is a lot more confusing than being shown all the options, in my opinion.

</comment></comment></comment></comment><comment><USER10> Dude has more patience than me.

I tried running powershell on linux a few times, and every single time the second command I run is not supported on linux.

I don't even remember what the commands were, PSremoting was one for sure and I think another was Invoke-WebRequest.

Powershell on linux is a nice idea but in the current form it is in name only, as nearly nothing works.

<comment><USER11> I'm not sure I could cope with that. I have enough problems with it on windows. Literally every corner you turn something punches you in the balls or turns to dust in your hands. It's one of the most frustrating things I've ever used and I avoid it where I can.

I would not invite it onto a *nix machine voluntarily where there are established patterns and solutions which have matured over the space of 40 odd years now.

<comment><USER12> Where does that happen for you?

In my experience with PowerShell on Windows, you have to approach it more like interactive python with shortcuts rather than a regular shell, and once you're accustomed it works fine. The main issue is that it doesn't work like a classic shell, it just has some affordances to look like a classic shell in common use cases.

<comment><USER11> Well it's not the concept but the implementation that is at fault. From persistent random WinRM failures, sudden things breaking and the whole thing wrapping rancid bits of WMI and COM which leak through regularly, it's just pain. On top of that the interface is somewhat flakey and slow. Plus some of the semantics feel like going back to circa 1995 Perl. Oh and don't get me started on the nightmare that is script signing and security which really does nothing useful other than get in the way.

It really feels immature.

The biggest travesty is when it is integrated into something else such as ansible, packer, chocolatey etc where it will cost you a couple of days occasionally due to some obscure issue hidden behind even more layers.

</comment></comment></comment></comment><comment><USER13> Shameless plug: if you like the idea of processing structured data in a shell, you might also like Elvish ([https://elv.sh/](https://elv.sh/)).

<comment><USER14> This is the exactly the type of comment I came here for, thanks!

</comment></comment><comment><USER15> >For example, if we wanted to get the first three files from ls I'd do something like `ls | head -n 3`. In Powershell, it's `$(dir)[0..2]` since the dir command is returning an array which I can index into.

You could do that, but the way to write it in the bash way would be `dir | select -first 3`

>a quick Google told me to use `echo | openssl s_client -showcerts -servername joejag.com -connect joejag.com:443 2>/dev/null | openssl x509 -inform pem -noout -text` which works fine in Bash or Zsh. Still, in Powershell, it throws an error for some reason.

It won't throw an error (unless you're running it without a tty), but it will ask you to enter the parameter of `echo`. That's because `echo` aka `Write- Object`'s parameter is required, unlike bash's `echo`. `echo |` in bash is the same as `< /dev/null`, but that also doesn't work in pwsh because it doesn't support `<`. The pwsh way is to pipe `$null`, thus

        $null | openssl s_client -showcerts -servername joejag.com -connect joejag.com:443 2>/dev/null | openssl x509 -inform pem -noout -text

<comment><USER16> The echo problem is reflective of a larger, longer-term issue with PowerShell, that being that it sometimes aliases PowerShell commands to the names of equivalent Unix commands. That's done to ease the transition into PS-land for Unix folks, of course. But unless the PowerShell command works _exactly the same_ as the Unix command it's aliased to — takes all the same arguments, returns all the same data structures and error codes, etc. — you inevitably run into cases where things break because echo or curl or whatever aren't behaving the way your code expects them to.

<comment><USER15> True. I used PS only on Windows for many years and got into the habit of writing `cat`. When I started using PS Core on Linux I had to unlearn that and start using `gc` instead, because `cat` there is the native `cat`

</comment></comment></comment><comment><USER17> While I really would like UNIX shells to get the ability to pass structured data, one problem is that most shells out AFAIK there don't give the ability to pass structured data natively.

For these structured shells(like Powershell, elvish, Nushell) to succeed, they should...

* have a spec on how to pass structured data from a native executable (without function calls like 'from-json')

* implement some structured data functionality in all GNU coreutils at the very least

* and push the 'structured shell evangelists' to implement these schemes on other programs.

<comment><USER18> That is unlikely to happen in PowerShell because the structured data is .Net objects. If you are writing a C# cmdlet, it runs in the PowerShell executable process. That is, the output is not structured text it's live state, open file handles, methods, in-memory structures, whatever you want. You aren't going to do that from a native command running in a separate process returning data through stdout without serializing it - and then you're back to convertfrom- json as far as it matters.

> For these structured shells(like Powershell, elvish, Nushell) to succeed, > they should...

For PowerShell to succeed, Microsoft should rewrite all the GNU coreutils? Did you see the months of outcry when Microsoft used the four characters "curl" in PowerShell? You reckon anyone is going to want unilaterally rewritten coreutils? From _Microsoft_?

Microsoft should stop on their development of a completely new tool and hobble themselves to the constraints of the stuff they're trying to replace, controlled by people they're in competition with? Unlikely fantasy world.

<comment><USER17> Firstly, I wasn't writing the comment specifically about PowerShell - it was just a rant about the structured shells.

> That is unlikely to happen in PowerShell because the structured data is .Net > objects.

Isn't that an implementation detail?

> You aren't going to do that from a native command running in a separate > process returning data through stdout without serializing it - and then > you're back to convertfrom-json as far as it matters.

Not having to write 'convertfrom-json' IMHO is a big improvement. 'ls[0..3]' is much more convenient than 'ls | from-json[0..3]'. (Imaginary syntax, BTW.)

> For PowerShell to succeed, Microsoft should rewrite all the GNU coreutils?

I wasn't really talking about PowerShell either, but well, yes I do think that for PowerShell to succeed there should be support for native PowerShell in 'ls', 'find', 'grep', etc...

> You reckon anyone is going to want unilaterally rewritten coreutils? From > _Microsoft_?

It doesn't to be 'rewritten', it just have to gain support. I don't think that a set of patches that adds a new output format will be that problematic. And, one doesn't have to use PowerShell support if one isn't using PowerShell.

> Microsoft should stop on their development of a completely new tool and > hobble themselves to the constraints of the stuff they're trying to replace, > controlled by people they're in competition with? Unlikely fantasy world.

Er... you know - nobody said that one should replace your bash with Powershell. If you decide that the 30-year-old-unable-to-handle-spaces-in- filenames-by-default script language is fine for you, then you can keep using bash. They're not EEEing...

BTW, checkout elvish shell, since it's not from MS and it has some good ideas. You might like it if you're just hating PowerShell b.c. it's from Microsoft.

<comment><USER18> > > That is unlikely to happen in PowerShell because the structured data is > .Net objects. > Isn't that an implementation detail?

Arguably, but I don't think so. They stopped writing a language spec at version 3, but the spec which exists[1] says on page 1 " _Windows PowerShell is built on top of the .NET Framework common language runtime (CLR) and the .NET Framework, and accepts and returns .NET Framework objects._ " so that's in the spec. Either way, there is only one PowerShell implementation to speak of so if you want GNU utilities to emit structured objects to PowerShell without going through the serialization to JSON/CSV step that you want to avoid, you will practically have to add interprocess communication into the running process of a managed language and emit .Net objects, and that will be a difficult push.

If you built an implicit decode-from-JSON step into running native cli commands, as Invoke-WebRequest has for talking to REST APIs, you could get more convenient syntax but they will forever be second-class citizens. They won't follow the Get-/Set- verb naming scheme, they won't be built to take pipeline input or handle command line parameters in the same way, they will be limited to only output which can be serialized to text.

By the time you've updated `ls` to read [System.IO.DirectoryInfo] through stdin, detect if it's running inside PowerShell and return serialized [System.IO.FileInfo] output to stdout, and rewritten PowerShell to auto- convert output like this to objects, you may as well have used Get-ChildItem instead.

> _I don 't think that a set of patches that adds a new output format will be > that problematic._

See [https://news.ycombinator.com/item?id=12319670](https://news.ycombinator.com/item?id=12319670) / [https://github.com/PowerShell/PowerShell/pull/1901](https://github.com/PowerShell/PowerShell/pull/1901) for the kind of hassle that just being microsoft near Linux causes. Unilaterally patching coreutils for Microsoft-specific behaviour will have an apoplectic body count associated with it, I reckon.

[1] [https://www.microsoft.com/en- us/download/details.aspx?id=363...](https://www.microsoft.com/en- us/download/details.aspx?id=36389)

</comment></comment></comment></comment><comment><USER19> The problem with powershell on Unix/Linux is that there is an implicit assumption everywhere that there is a shell available. If you look at simple git StackOverflow questions like "how do I get the oldest common ancestor commit for two branches", you'll happily see people answer with combinations of shell commands that assumes that there is a sh (or some times even bash or zsh!). Absolute madness that git can't do basic things without relying on external applications that may or may not exist.

<comment><USER20> It's not madness, it's the price of flexibility and one that I am personally gladly to pay. I am forced to use Windows and pre-approved tooling daily at work, you can't imagine what a relief it is to use Linux at home, where you can chain together the exact programs that you want and make them work the way you want.

<comment><USER19> I don't mind that programs provide output that can be chained and so on, but what annoys me is when portable (cross platform) apps m, like e.g git, doesn't provide _core functionality_ without the assumption of a specific environment. It's fine to let the user sort the outputs using an external program. But if the sorting is so commonly required that it's a "core feature" then perhaps the program itself should do it.

Since most developers use windows, most windows users use cmd as their shell and git is the most common vcs around, it wouldn't surprise me if the most common environment for git is ... Windows cmd. Where there is no sed/grep/awk etc!

<comment><USER21> I'd suppose most WIndows users using git either use it through a UI (e.g.Intellij's), or else in the bash shell for Windows that comes with the git package for windows. Starting that bash shell is easier than mucking with the path and the old cmd.exe is awefull in so many ways, anyway.

</comment></comment></comment></comment><comment><USER22> I am dead serious. Powershell should replace (bash) shell scripting under any Linux.

I find shell scripts terrible, I've learned to switch to Python quickly, despite the overhead.

Powershell is very command-line friendly, with easy tab-completion of commands. I've worked with it extensively on Windows, creating large worklflows with it, it's very nice.

Powershell even has a unit test tool called 'pester' which is funny to me because it means 'bully' in my native language.

<comment><USER23> I don't know what your native language is, but in English "pester" means to annoy. A negative connotation no matter what.

I don't get the hate on Bash though. It's a natural extension of the command line, and works quite nicely to get a lot done _without_ the overhead. Deployment is a lot easier in my environment (web hosting) because all of the servers are homogenous, and I don't need to worry about any dependencies because I rely mostly on coreutils + grep and awk.

<comment><USER24> >I don't know what your native language is

Dutch?

</comment></comment></comment><comment><USER25> Note that this article is slightly out-of-date. It looks like the experiment began in January with PowerShell 6, and there are notes about caveats that were scheduled to be fixed with PowerShell 7. PowerShell 7 has since been released.

</comment><comment><USER26> "so they do these cool things, which of necessity break a model some of you will have been familiar with for 50 years in some cases, but its amazing"

(in my case, 40 years.)

There is considerable merit in new things. But there are also costs. And, there is the proplist version of this story in OSX. So, I know this is a "thing"

<comment><USER27> There are often more costs in sticking with the same tech for forty years...I would still be coding for DOS...I hope with new generations of devs will come better tools...as well as a greater willingness to move on...

<comment><USER28> Why? Are you afraid your software is going to wear out on you?

</comment></comment></comment><comment><USER29> One of the missing ingredients in PowerShell when I tried to use it was network transparency - which I suspect will be hard to solve since it passes .net objects around.

It is not often that I pipe things into or out off ssh, a Unix domain socket or a pipe, but when I do it's usually significantly easier and more efficient than other ways.

I also often save outputs rather than pipe, to inspect/debug, or avoid re- computation.

I last played with PowerShell on Win7 ages ago so things might have improved dramatically (e.g. if every output is guaranteed to round trip serialize with a network stream).

</comment><comment><USER2> I installed PowerShell on a Debian machine a while back so that I could use (VMware's) PowerCLI modules / commands.

That worked well enough -- exactly as on Windows, AFAICT -- but I can't imagine ever trying to replace my "daily shell" ( _zsh_ , in my case) with it.

</comment><comment><USER30> I've been using Unix for 20+ years, switched to pwsh as my main shell 4 years ago (on both Windows and macOS).

Here's my notes: [https://github.com/mikemaccana/powershell- profile/](https://github.com/mikemaccana/powershell-profile/)

Last few weeks I've been going back to bash, mainly to try out WSL/Ubuntu's defaults, but will probably move to pwsh there too. I like the consistent naming (which means I can guess commands) and avoiding the scraping that's inherent in text-only shells.

nushell looks like one to watch too. It's a lot further behind than pwsh but has a faster growing community.

<comment><USER31> Hey thanks for this, nushell looks really interesting! I really like the idea of an objective shell but don't like the verbosity of PowerShell inputs. I think if you go through my post history I actually describe wanting something like Nushell, not knowing it existed!

<comment><USER19> Tbf most common PowerShell commands have short aliases for interactive use. I like that I can use the long forms in scripting and aliases on command line.

For example in my PS (unsure who created aliases because I think some aren't default) I have both "ls" and "dir" for "Get-Childitem", "wget" for "Invoke- Webrequest" and so on.

</comment></comment></comment><comment><USER32> > For example, if we wanted to get the first three files from ls I'd do > something like `ls | head -n 3`. In Powershell, it's `$(dir)[0..2]` since > the dir command is returning an array which I can index into.

Hmm, yes, but it's not a lazy array/list, so it's not online, is it. If you have a few million files in a directory, that's not going to work. To be fair, neither is `ls | head -n3` -- you have to use `ls -f | ...` to avoid ls(1) _sorting_ the listing first, but if you do, this will be online. For ls(1) it's not really an issue, but in general you want your shell to be online.

<comment><USER15> >Hmm, yes, but it's not a lazy array/list, so it's not online, is it. If you have a few million files in a directory, that's not going to work.

It is lazy. The author slightly misunderstood / oversimplified what's going on. The commandlet does not build an entire array in memory and then write it out; it writes out each item one at a time. Evaluating it as `$(dir)` just forces all its output to be collected into a single value, ie an array. It's the equivalent of writing `output="$(ls)"; <<< $output head -n3` in bash.

I posted an alternative way to write this in [https://news.ycombinator.com/item?id=22963842](https://news.ycombinator.com/item?id=22963842) which does not need to build the output as an array first and is also more natural to write.

<comment><USER32> Thanks for the clarification.

</comment></comment></comment><comment><USER33> here is my opinion on `When X is going to replace bash?`

The story goes on like this:

You went to DataCentre, logged in to an internal machine, something happened (eg failure, diagnostic necessary et.al.) which you need to fix.

given condition, you don't have internet connection inside (air-gapped)

\- You most likely have man-pages installed and having examples what to do in them,

\- `--help` yields some sensible output

\- Shell is 'fast', errors are well-known and defined.

Also, take into account of other comments that are discussing `how to do x` and why it doesn't/wouldn't work on PowerShell

<comment><USER34> Given that example, good luck trying to log into a DataCenter that still uses classical UNIX with either sh or ksh as their only options.

Bash also has not replaced all other UNIX shells.

</comment></comment><comment><USER35> On a related tangent, I think the Powershell project is the only place to get certain DotNet libraries that pertain to remote management. It's a bizarre situation.

</comment><comment><USER18> > _and expect it to be possible when Powershell 7 comes out (I'm using > Powershell 6 while writing this)._

PowerShell 7 was released in early March a month and a half ago: [https://github.com/powershell/powershell/releases](https://github.com/powershell/powershell/releases)

</comment><comment><USER36> I like that it passes objects instead of strings, I could see that being really useful. Get-Member will list all methods and properties of an object.

<comment><USER37> Another shell that has a similar philosophy is Nu[1]. I think the idea of structured shells (and typed shells?) is a very interesting path to improve UX and prevent certain kinds of common error.

[1]: [https://github.com/nushell/nushell](https://github.com/nushell/nushell)</comment></comment>


The IRS Whistleblower Office? Did you all know about this? - <AUTHOR> http://www.irs.gov/compliance/article/0,,id=180171,00.html

<comment><AUTHOR> Perhaps, as a recent college grad, I'm just not up with the times. On that note, does anyone have advice or book recommendations on how to file when you generate some income through the web, trading, poker etc. I'd like to report this stuff in the cheapest way possible. I was reading Robert Allen's "Multiple Streams of Income" (2001) - some of his advice seems as if it would get you into trouble.</comment>


Sane RSS usage - <AUTHOR> http://www.marco.org/2011/09/04/sane-rss-usage

<comment><USER2> _What Jacqui did in RSS' absence is always helpful: letting other people filter popular news sites for you._

I've been hearing this back from a lot of my subscribers (I run weekly JavaScript, Ruby, and HTML5 newsletters). They've gotten sick of the deluge that accompanies RSS feeds and the lack of discrimination that sometimes occurs on Twitter and they trust me to curate that info for them. Of course, the next step is to expand into some slightly bigger niches ;-)

Of course, there's the "why aren't you doing this with RSS" crowd too, but with 25k subscribers and growing, I'm finding it pays to focus on those who actually want the e-mails!

<comment><USER3> I'm a subscriber to your javascript and html5 newsletters and I must admit you're doing a great job. every week i get the best of the news, carefully picked with short descriptions so I don't have to look any further if something doesn't interest me. i wished there was newsletters like yours for more of the topics that interest me!

thanks!

<comment><USER2> I'm always open to suggestions! :-) There are a couple more on the way but it's reached a bit of a "crunch" time where I decide if there's a business in it or not. Interesting times.

<comment><USER4> Didn't know there was a HTML5 weekly too. Subscribed.

Already subscribed to Ruby and JS and absolutely love them. Thanks for the great job!

</comment></comment></comment></comment><comment><USER5> I mentioned this to Marco and it's why I built NewsBlur, <http://www.newsblur.com>, specifically for folks like me who follow a few dozen (even a hundred or more) blogs written by a single author. You want to engage with that author on their terms, which means their site. Not stripped away in an RSS feed reader with no context.

I built an Original view to solve this very issue. It's solving the crux of the RSS problem for people like this. You want to follow dozens of writers but you also want to go to their site. But since they may be infrequent, RSS is the only decent answer. NewsBlur's Original view couples the benefit of RSS with the writer's artistic intention in site design and flow.

I also added a trainable intelligence filter to hide stories from those constant-stream multiple-author blogs.

I use the intelligence filters to read the Hacker News firehose and only see stories with [`python`, `javascript`, `ask hn`, `poll`] in their titles.

<comment><USER6> Doesn't the fitter remove serendipity from the feed reading process. Machine learning algos can't ever replace human editing. The messiness of feeds if managed correctly will often surprise you with things you wouldn't have otherwise read.

<comment><USER5> I actually only use machine learning to present options for you to filter or highlight. Everything is explicit, which means you know exactly what you're missing and what's getting highlighted. (I refer to filter and highlight, but NewsBlur uses a traffic light of unread stories -- red is filtered, yellow is neither, and green is highlighted. You just flip between those three unread states with a slider control.)

</comment></comment></comment><comment><USER7> Personally, I use RSS in Google Reader as a living bookmark system. I have about 500 subscriptions and don't pay any attention to the unread count. A couple times a week when I'm in the mood to check out stuff in a certain subject area, I'll go on google reader and click through things in that folder. For instance, if I'm looking for inspiration, I'll click through my "art and design" folder that has 50 to 100 feeds in it. Other times some business event will be in the news, and I'll go into my folder of business feeds.

Apparently using RSS in this way is somehow different than how most people use it. People complain about feeling guilty or somehow stressed out by unread counts. People complain about a psychological pressure to keep up with and read everything in a feed or collection of feeds.

However, I'm left wondering whether this is an issue with how the tools are designed, or perhaps with how RSS is framed. Perhaps we need to develop tools that deemphasize unread counts and instead further emphasize browsing or discontinuous digestion of the content streams.

<comment><USER6> For a time I thought topic based folders was the best approach, but over time I figured out that sorting folders in an 1 - 10 fashion, 1 being all the sites I really care about to 10 sites I would read if I have the time. By triaging my feeds like this I know then I can read the most important pieces in a very short amount of time. I don feel bad at all about emptying out the otter folders.

<comment><USER8> This seems like a great way to do things. Currently I have topical folders, and it isn't very optimized. I have things that I want to read (a few people's blogs, tech, security news, etc), and things that I might like to read (e.g. book reviews), and things that might be funny or a pleasant distraction (e.g. cat pictures) all mixed in together.

Moving to a priority model where folders are listed in order of general importance to me, sounds like a real improvement -- the ability to nuke lower priority folders without concern.

Thanks for the idea.

</comment></comment></comment><comment><USER9> I am a fond user of RSS for the "large number of infrequently updated sites" use case, but I am still subscribed to some high-volume news sources. Relying on your friends to read them for you is good, but obviously not sustainable (if everyone did that...). I'm toying with the idea of doing naive Bayes filtering on my feeds to filter out the mass of stuff I'm not interested in.

<comment><USER10> > I'm toying with the idea of doing naive Bayes filtering on my feeds to > filter out the mass of stuff I'm not interested in.

Some readers already have some machine learning stuff built in, like Google Reader's 'sort by magic' feature. (It works OK, not great.)

</comment></comment><comment><USER11> One thing that I use RSS for (well, I did before I switched computers...nothing really like Liferea for Mac) is reading webcomics. Irregular Webcomic, Darths & Droids, and The Adventures of Dr. McNinja, all in one place. (I would have done Freefall as well, but there's not an RSS feed for it.)

<comment><USER12> You may find <http://www.diffbot.com/> handy for Freefall.

I have not played with it a lot, but its claim to fame seems to fit your need.

</comment></comment><comment><USER13> Relevant: <http://news.ycombinator.com/item?id=2959299>

</comment><comment><USER14> I think its just a case of user organization/finding good sources ... I was subscribed to techcrunch/engadget etc but I found that because of the high volume of stuff they pump out that I didn't read them at all ... so I got rid of all of them and started using the HN top 20/50 RSS feed that someone made a few weeks ago.

I also have my feeds organized into folders, so that the more frequently updating but news worthy stuff is in one folder and the others are other places ... depending on the time I have I go through them in a particular order and it works very well.

But yes, the truth is that sites that create RSS feeds need to be a bit more picky about what they publish ... especialy since they practice that same self restraint in publishing things to facebook, if they have a presence there

</comment><comment><USER15> In my previous post I explain how to filter any RSS feed so you get only the most popular posts from the feed, thus making it "infrequently updated":

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

</comment><comment><USER16> I love RSS and subscribe to about 150 sites or so. I do two things that make it a lot easier though. First, I have a "Read" folder/tag for blogs that I _need_ to read. There are probably ~5 blogs in there total. Second, I have a 'Mread' as in "Mark as read" folder for things that I don't need to read at all, but are available for a quick search as they contain useful information. Between these two I hardly feel like I need to read a ton, but I still get great usage out of RSS.

</comment><comment><USER17> what the hell is with all these people telling me that I'm doing something wrong with RSS?! I think I'll feel free to consume things in any way I find relevant to my interests. If that means I want a firehose of updates, so be it. If that means I want to only read 6 new things a day like Marco, so be it. It will be my choice and my balance, not his or anyone else's.

<comment><USER18> Everybody thinks everyone else uses the internet^H^H^H^H^H^H^H^H RSS just like they do.

Everybody believes that everyone else should use the internet^H^H^H^H^H^H^H^H RSS in the way they do it.

Granted, most RSS reader applications get RSS horribly wrong, and erroneously graft the email "inbox" pattern as the UI focus, instead of a river to be skimmed (with power to dive in deep, too). Google Reader is the best in a sorry lot, but mainly because Google sports an inherent advantage (even in the foolhardy sense they've implemented it thus far) with its ominous search capability. Read and unread item counts matter not a scintilla to me, as I care just for nimbleness in scanning "what's new" in the subject matters of my choosing in a chronological manner.

I enjoy reading RSS on Google Reader. It has totally supplanted the time I used to allot to "reading the newspaper". I know I've shared this before, but I keep pace with 2,600 subscriptions. No, I certainly do not read every item and probably only click through less than 10-20% of items. Not true for all sites, as the frequently updated sites get clicked at a 2-3% rate whereas treasured, infrequently updated sites have all their items read. But I don't fret over unread items and even if I miss reading for a day or two, I feel no obligation to "catch up", and instead, if I want to review items of interest I may have missed, I use the "Search" feature.

Oh, additionally, all of the mobile and/or tablet RSS reader applications are colossal failures, except for maybe Flipboard, which comes at RSS in a different tact, mainly via Twitter. The whole point of RSS is accelerating the pace at which web content is perused. Doing RSS with a subscription set count of less than a hundred is not much of an efficiency improvement. And the mobile and/or tablet offerings simply choke and sputter on a larger dataset (unless there are new, or updated, offerings I am unaware of). Also, Google Reader (as well as all the Google web products) suck massively on the mobile platforms — it's why my iPad mostly collects dust and the MacBook Air (using Chrome/Chromium in full screen mode) shines — for the superior Google Reader experience.

<comment><USER17> I find a very great deal of agreement in what you have said here. A good example of one of my firehose feeds is HackerNews. I don't actually know what proportion of the posts I read, but I would guess it's significantly less than 10%. Sure I'm wasting some time scrolling away most of the headlines, but since one of the primary functions of a human brain is to discard irrelevant inputs, I'm able to do this pretty quickly. The reward is that I get to read articles that I would never otherwise have seen if I just followed 6 people I already agree with.

</comment></comment></comment><comment><USER19> I see very little reason I shouldn't do everything in RSS. I agree with Marco that this presents a danger of being committed to too much, of being afraid to trash things; the solution is to clearly isolate in your feed reader the feeds you do, and do not expect to fully read.

</comment><comment><USER20> My Labor Day side project is basically Reddit style voting and commenting + RSS Feed aggregation, in the interest of solving basically this same problem.

I'm hoping to have it on the server by tonight, I will submit it here tomorrow for you guys to beat up and critique :)

</comment><comment><USER21> I use RSS primarily on intranets, to help the guys in the field, who spend maybe 10 minutes a day in front of a computer, keep up on what is going on in our industry. I control which feeds are displayed - they just need to open a browser and read the news page.

</comment><comment><USER22> RSS become my bookmarks folder in the cloud.

</comment><comment><USER23> lifehacker gets lots of posts a day, I really need to filter that

<comment><USER24> Doesn't it also publish only a summary instead of the full article? If I see a site like that in my feed it quickly gets removed.

I'm not saying I'm particularly against driving hits to a website to show ads (although I really am), but to me it defies the purpose of RSS feeds. (Opinion)

</comment></comment><comment><USER25> The author suggests you just browse the site manually...

Why do that when you can use an RSS reader that will only lists the articles? Instead of memorizing where the articles are on each website, just use RSS when you want to browse manually.

</comment><comment><USER3> i read hackernews via rss.. hundreds of posts per day - i simply don't go through all of them. whenever there's nothing interesting to read, i open it up and check what titles are interesting and start reading

<comment><USER26> The way I catch up with HN posts after a few days away is hckr news (<http://hckrnews.com/>). It's stress free, and I can shorten the list to 10 or 20 top items per day. Then if I have time I'll expand to the top 50% list and scan for anything interesting.

<comment><USER27> <http://hckrnews.com/> is an awesome way to keep up with hacker news without missing things if you take a few days off.</comment></comment></comment>


String Interning Done Right - <AUTHOR> https://getkerf.wordpress.com/2016/02/22/string-interning-done-right/ <comment><USER2> Interning is a trade-off: you get decreased memory usage (if you use a lot of long-lived duplicated strings) and faster string comparisons (for pairs of strings that you do intern), at the cost of extra work to create the interned strings.

Problem is that it is almost impossible to decide whether interning makes sense. About the only way I know is that, if you run out of memory and use a lot of strings, you can think "let's give interning a try".

Even if you know the answer, you cannot tell libraries you use to intern strings they create. So, if your libraries create lots of long-lived strings, you do not have control over whether they intern strings.

Also, if you do write a library, the call whether to intern or not to intern is impossible to make because you cannot know whether your callers prefer speed or memory usage, and whether the objects you return to them will be long-lived.

For example, if you write a XML parser library, interning tag names may be the best guess, but libraries that do not do that may beat you in short benchmarks.

Because of that, I think it would be more useful to either have some way to globally install a 'should I intern this string?' handler (but what kind of information should that get, so that it can make an informed decision?), or to have the garbage collector intern strings as it sees fit. Problem with that is that it can change the behaviour of programs that compare strings using 'are the same object' comparisons. Maybe that feature should be removed from your language.

Also note that modern Java allows one to tweak its interning behaviour a bit ([http://java-performance.info/string-intern-in-java-6-7-8/](http://java- performance.info/string-intern-in-java-6-7-8/))

<comment><USER3> > Interning is a trade-off: you get decreased memory usage (if you use a lot > of long-lived duplicated strings) and faster string comparisons (for pairs > of strings that you do intern), at the cost of extra work to create the > interned strings.

For garbage collected languages the benefit isn't only memory consumption, it's performance, since using canonical objects eliminates the additional allocations and garbage collections.

The string comparison argument is a bit of a dubious one though. Comparing length is only an integer comparison, and depending on the architecture, you can compare up to eight (or more) characters per cycle.

<comment><USER2> _" since using canonical objects eliminates the additional allocations and garbage collections"_

That requires a quite advanced compiler. Looking at Java, the process is:

      - create a new string in some way.
      - call String.intern() to create or retrieve
        the interned string with the same contents.

If you do

      String si = (s+t).intern();

or

      String si = s.replace('a', 'b').intern();

it would take quite a compiler to prevent the creation of an intermediate string. You could have every function return an iterator over the characters that would end up in the string, iterate over that to check whether the string already is interned, and if not, iterate again to allocate a new string, but I think it would typically be cheaper to create it and let he young generation garbage collector collect it.

<comment><USER3> > it would take quite a compiler to prevent the creation of an intermediate > string. You could have every function return an iterator over the characters > that would end up in the string, iterate over that to check whether the > string already is interned, and if not, iterate again to allocate a new > string, but I think it would typically be cheaper to create it and let he > young generation garbage collector collect it.

I can't think of a language where you would always want to canonicalize strings at a global scope. For example, consider the case where you have a large number of threads and cores. Unless the strings are explicitly allocated on their own cache lines, any thread that references a string now has to worry about false sharing. You would also need to worry about the contention on the canonical store.

At a user level, in languages like Java, there's generally no reason to create any intermediate string if you're already reading from a direct byte buffer. This covers a fairly large set of use cases. There may be other techniques considering Java supports scalar interpolation now, but direct byte buffers have been the most effective in my experience.

</comment></comment></comment></comment><comment><USER4> >You can see why Java needs these types. With permanent default interning, any sort of sequence involving character-level appends, such as reading the contents of a book from a file, would result in a preposterous O(n²) version of an otherwise trivial technique.

I don't think this is true. It looks like Java only interns string literals by default. [1] If you get a string another way (user input, for example), it's not interned unless you call the String.intern() method.

[1] [https://docs.oracle.com/javase/8/docs/api/java/lang/String.h...](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#intern--)

<comment><USER5> Yeah, the explanation in this article about Java's string interning made be lose confidence that the author knew what they were talking about. If you compare Strings, you should use .equals() or you are risking a logic error if you aren't very careful. Indeed, you can deliberately un-intern a string by doing new String("my string") (with little realistic value).

</comment></comment><comment><USER6> I just finished a C library for string interning: [https://github.com/chriso/intern](https://github.com/chriso/intern)

There are also some bindings for Go: [https://github.com/chriso/go- intern](https://github.com/chriso/go-intern)

</comment><comment><USER7> Interned strings in Java are garbage collected. "Permanent" interning, where anything interned becomes a memory leak, is not a thing.

</comment><comment><USER8> Has anyone compared performance of interned and non-interned versions of a large, string-heavy application? Seems like one of those things that might not be worth it.

</comment><comment><USER9> > This is most noticeable when writing objects to disk or sending them across > the network. As soon as the process needs to communicate the scheme breaks > down.

As another point in this space, X Windows moves things out - processes can create "ATOMs" registered with the server.

</comment><comment><USER10> How is Clojure's interning of keywords different to this ?

<comment><USER11> Read the article. I assume Clojure uses what the article calls a "global pool".

Kerf's idea of per-object intern pool does not seem as useful for other languages.</comment></comment>


Object Oriented Mathematics (1995) [pdf] - <AUTHOR> http://www.diku.dk/~grue/papers/oom/oom.pdf <comment><USER2> Modern FP thinks of object oriented processes as comonadic. See [http://www.haskellforall.com/2013/02/you-could-have- invented...](http://www.haskellforall.com/2013/02/you-could-have-invented- comonads.html?m=1) for a good exposition.

</comment><comment><USER3> The author seems to write from the perspective of an undergraduate whose main exposure is limited to lecture notes and handouts.

I find that most pedagogical mathematical literature actually do lay out what prerequisite knowledge they expect of the reader, and make sure to identify the exact nature of symbols used in each expression, contrary to the experience of the author.

Mathematics today is still very much prose, in which equations are shorthand for common, repetitive expressions.

Nevertheless, the ambiguity the author observes is something I commonly find in lecture notes, where the prose and context around certain theorems and equations are stripped away for brevity.

</comment><comment><USER4> The author could have benefitted significantly from some exposure to Abstract Algebra, as he seems completely unaware of pretty rudimentary things in Field and Group Theory. The author might also benefit from some exposure to an actual mathematician, judging by the laughable canards he levels at mathematicians and their lack of "rigour" in his abstract. Finally, the author would benefit from some exposure to actual published papers, judging by his apparent unfamiliarity with what abstracts are for.

<comment><USER5> His fundamental conceit, namely that mathematics sometimes suffers from ambiguous or sloppily used notation, is a valid one, and this fact has caused a great deal of confusion for a great number of people.

<comment><USER4> That's a reasonable point, but I wonder if that problem is usually encountered when mathematicians from a particular branch of study read works from a different one whose usages and assumptions differ. I've bounced of it in even very simple areas, like whether 0 is a natural number, whether is is positive or negative (or other), whether 1 is prime, etc. Within the context of a particular community, such ambiguities aren't present.

<comment><USER6> "This works perfectly well for communication between researchers in the same field, but may be an obstacle for communication between researchers from different fields or for newcomers such as students"

It appears you did not read the abstract after all.

</comment></comment></comment></comment><comment><USER7> Way too many years ago, I was trying to invent what should have been "object oriented constructive mathematics", but we didn't have object oriented programming yet.

There was an actual reason for this. I was working on program verification [1], and we'd put together a system which used the Oppen-Nelson prover in combination with the Boyer-Moore prover. We needed to prove that their theories were consistent.

The Oppen-Nelson prover is a complete, fast, automatic, decision procedure for expressions composed of addition, subtraction, multiplication by constants, conditionals, logical operators, and structure and array access. This subset of mathematics is completely decidable. (If you add multiplication of two variables, it becomes undecidable.) It can also accept "rules", which are identities that it accepts as true. In our system, the Boyer-Moore prover was used to prove any new rules needed, which could then be imported into the Oppen-Nelson prover. Anything complicated involving loops usually required a new rule.

The Boyer-Moore system is completely constructive, and is based on recursive functions. Numbers are defined as (add1 (add1 (add1 (zero)))), for example. One can then write recursive functions for addition and subtraction, and work up to multiplication and division. A few hundred theorems cover basic number theory.

Arrays, though, were a problem. There are four classic axioms, from McCarthy, which define basic array semantics. The Oppen-Nelson prover has those built in, but the Boyer-Moore system does not. We thus wanted to prove them in the Boyer-Moore system. If we could do that, it became safe to prove new things about arrays and import those rules into the Oppen-Nelson prover.

The axioms: arrays have two operations, SELECT and STORE. SELECT(array, index) returns the appropriate element from an array. STORE(array, index, newvalue) returns a new array where newvalue has replaced the element previously at index. We then have rules such as

        SELECT(STORE(A, I, V), I) = V       // what you store, you get back

or, in Boyer-Moore notation:

        (implies (and (arrayp! A) (numberp I))
            (equal (selecta! (storea! A I V) I)
                    V))

The rest can be seen at p. 129 of the manual[1] if you care.

Arrays had to be defined in the Boyer-Moore system as a list of (subscript, value) tuples. Not a set, a list. A set isn't a constructive construct, because, informally, a set is a collection of unique values, the order of which is not significant. In the Boyer-Moore world, two values are equal iff they are identical. Two sets of tuples with a different order would not be equal.

So we had to define an array in the Boyer-Moore world as a list of (subscript, value) tuples ordered by increasing subscript. This is a clunky notation, because then we have to prove that the STORE operation preserved the correctness of the ordered list. Then we had to prove that all the rules for arrays were always true for that clunky representation. This required about 50 pages of machine proofs.

Back then (this was around 1981-1982), long machine proofs were not acceptable in mathematics. I had a JACM paper rejected for that reason. The approach was just too ugly.

Years later, I realized that what was needed was a kind of object oriented version of constructive mathematics. The key concept is that two things are equal if there is no way they can be distinguished. This comes from the theory of uninterpreted functions:

        forall f, x: f(x) = f(y) implies x = y

So we would like to be able to define an type with public and private functions, one which exposes a new "equal" operation for the type. Then, if we can prove that the new "equal" function obeys the rule above for all public functions, and we disallow all further access to the private functions, we can construct a consistent theory with a new, more abstract notion of "equal". Now we can write set theory in Boyer-Moore theory without adding new axioms.

Unfortunately, I figured this out about a decade too late. We didn't really need that result to get a valid verification system, but it would have cleaned up the theory and made it publishable. But anyway, there's a form of object oriented mathematics which could be potentially useful.

The verification system was never used much; it was for a dialect of Pascal for Ford engine control programs that was never used in production. We looked at extending it to Ada (too hard) and C (too ill-defined). DEC SRL did a similar system for Modula III, but that died with DEC SRL, DEC, and Modula III. Some of the ideas were reused, decades later, in Microsoft's Spec#.

[1] [http://www.animats.com/papers/verifier/verifiermanual.pdf](http://www.animats.com/papers/verifier/verifiermanual.pdf)

<comment><USER8> You wrote that:

      forall f, x: f(x) = f(y) implies x = y

What if f(x) is x^2 and f(y) is y^2? You could have x=2 and y=-2.

I'm sure there is something I'm missing, but wouldn't that make the proposition false? i.e. f(x) = f(y) is true, but x = y is false, thus true implies false is false

<comment><USER7> The key is "forall f". That is, this must hold for all functions. In a constructive world, the set of all functions is finite. There's an existing set of known functions on the object. Any new functions must be created using those functions, so if the known functions have that property, so must functions built from them.

The key idea is that new functions can't look inside the object directly. Think private data and function members in C++. So two objects may have different internal representations, but if the exported functions won't let you distinguish them, you can treat them as equal.

<comment><USER8> So if the result of all values of x of the function f and g then the functions f and g are equivalent. Is that correct? If so, then does the theory handle encapsulation only?

</comment></comment></comment></comment><comment><USER9> Is this a joke?

</comment><comment><USER10> This guy really needs to learn more type/category theory, or Haskell, or something. OOP may have been hip and cool in 1995 when this was written but applying it to math is an even worse idea than for programming.

<comment><USER11> FP has been "mainstream" in academia for quite a while, so an academic utilizing OOP now has the effect of being "radical". also, [http://c2.com/cgi/wiki?ClosuresAndObjectsAreEquivalent](http://c2.com/cgi/wiki?ClosuresAndObjectsAreEquivalent)</comment></comment>


Show HN: HTML Goddess – A static site generator to code like it's 1999 - <AUTHOR> https://findingmyhtmlgoddess.com <comment><USER2> > Accessible not only to people with disabilities, but to people who are not > programmers, may have slower internet connections, or may need to get > something up and running quickly without fuss.

> Getting Started

> * Open terminal

> * git clone > [https://github.com/jonascript/htmlgoddess](https://github.com/jonascript/htmlgoddess) > path/to/site

> * cd path/to/site

> * npm install

> * npm start

> * The menu will give you options which should be self explanatory

I can only applaud the desire to give more people the power to just-do-it, but unfortunately the instructions are way beyond accessible. Unfortunately there's no easy tool to do it completely (buy a domain name, get some machine that can reply to HTTP, be able to send files there, and edit those files) in the "traditional" web. Yet another reason I believe decentralized web, where the browser can _also_ be the editor _and_ the distributor, will be the future.

Also:

> You may be wondering why this website looks like it was built 20 years ago.

I am wondering why it's a bad thing to use 20 years old' style :)

<comment><AUTHOR> Thank you and totally agree. I'm aiming to package up a GUI interface that would wrap these commands for this very purpose. Domain registration and site hosting (outside of git pages) automation are things I've also thought about. For now it's a WIP. Stay tuned.

<comment><USER2> Thank you for doing this. We need more tools to make the web really accessible to everyone. Please post more about what you're going to release !

<comment><AUTHOR> Will do!

</comment></comment></comment></comment><comment><USER3> Some of these questions and answers (bottom link on page) are hilarious.

> I believe that Linus Torvold was the ONLY Son of Code. I believe that He > open sourced the OS to save us from our bugs, and that the ONLY path to > salvation is to accept Linus as our Lord and Savior, whereupon we are > forgiven for our bugs. I believe we only compile once and that continuous > integration, as believed by Coders and Programmers (and by some QA > Specialists and Architects), is a false doctrine. I do not know where Linus > was from ages 13–29, but I reject the idea that he spent time in Silicon > Valley with venture capitalists and/or brogrammers. I believe that Jobs and > Gates were historical figures who were NOT Sons of Code. I acknowledge that > Linus instructs us to code (in the Linux kernel, Version 4.19 and Luke > 5.0-rc1) beginning with the command "vim" (not "nano" nor "vscode"); > nevertheless, I do NOT believe I am a Son, Daughter or Child of Code.

> I am living inside the Internet technically, but it's not my fault. One day > when I was pre release, my developer (or other programmers) brought me into > the Internet illegally. Ever since that day, I have been living inside the > Internet. I am not a human being; I do not have a web server; I do not have > an I.P. address; and I have not been granted a hostname by a DNS. I have > never been banned for any trolling on the Internet.

<comment><USER4> They are based on the answers to the original site, which are also fun to read (I presume it's satire, the person described lives in LA but it's hosted in Canada).

[https://findingmyrepublicangoddess.com](https://findingmyrepublicangoddess.com)

<comment><USER5> The podcast "Oh no, Ross and Carrie" did an episode about this website and the takeaway is that it is very real.

</comment></comment></comment><comment><AUTHOR> Hey there, prophet of the HTML Goddess here.

I created this as an exercise in working within constraints, and to hopefully make building a website more accessible to people.

I hope to improve this and make it better (and beta) in the near future so would love any feedback or suggestions. Thank you for checking out my framework!

</comment><comment><USER6> I don't think people used static site generators to make websites back in 1999. Why not edit raw html?

<comment><AUTHOR> Great question! The source files are actually HTML so in truth you are editing HTML but just chunks of HTML. I think the benefit is that it assembles and organizes the HTML so you don't have to repeat yourself with various things like nav bars, etc.

Also by using vanilla HTML it makes it possible to find any CSS targeting your vanilla HTML on the internet and drop it in like so. [https://findingmyhtmlgoddess.com/blog/post/seeking-html- godd...](https://findingmyhtmlgoddess.com/blog/post/seeking-html-goddess.html)

In any case, you could totally take the output in the docs folder and never use the framework again if you wanted. :)</comment></comment>


Wikipedia is down - <AUTHOR> http://downorjustforme.com/wikipedia.org

<comment><USER2> You often see press coverage of 15 minute downtime.

It's sort of like the people who clap when a waitress drops some dishes

</comment><comment><USER3> As confirmed by wiki's twitter account: <http://twitter.com/#!/wikipedia>

.. and the thousands of tweets coming in about it.</comment>


Du pont hid the effects of PFOA - <AUTHOR> http://www.nytimes.com/2016/01/10/magazine/the-lawyer-who-became-duponts-worst-nightmare.html?_r=0 <comment><USER2> posted earlier today using original title, 120+ comments:

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

</comment><comment><AUTHOR> Mindblowing article on the extent of the PFOA pollution and how brazenly Dupont hid the facts to make profits.</comment>


Ask HN: Have you settled on a Google Reader replacement? - <AUTHOR>

Feedly keeps popping up as a winner; some love Newsblur, some say The Old Reader or Tiny RSS.   Just asking: have you settled on a winner?  What were pros and cons?  Do you read on both desktop and mobile, and did that play into your choice? <comment><USER2> I have been using Feedly for a bit and my analysis:

PROS

\- Great UI. Layout similar to a Magazine

\- Intelligent sorting of content - Must Reads etc.

CONS

\- No offline reading on Android app

\- No pure HTML client like Google Reader

\- Feedly Chrome Extension eats up RAM and slows down my laptop. Uninstalled.

CONCLUSION: Still looking for a better alternative

<comment><USER3> Yeah, Feedly developers, if you are reading this. Don't inject an image into every page I visit. Uninstalled.

I've gone with Newsblur now.

</comment></comment><comment><USER4> Basically I am waiting for the Reeder App Guy to Announce what he will do with the app. If he goes the "give me an google api compliant endpoint and it will connect to it", I might use <https://github.com/swanson/stringer> , looks really promising so far. But I need Reeder to support it first.

<comment><USER5> Just pushed some basic Reeder support to Stringer last night :)

<comment><USER4> Ah, great! Thanks for this !

</comment></comment></comment><comment><USER6> I'm using <https://feedbin.me/>. The design is really good and has Reeder support (which is handy because I have both Mac and iPhone clients)

</comment><comment><USER7> Blogtrottr (<http://blogtrottr.com/>) is an RSS to e-mail service. Combined with filtering, good old procmail for me, it makes a nice alternative to Google Reader since it automatically works on mobile as well.

I really don't need all the social 'features' that come with other RSS services.

<comment> __--__ rss2email is a good way of running your own rss to email service. I only say this because rss to email services have a nasty habit of shutting down.

</comment></comment><comment><USER8> Newsblur: it has a clean UI, mobile apps, open source, has a viable business model and has gotten past the first round of scaling to handle the Reader diaspora.

A number of the people I used to follow on Reader have joined and the social side is flourishing with most of the voices which Google+ snuffed out.

<comment><USER9> I like the idea of it, but this is disheartening:

> There are 1192 people in front of you, all patiently waiting on their free > accounts on NewsBlur. By going premium you can get full and immediate access > to NewsBlur.

I get that they're trying to be able to handle the load, but it concerns me that they can't simply 'scale' their service like most modern web applications.

<comment><USER10> On the contrary, I'm happy with that. I'd rather they try to be profitable from the beginning than do the whole get users then figure out monetization model. I want a stable long term rss reader, not a service that tries to get acquired.

</comment></comment></comment><comment><USER11> I've ended up replacing Google Reader with Twitter.

I follow all the people I care to read about -- they tweet their blog postings as they're posted. I follow Techmeme -- they tweet their river of news. I aggressively unfollow or disable retweets for any followed account with a poor signal/noise ratio.

I supplement that with an occasional glance at Google Plus (where the Android/Google-centric like to post updates). If I'm really behind, I just visit <http://techmeme.com/river> and catch up.

<comment><USER12> I've slowly started to replace my RSS feeds with Twitter. Everything I see in my feeds is generally posted to Twitter as well.

</comment></comment><comment><USER13> I am trying with feedly, but on Android:

* no offline support

* no way to not use the built-in browser for opening links

* no way to go from a post to all posts from this source

<comment><USER9> And on the review pages they stuff a lot of high-star reviews with the same text such as:

> Since the announcement of Google Reader being discontinued, I have enjoyed > this easy app. It also has a simple, attractive interface. Highly recommend.

and:

> Feedly has managed to create a visually appealing RSS reader, that also > focusus on a clean simple visual style that is intuitive to use.

It's really weird.

</comment></comment><comment><USER14> I'm using CommaFeed[1], it's pretty much a simple Google Reader-like interface. It's a bit slow sometimes during heavy loads and needs better scaling.

The code is open source and available at Github[2].

1: <https://www.commafeed.com>

2: <https://github.com/Athou/commafeed>

</comment><comment><USER15> Here's a list of replacements with some additional information such as their popularity, recent blog posts etc. <https://starthq.com/apps/?q=reader>

If there are any missing, please submit them via the "Submit App" link in the footer.

</comment><comment><USER16> Hello, we recently hosted a hackathon and it spat up an open source, no- bullshit Google Reader Alternative. It is live at <http://reader.pykih.com>.

We started this as a fun project and we only have an early prototype out but are getting sign-ups. We want it to be a simple, text-heavy, less UI, developer friendly, hacker news style reader.

Please do try it and give suggestions, feedback, bugs, etc. at <https://github.com/pykih/reader/issues>. In case you are a Rails developer and wish to contribute, we are at <https://github.com/pykih/reader>. Thank you in advance. :-)

</comment><comment><USER17> Newsblur: it does everything I want, and I've been impressed with the improvements to the system of late.

</comment><comment><USER18> Using <http://www.newsbeuter.org/>, a terminal-based RSS reader. "The Mutt of RSS Feed Readers", as they call it.

Everything in lists, next-next-next and hit 'O' to actually open an item. Rip through all those feeds fast.

</comment><comment><USER19> Literally just started using The Old Reader (<https://theoldreader.com>) and it's the one whose interface I like best so far. No integration with third party apps, but it's free, and their website is great on mobile anyway.

</comment><comment><USER20> I was never a GReader user (I've always prefered my hacked up self hosted rnews aggregator; <http://rnews.sourceforge.net/> ).

However I have been hunting for a decent rss reader for android ever since flipboard made changes which have resulted in exactly 1 line of text being displayed for each item.

Just today I found Holo Reader.

[https://play.google.com/store/apps/details?id=de.hdodenhof.h...](https://play.google.com/store/apps/details?id=de.hdodenhof.holoreader)

Super simple, good layout, deals with my hacked up yahoo pipes feeds (where I've jammed header img tags into each description). I'm very impressed by it.

</comment><comment><USER21> I use Tiny Tiny RSS and it works well enough with the web interface on my desktop. Although it's self hosted I have no problem using a $2.5 per month vps with 256 mb of ram to host it. For mobile access I use YATTRSSC which is a decent tt-rss client.

<comment><USER22> I like TT-RSS. It has that mark-read-on-scroll thing as well as next/previous article by arrow keys (or k/j) thing. Awesome sauce.

</comment></comment><comment><USER23> FeedHQ — I just subscribed last night ;-)

I've trialed various other services and FeedHQ.org is my favorite. (See my recent comment history for more detail on other services I've tried.) It's fast in both UI and checking feeds, and I like the multi-page design instead of the more common 2 or 3-column Reader-like layouts. Most importantly, this means than when reading an article I don't lose more vertical screen real estate to navigation bars.

Accounts are $12/year, so the service should stick around, but the code's on Github[1] in case it doesn't.

[1]: <https://github.com/feedhq/feedhq/>

</comment><comment><USER24> Thanks for asking because it reminded me to cross this migration off my ToDo list.

Before checking this I was convinced I would be going with NewsBlur. Based on the positive feedback on Feedly I decided to check that out.

For me Feedly wins hands down. Winning points:

\- instant Google Reader import (wow!)

\- list view is very similar to the plain GR view

\- social rank for URLs based on G+ and FB (I have been looking for a PostRank replacement ever since Google killed my second favorite app)

What I would love to see in future enhancements:

\- extend social rank to filter the views (more like Postrank)

\- search within posts that I have read

</comment><comment><USER25> No winner yet, but cut the list down to 3.

Feedly: PRO: imports GR including which posts you already read. PRO: GR imported posts contains all history (even from blog feeds that are now defunct) CON: slows down browser considerably CON: UI has too much whitespace CON: UI is slow (browsing with j/k takes ages)

CommaFeed & InoReader & OldReader PRO: uses as much screen estate as possible PRO: very fast UI CON: GR import misses the read/unread markers CON: GR import incomplete (so now defunct feeds do not appear)

One of the reasons I want to have the defunct feeds, is that it contains the old blog of a friend that passed away.

</comment><comment><USER26> I wrote and host my own rss to email gateway, which I'm pretty happy with so far. Of course at the time the google reader shutdown was announced I hadn't been using rss for years so I started from scratch, feed-collection wise.

</comment><comment><USER27> I'm working on a serverless chrome extension rss reader. It's still in development but if you'd like to try it out or help out, please have a look: <https://github.com/nissimk/brassReader>.

Check out the code. Go in chrome to extensions page set developer mode on load unpacked extension point it at the checked out folder

If you're logged in to google in another tab, press the button with the cloud on it and it will pull in all of your feeds.

Thanks for the look.

</comment><comment><USER28> Anybody know of a decent reader that allows me to click and go to the comments of sites like HN?

Most of the times I first read the comments before actually going to the main link.

<comment><USER29> Yes, this is exactly the problem I had with feedly when I tried it a few weeks back. Seems to have way more clicks required to read the comments than Reader's much leaner interface.

</comment></comment><comment><USER30> I hacked up my own in March. I didn't even know Google Reader was closing. I just got tired of the features that other readers didn't have. It's a console application, which I realize has limited utility for most people, but it is very powerful and provides many multi-tool functions that could be useful to someone.

<http://github.com/gmn/rsstool>

There are screen shots and some instructions on the wiki.

</comment><comment><USER31> Yes, Feedly. I tried it out when Google announced the shutdown, and I wasn't completely satisfied, but then 2 or 3 weeks after that I started using it more and it felt a lot better. I don't know exactly what changes they made, or if they made any at all, but the experience feels fairly polished now. I like to think that they worked on the feedback the Google Reader refugees gave them. I'm quite happy with it, and I've stopped using Reader completely.

</comment><comment><USER32> Decided to go the self hosted route and host my own tiny tiny rss reader. as its more or less the same and im in control of when it goes down, plus with mobile client

</comment><comment><USER33> We're re-releasing Nuesbyte today, personally I think its amazing alternative. :)

<http://nuesbyte.com>

<comment><USER34> Its a clean, simple, fast, html reader, more info:

<https://news.ycombinator.com/item?id=5750405>

</comment></comment><comment><USER35> Using my own BazQux Reader <https://bazqux.com>

PROS

\- fast

\- clean UI

\- shows comments

\- integration with Readability to get full article text

\- many view modes

\- able to subscribe to twitter/fb/g+

CONS

\- non free (PROS for some people)

\- no mobile app yet, but I'm close to finish cloning Google Reader API.

</comment><comment><USER36> I wrote my own replacement, which is open source here: <https://github.com/sirsean/quickfeed>

I host it for myself, and it works quite well; no mobile app or mobile- optimized site at the moment, but for the desktop it'll do.

I didn't like any of the existing post-Reader options.

</comment><comment><USER37> I found the Feedly Firefox plugin to slow down Firefox a lot, so that wasn't really a good experience.

So far, as a FeedDemon on Windows, Reeder on OS X and Reader on Android user, NewsBlur looks like the best option from where I sit (as a 10-year RSS reader user with some 120 feeds ATM). Going to try Feedbin, though.

</comment><comment><USER38> I'm still searching for a perfect substitute. Feedly is the best I've found so far. I've very pleased with the desktop experience. Although, I really liked the Google Reader widget for Android and the Feedly one isn't as dense information wise, and reading offline (when on the subway) has proved to be problematic.

</comment><comment><USER39> I set-up TTRSS (<http://tt-rss.org/redmine/projects/tt-rss/wiki>) on my own server. I didn't like that Feedly requires a browser add-on, as I'm not always going to be able to install that on every browser I might use.

</comment><comment><USER40> I'm fairly happy with Gnus combined with Gwene, and surprisingly found this combination more time-efficient than Google Read has been for me. I first reduce my read list using Usenet-reader paradigms, and then use a small function of mine which batch-opens all that remains in Chrome tabs.

</comment><comment><USER41> I used to use Google Reader as a podcast repository for listening to podcasts on Android (at the beginning with Google Listen then, after Google retired it, with BeyondPod/Podkicker). Is any of these services integrated with a mobile Android podcast reader?

</comment><comment><USER42> Using Feedly, two main issues:

      No direct link to more items from source
      Android app limits my subscription list which is well over a hundred sources.

Everything else seems to work and the extension works fine on Chromebook.

</comment><comment><USER43> <https://github.com/wking/rss2email>

Pros: It sends to my Gmail account, separated by labels, and I can read both in PC and mobile.

Cons: you have to run the command in your PC.

</comment><comment><USER44> I just started with commafeed.com The good is that it's simple, looks like google reader, and had a 1-click import from google reader.

The bad is that it seems slow to update and it's almost unusable on the iPhone.

<comment><USER45> Most of my feeds does not get updated and seems to be slow. So, i am going with multiplx.com and pretty happy with it.

</comment></comment><comment><USER46> I'm not one of these Reeder users. I've always used Byline on iPhone (a Google Reader client) so I'm waiting to see if this is going to be maintained post- GReader and what service it will support.

</comment><comment><USER47> I've been keeping track of all the options (about 100 so far and counting) and updating my blog post about it here: <http://bit.ly/RSSreaders>

</comment><comment><USER48> Try MultiPLX at <http://multiplx.com> \- is totally web based, a pure HTML5 client, supports card layouts and also let's you export your own data.

</comment><comment><USER49> Trying <https://www.commafeed.com/> at the moment, but still open to suggestions.

<comment><USER50> this broke on me multiple times.

</comment></comment><comment><USER51> <http://getgini.com/google-reader-alternatives>

</comment><comment><USER52> I'm using TT-RSS. I just installed it in a subdirectory of my existing domain account - so no incremental cost at all.

</comment><comment><USER53> NewsBlur.

</comment><comment><USER54> Using Bazqux.com. It's the closest to Google Reader that I've found and it's fast. Inoreader.com is also not bad.

</comment><comment><USER45> I am going with multiplx.com as it gives me a google reader style and a Visually rich pinterest style UI.

</comment><comment><USER55> I used <http://selfoss.aditu.de/> and I like it

<comment><USER56> Thanks for that. I've been looking. It runs nicely on my Raspberry Pi. Took me about an hour to set up, mostly because I made a stupid mistake. Fixed that, runs like a hose, and surprisingly lovely to look at. Win.

</comment></comment><comment><USER57> I'm using <http://theoldreader.com/>

<comment><USER58> I'm also using theooldreader, but find that updates are sometimes slow and it seems to miss some stuff, so I've been using an install of tinytinyrss as well

</comment></comment><comment><USER59> tried to keep away from google starting some months ago (prior to google reader shutdown), and i tried some cli softwares on linux, Newsbeuter is amazing. <http://newsbeuter.org/>

</comment><comment><USER60> Tiny Tiny RSS; hosting it myself, and I love it. I read on both mobile and desktop.

</comment><comment><USER61> Using Feedly for the past couple of weeks. Good so far and the UI is neat.

</comment><comment><USER62> Ask Google to open source it. Go to this thread and add +1 and your name.

<comment><USER62> <https://news.ycombinator.com/item?id=5761892>

</comment></comment><comment><USER63> I've been using Feedly (desktop and mobile) and quite like the experience

</comment><comment><USER64> Feedly here, both on desktop and mobile. Luv it!

</comment><comment><USER65> Using feedly, find it a decent alternative.

</comment><comment><USER66> gwene.org, then read in gnus via nntp.

</comment><comment><USER67> one mention of 'export,' none of 'opml' in the comments

</comment><comment><USER68> Google Currents

</comment><comment><USER69> no :(

</comment><comment><USER70> Feedbin.

</comment><comment><USER71> FeedBin.

But keeping an open mind. Looking for better changes and sync/2rd party support from FeedHQ, NewsBlur and TheOldReader etc. Feedly is not my thing. It's a funny service. No sync to third party client. You need a Firefox client to read on its website. Means it spies in you.</comment>


US mayors adopt resolution to not pay hackers over ransomware attacks - <AUTHOR> https://www.cnet.com/news/us-mayors-adopt-resolution-to-not-pay-hackers-over-ransomware-attacks/ <comment><USER2> Their assumption is that they're being targeted and that this "united front" will give attackers less reason to target them, when the harsh reality is that these CrytoMalware emails/IM Spam are being send to every business/government internationally looking for the softest targets.

They should have passed a resolution to implement a 1-2-3 Backup Strategy with mandatory offline & offsite backups and testing protocols. But that would cost money and require competent management/oversight, instead they'd prefer to pass a meaningless fiat that won't do jack.

Honestly until there are consequences for government officials/management nothing will change. This is 95% about poor resource management and 5% about CrytoMalware. Nobody should be paying, because they should ALREADY have multiple tiers of backups, that are audited, tested, and reviewed.

PS - "It also encrypted our backups" is also pure incompetence. They just didn't want to manage rotated backups or pay the storage fee/costs of high density tape.

<comment><USER3> The problem with 1-2-3 backup is 95% user education, policies, desktop administration, etc., and 5% making the copies of data. In my experience, at least. You need IT staff who are good at finding solutions that work for everyone. It would be nice if we could just stay "store it on the network drive" and then make backups, but users in the org don't listen, and this is a fact of reality that you have to spend time & money to adapt to.

So backup is a fairly big management & IT challenge that goes way beyond guidelines like 1-2-3. That, and due to legal restrictions, local governments are rarely empowered to hire the right IT staff capable of making it happen.

<comment><USER4> Speaking of backups, what do you all do for yours? I'm embarrassed to admit I only do a weekly backup to a portable drive for my personal data, and mostly use automated snapshots on aws for database contents.

<comment><USER5> All my stuff is in Google so my backup is for "what if Google decides to ban me without recourse?" For that I download the hundreds of gigs of Google takeout and upload it to backblaze. I ought to automate it.

I'm mostly saying this out loud for the chance someone will point out an issue or optimization for my strategy.

<comment><USER6> Have you tried running rclone on a VPS? Not exactly Takeout data, but you can sync across cloud services

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

</comment></comment></comment></comment></comment><comment><USER7> Mayors will pay "cyber-security" consulting firm. The firm will pay the hackers.

[https://www.zdnet.com/article/georgia-county-pays-a- whopping...](https://www.zdnet.com/article/georgia-county-pays-a- whopping-400000-to-get-rid-of-a-ransomware-infection/)

</comment><comment><USER8> I am on a local city commission. As part of this, they gave me an email address (made me unhappy, but whatever). They sent me an email to my personal email address telling me how to log in to my city email address, explaining that my password was a trivial algorithm based on my name, followed by a number an exclamation point. This was a form email: every single address in the entire city has the same password format (with the same number, to be explicitly clear). They disabled the feature to let people change their password. So... anyone can log in to the email account of any official in this city and do stuff like delete mail before they see it (as even if they have audit trails turned on for administrators, the official can still delete mail from their own perspective, and would never know if someone helpfully deleted it "for them").

</comment><comment><USER9> This type of acausal deal only works for single-target attacks. If a bad actor is searching for a victim and sees two potential targets, one of which has resolved to never cede to their demands and one who wasn't commented, they will attack the ambivalent party.

Malware is not a single target attack. Whether or not it's probably beneficial to attack one of these cities is not considered. Instead of making gestures, these mayors should be investing in better cybersecurity.

</comment><comment><USER10> Honestly, I can't add much more than what has already been said here... If your data/biz/org/etc is crippled because of these types of attacks, then you really need to have a frank discussion around IT/resource allocations/goals. These are 100% manageable (worst case).

<comment><USER11> Is it 100% manageable?

If the malware author manages to infiltrate your network and quietly starts infecting files and devices on your network over 6 months, even if you restore from a 7 month old backup, what about all of the files that were created between then and now -- are they all going to be recoverable even if you can find and remove the malware? Can you reliably detect all of the malware or will the attack sprout again from your printer in a few months?

</comment></comment><comment><USER12> Is it just me or will hackers use this as a guide of whom to hack?

<comment><USER13> I imagine that's the idea.

</comment></comment><comment><USER14> Is it cheaper to pay the ransom to unencrypt your data or just buy a copy off the dark web?

I assume the malware fucks stole a copy to auction off.

<comment><USER15> the decryption keys are generated by entropy from the controller

just having the software won't do you any good

</comment></comment><comment><USER16> Fascinating. The page manages to bypass uBlock Origin and pop up an ad window in the right bottom corner to start paying heavy (which my computer and connection can barely handle) video with sound (!) automatically.

</comment><comment><USER17> this is beyond stupid. municipal IT systems are vulnerable because of poor resource availability and lack of budgets to properly secure them.

paying the ransom ware folks should be considered the cost of doing business. it's cheaper than actually securing the data.

anyway it's expected. the same mayors that underfund IT would be the same ones to make this ridiculous "red line".

good opportunity here for a cookie cutter IT consultancy to come in to all of these cities and offer cookie cutter service.

</comment><comment><USER18> I'm curious where the cities that have paid ransomware attackers acquired bitcoin. Did they literally just open a Coinbase account and send funds through there?

<comment><USER19> They probably had a consultant do it for them.

</comment></comment><comment><USER20> Alternatively, they could move to secured cloud services; what with encryption at rest, nightly backups, and inactive file storage.

</comment><comment><USER21> Ok, but how are they gonna get their data back? Just sacrifice it and lose all digital public records?

<comment><USER22> Yes, and this is exactly why they should be keeping both digital (online and offline) as well as paper copies of their records.

If they can't afford to have good backups of their data, they can't afford to have digital records in the first place. This is the equivalent of a community saying they can't afford filing cabinets so they just stack paper on the floor in the boiler room. Nobody would find that acceptable, and they shouldn't find this acceptable either.

<comment><USER23> I think one issue is that they can't know for certain when they became compromised. So they may be able to get data back but can't know that that data has integrity, unless they've hashed it since the beginning of time.</comment></comment></comment>


Startup CTO mistakes I'd rather not repeat... - <AUTHOR> http://blog.carlschmidt.ca/2009/07/startup-cto-mistakes-i-rather-not.html

<comment><USER2> Not to be overly glib, but the #1 "Startup CTO mistake" you can make is having a CTO. Even on paper, the CTO is an architect's role --- which you don't have time for. In practice, it's a place to put founding developers out to pasture when they burn out.

<comment><USER3> Let's approach this from another angle. Lets say you have two equal founders, one business guy and one tech guy. Then let's say the business guy becomes CEO. What title does the tech guy have? What are the tech guy's responsibilities? Let's say the company is successful, and now the tech guy is managing 10 engineers. What are his title and responsibilities?

Maybe the CTOs you've meet have been useless, but it's obvious you need a Cx0/techie-founder kind of position.

For another take, See Eric Ries: [http://startuplessonslearned.blogspot.com/2008/09/what- does-...](http://startuplessonslearned.blogspot.com/2008/09/what-does-startup- cto-actually-do.html)

<comment><USER2> VP/Engineering (if you're an execution player) or VP/Product Management (if you're a vision player). Both of those titles are close to the revenue. In a small, focused startup, don't discount "lead developer with a board seat"; also a strong role.

If you're the tech founder in this scenario, the _last_ thing you want to do is put yourself in the architecture ghetto. What will happen is that your company will then hire a VP/Eng and a VP/PM. You are in a very crappy place to compete for mindshare against Eng and PM from a CTO's desk.

</comment></comment></comment><comment><USER4> I think I have some of the same problems,I thought it was a good write up and hopefully will make me more aware when I am making a common mistake...

Spending to much time on the technology over the people seemed very relevant to me, as it might pay off in the short term but as the company grows it surely hurts it.</comment>


Show HN: my 1-week project - Moodlogger - <AUTHOR>

Moodlogger is an iPhone app that lets you log your mood at any given time. The idea is to be able to share it with others and to generate statistics for users, showing how often they are [happy,angry,sad,etc.]. It was a fun exercise for me to build so I thought I'd share my (dev) experiences with you.
Link to project: http://www.moodlogger.net
Dev blog entry: http://www.colorfulwolf.com/blog/2011/05/29/introducing-moodlogger/
Appreciate the feedback! <comment><USER2> Thought about integrating it with productivity/music/location-aware services?

<comment><AUTHOR> GPS seemed like a logical add-on, but I haven't thought about music yet, thanks.

<comment><USER2> This may give you some ideas.

<http://www.mir.uncc.edu/docs/goal_Emotions.htm>

</comment></comment></comment><comment><USER3> The dev blog entry was definitely one of the best I've read in a while on lessons learnt from a project. This line in particular,

The main idea was: "Stop worrying about if there's something better. If you can do it right now then just go with that.".

Says it all. That's a difficult wall to break past and I've struggled and I'm still struggling with it for my Android app. And I don't even have an app review to pass.... shame on me for not having any app out there. Thanks a lot for sharing this. The dev article was definitely an inspiration. Ah well. Good luck with the future run of this. You are right. This database does have a huge amount of potential in it so it'll be interesting to see where this goes :).

<comment><AUTHOR> Thanks! Hope it helps. I'm still struggling to find the limits myself. Since I'm usually at the never-release end of the spectrum I found it healthy to try it the other way round for a change, even if the end result is not (yet) very pretty.</comment></comment>