Autodesk Fusion 360 becomes almost useless for hobbyists - <AUTHOR> https://hackaday.com/2020/09/16/autodesk-announces-major-changes-to-fusion-360-personal-use-license-terms/#comments <comment><USER2> I'm kind of sick of companies punishing personal/hobby/learning users because another group that should be paying for their software isn't doing it.

This is their problem to solve, and they have chosen to do it this way.

I regret spending effort in learning how to use this platform. I am removing all my public Fusion360 designs and tutorials and replacing them with recommendations to others to avoid their software.

Original: Anyone looking to learn CAD probably ought to just jump right to solidworks as a vendor that is at the very least more predictable and has better return on your time.

Revision: May have spoken too soon Re: solidworks. _sigh_ I gues if you are a great software engineer with some free time, have a look at FreeCAD. It needs some good help.

<comment><USER3>
      > Anyone looking to learn CAD probably ought to just jump
      > right to solidworks as a vendor that is at the very least
      > more predictable and has better return on your time.

I want to teach my daughters the principles of CAD, just as they've learned the principles of auto repair, Python, camping, and a host of other things. How am I going to run Solidworks on our Ubuntu home computers? How many hundreds of dollars does it cost?

I was looking to Autodesk Fusion 360 and even opened a team for our family recently. I decided on that after looking at FreeCAD, Solvespace, OpenSCAD, LibreCAD, and a few others, each of which had a fundamental dealbreaker. Perhaps it will have to be FreeCAD after all.

<comment><USER4> As someone working on Solvespace, what was the dealbreaker for you? I know it has shortcomings and different people would give different answers to this question.

Actually, what are your deal breakers for each of the programs you listed?

<comment><USER5> This issue with Fusion seems like it might be a good opportunity for Solvespace to get more attention. I know I've looked at Solvespace in the past, but it has always seemed stagnant, what with the website saying the last release was in 2016. Since it seems like it is still under development, it might be a good time to do a v2.3.1 release and update the downloads page, along with a note that v3.0 is "coming soon".

<comment><USER4> The intent is to get a 3.0 out soon (by the end of summer already passed). It will not have the major rework that was originally planned for 3.0 but it is quite a bit better than 2.3.

</comment></comment></comment></comment></comment><comment><USER6> I read the limitations carefully. I think only the lack of STEP export is a showstopper. The rest seems pretty much OK for hobby use.

Also, as a side note, I would be happy to pay a subscription fee, just perhaps not $499/year, for "advanced hobby use". Autodesk could look more into separating hobbyists from businesses, I'm sure it's possible.

The problem is that after OnShape went full commercial, this is the only relatively inexpensive option with history-based parametric modeling.

<comment><USER7> $8-10 a month would be awesome, and they would probably make a ton of money using that subscription model. It's short sighted that they don't do this.

<comment><USER3> For someone like me who would use it for a week, wait two years, then use it for another week, $8-$10 per month is prohibitory. I would happily pay for quality software, and I do pay for the Jetbrains tools which I use daily, but for software that I use very intermittently I need a buy-once-use-forever model.

<comment><USER8> So pay as you use. They already save all your stuff. You just can't have a lot open at once, IIUC.

<comment><USER3> Actually, they don't "save all your stuff". They require "your stuff" to be in their cloud, with no local download option, and if you do not use the service for N months, your account is purged.

And I don't care if N is 3 or if N is 36 or if N is 86400. I don't trust a single storage place for any data I care about. Having it only in their cloud is absolutely not an option, even if there weren't danger of them deliberately erasing it if I don't pay regularly.

<comment><USER8> Eesh. Man I wish freecad was better. I got my daughter up on F360 in a matter of minutes (and that was after I used the app myself for about that long).

If they had some $100/yr family maker plan, I'd be all about that. Same for any reasonable competition.

</comment></comment></comment></comment></comment></comment><comment><USER9> You paint as a hobby, you buy paint, canvass and brushes. You read as a hobby you buy books. You bike as a hobby you buy a bike. You use CAD as a hobby you pay for CAD. Not everything is cheap, some hobbies are expensive, others are not. Buying books is cheap, buying a bike is not. I'm tired of people talking about free software as their right. People who make the software also have families to feed.

<comment><USER10> Your comment makes no sense in this context.

The people are not talking about free software as their right. It just sucks the price went from free to ~$300/y.

We all know Autodesk can do whatever they want. But they created an expectation by providing free features for years.

All they did is make people loose trust in them.

Most personal users will just move to other free or cheaper software.

<comment><USER11> > Most personal users will just move to other free or cheaper software.

I keep hearing people—who haven't paid for software and encourage others to not pay—complaining that they will stop using it. What's the downside for Autodesk here?

<comment><USER12> Remember when Bill Gates started his new life as a philanthropist by donating tons of money to schools? Only it wasn't really money. It was lots of Windows licenses or Office licences that were worth a lot of money. So it arguably didn't cost Gates anything, but just grew future earnings. He kept all these students from gaining familiarity with the competition, encouraging them and their employers to buy licenses later for the product they had learned as a child.

There's the downside.

</comment></comment></comment></comment><comment><USER13> I would be so happy if Blender tackled parametric modeling like this.

Tried FreeCAD, gave up in frustration after I drew a second sketch on the face of an object and no matter what I did it wouldn't extrude.

After that went poorly I'd just picked up Fusion 360 about a month ago and have been doing pretty well with that. Whoops.

<comment><USER14> The trouble is that Blender is fundamentally the wrong platform to build a parametric (solid body) modeller on. Everything in blender is a mesh, whereas in a parametric solid body modeller everything is a BREP[0]. It would ether need a new BREP kernel or to include an existing open source BREP kernel, the most advanced being OpenCASCADE which FreeCAD is built upon. Would love to be proved wrong though!

0: [https://en.wikipedia.org/wiki/Boundary_representation](https://en.wikipedia.org/wiki/Boundary_representation) 1: [https://www.opencascade.com](https://www.opencascade.com)

<comment><USER13> Blender is _mostly_ meshes, but it can already have other geometry types like NURBS. You can convert a nurbs object to a mesh, but the modeling process and data format is totally different. I'm imagining that the solid modeling system would be a separate mode type like that.

<comment><USER15> Still, blender is not a CAD tool. It's great to great organic designs (characters, animals, figurines, etc.) but it's not good for functional parts. And it will never be, CAD and 3D modeling for organic/art are fundamentally different.

<comment><USER16> I wonder how much work it would be to turn it into a proper CAD tool. I would donate a significant chunk of my paycheck to Blender if it supported parametric CAD.

Obviously that would be pocket change to the Blender Foundation, but if enough people did then maybe it would be worth it. I'd wager there a fairly big group of people like me who need somewhat decent CAD for hobby use. And if those who can afford to pay put that money towards Blender, we could make it better overall for those who can't.

<comment><USER17> > I wonder how much work it would be to turn it into a proper CAD tool.

Never used it myself but there are some CAD tool addons you can try -- also they seem to have incorporated some 'hard modeling' features which, I would imagine, aren't that far from the CADiverse.

Also, unless they worked on it (semi)recently, the NURBS in blender is a bit of a trainwreck which everyone was scared to even look in its direction.

</comment></comment></comment></comment></comment></comment><comment><USER18> Well, I guess I'm glad I didn't invest in that Fusion360 course that I had been eyeing.

$300/year (temporarily discounted from $500) is way too much for "advanced hobby use". I think $50/year or $100/major version is my limit for hobby software.

</comment><comment><USER19> I always though it was a cludgy, bloated piece of software and despite a few attempts to get into it, never really did.

I particularly disliked having to upload files to their 'cloud' for conversion between formats or even (if memory serves) for slicing objects. Not really what I'm comfortable doing with client's assets.

(And i was on acommercial license for a year or two, gifted by them in some promo as it may have been).

I too echo the sentiment of langitbiru elsewhere in this thread - with the inflation in the home hobbyist scene over the past few years, I wonder what it would take for an Affinity-a-like to shake up the domain a little.

I wonder how much Blender could be modded to achieve this?

<comment><USER20> Fusion 360 used to be very buggy. It isn't anymore. Change in speed is harder to judge since improvements have been very gradual, but the days of waiting endlessly on processing that can't be interrupted is pretty much over.

According to friends of mine who do fabrication it is a lot more stable than the high end stuff they have to use which costs an absolute fortune. That stuff is, apparently, "buggy as f*ck".

I don't think Blender is an option or even a useful starting point for a replacement. It solves an entirely different problem and any similarity in problem domain being addressed is purely superficial. (Get a fabrication professional to take you through their CNC workflow to get an understanding of how it is used).

The dependence on the cloud sucks for two reasons: Autodesk can make all of your work go away at any moment and Autodesk have never done much to optimize uploads/saves so they are slow.

<comment><USER19> For the record, I actually run a CNC and a laser professionally and whilst I'm not intimately familiar with Blender, I know how other 'non-specific' software can be modified and/or used as a starting point for creating project files.

It might not perhaps suffice for the creation of a building or a jetplane, but for _hobbyist_ use, I don't see why not.

For instance - I use Adobe Illustrator as a 2D 'CAD' program, purely because I find it MUCH quicker to work with than the likes of AutoCAD (which I gave up on years ago).

I just found Fusion360 incredibly slow. Perhaps things have changed since, but I last looked at it about 8 months ago.

<comment><USER20> If Illustrator suffices and is "faster" than AutoCAD for your workflow, then you probably don't actually have a big need for Fusion 360 in the first place. But there are a lot of people who actually do things where parametric, constraint based design is quite important for productivity.

<comment><USER19> Again.. _hobbyists_ \- but more to the point, it's perfectly possible to 'manually' do parametric constraints on moderately simple 2.5D geometries on the fly with a bit of logic using software that isn't necessarily built with that in mind. It's a cludge, sure, but if Fusion360 slows down 80% of your workflow where it's not doing much fancy, then that points to there being somewhere better, perhaps simpler, tools could be used.

-ed

Believe me - I _wanted_ to like Fusion - I had the thing for a while and tried, but.. meh. It felt like a free product. At best.

</comment></comment></comment></comment></comment><comment><USER21> For anyone who has dealt with Autodesk in a professional setting in the last 2 decades, this was 100% expected.

They are an awful company whose entire business model is "the first hit is free, kids!".

I can get things like limiting cloud storage (if they actually offered offline storage). But removing .step export? That's just 100% "screw you, now we have your projects and you can't get them out".

</comment><comment><USER22> Thread from yesterday: Changes to Fusion 360 for Personal Use [https://news.ycombinator.com/item?id=24494653](https://news.ycombinator.com/item?id=24494653)

</comment><comment><USER23> I have been using fusion 360 as a hobbiest for a few years now, and this is certainly disappointing to see but unfortunately not surprising. I am not a fan of having online based file management either, but that is how a lot of these tools extend themselves to be more of a "service" and then get subscription dollars. Circuit maker by Altium is another example.

One possible alternative is Solid Edge by Siemens- they've had a "community edition" which is free for hobby and education use. It isn't as popular as Solid works or Creo but it is a full featured tool. It does have a full featured price as well of course once you go commerical (these tools are $5-20k per seat per year generally)

</comment><comment><USER24> Inflammatory title, and not the title of the linked article.

As a 3D printing hobbyist who uses F360, I don't see these changes having a major effect on me or many of the people who post on r/3Dprinting and r/functionalprint. (I'm not sure they'll have _any_ effect on me.)

</comment><comment><USER25> TechShop leaned pretty heavily on it. So did a local spinoff group designed to rise from the (local) ashes of TechShop.

I wonder what will take its place.

</comment><comment><USER26> I'm so confused about Autodesk's licensing now. I have an Eagle subscription at $100 a year and a number a months ago they bundled in F360 with it, which was a welcome change. But now, F360 alone is $300 a year (and they say it comes with a free Eagle subscription??). How are there two pricing models?

Am I going to be surprised by a 300% cost increase when my subscription renews? Are they going to force me to subscribe to F360 to get Eagle? Thankfully I just renewed, so I won't have to worry about this for at least a year, but this is frustrating.

</comment><comment><USER27> I'm a fusion360 user, mostly for simple 3d printed things. I had already stopped recommended it to people last year when they started messing with the hobby/startup license.

Frankly, I would be perfectly willing to toss a couple hundred dollars at them if it were a boxed product that I "owned" and could reinstall in 10 years. But they don't offer that, its a rental model or nothing. After all, I paid for simply3d, despite there being a bunch of free slicers, because it works well and I can use it for an hour or so a year (because I use it in 5 min bursts) without fretting over continuous payment.

In the end, I will probably give TurboCad another spin in a year or so when the next set of fusion360 feature removals happen. I used it a bit a few years ago and have that copy, and they continue to sell a "permanent" license version that is fairly reasonably priced. Plus, it looks like they have done a fair bit of additional work to make it work better for 3d.

For the time being though, I will save off my drawings, and donate some $ to freecad [https://wiki.freecadweb.org/Donate](https://wiki.freecadweb.org/Donate) to encourage them.

</comment><comment><USER28> While I'm disappointed in the changes, I both disagree with the characterization of "almost useless" and with the editorializing that's inherent in choosing that title for this submission to HN.

The changes are painful (especially the lack of STEP export), but that stops well short of "almost useless" IMO.

<comment><USER29> It really is almost useless, there's not really a way to get useful 3D models out anymore.

<comment><USER28> I've used it many dozens of times for 3D printed parts which I expect will continue to work just fine to export STL files.

It wouldn't surprise me if there are more hobbyist users making STL files for 3D printed parts than all other hobbyist use cases combined. (If you add 2-and-a-half-D CAD/CAM [also still pretty well supported], I'd wager a large sum that it's still useful for more than half the current hobbyist user base.)

<comment><USER30> I can go to "Tools -> Make" and the selected body will be sent to my makerboat desktop app. This means there is a reasonable easy way to add apps to F360 (since I doubt MakerBoat is so big for Autodesk to make a special thing for them), which means you can export in whatever way you want.

</comment></comment></comment></comment><comment><USER31> I've been using Fusion 360 for about a year for hobbyist projects. It's been intuitive, fresh, very capable and the learning curve was long-ish but not steep. A spacemouse makes it an absolute joy to work with once you get your motor skills adapted.

~ $300/year is not trivial, but it's more than reasonable if you're using it for "a lot" of stuff. I would say that 10+ projects in a year is using it a lot. CAM with FIVE-AXIS milling is a lot, needing to use the cloud for rendering is a lot. Simulation, generative design and custom extensions are a lot. If you're doing all of those things, you're definitely on the far edge of "hobbyist" and should be forking over some money.

<comment><USER30> True, I'm using it fairly often, but the only thing that affects me from that list is "Project storage is limited to 10 active and editable documents". And by that I mean I need to delete the crap I have there, I can survive with 1.

</comment></comment><comment><USER32> There are other free-as-in-beer options but the only ones that don't have a risk of this happening are the open source packages, of which FreeCAD and SolveSpace are the only current viable 3D options.

If you need a parametric cad package for small assemblies or occasional use FreeCAD is most likely workable. I've been using FreeCAD in a light-duty professional capacity for several years now and will be happy to help out anyone who wants to transition to it (email is in my profile).

They have a decent tutorials page[0] here for getting started with the basics.

[0] [https://wiki.freecadweb.org/Tutorials](https://wiki.freecadweb.org/Tutorials)

</comment><comment><USER33> So we have the cheaper alternatives of Adobe Photoshop which are Affinity Photo and Gimp.

How hard is to build the equivalent of "Affinity Photo" to Autodesk Fusion 360? Maybe this is a good startup idea.

<comment><USER34> FreeCAD, OpenSCAD are FOSS alternatives.

For "free as in beer" there's OnShape with the caveat that all your projects in the free tier are public, and that it runs on the browser or via mobile apps. The iPadOS app has Apple Pencil support which is pretty neat.

<comment><USER35> Unfortunately FreeCAD is kind of unusable (in the same way that KiCAD is), and OpenSCAD isn't an alternative at all.

The only decent FOSS parametric CAD software I've found is SolveSpace, but it is quite limited, e.g. it doesn't even have a bevel tool, and there's no CAM. It's pretty much the Notepad of CAD.

CAD is just one of those things that is too complicated and niche for FOSS to do well.

<comment><USER36> > CAD is just one of those things that is too complicated and niche for FOSS > to do well.

It's arguably too complicated for hackers to do well in their spare time, but there are plenty of FOSS projects in similarly complicated niche areas. The most successful ones tend to have companies or consortiums backing them, who aren't looking to make money on the softare itself but have it complement or support their other activities. OpenModelica for one example.

I always wonder why a consortium of big manufacturers (say Ford, Caterpillar, Hitachi, etc) don't just throw their weight behind some FOSS CAD initiative and get something standard that they can rely on forever. I don't think it would cost them more than 3rd party software in the long run.

<comment><USER3>
      > in the long run

That's your answer. Seriously.

People have taken the initiative and talked to the engineering departments and bean counters at large engineering houses (brands you're not familiar with, that do the engineering for e.g. Ford, etc but not the design which is typically in-house). The reasons are A) short term cost with no benefit, B) having to train staff, and C) compatibility with extant files. Not only will the current staff have to be retrained but nobody can be hired with experience with the tool.

</comment></comment></comment></comment></comment><comment><USER37> For 2D, LibreCAD is quite serviceable (and very AutoCAD-like).

For 3D there's FreeCAD, but, IMO, while it is nominally quite capable, the UI is so obtuse and inconsistent that after a few hours with it, you'll just pay whatever Autodesk is asking you to pay. That's not to say F360 is great, but FreeCAD is unfortunately much worse. I really wanted to like it, since I don't like my work to be tied to proprietary software, but after digging through it for a week I was back to F360.

</comment><comment><USER38> I figured it was a trap when I bought my 3D printer in 2012 and decided to invest the effort to learn FreeCAD. Free as in freedom, and I continue to donate to their project.

</comment><comment><USER39> Here's a question for the IP legal crowd

If Autodesk is hiding a design I make using Fusion 360 behind a gate on their cloud, does that require I grant them a license to the IP represented by that design? Who owns the IP, if I create it, but they prevent me from accessing it?

Similar question for a lot of tools that create IP and hide it behind a gate on the cloud. It seems legally shaky.

</comment><comment><USER40> I use Alibre - specifically Alibre Atom3D. It does everything I need it to do - it was $199 - I own my license. It has STEP, part modeling, assemblies, drawings, the whole 9. It's all parametric. The interface is simple, but it is still powerful. I imagine 99% of what most "hobby" people do can easily be done in that software.

</comment><comment><USER41> How does the open source and Foss ideology come into the whole "families to feed so they can demand extortion money and DRM and vendor lock in and platoform lock in ?

If blender model can work for them, surely all software can be built on that and I would gladly pay for "maintenance". Monthly but not otherwise.

</comment><comment><USER42> Autodesk's behaior in this is no different, morally, from metal theft: an act that gives a trivial benefit a very small number of people at a massive cost to many victims.

The amount of money Autodesk's multi-mansion & yacht class of managers will make from attempting to force hobbyists into paid software rental is trivial compared to both Autodesk's existing profits and the amount of damage this will do to the creative capacity of society.

It's a problem that government continues to allow extractive companies, such as Autodesk, to offer one-sided consumer "contracts" that are binding on consumers but can be unilaterally and arbitrarily revoked by the issuer.

</comment><comment><USER43> How have hobbyists historically afforded Autodesk software? I dabbled in 3ds Max back in the day, but I was never under the impression I could justify purchasing it.

</comment><comment><USER44> Man, I was just getting started in Fusion 360! Bummer!

</comment><comment><USER45> 297/year is not bad, certainly cheaper than a lot of hobby. Is hobby supposed to be cheap/free ?

<comment><USER3> That is very expensive for hobby software. For contrast, I pay about $50 per year for a Jetbrains IDE for professional use. That's software I feed my family using.

<comment><USER45> I'm talking about hobby in general. Let say tennis hobby, the annual membership cost alone could easily go more than 297/year.

<comment><USER46> 297/yr isn't the cost of "the hobby". It's the cost of _part_ of the hobby. Then you need machines, bits, and material to work with.

And it's unlikely that a CNC alone will be enough for anything, so there's a bunch of related tools and supplies needed.

It's like saying "a $300 set of clubs isn't too much to have golf as a hobby" but forgetting that you need to pay for all kinds of others stuff, too.

<comment><USER45> yes, i wasn't implying 297/year is the total cost of "the hobby". thats why i compare it to tennis membership, which is also only the cost of part of the hobby.

</comment></comment></comment></comment></comment><comment><USER47> (disclaimer: I have only used this software for rock-bottom basic 3D printing)

It seems to me the deeper features make for highly sophisticated and capable (read:valuable) engineering software. At the risk of getting pitchforked, is $25 a month ($300/yr) for an "advanced hobbyist" not ...reasonable? I mean an average cell-phone bill is 4x that.

Of course it is always annoying to get into a subscription model when you only use something infrequently - can you activate it 1 month at a time? Otherwise, if someone is using it often, then 25 bucks a month seems to me a more-or-less a fair value, in the context of status-quo capitalism.</comment>


Microsoft Windows 10 review - <AUTHOR> http://www.theverge.com/2015/7/28/9045331/microsoft-windows-10-review

<comment><USER2> > It feels slightly odd to celebrate [the start menu's] return, as it should > never have gone away.

I've spent a lot of time looking at Fitt's Law, then asking myself why I didn't like the tiled start screen.

I mean, maybe a launcher should take over the entire display for the brief moments it's in use. It's not a crazy theory...

Yet me and my friends couldn't get into it.

After some long discussions, we realized that most of us had a tiny spasm of psychological panic when we hit the Win key, because it looked like all our work was suddenly gone and we entered a new environment. We didn't believe that, of course, but UX is all about subliminal signals the interface sends you faster than you can reason about.

Maybe we're weird. But if not, the start screen would have worked if it used a transparency effect or only took up 90% of the screen, as if to tell people, "It's ok, everything you're doing is still here and easy to return to."

Or, on the other hand, maybe big usability shifts are just jarring. Only 6% of Windows users use alt+tab. Maybe for this userbase, UX theory goes out the window, it doesn't matter beyond "any change is bad."

Regardless of which reason drove the resentment, a resizable start menu that can expand all the way to a screen? That's the most brilliant way to solve all of preferences.

If you love Fitt's Law, you can have the screen. If you want to avoid panic, you can have a giant menu. If you scan your desktop while launching or even just fear change, you can have a small menu. Default is somewhere between two and three, unless you're on a tablet where start screens aren't as jarring and make more sense.

Everybody wins, and with a stroke of genius: pragmatism without sacrificing the ideals that originally drove the design.</comment>


Elevator Saga – An elevator programming game - <AUTHOR> http://play.elevatorsaga.com/ <comment><USER2> A project during my graduate work was to solve this problem. You can read my write up, which includes pseudo-code for the best algorithm I found[1].

Long story short: a simple, rules-based algorithm defeated my best efforts at having multiple elevators working together to coordinate their action.

[1]: [https://clarkmoody.com/Moody_AgentBasedElevatorControl.pdf](https://clarkmoody.com/Moody_AgentBasedElevatorControl.pdf)

</comment><comment><USER3> Slightly related - SimTower was originally created as an elevator simulator - if you right click on an elevator engine room in the game you get a wealth of programming options

<comment><USER4> The people in that game were a lot smarter though; if the only path to a floor required switching elevators, they would do it.

<comment><USER5> Well Sim tower had range limit elevators. This game doesn't.

</comment></comment></comment><comment><USER6> Developer here! Thanks for all the feedback. Appreciate all of it, including bug reports! Pull requests also welcome.

Especially I would appreciate help with adding more challenges, and/or making them all balanced and interesting, for a good and reasonable difficulty curve.

It is very simple to tweak them - they are defined at the bottom of challenges.js: [https://github.com/magwo/elevatorsaga/blob/master/challenges...](https://github.com/magwo/elevatorsaga/blob/master/challenges.js#L61)

<comment><USER7> hi, why leaving the elevator at a floor doesn't pick up additional passengers? i.e.

[http://pastebin.com/xA4NJbas](http://pastebin.com/xA4NJbas) @ [http://play.elevatorsaga.com/#challenge=2](http://play.elevatorsaga.com/#challenge=2)

(yes that's only a stub, but has logging as I was trying to understand the event order)

at least elevator.goToFloor(elevator.currentFloor());

doesn't count as a move and unlocks the passenger to onboarding

btw, when you start you get 2 moves per elevator in the moves count

<comment><USER6> The last one about moves has been fixed.

The additional-people-not-getting-on is kind of an architectural problem with the game, working on it.

</comment></comment></comment><comment><USER8> This is incredible. I've been successfully nerd-sniped away from work. Also nice touch w/ the time-scale factors being Fibonacci numbers :) Great work.

<comment><USER9> Likewise.

</comment></comment><comment><USER10> Nitpick. Accidentally programming an infinite loop kills the page. Refreshing restores the offending code and immediately does it again. Had to clear cookies to get going again?

Just drop in a while (1) {} to reproduce.

</comment><comment><USER11> Slightly related question: are there any standard workloads and tools out there for experimenting with elevator programming?

My apartment building has a utility elevator and two normal elevators. Each floor has two sets of call buttons. These have been programmed in different ways over the years, and I've always been curious if there was a good way to quantify the changes.

<comment><USER12> [http://www.quora.com/Is-there-any-public-elevator- scheduling...](http://www.quora.com/Is-there-any-public-elevator-scheduling- algorithm-standard)

</comment></comment><comment><USER13> Nitpick: it breaks the browser's back button

<comment><USER14> Another nitpick: it's 1360 px wide.

<comment><USER15> Yeah, I just had a little difficulty with that. It doesn't fit on my crappy projector.

</comment></comment></comment><comment><USER16> For someone like me who knows _zero_ Javascript, this is exactly the sort of puzzle I need to get started. Elevator programming has always interested me. Thanks also to SeoxyS for posting some code - I was struggling a lot to get started without a few examples.

</comment><comment><USER17> Here's a fairly simple strategy for beating challenges 1 - 5. Basically drop off people in the elevator according to whoever's floor is closest. Then once the elevator is empty go to the closest floor that has people waiting to be picked up.

[https://gist.github.com/cspags/93f18a2fe505bf4f1686](https://gist.github.com/cspags/93f18a2fe505bf4f1686)

</comment><comment><USER18> This is built with Riot.

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

<comment><USER19> v1. Not the same version as that HN article.

</comment></comment><comment><USER20> A couple of problems with the API.

First, why do you have to call checkDestinationQueue after modifying the queue? It's awfully redundant. I assume this is due to some kind of limitation.

And second, goingUpIndicator and goingDownIndicator are kind of sketchy. Can you activate both at the same time? What effect would that have? There should be a single property, directionIndicator of an enum type with the possible values up, down, and none. I don't think you can make enums in javascript though, but I don't know the language very well. I'm just explaining this in terms that I know; there probably is a suitable javascript equivalent or replacement.

<comment><USER21> I'm not a developer of the game but:

DestinationQueue handling: It is not redundant, those are different options. Just to give an valid example: Add something to the queue, sort the queue, make the elevator run the updated and sorted queue.

Having both goingUpIndicator and goingDownIndicator is probabaly necessary to get this abritrary third state (both enabled / both disabled) which essentially indicates that the elevator will go in both directions.

<comment><USER6> Yeah this is basically correct. There is nothing really preventing an elevator from reporting that it's going both up and down. The up/down indicators are used for two things: 1\. To shut off the up/down request indicators correctly on the floor when the elevator arrives. 2\. By passengers to decide whether to get on an elevator or not.

<comment><USER22> Thanks, I'm having a hard time with those indicators as well. One question. If I never set the indicators in my code, do they automatically get set? Or are the passengers getting on the car when there is no indicator?. (So far I've been having a lot of people refuse to get on my car, and I assume it's because my code is setting the wrong indicator).

BTW, this is a game that will haunt me for a long time to come. Even when I pass a level, I stay on it trying to reduce the metrics rather than accept that I "lucked out" with my naive algorithm. You did a fantastic job on this.

<comment><USER23> I think they are automatically set to true at the start, and will never change unless you change them.

</comment></comment></comment></comment></comment><comment><USER24> I got to Challenge #5 by just having the elevators go to every floor like in the first example. It'd be nice to have an earlier challenge with only a single elevator force you to have a more complex controller. With 4 elevators going at a time, it's harder for me to "debug" and figure out how to use the API.

<comment><USER25> > I got to Challenge #5 by just having the elevators go to every floor like in > the first example.

Strange, that strategy doesn't allow me to get past challenge 2 (just going to every floor one after the other).

<comment><USER24> Guess, I got lucky, haha. I should probably go back to challenge 2 and learn how to program these then.

<comment><USER26> On six it takes you back to 4 floors with 2 elevators and the challenge is 40 people in under 60 elevator moves.

The first 5 are easy to "brute force" but six is making me think a bit more.

<comment><USER27> I cheated with #6. My elevators wait on the ground floor until they fill up, then they deliver the patrons to their floors. Everyone not on the ground floor... is stuck forever.

</comment></comment></comment></comment></comment><comment><USER10> Wow. I want so many more of these kind of things for my kids. It's so close to using code to solve real problems. How about an assembly line version where many parts have to come together in the correct order? Or an air traffic control one? Subway scheduling? Pizza delivery? More please!

<comment><USER28> It isn't quite programming, but your assembly line comment reminded me of [http://pleasingfungus.com/Manufactoria/](http://pleasingfungus.com/Manufactoria/) which is a game about making state automata.

</comment></comment><comment><USER29> Markus Mattinen submitted the best solution so far: [https://github.com/MarkusMattinen/elevatorsaga- solutions/blo...](https://github.com/MarkusMattinen/elevatorsaga- solutions/blob/master/fairclosest.js)

And here's my solution, not too bad, had lots of fun: [https://github.com/tasuk/elevatorsaga- solver](https://github.com/tasuk/elevatorsaga-solver)

</comment><comment><USER30> In challenge 3, I got the following error:

There is a problem with your code: .init@[http://play.elevatorsaga.com/app.js](http://play.elevatorsaga.com/app.js) line 66 > eval:12:9 createWorldController/controller.start@[http://play.elevatorsaga.com/world.js:185:13](http://play.elevatorsaga.com/world.js:185:13) app.startChallenge@[http://play.elevatorsaga.com/app.js:175:9](http://play.elevatorsaga.com/app.js:175:9) @[http://play.elevatorsaga.com/app.js:216:13](http://play.elevatorsaga.com/app.js:216:13) riot.observable/el.trigger@[http://play.elevatorsaga.com/libs/riot.js:45:1](http://play.elevatorsaga.com/libs/riot.js:45:1) pop@[http://play.elevatorsaga.com/libs/riot.js:89:31](http://play.elevatorsaga.com/libs/riot.js:89:31)

<comment><USER31> The error messages are bad because eval()...but rest assured there is a problem in your code.

</comment></comment><comment><USER32> I wonder how much more efficient you could be, if people didn't just call for going up/down, but their destination floor.

<comment><USER33> They have that at work and it takes far longer to get an elevator. It's always annoying going to those buildings and using those elevators.

<comment><USER32> I like it much more. Yes, getting an elevator might take longer, but total travel time should be reduced. (Otherwise, the system is programmed wrong.)

<comment><USER34> As well as the overall throughput of the elevator system should be improved a lot.

</comment></comment></comment></comment><comment><USER35> This is awesome, however is there any way to get better syntax errors? Damnit Jim, I'm a C programmer not a Javascript coder!

<comment><USER11> Try looking in the dev tools? I've been able to debug a few runtime errors this way.

</comment></comment><comment><USER36>
      {init:function(){world.transportedCounter=999999},update:eval}

<comment><USER37> oh man, both clever and evil. love it!

</comment></comment><comment><USER38> I think it would be a lot easier if idle elevators have idle fire every time someone presses a button.

That way the elevator can evaluate the new situation. Now you have to look up an elevator in the button event, and the API does not specify many properties, only events.

</comment><comment><USER22> Need help on this. I tried registering a handler for the up_button_pressed and down_button_pressed events, but the handler doesn't seem to be passed any arguments.

Is this correct?

        floor.on("up_button_pressed", function(event) { ... } );

<comment><USER39> I don't think you need an argument. Within the callback function you still hold a reference to floor, and you know the up button has been pressed. There doesn't seem to be any more information. Note that there is also down_button_pressed

</comment></comment><comment><USER40> Is it just me, or is programming more than one elevator buggy?

I used a for( var i =0;i < elevators.length;++i) statement to apply my code to each elevator, but people only keep using the last one. Could someone give me a hint? ;)

<comment><USER41> You're probably hitting an issue with the way that closures work in javascript (and many other languages).

        for(var i = 0; i < elevators.length; ++i) {
            elevator[i].on("floor_button_pressed",
                 function(floorNum){ elevator[i].goToFloor(floornum)});
        }

Doesn't do what one might expect. When the anonymous function is invoked, it looks up the value of the 'i' identifier, which will have changed it's value to elevators.length by the end of the loop. To get the behavior you want, I've seen people do

        for(var i = 0; i < elevators.length; ++i) {
            (function(i){
                elevator[i].on("floor_button_pressed",
                    function(floorNum){ elevator[i].goToFloor(floornum)});
            })(i);
        }

This creates a new scope, which ensures that 'i' has the value that was passed in. I'm afraid I'm a little too tired to look up the parts of the spec that make the semantics clear.

<comment><USER40> Thank you! Your suggestion makes sense indeed and works fine!

<comment><USER42> You can also use:

      elevators.forEach(function(elevator, elevatorNumber) {...});

This will provide each elevator with its index in the elevators array.

</comment></comment></comment></comment><comment><USER43> How are the passengers generated? Do they follow a realistic distribution, or are they just completely random?

The game would be a lot more fun with realistic or even real measured workloads.

<comment><USER6> Dev here. :)

They spawn at a fixed rate, but at random floors, with 50% spawning at the bottom floor.

I agree it would be more interesting if there were patterns, distributions, more popular floors etc. Haven't gotten around to implementing it. There's a small unused bit of code here intended for this: [https://github.com/magwo/elevatorsaga/blob/master/challenges...](https://github.com/magwo/elevatorsaga/blob/master/challenges.js#L48)

</comment></comment><comment><USER44> Pretty cool concept. Had a little trouble working out how to get started because on my 1024px wide monitor, the 'apply' button was not visible.

</comment><comment><USER45> // works well enough:

{ currentFloor: 0,

        init: function(elevators, floors) {
            var elevator = elevators[0]; // Let's use the first elevator
            elevator.on("idle", function() {
                // The elevator is idle, so let's go to all the floors (or did we forget one?)
                var nextFloor;
                do nextFloor = Math.round(Math.random() * 2); while (nextFloor == this.currentFloor);
                elevator.goToFloor(this.currentFloor = nextFloor);
            });
        },
        update: function(dt, elevators, floors) {
            // We normally don't need to do anything here
        },
        vendor: 'Sirius Cybernetics Corporation'
    }

<comment><USER45> Okay, didn't read or look (currentFloor is already defined) and this won't work in this context.

Here is another approach that brought me through till challenge #7:

        {
            init: function(elevators, floors)  // hook up events
            {
                // these are the global wish lists that idle elevators choose from (key are floor numbers, values are number of people):
                var wishListUp = {}, wishListDown = {};

                for (var i = 0, l = elevators.length; i < l; i++)
                {
                    var elevator = elevators[i];
                    // API: goToFloor(n) [enqueues], stop() [clears queue], currentFloor(),
                    //      goingUpIndicator([set]), goingDownIndicator([set]), loadFactor() [0..1],
                    //      destinationQueue[], checkDestinationQueue() [after manual update]

                    elevator.on("idle", function()  // elevator destination queue finished
                    {
                        processWishList();
                    });

                    elevator.on("floor_button_pressed", function(floorNum)  // passenger indicates where to go
                    {
                        if (this.destinationQueue.filter(function (d) { return d == floorNum; }).length == 0)  // if not already enqueued
                            this.goToFloor(floorNum);  // enqueue
                        // note: passengers coming first need to be delivered first (or at least at all)
                        //       however, the elevator will check by passing, whether one destination
                        //       can be approached before the others since it comes on the way.
                    });

                    elevator.on("passing_floor", function(floorNum, direction/*"up"/"down"*/)  // if not in destination queue
                    {
                        updateIndicators(this);  // indicate next destination from here
                        // we stop here if the queue contains this destination,
                        // or if a passenger on the global wish list want to go in our direction.
                        // we can only hope that people check where the elevator is going.
                        if (this.destinationQueue.filter(function(d) { return d == floorNum; }).length > 0)
                        {
                            this.destinationQueue = this.destinationQueue.filter(function(d) { return d != floorNum; });  // remove from later
                            this.destinationQueue.unshift(floorNum);  // add as immediate next destination
                            this.checkDestinationQueue();  // announce modification
                        }
                        else if (this.loadFactor() < 1.0)  // if there is some space left
                        {
                            switch (getDirection(this))
                            {
                                case 1:  // going up
                                    if (wishListUp[floorNum])  // are people waiting to go up from here?
                                    {
                                        //if ((1.0 - this.loadFactor()) * 10.0 - wishListUp[floorNum] > 0)  // assume capacity for 10 people with regular weight
                                        //    delete wishListUp[floorNum];  // mark as visited
                                        this.destinationQueue.unshift(floorNum);  // add as immediate next destination
                                        this.checkDestinationQueue();  // announce modification
                                    }
                                    break;
                                case -1: // going down
                                    if (wishListDown[floorNum])  // are people waiting to go down from here?
                                    {
                                        //if ((1.0 - this.loadFactor()) * 10.0 - wishListDown[floorNum] > 0)  // assume capacity for 10 people with regular weight
                                        //    delete wishListDown[floorNum];  // mark as visited
                                        this.destinationQueue.unshift(floorNum);  // add as immediate next destination
                                        this.checkDestinationQueue();  // announce modification
                                    }
                                    break;
                                case 0:  // final destination
                                default:
                                    break;
                            }
                        }
                    });

                    elevator.on("stopped_at_floor", function(floorNum)  // one destination reached
                    {
                        processWishList();
                        updateIndicators(this);  // next direction
                    });
                }

                for (var i = 0, l = floors.length; i < l; i++)
                {
                    var floor = floors[i];
                    // API: floorNum()

                    floor.on("up_button_pressed", function()  // somebody wants to go up from a certain floor
                    {
                        // elevators are choosing their next best destination,
                        // we just enqueue this into the global wish list queue:
                        var f = this.floorNum();
                        if (wishListUp[f])
                            wishListUp[f]++;
                        else
                            wishListUp[f] = 1;
                        processWishList();
                    });

                    floor.on("down_button_pressed", function()  // somebody wants to go down from a certain floor
                    {
                        // elevators are choosing their next best destination,
                        // we just enqueue this into the global wish list queue:
                        var f = this.floorNum();
                        if (wishListDown[f])
                            wishListDown[f]++;
                        else
                            wishListDown[f] = 1;
                        processWishList();
                    });
                }

                function processWishList()  // give idle elevators a new destination
                {
                    for (var i = 0, l = elevators.length; i < l; i++)  // idle
                    {
                        var elevator = elevators[i];
                        if (elevator.destinationQueue.length == 0)
                        {
                            var next = chooseFloor(elevator.currentFloor(), true);  // find closest wish
                            if (elevator.currentFloor() != next)
                                elevator.goToFloor(next);
                        }
                    }
                }

                function getDirection(elevator)
                {
                    if (elevator.destinationQueue.length == 0)
                        return 0;  // nowhere
                    else if (elevator.currentFloor() < elevator.destinationQueue[0])
                        return 1;  // up
                    else
                        return -1;  // down
                }

                function chooseFloor(currentFloor, dequeue)
                {
                    // choose next destination from the global wish lists for up and down,
                    // depending on a) closest distance and b) number of waiting passengers:
                    var wishList = {};  // joined up and down lists with passenger counts
                    var floors = [];  // array of distinct floor numbers
                    for (var i in wishListUp)
                    {
                        wishList[i] = wishListUp[i];
                        floors.push(i);
                    }
                    for (var i in wishListDown)
                        if (wishList[i])
                            wishList[i] += wishListDown[i];
                        else
                        {
                            wishList[i] = wishListDown[i];
                            floors.push(i);
                        }
                    floors.sort(function(a, b)
                        {
                            var res = Math.abs(currentFloor - a) - Math.abs(currentFloor - b);  // by closeness asc
                            if (res == 0)
                                res = wishList[b] - wishList[a];  // by passengers waiting desc
                            return res;
                        });
                    if (floors.length == 0)
                        return 0;  // nothing to do, go back to base
                    var next = floors[0];
                    if (dequeue)
                    {
                        if (wishListUp[next])
                            delete wishListUp[next];
                        if (wishListDown[next])
                            delete wishListDown[next];
                    }
                    return next;
                }

                function updateIndicators(elevator)
                {
        return;  // there seems to be a bug if announcing, people do not react ..
                    switch (getDirection(elevator))
                    {
                        case 1:  // up
                            if (!elevator.goingUpIndicator())
                                elevator.goingUpIndicator(true);
                            if (elevator.goingDownIndicator())
                                elevator.goingDownIndicator(false);
                            break;

                        case -1:  // down
                            if (elevator.goingUpIndicator())
                                elevator.goingUpIndicator(false);
                            if (!elevator.goingDownIndicator())
                                elevator.goingDownIndicator(true);
                            break;

                        case 0:  // nowhere
                        default:
                            if (elevator.goingUpIndicator())
                                elevator.goingUpIndicator(false);
                            if (elevator.goingDownIndicator())
                                elevator.goingDownIndicator(false);
                            break;
                    }
                }
            },

            update: function(time, elevators, floors)  // loop during operation, called each frame
            {
            },

            vendor: 'frevd'
        }

</comment></comment><comment><USER46> I stopped writing javascript for work at 10pm and then for fun immediately started writing javascript for imaginary elevators until way too late o'clock

I can't help but feel like there is something deeply wrong with me

</comment><comment><USER47> If you accidentally make an infinite loop, you can no longer load the page :(

<comment><USER48> Good find!

Clearing cookies/localstorage should fix that for you, at least until the devs figure out a fix :)

</comment></comment><comment><USER49> My attempt at a basic smart algorithm. Not so easy...

[https://gist.github.com/kballenegger/e275a99d50de2ee07f97](https://gist.github.com/kballenegger/e275a99d50de2ee07f97)

<comment><USER50> Why do you have conditionals written like this: if (elevator.goingUpIndicator() == true)? Why not just: if (elevator.goingUpIndicator())?

<comment><USER37> I believe some people really need think in term of comparations and, for those, adding a "==" symbol make sense, even if the resultant code doesn't make any sense at all!!

Also, I can never understand why people write ..

        if (foo()) {
            return true;
        } else {
            return false;
        }

.. or things like extra parens on conditionals, or weird styles like:

        return (false);

I strongly believe people write as they talk, and talk as they think; which not clearly translates linearly when what you write is code ;)

<comment><USER51> Many languages are expressions (as opposed to statements) including C-like languages. I've always thought that 'return' itself was redundant. If a compound statement was defined to return the value of the final (executed) statement, then functional methods would get much simpler. And remove the need for the '?' operator for instance.

e.g.

       int foo(int x) {   bar(x,y); }

or

       x = {if (foo() > 9) true; else false; }

<comment><USER37> I think one problem with _statements-as-expression_ is that is not always evident which should be their result.

for instance:

        bool r = if (test()) {
          false;
        } else {
          true;
        }

what _r_ should be set to? _true_ or _false_?

I don't see the point of adding such complexity.. it's waaay more clear to be explicit

        bool r = test();
        if (r) {
          false;
        } else {
          true;
        }

or, if you intended the other way

        bool r;
        if (test()) {
          r = false;
        } else {
          r = true;
        }

I guess that's why you need to be strictly correct, or highly opinionated, to design a language.

<comment><USER51> I'm missing your point I guess. All those are equivalent? In C an assignment has the value of the RHS, so that doesn't change anything in these examples.

</comment></comment></comment></comment></comment></comment><comment><USER52> Added solution: [https://github.com/magwo/elevatorsaga/wiki/Solution-by- alber...](https://github.com/magwo/elevatorsaga/wiki/Solution-by-alber70g)

Can work for all up to 9, except 5. Can't get it to work. When it has to be done within 'x' moves, change foreach 'e' variable to var `e = <total elevator minus 1>`

Main 'pattern' behind it: the elevators decide everything. Each elevator does the same based on a global array of where passengers are waiting.

</comment><comment><USER39> Very fun game. After playing for a while I did of course look for a way to break it.

{ init: function(elevators, floors) { console.log(window.world); }, update: function(dt, elevators, floors) { _.each(window.world.users, function(user) { if(user.done) { user.removeMe = true; user.trigger("removed"); user.off("*"); }else{ user.done = true; user.trigger("exited_elevator", 0); } }) } }

<comment><USER53> lol

</comment></comment><comment><USER54> This is cool. I had a similar idea in mind when I started working on my elevator project [1], but got a bit distracted with supporting multiple buildings.

[1] [https://rawgit.com/joefreeman/elevator/master/index.html](https://rawgit.com/joefreeman/elevator/master/index.html)

</comment><comment><USER55> Posted a solution: [https://github.com/magwo/elevatorsaga/wiki/Solution-by- indut...](https://github.com/magwo/elevatorsaga/wiki/Solution-by-indutny)

</comment><comment><USER56> Elevator programming... anybody remember this commercial?

[https://www.youtube.com/watch?v=B3rKBw5ZNL4](https://www.youtube.com/watch?v=B3rKBw5ZNL4)

</comment><comment><USER57> Couldn't get past eight, but what a fun idea!!

As an extra challenge I followed these rules:

1) Elevators cannot inspect the state of other elevators

2) No Hacking the games internal apis

3) No timeout callbacks

</comment><comment><USER58> Accessibility to non-programmers though as a good and inspiring learning tool? Or is that not an intended purpose?

<comment><USER59> Non-programmer here playing. It gamifies coding for sure. Intended purpose unknown.

If the makers read this, firstly this is brilliant. Second my feature request would be to have some record of history to watch how I improve (or not) each simulation.

</comment></comment><comment><USER60> Now this is cool. Thanks for sharing, I will be playing this for a bit over the weekend :)

</comment><comment><USER7> site seems down, this should work: [https://cdn.rawgit.com/magwo/elevatorsaga/master/index.html](https://cdn.rawgit.com/magwo/elevatorsaga/master/index.html)

</comment><comment><USER61> Cleverly done! And "Saga" got a chuckle from me.

</comment><comment><USER62> This is brilliant. Do you know of other games like this?

<comment><USER63> Arguably [https://www.bloc.io/ruby-warrior](https://www.bloc.io/ruby-warrior) (warning: sound autoplays) - although there's something direct and storyless about the elevator one that I prefer.

</comment></comment><comment><USER64> I was horrendously worried this would be a parody of the incident with Rebecca Watson. I'm glad this is much more tasteful - looks really, really fun actually.

</comment><comment><USER65> How do I store global state (if at all)?

<comment><USER11> It's JavaScript, everything is a global! (so long as you don't declare it with var)

</comment></comment><comment><USER66> This is awesome

</comment><comment><USER67> loved it.

</comment><comment><USER68> WTF???</comment>


Lisp interpreter for Microsoft Singularity - <AUTHOR> https://singularity.svn.codeplex.com/svn/base/Libraries/ProtoLisp/

<comment><USER2> Doesn't look like anything more than a sexp reader; very limited (I am guessing a 1-2 day hack.)

All it has are: atom, eq, car, cdr, cons, cond, lambda, define (for variables!) and defun.

<comment><USER3> If you've got those, then you're Turing-complete. I think that qualifies as more than an S-expression reader.</comment></comment>


Ask HN: Why software developers are against marketing Dev-posts? - <AUTHOR> <comment><USER2> What kind of "posts written for developers" are you referring to? Since the dawn of software, there's been disagreement been the sales and marketing people and the developers and support folks. Usually the issues are around salespeople incorrectly describing or over-selling the product, leaving devs and support people hold the bag after something less-than-desirable is delivered.

It's difficult for non-tech people to write highly technical information that is accurate. Programming documentation, especially, requires people who understand programming. Sadly, many of the best tech folks are not good communicators or marketers because their writing lacks impact and interest.

We'll always have some version of this disconnect.

</comment><comment><AUTHOR> As I got my job in an IT company I often hear that the developers do not like the posts written for them which are coming out of the marketing teams. Is it right to hear that opinion? I think that all the posts, wherever they are coming from (developers, marketers, business side) are written to help someone to finish their job or learn something new, even the promotional ones. Very often you can read posts written by marketers that are highly professional and helpful to developers. Also often the developers can share something that is useful to marketers.</comment>


Ask HN: Why are 95% of messages on LinkedIn trash? - <AUTHOR> I recently started looking for a new job and updated my LinkedIn status. In the first sentence I write that I only look for REMOTE and FREELANCE (caps used as on my profile) positions. Still 95% of messages I receive are either permanent or on-site. Sometimes also the required skill is completely off but this doesn't happen too often.<p>So, I wonder, is it only the minority (hopefully) of bad recruiters just sending out mass/spam messages which I get to my inbox or don't I understand how recruiters work on online platforms like LinkedIn. I'm also not searching in some niche area I guess, Golang + Cloud should have some demand. You folks have the same experience? What do recruiters say to this? <comment><USER2> Internal vs external. Recruiter vs sourcer. Direct hire vs contract placement.

Your 95% messages are probably coming from external sourcers working on contract placement roles. Their motivation is to get any type of lead and pass you up the chain.

My experience is to ignore them if the job is not relevant or they seem scamy - and to ask simple questions to quickly screen them (who is client? what is salary?) Suddenly 95% of them disappear.

Edit; Turn this setting off: jobs-->career interests-->"let recruiters know you're open"

<comment><AUTHOR> yeah, this basically confirms my experience and is also what annoys me so much. Not even investing 5s to read the first sentence of the profile... just wasting time for every one.

</comment></comment><comment><USER3> I encourage everyone to delete their LinkedIn account. I guess if you need one when looking for a job, create an account and then delete it when you're done.

<comment><USER4> That's funny. I find LinkedIn to be one of the most useful applications available. I've used it for networking, job search, finding prospects and clients, researching competitors, and more. It's really an invaluable tool for me. To each their own, I guess.

<comment><USER5> yea definitely, i found it to be horrible and not very useful for job searching.. It's a place where everyone good buddy pats each other on the back, use fake fancy titles, and where you get constantly spammed for jobs your not interested in..

its difficult to actually believe anything you see on that site

</comment></comment></comment><comment><USER6> LI is so strict with its rules and data usage generally. I wish they would fight hard to cut back on the obvious spam. Ruins the experience and makes it harder to sell its use to job seeker clients.</comment>


Please don't pay to use a pay toilet - <AUTHOR> https://stallman.org/pay-toilets.html <comment><USER2> For old/sick and poor people this is a real problem.

I just realized that my old relative avoids going to public places because he it becomes expensive when he needs to visit toilet frequently.

Toilets as public utilities where whoever keeps the toilet is compensated by the number of visits would be one good solution. Zoning regulation could mandate some amount of public toilets.

</comment><comment><USER3> Why hasn't charging for toilets caught on in the US?

I suppose some places require a receipt for use, but still. Or perhaps, why do many places in the EU charge?

I've noticed that pay toilets in the EU are still disgusting.

</comment><comment><USER4> Eh. I hope the comment about legality is supposed to be a joke/hyperbole. Otherwise agreed.</comment>


Show HN: I made a social network for musicians - <AUTHOR> http://fandalism.com/home/

<comment> ThomPete<AUTHOR>
great work. May I come with one suggestion.

The main problem in comparing with sites like dribbble and devian art is that you are dealing with two very different senses.

One of them you optimize i.e. you can learn to quickly read through hundreds of pictures in a matter of seconds.

With sound/music there is no way to optimize for faster listening. 10 seconds is going to take 10 seconds.

This means peoples browse frequency is going to be much lower.

So I had an idea.

Why not start with a time limit of say 10 seconds or maybe 16 bars or maybe even less. That way it forces the musician to really cherry pick what part they want to showcase.

If something gets upvoted that musician earns the right to have longer and longer sound samples.

That way you will force the users to listen to more and upvote if they want to hear more.

Maybe that's a way to get some traction going.

<comment><USER3> FWIW, as a musician, this is a really good idea. If you do implement it, please do post a link back on Hn.

</comment></comment><comment><USER4> It looked good until I needed to agree to all this before I could actually see how it worked:

* Access my basic information: Includes name, Profile picture, gender, networks, user ID, list of friends and any other information I've made public.

* Access my Profile information: Likes, music, TV, movies, books, quotes, About me, Birthday and Current location

* Send me email

* Post to Facebook as me

* Post status messages, notes, photos and videos on my behalf.

* Access my data any time

* Access my data when I'm not using the application.

WTF? No! Sorry.

<comment><AUTHOR> I know FB Connect is a deal breaker for lots of HN readers.

From a product standpoint, I decided that requiring FB Connect (for now, at least) is one of the best things I could do to make sharing more frictionless, which will help the site grow hopefully.

<comment><USER4> Is there no way to do it with less? I just get very twitchy when I see that level of permission. We're getting to the stage where a FB profile is important to life, work, family… well everything. We have parents, grandparents, children, mother-in-laws and bosses linked in there… and some near explosive issues always bubbling near the service.

Can't you take the minimum and ask me again when I want you to do something more sophisticated for me? If you have built my trust and have demonstrated the trade-off I will almost certainly grant you more permission.

But, dude, you're asking for the key to my front door and we've never even drunk a beer together!

<comment><USER5> "But, dude, you're asking for the key to my front door and we've never even drunk a beer together"! -Well put. I'm a musician and would likely love to utilize the site but I'll never find out because I won't support this sort of intrusion. F_ck fb. You can grow without them... in spite of them even!

</comment></comment></comment></comment><comment><USER6> 1\. Please let people prop even if they're not logged. I'm not saying to let every feature for no-member, but saying +1 to an artist is important in a new social network.

2\. I _hate_ it when the page loads and I'm aiming at a video in the screen, but it then randomly starts to scroll somewhere else, and it'd make me mistakenly click on the wrong video. To use the website, I had to let it load the page, count 1-2 in my head (while it'd scroll I don't know where randomly), and then I'd click on the video I want.

3\. About the connect with facebook and share with facebook. For some reasons, it really scare me the way it's done. It should somewhat tell me what action does what. For instance, after registrering, there's a popup saying "Now share your profile on Facebook" [share] [cancel]. Will [cancel] cancel my registration? I had no idea.

Otherwise, great job! I'll use it and look forward to it :)

About the #1, I think it requires maybe a bit more explanation. I wanted to say "This artist is good", but didn't want to be involved into all the facebook connect, creation process, etc. Would be good to have the user helps promote the video but only force him to create an account if really necessary.

</comment><comment><USER7> You should re-consider making Facebook your only option for logging in and signing up.

[http://bijansabet.com/post/16980728547/why-facebook- connect-...](http://bijansabet.com/post/16980728547/why-facebook-connect- shouldnt-be-your-only-sign-in)

And the ensuing discussion, here: <http://news.ycombinator.com/item?id=3548081>

<comment><AUTHOR> I understand that FB Connect is a turn off for many people (myself included most of the time).

But requiring Facebook makes certain viral features (like sharing with your friends, posting to your wall etc) much more frictionless.

I think there are 3 ways a site can become popular. 1) Through viral channels. 2) Through word-of-mouth. 3) Through marketing/pr.

I'm going for all three. #1 is a lot easier if you require FB Connect.

</comment></comment><comment><USER8> Nice idea. What if you incorporate the 10,000 hours rule as a sorting method for the interface to sort more highly trained musicians near the top? You could weigh total music practicing, practicing with that instrument and practicing with those band members. You might end up needing to compare instrument similarities, but finding, for instance, a performer highly skilled in two dissimilar instruments would be intriguing to listen to.

</comment><comment><USER9> A quick Google search reveals that pud created Fandalism in 2006 as a site for "uploading and sharing your tunes":

[http://hemiolesque.blogspot.com/2006/10/fandalism-youtube- fo...](http://hemiolesque.blogspot.com/2006/10/fandalism-youtube-for- musicians.html)

Now it's an "invite-only directory of good musicians".

Would love to hear your story how you took your time to launch Fandalism :)

<comment><AUTHOR> In 2006 I had a different site at the same domain.

The old Fandalism ("YouTube for music") was basically exactly what SoundCloud is today.

Except that people starting uploading a lot of copyrighted pirated stuff that I didn't want to deal with (hosting was expensive back then). So I shut it down.

Fandalism today is a completely different site (though I suppose related), but with the same domain. I launched this beta 12 days ago or so.

<comment><USER9> Wow. Just 12 days ago?

How did you get people to engage with the site?

Tried looking for inspiration at your Fandalism blog (<http://blog.fandalism.com/>) but it seems to be password protected now.

Looking forward to learning more from you, pud!

</comment></comment></comment><comment><USER10> Wasn't that called MySpace? :)

<comment><AUTHOR> I would compare Fandalism more to Dribbble or DeviantArt, but for musicians.

</comment></comment><comment><USER11> Love the use and customizations of the Twitter Bootstrap, pud.

<comment><AUTHOR> Twitter Boostrap was a godsend for me. My design skills are relatively weak but Boostrap really helps make the site's design passable.

<comment><USER11> Yeah, it is a godsend to all developers who aren't great designers.

</comment></comment></comment><comment><USER12> pud, I'm impressed with your product-shipping record. This looks really cool too, I'll be sure to pass it on to all my musician friends.

<comment><AUTHOR> (i'm not sure if HN etiquette allows me to say "thank you." but i'm worried i'd appear ungrateful if i didn't reply. so - thank you! i am grateful and i hope your musician friends enjoy it.)

</comment></comment><comment><USER13> The 'Apply' takes me to facebook login?

<comment><AUTHOR> I realize that's a little awkward. Good point. I should write something there about how Fandalism uses FB Connect and promises not to spam etc.

The entire site is FB Connect for now, which I know turns off many HN readers. But it made some things easier for me and for users.

</comment></comment><comment><USER14> pud, the "f" in the logo reads as an "i" or "j" for me at first glance. Maybe you could tweak that a little bit?

What about a mode whereby you can randomly discover artists by queuing videos? I like the dribbble for musicians comparison.

( Nefarious Drumsticks! \m/ )

</comment><comment><USER15> I'm sorry but I think this is a failure of strategy.

Musicians use social networks to reach existing fans and acquire new ones. Speaking as a musician, ten years ago we were all about Myspace. These days we're on SoundCloud, Facebook, YouTube, and Twitter. We don't use Myspace because nobody else does either. We use YouTube, FB, and Twitter because everybody else does, and we use SoundCloud to share new music with hardcore fans and with each other.

If you're looking to share your music with as many people as possible, you put it on YouTube, not SoundCloud. If you want people to go to a show, you talk about it on Facebook or Twitter, not SoundCloud. If you want to get a label to sign your new track, or you want your hardcore fans to be able to hear your newest music right away, that's when you go to SoundCloud. If you're on SoundCloud, you're either a musician, a hardcore fan, or, more often than not, both.

What I'm basically saying here is that a social network for musicians gets something very fundamental backwards, because of the four social networks musicians use, SoundCloud is the least important, the least promoted, and also the only one which was actually built for us.

I'm not trying to denigrate SoundCloud, it is in fact awesome and incredibly useful, but it's so much more important for a musician to be where the fans are. Also, if your goal is to occupy a smaller niche like SoundCloud does, you're still more likely to succeed building tools which make it easier for a musician to graduate their fans from the "hitting Like on YouTube" level to the "downloading everything on SoundCloud" level.

I think this is kind of like, "I want to make a social network, what's a topic, musicians, ok go." Rock on, it's good to stay focused and keep shipping, but it's better to make stuff people want, and believe me, what musicians want is to be able to make music as much and as often as possible, and that means making money from music, and that means either fans or students.

<comment><AUTHOR> I hear you but Fandalism (despite its name) isn't designed to help musicians connect with fans or make money.

Fandalism won't be good for that.

Rather, Fandalism is designed to be a community of musicians showing their chops to each other. Kind of like a big "Show HN" but for musicians. Or Dribbble.com or DeviantArt.com. Or ModelMayhem.com, sort of.

It may still be a failed strategy, but the strategy is different than what you surmised.

Here's my profile (I'm a drummer and sometimes ukulele player): <http://fandalism.com/pud>

<comment><USER5> I think it's a great idea and looks like it's well put together. You may have seen my criticism above about how to "login", this is more a criticism of FB, not fandalism (but change it, make it optional).

Also, fantastic homage to the Bee-Gee's on your Uke! Have you seen this? <http://www.youtube.com/watch?v=0LrXlVPn0DI></comment></comment></comment>


German minister backs creating legal right to work from home - <AUTHOR> https://apnews.com/44740743a698a80c058b75b8f8af3c8e <comment><USER2> As a point of comparison, Germany already has a right to work part-time: if you've been with a company for more than 6 months and the company has more than 15 employees, you can ask to reduce your hours and the burden of proof is on the employer show that it cannot be accommodated if they want to deny it.

This seems similar, and it's probably far easier to organise. It's not for everybody, obviously. But among my acquaintances, I'm getting the impression that those who work at home usually do so for good reasons, such as childcare.

I do remember a few instances where people discovered they tended to slack off or otherwise be unproductive. Every single one of them also became miserable and decided to go back to the office.

</comment><comment><USER3> I hope to god WFH doesn't become the new hotness. A big part of going into an office is the mental context switch for me. I have work time & place, and I have not work time.

WFH has made it really hard to keep the boundaries separate. I've had coworkers message me at 6/7pm at night expecting me to be there because they know I'm in front of my computer.

<comment><USER4> > _A big part of going into an office is the mental context switch for me._

Perhaps homes should start including a personal office as a standard feature just like the kitchen and bathroom (which didn't always use to be a part of houses.)

This could eventually let us reclaim the space currently taken up by all the office towers, eliminating the upkeep of maintaining them, reduce daily traffic and the associated noise, pollution, stress, improving overall public health and leisure time, which in turn would improve the economy.

WFH becoming the norm is a win/win scenario, at the cost of a mere "mental context switch" for a while before civilization adapts, just like it did when the majority of humans started working inside buildings instead of farms and fields and so on. :)

<comment><USER5> A nice idea, but living space is limited and expensive in most major cities.

<comment><USER4> With WFH (and even schooling from home if implemented well), you wouldn't _have_ to live in expensive major cities.

<comment><USER5> But what if I live in a major city not only for work reasons?

<comment><USER4> Then you chose to live in an expensive city.

If WFH becomes the norm for the majority, companies may not want to maintain expensive physical offices for people who can't (or don't want to) work from home.

I assume even limited living spaces in major cities include a bed, desk or couch, at least.

WFH doesn't mean "only from home" anyway; you could work from any space you have access to. Parks, restaurants, if they allow it, which I expect they will, along with many other facilities popping up for remote work. It could actually create an interesting new industry of third-party office providers.

</comment></comment></comment></comment></comment></comment><comment><USER6> I like it. The pilot sits at home using the joystick to control the jet. Or many at once. In the end, that is, what the military already does. And when he has to go to lunch, he just lets the jet fly idle in circles.

<comment><USER7> Or hands over to someone else. Not such a crazy idea.

</comment></comment><comment><USER8> Another point in favor of remote work is trans people feel safe WFH . [https://genevievefiles.blogspot.com/2019/06/remote- work.html](https://genevievefiles.blogspot.com/2019/06/remote-work.html)

</comment><comment><USER9> Germany better fixes their insane taxation policy on home office matters. It was improved a bit a few years back but it's still a mess.

A few years ago you needed to have a separate room (with a door!) without _any_ personal items in it to be considered a home office for tax reasons. Even a second chair was reason enough to make your tax report invalid (or fraud, depending on the policy of the local tax office).

Nowadays it's gotten a bit better as a corner of the room can be considered an office but there are still size restrictions and the computer can only be used exclusively for work. It's still a mess that you have to fight your communal tax office for and in the end comes down to the fact that the person responsible to check your report has to believe you and it's way to easy for them to say no.

<comment><USER4> > _you needed to have a separate room (with a door!) without any personal > items in it to be considered a home office ... and the computer can only be > used exclusively for work._

I agree that that's how it should be, by default. See that other comment about mental context switches.

Companies could provide specialized laptops for work.

It would help with privacy, focus and sensitive data being overseen by kids/spouses/guests, until you can assure your employer that you can take care of that on your own.

<comment><USER9> It's penalizing low income employees and only benefiting the rich. People without the money to buy a house or large apartment will have to pay more. Even if you were to have an extra room for work, what if you want a child? Losing tax benefits is an extra cost you have to burden.

It's expensive to be poor, as always.

<comment><USER4> Ah, didn't see it from that angle. Of course then there should be exceptions for people who can't afford dedicated offices.</comment></comment></comment></comment>


Why You Shouldn't Give A Crap About Early Startup Competition - <AUTHOR> http://maplebutter.com/got-early-startup-competition-heres-why-i-think-youre-fine/ 60% will kill themselves
Either by co-founders fighting, wasting money, not listening to the market, raising money from bad investors, and a thousand other decisions that they'll have to make to succeed.
29% will pivot
They'll move into a completely different market doing something totally unrelated to what they're doing today. I should know.
10% will get swallowed up
Some big company will come by and acquire them, only to smother their team or dilute the potency of the product.
That leaves 1% to create something meaningful in the market you're in and act as true competition. The odds are against them (and you – so stay focused). <comment><USER2> Dan, couldn't agree more. Everybody got to take a dip in the same pool.</comment>


How Music Affects Your Productivity | Business + Innovation - <AUTHOR> http://www.fastcompany.com/3032868/work-smart/how-music-affects-your-productivity?curator=MediaREDEF <comment><USER2> Great opportunity to share some of our listening habits and playlists while working. What seems to work for me go from ambient (boards of canada, tycho, you should really try rone Tohu bohu) to IDM like Aphex Twin (the newly released caustic window LP is great for working). Soft shoegaze like slowdive or soft psychedelic folk like mazzy star does the trick. I think that neo classical music such as Max Richter's is a good choice for working either. But I want to find out more!

Can't really measure productivity impact but it does seem to lower distraction and to even output over a long time span.</comment>


Pentagon paid PR firm $540M to make fake terrorist videos - <AUTHOR> https://www.rt.com/usa/361385-pentagon-pr-firm-terrorist-videos/ <comment><USER2> TL,DR: Propaganda arm of one government releases story about activities of the propaganda arm of a different government.</comment>


Ask HN: What is the 2017 version of Drupal or Wordpress? - <AUTHOR> I'm looking for the modern open source equivalent of Drupal or Wordpress.
Drupal has sold out to the enterprise, Wordpress has issues, static generators aren't user friendly.
So what do you think is their modern alternative - something that allows people to create complex functionality by snapping together pre-existing components, and without having to code? <comment><USER2> Take a look at Backdrop CMS [https://backdropcms.org](https://backdropcms.org) it's a Drupal 7 fork...

</comment><comment><USER3> I'm going with learning to code.</comment>


It turns out planes are even worse for the climate than we thought - sahin-boydas https://www.newscientist.com/article/2207886-it-turns-out-planes-are-even-worse-for-the-climate-than-we-thought/ <comment><AUTHOR> During the 9/11 aircraft grounding, climatologists had a pretty unique chance to measure temperature variance compared to historical data.

Just the few days of data showed that days became warmer and nights became cooler. I pretty much had no idea that just trails could impact weather so noticeably until I read up on this experiment.

As a european citizen I'd vote for all subsidies that go towards intra- European air travel to go towards railway traffic.

The US should so something serious about plane travel as well. At least we have the excuse of completely separate governmental entities that built different railway infrastructure. The US is probably lacking behind China who practically just began connecting their nation through high-speed railways.

<comment><USER2> The other thing astonishing about 9/11 was how _quiet_ it was. The ambient white noise of aircraft was non-existent, and it is considerable in any major urban area.

<comment><USER3> I think people underestimate just how bad noise pollution is for you...

</comment></comment></comment><comment><USER4> Really interesting that certain types of cloud formation (including those created by aircraft) can actually increase mean surface temperature. I had always assumed that the reflection of sunlight outweighed the insulating effect. Does anyone have a link to some kind of model that explains the factors in this?

</comment><comment><USER5> Wonder how much contrails are created by rockets? If we'd move the travel above the atmosphere, how much could be saved?

An alternative is to move back to slower propeller planes, maybe with electric motors (improving over Tu-95?) but that would increase flight times.

<comment><USER6> Aren't those less efficient and less reliable as well? I don't see going back to props. What's the mean time before overhaul on both? Also lower ceiling.

<comment><USER5> Rockets - perhaps, for today, but maybe they could be improved.

Propeller planes - why? They were used for long time and many technologies are quite mature.

<comment><USER7> Propellers have a fundamental speed limit on them, the tips can not exceed the speed of sound or else shock waves form which cause the efficiency to drop off sharply, as well as creating massive noise pollution from the sonic boom constantly coming off the propeller. Todays commercial "jet" engines are actually closer related to propeller planes than pure jets, turbofans provide the majority of their thrust from the ducted fan rather than the jet exhaust coming out the back.

</comment></comment></comment></comment><comment><USER8> Original paper (pdf): [https://www.atmos-chem- phys.net/19/8163/2019/acp-19-8163-201...](https://www.atmos-chem- phys.net/19/8163/2019/acp-19-8163-2019.pdf)</comment>


Can I ask for feedback on our rough draft website? - <AUTHOR>

Hi,
I am not sure if this is allowed...or if it needs to be posted elsewhere...
In short, we have just finished a rough draft of our website which is our MVP version 1.0.
We are looking for feedback from people who visit this forum...on the website...the service offering...price...anything that you think might be valuable to us...
The url is:  www.ledgerforce.com.au
Ledger Force is an online bookkeeping service for small Australian businesses.
Please don't hold back on your feedback...crucify the site and the business idea if you feel the need!
Kind Regards,
Gary Leech Ledger Force Pty Ltd www.ledgerforce.com.au <comment><USER2> Quick rundown of my impressions:

Good:

\+ "Bookkeeping Services For Your Business" – The headline is short and stands out

\+ "Request an invite" – Call to action stands out and repeated on top & bottom. However, I'm not sure what this action will accomplish. Will I get access immediately? Will a sales rep contact me?

\+ Listing partners and "featured in" makes you feel more important. But is Oracle really your partner somehow? (you mention OpenOffice.org) Also, perhaps add client testimonials?

Not-so-good:

\- Font sizes are all over the place. Headline should only have one font size. The brief summary right under it should be bigger than the standard-sized text in benefits descriptions, etc.

\- "Learn more" link is below the fold on my 15" laptop screen, and the page looks quite complete without it. Some people might not get the idea to scroll down depending on your audience.

\- Instead of "Submit" and "Send" buttons, use descriptive labels like "Request invite" (bonus points: A/B test a few variations)

\- Benefits are impossible to skim. The sections should be titled in a useful way, e.g. "Deep Analytics", "Low, predictable cost" etc.

\- I've just noticed you have a dedicated "features" page with more content. And "prices" and some other stuff. But they're buried in the footer in tiny gray text. No one will see them. Also – they open in a new tab? Boo... But good that you have the call-to-action on those pages too.

\- Front page doesn't really address why I should choose your app over something else. It _is_ a web app... right? I'm not sure because there are no screenshots, not even a teaser. That alone would be a dealbreaker for me personally, and I feel that unless you're selling something for $1000/month and do high-touch sales, you do need to at least show me your product, let alone let me register for it without invites or contacting sales.

\- Please, please don't use puzzle (or humanoid) clip art. Even if it's custom-made for you... It's such an overused concept, my bullshit detector is screaming _Full alert. This is not a drill_ every time I see it.

</comment><comment><USER3> I say this as someone who is actively interested in paying you money at this point but I have initial concerns about the credibility of it at this point.

Some assurance that you guys will be around in a few years time and that this is a solid model (well aware things like Bench.co would already validate this for you). Trust that you guys actually know what you are doing (I see you are certified accountants but it still feels off for some reason).

Actually, just contrasting what you have with Bench is a good example. If they did Australian bookkeeping I would sign up for them right this second despite the fact they are almost 3x the price of what you are charging.

If I could make an extremely crude attempt at summing up some of the things that stick out to me in the first 60 seconds it would be:

1\. This looks like a generic theme from themeforest or something that had little customisation done to it out of filling the blanks. Fonts are all generic, images are all clearly stock photos. 2\. Who the hell are you guys? Show me some faces, give me some profiles of some of the accountants on your team.

Otherwise, for real I am a genuinely interested potential customer. Would be happy to chat further if you like. mark [at] afterwire.com.au

</comment><comment><USER4> It's not bad, but definitely feeling what it's like to be at Rough Drop Ver 1.0.

You can improve the overall design of your site by focusing a little on the typography.

For instance, your font stack is currently "Arial, Helvetica, sans-serif". I think a different font, eg. Open Sans, which is available from Google Fonts, may give your site a better appearance.

Also, pay attention to the line-heights and relative sizing between headers and paragraph contents.

These are enormous pain in the arses if you aren't a design-centric person, but are subtle differences between a website that looks polished enough to get the user to give up their e-mail address and not.

</comment><comment><USER5> Another place you can talk about small, bootstrapped businesses is [http://discuss.bootstrapped.fm/](http://discuss.bootstrapped.fm/)

I don't have much to say about your site because I'm not 1) a design guy 2) in the market for bookkeeping or 3) Australian :-)

</comment><comment><USER6> I am sure you can improve the template!</comment>


Heart Surgery in India for ,583 Costs 06,385 in U.S - <AUTHOR> http://www.bloomberg.com/news/articles/2013-07-28/heart-surgery-in-india-for-1-583-costs-106-385-in-u-s- <comment><USER2> The title is currently "Heart Surgery in India for ,583 Costs 06,385 in U.S" but should be "Heart Surgery in India for $1,583 Costs $106,385 in U.S."

...So it's the instances of "$1" that got removed. Overzealous input sanitization?

</comment><comment><USER3> Got hit by a car a few day ago in Nepal.

2 consultations + Chest x-ray + medicine in 30 minutes for less than $15 USD.

"A nation's greatness is measured by how it treats its weakest members." \- Mahatma Ghandi

<comment><USER4> That's a paltry sum by Western standards even in Romania - one of the poorest countries in Europe though you might just get away with it. I wonder how many consultations, x-rays and medicine must be provided per day to generate a reasonable wage for medical staff in India? Or was this one-off for an emergency?

</comment></comment><comment><USER5> Why is `$1` missing from title? Does HN parse it as an environment variable?

<comment><USER6> Looking that way!

<comment><USER7> Nope, just tried the title "$0,120 to $1,200", it worked perfectly fine.

Probably OP used some plugin to post this which is faulty.

<comment><USER8> Looking back at the user's submissions they posted a link with the title "The" 47 days ago, so this seems likely.

<comment><USER9> Or maybe it's a bot. Somebody should try to make it post a story with $$ in the title and see if it escapes it to the PID... :-)

</comment></comment></comment></comment></comment><comment><USER10> Surely a more useful comparison would be UK / US where cost of living is much much easier to factor out

From [http://news.bbc.co.uk/1/hi/health/3461585.stm](http://news.bbc.co.uk/1/hi/health/3461585.stm) we see 2008 tarring for heart bypass was 10,000 or about 16k USD

This compares sensibly with the cost of living adjustments between UK and India so we can be happy the UK / Indian health services are doing well

As for the US - well, why is your operation 8x the cost in the UK?

</comment><comment><USER11> > "There has been fast urbanization in India that's brought with it a change > in dietary patterns and lifestyle," ... "It's leading to this huge jump in > cardiovascular disease."

I'm guessing that urbanization means less exercise and more stress. But I'm curious as to how the diet has changed in India lately? More meat, more refined sugar, and more unhealthy cooking oils?

<comment><USER12> Along with that, more people are eating food that their body is not adapted to. Indians don't work out enough to compensate the high calorie intake from McDonalds, KFC, TacoBell, etc which leads to these heart problems.

<comment><USER6> I don't think that's a problem isolated to just India!

</comment></comment></comment><comment><USER13> Been saying this for a long time. Health insurance in US is a fraud. Obama just made it compulsory for everyone in US to be defrauded.

Here's why: Assuming that the actual cost of heart surgery in US is 10x India cost, it'll cost ~$10k to $15k in US for a heart surgery.

Now, a good health insurance premium, for a family of 4, easily costs upwards of $1k a month. People pay so much, because this fraud in US, shows the $100k figure, and those with good health insurance will be glad to see that they just have to pay their deductible (of $500 to $5k,based on their insurance).

Basically, Americans think it costs 100x for a treatment/medicine, and pay 1x towards monthly premiums, while the actual cost if just 10x. In India, the cost probably is just 1x.

Doctors/Hospitals in US lose because they have no pricing power. (Insurance company decides how much docs/hospital/group gets paid)

Patients in US lose because the Insurance companies dictate who is covered for what.

Insurance companies in US rejoice.

note: I'm not an American, so this is purely a dispassionate comment on what a ripoff healthcare insurance in US is, and how it affects the list price for medical care and medicines.

</comment><comment><USER6> I wonder just how much costs are inflated for medical goods because of unnecessary restrictions or standards?</comment>