Three Months to Scale NewsBlur - <AUTHOR> http://blog.newsblur.com/post/45632737156/three-months-to-scale-newsblur <comment><AUTHOR> And I just want to remind the technical crowd here that NewsBlur is 100% open- source: <http://github.com/samuelclay>

I've been asked quite a few times why I open-source the code. The answer is simple. Let me use an example from Joel Spolsky.

(From <http://www.joelonsoftware.com/articles/fog0000000052.html>)

        The dominant spreadsheet, with 100% market share, is Lotus 123. You're the
        product manager for Microsoft Excel. Ask yourself: what are the barriers to
        switching? What keeps users from becoming Excel customers tomorrow?

        ... <snip: barriers to entry> ...

        That's the barrier to entry. Not how hard it is to switch in: it's how hard it
        might be to switch out.

        And this reminded me of Excel's tipping point, which happened around the time of
        Excel 4.0. And the biggest reason was that Excel 4.0 was the first version of
        Excel that could write Lotus spreadsheets transparently.

        Yep, you heard me. Write. Not read. It turns out that what was stopping people
        from switching to Excel was that everybody else they worked with was still using
        Lotus 123. They didn't want a product that would create spreadsheets that nobody
        else could read: a classic Chicken and Egg problem. When you're the lone Excel
        fan in a company where everyone else is using 123, even if you love Excel, you
        can't switch until you can participate in the 123 ecology.

If you know that in the absolute worst case that you can still use the product even if it's shut down, then by golly, you have even less of a reason to not switch to it.

<comment><USER2> I tried to install NewsBlur, but instructions were not very helpful. I tried to get as far as I can, editing fabfile and installing gajillions of new python modules, but still failed.

Don't get me wrong, it is wonderful and very commendable of you to open source NewsBlur! Nor do I feel entitled to the source code or free ride (I will probably end up paying for the hosted solution). Just providing some feedback, given that you indicated that low barriers to entry are important to you.

I am not a web developer so that can partially explain my struggle with fabric, Django and multitude of webdev and devops modules that you use.

I wish you good luck and I hope that you take this wonderful product even further.

<comment><AUTHOR> This is something I'll be working on soon enough. There are many, many dependencies (not only for the web app, but there are three DBs that you have to have installed as prerequisites - mongo, postgres/mysql, and redis).

The real problem with setting up your own instance of NewsBlur is that you'll have to do your own feed fetching. This is effectively what you're paying for when you pay for NewsBlur. Let me break it down.

500 feeds updated once every five minutes is 144,000 feed fetches a day. Couple that with the original page and icon fetches, you're looking at almost two feeds every second just to keep your feeds up to date. And the average feed takes 5 seconds to completely update (feed, page, differences in stories, updating unread counts). So you have to run 10 processes in parallel, and that's already beyond the capabilities of most single machines. Then good luck keeping your DBs running clean and backed up.

Or you could pay $2 / month and never have to worry about setting up a very big stack. And you get the social community of shared stories on newsblur.com.

<comment><USER3> Three DBs? I don't suppose you have a blog post or something that explains your architecture decisions? Not criticising - I'm sure you had good reasons - but I'm rather curious as to what they were :)

<comment><USER4> Based on the Github page, I would imagine Redis as a cache, MongoDB to store the 'non-relational data' (quoted from the GH page - I'm guessing the actual articles and such) and Postgres for the other application stuff - accounts, preferences, subs, etc.

<comment><USER5> [https://github.com/samuelclay/NewsBlur/blob/master/apps/rss_...](https://github.com/samuelclay/NewsBlur/blob/master/apps/rss_feeds/models.py)

It looks like MongoDB is being used for fetch/push history, feed icon data, and article data. It's also being used for some other stuff: [https://github.com/search?l=Python&q=%22mongo.Document%2...](https://github.com/search?l=Python&q=%22mongo.Document%22+repo%3Asamuelclay%2FNewsBlur&ref=advsearch&type=Code)

</comment></comment></comment></comment></comment></comment><comment><USER6> I'd just like to point out that '$24/yr * high four-figures of paying costumers' with only one employee ensures NewsBlur will be around for a long time. :)

This is the kind of single founder "life style" startup that VC's would paw- paw that is Doing It Right that many of us aspire to. The other ones I can think of are Pinboard and Instapaper. I'd rather go this route, personally, here's to more like these. Cheers.

<comment><USER7> Indeed. If one were wise, you could stalk Google/Yahoo/BigCo properties that are being neglected, launch a paid competitor and reap the reward when they shut down.

Pinboard and now Newsblur.

<comment><USER8> Thats actually a really good idea.

I wonder what would be next? Most of Yahoo's properties seem be be neglected at the moment, but what about Google? Google News perhaps?

<comment><USER7> Probably Google Alerts. It's rather niche but people who use it absolutely rely on it. But the VC-funded Mention seems poised to take that one.

<comment><USER9> Google Alerts is a good candidate. Pardon anecdotal evidence, but the people in my circles who rely on it are executives who watch for their own names, or brand managers who watch for coverage of their company.

This information is very valuable and I'm sure a good service could charge a nice premium.

<comment><USER10> I've received some deliverables from a marketing team which uses the following service for just such a purpose (at a nice premium) @ [https://www.meltwater.com/products/meltwater-news/online- med...](https://www.meltwater.com/products/meltwater-news/online-media- monitoring/)

</comment></comment></comment></comment></comment></comment><comment><USER11>
The inevitable file descriptor limits on Linux means that for every database connection you make, you use up one of the 1,024 file descriptors that are allocated to your process by default. Changing these limits is not only non-trivial, but they don't tend to stick.

You're clearly a talented programmer, but perhaps employee #2 should be a sysadmin.

</comment><comment><USER12> "Luck is what happens when preparation meets opportunity"

Congratulations.

This is why I love SaaS. 6 figures revenue in a couple of days, and I can only imagine how much more will be made in the next 3 months... and beyond.

But it's not a once-off payday. This is recurring. 7 figure annual income is yours, Sam. People slave away for decades trying to reach a tiny fraction of this amount. Put it to good use, brother.

<comment><USER13> "6 figures revenue in a couple of days"

Those couple of days took 4 years of preparation.

<comment><USER12> Yes. Which is why the first line of my comment literally reads "Luck is what happens when preparation meets opportunity".

</comment></comment></comment><comment><USER14> That was surprisingly clueful of PayPal. Usually that part of the story is way more dramatic and ends up with alternate payment options.

<comment><USER15> Only in the stories. The majority of situations where PayPal calls probably end just like this. I've taken that call myself and didn't have a problem. The stories we read are almost all about people doing things they shouldn't with any payment processor; that's why it only gets worse when the processor learns the details.

<comment><USER16> Agreed, when the company I work for was just one guy, he had the same thing. They put a hold on funds (he had a lot of declined payments, nothing dodgy, just users not knowing how to use company credit cards), but as soon they'd checked all the paperwork they released it after a few weeks.

</comment></comment></comment><comment><USER17> Hi, So i have noticed that you are very forthcoming with data, such as providing the number of premium users on your webpage, and I hope you continue this - I really hope you become more succesful with this Google Reader debacle going on.

1) Why are you open about the number of users ? (personally I think its great) 2) How do the real-time stats work, I notice that the amount of regular users was over 20k a few days ago, and now its 8k. Are these the users who have used the client/service in the past 24 hours ? (and not the actual total amount of users)

<comment><USER18> From another comment, those numbers appear to be the new signups in the last 24 hours - and as the free option became much harder to find recently, I would expect the number of free signups to decrease dramatically.

<comment><USER19> > and as the free option became much harder to find recently

That's only temporary though.

</comment></comment></comment><comment><USER20> Will you be adding a Google Reader compatible API?

(So existing Google Reader apps can quickly switch to NewsBlur)

<comment><USER21> You can do this currently. My feeds were quickly ingested and everything worked great.

<comment><USER19> In case you wonder why you are getting downvoted: He is asking about a compatible API for 3rd party apps (Reeder, gReader and so on) to be able to connect to newsblur just by changing the API URL.

<comment><USER21> Ah ha, thanks :) Woke up this morning and was wondering why. Was a late night post.

</comment></comment></comment></comment><comment><USER22> A tad off topic, but I'm hoping the fastest way to get an answer: How does one move or delete multiple feeds at once in newsblur? There must be a way to do this, right? Say I import 100 feeds from an OPML file, then realize I actually want them all in a folder. At the moment the only way I can figure out how to do that is to click on each feed, click move to folder, click the folder dropdown box, click the folder I want, click save. Times 100. Or I can save one click each by deleting them all then re-importing. But there must be a faster way. (In Google Reader settings, one could filter all folders with a keyword pattern, and bulk move.)

<comment><USER19> Heh, wondered that myself yesterday after I realized my OPML contained old feeds for some reason. Reimporting feeds will delete your current feeds :)

<comment><USER22> Hmm.. that would be helpful. Unfortunately it looks like there are some bugs to iron out. Twice in a row now, I've created a folder, then in the folder menu got to add feeds to that folder, imported an opml file, and... the folder disappears and the feeds go into the root.

</comment></comment></comment><comment><USER23> "I had been preparing for a black swan event like this for the last four years since I began NewsBlur."

And then the black swan event comes.

And then fire everywhere.

<comment><USER24> Same paragraph:

> I did not expect it to come this soon.

</comment></comment><comment><USER2> I wonder what Samuel's attitude towards taking external financing is. Because NewsBlur is having a hell of a momentum on Google Reader news (pun not intended).

<comment><USER6> Well now that he has a graph pointing up and to the right he can _certainly_ raise money and collect developers as if they were Pokemon and play games with the valuation in the hopes that somebody Acquihires Newsblur or buys them for some opaque strategic reasons.

Maybe Google will buy them! :)

Edit: I kid, but that's actually a possibility in my mind and would be an ironic outcome. Maybe Facebook or Yahoo or somesuch will see the value of having the New Reader. Selfishly, I am hoping for something else.

<comment><USER25> IMO the best acquirer would be someone who wanted credibility among high-end technical users or journalists, not someone who wanted to turn it into a mass- market thing.

If I were Palantir, I'd probably drop $250k/yr to run the World's Best RSS Reader for the kind of research analysts who become Palantir customers, and the kind of geeks who make awesome Palantir employees. There are maybe a hundred companies you could substitute for Palantir here.

Seriously ironic that both of the likely Reader successors are YC funded (Feedly and Newsblur)

</comment></comment></comment><comment><USER26> Sam, congrats!

For a task a parallelizable as fetching feeds, I can't recommend Picloud.com enough. You can ssh into a box, provision it however you want, save that image off, and then run arbitrary commands/scripts on instances of that image, on the CPU type you want, and pay only for the seconds of usage you have. (Their "s1" core type is $0.04/hour: <http://www.picloud.com/pricing/> ) They also have a system that lets you mount the same shared "drive" from multiple instances at the same time, so if you're doing file-based stuff, it's easy.

The thing I like about it is that running another instance of your script on a new machine (or 2k of them) is trivial. No need to wait to provision a new VPS. Starting and stopping jobs is fast, so scaling up/down is fast.

(I'm swear I'm not affiliated with them. I'm using it for a side project at the moment and have been so excited about it, I want to spread the word.)

</comment><comment><USER27> It must have been an intense mix of fear and excitement trying to fix anything and everything that broke, but NewsBlur deserves it IMO. It is a great product, and I think this post makes it clear that he cares about his users' experience.

</comment><comment><USER28> I registered progrss.net a few years ago in the hope of creating a "smart" RSS reader that could help me (and others, possibly for a fee) save time by passing my feeds through easy to set up filters. The idea, sounded good, the mockups and and the prototypes looked good, it was fast and easy to use, the UX was distinctly different from all the others… but I grew tired of RSS as a whole and of woking on progrss.net. Now I don't use RSS anymore and my project was already pretty much stalled when NewsBlur was first announced here.

The day Google announced they retired Reader was "missed opportunity day", over here.

Anyway, good luck to you.

</comment><comment><USER29> Do you have a API? I was building a news reader for iOS when !kaput! Google reader (I was in the middle of integrate it). Now I wonder what to do next. I love to support another "small" players like yours...

<comment><AUTHOR> You bet I do: <http://www.newsblur.com/api>. I would love to hear about your ideas. I feature a number of third-party extensions and apps written against NewsBlur's API on the Goodies page.

</comment></comment><comment><USER30> Can I possibly buy a month or two at a time? I want to try it out without buying a whole year. I know that's cheap of me, but I'll probably be trying a few RSS readers in the near future.

</comment><comment><USER31> Congratulations on being well-positioned and ready to handle the onslaught when Google announced that they were axing Reader. You clearly were "where the puck will be" :)

</comment><comment><USER32> I tried out NewsBlur and sadly, Feedly seems leagues better.

<comment><USER33> I looked at Feedly and Newsblur last week as I look for my eventual Google Reader replacement.

Feedly turned me off because it has no open web implementation, it runs through the Chrome web store. Aside from some developer related plugins I refuse to use a completely superfluous wrapper around a website if I am on my PC.

I've tried Newsblur but it's just so "busy" (I know where my mouse is on the vertical axis thank you very much). I may warm to it, but I'll probably end up with something a little simpler. But I wish all the success in the world to conesus, a variety of small, customer focused, customer capitalized independent web service vendors is a good thing for all of us.

<comment><AUTHOR> You should lock that "dorito" that follows your mouse. It allows you to adjust the currently selected story. It's an indicator line. Maybe I should lock it by default and allow you to click on it to have it follow your mouse...

<comment><USER34> I wasn't aware you could do this. Locking it by default seems like it would make more sense.

Also while I've got you, two issues I've noticed.

1\. When I click "All Stories" to refresh my feeds it defaults to listing everything, even though I have it set so I only view one item at a time. As soon as I click the button/arrow to go to the next unread item it shows the first item as it should and everything works fine after that.

2\. I seem to run out of items after I've viewed ~20ish and I have to click "All Stories" again to fetch a new bunch

I'm using the dev site if that matters (Issues happen on both sites though). So far these are the only things annoying me and otherwise newsblur is pretty good.

<comment><AUTHOR> 1\. Intentional. Otherwise you'd stare at a blank screen until you click a story.

2\. That's an unfortunate bug, but one that will probably get sussed out when I work on scaling over the next month.

Dev is largely just a re-skin. They share a backend.

<comment><USER34> Why can't there be an option in the cast of 1. for it to automatically open the first unread story when I click "All stories"? Basically what I am doing by pressing the first unread button.

I can understand not doing that by default since people may want to see their unread feeds, but I always just go to the first unread one anyway.

<comment><AUTHOR> In that case, there's a preference waiting for you that you're going to just love...

<comment><USER34> Haha, excellent, thank you for helping me. Also "Text" view seems to be missing from the Default View preferences, is this intentional?

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> Waiting for the day that NewsBlur becomes so successful that they get acquired by Google.

</comment><comment><USER35> Props on having an exciting validating road over the next few months!

Likewise, what are some of the engineering things you'd really like some of the more dev heavy users to maybe help via pull requests with? :)

(I see that the github issues list is relatively short)

</comment><comment><USER36> Thanks for providing this service and having such great communication with users!

</comment><comment><USER37> well done with keeping this app running! I switched from Reader as soon as I noticed, and I've been reading my feeds through NewsBlur the last couple of days with no problems (after an initial setup delay)!

I have a couple of comments on how the UI works, but I'll consider those as time goes by and send you more specific feedback then (mostly I'm annoyed by things that work differently to google reader, so I'll hang back and see if they convince me...)

</comment><comment><USER38> So far I am not a user of ANY reader. Between googlenews, twitter, and HN I get my daily digest.

I would like to try Newsblur but it seems that to get immediate value I have to have been some reader user: I can migrate my googlereader account or upload an OPML file.

What I would like to see are different versions of OOTB "skins". I can sign up as an "HN-lover" and it seeds my account with 50 blogs I should follow. Then I can actually evaluate the product.

Also note that free accounts are not actually disabled. If you leave the session when you hit the paywall and login from the homepage, you now have a free account.

<comment><AUTHOR> As I mentioned on Twitter, if you want a free account but can't get around the paywall, just know that the paywall is _extremely_ leaky on porpoise...

<comment><USER39> > just know that the paywall is extremely leaky on porpoise...

This is my new favorite typo.

<comment> mkr-hn I don't think that's a typo.

</comment></comment></comment></comment><comment><USER17> If i understood the numbers correctly, newsblur has went from 1500 paying/50000 free users to 6500 paying/110000 free users?

</comment><comment><USER25> I'm interested in your decision process in picking Reliable and then Digital Ocean.

<comment><AUTHOR> Originally price, now price + API for deploying new instances. If you check out my fabfile.py script you'll see that I have EC2 setup and ready but I don't use it because it costs more, runs slower, and is a pain in the butt to maintain.

<comment><USER25> Oh, I meant vs. spending $20k on hardware, or partnering with someone like Softlayer/Rackspace as a promotional thing (I suspect either would be willing to give you a great deal to use as a marketing case)

<comment><USER40> My guess... DO offers hardware in 60 seconds. Also cheaper/faster than EC2.

</comment></comment></comment></comment><comment><USER41> I want to buy! Take my money! But your site errors out after CC deets. :(

</comment><comment><USER42> Congrats! Enjoy the ride..</comment>


A Minimal Job Aggregator to Find Your Dream Job in UAE - <AUTHOR> https://jobs-uae.com/ <comment><USER2> This was an interesting find.

[https://jobs-uae.com/office-boy-asian-at-naushiba-llc-16642](https://jobs- uae.com/office-boy-asian-at-naushiba-llc-16642)</comment>


Nobody has a million Twitter followers - <AUTHOR> http://dashes.com/anil/2010/01/nobody-has-a-million-twitter-followers.html

<comment><USER2> I'm curious how quickly most users become frequent Twitter users. My own ramping up process went something along the lines of:

Year 0: Made an account, was almost never on the site. Year 1: Started paying a bit more attention, used twitter.com primarily, posted statuses and built up followers Year 2 (present): Basically always have a desktop twitter client open, tweet once or twice a day or so and in rare circumstances spam my followers with conference or *Camp type event updates.

I will be quite interested in seeing whether or not the impact of being on the Suggested User List is felt in a year or two as those new users start coming into their Twitter own.

</comment><comment><USER3> I'm kind of shocked as to why this is a surprise to anybody?

Isn't the very basis of twitters communication platform designed to be the basis of this exact situation?

</comment><comment><USER4> So the author redefines "follower" to suit his own purposes? Makes the title a bit misleading.

<comment><AUTHOR> Well, that's exactly the point; followers in the database != followers that actually pay attention.

</comment></comment><comment><USER5> This idea seems analogous to the fallacy of web 'hits' in the 90s.</comment>


The Tech Sector's Venture Capital Is Drying Up - <AUTHOR> http://www.pcworld.com/businesscenter/article/151759/the_tech_sectors_venture_capital_is_drying_up.html?tk=rl_noinform

<comment><USER2> I liked the article but the title is misleading. IPOs are drying up (no venture-backed company IPO'd in Q208), not capital itself. Money quote from the PWRC report cited by the article: VC firms are "raising funds at a steady pace."

So maybe this is more of a macro-economic or early-exit issue than a "VC is drying up" issue.</comment>


Exwm – Emacs X Window Manager - <AUTHOR> https://github.com/ch11ng/exwm <comment><USER3> I really like exwm but I currently prefer using StumpWM: [https://stumpwm.github.io/](https://stumpwm.github.io/). If there was no StumpWM I'd use Exwm.

Both have really similar designs, but for me StumpWM has a decisive advantage: it's implemented in Common Lisp and doesn't run inside of Emacs. Still, it has pretty good Emacs integration and many commands are Emacs-inspired. For example, there's a winner-mode equivalent.

Since Emacs is not multi-threaded, if something inside Emacs freezes your whole X session will become in blocked case you run Exwm. For the same reason, it is a bit more responsive.

After a decade using XMonad, I switched to StumpWM after carefully test- driving exwm and other options. I found I really prefer manual window tiling. StumpWM is really underappreciated. It's the successor of ratpoison, which kind of started the whole tiling window manager saga in Linux.

<comment><USER4> I agree with you about preferring manual tiling, the worst thing about manual tiling managers is that there are so few choices. EXWM is my favorite with StumpWM a close second and i3 a distant 3rd.

I've been using EXWM for a few years now and the fact that emacs isn't multi- threaded has caused me very little pain. It really isn't something to worry about. I've had way more issues with StumpWM than I have ever had with EXWM.

I find it slightly amusing that you list Common Lisp as a plus for StumpWM. At the time the gigamonkeys lisp book was published I was using StumpWM and had some issues I wanted to fix (which still existed when I finally switched to EXWM). Trying to learn Common Lisp exposed me to a community that is, to this day, the absolutely most toxic I have ever experienced. For a decade lisp was anathema to me until I discovered Clojure and from there realized that the Scheme and other non Common Lisp communities are great.

<comment><USER5> Speaking of tiling WMs in general - is there any tiling WM that can be controlled entirely by mouse? I find that I have to do any sort of window management rarely enough that shortcuts aren't worth learning, but I do like tiled windows, so if there's something where you can e.g. lay things out by dragging them around and having them snap etc would be much preferable.

<comment><USER4> I'm pretty sure that KDE at least (no idea about gnome) has the same kind of tiling feature that recent Windows version have where dragging a window to the left/right/corners tiles it.

Before I discovered tiling window managers I used to use evilwm and later fvwm customized to work the same as evilwm. Both of those window managers had options to make windows snap to the screen edge or each others borders if moved within so many pixels of each other. Maybe something like that would work for you?

<comment><USER5> Tiling in Windows isn't full featured - you can tile windows by dragging, yes, but as soon as you resize them, you get disconnects. I want something where I can e.g. snap two windows side by side, and then drag the divider between them, such that it resizes _both_ windows.

</comment></comment></comment></comment></comment><comment><USER6> EXWM is great but one place it is in dire need of help is managing fullscreen applications such as videogames. Right now, those windows are unmanaged, meaning they don't show up in your buffers. If you manage to leave the unmanaged window to check something else, it is impossible to return and you need to force kill the application in question.

It is a big big problem and one that has almost driven me to leave EXWM more than once. The developer has stated this is intended behavior which is insane to me.

<comment><USER7> I just started using exwm and was wondering about the cause of this, thanks for sharing. There should really be a way to open unmanaged windows into their own individual workspaces.

<comment><USER6> The way to get around this, until (or if) this is ever fixed, is to first switch to a different numbered workspace than your primary then open the fullscreen app there. If you need to look something up without quitting the app you can then just use whatever keyboard shortcut you've assigned to your primary to switch.

<comment><USER8> I do the same for games in StumpWM: I just switch to an unused virtual desktop.

I don't really see the issue once you're used to it.

</comment></comment></comment></comment><comment><USER9> Is it possible for emacs-exwm to run within another window manager, so that I use i3 as my main WM, but can also open X windows inside emacs?

Love emacs, but I hang/tweak/break it enough that I would be scared to use it as my main WM. But it would be awesome to open R graphics inside it, a la Rstudio.

<comment><USER10> back when I last looked, xnest[1] was the go-to for that sort of thing. It's been the best part of a decade though, so YMMV.

[1] [https://www.x.org/releases/X11R7.7/doc/man/man1/Xnest.1.xhtm...](https://www.x.org/releases/X11R7.7/doc/man/man1/Xnest.1.xhtml)

<comment><USER11> I switched to Xephyr[1] for reasons I can't remember some time ago, iirc it superseded xnest.

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

</comment></comment></comment><comment><USER12> How much configuration/yak shaving is required to get this or StumpWM running? I would love to set this up but am always afraid it will suck 3 days of my time

<comment><USER13> If your distribution packages StumpWM, it just works. I can use it very happily with zero configuration, although I do change the font.

<comment><USER14> What distro do you use?

<comment><USER3> I fixed the NixOS package, it works fine now.

The Arch AUR package is also fine.

Lastly, you can go the Quicklisp route (which is a Common Lisp package manager, equivalent to pip or gem). That works fine too and is distribution independent.

<comment><USER13> Cool, I've been using StumpWM from an old Nixpkgs tree because it was broken for some time, I guess I can upgrade it now!

</comment></comment></comment></comment></comment><comment><USER15> Why not just run a tiling wm like i3 and use emacs 'make-frame'.

<comment><USER13> With EXWM, X windows are Emacs buffers and rendered inside of Emacs windows, so you switch between X windows the same way you switch between Emacs buffers; you use the same tiling system for both Emacs and other programs, so you don't need an extra set of key bindings, etc. It's a very nice unification.

<comment><USER16> Does emacs have a common leader key set up ? I'm new to emacs

<comment><USER17> It can, and a significant part of the community uses that setup including me. You might be interested in checking 1\. Spacemacs - [http://spacemacs.org/](http://spacemacs.org/): A config for emacs with starter packs. They have a good collection of leader key and vim bindings. 2\. evil mode and evil-leader - Well integrated standalone vim emulation and leader key.

I personally started building into vim keybindings in emacs via spacemacs, and then over time created my own config with the features I needed from spacemacs (which is much more than just vim emulation).

PS: Should also mention [https://github.com/noctuid/general.el](https://github.com/noctuid/general.el). I don't use this one, but it is pretty popular too.

<comment><USER16> Thanks! I hopped ship from vim to emacs recently precisely because my vim setup was getting super bloated from adding hacky extensions to try to make it like an IDE. Trying to set up an ide per language in vim is an exercise in frustration.

I guess I made a good choice since emacs is able to integrate an x manager (lol).

The issue for me is my tmux leader is Ctrl-f and my vim Ctrl-p uses ctrl-p.. ctrl-d and ctrl-u are used in vim for page up and down. And some other nice Ctrlkeys are taken by vim as well. I will need to carry these key bindings into emacs evil mode...

So Really running out of good leader keys I can use !

I started on evil-mode only. Heard about space macs but I wasn't sure how well it could work with emacs ide-packages such as SLIME for lisp (and I will want to find emacs ides for Java, Js, Python, C, Cpp, ruby, Ocaml - any suggestions here much appreciated as well)

<comment><USER18> Also consider [https://spacevim.org/](https://spacevim.org/) (inspired by Spacemacs)

<comment><USER15> or, avoid spacemacs & spacevim, and just install evil-leader, evil-surround, and evil-matchit. Emacs starts up faster in this case too.

<comment><USER19> Recommendation to a former Vimmer who wants to try Emacs to avoid Spacemacs IMO is irrational. Spacemacs and Doom-emacs are the best things to try. Spacemacs is well documented, community supported and extremely popular among former Vimmers. Trying to learn and configure Emacs from scratch usually does the opposite effect - an overwhelmed person gives up and runs back to the comfort of the familiar tool.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER20> That is really cool!

I just recently started using i3wm but miss my some features from OpenBox, this seems like it has some features of both i3wm and OpenBox.

But will it work well with dmenu/i3bar i wonder?

</comment><comment><USER14> Can someone explain to an emacs noob what this does exactly? And how it differs from the window manager of Windows/Mac for example.

<comment><USER19> read my comment above [https://news.ycombinator.com/item?id=19141645](https://news.ycombinator.com/item?id=19141645)

</comment></comment><comment><USER21> Emacs is my favorite software (I do "basically" everything in emacs, except I also use firefox) but how is exwm a ood idea? Emacs is single threaded... How did they solve this problem?

<comment><USER22> The answer is that they didn't. If emacs freezes up, you just have to wait.

<comment><USER19> In reality this almost never happens. Besides - it is so lightweight - <USER2> a session and starting a new one takes seconds.

<comment><USER21> Not sure what you mean? I don't use exwm but my emacs gets stuck e.g. when tramp-mode is connecting to ssh. This is not a problem for tasks I use emacs for, but if my entire OS gets stuck because I'm trying to connect a server, I'd get annoyed.

<comment><USER23> Maybe it's less of an issue because your window manager doesn't need to connect to ssh servers or even do any kind of heavy lifting.

</comment></comment></comment></comment></comment><comment><USER24> What's the value of the dynamic workspace support being built in to EXWM, rather than using one of the many packages which does something similar (e.g. persp-mode.el)?

<comment><USER19> I'm using Spacemacs and Layouts (they based on persp-mode). Either way - multi-monitor setup is a pain, but that's IMO more like X11 problem. I rarely use multiple monitors with my Linux machine though.

</comment></comment><comment><USER25> It has as much impact on my workflows as Magit does. If you are an Emacs user on Linux, you should give it a try.

<comment><USER26> You have to tell us what you were using earlier?

Magit people usually compare with stock git.

<comment><USER19> I can share my anecdotal experience. I've used IntelliJ for about 7 years. For a long time I hesitated to switch to Emacs because IntelliJ has superb git integration. I thought Emacs simply cannot deliver same kind of experience. Oh boy - how wrong I was. Not only Magit turned out to be way more capable, but I also learned so much more about Git internals. I had no idea about so many things you can do with it. Most Git UIs are shallow and don't let you do extremely advanced stuff, like they're afraid users will be overwhelmed and perplexed. Magit doesn't lie to you, doesn't try to hide things.

I simply can't imagine my life without Magit, Org-mode and (EXWM on Linux).

</comment></comment></comment><comment><USER19> Let me try to explain what so awesome about this project and why I have chosen it instead of other, more popular WMs. The function of a window manager like managing windows to me is kind of secondary - more important is to have a complete keyboard-driven workflow.

What this exactly means to me is the ability to manage as much possible with keeping fingers on the "home row", ideally without having to touch mouse or arrow keys at all. Is that achievable? Without having to introduce plethora of different keybindings?

Yes, that's possible with modality. So for example: I want to be able to control my music volume by pressing `j` and `k`. And move windows up and down also by using `j` and `k`. And resize windows vertically, again, by `j` and `k`. And move windows across multiple monitors, and resize font in my browser, scroll up and down in my pdf viewer, etc. etc. Sounds crazy? Well, maybe. But I promise you, once you get used to it - you wouldn't want to go back to your ordinary, boring and complicated old way.

My main work machine is a Mac and fortunately for OSX there's an automation tool called Hammerspoon. One day I wrote a nice config inspired by Spacemacs, so for the lack of better ideas I called it Spacehammer. You can find it here: [https://github.com/agzam/spacehammer](https://github.com/agzam/spacehammer).

To my surprise sadly there's nothing similar to Hammerspoon exists for Linux. Initially I simply wanted something trivial: "how do I rebind `Ctrl+Tab`/`Shift+Ctrl+Tab` to `Win+J`/`Win+K` so I can switch between tabs in my browser more efficiently?". See? `j` and `k` again. Even something simple like that turned out to be difficult to achieve. And AFAIK none of the popular WMs let you do that sort of stuff. With the exception of StumpWM (formerly known as RatPoison).

I wanted to try StumpWM but honestly I didn't give a heartfelt attempt to actually use it. I am still skeptical and the main reason is - CommonLisp. It is an amazing language but its popularity has declined drastically and at this point it's pretty much "Latin" of PLs. Yes, it's cool to know it but practicality of that knowledge might be a bit questionable. Learning whole new language for the sake of configuring a window manager doesn't feel very enticing to me. But at some point maybe I will give it a try.

Then I found EXWM. And almost immediately regretted not trying it out sooner. It took a few days to configure it and next thing I know I wrote a plugin for it: [https://github.com/agzam/exwm-edit](https://github.com/agzam/exwm-edit). Yes, the project is still young and from time to time you stumble upon some rare quirks. Multimonitor setup is a pain. It doesn't support "gaps" so praised in other WMs - I personally don't care about aesthetics of my WM though.

With EXWM everything simply becomes just a buffer in Emacs - your browser, Slack, pdf-viewer, music player - you name it. Because everything goes through Emacs you can create complex keybindings and "simulate" keypresses, for example: you can make `Win+W` to act like `Ctrl+W` in your browser or any other app (no context switching between Mac and Linux).

It is indeed an awesome project and if you are an avid Emacsen and seasoned Linux user - I really encourage you to give it a try.

<comment><USER8> Your next to last paragraph might just have sold me on EXWM.

</comment></comment><comment><USER27> This looks just like AWesomeWM - Only more awesome!

</comment><comment><USER28> Needs a text editor, though.

<comment><USER13> With Exwm you can run KDevelop or whatever editor you like inside Emacs!</comment></comment>


Indie Game Dev: From Napkin to Profitability - <AUTHOR> http://casualconnect.org/lectures/indie/diy-indie-game-dev-from-napkin-to-profitability-birkett-rogula-neville-baxter/

<comment><USER2> Is it just me or is the video's audio track barely audible? I have my volume cranked to max and I can barely make out what they are saying.

<comment><USER3> I don't know if video has been updated but sound works perfectly for me</comment></comment>


0h h1 – A little logic game - <AUTHOR> http://0hh1.com

<comment><USER3> This is Unruly from Simon Tatham's puzzle collection: [http://www.chiark.greenend.org.uk/~sgtatham/puzzles/](http://www.chiark.greenend.org.uk/~sgtatham/puzzles/)

I install this on literally every device I own. Windows machines, linux machines, android machines. It's a great source of small, procedurally generated puzzles. I often just put on some music and zone out playing Pearl for a while.

e: If you're on Ubuntu: sudo apt-get install sgt-puzzles

e2: I misremembered, it's not precisely Unruly--Unruly allows you to repeat rows/columns. But whatever, go install these games!

<comment><USER4> That collection is technically kind of interesting too. The puzzle code itself is written in portable C, using a custom-built common framework and UI abstraction layer that allows it to run on pretty much any platform.

[http://www.chiark.greenend.org.uk/~sgtatham/puzzles/devel/](http://www.chiark.greenend.org.uk/~sgtatham/puzzles/devel/)

<comment><USER5> Also, each puzzle has its own custom constraint solver to generate fresh puzzles with desirable characteristics. For example, the version of minesweeper in the collection generates puzzles such that the first click never reveals a mine and that there is always a logical path to the solution -- no guessing needed.

<comment><USER6> I always wonder with these kinds of puzzles how one can come up with an initial settings that (a) yields a unique correct solution and (b) has a logical next step at every step (so doesn't require thinking ahead x steps to arrive at a conflict)

<comment><USER7> For at least Loopy, the generator works by generating a full puzzle with all hints, and then removing hints one at a time until the solver can't solve the puzzle. So the complexity of the puzzles that can be generated are dependent on the cleverness of the solver.

<comment><USER6> That's less elegant than I hoped for. Still works though!

</comment></comment></comment></comment></comment></comment><comment><USER8> A few bits of feedback:

\- There's no list of rules anywhere. If you forget any rule, you need to go through the tutorial again.

\- Is the tutorial missing a rule? (It has the "no two identical rows" rule, but it seems like you also can't have two identical columns).

\- The endgame needs work. Right now it's simply highlighting every square that's wrong, rather than just telling which rule was broken. This is absolutely ridiculous, since at that point the player can simply flip every highlighted square and pass (and score the full points?).

There are two alternatives I can think of:

a) Instead of telling which squares are wrong, find an instances of the rules being broken. So for example highlight two rows that are equal, or a column of 3 identical squares, etc.

b) End the game when the board is full, but dock points for incorrect spaces, rather than force the player to go through the busywork of just toggling all squares that were wrong.

<comment><AUTHOR> Hi, I'm Martin, the author. Thanks for analyzing the game and the recommendations. I was actually working on your solution a already. So it will be coming up shortly. Also, for those who were suggesting to put it on iTunes and the Play Store, it already is. Enjoy playing! - @mrtnkl

<comment><USER9> You should put a link to the app in the app stores on the website.

</comment></comment></comment><comment><USER10> It would be better if I could set red or blue with one click rather than having to cycle through. Some UI like this, where X is Red and O is blue:

         _______
        |     \X|
        |      \|
        |\      |
        |O\_____|
         ```````

Tapping the red or blue corner of an unset gray tile would would set the tile to the tapped color, and tapping a red or blue tile would unset it back to gray.

Also, the "fixed" tiles of the puzzle need to be presented in a different style from the "dynamic" tiles the user can set.

Is there a GitHub repo for this?

<comment><USER11> Or just use the right mouse button for blue.

<comment><USER12> It would make it hard for touch devices

<comment><USER13> So they can use dual tap? No reason to dumb more capable platforms down to the lowest common denominator.

<comment><USER14> dual tap is kind of like clicking twice

<comment><USER15> "No reason to dumb more capable platforms down to the lowest common denominator."

</comment></comment></comment></comment></comment></comment><comment><USER16> (Edit: so this is a pre-existing game concept. Should have read the about page first :) Thanks for showing me this game in a nice little implementation anyway. & my feedback/suggestion still stands.)

Outstanding work. This is an excellent, simple and original logic game, well done.

Only negative thing I experienced: it can be tough(/not particularly fun) to find similar rows/columns when playing on larger grids. And I don't feel like finding similar complex line patterns is where the game design esthetic shines. Not sure how you could solve this. Perhaps some sort of visualization of similarity of rows for larger grids? Say two rows are identical (minus missing tiles), then the same little icon could appear to the right of each row. Icons could be differentiated by shape, or color. Just an idea. Good work :)

Disclaimer: I'm a game designer

<comment><USER17> I probably wouldn't do something as blatant as "always pre-mark identical rows for me". But something simpler like a "highlight all rows that currently match this one" button would be nice for probing for identical rows.

</comment></comment><comment><USER18> I like the effort that went into the eyeball command. It speaks to you like a human. That is, rather than showing a cell hint, it works out how you would get there and tells you that.

I did similarly in a sudoku game, it is an interesting exercise that then colors your thinking about error messages in future programming.

</comment><comment><USER19> 10x10 solved. It seems too easy. It is almost an auto solver, you just have to find two blocks of the same color together, or two blocks with the same color with an empty block in-between.

Great for a young person, but I would like to see a version with more rules and constraints to follow.

The UI and the UI feedback is outstanding though.

<comment><USER20> Oddly enough, I found the 10x10 easier to solve then the 6x6 and the 8x8. After a couple play-throughs I think I know why. When trying to determine your next move, there's 3 options.

1\. Look for a chance to play a block that wouldn't cause a chain of 3 colors together.

2\. Look so see if the row or column has enough of a certain color in it.

3\. Look to see if the row or column is a duplicate of another.

1 and 2 are easier to spot, but 3 is actually quite difficult and takes a lot of time to determine. On the 10x10, option 3 is almost never the determining case, probably because there are so many more possible configurations for a row or column, vs on a 6x6.

<comment><USER21> Those three heuristics seem to work for the puzzles on the site, due to a limitation of the site's puzzle generator. However, there exist puzzles of this type which cannot be solved using only those three heuristics.

Take this one, for instance:

      - O - - - -
      X - - O X -
      - - - - - -
      O - X - O -
      - - - - - <USER2>
      X - O - X -

This puzzle has the unique solution shown below, but none of your three heuristics will make any progress on it.

      O O X X O X
      X X O O X O
      X O O X O X
      O X X O O X
      O X X O X O
      X O O X X O

One of the ways you can solve this is to note that the square in the upper- left corner must be O. This is because if it were X, then there would be three adjacent Os in the first column. This insight is due to firstname.lastname@example.com.

<comment><USER20> Except that your puzzle has multiple solutions, so I'm guessing that's why it breaks the heuristics. The same would be true of a sudoku puzzle with too few starting numbers.

      O O X X O X
      X X O O X O
      O O X O X X
      O X X O O X
      X X O X O O
      X O O X X O

<comment><USER21> Your solution is not valid. The 3rd column and the last column are duplicates.

</comment></comment></comment></comment></comment><comment><USER22> Interesting! It looks like the game never requires you to backtrack, there's always a way forward by applying some rule exactly once. I guess that's why you have the requirement for unique rows and columns (which is pretty jarring gameplay wise), otherwise the forced games would be much more boring.

That kinda limits the possible intellectual enjoyment from the game, though. Without the requirement for unique rows and columns, the game would become Simon Tatham's "Unruly" ([http://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/unrul...](http://www.chiark.greenend.org.uk/~sgtatham/puzzles/js/unruly.html)), which is extremely fun because you need to think ahead :-)

<comment><USER21> _It looks like the game never requires you to backtrack_

There are puzzles of this type that require either backtracking or exceedingly complex heuristics. However, the site only seems to generate simple puzzles that do not require backtracking.

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

</comment></comment><comment><USER23> Is every puzzle deterministic? I've twice now run out of rules to apply, just seen _a_ solution and tapped it in. I'd hate to have to go and unmark all the squares since I guessed!

<comment><USER24> There is always a solution which doesn't require guessing.

<comment><USER21> I would be very interested to hear an explanation of how to solve the puzzle below without guessing. For reference, the unique solution is on the right.

      - - - O - -               O X X O X O
      X - - - - X               X O O X O X
      - - - - - O               X O X O X O
      - - - X O X               O X O X O X
      - - - - - X               O X O O X X
      - - X - - O               X O X X O O

<comment><USER25> Order to fill in the board (1, 2, 3, ... 9, A, B, C, ... N):

      B C D O 2 1
      X 3 G N 4 X
      M N H I 5 O
      F E F X O X
      L K J 6 A X
      9 8 X 7 8 O

Reasoning:

      1. finish column
      2. avoid OOO in row
      3. avoid OOO in row
      4. avoid OOO in row
      5. avoid OOO in column
      6. don't duplicate column 6
      7. avoid XXX in column
      8. wrap XX on both sides
      9. finish row
      A. finish column
      B. avoid OOO in column
      C. avoid XXX in column
      D. finish row
      E. don't duplicate column 5
      F. finish row
      G. avoid OOO in column
      H. avoid OOO in column
      I. avoid XXX in row
      J. finish column
      K. avoid OOO in row
      L. finish row
      M. finish column
      N. finish rows

<comment><USER21> Nice work! Step 6 was the one that eluded me. Using that principle I've now been able to solve several boards that I previously thought required guessing.

<comment><USER25> Yeah, finding step 6 took me much longer than any other step. (Followed by step E.)

</comment></comment></comment></comment></comment></comment><comment><USER26> The fact that the game doesn't accept valid solutions besides the one it wants is a turn-off.

<comment><USER27> I've found that it seems to accept any valid solution. Perhaps your solution wasn't as valid as you thought?

<comment><USER28> I finished an 8x8 and it didn't accept. Showed it to 4 co-workers and nobody could find any issue with violating the rules... Should've screenshotted.

</comment></comment></comment><comment><USER29> There are app versions too!

iOS: [https://itunes.apple.com/us/app/0h-h1/id936504196?mt=8](https://itunes.apple.com/us/app/0h-h1/id936504196?mt=8) Android: [https://play.google.com/store/apps/details?id=com.q42.ohhi](https://play.google.com/store/apps/details?id=com.q42.ohhi)

</comment><comment><USER30> [http://imgur.com/EYF3kzS](http://imgur.com/EYF3kzS)

I don't understand what's wrong here.

<comment><USER31> Rows 3 and 5 are identical.

<comment><USER30> Oh, right. But what about the ones on row 1?

<comment><USER32> Well if you switch the squares on row 3, you have to switch the square on row 1 as well. Otherwise the columns will not have even numbers of red and blue squares.

<comment><USER30> Oh. It's really confusing to show not only the current mistake but also the mistakes that would be introduced by fixing it.

<comment><USER32> True. There is only a single solution to each puzzle, so it just highlights all the blocks which don't match the known solution.

</comment></comment></comment></comment></comment></comment><comment><USER33> Really nice idea, but it seems like quite a reliable way to win is to fill all the squares in red, and then change all the places it tells you are wrong.

Perhaps rather than pointing out which cells are wrong, highlight the group/row/column that break the rules instead. That might make it slightly harder.

</comment><comment><USER34> This is basically [http://www.conceptispuzzles.com/index.aspx?uri=puzzle/tic- ta...](http://www.conceptispuzzles.com/index.aspx?uri=puzzle/tic-tac-logic)

If you are interested in those kind of puzzles there might be more logic puzzles on this page that you like.

</comment><comment><USER35> Does this remind any one else of Sudoku? In the same vein at least. Anyways very cool, great job!

<comment><USER36> I felt I reused more logic from Griddlers/Nonograms, actually.

</comment></comment><comment><USER37> For the 8x8 table there's a trick you can do which I suspect the heuristics never considers (because the rule violation is not 1 but many steps away): if you have a chit of one color on 1, 5 and one more above 5 then any more above 5 can't be of this color otherwise 2-4 all three would need to be of the opposite color and that's illegal.

Same for 1,2,4: 5 is of the opposite color otherwise 6-8 are of one color.

</comment><comment><USER38> If you resize the browser window, the UI kind of loses its mind, and can't be restored without reloading the whole page.

[http://i.imgur.com/BU5L61L.png](http://i.imgur.com/BU5L61L.png)

</comment><comment><USER39> Having trouble finding the problem with this solution: [http://i.imgur.com/ToduSGR.jpg](http://i.imgur.com/ToduSGR.jpg)

Anyone see what the issue is? Been staring for 20 minutes . . .

<comment><USER40> Rows 4 and 7 are identical

<comment> T-hawk This is correct. I think I may have fat-fingered a downvote on you.

<comment><USER40> With great power comes great responsibility.

</comment></comment></comment></comment><comment><AUTHOR> 0h h1 is now available on Github. Clone away :)

[https://github.com/Q42/0hh1](https://github.com/Q42/0hh1)

</comment><comment><USER21> Here's a solver for the puzzle: [http://pastebin.com/ws6wv6Ew](http://pastebin.com/ws6wv6Ew)

It's written in clingo ([http://en.wikipedia.org/wiki/Answer_set_programming](http://en.wikipedia.org/wiki/Answer_set_programming))

</comment><comment><USER41> Awesome, this is really well done. I especially like how the hint function reminds you of the rules you've forgotten.

</comment><comment><USER42> It would be nice if you could set the color to blue by right-clicking rather than double-clicking.

<comment><USER43> let us know how to right click with a single touch device then

<comment><USER44> double tap

</comment></comment></comment><comment><USER45> Clicking the top row seems broken sometimes. I suspect when I think I'm clicking a cell on the top row that I'm actually clicking the board size element ("4x4" or "10x10"), and it's not transferring through to the underlying cell.

</comment><comment><USER46> Love the game. Just wrote a solver in Python:

[https://github.com/fogleman/OhHi/blob/master/main.py](https://github.com/fogleman/OhHi/blob/master/main.py)

<comment><USER21> It doesn't terminate on this one:

             '00....',
             '110010',
             '......',
             '0.1.0.',
             '.....0',
             '1.0.10',

This puzzle has a unique solution (See [https://news.ycombinator.com/item?id=8606098](https://news.ycombinator.com/item?id=8606098)). To give your solver a hint sufficient to solve the puzzle, set the first row to:

             '00..0.',

<comment><USER46> Yeah, my solver is pretty basic. Was that puzzle from the website? BTW, love your solver... how did you learn about clingo?

<comment><USER21> _Was that puzzle from the website?_

No, my friend and I made that one. It can be solved without guessing, but it takes another heuristic beyond the three or so that people usually use. We also have ones that require guessing (can't be solved with any reasonable heuristics as far as we know.)

I learned clingo to solve puzzles and business scheduling problems. Check out my web site [http://www.takingthefun.com](http://www.takingthefun.com) for other games and puzzles I've solved with it.

</comment></comment></comment></comment><comment><USER47> Maybe it's just broken for me? All I see is a dark screen, although all sources load. I also downloaded the page and sources and tried to launch locally- nothing works. Maybe it's my locked down work computer?

<comment><USER48> i am getting webpage unavailable

</comment></comment><comment><USER49> This is really fun! My suggestion is to think of a more memorable name. I've played several times today and I've forgotten the name every time and had to come back to HN to find it.

<comment><USER49> 0h h1 oh hi I get it now, oops!

<comment><USER50> _You_ get it, but will the masses remember the name? I doubt it. Terrible name when it comes to mass appeal; kitchy name for techies.

</comment></comment></comment><comment><USER19> edit: I'm wrong.

I have found a correct solution, yet the game doesn't accept it:

B r r B

r B B r

B B r B

B r B r

The _correct_ solution was:

B r r B

r B B r

B B r r

r r B B

My guess to this is that there are more than one solutions to the problem and checking if the board is solved is done by finding the first solution and comparing it to yours.

<comment><USER51> Your third row contains 3 B's and only one r. Each row and column has to have an equal number of each.

<comment><USER19> Well that's embarrassing.

<comment><USER51> Earlier today when I saw this thread I came to post my game that "should have won but didn't", only to see to many other people posting the same. For me it was the "no duplicate columns or rows" rule that I didn't notice. Something about this game is tripping a lot of people up.

<comment><USER19> The thing is I know about the rule of equal number in each row and column, and have used it to solve a few 10x10, but when switching to a 4x4 I forgot it exists. I took some time and went trough the rules I knew, before posting this "error", but that one rule was gone.

</comment></comment></comment></comment></comment><comment><USER52> Very cool concept! At first I thought it was going to be like 2048, but it ended up being more of a challenge which I enjoy. Would love to see an app version of this

</comment><comment><USER53> Very nicely done.

It seems like the solution is always unique, for a given starting point. Is this the case?

</comment><comment><USER54> Would love to disable the helper at the end of the game. Kind of ruins it for me. Otherwise, it's fun!

</comment><comment><USER55> I would like to know what tools/frameworks/languages were use to develop this cool game. I know it boils down to HTML5/CSS/JS, but was it DART? TypeScript? What frameworks did you use? I want to start a small game as a web app, but I'm having trouble settling into which tools ... so far I'm tinkering with DART and Polymer ... ideas, suggestions?

<comment><USER27> I'm making an assumption here that you don't have a lot of development experience. Given that: start with the basics. Pure javascript/html5/css. You'll then learn what you want out of a framework and will have a better foundation for the next project (which might be a rewrite of the same thing).

You'll also get a first-hand view of how screwed we are in the HTML5 "standards" department,

<comment><USER55> Actually I have quite a bit of programming experience, and that is the reason why going straight to Javascript (as I have done before) does not seem productive ...

</comment></comment></comment><comment><USER56> Bug? [http://imgur.com/DmSGy76](http://imgur.com/DmSGy76)

<comment><USER57> I got a similar thing - a different valid permutation than the "official" one.

[http://i.imgur.com/yzD9qFL.png](http://i.imgur.com/yzD9qFL.png)

<comment><USER56> Well, at least I'm not the only one who apparently didn't pay attention for half of the tutorial. :)

<comment><USER57> I didn't have any three-in-a-rows, nor identical rows. What rule are you referring to?

<comment><USER57> Oh ok, rows 3 and 6 are identical. I feel stupid now.

<comment><USER58> Seems it would be better if the "that's not right" error highlighted the matching rows rather than what to click on to win.

</comment></comment></comment></comment></comment></comment><comment><USER59> I have a feeling we're embarking on the next 2048-like trend! Awesome game!

</comment><comment><USER60> Fun, its a lot like binairo

</comment><comment><USER61> it's like playing Sudoku merged with Minesweeper, I really enjoy it!

</comment><comment><USER62> This is absolutely fantastic -- love it! Thanks for making this.

</comment><comment><USER63> It makes a mistake when more than one solution is possible.

</comment><comment><USER64> You should have an overview of the rules on the game page.

</comment><comment><USER65> This is awesome, but tutorial seems slow and boring.

Friendly reminder: launch iOS/Android version before someone else does

<comment><USER66> Eh? I thought the tutorial was great. Took less than 2 minutes, I totally understood the rules, and had completed a sample puzzle. What more could you want?

<comment><USER67> A way to just see the damn rules! :)</comment></comment></comment>


Could Cats and Dogs Feel the Same Emotions We Do? - <AUTHOR> http://nautil.us/issue/35/boundaries/can-a-cat-have-an-existential-crisis <comment><USER3> It's interesting that scientists talk about animals displaying "anxious behavior," rather than "being anxious," because we don't "know" what's actually going on in their minds. But we're perfectly willing to believe that none of our fellow humans are philosophical zombies[0], even though we don't know other people's true state of mind, or if they even have a state of mind, anymore than we know about rats' or cats'.

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

<comment><USER4> Our evidence is much, much, much better in the case of people. We talk to them, dance with them, have sex with them, have a lifetime of interpreting subtleties of their tone and body language and power politics. We are the same species as they are.

It makes sense to talk about not knowing the mind of a cat or dog in a way that it does not make sense to say the same of a person, even if you grant that "you never really know someone else," and even if you grant the technical possibility that everyone else is just a sophisticated automaton (though it's unclear what that would even mean, or how that would change anything).

<comment><USER5> >We talk to them, dance with them, have sex with them, have a lifetime of interpreting subtleties of their tone and body language and power politics. We are the same species as they are.

How is this any more of an evidence?

<comment><USER6> I would say these are all different ways to know somebody. We do after all speak of knowing somebody intimately as opposed to a passing acquaintance. There's a wide gap between the two.

</comment></comment></comment></comment><comment><USER7> > "Do animals have mental states? We don't know, and we can never know for > sure," he said in an interview with BrainWorld magazine in 2012. For LeDoux, > observations of behavior aren't enough to give it a label like "anxiety" > when we can't enter into the animal's subjective experience. It might be > emotion, it might also just be an automatic response to danger, and without > any way of entering into the animal's brain—the way language allows us to, > at least to a certain mediated degree, with other humans—we can't assess > that.

I can't disagree more strongly with this. Sure, we can never know "for sure". But it's the same with other humans. Language, despite what is said here, doesn't solve that, even if it feels that way.

In other words a human saying "I feel happy" is not actual evidence that they are having a subjective experience like our own feeling of happiness. Or rather, it is evidence, but no stronger than smiling. Which, in turn, is the same type of evidence as a dog wagging its tail and showing other signs of happiness.

We can attribute mental states to both humans and animals to the same extent. Of course, they might be different - we may never know what it is like to experience the world through sonar, and animals may not feel some specific human emotions. But anyone that has loved a pet knows the pet can feel things, just as well as they can know that other humans feel things.

<comment><USER8> Anyone who has ever had a dog (or cat, I suppose) as a pet can tell you that animals do have mental states. And any farmer across written history (minus last 120 years, perhaps) would've agreed. The myth that animals are nothing more than "flesh machines" is quite recent in history.

</comment></comment><comment><USER9> I've actually been interested in whether they feel emotions we cannot.

<comment><USER10> I agree with jotux that pack-related emotions are probably something we'd have a hard time with. We have _tribe_ -related emotions but they are probably not the same thing.

Further, humans have evolved at least one emotion that appears to have virtually no analog anywhere else: [https://en.wikipedia.org/wiki/Disgust](https://en.wikipedia.org/wiki/Disgust) If you don't think that's an "emotion", read that page and follow some of the references; I have found it to be a very interesting topic. If humans have this one, it would seem to defy imagination that there aren't other lines that have other emotions that we don't. In fact I've seen it suggested that it's actually amazing how much similarity there is in the entire mammal line between emotional states and the expressions of those states. To a certain extent, mammals are capable of very basic emotional communication across the entire line. We take it for granted, but compare with, for instance, reptiles.

<comment><USER11> I've seen animals behave in a way that suggests disgust. For instance, cats don't like strong smells on themselves. My cats are much more reluctant to be petted after I've just washed my hands with fragrant soap. They often sniff at my hand and back away. On occasion they'll even threaten to swat at my hand.

I assume they evolved (what I'm suggesting is) the disgust behavior because it makes them easy for other animals to smell, which makes it hard for them to hunt, and easier for larger animals to hunt them.

In fact, the Wikipedia article you linked to has a section about an acquired disgust response in mice. I agree that there's a difference between acquired disgust and innate disgust, but it's an indication that animals are capable of feeling something akin to disgust.

</comment></comment></comment><comment><USER12> When it comes to animal anxiety, I always feel bad about very small dogs in public. It seems like 90% of the chihuahas I've ever seen were incredibly nervous around strangers, some to the point of visibly shaking if too close to a crowd - and I can't blame them, given the size difference.

<comment><USER13> Probably has more to do with the socialization of the dog than anything. You've probably seen more small dogs that are vocal and aggressive than large dogs. This is because the owners of a large dog is less likely to tolerate aggression, would put more training in, etc.

<comment><USER14> I've had both a Pekingese and a Rottweiler at the same time and me and my wife raised both with the same affection and attention. We were very relaxed about the Rottweiler, because she was always listening to command when outdoors and we never had to give her special training, whereas we had to keep the Pekingese on a short leash. Can you imagine somebody walking with a free Rottweiler and a leashed Pekingese? That was us.

It had nothing to do with socialization or training. The Pekingese was simply more aggressive and was never listening to our command, when outdoors at least. And at some point we simply have up on trying to educate him, because that was a losing battle. The Rottweiler on the other hand knew what we wanted at all times. She even knew when we wanted her to become aggressive without any special words spoken. Obviously she was never aggressive towards the Pekingese or she would have killed him. A hard thing to do, since this kindness wasn't returned by the Pekingese.

Now don't get me wrong, I loved both. But the Rottweiler was clearly much smarter and more adapted to live as part of a family ;-)

PS: Broke my heart when she died, hence why I'll never adopt a dog again. They live much shorter lives, hence you get to be a parent of sorts, then watch them die, sometimes horribly.

<comment><USER8> I don't know about Pekingese specifically, but some races of small dogs were intentionally breed to arouse larger dogs in a hunting party. Others were breed to fend off vermin.

It is not unusual to see ill-tempered small dogs at all.

</comment></comment></comment></comment><comment><USER15> > _I made an appointment, first, with a pet behavior specialist and, five > months later, when her initially helpful suggestions didn't change Lucas's > behavior, with a vet._

> _When I thought about Lucas as anxious, I also began to think about his > needs more than I had before. I played with him more often and gave him > more, smaller meals._

This really makes me wonder what the specialist's suggestions were, because "more play and attention, like he is accustomed to" seems like the simplest #1 solution.

</comment><comment><USER16> >Do animals have mental states?

beside being just a religious dogma of "only humans have soul" in disguise, answering "No" would mean that the one can suggest a specific plausible place in a continuous chain of living organisms from any human back to first cell (or just to say first mammals) where the "soul" ("mental states") supposedly magically appeared. I mean did Neanderthals had soul? Did Australopithecus? Did the apes 2M years ago?

</comment><comment><USER17> This article reminds an always missing in the startup "change the world" culture: animals and wild life. There is almost no investment, innovations, startups etc in this direction. The poor animals can't blog.

</comment><comment><USER18> Is feeding cats antidepressants a usual thing in the US? I've never heard of such a thing in Europe and to be honest I think it's a bit barmy.

<comment><USER19> Friends of mine feed their cat prozac in response to him peeing everywhere; it seems to work.

<comment><USER20> My partner's cat had a urinary blockage that caused him to pee everywhere for several months before it was figured out that it was a physical issue (it coincided with moving to a new place, so it was assumed to be stress). They pee everywhere because it's painful to urinate, so they hold it until they can't anymore. It can be a life-threatening condition. But, it's also thought to be exacerbated by stress, so maybe taking Prozac reduces the stress and prevents the blockage from progressing.

</comment></comment></comment><comment><USER21> I feed a large group of stray cats around the neighborhood every morning for years now.

Let me tell you, they definitely have feelings.

Some cats are overjoyed to see me, they even come running down the road, purring and chirping at me. It's not because of the food because many of them don't even eat it right when I put it down, they must eat later in the day. They are just genuinely happy to get some attention, to "talk" to you and to be talked to.

What people should be asking is if all those chickens, cows and bulls that are slaughtered every year had feelings and if it is right to raise them only to kill them.

(and yes I know the irony is the cat food is made of chickens, cows, etc. - <USER2> don't know how to resolve that conflict)

<comment><USER16> >I don't know how to resolve that conflict

this is why artificial meat would be so important to our civilization - probably the most important thing to happen in the near future. It would finally allow to unblock the idea in human minds that the animals are sentient beings.

<comment><USER21> I like the idea of forcing people to consider living, feeling creature vs not but I dunno how they would ever reduce the cost of artificially grown. Maybe a technology that doesn't exist yet. It would have to be grown like plants/mold.

The livestock industry is sure going to push some nasty ads to fight artificial.

</comment></comment></comment><comment><USER22> Anyone who has worked with animals knows they are far smarter than we give them credit for. Cows and octopi learn how to escape from their pens, crows use tools, grey parrots can ask existential questions.

<comment><USER23> And anyone who has a cat knows that the definitely have the emotions of love, hate, spite, fear and excitement.

<comment><USER24> the fact is that they don't know what they are...

<comment><USER23> Do we?

</comment></comment></comment></comment><comment><USER25> Perhaps they need to change the word from "emotion" to "response". There is a great bias in science against ascribing to animals anything that is even remotely considered to be exclusively in the domain of humans.

While I get the whole anthropomorphizing trend that pet owners have, raw emotional responses like anger, anxiety, envy, and affection are pretty easy to read. What is also clear is that the animals response to those emotions may be much different than human response.

<comment><USER26> Agree with this. The resolution the author reveals at the end, that simply playing with the cat more reduced anxiety behavior, almost makes me think that it wasn't that the cat was anxious, just that the cat was under stimulated and acted out to use up excess energy.

</comment></comment><comment><USER27> The title was changed?

</comment><comment><USER28> Im sure Schrödinger's could

<comment><USER29> We changed the title from "Can a Cat Have an Existential Crisis?" to the (somewhat) less linkbaity HTML doc title.

<comment><USER30> The new title is boring. Hacker News is all about link bait so why be coy about it?

<comment><USER31> While I do like playing spot-the-link-bait before I click articles, I do like this policy of link title revision.

</comment></comment></comment></comment><comment><USER32> I've had similar good results with my cat on anti-depressants. It sounded crazy, but his panic attacks (when other cats would venture into the back yard and he's see them out the window) ceased! We eased him off of them after a while.</comment>


Facebook algorithm found to actively promote holocaust denial - <AUTHOR> https://www.theguardian.com/world/2020/aug/16/facebook-algorithm-found-to-actively-promote-holocaust-denial <comment><USER2> Surely the tech-minded folks of HN understand that this doesn't actually occur under any reasonable definition of "active." This article is a clear example of how the media twists reality due to their lack of understanding and/or maliciousness.

<comment><USER3> >> Researchers found that when they followed public Facebook pages containing Holocaust denial content, Facebook recommended further similar content.

I can understand that being precise is crucial when making statements like this but instead of getting hung up on that detail, the tech-minded folks of HN would also understand the main argument about the perinicious effect of such feedback of "similar content" reinforcing the false beliefs and conspiracies.

<comment><USER4> Indeed, often technically correct is not the best kind of correct.

</comment></comment></comment><comment><USER5> "Actively promote" meaning being treated no different than any other content, unless the article omitted some information about that study. Perhaps technically true, but still a highly misleading title.

</comment><comment><USER6> This is the full headline:

> Facebook algorithm found to 'actively promote' Holocaust denial > Similar > content is also readily accessible across Twitter, YouTube and Reddit, says > UK-based counter-extremist group

Reminds me of back when Foxconn was the big media story and every article lead with "Apple uses child labor" (Subtitle: also every other company uses Foxconn too)

</comment><comment><USER7> What does "actively promote" mean here? The article doesn't seem to have evidence of this. It seems more like "we found a nonzero amount of holocaust denial content".

<comment><USER8> How much holocaust denial content should one _expect_ to find? The internet has increasingly normalized nonsense. I'll bet plenty of people, post- the advent of social media, would think 25%, for example, would be perfectly reasonable.

How much would one find in the pages of a newspaper, transcripts of a public conference, or publications in a university library? Would it even be 1%?

If this new normal on social media is enlightening people and making the world a better place, one would expect to see it reflected in the world around us. I don't think the general consensus is that society has been making big strides in a good direction, over the past decade.

<comment><USER5> Those are some fine rhetorical questions, but they don't shed any light on whether "actively promote" is grossly misleading in this case.

<comment><USER8> Okay, I can't go all the way, and describe it as _grossly_ misleading, but " _actively_ promote" uses too strong an adverb. So, I'll concede that, strictly speaking, the headline _is_ misleading.

On the other hand, if a reader gets the impression that Zuckerberg and the other social media CEOs, _to the extent that they can get away with it_ , signal-boost holocaust denial (and propaganda from hate-groups, in general), recent history speaks for itself.

So if someone asked me to rewrite the title, I would go with " _passively_ promote."

</comment></comment></comment></comment><comment><USER9> How many HN authors are masons?

</comment><comment><USER10> They wanted a shitty paper on holocaust denial that the trailer park trash can froth at the mouth about how evil it all is and the newspaper got it's clicks.

Pretty good AI, delivered exactly what everyone wanted.

</comment><comment><USER11> they typed "Holocaust" in fb search box and got suggestions for pages denying Holocaust. So they concluded that Facebook alogorithms promote Holocaust denial but did not check if there is actually any reachable alternative content for the keyword "Holocaust". I don't think facebook users created any educative pages about Holocaust.</comment>


New chemical analysis of Aztec turquoise suggests it didn't come from the SW US - <AUTHOR> https://arstechnica.com/science/2018/06/isotope-analysis-says-aztecs-preferred-locally-grown-turquoise/ <comment><USER2> I fear this is going to feed "because we can't find the mines, it must be China" crazyness.

Cool story, mind you.

</comment><comment><USER3> So there are copper deposits outside of SW US. But no turquoise? I'm unsure of what the article is suggesting.

I understand that we have to rethink trade networks across central america but I'm more interested in where this turquoise came from. The logical conclusion would be local copper deposits, which the article states there are several of in mesoamerica.

But it never clarifies if those deposits are producing turquoise, or could have produced it in the past. Maybe it was all just mined out was my first thought.

<comment><USER4> From TFA: "But there are still no known turquoise deposits in Mesoamerica. The explanation, say Thibodeau and her colleagues, is that turquoise deposits tend to be shallow, and they can be mined to depletion in short order. And there are copper deposits all over Mesoamerica. Thibodeau and her colleagues said the turquoise mines that supplied the Aztecs may have been mined out well before Europeans set foot on the continent."

</comment></comment><comment><USER5> The article headline should be Colombia, not Columbia.

<comment><USER6> Not in this case, pre-Columbian means "before Columbus".

Colombia was named after Columbus (Colón in spanish) but in this case it is talking about the time before the discovery of America by the Europeans and in particular Columbus in 1492.</comment></comment>


Ask HN: Whitespace in US politics for socially liberal and fiscal conservative? - <AUTHOR> For example, someone who largely agrees with the left on police reform, universal healthcare etc. But, then be tough on illegal immigration, reduced immigration levels, and be business friendly.<p>Is there a whitespace for someone to seize the argument from both Sanders and Trump voters. <comment><USER2> Yes, it's called being an independent and it's frustrating that people believe you can only be a part of one camp and have to believe everything they espouse. My opinions are more varied and there are ideas I (dis)like from both sides.

I'm recently pondering that a zero party system might be a good idea (better than a N party system). A two party system creates dichotomy and divisiveness ensues. More parties create more camps or clans. No parties would mean individuals are evaluated as individuals and don't have to hold party lines.

</comment><comment><USER3> It is one of those positions that seems to be there (like the Libertarian position) but when you test it at the voting booth you can find no evidence for it.

To some extent Trump was able to find a coalition that the "political system" denied, but it was that particular coalition and he was able to find it because he was the one republican candidate in 2016 who didn't go "kissing the ring" to a large number of republican groups that required that candidates accept a long list of bundled issues that was especially engineered to suppress Trump's coalition and had been doing that since 2000 or so.

The trouble is that the positions talked about by the D's and R's and even the independents have a weak connection with reality at best and when you look closely things fall apart.

For instance consider "universal healthcare"; you might think that is "business friendly" for most businesses and that is true. The trouble is that 20% of business (health insurance, pharmaceutical companies, pharmacy benefit managers, your doctor, the hospital your doctor works at, the medical staffing agency that pays your doctor to work at that hospital) has a life-or-death mandate to maintain the status quo. They can feed back a small percentage of their bloated profits to buy off politicians, influence the media, etc.

Anyone who is writing up the sad story of homo sap when we are extinct might find this

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

to be the asteroid impact that wiped us out.

The "capital W White vs capital B Black" model in which 90% of the population oppresses 10% has it completely backwards -- that doesn't work as a business. If 90% percent of people took everything from 10%, they would improve their standard of living by just a bit more than 10%. If 10% of the population took just 10% from the other 90% they could double their standard of living and have enough over to pay for the propaganandization or repression of the 90% and maybe even convince the 90% to celebrate them.

Try the "business friendly" action of establishing universal health care and you will find that those who profit from the current health care system will make the "not business friendly" label stick. You might be able to do a very long term campaign to move the "overton window" over the course of 30 years, but the health care industry has the advantage of sustainability -- they can consistently divert money to this cause over the course of decades and never fall victim to the despair that they'll never win.

As for immigration, that's another toughie.

Just about everywhere except for Israel (which just wants Jewish bodies to outnumber Palestinian bodies) there are two facts: (1) most people think immigration is sucking life out of the economy, (2) immigrants make it much easier to square the circle of the 'social problem' around retirement, disability, and indigenous poverty (e.g. poor people born in that country)

For instance, the ratio of young people to old people determines how easy it is for people to retire. It doesn't matter if this is through a government program or the stock market or living in your children's house. Transfers of money and goods across international lines accounts for something, but we all consume a great deal of services that require a local workforce.

Ironically though, the beneficiaries of that labor often feel like their country has been invaded, sometimes it is at a very visceral level. People in apartment blocks in Eastern Europe often can't get over the different smells produced by the cooking of incoming groups.

That people feel that way in America boggles my mind. An Italian immigrant relative of mine is the poster example of successful immigration but he loves Trump, Fox News, and just can't connect evil "chain migration" to him moving into the U.S. with his brother and sister and mother and...

In all the 48 continental US states the agricultural workforce contains many illegal immigrants. I hesitate to use the word "essential", but if illegal immigrants were deported today farmers would be seriously stressed about "How do I get the crops in this fall?"

The wandering right-wing mind might imagine you could bus the bums who live in front of the Moscone center to pick strawberries in the central valley. Those people are mentally ill, they can't do it, particularly when compared to a skilled and experienced 'American-but-not-U.S.' workforce. In upstate NY taking care of someone's dairy cows seems like a dead end job to locals and a hassle compared to Burger King where you can call in sick when you don't want to work. (My mental picture of what happens if you miss a milking isn't so clear and I'm glad it stays that way!) A Mexican might see it as a way to get experience and save money to start his own farm so he'll take the job seriously and tend to see things the same way as the farmer.</comment>


Ask HN: What do you think should be on topic for Hacker News? Also off topic? - <AUTHOR> <comment><USER2> [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

This should help..</comment>


Ask HN: What Makes a Great Developer? - <AUTHOR> A little context. I'm currently a junior in a middle of the road state university studying for a degree in software engineering. I have been doing a lot of reading - whether it be comments on Reddit, articles, etc - and it appears that there is an abundance of junior developers looking to enter the job market, but very few "good developers".
My question is, what is it that sets someone apart as a good developer? I know this question is very vague but it's also very vague whenever I see it used.
Thank you for your time. <comment><USER2> Based on roughly 20 years of mentoring junior developers at various points during my career, the ones I look back on and think "that was a good one" have been the ones who want to do the _whole_ job of writing good software. They wanted to write great code of course, but they also got involved speccing out what the software is, in writing tests and documentation, doing QA, seeing their code working for the users, to maintain it, to fix it, and not to just build something that worked today and then forget about it. They were the ones who looked at a bug report and thought "Damn, how did I miss that users would do _that_?" rather than "The user is doing it wrong".

(Note: This is based almost entirely from working in small software agencies and startups. It might be very different in bigger companies/teams where you get less ownership of a whole problem domain.)

</comment><comment><USER3> Being deeply interested in each problem at hand would top my list. That provides the motivation for developing skills that lead to getting better faster.

Other than that, I would say specializing and getting great at one or two things at a time (e.g. "C" and 3D graphics). Finally also seeking out exposure to other programming environments: languages (functional, lisp, etc), frameworks, frontend, backend, realtime/embedded/IoT, shrinkwrap, verticals.

It all comes down to experience. The closest thing to a shortcut is forcing yourself to do things outside of your comfort zone. Surround yourself with people who you can learn from and do so without ego getting in the way. Pair programming to pick up little tips all the time that you may never see written anywhere.

</comment><comment><USER4> The definition of "good developer" depends greatly on the context and environment.

Based on my experiences in many different teams, I would suggest two critical attributes:

1\. Strong knowledge of all core principles: computer architectures, operating systems, networking, etc.

2\. Solid domain knowledge, e.g. supply chain, accounting, insurance, industrial control, etc.

Naturally a "good developer" is also conversant with several programming languages, frameworks, libraries, etc. But technical skills without domain knowledge limits opportunities.

</comment><comment><USER5> Previously:

[https://www.google.com/search?q=site%3Anews.ycombinator.com+...](https://www.google.com/search?q=site%3Anews.ycombinator.com+%22what+makes+a+*+developer%22)</comment>


Ask HN: Self owned business suggestion? - <AUTHOR>

Hello,<p>Let's say your day job you work at needs a domain registrar and you own a domain registrar. It is morally correct for you to suggest your own product? Or should you suggest something else purely because it's a conflict of interest? <comment><USER2> I wouldn't see there being problem mentioning that you own one. I don't think that I would recommend my own service without mentioning that it was mine, and offering alternatives.

I'm not sure that I would really want to offer some services from side businesses. There is a possibility that the company might end up expecting a higher level of service than was standard, since they were employing you. That probable wouldn't cause problems since it is just a domain register and the company just needs a few domains. Also, a few people might question your judgement on your recommendation with the conflict of interest. I wouldn't really be worried losing the few dollars to competitors.</comment>