Ask YC: Typical mentoring times and template NDAs - <AUTHOR>

Hi, I'm about to start approaching possible mentors for my idea/startup and I'd like to know whats the typical cost (in terms of time) for a mentor. Just a few hrs a month or more frequently? What have people/mentors found pls ? Also, does anyone know a good place for sample/template NDAs ? Tks Alex <comment><USER2> Well, here's some suggestions to get you started. Use words like "hours" instead of "hrs" and "please" instead of "pls". Also, "thanks" instead of "tks".

Additionally, you're not going to get very far if you honestly expect a mentor to sign anything for you; up to and including an NDA. They are doing you a favor, not vice versa.

</comment><comment><USER3> I hope these two questions are not related.

<comment><USER4> I didn't go there...

</comment></comment><comment><USER4> Re: NDA, revise and tweak anything you find but docstoc is an ok place to start...

<http://www.docstoc.com/docs/272018/Non-Disclosure-Agreement->(NDA)-Template

</comment><comment><USER5> Question: where do you guys even begin learning how to deal with legal issues like this, copyright issues, incorporating, etc etc?

<comment><USER2> If you're just starting (which you will be in 4 years), the best way is to put together some money; I'd save 5k or so and retain a lawyer who specializes in corporate law. Tell him what your needs are, and he can figure out what's important and what's not.

You can get the gist of things by reading here; there are a lot of people who read and comment here who have startup experience as well as standard corporate management experience.

The biggest piece of advice I can give you is to remember that as a hacker, you are an expert in your field, and you have to remember that there are experts for the other aspects of your company as well. Use them.</comment></comment>


Eliminating Political Parties (Scott Adams) - <AUTHOR> http://dilbert.com/blog/entry/eliminating_political_parties/

<comment><USER2> People will still be irrational.

It would simply move the irrationality to idol-worship, identifying with one candidate.

I'm starting to believe that elections are more random than one would think, and odd things decide elections (see for example the Spanish elections where a politician's stance after a terrorist attack by blaming it on ETA completely shifted the election - if the attack had happened another day or said politician had blamed it on Al Quaeda instead he'd have won)

I recall some interesting studies that said that random selection of leaders worked better than deliberate selection:

"Evidence That Random Selection of Leaders Can Enhance Group Performance"

[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi...](http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6WYH-46NXKGF-3&_user=10&_coverDate=09%2F30%2F1998&_rdoc=1&_fmt=high&_orig=search&_origin=search&_sort=d&_docanchor=&view=c&_searchStrId=1527445910&_rerunOrigin=google&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=1cbdb361856b43b50464b59afe84ead6&searchtype=a)

we cannot rationally assess each candidate, so we turn to substitutes. If it isn't the political party, something else will have to do (his smile, demeanor, clothing, whatever).

I've seen elected officials whom I expected to be bad perform better than expected, and people whom I had big expectations turn out to be busts.

</comment><comment><USER3> > Imagine a democratic political system in which no one is allowed to be a > member of a political party. How would things be different?

In many municipalities, this is how it works - all elections are non-partisan, and setting up non-party slates is similarly prohibited.

What happens? Councilors are still widely known as being part of the left- wing/right-wing/Conservative/Liberal/Labour factions of council, and form as- hoc groups once elected accordingly. Low-information voters - the people who would vote straight-ticket one way or the other in a partisan race - tend to pick a single issue and vote for whichever candidate identifies with that particular one.

One of the benefits (and I accept that this being a benefit may be controversial) of a party system is that it makes it easier to participate in the process for low- and medium-information voters. If you're super-involved, I salute you - and you're more than welcome to do a detailed analysis of the candidates and their positions, and pick whichever one appeals most to you. If you're not that involved, you can pick the party that broadly represents your values, and be confident that the local guy you'd end up voting for backs those positions (for the most part) and will help move them forwards. It means that someone who can't/won't spend an hour an evening reading up on the horse- race has a way to contribute to the electoral process at a level of confidence higher than "well, this guy is listed first on the ballot."

</comment><comment><USER4> Without political parties people would still self identify as "conservative" or "liberal". It's human nature. These groups/labels form people's view of self.

What we really want to eliminate is the divisive nature of political discourse that pits "us against them." That's what makes government inefficient. Destroying political parties wouldn't change that, I'm afraid.

<comment><USER5> Plus maybe a different voting system. The ability to only vote for one candidate gives little incentive to vote for a third parties.

</comment></comment><comment><USER6> In the spirit of evidence-based reasoning, why don't we look at what happens where political parties are absent or weak? This includes the new Afghanistan parliament, Colombia before 2005, Liberia, the Philippines, the Thai senate, and numerous municipal councils. Some of these forbid parties entirely, some discourage them by using electoral systems such as the single non-transferable vote, others simply have a political culture that frowns upon them. A few of the resulting characteristics may indeed be positive: debate is often vigorous, attention is paid to local concerns, and populist movements can rapidly reach power (though some may see that last one as a negative!) Generally, however, there are a number of problems:

What are elections like? First of all, proportional representation is difficult-to-impossible without parties, which eliminates one potentially fruitful type of political reform. Second, without party organizations to provide guidance as to a candidate's political stance, the "personal vote" predominates. This means a candidate needs extremely strong name recognition and personal financial resources: elected members are much more likely to be former entertainment celebrities, business magnates, leaders of ethnic or religious groups, local crime-lords or warlords, or of course incumbents. Another way to get personal recognition is to take credit for local spending, so candidates' campaigns tend to focus on the pork they'll bring if elected.

What about after the elections? Without a strong parliamentary whip, elected members can vote however they want, which sounds great—but it means that every single vote becomes an exercise in pulling teeth. Each member has an interest in acting recalcitrant in order to receive compensation in exchange for their vote. Governing coalitions end up ideologically incoherent, based mostly on which members are most in need of money for local projects. Since there's no ideological basis for government, changes of prime minister/president can happen either extremely often or extremely rarely, depending mostly on whether or not there are enough goodies to be passed around.

All this talk of weakening parties may show a lack of knowledge about the rest of the world. If you look around, you'll see that other nations, and most scholars, consider American political parties to be quite weak. Most countries with healthier political systems have parties that are perhaps smaller than the Democrats and Republicans, but are much stronger in the sense of having control over their elected members and candidates.

I'd argue that in the USA, we should be strengthening parties. Allow party whips to demand discipline from members, expelling those who will not vote with the rest of the party. Once a party wins Congress, they'll have to actually implement their agenda—no more making promises that are impractical or that they know they can't keep, and then blaming recalcitrant party members for preventing the passage of laws. Now, each party contains multiple opposing factions that proclaim incompatible visions. Instead, parties could decide internally what policies to support, and then the dissidents could just deal with it. Or dissidents could go start their own party, and you'd finally have some real diversity of views. Corporate influence could even fall. After all, it's a lot harder to bribe (I mean, uh, "contribute to the campaign of") an entire party to change their votes than to bribe one or two members.

One of the great recent successes of electoral design was in fact a party- strengthening exercise. In the unrecognized pseudo-country of Somaliland, political organization was nearly absent, and the nascent leaders worried that the new democratic system would become corrupt, based on local warlords and ethnic leaders. So first they held municipal elections across the country, and only the three parties with the highest nationwide total vote in these elections would be allowed to run in the subsequent national elections. Voilà! A new, fragile country developed three ideological, non-ethnic political parties; and while there are still serious problems there, the political system is pretty good for that region of the world.

The one issue I haven't really addressed is "what about the Interwebs!?" True, most of my information is from third world countries, where the Internet is not a serious factor. Non-partisan municipal governments in the West also have the problems I listed though, and have not typically been revolutionized by the Internet. But who knows, perhaps Naheed Nenshi's election in Calgary is the vanguard of a wave of social-network-inspired non-partisan renewal, I guess we'll see!

</comment><comment><USER7> While we're at it, can we eliminate campaigning?

Let's just have a nice web-app that will show you all the candidates for whatever position, and factually list their previous political actions (votes on various issues, etc), with perhaps a very small section wherein they can list their stances on more current issues. Campaign contributions cease to be a problem because there's no campaign to contribute to, and candidates are free to support the wishes of their actual constituents.

Not saying it will ever happen, or that it would be as simple as I've presented it, but it's at least an idea.

<comment><USER8> That's really brilliant. I wish that were possible.

<comment><USER9> No problem!

All you have to do is to amend the Constitution to remove this pesky bit:

" _Congress shall make no law ... abridging the freedom of speech_ "

(Note that this has been incorporated on the states through the 14th Amendment so you can't do an end run through them.)

</comment></comment></comment><comment><USER10> But we really need to go one step further and only vote on the issues and then hold candidates accountable for how well they addressed those issues. Otherwise, it remains as a popularity contest for liars.

<comment><USER11> That's harder than it sounds. I started paying attention a little too late for the last election. With just a day to prepare, I couldn't figure out much about my local candidates or the issues. I only had their own bland and possibly false statements to go on, plus local newspaper endorsements. On almost all of the races I ended up throwing up my hands and voting Democrat because the Republicans have done more gay-bashing, Muslim-bashing, race- baiting, and sucking up to stupidity than the Democrats have. Plus the Democrats have been less aggressive about bashing all non-car-based transit. Those are are the only issues I can wrap my brain around and really care about. Pretty lame, huh?

I'm considering subscribing to my local paper just to get a daily reminder to pay attention to what's happening locally. Any other suggestions?

<comment><USER8> I had the same exact problem. And the lower level the position e.g., school board, the harder it was to find any position information. Some of the candidates didn't even show up in Google searches.

</comment></comment></comment><comment><USER12> We have evolved into a two-party system because it fills a need: convenience. When most don't bother to vote, and even fewer vote with a functioning knowledge of the candidates, there is no need for a third party. This makes things easy: red versus blue, good versus evil. Like two football teams.

There is a enough distinction (arguably) between the two parties that one may confidently align themselves with one or the other. With extremely rare exception I vote party over candidate, not so much because I like the party, but because I dislike that party less.

The only way the current party system can be broken is if the system itself breaks -- it's going to take systemic political and financial failure to see any difference.

<comment><USER13> > We have evolved into a two-party system because it fills a need: > convenience.

No. Americans have evolved into a two party system because it suits those two parties, and they were strong enough to make that happen very early on.

Did you notice that the distinction between parties (gay marriage, abortion, government size) doesn't ever get addressed even though control has been switching between parties regularly? (And if it does, it's in the court and not in congress, e.g. Roe vs. Wade?)

That's because both puppets, sorry, parties are actually catering to a ruling elite, rather than the voters. And it's good for those parties to have issues that let voters identify with them (to the point of feeling unable to vote for the other guy). If these things were actually addressed, they'd have to deal with the real things like economics or policy. Which is kind of scary for them.

I agree about the only possibility of breaking is from the inside, though.

<comment><USER14> >Did you notice that the distinction between parties (gay marriage, abortion, government size) doesn't ever get addressed even though control has been switching between parties regularly?

Healthcare?

<comment><USER13> I agree, healthcare has actually been sort-of addressed. (And by sort of, I mean that while it is a move in the right direction, it is possibly the worst in terms of cost, and is a freebie to the healthcare industry; it does nothing to actually solve any underlying problem).

But are you aware that these healthcare plans have been debated since the '30s? For all practical purposes, 80 years to solve a problem in a half-assed way is in line with my original claim.

</comment></comment></comment></comment><comment><USER15> Part of what Mr. Adams proposes is already happening. The fact that both parties are entering a period of 'splinter' is an indication that even those who identify with a party are not happy with the party in question. As this gets both stronger and more wide spread we should see more and more 'sub- splinter' groups form. This in turn will affect how the parent party is able to perform--- or more importantly not perform. Consider that the democratic party is still suffering from the 'rainbow' movement of some years back, this sort of behavior will certainly increase the entertainment value of modern politics. The new slogan could be 'More theater, less action!'...

</comment><comment><USER8> One idea would be to remove party information from the voting ballots. It would be interesting to see what effect that had.

Obviously the party information on the ballot is designed to give uninformed voters at least some information about whom to vote for. Instead I propose each candidate submits a 10 word or less description of themselves to be shown under their name in the ballot. E.g.,

Joe Clown (More military, public praying, better schools)

I guess you wouldn't be allowed to mention a political party in your submitted description or it would defeat the purpose.

</comment><comment><USER16> There's a theory that I can't recall the name of right now that says political leanings natural coalesce around 2 "parties" regardless of how many there are much less none at all. It makes sense really. Voting on something is a binary action so logically groups coalesce around for or against.</comment>


Ask HN: Compare Schemas of Two Databases - <AUTHOR> Hello HN community!
I have been searching for a tool that would help me to automate schemas comparison of database instances. My current project is built on top of 15-years old legacy and they got themselves to the situation where instances comparison is required.
I found great stack thread however it's a bit old and tools listed there are also either abandoned or incomplete ( https://stackoverflow.com/questions/4804779/how-to-check-difference-between-two-databases-in-postgresql )
Have anybody had any luck with this kind of problem? If so would you share what you used? <comment><USER2> I worked on a project where we would generate XML representations of both databases and then use XSLT style sheets to display the differences.

What I like with this approach is thay you can start with a very simple XML schema and extend it as the need arises. Also you can compare DBs from different vendors as long as you can generate the XML.</comment>


What Happens When Apple Features Your iPhone App - <AUTHOR> http://blog.return7.com/what-happens-when-apple-features-your-app

<comment><USER2> As an aside: developers often cite ongoing costs as a reason to charge in an ongoing fashion for services like, e.g., push notifications or web applications.

It doesn't particularly matter to me how you explain your business model to your users (although "Boo hoo we have costs and have to feed our children" has always struck me as less persuasive in prying money out of people than "Look at how much value we give you!"). However, as long as we're just developers here, I'd just like to point out that marginal users are too cheap to meter and as long as you're continuing to sell the service there is no reason you can't fund the server costs entirely out of present sales.

Example from my app so you can see I'm not blowing smoke: my VPS costs $85 a month. My users pay $30, once. Suppose, for the sake of argument, that I can tolerate 10,000 users in one day (which is absurdly low given typical peak concurrency for my application, but we're just playing napkin-math).

This means that $85 buys me 300,000 user-days a month. Trial users typically go up-or-out within 3 user-days. Paid users consume less than 5 user-days per month. ( _Far_ less in my case but hey, napkin math.)

Assuming I like keeping half of my safe allocation available for trial users (150k user-days or, as seen above, enough to support 50k new trials per month, which is more than 1.5k per day, which is more than 10 times my best day ever), this means that I can support up to 30k paying users on one $85 / month box.

Now, hypothetically, if I were getting 1.5k trials per day, I'd be getting somewhere on the order of 30 sales per day. 3 sales _per month_ would pay for the server. It is clearly sustainable without having to use a subscription model.

I mention this mostly because some users groups are extraordinarily resistant to subscription models and I don't want anyone to feel they absolutely must, must, must price on a subscription if they offer a service.

I'm not intimately familiar with push notifications to iTunes apps but I suspect they require something on the order of one HTTP request. If so, on a per user basis, they're too cheap to meter. I'd (personally) offer them to everybody just to increase the amount of sales I got from the daily gravy train. (Well, to the extent that iPhone sales are driven by features, which I think is pretty darn limited.)

<comment><USER3> IMO, this breaks down due to the App Store's volatility. To compete, one generally (there are exceptions) has to lower prices to silly levels. That's fine and dandy when you're selling a couple hundred copies a day, but as soon as you fall off the chart in your category, you fall into the pit of selling 0-5 copies a day. At that point, not having a subscription model becomes unsustainable. There are 75k+ (and growing) apps on the store and a very small percentage of them actually get noticed. When they do, they often fall back into obscurity quickly. Very few apps maintain a solid rank for a year. You can't bank on getting sustained sales forever because you take the risk of having to foot the bill for the server yourself when the sales stop, VPS or not. Anyway, the feature is optional and the app works great without it. Apple recently added a listing that shows apps pulling in the most revenue. I think their hope is it will help alleviate this "race to the bottom" pricing. Time and market will tell.

As for push, there are two bits: client<\-->server interaction and opening a socket connection to shoot data to APNS to send the notifications themselves. It was pretty fun to get together and really the hardest parts dealt more with business rules than integrating with Apple's service. I would personally have preferred APIs to hook into the phone's calendar app, but push is useful for IM apps and the like, in lieu of background processes.

<comment><USER3> I should mention the cost of our app is $0.99. It would cap out at about $2.99. I don't think asking for a dollar a year is unreasonable given the cost of the app.

<comment><USER4> I don't think there has ever in the history of the world been a consumer market where unit prices are so low.

BTW: Personally, regular payments (especially small ones), do put me off. But I wouldn't mind a prepaid model so much. IE, I pay for a month or six upfront and then pay again to renew. I know this kind of opt-in/out is rarely beneficial to vendors, but in some cases it might work.

<comment><USER5> low relative to what?

There's still an awful lot of the worlds population who earn less than $1 / day.

<comment><USER2> Most of them, presumably, do not walk around with $600 cell phones.

</comment></comment></comment></comment></comment></comment><comment><USER6> I'd be most interested to see what happens a week and a month from now. That graph is obviously going to go back down, but I'm curious at what level it reaches an equilibrium and is that going to be a higher number than the prior sales date.

<comment><USER3> We'll definitely do a follow up post with that info :)

</comment></comment><comment><USER7> Your site goes down?

<comment><USER3> Yea, apparently. Working on it. Sorry. :D

<comment><USER8> Title should be, "What Happens When Hacker News Features Apple Featuring Your iPhone App".

<comment><USER3> You find that it's a great time to have your server in the cloud and be able to upgrade easily :D

</comment></comment></comment></comment><comment><USER3> Up now, sorry for the downtime</comment>


Show HN: Acolytefight.io – Multiplayer Skillshot Arena HTML5 Game - <AUTHOR> http://acolytefight.io <comment><USER3> Performance is bad on firefox but on chrome it worked fine. As for the game I think the gameplay is very awkward. In a skillshot game I want to be in really good control of my character. This could be improved by faster turn and movement rate(and perhaps being able to stop) or alternatively a more cave flier style both hands on keyboard combat where one hand is controlling the ship(arrow keys/wasd) and one hand is controlling weapons. As for the skills/weapons there are way too many in my opinion and the synergy of them feels awkward and the cooldowns are way too long. If you have 2 defensive spells I think they should be on a sub 5 second cooldown but maximum 1 sec duration and have all offensive spells kill on first or second hit to make to combat fast paced.

<comment><AUTHOR> Yeah, I've got that feedback from some people. Something I've realised is that everyone is that there are two broad categories that this game looks like it could be similar to: * A twin stick shooter * A MOBA And I've got two distinctly opposing sets of feedback from those two groups. MOBAs have long cooldowns and you move and shoot with the mouse. Twin Stick Shooters let you move and shoot using separate controls (it's common to run away and shoot forward at the same time) and have very short (almost non-existent) cooldowns. I'm a MOBA person, and I based this game off my happy experiences with Warlock, the WarCraft 3 map, so I've ended up making something which is more like that. I think the genres are fun for different reasons and I can't please them both.

<comment><USER4> Moba's feature a number of low-cd spells. I'd say the bigger differentiator is that mobas usually have a "skillset" while twin stick shooters usually have "set of skills". That is, the former features a very high degree of synergy, and performing the _whole combo_ is main task you want to achieve. That latter features shooting as the main goal, and your skills support that one basic task.

Your game is in an awkward spot because it fits neither: there's no real combo to act out (i didnt look through the skills too thoroughly so maybe there are some interesting combos to derive), so your primary task is fireball'ing, with skills to support that task. Yet the cd is annoyingly long, so you're mostly waiting!

The high risk shots dont seem to have real any way to allieviate the risk too: think of the basic moba combo: snare & pummel. You can still fire off the slow as hell ultimate, but its only _really_ risk—free if they're pinned first (and so pinning, not the ultimate, is really the thing you're trying to avoid as the enemy).

Again, I haven't gone through your game with any thouroughness to really judge; this is just my ideas on how skills play a significantly different role in the genres you're coming from, and how theyd function in yours

</comment></comment></comment><comment><USER5> Can I please _NOT_ have to play against other people?

Why does my super cool laser ball marble madness character move like a beach ball in a bath tub?

I can't even figure out what to do, or why I should care about laser balls and triangle ghosts, and they're just killing me before I figure out how cool my lasers are.

<comment><AUTHOR> Ah, that's fair enough, I should really add a training mode. That is good feedback! Thanks for trying!

<comment><AUTHOR> If it helps, you can create a party and then click "Make Private" and then you won't have to play with other people (you'll just be in a party of 1). I should really make that workflow easier though, I wouldn't expect a new player to figure that out.

<comment><USER5> Yup, I had to dig to find it. The "party" link didn't seem like the option I was looking for, until I saw the "private" option.

Also, I created a private party link, and figured out how to add an AI bot, after learning the controls.

The AI bot was still too strong, and beat me every time, so I need dumber bots, to have more fun up front. I sent the link to myself, and opened it up in multiple private windows, to learn the rules, against dummy sessions I created by invite.

But either way, maybe add a default practice button, that puts people in a private game, against a really weak AI, and you have your trainer option for new users.

I think a big, obvious training button sounds like a good idea. Especially for users that get killed in a competitive game with other people.

<comment><AUTHOR> Oh good, yes glad you found it. I will take all your feedback into account. I really should add a training mode! Thanks!

</comment></comment></comment></comment></comment><comment><USER6> Was this inspired by a custom map on Warcraft 3? Name is escaping me right now.. Been such a long time since I played it!

Would love to know about some of the tech you used to build it

<comment><AUTHOR> Yes, it was based on Warlock, the WarCraft 3 map! I had many fun Friday night LAN parties playing that map and wanted to recreated it!

It's TypeScript, canvas, React (for the UI elements), NodeJS and socket.io on the server. The entire simulation is run on the client. It is deterministic so it is just replaying the action stream identically to all the other clients to stay synced. The server is running a pretty simple loop really, every 32 milliseconds it collects all the actions and broadcasts them to all the clients. If there is anything else you want to know, feel free to ask, I'm happy to talk about it :).

<comment><USER7> Did you use any server or client game or rendering framework? eg. Phaser, pixi or the like. And when you say the simulation is running on the client, do you mean it is client authoritative and the server just acts as relay? What sort of actions do you send?

<comment><AUTHOR> The only thing I'm using is Planck.js as the physics engine, besides that it's just raw canvas. I did spend quite a bit of time deciding whether I should go for WebGL or Canvas, but Canvas was just easier and it performs well enough.

There are actually 5 canvases stacked on top of each other - background, glows, objects, interface, cursor. The glows layer has a CSS blur property on it, which lets it be done on the GPU. Initially I just used the canvas shadowBlur everywhere but it was horribly slow, so this was one of the biggest performance boosts. The other layers are just there because they're invalidated/refreshed at different rates for performance reasons. The interface layer is particularly slow to update as its got to draw all the button icon paths, so it only ever rerenders the parts as they change, as opposed to some of the other layers which rerender every frame.

</comment></comment></comment></comment><comment><USER8> Reminds me of the game Magicka ([https://en.wikipedia.org/wiki/Magicka](https://en.wikipedia.org/wiki/Magicka))

<comment><AUTHOR> I've never heard of that game but Magicka looks awesome! Thanks for sharing it with me!

<comment><USER9> It's hilarious to play with friends, you'll frequently mix up keys and drop a boulder on yourself or party members.

If you want something similar with a Starship Troopers vibe, also check out Helldivers!

[https://store.steampowered.com/app/394510/HELLDIVERS/](https://store.steampowered.com/app/394510/HELLDIVERS/)

</comment></comment></comment><comment><USER10> This is super cool! Networked games are a special kind of challenging to pull off, and I'm always really impressed by people who manage to pull these kinds of projects off at any level of polish. Any plans for further development?

<comment><AUTHOR> Yeah, the multiplayer part certainly was a big part of the challenge of this game! In terms of future development, I have some ideas but I think I will hold on to them so they can be more surprising later :)

</comment></comment><comment><USER11> Unplayably slow on this old thinkpad (core 2 duo)

<comment><USER12> Are you using Chrome?

<comment><USER11> No, FF 52.9.0 x86_64 as shipped in debian 9.5.

<comment><USER12> That may well be why. There are tons of reports of FF being unusably slow even on the newest processors.

<comment><USER11> I'll see if I can try newer versions of FF when I get around to it.

Chrome, like all Google trash, is not an option [0].

[0] [https://www.theregister.co.uk/2015/06/17/debian_chromium_hub...](https://www.theregister.co.uk/2015/06/17/debian_chromium_hubbub/)

</comment></comment></comment></comment></comment><comment><USER13> Design question: are the players click-to-move because that improves performance compared to, say, following the cursor at all times? Compare this with agar.io, where the player is always moving towards the cursor.

Well done on this game. I assume I'm playing on American servers but as an Australian this hasn't caused me many issues.

<comment><AUTHOR> It's not for performance reasons actually, in fact it is already sending every single mouse move to the server because there is a certain spell (Acolyte Beam) that tries to follow your cursor and needs this information.

I did some user testing with following the cursor at all times and people didn't seem to like it. I think the difference between this and agar.io is its quite common to want to be aiming and moving in two different directions, so the mouse click gives more control.

On this topic, one interesting thing which came up in testing was how important it was for the Acolyte to "move through the spells". Initially movement was a spell, and so if you cast another spell, it would stop movement. The game was very stuttered. When I separated out the code for movement from spellcasting, the Acolytes started moving fluidly and the game was much better :).

As for the servers - there are three servers - in Australia, US and EU - <USER2> you're playing local. I'm from New Zealand, and US lag was unbearable for the reaction time required for this game. Google Cloud Platform is awesome in that it automatically connects you to your closest server :).

</comment></comment><comment><USER14> Hmm... and now it's time to make bots that play the game better than I ever could.

<comment><AUTHOR> If you go to the AI page you can program your own bot there! It's built-in.

</comment></comment><comment><USER15> I really enjoyed this. Bookmarked! Would be great to get some sound effects, currently all the actions don't feel that heavy.

<comment><AUTHOR> Woohoo! Yeah sadly being a solo developer I could only do what I knew how to do, don't yet know how to do sound effects, but I think that would be worth looking into! Thanks for playing!

</comment></comment><comment><USER16> BSTRhino, would you consider open sourcing this so that I can contribute to the development?

<comment><USER16> Or can I talk to you about joining your project?

<comment><AUTHOR> Thanks for your offer... at this point I want to keep doing it myself, I think when I run out of time/energy I will probably open source it. If you want you can message me your contact details (you can message the Facebook page [http://fb.com/acolytefight](http://fb.com/acolytefight) maybe) and if I change my mind in the near future I will at least have your contact details.

</comment></comment></comment><comment><USER17> How does server architecture look like and how much it costs?

<comment><AUTHOR> I'm using Google Cloud Platform. There are three servers - Australia, EU and US. The Google Cloud load balancer automatically connects people to the closest one. I had to do some special things to make websockets work correctly - configured session affinity (with a cookie) and the HTTP timeout has to be set to a large number. It costs around $150 US a month, which means at some point I will probably stop running the game because that's a lot.

The entire game is simulated on the client. It is a deterministic simulation, so the same sequence of inputs will generate the same state. The server doesn't do any of the simulation at all, it just passes the action sequence to all the clients. Every 32 milliseconds the server wraps up all the messages received and sends them to all clients in the game as the next frame. I used the nanotimer library in NodeJS to get this 32 millisecond interval as accurate as possible. Because the server does none of the computation, it theoretically can support lots of clients. I don't know how many yet, but maybe a thousand? Even at its peak usage of 40 users yesterday it was still only taking about 1-2 milliseconds to do each frame.

<comment><USER17> $150 for 40 users is quite a lot, is it fixed rate or will it rise when DAU rises?

</comment></comment></comment><comment><USER18> This game is pretty much unplayable on Firefox on Linux due to how slow it is, even with an 8th gen i7 processor. Seems to run fine on Chrome, but having to switch is super obnoxious

<comment><USER19> This is how it goes.

Remember when Microsoft started to move faster then specs with IE? At first, all office applications required IE to work and nobody cared. Then games. Then it was a mess and netscape died. Then it got better again.

Now we have chrome, with google moving faster then the specs. I can't even join a hangouts in my office because google didn't bother to update the plugins (after they forced their own plugin into obsolesce by pushing the chrome extension format as a standard and lobbying firefox to adopt it). Now games. Wonder how long firefox will last this time.

<comment><USER20> > with google moving faster then the spec

What does that mean?

<comment><USER21> Specs take a _long_ time to arrive. There's a lot of toing and froing, discussions and revisions. Many take years, some take decades.

Netscape, Google, Microsoft and Apple have all been guilty of losing patience and ploughing ahead by adding features to their browsers that aren't fully standards-backed at one point or another, but it's usually the decisions of the market leader that have the biggest impact. Lots of people develop for Chrome and assume it'll work elsewhere as a result, or worse they don't care.

<comment><USER20> I'm a web game builder and I'm definitely guilty of that. However, I make the games for myself. If other people want to play, fine, but I have no personal reasons to support anything other than my own setup. I presume a lot of other indie game developers are the same. I don't make any money on the games and have neither time, resources nor interest in making it compatible for browsers I don't use.

<comment><AUTHOR> Yeah, this is pretty much it. I definitely have tried with a lot of browsers, I learnt about a lot of quirks of different browsers doing this project. I just gave up on Firefox because I ran out of ideas to try. It wasn't due to lack of trying.

Anyway, someone made a suggestion of what to try in another comment, and turns out it was really easy, so now it's fixed. Firefox just does software blurring which is super slow and so I just had to turn that off entirely for Firefox. So Firefox performance is now okay enough, although still not quite like Chrome.</comment></comment></comment></comment></comment></comment>


HArray – fastest associative array based on Trie - <AUTHOR> Hi Guyz, I have developed one of the fastest associative arrays, based on Trie structures. It's quite serious implementation, more than 8000 code lines on C++.
It's much faster than std::map and in many cases even faster than std::unordered_map. For example inserts of 10M random keys (16 bytes each) processed within 1.3 sec but std::map spent on the same test about 14 secs.
In contrast to hashtables it has more wide functionality:
- Prefix compression
- Ordered keys. Possibility create custom ordering
- Scan ranges of keys, sub ranges of keys
- Very fast serialization\desreialization on disc.
- Fair delete keys with smoothly releasing memory
Codebase with benchmarks available here
https://github.com/Bazist/HArray <comment><AUTHOR> Do you know some other implementations for comparing or any other ideas ?</comment>


2 Years Later: The First Instagram Photo - <AUTHOR> http://blog.instagram.com/post/27359237977/2-years-later-the-first-instagram-photo <comment><USER2> Why is this on HN? Are we reddit now or something like that? I don't know if it's only me or during the last year the amount of good technical articles on HN is decreasing month by month, whereas Techcrunch articles on startup investments, vim/sublime/whatever editor tutorials, hiring people, gadget reviews are getting upvoted to the heavens. Out of 30 articles on the frontpage 4 are technical and only 2 are really deep.

Sorry for the venting but I have the hope I'm not the only one missing old technical HN instead of what it's becoming now.

</comment><comment><USER3> i doubt that's really the first photo. I recently built <http://whisper.sh> \- it's an anonymous social network built around photos, like PostSecret (before they shut it down). We have hundreds and hundreds of "first photos". We erased the 'production' server dozens of times before apple accepted. It's the nature of testing a photo app. But i guess you have to just pick one and make it the 'first'.</comment>


Wikipedia seeks photos of 20M artifacts lost in Brazilian museum fire - <AUTHOR> https://www.cnet.com/news/wikipedia-seeks-photos-of-20-million-artifacts-lost-in-brazilian-museum-fire/ <comment><AUTHOR> Tweet from Wikipedia confirming: [https://twitter.com/Wikipedia/status/1037066123869483008](https://twitter.com/Wikipedia/status/1037066123869483008)

Somewhat related: Archive Team is currently running an ArchiveGLAM project (Archiving Galleries, Libraries, Archives, and Museums) preemptively.

</comment><comment><USER2> This might be a bit of a weird question, but

>a 5.5-ton meteorite found in 1784 [is] believed to have been lost

how exactly can a 5.5 ton meteorite be destroyed by a fire?</comment>


Google Forces Saving JPG as WebP? - <AUTHOR> Version 72.0.3626.96 on Mac.
Seems a little pushy to force users to use WebP, especially since Preview can't even open WebP format images.
Figured the HN community might find this interesting. <comment><USER2> Chrome 72.0.3626.96 on Mojave - I'm still seeing images default to saving in their native format. I tried PNG (Google's homepage image) and JPG (an image on YouTube).

I hope WebP is never forced. It seems like a waste of cycles to re-encode every downloaded image.

</comment><comment><USER3> The JPEG is most likely converted to WebP in-flight and so Chrome is actually receiving a WebP image. Perhaps it's being served by Cloudflare or another CDN that does image compression.</comment>


Indian government explores $10 laptop - <AUTHOR> http://timesofindia.indiatimes.com/India/Rs_500-laptop_display_on_Feb_3/articleshow/4049914.cms

<comment><USER2> There was an article these days about how companies are starting to wish for the other face of Moore's law: computers getting cheaper every year at the same performance. The article was about the next Windows, but I always thought it applies much better to laptops.

I'd say there are three levels of performance suitable for such mini-machines:

\- The equivalent of the last 486 or the first pentiums: can play mp3, browse the web (without the bells and whistles), display a pdf, run simple office applications, have ethernet and usb, may not have wireless. This is what a real $100 laptop should be like, and what readers could become (keyboard?)

\- Can show movies, run a contemporary OS and application suite (including last versions of Open/Microsoft Office) - pretty much everything an office computers does, without the games and other needy apps. This is already covered, as there are many cheap laptops just like this.

\- Sub $100 laptops. This is a very interesting field, because anything can be done. Text-only and monochrome displays, dedicated applications, the field is huge and the prices can be as low as any hand-held chinese game ($10 is not at all absurd). There are two big issues here: compatibility and net connectivity. I don't know what an USB or Ethernet chip goes for, but it it's $2 it's too much.

<comment> old-gregg You'll be surprised if you find an actual PC with 486. I have installed XP on a Pentium II machine with 256MB of RAM and it was barely usable even for web surfing. Without bells and whistles: scrolling simple text+picture pages in IE/FF was very slow.

Launching any non-trivial application also took terribly long. Not just the Office, but even Firefox felt more like Photoshop. I couldn't believe how bloated the software had become.

These $100 machines you're talking about can't run normal software, you'll need Microsoft to start selling Win98 or you'd need a stripped-down Linux with XFCE or something. The key to performance IMO is smaller binary sizes: those CPUs had tiny caches and pathetic memory throughput. Pentiums ran on 33-66Mz FSB, compare it to 1066Mz of modern machines.

<comment><USER3> Isn't it amazing how software bloats and slows down so that it only fits the latest generation of hardware?

We were doing web browsing of the simple text+pictures kind back in the early 90s. Word processing and spreadsheeting has been done since the late 70s, early 80s (I think).

<comment><USER4> Totally agree. I wonder, with a market of a billion users, does a set of software apps that are not back-compatible with our bloated legacy become plausible?

You could use old Windows or Unix apps. Or DOS apps. Or even old Apple ][ apps. Or, you could write an entirely new set of apps - a fresh start, in a fresh market, on fresh hardware. Doesn't that have a certain appeal?

Freed from back-compatibility with bloated software, does a $10 laptop become plausible?

Maybe something like the hp200lx: DOS, 24x80 LCD screen with incredible battery life (2 AA batteries), came with lotus 123 spreadsheet etc. Or, even lower specs than that.

</comment></comment></comment></comment><comment><USER5> They're launching a laptop for $10? With 2GB of RAM? You can't even buy 2GB of RAM for that price. I really hope this is real, but when you put together the costs of a display, RAM, some sort of persistent storage, heck even the keyboard is going to run more than $1.

      Keyboard $1
      Trackpad $1
      RAM $1
      Small amount of flash memory $1
      Screen $1
      Labor $1
      Shipping $1
      Processor $1
      Motherboard $1
      Ports $1

And none of that is going to be $1.

<comment><USER6> > Screen $1

We may have to go back to blinkenlights for displays.

<comment><USER7> <http://en.wikipedia.org/wiki/Lite-Brite>

</comment></comment></comment><comment><USER8> Government subsidies can not be ruled out - that would change the equation completely.

Additionally, this device will probably not be available for general consumption - it sounds like they plan to use it exclusively for education. If not, reselling 2 GB RAM sticks imported from India could become a lucrative business.

</comment><comment><USER9> The $10 looks like a transcription error. It should probably be $100 and the current version costs $200 which is consistent with what an OLPC XO laptop costs:

[http://www.crunchgear.com/2009/01/30/10-laptop-coming- from-i...](http://www.crunchgear.com/2009/01/30/10-laptop-coming-from-india- on-february-3rd-or-so-they-say/)

</comment><comment><USER10> I'll believe it when I see it.

<comment><AUTHOR> They are apparently launching it on Feb 3rd. We'll know soon.

</comment></comment><comment><USER11> I'd love to know how they calculated the $200 "hidden cost" of the OLPC laptops. I'd also wonder what that figure is for other platforms, and how they plan to avoid it for their $10 implementation.

</comment><comment><USER12> You can find cheap pocket translators or pocket calendars on walmart these days.

Not far from solar-powered pocket netbooks, like old calculators, I say.</comment>


RobustIRC – IRC without netsplits - <AUTHOR> http://robustirc.net/

<comment><AUTHOR> Author here. For the impatient: this is an IRC network implemented as a distributed system implemented in Go on top of [https://raftconsensus.github.io/](https://raftconsensus.github.io/)

If you have any questions/comments, I'm happy to answer them.</comment>


EU wants Google to stop anti-competitive Android practices, fine expected - <AUTHOR> http://uk.reuters.com/article/us-eu-alphabet-antitrust-exclusive-idUKKCN1213DJ <comment><USER2> What about apple? Yes, they don't have the same market share but their product is completely closed and until recently all other browsers where crippled compared to the build in one.

All apps must come from the Apple App Store. No 3rd party allowed.

<comment><USER3> Apple isn't forcing OEMs to include their bundled software.

This reads very much like the EU vs. MS for the exact same reasons.

<comment><USER4> But isn't the deal that you get it for free if you include the software? i.e. there's an exchange of value there?

I suspect the problem is that there's no "I'll pay you, but not include the software" option for Android, but couldn't it be applied to any FLOSS as in "there's no option to pay you, but not contribute back" in the case of the GPL or even "there's not an option to not buy a Mac with MacOS", or something like that?

EDIT: If the problem is using Android's dominant position to bundle Google Search, then I get the similarities to the MS lawsuit, the difference being that people actually want to use it, which is why I think Google should be confident about including a "Bing Search" or "Google Search" option, as 99.99% of people would go with Google, since in Google's case, Search is actually a product people want to use when compared to the alternatives, whereas Explorer wasn't in the MS case.

But couldn't this then also be extended to Chrome and Search on the desktop? i.e. Google used its dominant position in search to push Chrome, (try visiting google.com with Safari or Firefox, notice the top-right Chrome banner?) and once they got to a dominant position with Chrome, they used it to further the dominance of Search, by it being default in Chrome etc.

<comment><USER5> I don't think the Bing Search option would be sufficient to ward off anti- trust claims, unless you made Bing search the default or did something crazy like make phones flip a coin and then decide which search to default to.

<comment><USER6> Microsoft never made Google the default search on Windows. Just offered the option.

<comment><USER7> In current Windows 10 Bing is the only provider for Cortana, which is enabled by default, both for the conversational interface as well as all shell search features.

</comment></comment></comment></comment></comment></comment><comment><USER8> That's a good news. I wish there was an Android phone with, let's say, a Firefox set as a default browser, and a Google Play Store available. But, although I'm usually for EU in cases like this, I'm more and more disgruntled about how ineffective all that after-the-fact fines and penalties are.

Maybe some more strict rules would be better? Like: any OS on sell in UE can not prohibit installing third party software and tinkering with the hardware, and the user should be asked about pre-installed software on the first launch. Something like that. We got browser choice screen in Windows for a while, and it was good. But it didn't affect iOS, nor Windows 10, nor Android.

<comment><USER9> You can already set Firefox to be the default browser and disable Chrome on any Android device.

<comment><USER10> He's saying preinstalled as the default browser. Not installed and set as default after the fact by the user. Let manufacturers freely decide what software they want to bundle.

<comment><USER11> You could make an Android phone that had things like that, and companies have done so (like Amazon). The downside is then you wouldn't be able to license the Google services on top.

Android is both open source and expensive to develop. It seems like a reasonable compromise to me, especially as Google keeps the fragmentation problem somewhat under control this way.

<comment><USER12> You call the current situation with android fragmentation "under control"?

The single highest installed version according to Google is 3 major versions behind and 3 years old.

<comment><USER11> I said "somewhat under control". You aren't qualified to complain about Android fragmentation unless you've tried to write mobile apps before Android/iPhone came along. I have. Trust me - no matter how bad you think Android is, it's much better than the previous state. And a big part of that is the ecosystem of sticks and carrots Google set up around the open code base.

<comment><USER13> Most folk didn't have to deal with targeting MIDP profiles, J2ME and the incompatible vendor extensions...

Give me a fragmented Android any day, 1 build will run across all OEMs 99.9% of the time, rather than 15%

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Quite a few comments, none so far about the matter that's leading to the fine: Paying manufacturers to preinstall stuff.

<comment><USER15> I'm all for antitrust regulators being more active to spur competition, but this is an odd one. Microsoft certainly pays OEMs to configure Bing, Google & Yahoo have paid Mozilla to use their search engine. Yahoo pays for crapware to install their toolbar, often paying malware authors, and yet it's Android that gets them in a frenzy.

Google clearly has platform power here, but targeting the payments is such an odd one to me. I can't believe phone manufacturers will be happy about this either since competing search engines probably won't pay them as much in light of this.

<comment><USER16> Google pays more to Apple to have their search as default than Yahoo pays Mozilla and Oracle.

Btw, can you point towards Yahoo paying for crapware to be installed?

<comment><USER15> Sorry, no references off the top of my head, just seen it first hand when investigating pay per install networks in desktop crapware. Saw Ask & Yahoo toolbars getting installed by them, pretty sure that indicated a kickback, but I didn't care to dig.

</comment></comment></comment></comment><comment><USER17> I don't get this. Sure Android has a greater market share, but people use it _because_ Google services come with it (and phones tend to be less expensive). They aren't (at least to my knowledge) doing anything underhanded to keep me from installing alternatives. I can completely replace all of the default apps. There is another major platform that doesn't allow for that. Why aren't they at least being given a warning?

Edit: Disclosure, I use both major platforms.

<comment><USER18> Google is paying manufacturers to use Google search as the default search engine and to exclude other search engines. The EU sees Google's dominant position in mobile OSs being used to bundle their search engine.

It's hard to deny that there's a stinking parallel to Microsoft paying PC manufacturers to bundle IE and exclude other browsers, which resulted in the famous anti-trust suit.

<comment><USER19> A good parallel is the news that came out just yesterday about Google Home: Google will forbid anyone who wants to offer Google Cast/Home integrated devices from offering other digital assistants, like Alexa.

[http://variety.com/2016/digital/news/google-home-amazon- echo...](http://variety.com/2016/digital/news/google-home-amazon-echo- chromecast-1201874125/)

</comment></comment></comment><comment><USER20> I tried Cyanogenmod for a while and wasn't pleased with the situation of Android in general, notably the arrangements with Google Play. I used Fdroid for a bit (which I appreciated), but soon ended up abandoning Android altogether, for a bundle of reasons.

Here's one of the most relevant perspectives on Google's Android _I 've_ read, titled _Google 's Iron Grip on Android_: [http://arstechnica.com/gadgets/2013/10/googles-iron-grip- on-...](http://arstechnica.com/gadgets/2013/10/googles-iron-grip-on-android- controlling-open-source-by-any-means-necessary/)

<comment><USER21> So you just don't use a smartphone anymore? Or do you use an iPhone?

<comment><USER20> I don't use a smartphone presently, but I also don't need one. I consider both options equally undesirable and will hold out until a worthy competitor arrives, or necessity imposes itself. I'm a bit curmudgeonly regarding technology that sits in my pocket, following me everywhere, handling my data, and prefer it be subordinate to me - not autonomous, closed and teeming with third-party interests.

</comment></comment></comment><comment><USER22> First, it would be nice if the currently closed parts of a the Google-logo Android most OEMs ship were more open. Google's IoT OS is developed in the open, while AOSP has periodic updates. Parts of Google's suite of services and apps that are currently for Google-logo OEMs could also be opened without weakening Google's position with OEMs.

Secondly, it would be nice if there were more smartphone OS choices, like Jolla, that could prosper alongside the two main choices.

But Google doesn't deserve to get fined for anti-competitive practices. Amazon's mobile OS drafts off of Google's work on AOSP, and nobody is whining about that. Yandex announced they would do something similar. Chinese OEMs have long had their own app stores on Android. In many ways Android is the basis for open competition in mobile OSs.

If you want something other than the Google ecosystem, you can have it on an Android OS with all the latest OS technologies. But you have to have your own credible ecosystem and customer base for it. I'm not sure what the EU wants that hasn't already been demonstrated can be done in the US, Russia, and China.

<comment><USER19> Yandex is behind the Russian case against Google , because OEMs told Yandex that Google forbid them from working with Yandex. In Russia, Google's already been ordered to make the changes the EU is demanding here, though there's no signs Google has complied yet. China only has competition because Google doesn't operate there. Amazon's Fire Phone shows how successful one can compete with an international monopoly. None of these are good examples to defend Google, and in fact, demonstrate why it's so crucial Google be taken down a peg.

Honestly, they don't deserve a fine, because they can afford it, and it's no big deal. Google needs to be forcibly broken up into smaller parts, and banned from colluding with each other. It's time to do to El Goog what the US did to Ma Bell.

<comment><USER22> Regarding "because OEMs told Yandex that Google forbid them from working with Yandex" that appears to be true. Google forbids OEMs from selling both Google- logo and other-ecosystem devices. Google's excuse is "anti-fragmentation." They do this to make OEMs accept Google's decisions about Android, and either you are in or you are out.

But that's not a high barrier. Amazon's tablets are made by some CM/ODM who most likely manufactures Android devices for a number of OEMs. Yandex could have private label phones much the same way. Or they could get phones from China OEMs that don't care about making Google-logo devices.

The Amazon Fire phone was as much a turkey as Echo is a hit. It wasn't Google's fault.

As for China, Google does operate there now, and Lenovo sells Google-logo Androids in China. But the non-Google ecosystems continue.

<comment><USER19> The Fire Phone was definitely hugely impacted by not having access to the apps which only the Play Store has (most of them), and the fact that, specifically, Google's own apps are only available through them. Who's going to buy a phone without YouTube? Similarly, if you look at reviews of Windows Phone, most are very positive, with one exception: Without Google providing good support for the platform, people don't want to use it. Google's monopolies span far and wide, and it's difficult for anyone in the tech industry Google refuses to work with.

As far as the Echo... Google hasn't even released Google Home yet, and they're already telling manufacturers they're going to have to choose between supporting Alexa and supporting Google Home.

If China has Google now, it's still not a huge problem: Lenovo is only a small part of the market share there, and most importantly: All of the apps popular in China are already available in other stores. Maybe we should ban the Play Store for a few years in the US until the same situation happens here?

<comment><USER22> I bought a Fire tablet without YouTube. Amazon has their own media ecosystem. Almost all the mass-market apps I use are available on the Amazon app store. Even Netflix.

I would, however, agree that it is petty, pointless, and possibly counterproductive for Google not to put apps that use the Google ecosystem on Amazon's app store.

As far as what the Fire phone was missing? I'd say maps and navigation. They should have gotten HERE on board at launch.

</comment></comment></comment></comment></comment><comment><USER23> All these arbitrary fines handed out without trials looks a lot like taxation by fiat to this cynic.

<comment><USER24> A fine is given and then the company can respond by going to court.

It works like traffic law, you receive a fine and if you disagree then you can go to court.

</comment></comment><comment><USER25> Personally, I think that users would just install Google themselves if it isn't pre-installed.

<comment><USER26> Would they install all the of the Gapps if most of the apps would:

\- be available on other app stores,

\- apps wouldn't require Google Play Services?

<comment><USER27> I was just trying to get rid of play music and play newsstand yesterday. Most of the stuff they include is wasted space. It's particularly frustrating since I'm always running out of internal storage and most apps are difficult to put on the SD card.

</comment></comment></comment><comment><USER28> Has the EU even addressed the issue where Google bans all ad-blocking apps from its store? Seems like a pretty open and shut "we're doing this because we have near-monopoly on the smartphone market and ad-blocking hurts our business" anti-trust case.

<comment><USER29> Do they?

[https://play.google.com/store/apps/details?id=org.adblockplu...](https://play.google.com/store/apps/details?id=org.adblockplus.browser&hl=en)

I don't use Android (nor any Google product besides search) but I'm pretty sure you can get ad blockers on Android.

<comment><USER30> They block applications that interfere with the operation of other applications.

This would include an ad blocker that blocks ads in, say, a free game, or the built in Chrome browser.

The common workaround was to run connections through a VPN and your ad blocking happens there. I'm not sure if they started cracking down on that as well.

Having apps that modify other apps can certainly be desired behavior, but it's clear why there would be legitimate concerns about customer security in allowing apps that can do so.

<comment><USER31> So... why is it possible?

<comment><USER32> There are three approaches:

1\. Create a browser with ad blocking builtin or possible with addons (like Firefox).

2\. Create a local proxy that blocks ads, and make the user configure it as the system proxy.

3\. Require root privileges and do whatever you want (2, or maybe change /etc/hosts, like AdAway does). Yes, there are tons of apps in the Play Store that only work with root. Google never cared much about them.

</comment></comment></comment></comment></comment><comment><USER33> I completely disagree with this. Google is too lax about what it allows and doesn't allow on Android. It could easily restrict 3rd party companies like AT&T and EE etc from pre-loading their bloatware as system apps, but it doesn't. Google's apps are, in my opinion, excellent, and it's their operating system. They should be able to put whatever they want on it, just like apple can put whatever they want on iPhones and Microsoft can put whatever they want on theirs.

</comment><comment><USER34> There's a dark or a bright side to this.

On the one hand you wonder whether Google will get in a huff and close AOSP (The Android Open Source Project) just to work with a few commercial vendors. They can leave the complainants to work together on an fork where they can do what they wish.

Or, which I hope they would do by now, actually run AOSP like a true open source project.

In the latter case I think the strategy that they've used so far "was" the right one (open source but not open for debate), however Android is now mature enough that I think developing a true open source community would benefit it.

</comment><comment><USER35> There are plenty of android devices that are sold in emerging markets that do not come with the Play store.

Africa, China and India are doing it.

Nothing prevents vendors from selling devices without the Play store, and some devices like Samsung ones come with their own App Store in addition to Google Play.

Nokia also had a close store.

Also you can side load apps on android devices without rooting them.

<comment><USER19> So, take your phone without the Play Store, and get the apps that people in the US or the EU want. You'll find almost none of the apps users want are available without Google Play. And most of them won't even run without Play Services even if you sideload them.

Basically, what Google did gradually over the last few years, is fork Android. The APIs developers are encouraged to build their apps on are all proprietary, to ensure that their apps are also tied to the Google ecosystem.

</comment></comment><comment><USER36> So much for the free market. All the EU socialists must have a hard on right now. In the end fine will be paid by the consumers anyway, and will have to click more to install Google apps and additionally pay for bandwidth. But hey, those lunatics will be happy they solved another "problem".

<comment><USER37> > _So much for the free market._

You seem confused. The free market is that where monopolies don't bully to limit choice (and thus freedom).

<comment><USER38> Who is Google bullying and how?

>Google to stop paying financial incentives to smartphone makers to pre- install Google Search

Is Firefox bullying other search engines by having a default search engine on their browser?

The only thing limiting choice and freedom is the EU decision.

<comment><USER37> > _Is Firefox bullying other search engines by having a default search engine > on their browser?_

Firefox is not a monopoly, so that's a moot point.

<comment><USER36> Are you saying you cannot install software on Android other than from Google?

<comment><USER37> No, I'm saying Android controls the vast majority of the smartphone market.

</comment></comment></comment></comment></comment></comment><comment><USER39> Leave google alone and break thr walls of apple's garden. They are worse.</comment>


Using an /e/ phone as a desktop or laptop - <AUTHOR> https://www.nexedi.com/NXD-Document.Blog.E.Phone.As.Desktop <comment><USER2> Context: /e/ is simply a fork of LineageOS, so these features should work on Lineage as well. Support for USB-connected screens, docking stations etc. is going to be highly hardware dependent, but everything else should work out of the box.

AOSP derivatives are a suboptimal approach to convergence though (i.e. running the same OS on desktop/laptop and a mobile device). Ultimately, a native convergent OS such as PostmarketOS (running GNOME Phosh or KDE-Plasma Mobile) or UBPorts should work a lot more smoothly. AOSP apps should be supported via a container-based approach, as with Anbox.

</comment><comment><USER3> This is exactly what I've wanted phones to become for years. It honestly amazes / pisses me off that I can't buy something like this off the shelf. Maybe I'll bite the bullet and piss away a few hours on rom flashing to get /e/ on my phone.

<comment><USER4> That's just wishful thinking. No manufacturers would release any devices with this OS for the following reasons:

Phones are commodity devices where volumes have to be high and costs low.

The big manufacturers that have the resources to make and sell something like this at scale(i.e. Samsung) want you tied in their ecosystem instead.

Maybe some niche manufacturer could make a device with this via crowdfunding but the price would be too high for such a low volume as the niche of techies this would be aimed at are savvy enough to flash it themselves on an older phone for free.

<comment><USER5> I think you read this too literally. I want a device which acts like a phone in my pocket and acts like a desktop when plugged into a screen/mouse/keyboard. The perfect unison of essentials like ride-sharing with the ability to do serious work. It doesn't have to be /e/.

<comment><USER6> Isn't that basically Samsung Dex

<comment><USER7> Yes, Dex can more or less do this. I didn't realize my Samsung phone could do it for six months after I bought it, so maybe it's not well advertised. It does work, but I haven't tried to get actual work done with it.

<comment><USER8> I have, but it doesn't work out or i haven't found adequate tools for my programmer's task. Most of the apps can't be full screen, fortunately there is dexmax app to fix this. Overall experience for some serious work is not good, but for surfing it's fine. I succesfully used rdp to connect to my desktop computer :)

</comment></comment></comment></comment></comment></comment><comment><USER9> Why has cheap KVM-consoles for phones never taken off? It seems like a great way to get a portable/inexpensive laptop experience. Judging by the relative success of Chromebooks, it would appear to be a ripe segment. And the performance of any mid to high tier phone is more than enough for the casual laptop user.

As mentioned in the article: [https://www.kickstarter.com/projects/andromium/the- superbook...](https://www.kickstarter.com/projects/andromium/the-superbook- turn-your-smartphone-into-a-laptop-f)

<comment><USER10> I don't want a kvm switch. I don't want to rely on some remote server to do actual work

<comment><USER9> Well, in this case the remote server would be your phone. The switching part would be plugging it in.

<comment><USER10> oh like that. Yeah, for my phone I think the only things I'd want is actually just vscode and a linuxy environment.

I was playing around with [https://ish.app/](https://ish.app/) on ios.. It supports airplay. But I couldnt' get it to compile some things I'd want, and it was still very slow.

</comment></comment></comment></comment><comment><USER11> > Until now, Nexedi has been maintaining a derivative of ChromiumOS with some > extra features: NayuOS. However, the gap between ChromiumOS and its > proprietary counterpart ChromeOS has increased so much that we see no > possibility to maintain a usable NayuOS in the long terme.

In what ways has the gap between ChromiumOS and ChromeOS increased? Is that true of Chromium and Chrome as well?

> Nexedi has thus decided to support the /e/ foundation and its sister > corporation, with the hope that /e/ would some day become a usable OS for > desktop or laptop.

Good for them, I think/hope!

<comment><USER12> What you do not get in ChromiumOS (last time I checked):

\- support for flash movies

\- support of certain video codecs

\- support of sound hardware of many recent Chromebook models

\- support of CJK input (at least in Guest Mode)

\- support of Android apps

\- support of Linux virtual machine subsystem

\- support of certain Google APIs (but that is OK for me)

Lack of stable support of CJK input in guest mode (and the difficulty to find anyone capable of solving this problem or supporting us) was the biggest issue for me.

Some years ago, the difference was:

\- support for flash movies

\- support of certain video codecs

\- support of certain Google APIs (but that is OK for me)

which was fine to me.

Note: I wrote the article on /e/ for Desktop

<comment><USER13> Flash is long dead and gone. Chrome OS probably also doesnt support floppy disk's.

</comment></comment></comment><comment><USER14> Microsoft tried with Continuum [https://www.microsoft.com/en- ca/windows/continuum](https://www.microsoft.com/en-ca/windows/continuum) but Windows Phones didn't take off

<comment><USER15> They were slowly taking off in Europe, and were already around 10% when they decided to kill them.

<comment><USER16> Yeah that's what I don't get as well, they killed the product as soon as it started to take off.

</comment></comment></comment><comment><USER17> Canonical tried something similar with Ubuntu Touch, which was, sadly, killed off due to low market interest. With ever more capable phone hardware I'm quite surprised we aren't seeing more progress in OS convergence.

</comment><comment><USER18> I find it difficult to evaluate an Android for my phone. Currently running AOSP (actually phh-treble) rather than any fork that adds any significant features.

In particular it's hard to tell if any particular fork is just a one man hobby project, a fork of a fork, or has any significant work behind it.

Of course the big one is LineageOS, but they seem to make specific phone images, mostly for high-end phones, rather than generic system images for my low-end phone.

The list of generic system images is extremely long and not all that helpful: [https://github.com/phhusson/treble_experimentations/wiki/Gen...](https://github.com/phhusson/treble_experimentations/wiki/Generic- System-Image-%28GSI%29-list)

I ended up chosing phh-treble because it doesn't add any BS, promises quick updates, and serves as a base for many other roms, lending it some reliability. It's pretty much AOSP with hardware fixes.

That said, it doesn't do some pretty basic things like automatic brightness and night mode, or a PIN timeout. So maybe that's eventually drive me to try another ROM...

</comment><comment><USER19> Of related interest: [http://nexdock.com/](http://nexdock.com/)

Connect your USB-C phones which support Desktop Mode, and the apps in them can be used in the laptop shell.

They depend upon phones that short this via Android Q. They are tracking other projects such as OXI, MaruOS, and Librem to ensure compatibility.

</comment><comment><USER20> I think it would be interesting to get this running on DLT One ([https://hackaday.io/project/164845-dlt-one-a-damn-linux- tabl...](https://hackaday.io/project/164845-dlt-one-a-damn-linux-tablet))

Does /e/ _require_ a phone? Or would it work with a tablet as well?

</comment><comment><USER21> > /e/ has modified the source code of various parts of AOSP and Chromium web > browser to stop informing Google (and the NSA as a consequence of CLOUD Act) > of user activity.

The article is incorrect also about the browser: it is simply packing a re- branded Bromite browser.

<comment><USER21> Edit: the article has been kindly edited, thanks to the author

</comment></comment><comment><USER22> I'd love to see a tablet that can be connected to a monitor to go pc mode. On the tablet, I could use a tablet pen to control the cursor/textinput on the monitor.

<comment><USER7> Whatever newest Samsung tablet is probably supports this through their Dex feature.

</comment></comment><comment><USER23> I wonder if VirtualBox would run on this.

I see that some phones have 6GB RAM, and that should be enough for at least two or three VMs. And many have lots of CPu cores.

But maybe I'm missing something.

<comment><USER24> I wonder if they are thermally capable of sustaining a high CPU load. Phones strike me as fairly bursty in terms of compute usage; I'm curious if running them hot for a long period of time would damage the phone.

<comment><USER25> As VR headsets/adapters have proven, yes, most phones will overheat with continuous usage.

<comment><USER23> They should have tiny fans in them. Or maybe just heat pipes with cooling fins.

Back in the day before SSDs, I used to cool external HDDs with axial fans during TB-scale operations.

</comment></comment></comment></comment><comment><USER26> Isn't Nexedi the guys who make a really nice ERP on top of the Zope platform?

<comment><USER12> Yes.

[https://www.nexedi.com/NXD- Presentation.Status.Roadmap?porta...](https://www.nexedi.com/NXD- Presentation.Status.Roadmap?portal_skin=Slide#/)

Our story with /e/ is that we decided that it would make more sense to invest some cash in /e/ (we did it) than try to maintain NayuOS now that most ChromeOS users expect to run Android apps (and this part is not in ChromiumOS AFAIK).

Also, we observed a growing need for some kind of "desktop OS" for industrial applications (robotics, industrial automation) that does not depend on Google APIs (factories are often in China or do not have Internet access).

/e/ thus made a lot of sense.

Note: I the author of the post.

<comment><USER26> It's funny. At the company I work for we have a system of record that, while built on completely different tech, reminds me of Zope a lot. I guess the problems both platforms try to solve are so similar we see convergent evolution.

</comment></comment></comment><comment><USER27> Any way to put E on an S7 and then relock / de-root it?

<comment><USER28> I'm pretty sure you'll blow the Knox eFuse which can't be reset.

<comment><USER23> Which is a good reason not to buy junk like that.

<comment><USER2> Many phones are somewhat harder to unlock than Samsung models. The Knox efuse is an annoyance, but most of that is security theater anyway. It doesn't gate many useful features that a Lineage user would care about.

<comment><USER23> OK, then.

It still seems offensive that there's no way to reset it.

<comment><USER2> It's a _fuse_. It's write-once. That's just how the device works. They probably did it like that so that attempts to tamper with the device without the owner's knowledge would always be detectable after the fact.

<comment><USER23> From what I've read, it's actually not physically a _fuse_.

But in any case, it ought to be fixable by an authorized service technician.

Indeed, it's arguably a right to repair issue.</comment></comment></comment></comment></comment></comment></comment>


This is the workstation a developer needs - <AUTHOR> http://www.reinvented-the-workstation.com/CX1-iWS-developers/ <comment><USER2> DELL sells them starting at $38,999 [http://accessories.us.dell.com/sna/products/Processors/produ...](http://accessories.us.dell.com/sna/products/Processors/productdetail.aspx?sku=A3336379)</comment>


$170 Nintendo 3DS Is Still Too Expensive - <AUTHOR> http://www.wired.com/gamelife/2011/07/nintendo-3ds-op-ed/ <comment><USER2> The 3DS is an interesting venture. The problem is that it introduced fragmentation and uncertainty into an established and active platform without really achieving the perceived benefits of the migration.

Users almost never flock to your new version en masse. Assume they won't. If they do, awesome, but base your projections on the assumption that they won't.</comment>


John Carmack: writing Rust code feels wholesome - <AUTHOR> https://twitter.com/ID_AA_Carmack/status/1094419108781789184 <comment><USER2> Man reading Twitter is so awful. It feels like sitting in one of those 2 hour meetings where everyone is allowed to give their 30 seconds and all that's left is your throbbing headache.

</comment><comment><USER3> I looked seriously at rust about 2 years ago. I seem to have tried the language at the wrong time .. they were transitioning between versions and this made learning it hard. I grew up with C so am very comfy with pointers. Even reference counting feels natural to me. That said, the borrowing/ownership semantics of rust (at the time I looked at it) felt needlessly over complicated. Has this got better? Is there a K&R equivalent that an experienced programmer can get pick up to get productive with the language soon?

<comment><USER4> >the borrowing/ownership semantics of rust (at the time I looked at it) felt needlessly over complicated.

Taking a wild guess here, but it sounds like you maybe referring to issues addressed by Non-Lexical Lifetimes (NLL)?

Reference: [https://github.com/rust- lang/rfcs/blob/master/text/2094-nll....](https://github.com/rust- lang/rfcs/blob/master/text/2094-nll.md)

NLL are a part of Rust 2018 Edition.

Three complementary books are the best resources:

\- The Official book: [https://doc.rust-lang.org/book/](https://doc.rust- lang.org/book/)

\- The Rust By Example book : [https://doc.rust-lang.org/rust-by- example/](https://doc.rust-lang.org/rust-by-example/)

\- Programming Rust (O'Reilly) : [https://www.amazon.com/Programming-Rust- Fast-Systems-Develop...](https://www.amazon.com/Programming-Rust-Fast-Systems- Development/dp/1491927283)

<comment><USER5> NLL only modes aren't available on stable Rust atm. What edition 2018 has right now is migrate mode NLL. In order to fully enjoy NLL, you'll have to use Rust nightly and do _#![feature(nll)]_ or _-Z borrowck=mir -Z two-phase- borrows_ , both flags being independent of the edition you're using.

Edit: removed outdated behaviour of migration mode.

<comment><USER6> > What edition 2018 has right now is migrate mode NLL which emits an error if > either NLL borrowck or AST borrowck think there is an issue with your code.

If that were true, then this example would fail to compile, since it fails with the old AST borrowck: [https://play.rust- lang.org/?version=stable&mode=debug&editio...](https://play.rust- lang.org/?version=stable&mode=debug&edition=2018&gist=66e745314774b90573159d2f2c2c4850)

See: [https://rust-lang-nursery.github.io/edition- guide/rust-2018/...](https://rust-lang-nursery.github.io/edition- guide/rust-2018/ownership-and-lifetimes/non-lexical-lifetimes.html)

<comment><USER5> Oh right, seems it got a bit more tolerant. The mode's still called migration mode though, full NLL is to be unleashed later on: [https://github.com/rust- lang/rust/issues/57895](https://github.com/rust-lang/rust/issues/57895)

</comment></comment></comment></comment></comment><comment><USER7> Many comments in twitter mentions rust still not being ready for server code ( which i start to feel strange since concurrency is the only major issue on the server side, and supposed to be rust strength).

Anyone can confirm ?

<comment><USER8> This is because of the removal of the fat runtime and green threads about 5 years ago. Since there was no blessed way to do high concurrency in the language any more, some code started using normal threads, some code (tokio) started using normal callbacks. Callbacks in rust are tricky because of the type system. Around a year ago, async/await became possible due to the development of the Pin idea. async with the await! macro is usable now, but the rust community has been bikeshedding over built-in await syntax and last time I looked that discussion was still raging.

So you can write scalable servers using normal threads, normal callbacks, and async with the await! macro, but not the final async/await syntax because the community hasn't even finished deciding what it is. Porting code between these approaches is also not particularily easy. I have seen example code for rust networking libraries that uses all of the different approaches, but mixing the different approaches is also difficult. So that's probably why people say it's not ready even though you can write code right now that will work just fine. The "final" way of writing it isn't ready yet, and if you write one of the current forms, porting to the final form will be a pain.

<comment><USER9> Porting from futures to async shouldn't be too hard based on my experience doing it in JS.

<comment><USER8> Sure, but js doesn't have rust's type system. It will probably be straightforward once everything is settled down, but right now Future 0.1 (tokio) and Future 0.3 (async/await) aren't comptatible and you'll find examples that use one or the other, or plain threads, or plain callbacks. It's possible to get up and running quickly with the examples from various libraries, but when you try to mix them, if they use different styles, it becomes very challenging. Once async/await is finalized and everything moves to it this won't be a problem, but that's probably going to take at least a year or possibly years.

<comment><USER10> I did a test and converted one of my libraries to async/await and it was not that hard. There are easy converters between the future versions for the transition period.

[https://github.com/pimeys/a2/pull/30/files](https://github.com/pimeys/a2/pull/30/files)

</comment></comment></comment></comment></comment><comment><USER11> When I explored rust I found the exact same feeling too, but couldn't find that word.

My only issue is how surprisingly weak Rust support is in my favourite editor. Rust seems to feel more popular than it is. Or maybe more people write Rust in a "no frills notepad" kind of way.

<comment><USER12> As an Emacs nerd I did have to find and download a Rust mode. I imagine in the future Rust will get more support in editors.

I've also just started writing Rust in the domain in which I write code, low level networking. I think I agree with Carmack in that it feels good. I can get hungup on syntax when learning a new language and I don't have that problem so much in Rust. I've been writing code in many different languages for close to 30 years and learning Rust feels mostly right. It feels like when I learned Python or LISP and I could guess at syntax and just get it right. As opposed to writing /bin/sh for over twenty years and still needing to constantly look up syntax :(

It doesn't feel like some languages I've learned in the past where everytime I investigate something I face-palm. It seems like the more I investigate it the right choices were made. Even when I'm frustrated with it because the compiler won't let me do something simple, I understand that maybe the bad habit I learned in C should end. Rust forces you to deal with things upfront that may become problems later. It's sometimes annoying when you want to just get shit done, but it's the 'right thing' to do.

<comment><USER11> It's so nice hearing this from someone with as much experience as you. I have far less but one feeling I had lately when switching to typescript was, "instead of turning off this warning, maybe they're right. Maybe this is a bad habit."

It forced me to think harder about my code's structure. I think that's what I like about Rust too. Not being able to do anything means I have to be thoughtful.

Which also reminds me of how to be creative with games or writing or music: artificially limit yourself and you're forced to be more thoughtful.

</comment></comment></comment><comment><USER13> Also posted in the twitter thread, a game dev wish-list for Rust

[https://users.rust-lang.org/t/my-gamedever-wishlist-for- rust...](https://users.rust-lang.org/t/my-gamedever-wishlist-for-rust/2859)

</comment><comment><USER14> Does anyone know, is [https://github.com/rust- lang/rfcs/blob/master/text/0066-bett...](https://github.com/rust- lang/rfcs/blob/master/text/0066-better-temporary-lifetimes.md) ever going to be resolved? I really do not like the idea of having to create a new variable for something so simple as this.

<comment><USER15> Seems to be unanimously agreed to be a good idea, but is a bit tricky to actually implement[1]. Hopefully some day.

[1] [https://github.com/rust-lang/rust/issues/15023](https://github.com/rust- lang/rust/issues/15023)

</comment></comment><comment><USER16> JC: hey this language is nice

Twitter: yes but have you tried my favorite language?!

</comment><comment><USER17> I've been playing with Tokio and Actix for a few days. That's the same feeling I get.

</comment><comment><USER18> I decided to learn Go instead of Rust over the last 6 months (very limited time so couldn't learn both well).

Rust has gotten so much on HN lately that I think it may be time for me to make the switch.

<comment><USER19> I started with Go and am now learning Rust. I liked Go, but it felt incomplete (currently there's a discussion on generics) and I'm tired of Java never settling down and now trying to be cool. Also, method declarations are weird (method over variable or pointer).

Rust seems complete. The ownership paradigm is a bit difficult at first, but the compiler is good at pointing out exactly what the issue is.

<comment><USER20> Interesting remark of Java not settling down with Rust being complete, while some Rust libraries depend on nightly and async/await is still not fully baked.

Languages are products, either they change with times or they die.

</comment></comment></comment><comment><USER21> C++ continues to lose mind-share. When will the community acknowledge that their tooling is lacking?

<comment><USER22> A tool is a tool. It's immaterial if a particular tool like C++ and its ecosystem is no longer the best available tool for some applications. Workmen pick the tool that best suits their tasks, and if a better tool appears it makes no sense to assume that the old tool requires more attention.

<comment><USER23> C++ has many users that love the language but are in denial that other languages have advanced beyond it (not in all areas, of course, but enough areas that matter).

<comment><USER24> Do you use C++? I do, and I don't love the language. What I like about C++ is that it's a high level low level language. Anything that isn't is not a competitor in C++'s core application areas. D and OCaml come kinda close but they have (in practice) mandatory garbage collection. The only real alternatives are Ada (which somehow never achieved much mindshare) and Rust.

<comment><USER20> I do, as native companion to Java and .NET, and I still kind of like it.

However for my own use cases, my actual alternative is the newly founded love for low level programming support by Java and .NET designers. Mandatory GC is nice to have around, while only specific hotspots require a more machine friendly coding.</comment></comment></comment></comment></comment>


Four-year-old boy saves mother's life by dialling 999 using Siri - <AUTHOR> http://www.standard.co.uk/news/london/fouryearold-boy-saves-mothers-life-by-dialling-999-using-siri-a3496601.html <comment><USER2> Particularly impressive was that he knew his address and knew to use his unconscious mum's thumb to unlock her phone.

At 4yo I spent a lot of my time trying not to vomit the plasticine I'd just eaten..

</comment><comment><USER3> Does anyone know how Siri went from "help" to calling the police? Does it just ask you if you have an emergency or does it ask questions?</comment>