Designing a SaaS Database for Scale with Postgres - <AUTHOR> https://www.citusdata.com/blog/2016/10/03/designing-your-saas-database-for-high-scalability/ <comment><USER3> We serve enterprise customers, and use the 'separate database' strategy for these reasons -

1\. Stronger data isolation. Technically schemas provide the same level of isolation, but they are much harder to explain or defend during compliance audits.

2\. More secure backups. Client data can be encrypted with their own key and stored as per their needs.

3\. More useful backups. The frequency and retention of backups can vary to meet the SLA requirements (and costs). And we if something goes wrong, we can recover that particular customer's data in isolation without impacting the rest of the application/customers or worry about merging it in.

4\. Secure data deletion. Many European customers demand that _all_ their data is securely removed upon termination. This creates a massive problem with purging backup information if everything is in the same dump.

5\. Independent load & performance. If one customer is particularly high-load or chatty, we can move them onto a separate server where they don't impact well behaved folks.

6\. Easier horizontal scalability. Just move heavy loads to their own servers + read replicas.

7\. Direct access to data. Specifically, we can use BI tools that do not understand schemas and even give direct access to clients' analysts.

8.Independent migration paths. Sometimes the customer's timetable does not allow them to upgrade to the newest version right now (e.g. they are in the middle of using the app for a key process this month). We can leave their account routed to the previous version in both the codebase and the data store.

Out of those, the key 3 reasons are: stronger data isolation, better backup strategy, and more predictable compliance story. But that's enterprise: even if we're widely successful, we'll have "thousands" of customers - <USER2> millions. And we can manage thousands of databases, so this architecture path is preferable to us within those boundaries.

<comment><USER4> How do you handle look ups that would require cross tenant queries? e.g. each customer has multiple devices connected devices to our system and we want to know the health (is it online, is it responding, etc).

The one way I've thought of current is either having an aggregate table in a "central" database that would be used to collect these kind of statistics. It would be "real-time" but it would be near real-time depending on the frequency of updates. The downside is you have the over head of maintaining a separate data source.

The other option was to just have the software set up to query each tenant at a time and take the performance/time hit. That's not really the best experience and probably violates the idea of data isolation.

<comment><USER5> I'm having a trouble understanding what you are saying by cross-tenant queries in context. What you are describing is application monitoring which would be completely independent of the DB holding customer data, which is what they are describing in your parent's post and the OP. Application runtime/health status could trivially be handled in a separate stream.

<comment><USER4> It's not really the application runtime/health status, it's the status of individual assets for each tenant. So a scenario would be as technical support person I would like to look at what customer assets are currently off-line across all tenants.

One way to do that would be to query each individual tenant database and then combine the information. But this would void the idea of security/isolation. The other downside is that it's slow.

But I think I've been looking at this from the wrong point of view, there should be a central health check service for these assets that collects the status of the assets and then that would be queried by the support person.

<comment><USER5> Generally I see it the other direction as a technical support person- each tenant's host is responsible for reporting uptime to a central service (because it's SaaS) and the customer is aware of this (even if it's basic syslog forwarding). Because we are not reaching in and they are sending out their customer data is still isolated.

Any time you are reaching into the customer datasets that is where you have the possibility of breach via that access and would have to make sure all of those events are audited and that audit records are secure. If it is sending monitoring data to an aggregation service that can be well-defined in contents and much easier to demonstrate that no sensitive tenant information is shared.

It's much easier and saner to setup a server to receive and configure each tenant's host to send exactly what is needed and then analyze who didn't send their stuff at regular intervals for a more direct investigation and everyone can agree on what needs to be done based on that.

<comment><USER4> Yeah I agree with what you're saying, as I said I was looking at the problem somewhat naively.

When you talk about having each tenant's host do you mean a dedicated application server for each host? The current setup we have is that we have multiple tenant databases but only two application servers providing functionality to them, so there's a switching cost on the application servers because they can't maintain a connection pool to the databases (they also have to know the credentials for the databases.

It seems excessive if you have a 100 tenants to have your infrastructure for serving the application replicated 100 times but maybe we're just haven't quite built our system correctly yet.

<comment><USER5> In the model I am describing every tenant component would have an agent that was reporting the state of that tenant. If there was a shared component/pool that wouldn't be reporting separately, I'm really only describing the tenant databases/tenant-specific files. So if you had a tenant database, there should be an agent that just is reporting on that tenant database.

As for separation of the application frontend it really is a risk assessment and culture thing. If the team understands that making sure you never cross streams of customer data is a critical requirement which is one of the first viability questions in the design then sharing really isn't too bad. If your team struggles with this or has recurring issues to this end separate application servers make more sense. Generally if you have tenants with data exposing another customer's data is a quick way to have trust in a product evaporate, I know I have had this happen as a customer where I was able to show a bug where I was getting another customer's accounting information in a cloud app which caused me to terminate the contract.

If you guys are minding the soup of the application servers well enough there's nothing say you can't, there are many people that do it.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Salesforce has successfully deployed multitenancy SaaS at a huge scale, and they have all tenants sharing the same tables. Every row in every table has an Organization-ID column and all queries include the Org Id to keep the data separated. They built their SaaS on top of Oracle RDBMS but are now using PostgreSQL in some not yet publicized way.

Google for Salesforce multitenant architecture and you will find several presentations/videos where they explain much of this architecture. IMHO this is required reading for anyone designing any sort of multitenant SaaS because you are less likely to make disastrous mistakes when you can compare your solution to a known successful solution, and explain where your solution differs and why.

<comment><USER7> > They built their SaaS on top of Oracle RDBMS but are now using PostgreSQL in > some not yet publicized way.

How do you know that?

<comment><USER8> There have been published reports that they are trying to move to PostgreSQL specifically, and off of Oracle more generally. This is an example (with links to some others): [http://fortune.com/2016/05/11/salesforce-two-software- worlds...](http://fortune.com/2016/05/11/salesforce-two-software-worlds/)

<comment><USER9> Interesting, but I am surprised by the quote:

"A source with knowledge of the effort said a database change could give Salesforce flexible technology that could be more easily used across many data centers."

I though Oracle did pretty much everything, but cost a fortune.

</comment></comment></comment></comment><comment><USER10> The articles mentions the approach to have one schema per tenant but sadly does not mention this again afterwards.

Are there serious issues with this approach I am not aware of?

<comment><USER11> Craig from Citus here. There are a number of issues with one schema per tenant, the biggest one is that at a larger scale Postgres will mostly just not work anymore. Things like pg_dump start to fall over and while this has been improved some, there is still an upper limit somewhere between 1,000 and 10,000 tenants. Further having to then run schema migrations against all of them can be quite painful. There are tools that help on the schema migration front, but what we've seen is that again at scale things start to break. If you'll only ever have 100 customers then by schema can work for you.

<comment><USER12> Performance, management, SLA are some big issues with any "SQL as a service" project. How can you garuntee 1) disk utilization per tenant 2) CPU utilization per tenant and 3) transaction volume per tenant? Most simply, I don't believe you can, and we concluded it's simply not worth going down this path of shared, multi-tenant database (postgresql not withstanding, any RDBMs would have the same issues).

Our conclusion was that the only way to get the required level of management per tenant, and to support truly massive number of tenants, was to use an inprocess database over https ie SQLite and Apache. But, SQLite has an image problem, it's everywhere, and nowhere. It's built with some fundamentally different decisions than other databases, and isn't traditionally used for web applications.

So that's the course we took, links in my profile for more info.

<comment><USER7> > use an inprocess database over https ie SQLite and Apache

Why not, but you introduced a whole bunch of new issues. SQLite only supports a single writer at a time. This is a problem if you have a lot of users on the same tenant. This is also a problem when you need to create an index, for example, which is not a background operation.

<comment><USER12> Indeed there are trade offs, and high write applications are a weak spot of this approach. But for low to medium write applications (ie most applications?), SQLite WAL [1] option performs really well. We implement application level caching via a X-Query-Cache header[2], in that case, you're serving directly from redis. This set up can scale really, really well.

[1] [https://www.sqlite.org/wal.html](https://www.sqlite.org/wal.html)

[2] [https://www.lite-engine.com/docs.html#caching](https://www.lite- engine.com/docs.html#caching)

</comment></comment></comment></comment></comment><comment><USER13> Multi-tenancy at scale with RDBMS is just hard to do. Once you get to certain volume, you just have to have different data stores for different needs. Only a subset of business require ACID properties so you would use RDBMS for those and for the rest choose a NoSQL stack that has the least resistance to ramp up WRT team skill set.

You can get away without using NoSQL but you probably would end up spending time and money maintaining several DB clusters, migrations, handling replication lags etc.

<comment><USER8> > Only a subset of business require ACID properties so you would use RDBMS for > those and for the rest choose a NoSQL stack

While ACID is an important and nice set of properties of RDBMS's, its not the only reason to choose them; its a lot more adaptable to changing query patterns and needs than less-structured document-oriented datastores. There are sometimes performance and other reasons to choose some non-relational datastore for a particular load, but "don't need ACID guarantees" is, itself, an insufficient reason for abandoning the RDBMS model for NoSQL (don't need ACID guarantees, of course, is a _necessary_ condition to selecting a non-ACID store, but not sufficient to choose one.)

<comment><USER13> ACID was just an example. Thanks for clarifying it though.

</comment></comment></comment><comment><USER14> What are best practices for gracefully allowing end users to use a single login for multiple of your SaaS tenants when the tenants are in separate databases?

<comment><USER15> I'd say OAuth, like StackExchange does. Then you can run your own authentication and/or accept others like Google. In my experience (we run a db-per-tenant service, with OAuth for internal support users), it works fine.

</comment></comment><comment><USER16> to;dr denormalise a bit so that primary keys represent a full ancestor path to the "usual" primary key, making shardingnand collocation of customers much simpler

And use Postgres:-)

Seems a nice article but I kind of assume that to be basic knowledge amount DBAs ?

<comment><USER17> How does this compare to having a separate Postgres schema per tenant? You'd need to make your app a bit more complicated (to set the right schema before every query), but you won't need to denormalise.

<comment><USER16> This is really a judgement call. If you are expecting volumes of tenants in the thousands, a schema per tenant is slightly crazy. I would personally only think of a schema or database per tenant if I had either customisation issues (If most of the sale is in professional services) or worse if we have data regulation issues (an Indian tenant, an EU tenant and a US tenenat would be challenging to manage the complex data transfer laws around, and it might be easier to have geographically located servers)

But unless you have few small expensive clients then I cannot see much value in multi-tenanting via schema or database. It's hard enough keeping that in mind when using Dev/UAT/prod schemas !

</comment></comment></comment><comment><USER18> I use uuid as primary key when I plan for scale and future sharding. It's negligible performance hit of at all and I can move entire datasets from one db to another without worrying about references.</comment>


Pycoder's Weekly - <AUTHOR> http://pycoders.com/

<comment><USER2> What about this one?

<http://www.pythonweekly.com/>

</comment><comment><USER3> An RSS feed would be nice, I think. I'd prefer to keep my email inbox uncluttered.

<comment><USER4> There will be RSS for the issues. That is the first item on the todo list after we get the first issue released.

</comment></comment><comment><USER5> Are you planning to offer something better than <http://www.pythonweekly.com/> ? In other words, why should I subscribe to _another_ weekly python digest? :)

<comment><AUTHOR> It will be interesting, but we plan to offer a more immersed and curated discussion, with images and media where possible.

It will come down to if you like the curators and share their passion for python development.

pythonweekly.com is awesome, but that doesn't mean it can't be improved, and competition doesn't hurt.

<comment><USER6> _and competition doesn't hurt._

Usually, yep!

A rising tide lifts all boats, and the increase in newsletters is validating them as a viable option for hesitant subscribers.

I run several newsletters (most famously <http://javascriptweekly.com/>) and I'm delighted to see all of these new *Weekly newsletters (although, admittedly, I'm kicking myself for being too generic with the 'weekly' suffix) because they're helping to validate my entire business model and subscriber #s keep leaping up! :-)

<comment><AUTHOR> :)

</comment></comment></comment></comment><comment><USER7> Can you give some more information about your project? Who are you guys? Why would I be interested in your opinion on what is good? What topics are covered? What is an example issue?

Right now, I only get the smugness:

"One e-mail each Friday(starting Feb. 17th), _easy to unsubscribe, only god knows why you would want to do that._ "

<comment><AUTHOR> Pycoder's Weekly, will be a weekly newsletter for those interested in python development and various topics around python. It will be broken down into sections on topics regarding web development, python news, python projects and general python discussion.

We are both full time python developers and enthusiasts, if you would like to know more about us, we have provided our twitter accounts at the bottom of the site.

We are just gearing up for our first issue (17th of February), I promise the smugness will be justified.

You have outline some good points, We will take them to heart and improve the site accordingly.

Thanks!

<comment><USER8> You should put that same text on the website. I signed up immediately, but then had questions as to whether or not I should have.

That text would have sold me without a doubt.

<comment><AUTHOR> The homepage has been updated. I hope this reflects our passion about doing the best job possible. :)

</comment></comment></comment></comment><comment><USER9> i used to get a weekly python email. what happened to that? [searches email...] python-url from gabriel genellina.

here's an example - <http://lwn.net/Articles/454574/> \- which looks like cameron laird's email to subscribe, but i can't find anything at <http://phaseit.net/> to indicate if it's still in operation.

hmm. the latest i can find is aug 25 2011, which is the last one in my mailbox. so i guess it died.

<comment><AUTHOR> Perfect opportunity to join in a new mailing list, that won't die out.

</comment></comment><comment><USER10> Sometimes I think mailing lists are the future aswell as the past. Something very elegant about them, moreso than something like google reader. The suckless-tools mailing list (<http://suckless.org/community>) is a great example.

<comment><USER4> I think the real value is in the curation, which is something you don't get from google reader.

Essentially, if a list is curated well enough, you know you will be able to find things of value on there and I know for me, not having to rummage through my rss feeder has a lot of value.

Its the same reason why I read hacker news, better curation then my rss reader.

<comment><USER11> _Its the same reason why I read hacker news, better curation then my rss reader._

If you want to take it one step further sign-up for my Hacker Newsletter (<http://www.hackernewsletter.com>) ;)

<comment><USER4> Already there my man :)

</comment></comment></comment></comment><comment><USER12> Add a link to the current issue of the newsletter, so folks know what to expect before signing up.

[EDIT: I see the first issue will be the 17th, cool; well maybe add a link to that when it comes out]

<comment><USER4> We will, but there currently is no current issue, first issue is on the 17th.

We expect there to be archives of the individual issues that you can browse before you signup.

<comment><USER12> Sounds good. Any example content you can put on the signup website now (a single sample story, a sample contents listing, anything) might go a long way in convincing people to sign up.

</comment></comment></comment><comment><USER13> Nice project.

Will you be accepting contributions from readers(May I contribute)?

If so, where could you be contacted(other than twitter(I don't tweet))?

<comment><USER4> Hey, not 100% sure what we are doing about contributors yet, but feel to shoot me an email at firstname.lastname@example.com.

</comment></comment><comment><USER14> I would not want to sign up without seeing a sample.

<comment><USER4> There will be samples as soon as the first issue is sent out, in the mean time you will have to trust us!</comment></comment>


LeBron James Signs Unprecedented Lifetime Contract with Nike - <AUTHOR> http://www.bloomberg.com/news/articles/2015-12-07/lebron-james-signs-unprecedented-lifetime-contract-with-nike <comment><USER2> > _His lifetime deal with Nike could eventually become something similar to > Michael Jordan's. Jordan, 52, is officially the chief executive officer of > the Jordan Brand, which continues to release new shoes. Sales of Air Jordan > brand shoes topped $2.6 billion last year, according to Forbes._

I had to read that last figure twice...the first time, I thought it meant _$2.6 billion total_ , which seems like a reasonable amount of revenue for one line of shoes...but _per year_? Named for an athlete who has long been retired? Half a billion for the next great player (though of course some don't think LeBron will necessarily surpass Jordan's legend) seems like a bargain for Nike.

<comment><USER3> Hands down, Air Jordan is the best logo ever created. Designers might not think so, but people bought $2.6 million worth of products last year just because of it. It's hard to beat that.

<comment><USER4> Incidentally, the logo is called "Jumpman", and it's actually based on Jordan doing a ballet grand jeté to make it look like a more prodigious jump than his usual style.

[https://en.wikipedia.org/wiki/Jumpman_(logo)](https://en.wikipedia.org/wiki/Jumpman_\(logo\))

</comment></comment></comment><comment><USER5> For people thinking this not hacker news related. I thought so too, but according to the guidelines it is.

> Off-Topic: Most stories about politics, or crime, or sports, unless they're > evidence of some interesting new phenomenon.

Thanks for sharing OP.

</comment><comment><USER6> I'm as impressed or more with Under Armour snagging Bryce Harper, Tom Brady, Steph Curry and Jordan Spieth (arguably the top players in their sports currently).

<comment><USER7> Lebron sells more shoes than all those guys combined.

<comment><USER8> I dunno, Brady's Ugg game might have him topped... (kidding)

</comment></comment></comment><comment><USER9> Hasn't Derrick Rose signed a lifetime contract with Adidas a few years back?

</comment><comment><USER10> That is a lot of sneakers.

</comment><comment><USER11> Hacker, news?

</comment><comment><USER12> First of all how is this a hacker news? Second I've seen these shoes and I'm no basketball buff but wtf?! Lebron nike shoes are so "UGLY or SUPER UGLY" they're in no where near the cool designs of those Air Jordan shoes. That Under Armour branded shoes those are cool. Peace out!

</comment><comment><USER13> Am I the only one who has never heard of him?

</comment><comment><USER14> "Air" Jordans will make me jump higher and win championships. "Something" LeBron's will make me sound like a Buick.

</comment><comment><USER15> How can hackers profit from endorsement deals like this? If any software or hardware marketers are interested, please get in touch.

<comment><USER15> Seriously? no sense of humor...

</comment></comment><comment><USER16> Ah, Nike. The company with worse fanboys than Apple.

Nike managed to conceal the fact that Air Jordans were inflated with sulfur hexafluoride, not air. They needed a big molecule that wouldn't slowly leak through the bladder. It took them 14 years to come up with a bladder lining that would hold nitrogen.

<comment><USER17> Might be better to cite sources with incendiary comments like this: [http://www.bloomberg.com/bw/stories/2006-09-24/nike-goes- for...](http://www.bloomberg.com/bw/stories/2006-09-24/nike-goes-for-the- green)

No idea if they tried to "conceal" that though. Seems to be around the same time CFCs were used in refrigeration.</comment></comment>


iPhone 6 battery dying at 50% life? - <AUTHOR> When my iPhone 6 hits about 50%, the battery/phone then reports dead and shuts off.  As soon I as plug in it goes right to +50%. <comment><USER2> So, this happens to me all the time also - from the month I got the phone (Nov/Dec 2015) in fact.

It seems to die with battery as high as 60%, though it only happens in cold weather conditions, and then immediately switch back on if plugged into a power source.

It's definitely cold-dependent in my case, and only started to show same problems again in November of 2016.

<comment><USER3> When did you upgrade to iOS 10? Immediately after upgrading to iOS 10, my wife's iPhone 6 (not 6s) started draining battery much faster, and automatically shutting off with 30% battery remaining. A couple weeks ago, she upgraded to iOS 10.2, hoping to fix the issue. The issue got worse. Now, she burns through about 70% of her phone's battery within about 2 hours (even if it's sitting in her purse).

Apple support says the remote battery test shows no problem. The Genius Bar guy ran a test with the phone physically present and confirmed the battery is showing some signs of age, but still within spac.

We live in Hong Kong. One of the phone support guys we've talked to in the past couple weeks checked for a recall for my wife's phone's specific serial number and said "There's no recall in Hong Kong for that serial number". When I pressed him about if the same serial number had a recall in other countries, he said something about New Zealand. However, he changed subjects quickly enough and didn't come back, so I couldn't really catch if there really was a recall in New Zealand for this serial number, or he was just mentioning a hypothetical possibility.

In any case, Apple isn't replacing our battery, and my wife doesn't have a pre-upgrade phone backup, so we are unable to test if the shortened battery life is just coincidental with the iOS update.

I took her to the phone market yesterday and we picked out an Android phone for her. Now I'm going through the pain of exporting and migrating what data we can, and manually migrating some other data.

As a long-term Apple user and shareholder, the botched MBP and iPhone 7 this year, along with the iPhone 6 battery issues and the lack of empathy shown toward my wife all make me more than a bit sad. I would have considered upgrading my wife's phone to an iPhone 7, except her frustrations with Apple support have made that a no-go.

</comment></comment><comment><USER4> [https://getsupport.apple.com](https://getsupport.apple.com)

make an appointment. they're replacing a lot of batteries these days. also, check with your credit card (if you bought it with one) as many cards extend the warranty by an additional 12 months. That might come in handy.

</comment><comment><USER5> I heard it's an issue with the battery. My wife recently took her phone in and they replaced her battery because it is a known issue. Might want to take it to the store.</comment>


Harley-Davidson announces its first electric motorcycle - <AUTHOR> http://www.chicagotribune.com/business/breaking/la-fi-hy-harley-davidson-electric-livewire-20140618,0,2307333.story <comment><USER2> > sounds like a jet engine turbine

Well, so much for the hope it might quiet down the disruption from at least some Harley riders.

Where I live, the noise from them is simply awful. I wish the noise ordinances would be enforced against them. Very selfish people, who inflict that upon the neighborhoods they ride through.

Plenty of other bikes perform just fine while keeping noise to tolerable levels.

<comment><USER3> As an owner of a fairly quiet motorcycle, I've actually considered swapping out the mufflers for something noisier just so drivers notice me. I've only been riding a few years, but I already can't count the number of times I've been cut-off or nearly hit by people in cars that simply didn't see me on the motorcycle. The benefit of loud Harley-style pipes is that other drivers will at least hear you when they don't see you.

<comment><USER4> Loud pipes save lives! I upgraded my pipes for performance reasons, but I'm not disappointed with the new sound.

</comment></comment></comment><comment><USER5> Their reasoning seems to be gimmickry. I've read several excerpts that state that they are considering this because the "young crowd is demanding eco- friendly vehicles". This is a terrible reason to just build an electric vehicle.

I think they need to take a cue from Tesla and make it all about the neat features that Electric vehicles can provide, such as quicker acceleration, no transmission, etc. Just my 2 cents anyways.

<comment><USER6> I agree, the one main nifty feature I can think of is consolidation of weight and ability to play around with center of gravity on the bike. For instance, on a sport bike you would want to shift the center of mass to the front, to keep the front wheel down and also to help steering. Shifting the center of mass down would also help with flicking the bike in and out of corners.

You can also design 2 wheel drive bikes! I honestly have no clue if it would be a good idea, but with electric power you can do that. It might be a death trap for all I know, but I think it would be really cool to have an all wheel drive bike.

The final advantage of electric bike is silence. That actually cuts both ways. You want to have a loud (reasonably) bike, so people notice you, and don't run you over. But riding full speed in near silence through a country road is quite surreal as well. Try getting your bike to 80+MPH on a backroad someplace, and kill the engine for a few seconds. It's quite an interesting experience.

<comment><USER7> Two-wheel drive bikes are actually a good idea. Some combustion-engine models actually exist. Mostly dirt bikes. US-based Christini make Honda CRF derivatives with a pretty cool front-wheel drive system. The difference might be hard to tell for people who haven't ridden dirt bikes, I'm not sure, but here's a video that shows a little bit: [https://www.youtube.com/watch?v=si- bI84SZKA](https://www.youtube.com/watch?v=si-bI84SZKA)

Yamaha also made a two-wheel-drive racebike prototype. Don't remember the name.

It's pretty interesting to read the ride reports on two-wheel-drive bikes. The handling seems to make a lot of sense ...

<comment><USER6> That's so cool! I want to ride one now! That's a really good use of electric bikes, I think. A super quiet, AWD, off road bike. Would be nifty for riding in the forest.

</comment></comment></comment></comment><comment><USER8> An electric motorcycle is the complete opposite of what Harley sells and how it succeeds.

Interesting that a company that's succeeded by selling... old technology is attempting to innovate again.

The V-Rod(attempt at innovation) was met meekly.

Buell, where they actually innovated, shut down a few years ago.

Harley Riders don't want innovation and change. They want noise and an image.

The 'young crowd' wants cheap bikes made to look tough and vintage. Hence the redesigning and marketing of the Sportster(entry model).

The rockstar lawyers want big heavy cruisers that can carry their leather shells loudly across the country.

<comment><USER9> I read several times that the situation for Harley Davidson is quite bleak, so this might be the try to extend to new markets and save the company in the long run?

<comment><USER10> They killed Buell 5 years ago and sold MV Agusta 4 years ago to focus on the HD brand. Is this the end of that plan or do they think the brand will stretch to encompass this new technology?

</comment></comment></comment><comment><USER11> Good luck to them. They'll have some pretty tough competition from Mission Motorcycles, Brammo, Yamaha, KTM and countless others.

Electric motorcycles are undoubtedly the future, but bikes are totally different vehicles than cars. They have very different use cases (recreation vs. utility), and riding on public roads comes with outrageous risks. I've been riding since my teens, and finally sold my road bike in order to preserve my life. I only do track days and regional racing now to get my riding fix.

Electric bikes will have an advantage in areas that gas bikes are weak, such as noise and emissions. For the road, battery technology needs to get much cheaper to compete with gas. In terms of performance, nothing beats an electric drivetrain. The only issue is with the massive weight of the current gen battery packs.

KTM electric dirt bike:

[https://www.youtube.com/watch?v=T-AzDZt1IcM](https://www.youtube.com/watch?v=T-AzDZt1IcM)

<comment><USER12> This is made in collaboration with Mission.

</comment></comment><comment><USER9> Although I would love to own such a e-motorcycle for daily commuting, as an avid cand daily cyclist I getting more and more afraid of all electric vehicles.

Until now I could usually rely on the fact that motorised vehicles are loud enough so that I can hear even when I can not see them. But with all these new e-vehicles it might happen that they are almost completely silent at low speeds so I as a biker would loose half of my senses. I rely so much on vehicle sounds while riding bike that I feel almost feel blind when I wear headphones and listen to music while riding bike.

So I hope that all those new vehicle will make at least some sound when they drive on the same road as I do.

<comment><USER13> My experience:

Unless the internal combustion engine powered vehicle is accelerating or travelling at highway speeds I don't hear the engine. I actually hear the sound of the tires on the road and displaced air. Modern engine/exhaust systems are so quiet that for all practical purposes they are silent.

The only thing I miss with an electric/hybrid vehicle as a pedestrian/cyclist is the reving sound from the engine when a vehicle starts moving without any other warning (not that you can actually hear that in many urban environments). My current opinion is that _all_ larger vehicles should make a noise when they start moving. That might have the nice side effect of making it possible to do away with those stupid backup alarms...

</comment></comment><comment><USER14> They'll probably need to make it louder. Without noise, a motorcycle isn't very intimidating.

The booming sound let's everyone know it's coming. It could probably be called a safety feature.

<comment><USER15> The "loud pipes save lives" excuse is a load of horse hockey, and everybody knows it.

<comment><USER16> Loud pipes save lives! Despite what you think in your ignorance. The AMA and thousands of motorcycle riders believe they do.

[http://motorcyclesafetynews.com/?p=878](http://motorcyclesafetynews.com/?p=878)

<comment><USER17> Did you even read the article in that link? The AMA believes no such thing, quite the opposite.

Saying that "thousands believe" does not make for a strong argument regardless. Thousands of people believe all kinds of things we collectively know aren't true (flat earth, didn't land on the moon, take your pick). I just lump loud pipers right in there with the flat earthers and anti-vaxers: people that believe what they want to believe regardless of the facts. You want to make a bunch of noise with your toy? Have at it, but don't try to pass it off as a safety feature.

</comment></comment></comment></comment><comment><USER18> How's it going to make noise? pot-atoe-pot</comment>


Ask HN: Who'd hire full stack developers - <AUTHOR>

I am a full stack web developer with roughly 10 years experience. I am comfortable with back/front-end dev as well as design work. I am also Ok with setting up and maintaining Unix servers.
My startup concept (https://nota.io) isn't taking off the ground so I am back on the job market.
What kind of place would hire me? <comment><USER2> Without a resume or other information, it's difficult to give you specific feedback, but the short answer us that if you can program your way out of a wet paper bag, there are many many job opportunities for you in today's market. If you were in Chicago I could point you to some leads immediately.

Around here, you best bets are to look at the monthly "Who is hiring?" thread: [https://news.ycombinator.com/item?id=7829042](https://news.ycombinator.com/item?id=7829042)

And the newer addition, the "Who wants to be hired?" thread: [https://news.ycombinator.com/item?id=7833250](https://news.ycombinator.com/item?id=7833250)

<comment><AUTHOR> Thanks for the input. For the geo location I am a french Expat in china which is why I am asking HN cause they aren't much opportunities around here. I am ok to relocate for the right fit.

</comment></comment><comment><USER3> Good morning!

I'm not in a position to hire anyone, but from my experience reading the HN Hiring Threads and such it seems like sometimes like your particular expertise so far would be good to list on here as well (while not all employers are like this, I do see a trend of folks not really taking a closer look if you aren't already using the same technology they're using in their company).

Additionally, I don't know if you want folks to contact you using your Nota Facebook or Twitter account, but you may additionally want to list some sort of contact info in your profile so folks might be able to ping you directly (in case they aren't wanting to necessarily advertise directly in the thread).

Good luck and I hope you get some responses!

<comment><AUTHOR> Thanks. I can be reached at my nota.io email. My handle is manu.

</comment></comment><comment><USER4> You could check out heapsortjobs.com and create a profile there--don't know about your specific background, but it's exclusively for developers with frontend/backend + design and/or infrastructure experience.

PHP, Python, Ruby, and JS have the most job openings there.

</comment><comment><USER5> I would! I am looking for someone like you but the thing is Im just a little noone with my startup plan, I dont have money but if you are interested you can contact me on twitter at remarkerdotme

<comment><AUTHOR> I am just out of my own product right now so I can't dive in a non-paid project for the time being. Good luck with that tho.</comment></comment>


Ask HN: Why do you dislike Jira? - <AUTHOR> Jira seems to be a polarizing application. Some people love and swear by it, yet it seems most people (developers?) hate it. What are some reasons you think Jira is bad? What do you use as a project management / agile tool instead of Jira (or wish you used)? If you like Jira, I'm also curious of those reasons. <comment><USER2> Jira can do everything but it can't do everything well. As soon as you step off the beaten path with it, and there are many ways of doing that, it becomes a nightmare to use. Managers mess around with workflows and custom fields that infuriate all the developers. Migrating and integrating items doesn't work because of the aforementioned modifications.

The UI can become frustrating because there are many ways to see the same data presented in a subtly different way so navigating to that view again is difficult. And the new single page application can be infuriating because you can't go back to filtered views and pages can take ages just to load the main UI elements.

</comment><comment><USER3> I love Jira, but it's easy to abuse because of its flexibility. I'd be hesitant to inherit a heavily customizes Jira configuration.

Sometimes tools need to be more opinionated to minimize the risk of user error, and Jira seems to fall into that category.

</comment><comment><USER4> Buggy outdated UI, does things differently from the rest of the applications I use and enjoy on a regular basis (for example it's own special text input markup), the tendency of organizations to add way too many custom fields and tags so that doing anything requires entering data into a massive form

<comment><USER3> The UI has been refreshed twice in recent years, including a few weeks ago. When was your most recent experience with the latest hosted Jira?

<comment><USER4> I haven't to be honest, the couple of companies I have been with that used it have used outdated self hosted versions. Maybe the licensing scheme should encourage organizations to upgrade rather that stay on an old version.

<comment><USER3> I always tell people that Jira used to be terrible and has been drastically improved (in terms of usability, stability, and features) in the last 5 years.

It's still not perfect at all and is too flexible to be a safe choice for all orgs.

</comment></comment></comment></comment><comment><USER5> you will run in to issues when not exactly doing the default way. you will find open feature request tickets about it from many years ago.

also multiple, equally bad text editors with no way to even paste a nested list from confluence correctly.

</comment><comment><USER6> Fer werk, Jira is best. It's got horrendous plugins, like an app store for cracvk addicts. It's use of the DB, is on par with kindergarteners. But it's awesome top down, bottom up, both in and side ways. It's only a tool, no different than the bone from 2001 - A Space Odessey. You can pretty much do anything with it, and it's about as elastic as an app can get. Maybe vim, or maybe notepad, or maybe MS Project, or maybe an Oracle DB, or maybe' Jesus. But one thing that does stand out is developers don't want to be held on by the crutches of anything that takes away from the developer flow, where 80% is sifting through hn, and the other 20% programming. Anything thrown into that equation just messes up the balance, tools will always be hated. But tools used will always be loved. You value your time, use a moleskin, skip a page, draw 7 lines, and each day write down what you have to do for work, for yourself, and for others, move things down everyday that you dont finish, make themactionable. Remember that first page we skipped, create an index, it's the most important page of your life. So make sure to keep it handy, Jira was loosely trying to solve this problem for everyone, it's become a monster -phun intended. Raptor Jesus! Arghhh-</comment>


What's up with this Twitter account? Is it a known bug? - <AUTHOR> https://twitter.com/i/moments/1145795417982078978 <comment><USER2> Based on the full URL of the tweet ([https://twitter.com//status/1145793001022808065](https://twitter.com//status/1145793001022808065)) I'd say somebody managed to reserve a twitter handle which normalizes to ''. Maybe a whitespace of non-latin script or character that get stripped in one system, but not another.

<comment><AUTHOR> But it's so curious how it works well, unless you link directly. Here it says this page doesn't exist.

</comment></comment><comment><AUTHOR> I seriously had no other way to frame it than putting on a moment, because although I can like it, I can't RT or link directly.</comment>


A new way of rendering particles - <AUTHOR> http://www.simppa.fi/blog/the-new-particle/ <comment><USER2> This is extremely unlikely to be a good technique (and it isn't new) but here are two alternatives. Even in the demo video, beneath the lens flares and other excess, the particles are aliasing like crazy.

First of all, particles like this are usually only a few pixels in size, so the shape doesn't really matter as much as the area. Because of this, I don't think there is much gained, but there is a lot lost since it aliases so badly.

Renderman actually creates particles as two bilinear patches that make up the same shape as the intersection given by these two triangles. You could do the same thing with a quad strip, which would still also take only 6 vertices. The gpu will deal with the quads itself, possibly by creating two triangles for each quad. This is very unlikely to be a performance hit since it does not affect shading.

A second way of creating a semi-transparent particle would be make a triangle strip that rotates around one center point. The center point has an alpha of 1, the outer points have an alpha of 0. The interpolation takes care of gradient transparency to the edges, and even with 5 outer vertices the shape + gradient should easily look good enough to hold up while taking up around 16 pixels.

Shadows - the best way in these situations to control shadows is usually to scale down the particle (or hair). Remember that the shape or look on a micro scale doesn't matter as much as the integral of the area * integral of the transparency.

<comment><USER3> "The gpu will deal with the quads itself, possibly by creating two triangles for each quad. This is very unlikely to be a performance hit since it does not affect shading."

No modern GPU (or API in fact) deals with quads. You can't guarantee all vertices to be coplanar when dealing with floating point values so you're much better off pushing triangles and not forcing driver to do conversion for you. Also if vertex data bandwidth is scarce in particle-heavy scene (so you actually care if it's 3 of 6 or whatever vertices), just push one vertex and expand it in GS like everyone else does.

<comment><USER2> I would love to see a case, even contrived, where planar quads produce artifacts from floating point precision but I think it would be extremely difficult to demonstrate it even on an enormous ground plane quad, let alone a subpixel quad.

I'm not sure why you would say no modern API deals with quads, what would you call the ability to draw quads and quad strips from gpu buffers in OpenGL?

Geometry shaders should work well, what I described is an approach for lower tech situations.

<comment><USER3> Pretty much any set of 4 fp vectors that don't share z coord will end up non- coplanar at some point (if you insist on going barycentric for texture iteration or if you plan on using halfplanes to do intersection or whatever). That's why HW tends to use fixed point internal representation in such places. But yeah, whatever, it's almost 1am and I shouldn't be spending time convincing people online that GPU developers know a thing or two about GPU. :) But at the very least trust me on one thing: quads are dead. They've been dead for a long, long time now, low-end or high-end, quads make no sense at all.

</comment></comment></comment></comment><comment><USER4> Seems like a very simple expansion on this technique would be to keep a rolling framebuffer, and blend the last particle draw with the current one. This would remove the flickering, display the fake alpha properly for still screenshots, and work for variable framerate.

Assuming your GPU will let you hold onto a previous frame's draw result (of just the particles) and blend it relatively cheaply with the new one, it wouldn't cost very much to implement. One full framebuffer blend should be much, much cheaper than blending the individual dots.

<comment><USER2> You could do that for the whole frame though. The reason it isn't done is because it is essentially a blur and it makes the motion streaky. You might think this would be ok for particles, but the issue won't be particle motion as much as it will be camera motion.

</comment></comment><comment><USER5> This is really cool. I'm curious how this will look on a Gear VR, since those run at 60fps and require every optimization they can get to maintain that on a cell phone.

</comment><comment><USER6> I have been looking for a better particle. Thanks! One strange advantage to putting new feature off, better way of doing them suddenly appear.

</comment><comment><USER7> I really like this. It would be nice to see some benchmarks versus a quad based solution where the quad is tessellated in a geometry shader with a fragment shader drawing the particle or using a texture. My guess would be that the bottleneck might be pcie but my knowledge of the gpu performance is a little outdated.

</comment><comment><USER8> How is it any different from the idea of voxels?

<comment><USER9> A particle is a free 3D coordinate. Particle rendering refers to several visualization techniques to visualize a volumetric system which focus on minimizing per particle work load:

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

A voxel is a value in a 3D lattice.

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

A particle system could be used to visualize a voxel field, of course, but their application range is far wider.

</comment></comment><comment><USER10> If this sounds interesting to you I suggest also checking out TXAA. It exploits a similar concept to get high quality cheap AA.

</comment><comment><USER11> This brilliantly insightful heuristic will work well for showing off point clouds in WebGL.</comment>


Sharp X68000 - <AUTHOR> https://en.wikipedia.org/wiki/X68000 <comment><USER2> X68K is super-interesting. It's hard to summarize it without sounding like you're just making stuff up to troll retrogaming/retrocomputing enthusiasts. I mean, imagine running into a post like this on Reddit or whatever:

"Did you know that the company behind the Bomberman and Adventure Island series made an MS-DOS clone, but it was for a 68000-based computer that had proper arcade-tier graphics and sound hardware in it? Yes, they were working with NEC at basically the same time on PC Engine and PC-FX, but the computer was a completely unrelated Sharp design. In addition to having better arcade ports than any other system at the time, it had a thriving doujin scene. One of these doujin games was an enhanced clone of Sega's version of Tetris, which inspired the creation of Tetris: The Grand Master."

</comment><comment><USER3> Another Japanese 68K machine from the same time: Sony NEWS (network engineering workstation). This one was System-V like, not DOS-ish.

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

For context, this was probably in response to the Sun 3, also 68k. Sun's foresightful motto was, "the network is the computer," which maybe explained more of the Sony effort.

[https://en.wikipedia.org/wiki/Sun-3](https://en.wikipedia.org/wiki/Sun-3)

<comment><USER4> Hmm. Sun had a windowing system called "NeWS". [https://en.m.wikipedia.org/wiki/NeWS](https://en.m.wikipedia.org/wiki/NeWS)

</comment></comment><comment><USER5> Anyone looking to dabble with similar 68k machines might enjoy the MiSTer FPGA Console, which also re-implements the X68000:

[https://github.com/MiSTer-devel/Main_MiSTer/wiki](https://github.com/MiSTer- devel/Main_MiSTer/wiki)

[https://github.com/MiSTer-devel/X68000_MiSTer](https://github.com/MiSTer- devel/X68000_MiSTer)

It pairs a Cyclone V with dual-core ARM, a HDMI scaler and SD-RAM for latency.

It's just an incredible project, in breadth & depth.

<comment><USER2> Unfortunately, the MiSTer X68000 core isn't very usable yet. The upstream project has been updated and the author seems open to the idea of maintaining a MiSTer port but doesn't have the hardware.

<comment><USER5> Thanks for the info! I hope that can change very soon.

I got into the MiSTer for the Amiga minimig core, watching the project develop has been really enlightening, for example, the wildly interesting MSX completely passed me by as a child in the 1980s.

</comment></comment></comment><comment><USER6> My parents had a black x68000 of uncertain modification. It was worth a few yearly incomes in early nineties Russia. It worked till 1996 or 1997, when hard drive failure put end to it.

A repairman that came to fix it took a look at it, and was like "is it even a computer?"

From that time, we still had a black NEC Ultralite by 2006. When I returned back to Russia in 2016, I got to know that parents threw it away. Again, that was an extremely expensive thing for early nineties.

Father liked to buy toys like that for mom on his business trips to Japan.

<comment><USER7> >threw away

That hurt to read. They're quite valuable even today.

</comment></comment><comment><USER8> It's actually terrible how little content there is on Wikipedia regarding past hardware. I uploaded images of an 8086, the LCII, IIE, etc. and was gobsmacked at how bad the existing ones were. Come on people!

<comment><USER9> This site is so old it's almost a museum piece itself, but it is basically the Wikipedia of historical computers.

[http://www.old-computers.com/](http://www.old-computers.com/)

</comment></comment><comment><USER10> Some years ago I looked pretty much everywhere for one of these, but it was either impossible or not financially viable to get one. I wanted to try and run NetBSD on it, possibly opening it up as a shell account server.

I was studying computer architecture ad university and the reference processor was the Motorola 68000. Needless to say, we had to do various kind of exsercises without having the thing running [1]. The only thing the professors recommeded was an emulator, Easy68k i think, but it was super uncomfortable to use and it used to mess up jumps and condition evaluation (even in its own sample programs).

I ended up verifying the exercises using a Debian/68k virtual machine under Aranym. Needless to say, it was slow, but at least it was functional.

[1] Personal rant: it's "funny" how professor in the calculus classes in the first year expect you to "question everything" and not to "assume something is just true because the professor said so" but then you progress and have real- world topics and professors just wing it and say "meh, that's the reference processor for the course and for the exam, you are supposed to run samples in your mind or on paper, if you want to verify that what I'm saying is true get some m68k machine and run the code (good luck with that)."

<comment><USER11> The thing I loved about the 68k was how quick it was to wire wrap (breadboard) a fairly serviceable terminal sitch, from where one could bootstrap development of devices and then programs and then more devices. This was all pre-linux (but post-minix), but if you ignore the head-banging incidents, pretty straight forward.

</comment></comment><comment><USER12> An interesting machine. Dave Jones of eevblog did a great tear down of one [https://youtu.be/W40qGkp-mEU](https://youtu.be/W40qGkp-mEU)

<comment><USER13> His teardowns are hard to watch if you love vintage computers. He often does destructive things to them and you know they go straight into a landfill after the video is over.

If you want to see someone who lovingly restores and repairs vintage computers and actually gets them working again, check out Adrian Black on YouTube.

</comment></comment><comment><USER14> Many people were reminded of this machine when they first revealed the groove- in-the-middle design of the original PlayStation 4.

</comment><comment><USER15> Anybody interested in this machine, there is a Reddit for it

[https://www.reddit.com/r/sharpx68000](https://www.reddit.com/r/sharpx68000)

There's also typically one to play with at the annual demosplash competition at CMU.

</comment><comment><USER16> Why did Motorola stop working in CPUs?

<comment><USER17> They spun off the semiconductor business, that became Freescale, then merged with NXP.</comment></comment>


Designing a Fast, Efficient, Cache-Friendly Hash Table, Step by Step - <AUTHOR> https://www.youtube.com/watch?v=ncHmEUmJZf4 <comment><USER2> Talk is about SwissTable at Google and also covers dense_hash_set/map. Another recent related article on hashbrown[1] a port of SwissTable.

[1] [https://news.ycombinator.com/item?id=18630563](https://news.ycombinator.com/item?id=18630563)</comment>


Fact Checking Tesla's "Impact Report" - <AUTHOR> https://www.thedrive.com/tech/27484/fact-checking-teslas-impact-report <comment><USER2> The article claims Tesla is incorrect when they say that "the average ICE vehicle gets around 22 MPG", and counters with EPA stats showing that the average fuel economy of all vehicles in the US is 24.9 MPG.

But these aren't the same thing.

The set "all vehicles in the US" contains both ICE vehicles _and_ hybrid/battery-powered EVs. But Tesla is explicitly only talking about ICE vehicles, and Tesla doesn't specifically indicate whether they're talking only about US ICE vehicles or all ICE vehicles worldwide.

I'm not sure what the source is for Tesla's number, and it's entirely possible it's inaccurate, but The Drive's counter-argument makes an apples vs. oranges comparison.

<comment><USER3> >but The Drive's counter-argument makes an apples vs. oranges comparison.

I will go one step further, The Drive's number is just straight dishonest. It lists that number as "the average fuel economy of all vehicles in the US hit 24.9 MPG in 2017". If you click through to the EPA report it list that 24.9 number as for "all new vehicles". It also says the number was 23.6 in 2012. The average car on the road is roughly 10 years old so that 23.6 number is still too modern to apply to "all vehicles in the US". So if you subtract non- ICE vehicles and factor in that MPG has been improving, the 22 MPG number from the original report seems perfectly reasonable.

<comment><USER4> It's fair to compare Tesla's new cars with others' new cars. That's the benchmark. If someone didn't buy a Tesla, they would have bought another type of new car (though probably a new hybrid or plug in hybrid, which have even higher average MPG). Tesla is disingenuous here.

<comment><USER3> Except they aren't comparing their cars. They are trying to quantify the total carbon saved from their cars and other ventures like solar panels. People have no idea what a "ton of carbon" equates to, but saying it is the equivalent of taking 500k cars off the road is meaningful to the general population.

<comment><USER5> _People have no idea what a "ton of carbon" equates to, but saying it is the equivalent of taking 500k cars off the road is meaningful to the general population._

Is this meant to be an off the cuff remark, or is a ton of carbon and 500,000 cars meaningfully linked?

<comment><USER3> Thanks for pointing that out, I definitely phrased that poorly. The report said they saved "four million tons of carbon" and they equated that to "saving emissions from being released into the environment from over 500K ICE vehicles". They are basically converting one unit that is hard to understand "one ton of carbon" to a unit that people can relate to in "one ICE vehicle".

</comment></comment></comment></comment></comment></comment><comment><USER6> > Fact Checking Tesla's "Impact Report"

> It's no surprise that the electric automaker is having a positive > environmental impact, so why does it need to exaggerate the good and gloss > over the bad?

I have a similar view of this article as this article has of Tesla: Why does it need to exaggerate the bad and gloss over the good?

The only hard number it criticizes is the number Tesla used for the average mileage of the US fleet (25.4 vs 22) - nevermind that the higher efficiency would work in their favour: it would mean that the same number of Tesla vehicles displaces a _larger_ number of ICE-vehicles.

Oh, and the author doesn't like that the report includes both the to-date solar electricity generated by Solarcity (13.25 TWh) and the to-date electricity used to charge Tesla fleet (5.26 TWh).

There's lots to criticize about Tesla, but this article doesn't do a great job of it, in my personal opinion.

<comment><USER7> > Why does it need to exaggerate the bad and gloss over the good?

Car enthusiasts & journalists have a storied history of being biased against electric and/or self-driving vehicles.

[https://www.theguardian.com/media/2008/dec/24/jeremy- clarkso...](https://www.theguardian.com/media/2008/dec/24/jeremy-clarkson-top- gear-tesla-electric-car)

[https://www.tesla.com/blog/most-peculiar-test- drive](https://www.tesla.com/blog/most-peculiar-test-drive)

<comment><USER8> They have a far, far more storied history of being positive. Which is why Tesla, quite rightly, says in its 10Qs that it doesn't need to pay for advertising because it expects to generate positive media coverage.

</comment></comment></comment><comment><USER9> I really like Telsa's mission, but stuff like this is why they get a bad rap. I don't understand why they try to oversell everything. You've got a good product and are making a positive impact, don't squander it by making claims that can't be backed up.

<comment><USER10> > You've got a good product

They have a product their buyers like, but the car doesnt have buttons or a center console. "Good" is in the eye of the beholder.

Tesla has a weird situation that despite a product that breaks often and doesn't have niceties, their customers have a high satisfaction.

<comment><USER11> > They have a product their buyers like, but the car doesnt have buttons or a > center console.

You're not the target market. Really it's for people who don't have money for a model s/x who don't care about touchscreens and want to control the car from an app.

(fwiw: I'm not the market either, I want a dashboard)

What's kind of interesting is looking at older model S cars and searching back for what the UI looked like in the early years vs what it looks like now. Looks loads more modern now. These folks have upgraded their cars like their iphones throughout the years. The "niceties" are software and have just appeared over time.

<comment><USER12> The Model 3 has a large touch screen.

I recommend both of you to just go visit a Tesla store and do a test drive. At least it will help preventing the spread of misinformation.

</comment></comment></comment></comment><comment><USER13> Written by Ed Niedermeyer of "Tesla Death Watch" fame. This guy has been feuding with Tesla since 2008, and you can't miss the malice when reading TFA.

This guy can't get over the fact that Tesla hasn't failed. Makes me wonder how much he lost shorting the stock.

</comment><comment><USER14> Tesla has almost highhandedly kept the public interested in electric cars. By becoming a viable car company, there's been huge amounts of money put into research from their competitors alone. I don't think it's good for them to over exaggerate their personal impact, but looking at the overall scale of what they have done.... I don't care that their marketing team went overboard on something I wouldn't have read anyway. We all know what Tesla has done laid the groundwork for some very important work that otherwise wouldn't have a footing.

</comment><comment><USER15> " Tesla also compares crash statistics for Autopilot which, in addition to the comparative distortions mentioned above, is only supposed to be used on divided highways that are about twice as safe as non-divided roads."

This statement about Autopilot is flatly incorrect. AP has worked on every road and street I have driven on for at least a year without caveat. I'm not sure where he gets the "supposed to" from, but I have never seen such warning, nor does the car itself seem to have any significant problems navigating non- divided roads.

This is a terrible article that smacks of fear-lingering.

</comment><comment><USER16> Ugh, Neidermeyer...

He's been anti-PHE/EV for over a decade at this point.

[https://www.nytimes.com/2010/07/30/opinion/30neidermeyer.htm...](https://www.nytimes.com/2010/07/30/opinion/30neidermeyer.html)

He's been focusing on Tesla recently, but that's only because they're pushing EV production more than anyone else.

</comment><comment><USER10> Marketing.

But its 2019, if you still believe Tesla doesn't have ethics problems, you haven't paid attention or don't care.

<comment><USER17> I don't care. If I buy an electric car, it will be because it goes faster than a petrol car.

Get ready for the dated South Park reference. There is enough smug people who like to smell their own farts.

</comment></comment><comment><USER4> Tesla's report does not include the damage it does to the world by selling carbon credits it earns to polluters, cheaply—thereby enabling them to pollute more and defer cleaning up their own acts. I wonder if Tesla's sum contribution is net negative when viewed from this perspective.

</comment><comment><USER18> I'm not stating anything other than this website is owned by Time, inc. Time, inc owners is currently on several boards for the oil and gas industry.

[https://www.bloomberg.com/research/stocks/private/snapshot.a...](https://www.bloomberg.com/research/stocks/private/snapshot.asp?privcapId=22992797)

<comment><USER19> "The Drive" website... doesn't seem to mention "Time, Inc." anywhere, and your link is to an overview of "True Multimedia Co. Ltd.", described on that page as:

`True Multimedia Company Limited provides high-speed multimedia network services in Thailand. `

... which _seems_ completely irrelevant.

Maybe provide better references? :)

<comment><USER18> Thank you for visiting one of the sites within the network of sites of Time Inc. and its subsidiaries. Ads delivered on these sites may be delivered from participants in the Digital Advertising Alliance's (DAA) Self-Regulatory Program, whose goal is to provide you with enhanced notice about online advertising practices and choices about the ads you see.

<comment><USER19> k. What's with the link to the Thailand place?

<comment><USER18> Corrected link was below. The owner of Time, inc is on several traditional Energy and Gas boards.

<comment><USER18> This may help you understand the relevant facts:

[http://fortune.com/2018/11/09/fortune-sale-chatchaval- jiarav...](http://fortune.com/2018/11/09/fortune-sale-chatchaval-jiaravanon/)

</comment></comment></comment></comment></comment></comment><comment> xkcd-sucks "Impact Report" is a poor choice of words in light of all the autopilot crashes

<comment><USER20> If by impact you mean the very very very few AP crashes

<comment><USER21> >the very very very few AP crashes

(tl;dr : 'very very very few' is entirely relative )

I don't know if comparing frequencies is such a hot idea with regards to a paradigm shift.

If that's the comparison you want to make, the few AP accidents that _have_ happened are infinitely more than came before Tesla.

Since there is no A/B comparison to make in order to judge severity, maybe we should treat _every_ AP accident as important and research worthy until there is a standard to compare against -- unless of course you want to compare AP to non-AP crashes, but that metric is mostly only useful for marketing AP towards people, not improving the system itself.</comment></comment></comment>


Perl script to dump the urls submitted by an HN user - <AUTHOR> https://gist.github.com/939629

<comment> mike-cardwell Without the crazy dependencies:

      #!/usr/bin/perl
      use strict;
      use warnings;
      use LWP::Simple;

      my %urls = ();
      process( "http://news.ycombinator.com/submitted?id=$ARGV[0]" );
      print join("\n",sort keys %urls)."\n";
      sub process {
         my $html = get( $_[0] );
         $html =~ s#<a href="(http[^"]+)#$urls{$1}++#eg;
         process("http://news.ycombinator.com$1") if $html =~ m#More#;
      }

</comment><comment><USER2> Far from perfect (regexps on html???), but; it suffices to get latest 22 submissions:

      wget -q -O - http://news.ycombinator.com/submitted?id=adulau | grep -o 'title">[^<]*<' | sed -e 's/title">\([^<]*\)</\2 - \1/'

</comment><comment><USER3> What makes this program so small is the Scrappy library from CPAN, which gets most of its muscle from Web::Scraper and WWW::Mechanize.

I think you'll find if you try this program yourself, you're going to be spending a lot of time downloading and installing CPAN dependencies, few of which can likely be satisfied by your OS's package manager.

<comment><USER4> The `cpan` command line utility automatically downloads and installs dependencies when you use it to install a module. It's the rough equivalent (and precursor to) ruby's `gem`.

<comment><USER5> I very strongly recommend cpanminus (aka, cpanm)[1] over cpan now. It's zero configuration, lighter on memory use and much more straightforward for most uses.

[1] <https://github.com/miyagawa/cpanminus>

<comment><USER6> I'd also recommend using perlbrew+cpanm instead of using cpanm to muck with the system-installed perl, sometimes this can cause breakage for core system components that run on perl (and are only tested against the system-installed version of perl + packages).

<comment><USER7> > cpanm to muck with the system-installed perl, sometimes this can cause > breakage for core system components

Yikes. This would be why I don't share root with anyone who thinks it's a good idea to smuggle stuff onto a box without going through the system package manager (which is rpm or dpkg or the like, _not_ the cpan client or any other single-language ghetto).

<comment><USER6> Sorry. I meant that:

\- Installing stuff into system directories from through a second package management system (perl = cpan, ruby = gems, etc) is generally a bad idea (e.g. the apt-maintained perl libraries are not seen by cpan, so it will need to install those if there is a requirement for one of them in a cpan package you are installing).

\- Upgrading versions of Perl libraries that are used by system (outside of the official package management system) Perl scripts can cause unexpected results.

This is why perlbrew is useful. It manages self-contained Perl installations that you can switch between in your particular environment.

The only downside that I've seen is with system-installed scripts that use the "#!/usr/bin/env perl" method to specify which Perl to run. I haven't seen this, in particular with Perl scripts, but I ran into this with virtualenv + comix as a Python script with "#!/usr/bin/env python" for the shebang line (it blew up since my virtualenv didn't have py-gtk installed).

<comment><USER7> > manages self-contained Perl installations

That's what a lot of languages resort to, but as the proverb goes, now you have two problems. We instead make OS packages out of library dependencies that didn't already have them, so we have a way to legitimately deploy them to production servers.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Nice script would be even better with these two (virtually mandatory) lines near the top:

use strict;

use warnings;

<comment><USER6> Or:

      use common::sense;

<http://search.cpan.org/~mlehmann/common-sense-3.4/>

</comment></comment><comment><USER9> Anyone have a Perl script to get all my saved stories, with URL, title, and date?

<comment><USER6> It's a little rough, as I whipped it up in response to this article (it's something that's been on my todo list), but here it is:

<https://github.com/bsandrow/hn-profile></comment></comment>


What we've learned about marketing on Reddit (with real data) - <AUTHOR> https://www.indiehackers.com/@ceslami/500-signups-later-what-weve-learned-about-marketing-on-reddit-b2a31ea4c5 <comment><USER2> Side Note: The Link to their website, on Indiehackers, has a "copy/paste" link which has ProductHunt as the referring source, for their Google Analytics "?utm_source=product_hunt".

        https://www.wingsflightclub.com/?utm_source=product_hunt&utm_medium=learn&utm_campaign=how_to_launch_on_reddit&utm_content=homepage_link_intro

This is going to give them incorrect referral information, as all the IndieHackers.com referrals would fall under ProductHunt referrals.

<comment><AUTHOR> Good eye, thanks! Fixed.

</comment></comment><comment><USER3> Interesting, but a lot of what I see is just plain luck:

> A match made in heaven! This community has about 175,000 subscribers

> We got lucky with this one. Our product is specifically geared towards > travelers with a thrifty streak.

> successful marketing on Reddit is that it isn't perfectly reproducible. It > hinges on finding a community that is both aligned with your product's > value, and accepting of promotional posts.

It is trickier to apply this approach in communities 10 times smaller. If you start repeating the pitches you end up meeting people that frequent more than one community and the conversation degenerates into hostility.

<comment><AUTHOR> You make a good point - luck plays some a role. That said, where I think we got lucky was finding a good "community fit" (Step 1 from the article). It was up to us to execute well on the rest :)

In terms of audience size, I would expect smaller audiences to yield smaller results. Despite that, I think the message of the post is that building an authentic relationship with a community means you can grow alongside them over time. This means continuous feedback, new ideas, etc. All stuff that's useful to us as technologists and entrepreneurs!</comment></comment>


Goodbye node-forever, Hello PM2 - <AUTHOR> http://devo.ps/blog/2013/06/26/goodbye-node-forever-hello-pm2.html

<comment><USER2> This is much more powerful than forever. It is a higher level tool. Forever is just here to make your script start again after a crash. This looks like a complete production deployment tool.

And it seems great.

One of the problems newcomers face when starting with node is the deployment of apps. Currently, if you try to search for "the right way", you will find many different methods ranging from custom scripts, modifying your application in some way, to external tools like upstart and monit. Of course, if you use a PaaS solution like heroku, cloudfoundry or similar, some of this problems go away.

All this deployment possibilities are great, in their own way. Pm2 is not here to replace them. It is here to give you a good production ready solution without much hassle. You want to publish your app? Use pm2. If you are facing a larger project, with many special details, then you might consider a custom solution for deployment.

Personally, I am planning to try this out for various smaller apps that need to be up 'n running, but don't have time to setup proper production environments and maintain all those environments.

</comment><comment><USER3> At first glance, I read it "Goodbye node forever, Hello PM2". Turns out PM2 is a replacement for "node-forever" and not node itself.

</comment><comment><USER4> One of the things I love about the node community is the way it embraces the philosophy of Unix. To that end, I'll be interested to see how much adoption this gets - certainly looks useful, but it's doing a lot of things.

Case in point: 'forever' itself is essentially a convenience program built on top of the 'forever-monitor' API (oversimplifying somewhat, but you get my point). And while 'forever' may not use JSON config files, 'forever-monitor' does (I only mention that because of the comparison table in the article... FWIW none of 'forever' is written in coffeescript).

No disrespect to the devo.ps team - good work on releasing PM2!

<comment><USER5> I would not call it "embracing" at all. Node community suffers from NIH syndrome and tries to reinvent everything in JavaScript.

I love Node, my main products run on it. But I still use other specialized tools outside Node ecosystem to create environment for it. I use init/upstart/whatever is available on the machine to restart the process if it dies. I use stunnel to proxy SSL connections, I use HAProxy for load balancing.

I'm not saying this is a bad thing. Since 0.8 whose main goal has been to run on Windows, it seems that Node has taken a sideway path from Unix philosophy and decided to build everything into it, so that you can run the same thing on different platforms. A good thing is that everything is modular, so you don't have to use all those add-ons if you don't want.

<comment><USER4> > A good thing is that everything is modular, so you don't have to use all > those add-ons if you don't want.

That my friend is the essence of the philosophy of Unix. It has nothing to do with re-implementing things or actual operating systems - do one thing, do it well, and build complexity via composition.

</comment></comment></comment><comment><USER6> Awesome tool. This is something I was struggling with node.. I had so many processes starting with "node /...." that it was a real pain to track what was doing what, which one to restart, which ones are zombies, etc etc. I won't lie, this is actually one of the reason I was still hacking the backend with python/django.. the virtualenv, gunicorn and supervisor just made it awesome. I'll definitely give PM2 a try though.

To other node.js users: How do you cope with this problem? I know friends who by-pass all this by using heroku (or similar platform), is that what you do? What about managing multiple node projects on a single linode instance?

<comment><USER7> I use supervisor with all of my node.js deployments... It seems straightforward for me just to drop a new .conf script in, it's agnostic to what code it's starting/monitoring (I use it with ruby as well) so I'm confused as to what problems have you had using it with node?

That said, this looks pretty cool, I'm going to try it out.

</comment></comment><comment><USER8> What's wrong with init, upstart, runit, supervisord etc.?

Why does a process control system needs to be written in the language of the process that it is running?

<comment><USER9> To interact more deeply with apps of the same nature. Without doing this, features like native clustering can't be created.

</comment></comment><comment><USER10> Kind of off topic, but I didn't get what your company was doing. How does it fit in the ecosystem? Are you a replacement for tools like Chef and Puppet? To give you a little bit of background, I recently set up my Linode VPS from scratch, complete with upstart processes, a custom CI server, node staging and production environments, python and virtualenv, mongodb with daily backups via dropbox. Didn't find it too difficult even though I knew nothing before. I'm sure I made some mistakes and my infrastructure is far from flawless or scalable, but it seemed like I should be in your target market and I wasn't able to understand what you were doing after reading your website thrice.

<comment><AUTHOR> We haven't done a great job at updating the main site; we have a whole bunch of changes that will be pushed in the next week that should make things much clearer.

The core idea of our service is to go a bit further than Puppet and Chef. They're great tools, but that's what they are: tools, with pretty high barriers of entry. We let you describe your infrastructure (and automation) in a much more portable and straightforward way using readable JSON files (not unlike package.json). Want to add CouchDB to your server? Just add one line (`"couchdb": "*",`), we'll make sure this is done according to best practices (properly set up the init script, adding monitoring, following security guidelines...). And if you want to override our defaults, you can do so.

Hope that clarifies it until we get our new landing pages up.

<comment><USER10> ok, thanks for clearing that up. sounds interesting!

<comment><AUTHOR> Subscribe to the newsletter, we're opening up soon and will have a free tier for a couple servers.

</comment></comment></comment></comment><comment><USER11> This is seriously promising. When i first read the description at Github i was like "AHA, this is it.". The only thing holding me from using PM2 is the Coffeescript support. If you put CS support in this than it's a clear winner over forever.

<comment><USER12> Seriously. Why show a feature comparison chart that looks all amazing and then just leave off one thing... CoffeeScript? There isn't even discussion about why that is missing. Is there some bias by the OP for it?

<comment><AUTHOR> I can't talk for my colleague Alex, but we tend not to work with CS very much. I'm not gonna open the troll gates on that one, we've heard the arguments from both sides enough already. We tend to prefer writing stuff in regular JS and I think Alex thought it was worth mentioning we didn't support CS.

<comment><USER13> Any potential support in the future?

</comment></comment></comment></comment><comment><USER14> This looks great! The monitor feature looks interesting. We used node-usage for a while but it seemed to eat up a lot of memory. Maybe I could take a another look into it.

If you just want a cluster manager then i'd recommend [https://npmjs.org/package/cluster-manager](https://npmjs.org/package/cluster- manager)

</comment><comment><USER15> This is great. I just submitted a pull request to node-usage to add OSX support _, so hopefully we 'll be able to run PM2 in both production and local development soon.

_ [https://github.com/arunoda/node- usage/pull/5](https://github.com/arunoda/node-usage/pull/5)

</comment><comment><USER16> Nice work!.

This is a very good addition - I'm using forever extensively in production over many services for the last year and a half.

While it's great, it has a few corner cases which looks like you guys also bumped into and solved.

Can't wait to give this a go.

</comment><comment><USER17>
      $ pm2 kill     // let's simulate a pm2 stop
      $ pm2 resurect // All my processes are now up and running

Should that be "resurrect" and not "resurect"?

<comment><AUTHOR> We caught that one right before posting; I believe it should be fixed now.

</comment></comment><comment><USER18> This is wonderful - we've had a todo on our board for a long long time to write a very similar tool.

Goddamn I love the FOSS community. Thanks guys!

<comment><AUTHOR> You're welcome. We're launching (publicly) soon and are in the process of releasing a half a dozen such projects, from AngularJS dashboarding tools to full-fledged node.js frameworks. Stay tuned :)

</comment></comment><comment><USER19> This is really great. Forever is extremely useful, but this appears to be far more robust, can't wait to try it out.

</comment><comment><USER20> I wander how this will work together with: [http://nodefly.com](http://nodefly.com)

</comment><comment><USER21> What is the best way to start PM2 on boot? Should I just keep using a screen session?

</comment><comment><USER22> Anyone else turned on by the fancy tables and colors? :)

<comment><USER23> I pretty much instantly decided to switch over from forever when the screenshot. :D</comment></comment>


Can we stop killer robots? UN meets to debate possible treaty - <AUTHOR> http://www.newscientist.com/article/dn27339-can-we-stop-killer-robots-un-meets-to-debate-possible-treaty.html#.VTRk1ROUdFg

<comment><USER2> A completely empty and histrionic debate. There are over 100 million land mines deployed worldwide; they kill 4000+ people each year. Killer robots are out there, killing and maiming indiscriminately, and have been for decades.</comment>


Uh Oh, Arrington's CrunchPad Isn't Cheap - <AUTHOR> http://www.pcworld.com/article/169407/uh_oh_arringtons_crunchpad_isnt_cheap.html <comment><USER2> No need to read it - they suspect it will be $400.

</comment><comment><USER3> Arrington is smart. I am going to reserve judgment until I hold one in my hands.

</comment><comment><USER4> I don't think $400 is that bad actually.</comment>


Queue everything and delight everyone - <AUTHOR> http://decafbad.com/blog/2008/07/04/queue-everything-and-delight-everyone/ <comment><USER2> I've built quite a few apps that use queueing to do the heavy processing behind the scenes, and I've always used a polling system to check progress. But it always has felt like a half-baked solution.

Are there any patterns or documentation projects or books or tutorials or anything else out there that cover how to have users submit something into a queue system, provide immediate feedback, then provide accurate progress updating as the job is processed, then show the results, all without having the user refresh their process or navigate away and back again?

Let's say for instance, I built a service that lets a user upload 20 images at a time to be cropped and resized. Is there a commonly accepted pattern for alerting them of the resizing job progress as it is happening?

<comment><USER3> For users in a browser, use websockets for modern browsers, and long polling for older browsers (Socket.IO wraps up these solutions nicely)

For sending async results to other servers, use webhooks. They give you an endpoint to call when the job is done processing and you call it when you're done.

<comment><USER2> But that still doesn't really solve the whole progress reporting part of it. As per my example, the "job" would really be 20 individual cropping/resizing jobs. In order to know that the whole set of jobs is complete, there needs to be a checking job or something similar that looks to see out of the total number of jobs started, if all are now completed, and if so, tell the user.

Is there a pattern for that type of situation? Some sort of watcher pattern or master job monitoring pattern that allows accurate progress reporting?

<comment><USER3> Send progress events over your push channel. Push an event every 1% or 10% or whatever you need depending on what you need for your experience.

If you're talking about generic progress reporting from a tool that doesn't know what the underlying job consists of (i.e. it only knows "started" "done" "errored"), then I'm not aware of any pattern to provide an accurate progress meter. You could perhaps keep statistics on the length of past runs (like some CI servers do for build times), but it would really depend on your application whether users are willing to accept that those progress bars are just a guess and sometimes run over.

</comment></comment></comment></comment><comment><USER4> The implementation/operational complexity of a queue (assuming you don't just hammer it into your existing database, which can sometimes be a bad idea) many times outweighs the user having to wait an extra 200ms.

It's nice when you _have_ to have a queue for image/audio/video processing, page scraping, etc because then you can use the queue for other stuff, but for the most part, excluding large jobs, you can get away without having a queue for quite a while.

So if you have a queuing system, great, use it. If you don't, try to avoid building it until you really need it.

<comment><USER5> What's your experience with Databases as queues? I was interested in using Queue Classic (Postgres based) because SQL is so nice, plus databases are already quite good at not losing data.

<comment><USER4> My only real experience is with MongoDB, which we chose for queuing because we were already thinking of using it for our main document store. It flopped, entirely. Queue systems are generally very high write...you're constantly grabbing values while at the same time modifying them.

I think if we had used any *SQL database we would have been fine. Although they don't necessarily have high write compared to a lot of in- memory/distributed systems, they certainly do better than a global write lock.

I haven't ever used Postgre so I don't know of its queuing capabilities. If it has things like atomic modify-and-read, then you'll be fine. After the MongoDB debacle, I went to another company and we used Beanstalkd for a dedicated queue...couldn't have been happier. The protocol is dead simple, and it's so beautifully geared towards being a queuing system that I'll probably never want to go back to any other DB for queuing =]. Worth a shot if you need a queue and have the resources to run it, otherwise I bet Postgres will work just fine.

</comment></comment></comment><comment><USER6> I'm currently working with ActiveMQ. I try to think of it as multiple IRC networks. Channels as topics for users by users, servers as gateways to isolated materials/users, server global messages as topics for users by servers, server local messages as queues for users by servers and private messages as queues for users by users.

It is absolutely fascinating offloading a message to the queue and letting the back-end handle workflow and shuffling it to another queue for micro-tasking (such as in the article). In fact, the topic/queue paradigm has really shifted my whole view on services.

Forgot to mention the queue added a layer of security. Our front-end is now the same as spawning a shell in the server (as far as data access). If you can spawn a shell on the webserver, the server is isolated from everything except the MQ ip/port combo. This means that what was possible on the front end is the only thing possible on the back end (as far as penetrating data). I'm sure a clever person could get figure out a way, but for your average person, that will be a show stopper.

<comment><USER7> We use ActiveMQ and it's fine. It speaks STOMP which is nice for interop. It's JVM so it gets a little weird when it's out of memory.

We're also playing with Kafka which takes things in a different direction than the JMS-based systems like ActiveMQ. So far so good.

</comment></comment><comment><USER8> I understand the purpose of doing this, but in most cases I don't see any extremely simple way to implement it. Lots of decisions tend to revolve around whether the development/maintenance time spent doing something justifies the efficiency provided by it.

Especially if you're building a minimum viable product, if something on a server responds 10ms later than a queue implementation, but takes 1 hour to implement instead of 5, I am inclined to go with the 10ms delay.

</comment><comment><USER5> Something at work we use that's great for this is ResqueDelayable. Typically I see Resque tutorials extract bits of logic out into worker classes, but this adds refactoring/organization overhead. ResqueDelayable allows this non-queued work:

        def post_comment
            add_comment
            self.notify_followers # Could have lots of followers
            Analytics.record_new_comment # Unnecessary for api response
        end

to become queued work, with no real refactoring:

        def post_comment
            add_comment
            self.rdelay.notify_followers
            Analytics.rdelay.record_new_comment
        end

</comment><comment><USER9> FYI: Published in 2008. (Still true today, but I think we've learned these lessons now.)

</comment><comment><USER10> Makes me think of Meteor where changes to a document are reflected in the client immediately and then possibly rolled back if the the server-side equivalent change fails which typically would be very rare.</comment>


Ford to end almost all US car sales, focusing on SUVs and trucks - <AUTHOR> https://arstechnica.com/cars/2018/04/ford-to-end-almost-all-us-car-sales-focusing-on-suvs-and-trucks/ <comment><USER2> Many manufacturers only sell small cars as a way to get average fleet emissions numbers within complaince. If they can do that with bigger more profitable vehicles instead, this makes sense.

</comment><comment><USER3> This is a duplicate of [https://news.ycombinator.com/item?id=16926050](https://news.ycombinator.com/item?id=16926050) from yesterday.

</comment><comment><USER4> Interesting move. I think they see the writing on the wall for the car indicating a commoditized future of self-driving cars as a service and therefore the meat of the consumer facing auto business will be in vehicles used for recreation and utility.

<comment><USER5> That may have something to do with it. But it just reminded me that U.S. drivers prefer trucks and SUVs, [https://www.npr.org/2016/05/09/477301486/why- americans-are-b...](https://www.npr.org/2016/05/09/477301486/why-americans- are-buying-more-trucks-and-suvs-than-cars) \--- which is another reason I feel so out of step with American tastes. Even the Civic to me is a boat. Just give me my MGB.

</comment></comment><comment><USER6> This news rhymes a bit with events from the mid-2000s.

That said, I can see a future where most "full-line" automakers have 1 or 2 economy car models (e.g. Toyota Yaris and Corolla), a couple of crossover SUVs to occupy the mid-range, and a pickup / full-size SUV.

I don't see Toyota ridding itself of the Camry for now, or BMW trashing its 5-series.

People who have reached a certain age probably find getting into and out of crossover SUVs easier because the ride height doesn't require as much bending and lifting oneself.

In my case, a Honda CR-V is much easier to use than a Mazda 3.

</comment><comment><USER7> Maybe cars actually are on the way out, but I am reminded of a quote. I can't find the original, but it went something like this...

Executive: "Think about how much we'd save if we close a few factories!"

CEO: (with sarcasm) "Think how much we'd save if we close all the factories!"</comment>


Inkscape launches versions 0.92.4 and 1.0 alpha - <AUTHOR> https://inkscape.org/news/2019/01/17/inkscape-launches-version-0924/ <comment><USER2> See [https://news.ycombinator.com/item?id=18940568](https://news.ycombinator.com/item?id=18940568)</comment>


The New Man - <AUTHOR> http://www.simple-talk.com/opinion/opinion-pieces/the-new-man/

<comment><USER2> It's crazy what you can get away with if you simply look like you know what you are doing, and you speak with authority.</comment>