Porting to Python 3 Redux - <AUTHOR> http://lucumr.pocoo.org/2013/5/21/porting-to-python-3-redux/

<comment><USER2> It's great to see Armin's continued work on this. Things have obviously progressed since he wrote his post on the subject [0] (over a year ago). He's written so much of the code I rely on daily that I was concerned that he'd lose interest in Python during the 2-3 transition (I know it's not completely on him to support it but he is a key contributor to Python's use on the web).

[0] <http://lucumr.pocoo.org/2011/12/7/thoughts-on-python3/>

</comment><comment><USER3> Great writeup (and a cool metaclass workaround!)

However, I think that "Drop 2.5, 3.1 and 3.2" advice is bad - dropping 2.5 and 3.1 is the way to go (hey, drop 2.5 even if you're not porting to 3.x), but dropping 3.2 is not necessary in most cases.

In my experience (porting and maintaining 20 open-source packages that work with Python 2 and Python 3 using a single codebase, including NLTK) Python 3.2 has never been a problem - I don't see how NLTK code and code of my other packages could be improved by dropping Python 3.2 compatibility.

The main argument for dropping Python 3.2 support seems to be that u'strings' are not supported in Python 3.2. There are 3 "types" of strings in Python:

* b"bytes",

* "native strings" # bytes in 2.x and unicode in 3.x

* u"unicode"

By adding `from __future__ import unicode_literals`` line to a top of the file, code compatible with 2.6-3.2 could be written like this:

* b"bytes"

* str("native string") # bytes in 2.x and unicode in 3.x

* "unicode"

In my opinion this is not a hack (unlike six.b and six.u necessary for 2.5 support), and this is arguably closer to Python 3.x semantics (unicode strings are default). So IMHO while using u"unicode" feature from Python 3.3 makes porting somewhat easier (less stupid search-replace), it also could make code worse and more cluttered, and Python 3.2 - compatible syntax is just fine.

It is true that 3.3 brings other improvements (Armin mentioned binary codecs), but it is quite rare that the library actually needs them (even libraries as big as NLTK and Django are fine with 3.2 stdlib).

3.2 is a default 3.x Python in current Ubuntu LTS (EOL in 2017) and a default 3.x Python in the recently released Debian Wheezy; 3.2 will be around for a long time, and not supporting it will hurt. So if you're doing Python 3.x porting, please just fix those stupid u'strings' with unicode_literals future import - your code will be more ideomatic and also 3.2 compatible.

There is also an advice for encoding __repr__ and __str__ results to utf8 under Python 2.x in the article; this is fine (other approaches are not better), but it has some non-obvious consequences (like breaking REPL in some setups) that developers should be aware of, see <http://kmike.ru/python-with- strings-attached/>

For lower-level 2.x-3.x compatible C/C++ extensions Cython is great. In fact, many libraries (e.g. lxml) are compatible with Python 3.x because they are written in Cython which generates compatible code (modulo library changes) by default.

<comment><USER4> > Python 3.2 has never been a problem

It's not a problem if you are willing to litter your code with calls or upgrade a ton of code in 2.x to unicode accidentally. There are just too many cases in 2.x where that is a terrible idea and introduces subtle bugs. I very strongly recommend against `from __future__ import unicode_literals`. If anything go with six.

In regards to supporting 3.2: I don't think anyone cares. The number of people currently using Python 3 is pretty low and a lot of libraries are already dropping 3.2 support. Requests, MarkupSafe, Jinja2 now all dropped 3.2 support and with that a lot of stuff that pulls in dependencies to those will now also depend on 3.3.

I still think people should stick to 2.7 for at least another one, two years and at that point a lot will have changed.

//EDIT: wrt __str__ returning utf-8 data: __str__'s encoding is undefined but usually accepted to be > ASCII. Django and Jinja2 for instance returned utf-8 there for years and it did not cause any problems.

<comment><USER3> In case of NLTK unicode_literals ("unicode by default") fixed a lot of bugs and made other bugs visible, so mileage may vary :)

Could you give an example of cases where unicode_literals is a terrible idea?

3.2 is important for newcomer experience IMHO; it is very common for people starting with Python to use 3.x version and wonder why the code doesn't work. It's a pity high-profile packages are dropping 3.2 support, I wasn't aware Requests and Jinja2 dropped it.

utf8 __str__ definitely caused issues for Django (e.g. `print mymodel` sometimes fails in REPL in Windows with Russian locale); people using REPL in Windows are too used to such errors so they don't complain and blame Windows for this, but that doesn't mean there is no issue.

<comment><USER4> So will latin1 `__str__` on Russian locales. So will ASCII `__str__` on any locale that is not ASCII compatible. You can't expect the impossible.

In regards to cases where unicode_literals is a terrible idea is any piece of code that then suddenly gets a unicode string which does not expect it. Because unicode coercion in 2.x spreads like a cancer you might not see the failure until someone uses your API. I still have to fix bugs where people accidentally send things coerced to unicode to an API that does not support it.

Additionally: newcomers still should not be using Python 3. There are just too many remaining issues that are annoying to deal with.

<comment><USER3> Are there non-ascii compatible encodings that are default in any OSes? With ascii-incompatible system/terminal encoding a lot of software will stop working. Strange things happen, but this looks like a theoretical issue, and ascii looks safe. In Python 2.x __str__ of all standard container types are ASCII-only (even if elements has non-ascii __str__), and __repr__ of standard objects is also ASCII-only as far as I can tell. ASCII-only is an option, and it is not uncommon and relatively safe (but it has its own issues of course).

It was exactly this unicode_literals property (turning everything into unicode) that helped to reveal bugs :) For example, models were trained on bytestrings under Python 2.x, and nobody remembers what was the encoding of the text models were trained on. This was unnoticed for several years because instead of raising an exception functions just handled some egde cases (e.g. unicode punctuation) in a suboptimal way. This leads to almost correct results, but with less accuracy/precision/recall. After changing to "unicode everywhere" the issue became visible.

The issue was not with cancer-like turning text into unicode, issue was with the code that works with text and doesn't support unicode. Python 2.x standard library has such APIs, and this causes troubles, but I don't see how it is a bug in the code that works with text and returns unicode.

What I'm writing are common words and a standard "unicode mantra", but anyways.

We could say "programmers should just handle encodings properly, and unicode_literals have nothing to do with this", but this doesn't always work. "Unicode everywhere" makes some code changes necessary, but some of these changes reveal real bugs.

Another story: I took 2 different courses from 2 different top-notch universities at coursera.org where instructors gave us starter code (written in Python 2.x) for programming assignments. The code was not bad, but there were many cases of incorrect encodings handling in most of the provided files (such errors that would be impossible in Python 3.x) - this was the code that was supposed to teach students something (including Python programming).

What I like about unicode_literals is that it makes things more consistent and easier (at least for me) to reason about: if variable is unicode under 3.x, it is unicode in 2.x, the same applies to bytestrings. In cases where different behaviour is necessary (e.g. because of non-unicode API in 2.x stdlib), explicit str("foo") is used; otherwise code is written in Python 3.x and works with the same semantics under Python 2.x.

Just curious, what newcomer issues are you talking about, and who do you mean by "newcomers"?

</comment></comment></comment></comment></comment><comment><USER5> > If you have a C module written on top of the Python C API: shoot yourself. > There is no tooling available for that yet from what I know and so much > stuff changed.

I don't agree with that one. I have added Python 3 support two years ago to the Python bindings for libssh2 and it was straight forward. First of all it is still C and therefore you don't have to care about the syntax changed in Python. Just add some #if PY_MAJOR_VERSION < 3 for API calls that have changed, or even better wrap that code in macros. Probably you already have some backwards compatibility switches/macros like that already anyway in your code, if you already support multiple versions of 2.x. So adding some more for Python 3, isn't that a big deal.

At least at that time, when six and modernizer wasn't available it was way easier and straight forward to support Python 2 and 3 with the same codebase with extension modules, than with actual Python code. And it seems if you don't want to drop support for Python <= 2.5 or <= 3.2, it still is.

<comment><USER4> That again depends on how much you do with strings and integers and how many modules you construct. PyInt is gone, PyUnicode is now PyStr, module construction uses a vastly different system and on 3.x you want to support the stable ABI which looks a bit different.

<comment><USER5> Except for the module creation you can easily add some very simple compatibility macros. I don't see how that would be different from your _compat module. However module creation can't be abstracted into a uniform macro in fact, because of it requires to define a PyModuleDef struct and the the modlue's init function got a return value in Python 3. But I'm fine with using some #if PY_MAJOR_VERSION >= 3 here.

After all you have to deal with way less compatibility issues, in extension modules than in actual python code. And if needed you can always do a simple version switch. You don't have to care about changes in the syntax of Python. You also don't have to care about changes of the __*__ magic method, because of you don't call them directly, and when defining classes you use slots for stuff like that.

<comment><USER4> Fair enough. As I said you can probably get around with some macros. To the best of my knowledge no such thing currently exists and what markupsafe does is not particularly nice.

</comment></comment></comment></comment><comment><USER6> I also found that maintaining single code base for both 2 and 3 is the only sane way. Running 2to3 during build is just too intrusive.

I liked the approach of 'six', but it is not shipped as a system module. Having something like that as a default system module in Python 2.6, 2.7, and 3.x would go a long way towards adoption of Python 3.

I found that I end up either using six or implementing some subset of it if I do not want to introduce the dependency.

</comment><comment><USER7> This is a good writeup. On Tornado I went through a similar transition from 2to3 to a single codebase. As long as you can drop Python 2.5 support you can probably avoid 2to3, but if you do need it I wrote some tools to make it less painful: [http://bdarnell.github.io/blog/2012/03/13/cross-python- devel...](http://bdarnell.github.io/blog/2012/03/13/cross-python-development- with-auto2to3/)

</comment><comment><USER8> So Armin what did not come across from your blog post is how you _feel_ about Python 3.

Until now you have been seen as one of the people holding out strongly against it. Where are you at now? Are you going to move to Python 3?

What's the future for Jinja2 now? Are you enthused about maintaining it? If it's headed for the deadpool please let us know as we can move to technologies that are going to have a future.

What the future for Flask?

What are your current thoughts on Python 3?</comment>


RSS: there's nothing better - <AUTHOR> https://davidyat.es/2017/05/18/rss-nothing-better/ <comment><USER2> I wrote about this recently[1]. The "problem" with RSS, that essentially lead to it falling out of favour, is that it is pure consumption, not interaction. You can't "like" an update that comes to you via RSS, nor comment, nor easily share. It's difficult for sites to monetise it, or track, or promote their own agenda. It's not "social" and since every other site these days needs to be social, whether through aforementioned ways, or adding some sort of messaging process, it's not a way that sites can keep users hooked _on_ the site to boost ad impressions.

RSS is pure content, curated only by the consumer and presented in chronological order not algorithmically messed with, which is why there's nothing better.

[1] [https://leejo.github.io/2017/09/27/social_media_zero/](https://leejo.github.io/2017/09/27/social_media_zero/)

<comment><USER3> And this is why Google Reader was amazing. There we were, my friends and I, reading RSS feeds and liking/sharing/commenting amongst ourselves.

 _pours one out_

<comment><USER4> I see this promise in Mastodon. Under the hood it's just Atom + extensions. If current blogging solutions had a mastodon extension; say if a Wordpress blog also automatically set up a Mastodon instance for you even if it's just a single identity one, you'd have liking/sharing/commenting by default.

Note: fairy new to Mastodon, not sure exactly if / how this would work, but I've been thinking about this lately.

<comment><USER5> There seems to be a few plugins like this: [https://wordpress.org/plugins/tags/mastodon/](https://wordpress.org/plugins/tags/mastodon/), but it's not RSS, and ultimately different. It could all potentially work together nicely, and I wish federated services like Mastodon were more widely used. They could definitely lower the burden to publishing/consuming RSS.

I don't think social news delivery/publishing is an easily monetize-able business. Out of twitter/reddit, reddit seems to have found a model that works for them. Twitter hasn't found what works yet.

<comment><USER4> I think that if each site funded it's own social delivery, there would be no single "social publishing platform" to monetize. It would be a matter of just the publishers monetizing themselves, and the social platform would be the web.

And that's the promise of Mastodon. It is free because each instance pays the cost of keeping it alive in the form of hosting their instance. Like, right now, the NYTimes acts like a "database" with all the pages, and reddit or twitter like the content distribution feed, and both need funding. But if the NYTimes had its own Mastodon instance and published there, the rest of the Mastodon network would be its content distribution feed, each federation funding itself.

As a sidetone, it even solves the problem of verification I think, because if I have the Mastodon account email@example.com for example, I don't need a central system to confirm that I'm working for the nytimes, like for example twitter would.

And moreover, since Mastodon is just Atom, if people want to just see feed updates they can do that, or they can get a client that supports the full social features too. I think it's pretty cool.

</comment></comment></comment></comment></comment><comment><USER6> RSS is the only sane way to follow multiple sites and people. There's blogs, news sites, Twitter, YouTube channels, etc. - only in my RSS reader (theoldreader.com) it all comes together. Some removed RSS feeds because they realised I don't have to load their horrible ad-infested Javascript crud to read someone's 160 characters, but if it has content worth reading, there's RSS scrapers that turn it into a feed (e.g. twitrss.me). Facebook is kinda left out as most of their content is walled off, but then they're too evil to even consider going there anyways.

<comment><USER7> > Facebook is kinda left out as most of their content is walled off, but then > they're too evil to even consider going there anyways.

Can't we have RSS scrapers that are operated by people, generating RSS streams of "inaccessible/paywalled/grey area" content in a collaborative effort? Something like bittorrent but for ASCII text.

<comment><USER8> For any content that's being sold as such (eg, news sites) that's definitely copyright infringement. For user-generated content, I'm not sure. Though I would not be even a little bit surprised if Facebook asserted copyright to anything put into it. In either case, probably violates the TOS as well.

Technically it's achievable, but it would likely be forever relegated to mostly-illegal backwaters.

<comment><USER7> Yes, it's illegal. But if we don't at least acknowledge that we're in a fight, then we're losing the battle for sure. By the way, Uber and AirBnB also did many illegal things, and so did Google (see e.g. Google Books).

</comment></comment></comment></comment><comment><USER9> I've been seriously considering trying to consume the web solely by RSS again. All the news sites, the few twitter accounts I actually care about, HN. HN still provides RSS, and there are ways to get it for sites that don't support it, e.g. Twitter.

Everything seems to be gearing more towards deliberately occupying as much of my time as possible, algorithmically selecting content that achieves this. I want out of this situation, but overcoming addiction and interrupting the automatic trigger cycle is hard. Maybe now's the time.

<comment><USER10> I _stopped_ using RSS circa 2010 since RSS produces just too much content (well at least my reader did, as it was not archiving stuff until read, just like an email inbox). I was reading my RSS feeds almost as a full-time job and the unread count was only going up and up :)

TBH, it's a bit like this now for me with HN and Twitter even without RSS. "This looks interesting... (click)(open in new tab)". One week later: 300 tabs open.

<comment><USER11> So what if the unread counts go up? I have a feed with 543 unread items, and many others with 100+. Sometimes I scan the titles of the latest dozens of items, then mark all as read.

For me, that's the advantage of RSS over Twitter: your unread counts are separate for each feed, so that blog that rarely updates but is always worthwhile to read doesn't get lost in the pile of cheap content.

<comment><USER12> Lol and I have a feed with 3000 unread items, actually several. I don't pay attention to unread counts. Well actually I do, they're there for reference, but that's it. I do the same thing, I might open 50-100 interesting-looking links and then mark the rest as read.

</comment></comment></comment></comment><comment><USER13> Atom syndication format is better than RSS.

[https://tools.ietf.org/html/rfc4287](https://tools.ietf.org/html/rfc4287)

[https://en.wikipedia.org/wiki/Atom_%28standard%29](https://en.wikipedia.org/wiki/Atom_%28standard%29)

<comment><USER14> There's no difference in the consumption method though, is there? I kind of lump Atom and RSS together in my mind. Some of my subscribed feeds use one, some use the other, but without looking at the URL, I couldn't tell.

<comment><USER15> There is no practical difference at all. RSS has more mindshare outside the google universe, but all reader read both, the formats can be mapped from the one to the other, and all languages have libraries to create both. And also manually they are both equally easy to write.

I for one opted to solely generate RSS wherever possible. Having two equally suited standards is a waste.

<comment><USER16> But RSS's date & time format was practically messy (due to being not properly specified and enforced---take a look at [1]) and it had no way to specify that an article has been updated so it should not show up again to the timeline. When I had some dozens of feeds it had been quite annoying to mentally ignore updated articles.

For the obvious reason ( _cough_ timely standardization _cough_ ) Atom is technically and often practically superior to the RSS family of formats (somehow not distinguished to each other). And after more than 10 years of usage, I'm pretty sure that every feed reader in the continued existence now has Atom support.

[1] [https://github.com/kurtmckee/feedparser/tree/develop/feedpar...](https://github.com/kurtmckee/feedparser/tree/develop/feedparser/datetimes)

<comment><USER15> No need to use the past tense here, I work on a project based on RSS feeds right now :)

I'm not sure what I look at with the feedparser code. Looks like a bunch of format support libraries? [https://cyber.harvard.edu/rss/rss.html](https://cyber.harvard.edu/rss/rss.html) says to use rfc822, and in practice for me that means just giving the date string to my chosen languages date object.

You have a point with item updates, RSS was not really made for that. The blog engine I use has different options to handle that, I for one think just pushing a new entry with a new guid is the right solution; but then of course rss readers can't mark updates.

<comment><USER16> My point about date string is that, if people really honored the "specification" from the first place, why the `datetimes` directory has eight different files :-) I have personally seen lots of websites with Korean date & time format ("YYYY년 mm월 dd일 hh시 mm분 ss초", see `korean.py` there) and I'm not sure if they are now gone. (And yes I did have my own aggregation engine back then---it was at least born after feedparser though.)

<comment><USER17> This "Korean date & time format" appears similar to ISO 8601, an international standard for dates and times:

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

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> A friend and I made a tool/framework to easily create RSS feeds for websites that don't offer one. It's written in Python and uses Scrapy for scraping the website. Maybe it could be helpful to somebody. Out of the box mostly Austrian sites are supported but adding a new site usually involves only a few lines of code.

[http://github.com/nblock/feeds](http://github.com/nblock/feeds)

<comment><USER15> If the site is simple enough, one could also use my Yahoo Pipes revival project[0] to extract content from a page into an RSS feed.

[0]: [https://www.pipes.digital/](https://www.pipes.digital/)

<comment><USER19> The sites seems somehow immature to me. The "Shared Pipes" sections lists a few examples, but the first one returns an empty feed and the second one returns "Internal Server Error".

It is probably because of the definition of the pipes being outdated, but it needs better presentation.

<comment><USER15> Hi, thanks for the feedback. The first pipe is filtering for crypto currency articles on HN, right now there seems to be none with those exact keywords, I'll add some more. The second is user-provided and probably dies because of the sub-pipe, I removed my upvote - now the second one is [https://www.pipes.digital/pipe/kGqKVPOx](https://www.pipes.digital/pipe/kGqKVPOx), which works fine.

In general I tried to keep backwards compatiblity as much as possible, I'm only aware of one single breaking change (filter via regexpression, which was not possible for long before the syntax changed and should not have affected many pipes).

</comment></comment></comment></comment><comment><USER20> I really miss Google Reader. Nowadays if I want to follow updates from my friends or events from some organizations, I almost certainly have to like/follow them on FB. But even doing this I cannot be sure that I will get news that I want - because despite I always use "Most Recent" sorting, FB is hiding some content from me.

Many times I saw interesting post when accidentally entering FB "Top stories", from let's say 2 hours ago. I switch to "Most Recent" and guess what, I can't find this post anymore (except going explicitly to this person's page).

I'm getting closer and closer to stop using FB and using only messenger.

<comment><USER21> I love Google Reader as well, but switched quite seamlessly to Feedly. What's your problem with Feedly? I assume it's something about the aesthetic design of it, because it's very much the same as Google Reader.

<comment><USER22> Did they change things? Because when the great reader explosion happened after Google Reader died I evaluated tons of readers and decided on a newsblur.com subscription in the end. I remember Feedly catering to the "images are great"-Pinterest crowd.

<comment><USER23> Yeah. I suggest giving them another try. I actually thought they were the most popular RSS reader these days. It's very customizable (even for the free tier).

<comment><USER22> It looks better than then, true. But it's still trying to be so flashy. And I feel like they are trying to push all their useless social features on me. And there's a lack of customizability. I guess the free tier is better than what newsblur offers, but for me, newsblur is where I'm staying.

</comment></comment></comment></comment></comment><comment><USER24> After the death of google reader I looked around for a new reader and finally decided for newsbeuter an open-source RSS/Atom feed reader for text terminals. Since I always read the article on the source site newsbeuter is perfect for me. newsbeuter does the heavy lifting of downloading and storing and I just have to press 'o' to open the article in my browser.

</comment><comment><USER25> I really want to like RSS but almost every from a commercial outlet serves "stubs" instead of full articles, I.e. to read the full thing you have to click through and land on their website (for ad-serving purposes I imagine)

I had found a solution in fulltextrssfeeds.com, but it was slow, cumbersome and didn't always work.

How do you folks solve this?

<comment><USER26> Interestingly, many readers of /r/politics never read more than the headline anyways.

</comment></comment><comment><USER27> Just deleted my Facebook account in about two weeks ago and started consuming news through RSS and through Podcasts and some YouTube channels (which are also, surprisingly, RSS). I've never felt better. This might be a stretch, but this has been a good alternative to the way I was consuming online media, indeed less useless info seems to be reaching me. However, it all depends on the material you're subscribing to.

<comment><USER28> YouTube is _very_ friendly towards the RSS readers from my experience.

<comment><USER29> ... _iff_ you can find the Feed URL. It always boils down to pasting together URL parts and the channel ID, which isn't exactly friendly.

<comment><USER30> It _is_ a pain - I've found 3 formats for users, channels and playlists:

        https://www.youtube.com/feeds/videos.xml?user=<user name from url>

        https://www.youtube.com/feeds/videos.xml?playlist_id=<id from url>

        https://www.youtube.com/feeds/videos.xml?channel_id=<id from url>

I wonder if there are more?

</comment></comment></comment></comment><comment><USER31> I truly love RSS, combining Feedly with Reeder makes for a fantastic experience. I wrote a brief post on how I use RSS recently: [https://smcleod.net/thoughts/return-of-the- rss/](https://smcleod.net/thoughts/return-of-the-rss/)

</comment><comment><USER32> I also use RSS as a way of publishing configuration and firmware updates to a set of users/devices. Works great: surfs infrastructure we already have, supports browsing past versions etc, and I didn't have to write any clients for looking things up.

This is for a rather large, global, corporate-internal system, not a commercial product, though I got the idea when thinking about solutions for a commercial product a few years ago.

<comment><USER33> This would make a great write up / blog post if you have time.

</comment></comment><comment><USER34> I use Thunderbird for my email + RSS together. Somehow the three things that lots of people keep on thinking are dead or dying work perfectly together.

<comment><USER35> Firefox's "Live Bookmarks" is bare-bones good enough for RSS, especially if feeds aren't going to be a conspicuous part of your online life.

<comment><USER34> I find that I read my RSS feed about as often as I check my personal email, so having the two side-by-side works quite well. I also like the separation of not having it in the browser so that I'm not tempted to read it in the middle of working.

</comment></comment></comment><comment><USER36> Ah yes, twitter lists. It seems they came up with those to undercut the major reason people used the likes of Tweetdeck. Only to later buy up, and shut down the desktop version of, the very same client.

And now it languishes in some side area of the service, seemingly forgotten.

</comment><comment><USER37> I have used RSS/Atom feeds for ever, recently I have decided to ditch Twitter's client and for Twitter feeds consumption I am using twitrss.me to parse twitter user feeds. I need to find a good parse for FB and than I will be a happy man.

</comment><comment><USER38> I agree completely.

It's the web at its best. There no need for a decentralized social network. We have the web.

We should return using RSS (or Atom) and find some other tools to help for forums / messages.

"Likes"? Are we sure we need them?

</comment><comment><USER39> The page has a JS miner in it.

<comment><AUTHOR> Yes, it's an experiment I'm running in advertising-alternative monetisation. Importantly, all mining is consensual -- the miner will only run if you open the accordion and hit Play. Not sure if I made that clear enough in the blurb itself, but it's outlined in the linked post:

[https://davidyat.es/2017/10/01/js-crypto- mining/](https://davidyat.es/2017/10/01/js-crypto-mining/)

I know these things have gotten a bad rap from various shenanigans with Showtime and TPB, but on my site mining is only done with user knowledge and permission.

</comment></comment><comment><USER40> I was quite excited when I heard of [https://jsonfeed.org/](https://jsonfeed.org/). I was surprised at how much more pleasant it seemed, considering the major feature is a simple switch from XML encoding to JSON encoding and not much more.

So it's a bummer to not see it mentioned (not at all in the article, not much in the comments). Does that mean it didn't really catch on, or what is its status?

<comment><USER41> XML is not a transport encoding like JSON. It is a hypermedia format that supports metadata. Even something as simple as an author attribute on a quote requires a standard on top of JSON.

"I can't parse without programming" is a terrible reason to prefer JSON.

</comment></comment><comment><USER42> I see no mention of push notifications as a sort of alternative. Technologically, the polling of RSS feeds to check for new content is a bit wasteful. What I'd like to see is a setup that uses push notifications to gather new content or maybe even a combination, where the push notification tells the RSS reader to grab the new content.

Another interesting fact about RSS is, that it's the main distribution solution for podcasts.

<comment><USER15> RSS has that already, exactly that. It is enabled by Pubsubhubbub (PuSH), an (older?) alternative (used by Wordpress) is rsscloud.

<comment><USER8> Yep, sadly it didn't really get going until RSS was moving out of the mainstream. Really need setup, though.

Just noticed that it was renamed to WebSub and adopted as a W3C standard earlier this year.

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

</comment></comment></comment><comment><USER43> The problem with RSS is that I don't want to subscribe to blogs that have only one lucky post in a decade, I want a curated list of topics on a daily/weekly fashion and for that newsletters are the best. Unfortunately email is not the best platform for delivering content so I came up with an idea to offer a news reader that consumes newsletters you can subscribe/unsubscribe at any time. It's just like an email client but just for newsletters.

Lo and behold, opened a gmail account specifically for newsletters, subscribed to my swift, kotlin, design, UX and AI newsletters and I'm now using Apple Mail to have the time of my life consuming all the content I need, delivered to my inbox daily, with no spam, no friends, no follow, no ads, no nothing.

Of course there is still the possibility to provide a nice client rich in features for the common user so the idea for a startup is still in the air.

RSS is dead, long live newsletters.

<comment><USER44> That is not dead which can eternal lie.

I still derive significant value from Usenet.

People keep saying that IRC is dead (because Slack) or that Jabber is dead (because Slack) but I use both of those daily.

It's a big Internet, there's room for lots of stuff.

</comment></comment><comment><USER45> RSS is great, but: If I could add one thing to a standard RSS setup, it would be a volume knob for each subscribed feed.

Is a feed too noisy? You can unsubscribe. But what if you had another less- drastic option to "turn it down"? That's doable if you have some way of assigning scores to individual posts within the feed. Such scores could come from the feed publisher, other places like the reader's own social media accounts, or somewhere else. Have a user-determined threshold to determine what posts are worth showing the user.

Then by "turn it down" the user means "bump the threshold up" (and vice versa). Via trial and error a user could more or less adjust it to where they want it.

This could be built using RSS as one of the building blocks, but I don't know of anything like it.

</comment><comment><USER46> so whats a good rss reader in 2017?

<comment><USER47> Inoreader

<comment><USER48> I still cannot see how [https://www.inoreader.com/](https://www.inoreader.com/) doesn't get more love. I easily moved to it from Google Reader, and spend my day in the web browser version, and night with the App on my phone.

</comment></comment></comment><comment><USER49> +1 for "nothing better". I have been using RSS for years and select my sources of information depending on its availability.

Some comments bring the question about the readers, and their exposure to publishers, who truncate their content in the RSS feeds.

I solved this by implementing my own reader, web based. It aggregates all RSS feeds from my subscriptions and retrieves the article. When the source only exposes limited data, the script retrieves the full article directly and shows this instead.

I have shared this tool with my friends, they love it. Unfortunately, I cannot widen the audience for legal reasons: the tool automatically scraps all ads and removes any "non-content-related" stuff. I also convinced some of them to share for membership access on some newspapers: a monthly subscription to the NYT shared by 5 people, with a guarantee of "clean, ad-free" content beats anything else.

Sharing these tools with a wider audience would expose me to legal actions, notwithstanding websites that have a JavaScript paywall...

In conclusion, my only recommendation is to spend a few hours learning scripting enough to be able to read from an XML url and parse it. Once you can do that, you have your own RSS reader.

Next challenge will be websites, that expose their content through AJAX requests only...good thing is that most of them have a fallback mechanism for mobile devices, which relies on much simpler logic. The trick is to understand how to convert the 'link' in the RSS feed to a 'mobile link'.

++

</comment><comment><USER50> Feedbro RSS Feed reader has built-in Rule engine that lets you define rules for filtering/highlighting/autotagging articles.

[https://nodetics.com/feedbro/](https://nodetics.com/feedbro/)

<comment><USER51> With the HN feed I get this error:

      Unable to load feed https://news.ycombinator.com/rss:
      503: Unable to read feed: https://news.ycombinator.com/rss

That is a pitty, looks like an interesting project? Does it have an open issue tracker?

<comment><USER50> HN site sometimes throws that error i.e. that URL returns HTTP code 503 and no feed content. It's intermittent and not really a Feedbro bug.

</comment></comment></comment><comment><USER52> I mostly consume my RSS feeds on the London Underground, where 70% of the time you don't have cellphone or WiFi signal.

While my preferred RSS reader NewsBlur can download everything up front, for offline use, I tend to find a lot of sites truncate their articles (with a 'Click here to continue reading!") or just post a headline and a one sentence summary.

This makes me dislike using RSS, not because of the technology, just the way it's delivered these days. It's fine (if a little irritating) if you are online all the time, but offline it's practically unusable bar the few sites that offer full length articles

<comment><USER53> I also use NewsBlur as my RSS reader of choice. It's great!

Truncated articles are a big problem with RSS I think. Sites are trying to get you to jump to their page so you can consume their advertisements. Unfortunately, this has the opposite effect as I stop consuming the site's news and rarely click the links to the page. The small blurb for the feed doesn't give me enough information to want to jump to the page. Often, inline photos won't show up either, so I am less likely to find the article worth a visit to the page.

</comment></comment><comment><USER54> >But, but, XML is gross! RSS is dead! 2007!

Favourite chapter. Never been fan of bashing xml in favor of json, both have their own advantages and xml gets the job done here. Wouldn't care if it was json.

<comment><USER41> XML is not just a transport encoding like JSON. Apples to oranges. They are not comparable. It's like comparing HTML or CSS with JSON. What's he equivalent of XPath in JSON? There isn't! They aren't remotely solutions to the same thing.

<comment><USER55> This

</comment></comment></comment><comment><USER56> Absolutely, there's nothing better! Contrary to trends & general opinion, RSS usage for content aggregation & monitoring is on an increase, specially in the business world and niche industries.

I'm speaking from our own experience running a little startup, Feedity - [https://feedity.com](https://feedity.com), that helps create custom RSS feeds for any webpage.

</comment><comment><USER57> The main problem I had with RSS was the fatigue of keeping up. I usually had dozens of new entries each day and it was always a constant struggle to keep up. I wanted a reader that allowed me to better manage the incoming stream, something like a score or rank system, better auto-expiring systems, maybe a Bayesian system. I'm not 100%, but none of the readers at the time offered anything but a time series. Has this improved?

<comment><USER58> I was thinking that perhaps changing the UI to where it was like tinder, so that a user could swipe articles that they wanted to read later in one direction and ones they knew they wanted to skip in the other would be at least a faster way of going through things. Either that, or making it like Inbox by Google, where someone could snooze an article for later. Information could be collected based on that and sent to the publisher so they would know which content was popular and what was not (along with which articles were shared from the app, etc). A third option would be to use a messenger UI where a user delete/archive links or favorite them, and reply to messages with their thoughts and comments for things that they find useful. I currently have a setup similar to this, but it's not very elegant.

There could be a new feed given to the user, based on that, if they feel overwhelmed with their unfiltered one, but always switch over to the regular view/feed as needed. It could be even more granular, where some feeds are algorithmically sorted or ignored based on certain keywords set by the user and others are not.

</comment></comment><comment><USER59> RSS is the best to follow up with the latest news or blogs you like, yet it has some weaknesses like -I know this is the content provider's fault- not serving the full articles.

That's why I ended up using RSS client to swiftly filter the content I get then send the interesting titles to a read-it later service -Pocket specifically- that has a better reading experience -TTS anyone?- and solves the truncated RSS articles problem.

<comment><USER11> Nothing prevents an RSS reader from fetching the linked page. I believe NewsBlur does that.

</comment></comment><comment><USER60> 2nd RSS post today, and no mention of PubSubHubbub, aka WebSub? Or maybe it's just a low-level feature, not important enough? Strange days indeed.

</comment><comment><USER61> RSS, like Facebook, Twitter, email, and every other way to post to people, has its own uses in it's own situations that fit best for people in those situations. I dislike people trying to say we should universally move over to one format, and prefer the formats remain and be improved for people who can best use those formats.

</comment><comment><USER62> I'm so in-the-bag for RSS that I've written scrapers to create feeds for sites that don't support RSS...

</comment><comment><USER63> B-but you can't have javascript within RSS!

<comment><USER64> Or tracking pixels! How will the marketing department cope?

<comment><USER15> You absolutely can have tracking pixels in RSS feeds.

</comment></comment></comment><comment><USER65> Wow, I wrote some code just yesterday that consumes RSS-feeds thinking I was forever alone - guess I was wrong :)

</comment><comment><USER66> I wrote a script to periodically fetch the front page of my selected news paper web sites. Pick only the top news from there. One news. And then compile a news feed from all the sites. More like your own Google news. But one single news from each site.

Don't know how much legal it is. But I do follow robots.txt.

</comment><comment><USER67> I've been using Sage on Firefox for the last decade. Its absolutely barebones but does the job for me. However with Firefox 57 Quantum its likely it wont be supported, so I looked at Feedly, but it was a bit too Hollywood for me. Any suggestions for something simple and clean like Sage?

</comment><comment><USER68> You don't have to put the entire post in rss, even Wordpress has that option. You can easily put in a snippet and if it's interes enough people can click to read it, but yes, Web 2.0 was too open for the real world, capitalism prevails and so the $$$ comes first before anything else

</comment><comment><USER69> Google killed the RSS feeds for me. On the flip-side, I am thinking to get back to them sometime soon.

<comment><USER70> When Google killed the Reader, I switched to Feedly and still using them. Useful enough so I have paid subscription. Still using them after four years, nothing better around as far as I can see. Facebook certainly not even in the same galaxy, and I have no idea why Twitter even mentioned in that topic. IMHO RSS and accompanied readers are still the best for keeping oneself informed.

<comment><USER71> Feedly killed RSS for me. The way their mobile app scrolls[1] articles just absolutely ruined the experience and I couldn't find any better app/service before giving up on RSS entirely

[1] [https://i.imgsir.com/G0jR.gif](https://i.imgsir.com/G0jR.gif) \- weird entire page scroll going on instead of just scrolling normally. Makes it impossible to skim read the titles

<comment><USER72> I use reeder as the client, much better than feedly 's ui but feedly is still the backend. Working great since I came back to rss for about a year.

<comment><USER71> Thanks I'll give that a go. I am going to have so many unread articles if I get back into RSS reading hah

</comment></comment></comment></comment></comment><comment><USER73> I wonder if "Rankings" from sites like Reddit and HN could be considered copyright protected. I think using rankings scraped from the RSS source entry page could result in a better user experience. And give Newspapers back incentive to produce quality Content.

<comment><USER28> HN API doesn't have any limitations what so ever.

I'm not using its RSS, but I have a script running on my server every five minutes that sends a new push notification on my phone every time a HN story reaches 500 points.

Simple and straightforward way of keeping up with the tech, made in like 40 lines of Python: [https://github.com/aleksandar-todorovic/automation- scripts/b...](https://github.com/aleksandar-todorovic/automation- scripts/blob/master/hn500-to-simplepush.py)

<comment><USER74> Funny, for me 500 points would be a flag that the story is not technical enough, and probably about how the latest iPhone's UI sucks, gender inequality in SV, Google/FB/Hw manufacturer spying on our life, and many other similar topics that inevitably end up in a lot of bikeshedding

</comment></comment></comment><comment><USER75> I was using google reader with greader app on android and after google killed it, greader switched to feedly. I imported all the feeds to feedly and continued using it with greader as if nothing happened.

On other note, Feedly app is not good. An alternative for ios is reeder app

</comment><comment><USER76> I love RSS/ATOM. The only problem i have is with sites, that don't let me see the complete content inside feedly and i have to open the site in an extra new tab. Would love some suggestions for this. (other feedgraber, self hosted,...)

<comment><USER50> Feedbro has built-in Readability style engine that can transform partial feeds to full feeds (you have to set it in Properties for each feed): [https://nodetics.com/feedbro/](https://nodetics.com/feedbro/)

</comment></comment><comment><USER77> We launched a very simple RSS to mail product last year [1] and it's uptake has been steadily growing. There's still life in the RSS ecosystem yet!

[1] [https://fliprss.com](https://fliprss.com)

</comment><comment><USER52> I subscribe to "Hacker Noon" RSS feed, it sometimes throws up some interesting posts, but I swear most days 90% of them seem to be about bitcoin or other cryptocurrency.

Is there any content curation on hackernoon at all?

</comment><comment><USER78> Couldn't agree more, which is why I was so disappointed when apple removed the built in RSS reader from Safari. I now use RSS Not, but really much preferred the discreet version built into the OSX browser.

</comment><comment><USER79> For the websites that actually provide whole articles via RSS, what's your next step ? How do you keep and organize those articles ?

edit: I mean how users, not article authors, keep and organize full articles.

<comment><USER80> I don't really understand your question but if you were asking about how we actually store articles and provide such a feed, I can explain how I did it.

I made a markdown-based blog with the articles stored in a PgSQL database and, for now, two interfaces: the website, which I kept as lightweight as possible (no external content, no wasted space for ads etc) and a RSS feed, only experimental for now, which gives the latest articles without content (title, subtitle, dates and that's pretty much it), but I plan to give full article as a markdown article, but that'll need a bit of research (for images and such). Haven't made any way to change the query for latest articles but I'll add pagination the same way my list does it.

<comment><USER79> Okay, my question was ambiguous. I meant: how do _users_ store and organize full articles from RSS feeds ? I used a RSS reader before a hard drive crash, and I made the mistake of subscribing to too many feeds. Aside from cutting unnecessary information overload, how do people organize their "old newspapers" ?

<comment><USER11> Some readers (e.g. TTRSS) have a "star" button. You can then just click on the feed or category and view only the starred items.

Alternatively, you can use a separate bookmark system, like Pinboard.

</comment></comment></comment></comment><comment><USER81> I use a combination of google now + hackernews.

google now - I let it do the work and suggest me what to read. hackernews - too much good stuff to miss so i read here as well.

</comment><comment><USER82> For those looking for an RSS reader for mobile that doesn't use flashy animations and is highly customizable, I suggest checking out Newsify.

</comment><comment><USER83> Recently I was looking for an RSS reader for Ubuntu. Eventually I settled on Liferea. Does anyone have a other suggestions?

<comment><USER5> Not really it seems, unless you want a self-hosted solution like tt-rss, freshrss, or selfoss.

</comment></comment><comment><USER84> May I add, RSS feeds are also exactly what makes up an Alexa special Skill type called "Flash Briefing"

</comment><comment><USER85> This is why I made a service to serve up RSS feeds for Youtube channels, ytrss.co.

Love live RSS! :)

</comment><comment><USER86> And you can push out news on RSS as they arrive, not just "weekly (newsletter) updates" or so.

</comment><comment><USER87> Google reader. Never forget.

</comment><comment><USER88> any emacs user using elfeed ?

</comment><comment><USER89> I think sub.cafe is better than RSS or Twitter, but that's just me because I created it.

</comment><comment><USER63> Is there a service that creates "bootleg" RSS feeds of sites that don't provide one themselves? If not, why don't we create one? An RSS feed of pure content, without clickbait, paywalls, like buttons, javascript tracking nonsense...

</comment><comment><USER90> I really like the idea of RSS I just would replace it with JSON.

<comment> yoz-y I have great news for you. [https://jsonfeed.org](https://jsonfeed.org)

All major readers have already added support for it too

</comment></comment><comment><USER91> Love me some RSS.

</comment><comment><USER92> What about Atom? Isn't it better than RSS?

</comment><comment><USER93> Well there could be something better if someone rewrote it in JSON; but it works so it's best left untouched i guess.

<comment><USER94> There could be something better if someone wrote a completely new format with very strict requirements. Try implementing a RSS reader that can reliably keep track of which items/articles are new, which are old but changed, which are unchanged, etc.

There is enough wiggle room in both RSS and Atom specifications to make you go crazy with all the crappy half-baked feed generators out there, which unfortunately still do not run afoul of the specs, despite pulling all kinds of inconsistent crap.

I don't care if it's json, xml or something completely different, as long as the specs are tight and strict.

</comment></comment><comment><USER95> I don't understand where this "RSS is dead" mantra came from. RSS does what it is supposed to do and indeed there is nothing better yet.

E.g. I don't have Facebook, Twitter nor YouTube accounts (since they collect a lot of personal data about you). I use RSS to subscribe to YouTube channels. Both Twitter and Facebook used to have RSS. Now I use third party services to follow couple of pages I'm interested in: [http://feed.exileed.com](http://feed.exileed.com) (supports Facebook, Twitter, Instagram and some other) or [https://twitrss.me](https://twitrss.me) (Twitter only). I don't have Reddit account, instead I subscribe to subreddits via RSS. Any blog on LiveJournal, Blogger supports RSS. Any website built with WordPress or Drupal has RSS support out of the box. Many forums have RSS option. Even Wikipedia watch list has RSS. I'm not even talking about any news site. With some knowledge of JavaScript and Apifier.com you can turn any page into RSS feed.

Indeed there is still no any other technology that can do all this better.

(I use Inoreader.com to read RSS. It has many features, the only downside is that their free plan is quite limited.)</comment>


18 CEOs Bernie Sanders Called Out for Taking Trillions in Bailouts+Evading Taxes - <AUTHOR> http://www.trueactivist.com/18-ceos-called-out-by-bernie-sanders-for-taking-trillions-in-bailouts-evading-taxes-and-outsourcing-jobs#.VcYu6tuOmBo.facebook

<comment><USER2> If he has a problem with the tax code or legislation, he should work to change that. I think it's in bad taste for a politician to call out private individuals, whether they're journalists or leaders of industry.

<comment><USER3> But it's ok for every journalist and leader of industry to call out politicians on a daily basis? Can't have both ways.

<comment><USER2> Yes you can. That's called democracy. A journalist calling out a politician is at best speaking truth to power and at worst a noisy distraction. A politician calling out a journalist is at best intimidation and at worst a death sentence.

</comment></comment></comment><comment><USER4> Of these 18, only about 2-3 of them (Microsoft, Qualcomm, and maybe Verizon) are in the tech industry. It's not really clear this is hacker news, but if you can tie this into tech, startups, or the like, there's probably an interesting conversation to have here.

"Off-Topic: Most stories about politics [...] If they'd cover it on TV news, it's probably off-topic."

</comment><comment><USER5> Are these facts well noted by the favourite HN news rags, Washington Post and New York Times?

</comment><comment> kuni-toko-tachi Bernie Sanders is 73 years old. How many companies has he run? Zero. How many jobs has he created? Zero. He's just another in a long line of communist pied pipers like Hugo Chavez who sell the snake oil of utopia while leading their country and their countries economy to ruin. Utter fool.

<comment><USER6> Well he's at least been a senator in Vermont for quite a while, so it's conceivable he's "created jobs" there, much like many of the other politicians running for office. Beyond that, I think it's fair to say that large tech companies using offshore tax havens is kind of a shitty thing to do.

Also, what does being 73 have to do with anything? Do you need the pointless ageism to make your point?

<comment> kuni-toko-tachi You need to parse the comment as written and not through some -ism flavor of the week. You need to turn off the Daily Show and do your own thinking.

The age is relevant relative to his economic performance over that time period. Re-read what I wrote and try to parse it correctly as it was written.

<comment><USER7> This comment breaks the rules of this site. Please comment civilly and substantively, or not at all.

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

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

<comment> kuni-toko-tachi The comment was a civil answer to an accusation of ageism. I suggest the post itself is in violation since it is political in nature and non-technical. I respect this forum.

<comment><USER7> It wasn't civil; it contained several insults. Please do not post insulting comments here.</comment></comment></comment></comment></comment></comment>


Ask HN:  Is there any easy way to browse topic "Show HN" and "Ask HN"? - <AUTHOR>

I mean separately <comment><USER2> [https://www.hnsearch.com/search#request/submissions&q=Show+H...](https://www.hnsearch.com/search#request/submissions&q=Show+HN%3A&sortby=create_ts+desc&start=0)

<comment><AUTHOR> Thansk.

</comment></comment><comment><USER3> [http://hnshowcase.com](http://hnshowcase.com)

[http://showinghn.com](http://showinghn.com)

[https://news.ycombinator.com/ask](https://news.ycombinator.com/ask)

<comment><AUTHOR> Thanks.

But the last link mixed Ask and Show and other topics, So I ask this question

</comment></comment><comment><USER4> I use [http://hn.premii.com/](http://hn.premii.com/) It's working on mobile and desktop. When you click on the cog in the top left there are "Ask HN" and "Show HN" links.

<comment><AUTHOR> thanks

</comment></comment><comment><USER5> [http://skimhn.com](http://skimhn.com)</comment>


Object oriented design principles programmer should know - <AUTHOR> http://javarevisited.blogspot.com/2012/03/10-object-oriented-design-principles.html <comment><USER2> Ten buzzwords which sometimes work, sometimes don't, are vague enough not to mean much at concrete code level, and most often combined all together result in such a code bloat that one can strangle himself if not careful.</comment>


Is it possible that Tencent can save Snapchat? - <AUTHOR> http://yattell.ca/index/article/read/id/160 <comment><USER2> US regulators should block such a sale. No Chinese firm should be permitted to own a controlling interest in any communication system widely used in the US.

China doesn't allow US companies to do so in China, so why should Chinese companies be permitted?

<comment><USER3> How far would this extend to? For example Tencent owns League of Legends, a widely used video game in the US (or even, globally) with a communication tool?

What if WeChat just suddenly gets popular in the US? What should the US do in that situation?

<comment><USER4> WeChat is enormously popular in the US. Every Chinese person here uses it. That means a huge number of US students and employees.

I think the US should pass and aggressively enforce anti-snooping laws. No company allowed to monitor communication of customers over whatever platform that company is selling (unless the product requires it or that IS the service - some sort of Mood Analysis API or whatever). Would also conveniently take care of a key net neutrality point :)

<comment><USER5> As popular as Chinese community in the US. I still don't know of anyone who doesn't speak Chinese use WeChat.

<comment><USER4> But that's still a lot of Americans, regardless of the language they speak.

</comment></comment></comment></comment></comment><comment><USER6> I don't think people realize that Tencent is is even bigger than Facebook.This is a big deal if they make this deal.

<comment><USER7> Most people don't realize it because their market share is almost completely limited to one country. Also, Chinese tech companies are known for being traded at multiples greater than western ones given...investor enthusiasm.

I'm not sure what Tencent hopes to accomplish here. Western users are less interested in platforms and prefer apps.

<comment><USER8> Keep in mind the Ministry of State Security may have asked the Organization Department to suggest Tencent do this to acquire the social graph. The fact that there is investor enthusiasm only makes it easier. This is potentially equivalent to Yuri Milner's investment actions to launder Putin's money through YCombinator and get intel along the way.

<comment><USER9> FB's advisor on the WhatsApp acquisition was a boutique investment firm headed at the time by former CIA director George Tenet. To this day I think that Microsoft's acquisition of Skype (which was quite expensive at the time) was also made under the same auspices, i.e. to bring an entire social network under the control of a country's intelligence services (in this case the US services). What I'm trying to say it's that this is a well-known game that everyone is playing.

</comment></comment></comment></comment><comment><USER10> If Tencent buys Snapchat, you can say goodbye to the "privacy" aspect of Snapchat. I think the privacy aspect is what made Snapchat the "anti- Facebook." So I wonder what will be left of Snapchat if Tencent acquires it.

<comment><USER11> maybe they just want the real estate

</comment></comment><comment><USER12> This is Tencent parking cash outside the purview of Chinese regulators and market exposure. All other explanations are bogus.</comment>


Deployer – A Deployment Tool for PHP - <AUTHOR> http://deployer.org/ <comment><USER2> [http://www.deploybot.com](http://www.deploybot.com) is pretty good as well, platform and language agnositc.

<comment><USER3> We use DeployBot for a whole host of different projects and I love it. EC2, ElasticBeanstalk, and DigitalOcean deployments with everything from Worspress, Java, Node, and Laravel projects. It's really nice how flexible it has been. Also auto deploy from GitHub or BitBucket on commit is nice for development environments.

The only issue that I have is that it seems like our little secret has gotten out and they've become more popular and things are starting to slow down- certain sections of the interface have been getting very slow on the occasion I need to look at something.

</comment></comment><comment><USER4> Shameless plug: Founder of [https://commando.io](https://commando.io) here. Commando.io is a web based ssh interface to multiplex commands to servers, great for deployments. You can trigger commands via our web interface, API, GitHub integration (git push... run commands on severs), and even IOS mobile app.

Hopefully useful for others reading this thread.

<comment><USER5> Are you guys still Digital Ocean only or generic?

<comment><USER4> If it has sshd it should work, so any provider, even co-location. We just integrate with DigitalOcean, AWS, Rackspace, and Linode (allow you to import severs and tags)

<comment><USER5> Good to know, thanks.

</comment></comment></comment></comment><comment><USER6> Nice, looks very similar to Capistrano, but sometimes it's nice to stick with PHP if you're already using it.

The only problem I have with tools like this (and Capistrano) with most modern projects, is that there are usually a number of build steps related to getting production code in place, whether composer dependencies, or CSS/JS compilation, etc. With these tools, it's kinda hard to figure out how to implement this stuff, since they essentially just do a Git checkout on each server, and then run commands on each one. I kinda hate the idea of having tools to compile CSS/JS on each web server, and then each server running it's compilation separately. Has anyone come up with a clean way to separate these tasks from the task of deploying?

<comment><USER7> Have an intermediate build server like Jenkins or Bamboo that does all of that for you, packages everything up into a single deployable artifact (tarball, .deb, or RPM for example) and then deploy that out to each of your servers.

<comment><USER6> That's what I do for larger clients or projects, it's just a bummer, that smaller projects need that level of integration to follow best practices these days.

</comment></comment></comment><comment><USER8> So it's a weak copy of Capistrano 2, but 10 years late and written in PHP? I'm confused, what is the benefit of copying an established software package. You'd be better served using the Capistrano 3 for complicated deploys and Mina for simple deploys. PHP is an awful language to write a DSL and in my opinion just plain awful to use. I prefer to write Ruby, but I don't rewrite every system I depend on in Ruby.

For the record I'm maintaining a site written in PHP and I dislike PHP for real reasons(poor tooling, poor REPL, poor standard library, poor syntax) not just because it's not the language I've used the most.

<comment><USER9> PHP actually has great tooling now (PhpStorm + Xdebug). The standard library is also fantastic in terms of its breath -- almost everything is already baked into PHP. It's really inconsistent, though, which could be enough reason for someone to call it "poor".

The syntax... I dunno. I think that's strongly a matter of personal preference. I just wanted to point out that PHP can be less painful than people realize (although still painful).

Edit: also be sure to look into Airbrake for logging exception in production. I find it to be pretty indispensable.

<comment><USER8> The project I mentioned is a legacy codebase that needs lots of work to even get it to consistently raise exceptions. Many places things happen trigger_error is used, which is not caught by Honeybadger(basically the same as Airbrake) and configuring the code to raise Exceptions for errors leads to bad behavior because previous programmers used trigger_error as a debug mechanism as well. Also there are no tests, so there is no good starting point to correct the transgressions that many PHP programmers don't regard as problematic at all. It's the embodiment of everything wrong with PHP and correcting the abuses is an enormous effort.

I just looked at xdebug, it can't even come close to the Eclipse debugger for Java or Pry for Ruby.

I just get sad every time I see a new large investment in PHP because I've never had a positive experience using it compared to another language and I strongly believe that you can't polish a turd.

<comment><USER3> If you're just now looking into xdebug, how could you know the differences or make a valid comparison? For one, you can remote debug way easier than with JVM debuggers. For the 80% use case it is just as easy/just as useful. The JVM debugging tools provide way more functionality and for local debugging are just there and ready to use in a way xdebug isn't. But frankly, the fact that you're JUST looking into xdebug makes me question whether or not people should be paying you to write PHP.

I have kids fresh out of college that work for me that use xdebug all day every day, remote, over Vagrant VMs, and local with different IDEs. This is a solved issue- you clearly are working in a smelly codebase, don't have the 'advanced' PHP skills you think you do, and seem to think that PHP is awful because the other cool kids said so.

<comment><USER8> PHP isn't just bad tooling, it's a bad attitude, like your attitude. I've said that I dislike the PHP experience for many valid reason and you question my competence, experience and validity of my experiences with PHP. I looked in to XDebug and it's not the kind of tool I was looking for. It's heavy weight, requires changing the VM config and from the cached version of the website that is down at the moment appears to imply that it's best used within an IDE.

I'd like a REPL debugger that I can activate easily and use from my terminal without fucking with the VM too much. My real goal is to not have to make changes to this project beyond correcting damage inflicted by the PHP attitude of blissful incompetence and copy paste. While I do believe that you can write good code or bad code in any language, PHP does not in any way help it's practitioners to write good code and as PHP users poorly copy my favorite things from my other favorite languages they always miss the mark and loudly complain when the shortcomings are pointed out.

I've wasted far too much time responding to you, so you just keep smearing digital shit on the walls, I have code to ship.

</comment></comment></comment></comment></comment><comment><USER10> If you're at work, don't type in tit in that console. :D

</comment><comment><USER11> Anyone wants to bake a proper full tutorial on how to use it? Current documentation looks almost like auto generated from code comments..

<comment><USER12> There's not that much to learn fortunately. The getting started guide should be enough:

[http://deployer.org/docs](http://deployer.org/docs)

</comment></comment><comment><USER13> We use it for production deployment to more than 100+ servers. Really fast.</comment>


Wakeapp Call – Say hello to a whole new way to start your day - <AUTHOR> http://wakeappcall.net/ <comment><USER2> sounds like Wakie, but with more of defined(known) social connection as opposed to complete strangers: [https://play.google.com/store/apps/details?id=com.wakie.andr...](https://play.google.com/store/apps/details?id=com.wakie.android&referrer=utm_source%3Dsite%26utm_medium%3Dbanner)</comment>


Interactive Submarine Cable Map - <AUTHOR> http://www.submarinecablemap.com/

<comment><USER2> Cool map; but there are 4 submarine cables going to the Isle of Man that aren't depicted at all.</comment>


CSS tips and tricks #2-Custom form design - <AUTHOR> http://alexsblog.org/2014/08/15/css-tips-and-tricks-2-custom-form-design/

<comment><USER2> More bad advice.

Dude STOP messing with the CSS global namespace - i/e stop advising people to change the default behaviours of ALL forms / divs site wide - it has FAR REACHING implications that you're not passing on to unfortunate readers of your blog.</comment>


Twitter acquires Bangalore based startup Zipdial - <AUTHOR> http://blog.twitter.com/2015/bringing-twitter-to-more-people-around-the-world

<comment><AUTHOR> Official announcement by ZipDial: [https://zipdial.com/corp/zipdial-is- joining-twitter/](https://zipdial.com/corp/zipdial-is-joining-twitter/)</comment>


Two Lists You Should Look at Every Morning - <AUTHOR> http://blogs.hbr.org/bregman/2009/05/two-lists-you-should-look-at-e.html?awid=9096134605609987456-3271

<comment><USER2> You definitely have to force yourself to say no to things, people, ideas. For some of the day, turn off your email. Go wild and don't take your phone when you get lunch. Once you get past the anxiety, it feels great!</comment>


iTunes should be a platform, not a bloated app - <AUTHOR> http://sachin.posterous.com/itunes-should-be-a-platform

<comment><USER2> I kind of get the feeling that that's coming. I have no proof, of course, but I just have the feeling that Apple isn't satisfied with the current setup, either.

Indeed, we saw the Mac App Store launch as a separate application instead of being jammed into iTunes.

It's a lot easier to make new things separate than to break up all the existing stuff. I imagine the iTunes break-up will come, I just hope it doesn't take too long to get there.

<comment><USER3> I can't see that happening. The problem is iTunes is Apple's Trojan horse to get on Windows. They were able to separate the Mac App Store because by nature they don't need it on Windows. But almost everything else iTunes does (music, TV, movies, device management, apps, etc) needs to be cross platform to work out economically. If they were to break it up, they would have to fight to make each program popular on Windows.

iTunes will probably have to remain a monolith until iDevices can be self sufficient machines, which I don't see coming in the near future. Of course, there is no reason why they can't make it a better monolith in the mean time.

<comment><USER4> Honestly, if iTunes is Apple's Trojan horse, they really need to improve it. It is, without exaggeration, one of the worst programs I've used. I've heard it's much better on Mac, but the experience of having used it daily for years really put me off of Apple in general.

</comment></comment></comment><comment><USER5> More than that - you shouldn't even _need_ a full blown PC or Mac to use an iDevice [1]. Syncing should largely be over-the-air, with a Time Capsule/Airport Extreme style device. OS updates could be done from such a device, too - they have USB ports after all.

Although it's risky as Apple might shut you down, I think it _could_ be done by a third party with some effort. If our startup ends up going nowhere and nobody has done it by then, we will.[2] The potential is insane, IMO. It's crazy how many people we know who either _have_ an iPad as their main computing device, or who would be served well by it if they didn't have to maintain a classic personal computer to back up/update the iPad.

[1] Syncing should still be better than the current iTunes situation if you do.

[2] Maybe, _maybe_ we can eventually do it as a side project without losing too much focus. I think the market is bigger than for our current product, but it's also much riskier, and would realistically require investment, whereas we can in theory bootstrap indefinitely right now.

<comment><USER6> I seem to recall having to give them a credit card number to activate the iPad, am I wrong on this? If so, that's a good incentive for them not to offer OTA updates, etc. It puts consumers in front of content for sale, at worst.

<comment><USER5> They could move the activation into an on-device app that launches on first boot before proceeding to the home screen. In any case there currently exist hacks for activating your iDevice from a _Linux_ (!) box [1], so it clearly works without a credit card, additional restrictions imposed by iTunes itself notwithstanding.

[1] <https://github.com/posixninja/ideviceactivate>

</comment></comment></comment><comment><USER7> You can already do some of those things in a 3rd party app via API (except for in-app purchases and iTunes authentication). Of course there are downsides like the AppleScript API kind of sucks and you need iTunes app running for it to work.

However to really become a platform iTunes needs to move to the cloud. Let's hope Apple will get it right with their rumored iTunes streaming service.

<comment><USER8> Is there a reason to not use the Apple COM SDK for iTunes? link: <http://developer.apple.com/sdk/itunesvisualsdk.html> Or are we (you) talking about something more app store oriented?

<comment><USER9> That's just for writing visualizers.</comment></comment></comment>