Ask HN: What is the ops architecture like for AAA multiplayer game servers? - <AUTHOR> I'd be really interested in reading about multiplayer servers for big title FPS games with matchmaking and lots of players <comment><USER2> Halo 4 and 5 use a project developed "in house" at Microsoft called Orleans. Roughly speaking it is similar to Akka. It's an actor based distributed system which attempts to hide the implementation of distributed networking. In essence, each match and each player get their own "network attached" object (a "grain" in Orleans terms.) So:

        var player = new Player(123);

is actually instantiated _somewhere_ on the network (not necessarily locally on the calling server.) Then operating on that object, such as:

        await player.FireWeapon();

tells the server ("silo" in Orleans terms) which owns that player instance to invoke that method on it.

In this way, it is very easy to quickly update game state without obsessing over the throughput of a single machine.

<comment><USER3> Orleans provides higher level abstractions than Akka. It is literally a plug 'n play distributed application kit and consequently very opionated.

It took me quite some time to shift my mental model and decide I prefer it over Akka. It's also worth noting that Orleans is open source. There is also an excellent operational dashboard named OrleansDashboard.

<comment><USER4> [https://github.com/dotnet/orleans](https://github.com/dotnet/orleans)

</comment></comment></comment><comment><USER5> Not FPS specifically, but you might enjoy Riot Games' tech blog [https://technology.riotgames.com/](https://technology.riotgames.com/) which has articles on a variety of game technology things such as service deployment, network infrastructure, game performance monitoring etc.

(Disclosure: I work there)

<comment><USER6> Riot games tech blog is an awesome read. The fps (as in frames per second) performance monitoring on league of legends post recently was a great example of why its worth a read.

<comment><USER7> I thought by FPS, the OP meant First Person Shooter

<comment><USER8> I think that's true and gp was clarifying that the post he was referencing is about the other fps.

</comment></comment></comment></comment><comment><USER9> There's a slidedeck and presentation that's been posted to HN a number of times about Call of Duty's servers using Erlang.

[https://www.erlang- factory.com/upload/presentations/395/Erla...](https://www.erlang- factory.com/upload/presentations/395/ErlangandFirst-PersonShooters.pdf)

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

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

[https://vimeo.com/26307654](https://vimeo.com/26307654)

</comment><comment><USER10> I can highly recommend this talk by Respawn, Multiplay, and Google on how Titanfall 2 does multiplayer server management. It's geared more at the infrastructure side as opposed to actual dev but worth a watch: [https://www.youtube.com/watch?v=p72GaGq- B_0](https://www.youtube.com/watch?v=p72GaGq-B_0)

</comment><comment><USER11> If you want to learn more about this in person, in 2020 there will be the first "Online Game Technology Summit" at the Game Developers Conference.

(Disclaimer: I'm one of the summit advisors)

We're trying to grow the education in this space of game development, because currently it is very sparse. AFAIK, this is the only event that is dedicated to the technical aspects of online, connected or multiplayer games.

Details, and CFP, which is currently open: [https://www.gdconf.com/summits/c4p](https://www.gdconf.com/summits/c4p)

<comment><USER12> So happy to see this happening! I've also been advocating for more community development and knowledge sharing in this space. I believe there's a huge unfulfilled need to connect the industry more on these topics. I've also been organizing an event in the space, and looking at the possibility to land a special interest group in larger organizations that can support our community. I'll drop you a line!

</comment></comment><comment><USER12> Spent half a dozen years working in AAA realm for multiplayer games and an equal amount of time working on my own indie projects, and as you can see already in this thread, there's really two (often confused) pieces to this conversation. First, there's Multiplayer Gameplay Engineering. This is typically a single process handling the 2~64 people shooting each other in a single game. Second, there's Online Services Engineering for Games. This is typically orchestrating the above process, hundreds or thousands of times, as well as things like Matchmaking systems, party systems, Storefronts, etc.

Below are two articles which I think can be really valuable "Baby's first" for the topics of Multiplayer Gameplay Engineering and Online Services for Games. I wrote them beginning from my perspective of approaching these problems my first time as a college student many years ago, and continued with how my approach evolved through experience. I also include lots of links to seminal articles/talks on the topics that I read as I attempted to "do my homework" while making my own indie game.

Multiplayer Gameplay Engineering [https://www.gamasutra.com/blogs/DruErridge/20181004/327885/B...](https://www.gamasutra.com/blogs/DruErridge/20181004/327885/Building_a_Multiplayer_RTS_in_Unreal_Engine.php)

Online Services for Games [https://www.gamebreakingstudios.com/posts/dedicated-game- ser...](https://www.gamebreakingstudios.com/posts/dedicated-game-server- allocation-for-unreal/)

</comment><comment><USER13> This question sounds like it's pointed directly at me.

However, I can only speak for one AAA gaming company, and my team operate a bit differently than most in the company.

My team operates the infrastructure for "Tom Clancy's The Division" video game series (1&2).

Most of the programming approach is spent on doing the cheapest (in terms of CPU) possible thing, everything is C++

Things like: matchmaking will happen ideally on a single machine with no shared state, everything will happen in memory, which is much faster and can be more reliable than any distributed state or failover.

(it's less reliable if you're in matchmaking and the server or service dies; But then everyone's client will reconnect to the newly scheduled matchmaking instance and populate in memory state.)

We use a lot of windows, nearly every machine that doesn't handle state is a windows server. This has pros and cons, from my ops perspective I try to treat windows like cattle, but windows doesn't like that. they have their own way of operating fleets of machines which include using SCCM and packaging things. There's nice GUI's, but we use saltstack and we removed AD, because it was a huge burden to: create a machine, link it to AD, reboot it, finally get a machine worth using.

From a dev perspective, Windows is good, IO Completion Ports is superior to the linux epoll in terms of interface and performance, so we can have machines that take 200,000+ connections.

How you decide which dedicated server you connect to is up to your client, it does a naive check as it's logging in where it will do a TLS handshake with a random gameserver in a region, for each region. (during the login phase we send your client a list of all currently active gameservers and an int to represent the region).

This works fine until there's packet loss on a particular path because your single ping might be fine but overall your experience could be better elsewhere; if you're not able to ping anything then we fall back on geoip.

That said, if you have friends on another datacenter, we try to put you on the same server. So that if you join groups or whatever then it's just a phase transition rather than a full server sync.

Everything is orchestrated with a "core" set of servers which handle player authentication and matchmaking centrally, then each of the gameserver datacenters (geographically distributed to be closer to players) is attached via ipsec VPN.

In Division 2 we spread out into GCP as well as having physical machines, so we developed a custom auto-scaler. The autoscaler checks the capacity of a region and how many players are currently in a region, keeps a record over 10 minutes and makes a prediction. If the prediction goes over the current capacity in 20 minutes or less, it will create a new instance (since making windows servers on GCP takes longer than linux servers)

If the prediction goes lower than the capacity of a server, it will send a decomission request to the machine, which takes up to 3hrs to complete (to give people time to leave the server naturally).

Idk, I've been doing this for 5 years now so I can talk at length about how we do it, but ultimately out biggest challenges are the fact that we can't use cool shit or new trends because latency matters a lot and we use windows everywhere.

\--

As an aside; the overwhelming majority of other ubisoft games (excption: For Honor) use something very similar to what we released open source in collaboration with google to do matchmaking: [https://agones.dev/site/](https://agones.dev/site/)

<comment><USER14> What is the rationale behind using Windows on the servers? I'm wondering because the argument I usually hear is that someone high up in the ops team hierarchy declares "but we need everything in the AD, including all the servers, otherwise I can't sleep well". In your case however this apparently doesn't apply, as you do not register them in the AD.

Is it so the game devs don't need to write cross-platform server code?

<comment><USER13> Real reasons for:

* One platform to develop on; back-end coders tend to go back and forth between client and server programming.

* Faster iterations. (just hit F5 in visual studio)

* IOCP

Stupid reasons for:

* Old IT Director denied the use of virtualisation software. (mac address randomisation wasn't great and it caused a switch crash if two people had the same mac)

* Windows licenses are really cheap compared to developer time. (until we went to cloud, where Microsoft charges insane amounts for licensing)

<comment><USER15> I no longer do windows development, but I miss it. It's strengths are greater than you portray.

The C# / .NET libraries are really beautiful and well thought out. I most often program in Python, and while the Python language is more concise and elegant than C#, the Python libraries are not nearly as well organized and consistent as C# / .NET. Java libraries are better than Python but worse than C#, and the Java language is worse than both C# and Python. As far as dev enivronments, Visual Studio is far better than Eclipse and roughly equal to Python's PyCharm. Because C# is compiled, it's far more performant than Python and a bit better than Java.

The downside of course, is that once you start down that road, you are pretty locked into the MS world.

If I was starting a new project, and I was a scrappy startup, I'd probably go with Python. But if I had resources (ie $$$) to support MS licenses and performance actually mattered, I'd go with MS. Side projects for experimentation may lead to node or rust. But sorry Java, can't really imagine a scenario where I'd start with you.

<comment><USER16> I was an exclusive Microsoft developer for a little over 20 years. It wasn't until I started doing cloud deployments - like the original poster implied - that I started avoiding Windows as often as I could. Once you add Windows to the mix, everything gets worse - startup time, resource requirements, automation, snd costs.

Luckily, you can do C# without having to use Windows with .Net Core.

<comment><USER17> Ooh, you may be the perfect person to ask a question that I've been wondering about. Is .NET Core on Linux viable yet for serious use? I've done some tinkering with it and gotten a project working on MacOS but I did the development in Visual Studio on Windows. Is it realistic to do your development in Rider, with the open source version of msbuild for CI, and have it perform reasonably on Linux in production, without ever paying Microsoft anything?

<comment><USER18> The kind of development we do probably wouldn't count as "serious" here on HN, but since the other comment didn't really answer your question, I'll pitch in. We've been developing using .NET Core/Linux/Rider for the past two years. It's been pretty great. Once you get to know the IDE really well, I'd say Rider beats VS in terms of functionality and usability.

.NET Core was developed with CLI usage in mind and common operations (like migrations/boilerplate generation) can be driven from CLI or Rider, you don't need VS for that.

You may have some problems with 3rd-party libraries. Not all of them have been ported to .NET Standard. I'd recommend checking your project's dependencies in advance. (We did have some problems with legacy COM-based cryptographic libraries and had to build a separate "microservice" hosted under Windows to offload this stuff to. COM stuff works fine under .NET Core, but only under Windows (obviously).)

<comment><USER16> If you are just running a few static Windows servers the slight cost benefit of running Linux for .Net Core is really not that great. If you are doing anything more dynamic where you are rapidly bringing "servers" up and down is where you see the real cost and performance benefits. Of course you can't run Windows instances with either Fargate or lambda but even with regular ECS (Docker) or autoscaling EC2 instances where you can, Windows costs more, takes more resources, and is slower to launch.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER19> Some network related info from the pubg devs

[https://steamcommunity.com/games/578080/announcements/detail...](https://steamcommunity.com/games/578080/announcements/detail/1689300456332644145)

<comment><USER20> This is a great read. I always wondered if AAA battle royale games did something like that, since updating distant players every frame, especially if they're behind the local player, seems like a waste.

</comment></comment><comment><USER7> Not related, but relatable.

I often wonder between Games and Enterprise Software, who has a more complex backend architecture?

At the outset, it seems like Games are complex as hell, in the sense that when a gamer shoots another gamer dead, there has to be freeing and re-allocation of processes/ resources, and with tens or hundreds of persons playing the same game over the internet , both the gaming architecture and network infrastructure's gonna be complex.

Would someone help me out here?

<comment><USER21> Just a thought : games have the advantage of being constrained by a particular purpose and design, while enterprise architectures are more free to (d)evolve into a sprawling, incoherent mess of systems.

Can you imagine anyone at a game company wanting to replatform the hit- detection system onto hadoop?

<comment><USER22> I've thought about that, but at the same time I wonder just how much of each game (from a single studio) is actually reusable. There's the networking/infra side for multiplayer games, but even the engines themselves seem to get significant rework for each new game. It's all insanely optimised C++ (which I imagine can be reused in many places until the hardware is updated) and then a huge amount of scripting to piece the dialogue, story, cutscenes together, etc. right?

I imagine it must be quite difficult switching careers between games and (particularly larger scale) web projects. Imagine defaulting to Ruby on Rails to handle your multiplayer infrastructure and trying to model the game state through REST.

</comment></comment></comment><comment><USER23> Here's some EVE Online links. Really amazing stuff.

[https://www.eveonline.com/article/tranquility- tech-3](https://www.eveonline.com/article/tranquility-tech-3)

[http://highscalability.com/eve-online- architecture](http://highscalability.com/eve-online-architecture)

<comment><USER24> Seconded. Eve's server architecture is amazing given the original constraints of the network... they managed to find a way to make a single worldwide server work and to make the game treat everyone fairly no matter what their ping was.

The architecture used has limitations (the biggest one is that fps-style real time isn't really possible) but it's aged very well.

</comment></comment><comment><USER25> I created an RPG game backend for a game called Path of Exile. Not an FPS but similar challenges. I don't know how similar any of this is to other game backends, but I'll supply a few details.

Our backend consists of a few somewhat large services that are broken up mostly around how they are sharded.

The biggest one is the account authority which contains most of the accout/character/item data and handles the vast majority of traffic.

We have 5 shards of that (sharding on account id) with 2 read only replicas of each one of those. All the read only requests go to one replica, and the other replica is for redundancy.

There are also other services like the party manager, ladder authority, instance manager, etc.

All of those shard on different things which is why they are seperate services.

The instance managers handle creating game instances which are the servers that the players actually play on.

We have a pile of servers which we call instance servers each of which runs an instance spawner. When it starts up the instance spawner adds its capacity to an instance manager and creates a process called a Prespawner. This prespawner loads the entire data set of the game and then waits for the instance spawner for orders.

When the instance spawner wants to create a new game instance, the prespawner runs fork() and then the new process generates it's random game terrain which takes a few hundred milliseconds.

Because all the game resources are loaded before the fork they are all already available in memory that is shared between all of the instances running on the machine. Therefore each instance only takes 5-20 Mb of memory each which is mostly the generated terrain and monsters.

We typically run about 500 instances on the min-spec cheap Single processor Xeon servers we rent. This used to be around 1600 instances in the early days but the game got more and more CPU intensive over time as the game got more hectic over the years.

All the instances connect to Routers. There is one per instance machine, all of which connects to a few routers per data center, all of which connects to a set of core routers which also have all the backend services connected to them.

These routers are important because they know where everything and everyone currently is.

The routers work sort of like internet routers work, but instead of IP addresses, you address your requests to logical entities or groups which can move around and the router network is tasked with keeping track of.

So for example, when you whisper someone, you are sending a message to Account:123 and it will find it's way to whatever server currently has Account:123 on it right now. If you send a message in global chat to GlobalChat:1 it will be multicasted through the network to all the servers which have currently registered an interest in hearing GlobalChat:1.

If you add someone to your friend list, then what that means is the server you are on will register interest in multicast group AccountSession:123 which is a group that account 123 will multicast all its status updates to like moving between zones or leveling up or whatever.

Parties, Leagues, Guilds, Etc, etc. All of these things have multicast groups associated with them.

If you have any more questions then feel free to ask.

<comment><USER26> Tala Moana, exile!

Very interesting to see a GGG answer here! I admit to being very curious about the Path of Exile architecture, and your answer has barely whet my appetite. I have some questions that might give me better clarity over architecture if you are up for answering them: 1\. How is data replicated across regions? And how is trade across regions handled? Do the instance servers hand over character data to the account authority in the new region? 2\. I remember speculation about some builds that caused extreme amounts of server side compute and slowed things down, was this compute performed on the instance servers? Like poison/chain/monster damage calculations? 3\. Is there any sort of automated detection of inconsistent game states done by the instance servers? Duping protections or some such? 4\. What is the scaling plan like at GGG? Does the system have obvious bottlenecks that are known or is it easy to scale for the near future?

</comment></comment><comment><USER27> [https://open-match.dev/site/](https://open-match.dev/site/)

[https://mobile.serverwatch.com/server-news/how-epic-games- us...](https://mobile.serverwatch.com/server-news/how-epic-games-uses- kubernetes-to-power-fortnite-application-servers.html)

</comment><comment><USER28> Check out this talk from Andrew who worked for Hulu & Riot Games. I enjoyed the session at QconSF [https://www.infoq.com/presentations/microservices- pitfalls-l...](https://www.infoq.com/presentations/microservices-pitfalls- lessons/)

</comment><comment><USER29> I believe Activision uses an studio dedicated to multiplayer servers called Demonware: [https://demonware.net/](https://demonware.net/)

Maybe they have some information on some of the methods they use, when googling for them (haven't searched myself)

</comment><comment><USER30> at electronic arts the ancillary stuff like matchmaking, stats etc is C# microservices stuff in AWS.

<comment><USER31> It varies quite a bit between studios and game. Some legacy games have C++ service backends. There is a lot of java throughout the org. I am currently working in node/typescript.

</comment></comment><comment><USER32> I hesitate to comment because I don't have AAA experience (thank god) but I made this simple platform from scratch that would be good enough for AAA FPS: [https://github.com/tinspin/fuse](https://github.com/tinspin/fuse)

Among the unique features are globally distributed hot-deploy of server side code/resources and globally distributed JSON database over HTTP. It's completely async. concurrent and all threads work on all memory which is not what most systems have if you look under the hood.

Only Java (begin the down vote without arguments) has good enough non-blocking IO and memory model for networked concurrency to be workable on the server side, but most implementations are bloated.

The real discussion we should have is tick vs event based protocols, I'm 100% convinced we need to move away from tick based protocols.

<comment><USER33> > Only Java (begin the down vote without arguments) has good enough non- > blocking IO and memory model for networked concurrency to be workable on the > server side

I think you should post some sources or more detailed arguments if you are going to make that claim.</comment></comment>


Show HN: A platform for sharing DIY solar projects - <AUTHOR> http://sunboxlabs.com <comment><USER2> I submitted my silly setup which is just a 20watt sunjack and battery.

Sort of related: I just signed paperwork to install a $35k solar system on my roof on Friday (20k after insentives). I'm so excited, I've wanted solar since I was a 9 year old boy!

<comment><USER3> Wow 35k, what city do you live in?

<comment><USER2> I live in Connecticut in a residential area. The system is a 12kw, 35 panels. This will cover about 75% of my annual energy usage. I have a family of 5.

</comment></comment></comment><comment><AUTHOR> Hi gang! The "discussion: comments" numbers on the site are the combined total from the original article discussion on Hackernews [https://news.ycombinator.com/item?id=14821478](https://news.ycombinator.com/item?id=14821478) plus Reddit [https://www.reddit.com/r/geek/comments/6ov9oc/200_solar_self...](https://www.reddit.com/r/geek/comments/6ov9oc/200_solar_selfsufficiency_without_your_landlord/) – at that point I unfortunately didn't have comments on the site yet (...or the site itself, for that matter). Yes, they're currently just hardcoded :P

The comments on the burningman thread are from this HN thread [https://news.ycombinator.com/item?id=15216650](https://news.ycombinator.com/item?id=15216650)

<comment><USER4> Oh, I remember your original post! I'm glad you made this, as I've been slowly bookmarking DIY solar posts, but good ones with detailed information (and pics!) are hard to come by.

<comment><AUTHOR> Nice! Care to share some good ones here, or even submit them to the site?

I've also noticed a lot of people are building incredible stuff, and think it's time we organize :)

</comment></comment></comment><comment><USER5> I remember from university how solar is great for cheap and cheerful power applications, and fairly easy to set up. This platform is great idea! My 2 cents: can there also be a 'pitch-like' page or infographics explaining the basic configuration of solar power for newbies? This could encourage beginners to join in and share more, so there will be a nice diversity of simple hacks and ingenious projects.

</comment><comment><USER6> Next I want to see kits for turning my car into a micro-hybrid: A lithium battery pack I plug into the cigarette lighter which will negate the alternator for most trips.

We could make every ICE car several % more efficient overnight.

<comment><USER7> Interesting idea, but would it really work if the alternator is still physically engaged?

<comment><USER8> A electrically actuated clutch pulley would solve that. But, many newer cars already have, and need, a mechanical clutch pulley that disengages the alternator on deceleration.

<comment><USER6> I assumed it would stop generating electricity (and therefore resistance) when the batteries are topped-up. I didn't even realize they're mechanically disconnected as needed.

<comment><USER8> Some are, but only on deceleration, to reduce wear on the alternator. It's a mechanical clutch only.

AC compressors, on the other hand, do have electrically actuated clutch pulleys.

So, if you have a car where the alternator has no clutch, you may be able to retrofit an electrically actuated one. You would have to design the part that decides when it's needed as well.

</comment></comment></comment></comment></comment><comment><USER9> I posted a comment on this project: [http://sunboxlabs.com/2017/10/07/stock- sunjack-in-window.htm...](http://sunboxlabs.com/2017/10/07/stock-sunjack-in- window.html)

Was wondering, what is the best option to power a NodeMCU on a battery.

The NodeMCU draws around 18mA in deep sleep. Problem I'm encountering is that the current draw is so little, a lot of battery packs don't respond to it when it needs to wake up.

I have tried several power banks, but only the Anker Astro E7 is able to supply power consistently (Plan on getting a smaller battery next since the Astro E7 is 25000mah).

Would using the sunjack setup work? Any fire hazards that might be of concern?

I'm planning on getting this solar panel to test: [https://www.amazon.ca/ECEEN-10Watts-Charger-Samsung-USB- Char...](https://www.amazon.ca/ECEEN-10Watts-Charger-Samsung-USB- Charged/dp/B01CJ4UDJM/ref=pd_sbs_107_1?_encoding=UTF8&psc=1&refRID=RGBCS8X1JJZ5DAWQW42E)

</comment><comment><USER10> This is really cool.

      sunboxlabs.com is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com

and

      Note: Ad-blockers hide the Amazon links you should be seeing here

Also thank you for being so upfront!

<comment><AUTHOR> Of course!! The idea should monetize itself only if the guides actually make sense. However, if this turns more into a solar software platform, the affiliation strategy may not work so well haha.

<comment><USER11> One thought regarding monetization:

I assume you're loading ads via JavaScript or something. (I didn't check.) I too saw the notice regarding blocked ads.

It will be a cold day in hell before I disable my ad-blocker, but you can easily manually insert affiliate links as well.

If you sign up for the Amazon affiliate program (which I assume you did), just navigate to the item you're trying to sell, click the "get link" button (or whatever) that Amazon provides for you, and you'll get a nice, shortened affiliate link.

In my opinion, that is a really clean way to do things - you can just create a plain-old HTML list of affiliate links. That gives you a mechanism for monetizing your site, and doesn't require me to disable my ad blocker to support you. Win/win! :)

<comment><USER12> Speculation: It may require more time and effort to do so. Time is very frequently a scant resource and is even more rare when the project isn't supporting itself financially.

Perhaps they can do both? When there is a specific product in mind, they can link directly to it it with the affiliate links. When that's not needed, they can just let the script scan the page and insert relevant results? Then they can do so when they have free time.

That still takes time, but it may not take as much time? I'm speculating, as stated.

</comment></comment></comment></comment><comment><USER13> Plugging a solar panel into a Anker PowerHouse is not DIY. That's how it's designed to be used.

The PowerHouse is expensive. For real DIY you can buy a 3.6V 100Ah LiFePO4 prismatic cell for $125. Or you can buy 60 5Ah batteries for $80 on eBay. You'll end up spending much less than $500.

<comment><AUTHOR> Prove it! Can you post a how-to? :)

<comment><USER13> I'd like to but I don't have time to do writeup that extensive right now. There are a lot of other tutorials out there.

</comment></comment></comment><comment><USER14> A cool feature would be a way to 'request' a project. E.g. I'm interested in lower power, low space, indoor growing systems. Would love to see any projects hooking them up to solar.

<comment><AUTHOR> Just got a quick prototype of this up a few hours ago. Thanks for the input!! So far no questions or requests, though...

</comment></comment><comment><USER15> Hey OP, it sounds like there is some interest and maybe even a worthwhile community here. My advice is to not reinvent anything special here. What about transforming it into a forum? Every thread with a different project, with different categories.

Doesn't have to be a forum, but something that you don't have to spend/waste time to make and can still be useful to everybody :)

<comment><AUTHOR> Hmm that's really good input. Any other thoughts on this? I thought people would be more likely to use it if they didn't have to sign in?

<comment><USER15> I'm not entirely sure. What about a subreddit? There are already some similar things (not about solar), e.g. [https://www.reddit.com/r/DIY/](https://www.reddit.com/r/DIY/) and it seems to work out pretty well for them. I expect most of the HN crowd (or the relevant people, anyway, who might not be on HN) are familiar with reddit already and similar subreddits (/r/electronics, /r/hardware, /r/raspberry_pi, etc.). Simple upvote system, and comments already baked in.

</comment></comment></comment><comment><USER16> Awesome idea!!

It might be OH but is there a software which can let me simulate and experiment with various configuration to maximize solar energy capture. I have some tiny pieces of land which I want to use for harvesting renewable energy. What I don't want to do is to buy equipment and then write it off as sunk cost.

Software simulation seems to be the cheapest option but I don't really know what is out there I can build upon.

</comment><comment><USER17> I submitted my SolarPi project: [http://solarpi.tafkas.net](http://solarpi.tafkas.net)

<comment><USER18> Questions:

\- Couldn't find your installed power

\- Couldn't find the installation cost/"real time" ROI

\- Price of your kWh

\- temperature doesnt work

<comment><AUTHOR> Followed up with the poster. Hopefully he'll update soon!

</comment></comment></comment><comment><USER6> Just wanted to say: very cool.

Since I see that you were powering a space heater:

Conductive heating/cooling is the future. Why heat an entire space when you can buy an electric mattress pad and just heat your bed?

Soon enough we'll have cheap and convenient wearable heat-pumps with individually controlled dials rather than senselessly heating/cooling entire spaces.

<comment><USER19> >Why heat an entire space when you can buy an electric mattress pad and just heat your bed?

One reason is that breathing cold air overnight is bad for your health. IIRC a recommendation is to keep it above 16C.

<comment><USER20> In Scandinavia the lore is that the cold is good for sleeping. They stick their babies outside to nap even when it is below freezing:

[http://www.bbc.com/news/magazine-21537988](http://www.bbc.com/news/magazine-21537988)

</comment></comment></comment><comment><USER21> Kind of like HN for DIY solar. Nice!

</comment><comment><USER22> all your outbound links are messed up tried to click on the solarpi

[http://sunboxlabs.com/2017/10/07/Demo%20at%20http://solarpi....](http://sunboxlabs.com/2017/10/07/Demo%20at%20http://solarpi.tafkas.net)

got that instead

<comment><AUTHOR> thanks, fixed. wasn't sure if this was something worth building in a scalable manner, so there's still a lot of manual labor involved on my end, and a lot of room for dumb mistakes :)

</comment></comment><comment><USER23> =D awesome! if anyone is looking to test further with a utility please reach out (firstname.lastname@example.com)

</comment><comment><USER24> Timely, I just soldered my first cells...</comment>


Computer Vision is Artificial Intelligence - <AUTHOR> http://quantombone.blogspot.com/2011/03/computer-vision-is-artificial.html <comment><USER2> I grew up reading Asimov's robot stories and knew I wanted to work on artificial intelligence growing up. I realized when I got to college that computer vision was the closest thing to what I had always _thought_ AI research would be like. (So I did a PhD in computer vision.)

On a related note, David Lowe, of SIFT fame, once related to me a story about when Isaac Asimov visited his research lab in the early 1980s and when they explained to him that computer vision was about enabling robots to see the world, Asimov shrugged and said he never realized that was even a problem -- he just assumed robots would be able to see.

</comment><comment><USER3> If anyone wants to work on "artificial intelligence," then, GazeHawk is hiring!

(sorry for the spammy post, but I'm really impressed by the level of computer vision experience and talent showing up in this thread, and wanted to reach out to you all. We are a startup which is also actually solving hard CV problems)

</comment><comment><USER4> I quit my Phd in computer vision. There where i was working with a stereo vision robot. So i was trying to get the robot to behave like a human would, fixating point of interest (salient points) and calculating distances, well that involved a lot of trigonometry and the cameras had to be perfectly calibrated to get good data, so it was really hard just to match points of interest from both cameras. In conclusion i believe robots will see the world, but it will be through their eyes/sensors, not some human like approach. As for AI it will have to be some sort of baby like bootstrapping aproach able to learn, validate, propose new theorems and have it's own curiosity, in the form of a function that minimizes entropy or something like that.

And it will be funny if humans won't be able to make sense of that learning data :)

<comment><USER5> >>i believe robots will see the world, but it will be through their eyes/sensors, not some human like approach.

One of the biggest, and very immediate, obstacles in computer vision is the inability to extract 3d information from 2d images. My feeling is that by the time this problem is fully solved 3d images will become ubiquitous.

</comment></comment><comment><USER6> It's certainly no less AI than natural language processing is -- both seek to use algorithmic approaches to resolve the ambiguities in a bunch of input captured from fuzzy real-world sources, and build data structures representing that data -- as best understood by the program -- that can be manipulated by more traditional processing algorithms.

<comment><USER7> I agree that NLP is no less AI than vision. What I wanted to point out in my post (I am the author) is that too many smart computer vision researchers don't view vision as AI at all. Somehow many people's research program is centered around the assumption/desire that a pure image classification approach will solve vision.

<comment><USER8> Computer Vision is in fact (according to Shapiro[1]) AI-complete, meaning that the solving this problems is equivalent to solving the central artificial intelligence problem. It is in my opinion one of the hardest problems to solve that is why Researchers have to focus on a tiny specific topic in computer vision. 1\. <http://www.cse.buffalo.edu/~shapiro/Papers/ai.pdf>

<comment><USER9> "... solving this problems[sic] is equivalent to solving the central artificial intelligence problem"

And that would be, precisely, what?

<comment><USER8> Making a machine "think" the way humans do.

</comment></comment></comment></comment></comment><comment><USER10> I have a degree in Machine Learning. Recently I started working on a smartphone app involving CV. I am working closely with CV researcher.

And guess what? They use vectors, linear algebra, probability and classifiers too! They just go to different conferences to talk about them. If you learn enough math you can see through most of the terminology differences.

Those of us in the so-called real world must never forget the harsh industry structure of academia rewards fragmentation and obscurity, not unification and accessibility. It's the fault of the customers (grant makers) for rewarding this labor maximization behavior.

</comment><comment><USER11> Deep Blue was "in the early days of AI"??? The OP needs to study the field before making such pronouncements. There were many breakthroughs in AI 30 years before Deep Blue. See, for example, Arthur Samuel's checker program from the early 1960s. <http://en.wikipedia.org/wiki/Arthur_Samuel>

</comment><comment><USER12> My AI lecturer remarked that AI was a great term for hard problems, and that once a field or area was effectively solved or developed, it no longer got called AI.

<comment><USER13> That's the AI Effect: <http://en.wikipedia.org/wiki/AI_effect>

<comment><USER14> "AI is always defined as anything a computer can not yet do"

\-- forgotten

</comment></comment></comment><comment><USER15> "Artificial Intelligence" is both an umbrella term for a number of CS/stats approaches to certain types of problems (graph search, classification, etc.), and also a term often used to mean the same thing as Artificial General Intelligence (i.e. an artificial mind).

Vision is trivially covered by the former definition, and clearly not by the latter.

<comment><USER16> I would say that while there are indeed a number of approaches to various problems, viewing AI as a series of only vaguely connected problems is a mistake. A true AI needs a new way of looking at things as they all relate to the system as a whole.

<comment><USER15> Did you actually read my whole comment, or just the first few words?

</comment></comment></comment><comment><USER17> As a researcher working in computer vision, personally I prefer not having computer vision associated too much with AI just because of the pejorative aspects that the term artificial intelligence has had in the past.

</comment><comment><USER18> Nice little, makes me think...

 _"I believe that once we have made progress on vision (not in the narrow- universe setting) to the point where generic visual scene understanding is effectively solved, there won't be much left that needs to go into the "ethereal" mind which cognitive scientists want to empower machines with..."_

This is a great point but it may have implications that won't make the author happy.

If the field of vision computer vision is "nearly as big as" the field of general artificial intelligence, it may not be a good direction from which to approach general artificial intelligence.

The vision problem involves low-level problems of light-physics-etc, mid-level problems of object transformation and distortion _and_ high level problems of cognition. Saying that vision is hard is saying we need to find one algorithm which can fluently mix these levels rather than using several algorithms that just sequentially deal with each level. And such a level-mixing algorithm sure sounds close to general IA.

It fits with argument of people like Jeff Hawking that there's a "Kernel" of general AI that computer vision is just an instance of (see [http://books.google.com/books?id=Qg2dmntfxmQC&lpg=PA101&...](http://books.google.com/books?id=Qg2dmntfxmQC&lpg=PA101&ots=6ixoIbLmg_&dq=%22the%20neocortical%20algorithm%22&pg=PA101#v=onepage&q=%22the%20neocortical%20algorithm%22&f=false)). But there's nothing there that says computer vision is useful direction to approach that Kernel from - the technical considerations of vision are hard and you haven't shown it provides a particular useful division in a divide and conquer strategy.

<comment><USER7> While vision might not be the best avenue for studying general purpose intelligence, it is worthwhile to think of vision as more related to hard AI and less of a problem of applied machine learning.

I think once vision researchers understand just how close they are to hardcore AI, they will realize that there is a plethora of knowledge (not all visual) about the world that can be used to create better object recognition systems.

-Tomasz (blog post author)

</comment></comment><comment><USER19> You can experience this first hand if you have ever played or hacked with Kinect.</comment>


Modern Software Over-Engineering Mistakes - grey-area https://medium.com/@rdsubhas/10-modern-software-engineering-mistakes-bc67fbef4fc8#.swzmypry1 <comment><AUTHOR> Trying to make everything generic enough so that will work everywhere everytime is one of my pet peeves. You really don't need to engineer a date picker to work in microgravity and on quantum CPUs and in alternate dimensions. I get that it's fun sometimes, but my god stop.

<comment><USER2> Nothing can express my sympathies better than an all capitals "INDEED". Have a great week.

</comment></comment><comment><USER3> I really think most of this comes down to the number one principle of good software development is "Keep it simple stupid"

Simple, concrete, un-abstracted code is easy to get to right, easy to read, and easy to change.

<comment><USER4> There's also "Don't repeat yourself" and often you cannot have both DRY and KISS and have to choose one over the other.

<comment><USER3> If it's domain logic, like calculating the total for a shopping cart then you gotta follow DRY. The risk of application inconsistencies are too high. But if it's anything else then I go with KISS.

I really think DRY is far more important for business logic than it is for infrastructure logic. If you calculate what taxes someone owes in two different ways that's terrible. If you serialize two different things in your application in two different ways, probably doesn't matter.

</comment></comment></comment><comment><USER5> Contrary view:

Abstraction is possibly an art and few in the IT industry are good at it. Poor attempts at abstraction underly the common anectodal experience of 'failure' to consolidate software in context of business.

<comment><USER6> In my experience, the abstractions that are helpful are the ones that _significantly_ reduce complexity in the code using them by hiding details that we _rarely_ need to see. Put another way, they separate interface from implementation and the resulting interface is significantly simpler. That lets us reason about our code at a higher level without getting bogged down in unnecessary details.

Most of the problematic abstractions I see in the real world don't hide much complexity but still introduce extra complexity of their own (with the latter even becoming greater than the former in the worst cases) or often leak so we still have to drill down through the abstraction to understand what's happening anyway. Arguably, these are just two sides of the same fundamental flaw.

<comment><USER7> A lot of the most annoying and time-consuming abstractions at my company are, ironically, geared towards maintainability/extendability concerns.

We have wrappers around generic web service callers that rely on factories that create classes that convert between web service objects and domain objects, all wired together using interfaces for each service class and an IoC container, with its own XML configuration file.

The irony is that if the web service were to change its interface, you'd have to change like 10 files instead of like.. a single conversion function somewhere. And to begin with you had to create those 10 files in the first place. It's absolute fucking madness.

<comment><USER6> That looks like a great (that is, horrifying) example of the problem where the extra complexity introduced by the abstractions is actually greater than any complexity they successfully hide.

It's frightening how often this happens at all scales, from little utility functions with names that are several times as long as their implementations right up to the kind of enterprise architecture that nightmares are made of.

</comment></comment></comment></comment><comment><USER8> Like with all things, there's a healthy balance between simplicity and engineering for scale. Software Engineering != "Software Over-Engineering".

</comment><comment><USER9> I think points 1 (management vs dev split) & 10 (poor time estimation) are symptoms of another phenomenon: developers are--on the whole--poor communicators. Creating software products requires communicating with other humans. And because those humans have a different view of the product and its users, they have a different perspective of priorities.

</comment><comment> awinter-py This is a really good point. I think it gets to the heart of why libraries are more powerful than language features (though missing language features can hold back libraries).

> It takes a lot of skills and deep understanding of the problem domain. A > "Service runner" library needs expertise of how daemons work, process > management, I/O redirection, PID files and so on. A CMS is not just about > rendering fields with a datatype — it has inter-field dependencies, > validations, wizards, generic renderers and so on. Even a simple "retry" > library is not so simple.

</comment><comment><USER10> See one of many previous discussions here:

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

</comment><comment><USER11> You will never suffer from that if you install nom so you can install gulp so you can install ivy so you can get my AbstractModernSoftwareOverEngineeringMistakePreventionStrategyHelperFactorySingletonTemplate!

<comment><USER12> OK. Why would you install gulp to get ivy?

</comment></comment><comment><USER13> In my many years I've never seen an architecture like what the author describes as _Sandwich layers in 2016 with SOLID_. One layer injecting implementations into deeper layers, many layers deep? When does this supposedly happen?

In fact, dependency injection and a layered software architecture are mostly orthogonal concepts.

</comment><comment><USER14> Netflix's website is a good example of business processes driving engineering. Their streaming and DVD rental functionality are totally siloed. They have different movie queues, UI designs, and subdomain names. The user experience could be so much better if the UI was more seamless. I assume this is fallout from the streaming and DVD businesses being run by different organizations. It's as if Qwikster still lives, but is just called dvd.netflix.com.

</comment><comment><USER15> Hasn't this been posted before? Anyway, when you're solving problems that nobody is having you're overengineering it.

</comment><comment><USER16> Reading that list one thing kept popping into my head.... design patterns.

<comment><USER17> Design patterns are tools. Don't use a hammer if you don't need a hammer, you will just destroy something. And vice versa: Don't eschew the use of a hammer when you actually need it, just because you once saw some guy use a hammer in an inappropriate context.

<comment><USER18> Certainly. But I think people read the TL;DR: as "oh, design patterns are bad" or "don't use the wrong tool for a job." A better TL;DR is a bit more nuanced:

Broad familiarity with your tools and their applicability (design patterns or otherwise), is a prerequisite to picking a reasonable tool for a given task.

</comment></comment></comment><comment><USER19> Regarding database abstraction, the author writes: "In 10 years, I've seen only one business make serious effort to completely swap a fully vested database. And when it happened, the "Magic file" did not help."

Agreed. I almost embarked on a huge PHP mysqli>PDO conversion, and was advised the opportunity costs were huge and the benefits minimal. Glad I took that advice.

<comment><USER20> Conversely, at one point I wanted to start using Postgres' JSONB features, but was running my production app on a MySQL backend.

Switching was as simple as:

1\. Export all data to fixtures. 2\. Change settings.py to use the Postgres drive. 3\. Load all data into fixtures.

Granted, I was sticking to core Django ORM calls, so I wasn't hard coding any SQL anywhere. And the null ordering does change a little, but the tests caught that.

So I was definitely glad that worked out. And have been super happy with postgres.

<comment><USER21> >sticking to core Django ORM calls

I think that's what made it easy. That's the trade off when you try to build a generic DB access to support the trivial DBMS swap like the article take about -- you end up writing a lowest common denominator of functionality common to all your anticipated DBMSs. I assume Django's ORM let's one do DBMS specific stuff but you happened to not make use of that.

I agree with the article, 9/10, don't try writing wrappers just to support the "easy future swap out". Write them if they make the specific technology more palatable to work with. An example I'm my life: Rails' ActiveRecord is just a joy to work with but we would be hurting plenty if we tried to swap out to a different DBMS.</comment></comment></comment>


3.5 hours of meetings with investors for Startup Riot winners - <AUTHOR> http://stage.startupriot.com/seattle-2011

<comment><AUTHOR> So this news is already old. The top winner now get eight 30 minute meetings. So 4 hours of meetings with investors. More to come!</comment>


Researchers: Are we on the cusp of an 'AI winter'? - m-i-l https://www.bbc.co.uk/news/technology-51064369 <comment><AUTHOR> No.

Maybe an "AI Fall", but I doubt there will ever be another true "AI Winter". The AI we have today is too good, and creates too much value... at this point, there is no longer any question as to whether or not there is value in continuing to research and invest in AI.

What _will_ happen, almost without doubt, is that particular niches within the overall rubric of "AI" will go in and out of vogue, and investment in particular segments will fluctuate. For example, the steam will run out of the "deep learning revolution" at some point, as people realize that DL alone is not enough to make the leap to systems that employ common sense reasoning, have a grasp of intuitive physics, have an intuitive metaphysics, and have other such attributes that will be needed to come close to approximating human intelligence.

Disclaimer: credit for the observation about "intuitive physics" and "intuitive metaphysics" goes to Melanie Mitchell, via her recent AI Podcast interview with Lex Fridman.

One other observation... while we still don't know how far away AGI is (much less ASI), or even if it's possible, the important thing is that we don't _need_ AGI to do many amazing and valuable things. I also doubt many people are actually all that disillusioned that we aren't yet living in The Matrix (or are we???).

</comment><comment><USER2> I would say yes, but I'm not a researcher and I could be wrong. However, given the current political, financial, and social climate it seems like a real possibility.

E.g. "customers" become (or are already) so disillusioned with the promises of an artificially intelligent future, that the marketing hype no longer works.

If you then couple this with the consolidation (not decentralization) that is likely to occur this decade, then we will at least see the hype-train slow to a slow roll, if that.</comment>


Generate Your Changelog From GitHub Issues - <AUTHOR> https://github.com/skywinder/github-changelog-generator <comment><USER2> I really appreciate the attention to detail in every little thing including the README. Very inspiring.

This is a serious question for HN: Is it considered rude to make pull requests to fix grammar? The English is great, but is made more apparent in some locations (such as headers in the README) that it is a second language, but the first thing I thought to myself was "that'd be rude".

<comment><AUTHOR> Yep. I know, my english is not well. So, I will much apreciate a PR with grammar fixes.

<comment><USER3> In this case, you'd want 'good' instead of 'well'—your english is good and you speak english well.

<comment><AUTHOR> Good to know! :) Thanks!

</comment></comment></comment></comment><comment><USER4> I see this being very useful for generating a rough draft for the changelog that you can then edit and elaborate on. I find that not all commits change public facing APIs, so it would still be necessary go go over it and remove internal changes.

</comment><comment><USER5> Might be better than what I'm currently using.

The `git changelog` command from the git-extras package is also quite useful. It just takes the git log messages from the git history until the last tag and updates the `{History,Changelog}.md`. [https://github.com/tj/git- extras/blob/master/bin/git-changel...](https://github.com/tj/git- extras/blob/master/bin/git-changelog)

</comment><comment><USER6> I don't understand why a changelog is necessary nowadays. Surely all the benefits that the author addresses here could be dynamic features of Github, Gitlab, etc?

He does answer the FAQ "I already use GitHub Releases. Why do I need this?" but his answer doesn't really address the point that this comes down to missing functionality in such tooling and should be fixed there, rather than in a static file generator.

<comment><USER7> A generated changelog and/or a list of changes straight out of source control is not a substitute for a good release notes files. In fact, while I used to do the same in the past (back to cvsps!), I now just use the log as a template for what I'm going to write, to remember what I did.

As an _user_ I'm not interested in source details, minor cosmetic fixes and internals. I want to know what's new compared to the last release, what are the user facing changes, and any upgrade issues I might be facing. These are usually expressed just in a few paragraphs in a very discursive fashion. I personally hate straight-form-source changelogs. I do not read them as an user (too verbose), I don't use them as a developer (I use the scm directly!).

There's a tendency for developers using git to conflate the two, since history can be rewritten. I think it's a major mistake. Commit logs are meant to aid developers. Commit logs will inevitably contain redundant information about the same logical change, even when you try hard to hide it. This is all useless information for users. On the contrary, dumbing down the history just for the sake of readability will also hurt the developers in the long run.

<comment><USER6> I'm all for release notes being written. Just not changelogs.

</comment></comment></comment><comment><USER8> I have used similar tool called `git-pr-release` which create release PR from bunch of topic PRs. I added a function that create a Github release from release PRs. [https://github.com/hiroshi/git-pr- release/tree/create_releas...](https://github.com/hiroshi/git-pr- release/tree/create_release#the---release-flag)

</comment><comment><USER9> For those looking to generate changelogs, but not from issues or something GitHub-specific, gnulib has a tool to generate changelogs from commit messages:

[http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=bu...](http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=build- aux/gitlog-to-changelog)

<comment><AUTHOR> >Dumping a diff of commit logs. Just don't do that, you're helping nobody. (c)[https://github.com/olivierlacan/keep-a- changelog](https://github.com/olivierlacan/keep-a-changelog)

It's very hard to maintain it in a good maner. The Issues fits for this purpose much better. (JMHO)

</comment></comment><comment><USER10> This is very nice. I was creating manual changelog via Github releases. I really like that way because I can see the latest changes immediately and pick the relevant changes:

[https://github.com/fatih/vim-go/releases](https://github.com/fatih/vim- go/releases)

</comment><comment><USER11> It would work well if your issues are all correctly formatted (ie "Fix: XYZ", "Add: XYZ"). For open source projects, though, you'd have a ton of "Closed Issue" items for random questions where people treat issues as forums. That puts me off.

<comment><AUTHOR> Hey, thats for a labels! As I mention in README: any issue, that has label "question duplicate invalid wontfix" will be excluded by default. And you can change list of this labels.

<comment><USER11> Awesome! I totally didn't see that. My own fault for skimming!

</comment></comment></comment><comment><USER12> Very cool. We have been building a slack bot to do something similar, for internal release notes [https://github.com/DispatchMe/meteor- rosie](https://github.com/DispatchMe/meteor-rosie)

</comment><comment><USER13> Question/Poll:

Do you prefer `changelog.md` or the releases tool built into github (IE: [https://github.com/evantahler/actionhero/releases](https://github.com/evantahler/actionhero/releases)).

<comment><USER14> Both: keeping a changelog and copying a section to the latest relase after tagging it, since they're both Markdown.

<comment><AUTHOR> Yep. I would like to implement it also: [https://github.com/skywinder/github- changelog-generator/issu...](https://github.com/skywinder/github-changelog- generator/issues/56)

</comment></comment></comment><comment><USER15> In the projects I work we prefix every commit with codename and 3 digits, I extract the change log from this command:

git log v0.3...v0.4 --oneline | grep -oh -B 1 "CODENAME-[0-9][0-9][0-9]" | sort | uniq

<comment><AUTHOR> I will add this feature in the future to this script also! [https://github.com/skywinder/github-changelog- generator/issu...](https://github.com/skywinder/github-changelog- generator/issues/51)</comment></comment>


Warn HN: serious keyboard issues with all sorts of Dell laptops - <AUTHOR> https://www.google.com/?#q=double+letters+site:en.community.dell.com <comment><AUTHOR> Recently bought a Dell Precision M5510 that comes with Ubuntu preinstalled. Aside from the various linux-specific issues I noticed characters sometimes appearing twice when typing on the keyboard (external keyboard works just fine). A quick search tells me this is an issue with a whole range of Dell laptops; they've been having these problems since at least 2009. The popular XPS 13/15 models are also affected. My keyboard has been replaced, to no avail. Now they want me to send it in, but reports on their forums indicate that doesn't get it fixed either.

This is a warning to all coders/fast typists here: stay away from Dell's laptops!

<comment><USER2> Curious how Dell addressed this under the three year NBD standard warranty for Precision computers.

<comment><AUTHOR> Addressed it? How?

<comment><USER2> I was curious about Dell's response when contacted about the defect with your computer because my experience with Dell's technical support for products under warranty has been good and for products outside of warranty has been better than it might have been.

Caveat: my assumption was that the first stop for a new broken Precision would be Dell support based on how I would proceed.</comment></comment></comment></comment>


Ask HN: Best Startup-Themed Movies? - <AUTHOR>

Does any one have film suggestions? Startup/tech history favorites? <comment><USER2> Primer

<http://www.imdb.com/title/tt0390384/>

<comment><USER3> Do you mean Primer (no "The")? Because if so, then yes. Awesome!

<comment><USER2> Ah, yes, you're right. I misremembered. It's been a while since I saw it.

It's one of the lowest budget movies ever that I've watched and enjoyed more than most of the high budget ones.

It's also a complete mind bender.

</comment></comment></comment><comment><USER4> Micro Men from BBC had some startuppy themes when Acorn began, although it was more about the rivalry with Sinclair than the startup experience itself.

In my head I associate all kinds of survival movies like Cast Away, Rescue Dawn etc. being startuppy as well in the sense that the characters are surviving on their wits and persistence, against forces of nature and their own doubts.

</comment><comment><USER5> It's a little old now and a documentary, which might not be what you were asking about, but you should check out Startup.com

<http://www.imdb.com/title/tt0256408/>

</comment><comment><USER6> There used to be a tv series about a startup from like ABC, I thought it was called hyper-something. I googled it but no luck

<comment><USER6> I'm thinking of "Hyperion Bay" not completely about a startup though.

The series centered around Dennis Sweeney (Mark-Paul Gosselaar) who, after a successful career in the software business, returns home to open a local division for the company he works for. The series follows the drama when the new meets the old in the little coastal town of Hyperion Bay, California.

</comment></comment><comment><USER7> <http://news.ycombinator.com/item?id=304274>

</comment><comment><USER8> Weird Science. We all want to make something beautiful. The only differences are what goals we're after.

</comment><comment><AUTHOR> I just watched "August." It was pretty decent.</comment>


United Airlines gives hacker free flights and reward miles for finding - <AUTHOR> http://www.cbc.ca/radio/asithappens/as-it-happens-friday-edition-1.3157925/united-airlines-gives-hacker-free-flights-and-reward-miles-for-finding-flaws-1.3158110 <comment><USER2> Previously: [https://news.ycombinator.com/item?id=9895694](https://news.ycombinator.com/item?id=9895694)

</comment><comment><USER3> Please check HN Search (at the bottom of most HN pages) for duplicates before posting.

A small number of reposts is ok if a story hasn't had significant attention on HN within the last year or so. If it has, though, then it's a duplicate. Please don't post those.</comment>


Ask HN: What games do programmers play? - <AUTHOR>

What games do you yourself play? If I develop a game specifically for programmers, what should it look like? <comment><USER2> Banished [0], Starcraft [1], Starcraft 2 [2], SPAZ [3], FTL [4], AoE HD [5], TF2 [6], CS:Source [7], Minecraft [8], Kerbal Space Program [9], SpaceChem [10]. I'm sure there are more but that's all I can think of off the top of my head.

[0] [http://www.shiningrocksoftware.com/game/](http://www.shiningrocksoftware.com/game/)

[1] [http://us.blizzard.com/en-us/games/sc/](http://us.blizzard.com/en- us/games/sc/)

[2] [http://us.battle.net/sc2/en/](http://us.battle.net/sc2/en/)

[3] [http://minmax-games.com/SpacePiratesAndZombies/](http://minmax- games.com/SpacePiratesAndZombies/)

[4] [http://www.ftlgame.com/](http://www.ftlgame.com/)

[5] [http://store.steampowered.com/app/221380/](http://store.steampowered.com/app/221380/)

[6] [http://www.teamfortress.com/](http://www.teamfortress.com/)

[7] [http://store.steampowered.com/app/240/](http://store.steampowered.com/app/240/)

[8] [https://minecraft.net/](https://minecraft.net/)

[9] [https://kerbalspaceprogram.com/](https://kerbalspaceprogram.com/)

[10] [http://www.spacechemthegame.com/](http://www.spacechemthegame.com/)

EDIT: Added some more

</comment><comment><USER3> It seems like an over-simplification/generalization to think that people who write software for a living/hobby share video game preferences. People are multifaceted with many different interests. Our professions do not define the rest of us.

I personally enjoy playing sports games (e.g. FIFA, NBA 2K) and action games (e.g. Red Dead Redemption), but I don't think those choices have anything to do with my profession.

<comment><USER4> There's some truth to that, but OTOH programmers have a different mindset -- if you write software for a living/hobby, generally you'll have above-average intelligence and enjoy dealing with complex dynamical systems and elegant models of the real world.

This explains why so many suggestions in this thread are strategy games, roguelikes, and deep puzzle games.

Also, the HN demographic skews to a certain age range, so there's a lot of nostalgia for 1993-1999 games. (If this describes you, check out the site formerly known as Good Old Games [1])

[1] [http://gog.com](http://gog.com)

<comment><USER5> I agree with original OP and think you're retrofitting your theory onto the data. Games like civilization 5, starcraft I/II, dota and minecraft are some of the most played games in general.

The fact that you're seeing them pop up here doesn't automatically say something about our demographic.

</comment></comment></comment><comment><USER6> Minecraft and Kerbal Space Program are my favorite games that have come out in recent years. Quake Live / Q3Arena is the only FPS I play anymore. Looking forward to the release of Planets³. I'm also still addicted to 2048 and the various forks (current fave is doge2048).

<comment><USER7> +1 for Quake 3. I've been playing since it went beta in 98 or 99. I would skip school so I could listen to Rage Against the Machine in the Rocket Arena mp3 player. Big instagib player too, and I loved when the mods were popular like the two jail break ones.

</comment></comment><comment><USER8> Check out SpaceChem for a great programmer-friendly but-not-explicitly-about- programming game.

<comment><USER9> Plus one for a game that scratches the programming itch.

However, for relaxation, I tend to favor MMOs. They are the right mix of social, achievement orientated, and simple to fill downtime.

<comment><USER10> Minus one for suggesting a game that will keep you up hours just to optimize a few cycles out of the program.

SpaceChem is an incredible game but it's as dangerous as "one more turn" of Civilization.

</comment></comment></comment><comment><USER4> A few games with a programming theme that haven't been mentioned: KOHCTPYKTOP [1], Factorio [2], Manufactoria [3]. Of course, SpaceChem [4] as well, which numerous other commenters have mentioned.

Here are a couple non-programming games that haven't been mentioned. A Valley Without Wind 2 [5], which is a mix of platforming and strategy; AVWW2 is a spiritual successor to an SNES game called ActRaiser [6]. Scrolls [7] is enjoyable if you like chess and Magic: The Gathering, but it is designed to be much less of a money sink than MTG. If you want to try Scrolls, I mentioned a couple tips for new players in a reply to a different post [8].

[1] [http://www.zachtronics.com/play- kohctpyktop/](http://www.zachtronics.com/play-kohctpyktop/)

[2] [http://www.factorio.com/](http://www.factorio.com/)

[3] [http://pleasingfungus.com/Manufactoria/](http://pleasingfungus.com/Manufactoria/)

[4] [http://www.spacechemthegame.com/](http://www.spacechemthegame.com/)

[5] [http://arcengames.com/w/index.php/games/valley2-features](http://arcengames.com/w/index.php/games/valley2-features)

[6] [http://en.wikipedia.org/wiki/Actraiser](http://en.wikipedia.org/wiki/Actraiser)

[7] [https://scrolls.com/game](https://scrolls.com/game)

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

</comment><comment><USER11> Hide The Angular Bug - it's a simple game that I like to play when I'm under deadline.

</comment><comment><USER12> I adored Ico, Shadow Of The Colossus, and the God Of War series, though I mostly played through them and was done. I keep going back to nethack from time to time...

</comment><comment><USER13> Gnomoria, which is like Dwarf Fortress for humans featuring gnomes ([http://gnomoria.com](http://gnomoria.com))

</comment><comment><USER14> Chess takes up most of my game time. I play at a (open source) site called Lichess, and locally. Lately I've been trying Go, which is quite fun, though bewildering most of the time!

I'm surprised no one has mentioned Interactive Fiction, or Muds. _Spider and Web_ is one of my favorite IFs of all time. _God Wars 2_ is an incredibly deep mud and gameplay experience.

</comment><comment><USER15> I enjoy roguelikes. They're very convenient to play (tiny turns, work over ssh) and most of them are open source.

</comment><comment><USER16> "Robotgame is a game for hackers. You write robots in Python, test them with our kit, and submit them to our server. You can challenge other robots yourself, or wait for the server to match you up automatically."([http://robotgame.net/](http://robotgame.net/))

</comment><comment><USER17> I second kohanz's comment that programmers may not have a common center of interest when it comes to video games.

However, maybe you could start with the assumption that programmers are usually good with logic and problem-solving, and think up a clever concept like Valve's _Portal_ series.

</comment><comment><USER18> Starcraft 2 and Civ5 for serious games. Puerto Rico, Agricola, Seven Wonders, Carcassonne, and Dominion for board games. Androminion, Frozen Free Fall (that's basically Disney-branded Candy Crush), 2048, and French/British Wars (that's a real-time strategy game) on the phone.

<comment><USER4> You left out Settlers of Catan!

<comment><USER18> Deliberately. I think Settlers has too much luck involved - the other games I listed primarily depend on the actions of the other players with only a little bit of randomness added to spice things up, but in Settlers you can easily get screwed even if you build in the best spot because your number never comes up. It's a good gateway-game though.

</comment></comment></comment><comment><USER19> I've played Go for as long as I've been a programmer, and I feel like it helps me with logic and reasoning and "big picture" thinking

[http://en.wikipedia.org/wiki/Go_(game)](http://en.wikipedia.org/wiki/Go_\(game\))

</comment><comment><USER20> I mainly play Minecraft and League of Legends, but also dabble in Terraria and Starbound. Played the Call of Duty and Halo series back in my Xbox days.

I'd love to see a game similar to Minecraft, but with more advanced redstone (circuitry) stuff!

</comment><comment><USER21> To answer your first question, Recently 2048, FTL and Rogue Legacy. But as kohanz said I don't think it has anything to do with the fact that I'm a programmer and I know a lot of differents programmers who play a lot of different genre.

</comment><comment><USER22> Starcraft 2, Starcraft, Warcraft(the strategy game, not the MMO), Dwarf Fortress, And a few First Person Shooters to unwind when I have a headache.

I have a feeling that programmers might be slightly inclined to games of strategy and complexity.

</comment><comment><USER23> No one even mentioned 2048 ?

My kind of games are the simple and addictive, more often-than-not tetris type.

I'll also whoop your ass on UT99, C&C Mario, and Mortal Kombat, but after that era gaming kind of started to suck.

<comment><USER24> I _really_ liked 2048. Reached 4096 a couple times. Then, in a fit of sanity, deleted it.

</comment></comment><comment><USER25> The games I've played the most are Chess, League of Legends, Scrabble, Poker, the Civ series, and Diablo 2 (when I was younger).

Any game with a lot of strategical depth tends to pull me in.

</comment><comment><USER26> Starcraft

I still believe that my first understanding of 'conditionals', and other standard programming concepts, came from using the Custom Map Editor for Starcraft. Thanks Blizzard!

<comment><USER22> RIGHT THERE WITH YOU.

I always tell people that Warcraft 3 and Starcraft taught me programming. I definitely wouldn't be a developer if it weren't for the custom trigger editors.

The furthest I've pushed Warcraft 3's visual trigger editor was writing a Genetic Algorithm pathfinder for peasants. They're surprisingly versatile, and being able to interact with a GUI and game universe immediately makes it great for prototyping.

</comment></comment><comment><USER27> No One Lives Forever 1, Assetto Corsa, Goat Simulator, Die Hard Nakatomi Plaza, James Bond Nightfire, Dungeon Keeper 1, Deus Ex 1, Mafia 1+2, Tomb Raider 2013, Age of Mythology

</comment><comment><USER28> Master of Orion 2 is definitely my all time fav. Been playing it since 1996. The slow methodical long term strategy required definitely appeals to a meticulous problem solving nature.

</comment><comment><USER29> It should look like a game you'd enjoy playing.

I like most genre of games, but fighting games, puzzle games, and JRPGs probably rank towards the top. I also love StarCraft 2.

</comment><comment><USER30> Smash Bros and Street Fighter. Fighting games are great in general

</comment><comment><USER31> I play games that my students make for me.

[https://github.com/keshavsaharia/Zen](https://github.com/keshavsaharia/Zen)

</comment><comment><USER32> Faster Than Light is a lot of fun; 2d strategy space battles.

<comment><USER2> I love FTL, do you have any other games like it that you would recommend?

</comment></comment><comment><USER33> Dark Souls lately, RPG's in general (Fallout is my personal fav)

As a programmer I try to get as fas as possible from "programming" games.

</comment><comment><USER34> I play a lot of snes and nes games like: \- Legend of Zelda \- Super Mario World and 3 \- Castlevania

Currently -> Legend of Zelda: A link to the past

</comment><comment><USER35> Space Invaders!

My significant otter loves board games and has dragged me into Carcasonne. That shit is addictive.

</comment><comment><USER36> Dota 2 is the best game ever. Also Civilization is a very good game.

I think they intend to play strategic games.

</comment><comment><USER37> I like crazy complicated logic and the less visual bling the better. Nethack and Dwarf Fortress come to mind.

</comment><comment><USER38> Golf, pathfinder, and random board games people bring over.

They are all social and usually involve beer.

</comment><comment><USER39> Dark Souls series. Uncompromising challenges both mental and dexterous. Nothing else even comes close.

</comment><comment><USER40> As a little experiment, I've set up a Minecraft server for HNers. Come and join!

edgeflux.com

</comment><comment><USER41> In my case, Starcraft 2, Diablo 3 and Guild Wars 2 (as well as tons of random console games).

</comment><comment><USER42> supreme commander 1/2, through a software engineer/programmer's glasses, the mentioned games are horrible (especially SC1) because the longer you play the worse it gets with the games' simulation performance.

</comment><comment><USER43> I like to play Team Fortress 2, Age of Empires 2 and Dwarf Fortress 2.

<comment><USER44> Dwarf Fortress _2_?

<comment><USER45> He was probably thinking of the official title "Slaves to Armok: God of Blood Chapter _II_ "

</comment></comment></comment><comment><USER44> Hearthstone

Rogue Legacy

</comment><comment><USER46> Strategic thinking games like Civ, Starcraft, AoE, Heroes, SimCity...

</comment><comment><USER47> The only games I play are board games with friends.

</comment><comment><USER48> Starcraft 2, Might and Magic X, Age of Wonders III

</comment><comment><USER49> Hearts and Euchre - obsessively.

</comment><comment><USER34> 2048 :)

</comment><comment><USER50> League of Legends

</comment><comment><USER51> Battlefield 4

</comment><comment><USER52> Banjo-Kazooie

</comment><comment><USER53> Civilization

</comment><comment><USER54> Starcraft 2!

</comment><comment><USER55> When I was a kid, I used to love the Nintendo "Game Watch" games. "Fire!" was my favorite. I also liked the computer chess games with the little plastic pieces going into slots - the pieces always got lost, and the computer was weak, but I liked it. The great unsung thing of The Smartphone Era is having incredibly good chess programs available. Shredder Chess[1] is my favorite. It's strong, and it's got a fun "puzzle" mode where you're given a position and you have to figure out the best sequence of moves (usually just 1-3 moves).

I also really love Plants vs Zombies[2] "Vase Breaker" mini-game. I used to be really into Minesweeper (I broke 80 sec a few times on expert) and Vase Breaker obliquely reminds me of it. (The base PvZ game is excellent, but has poor replayability. Also, don't bother with PvZ2). Note: this game was done with Marmalade[2.5].

Portal[3] and Portal 2 are perhaps my favorite puzzle games of all times, although again, somewhat limited replayability (although if you go for achievements and/or level building, that changes).

I find myself fascinated by Diablo 3[4], but mainly because it's so psychologically manipulative. It's literally an endless grind, and essentially a form of virtual gambling for kids. Fascinating, because at a certain point all of the great artwork, music, and thoughtfulness vanishes into a mechanical blur of killing monsters, filtering drops, repeat. There is very little depth, and yet it has a strange Blizzard-y appeal.

Last but not least, I've been playing Hearthstone[5], another Blizzard game. It's an electronic trading card game, in the same vein as WoW TCG or Magic the Gathering. It's actually pretty good - until you get to a point where you just can't compete with people who have the very powerful rare (and expensive) cards. It's chess where you can have as many queens as you can afford. The genre and the play mechanics definitely appeal to a programmer's sensibilities, but "pay-to-win" mechanic totally ruins constructed deck play for me. (This is mitigated somewhat by Arena mode, where everyone constructs a deck at random, which levels the playing field a great deal.)

[1] [http://www.shredderchess.com/](http://www.shredderchess.com/) [2] [http://www.popcap.com/plants-vs-zombies-1](http://www.popcap.com/plants-vs- zombies-1) [2.5] [https://www.madewithmarmalade.com/index](https://www.madewithmarmalade.com/index) [3] [http://orange.half-life2.com/portal.html](http://orange.half- life2.com/portal.html) [4] [http://us.battle.net/d3](http://us.battle.net/d3) [5] [http://us.battle.net/hearthstone](http://us.battle.net/hearthstone)

<comment><USER4> > It's an electronic trading card game, in the same vein as WoW TCG or Magic > the Gathering. It's actually pretty good - until you get to a point where > you just can't compete with people who have the very powerful rare (and > expensive) cards.

You should try Mojang's Scrolls [1] if you like CCG gameplay and deck building, but dislike the pay-to-win aspect or the prerequisite of spending hundreds to thousands of dollars to be competitive.

In Scrolls you can use real money to buy preconstructed decks, custom avatars, and a few randomly selected cards in the store's "Just for You" section, but most of your cards are purchased with in-game gold which you must earn through playing matches.

You can play against computer opponents, and your starting precon is strong enough to regularly beat the easiest CPU deck to earn gold which you can use to buy more cards.

Advice for new players: Don't choose Order as your starting faction (I did and kinda regretted it). Buy scrolls from other players in the trade channel, not the store. And use the price guide at [http://trading.scrollsguide.com/](http://trading.scrollsguide.com/) as a starting point to figure out reasonable prices for cards (it's based on parsing prices from trade channel chat).

[1] [https://scrolls.com/game](https://scrolls.com/game)

</comment></comment><comment> vezzy-fnord I'm not much of a gamer at all, and my primary taste is in old school first- person shooters (Doom, Quake, Blood, Redneck Rampage, Shadow Warrior, Serious Sam, Unreal Tournament, Duke Nukem 3D, etc.)

That's pretty much the only video game genre I care about. Currently looking forward to _Wolfenstein: The New Order_ and that's about it.

</comment><comment><USER56> Chess

</comment><comment><USER57> 2048</comment>


Ask HN: First Robot City - <AUTHOR>

I'm thinking about creating a remote web-based city full of robots, quadcoptors,3d printers, etc. It would be in a warehouse and people could rent out time on the robots. Use cases, create and mail parts. Games like arial paintball. Obviously version 1 would be limited. I'm thinking power issues would have to be worked out. possibly solar cells with lasers focused on the power. Obvioulsy hardware based projects are expensive to get off the ground but I'm wondering if there there's any interest in this. <comment><USER2> I think this is a pretty sweet idea, just would take a lot of cash to get it started and marketed</comment>


On Artificial Intelligence – A European approach to excellence and trust [pdf] - <AUTHOR> https://ec.europa.eu/info/sites/info/files/commission-white-paper-artificial-intelligence-feb2020_en.pdf <comment><AUTHOR> An interesting quote from the paper:

" _There is a need to build bridges between disciplines that currently work separately, such as machine learning and deep learning [...] and symbolic approaches [...]. Combining symbolic reasoning with deep neural networks may help us improve explainability of AI outcomes._ "

To my knowledge, this the first time that symbolic AI approaches are explicitly mentioned in communications from the European Commission.

More information about AI from the European Commission and links to related initiatives are available from:

[https://ec.europa.eu/digital-single-market/en/artificial- int...](https://ec.europa.eu/digital-single-market/en/artificial-intelligence)</comment>


Unmasking Twitter - <AUTHOR> https://stratechery.com/2020/unmasking-twitter/ <comment><USER2> I doubt the WHO is unaware that asymptomatic carriers of the virus exist. There might be some debate as to how much they are doing the spreading of the virus, but it's a numbers game.

Right now, masks are a _severely_ limited resource. Symptomatic patients and health care workers are without a doubt the ones who need them the most. That is to say, currently only 1% (give or take) of a population fits into one of these two categories.

Asymptomatic people is literally everyone else, 99% of the population. And the risk of them spreading the virus, all other things being equal, is _less_ than that of symptomatic patients.

If masks were unlimited, or were infinitely reusable, then the experts would probably encourage increased use of them, along with all other forms of PPE. That's not the reality, and saving resources for folks with the greatest need seems like a reasonable recommendation for the collective whole, even if it leads to some individuals being somewhat more exposed or a minority of folks exposing more as well.

</comment><comment><USER3> I got a few chinese 95ish masks that no hospital would take anyways. Does anyone know if I can reuse them and how? Or cycle them? Or bake them?

Better reusing than none? Better home-made but washable?</comment>