Bootstrap 2.0, From Twitter - <AUTHOR> http://twitter.github.com/bootstrap/?v=2.0 <comment><USER2> I am going to chime in being negative against the wave of positive feedback here.

Twitter has done well releasing this and when I first saw it ages ago it looked neat and fairly professional.

However, like a pop song which has been completely overplayed on the radio it has become tired and frankly a bit annoying. It has its uses offline to quickly get a demo up and running but it shouldn't be used on a live site. At least not in its entirety.

If you have to use this for your project due to convenience or lack of design skills then do everyone a favor and mix it up a little bit. Change the colors on the buttons. Avoid the black bar running along the top of your website. Just don't look 100% like a vanilla bootstrap site.

<comment><USER3> Bootstrap is not overused; just under customized.

In all fairness, what this proves is that there is a fairly large market for such packaged customization themes which are built thoughtfully and work on all resolutions.

<comment><USER4> I have filed a bug that was closed about this very thing. Bootstrap is very hard to customize because the variable color names are inane. Rather than define a palette of X many colors and then use that everywhere, bootstrap defines variables as @gray, @pink, @white, etc. If you want a light-on-dark layout, you need to redefine @gray as white, which makes no sense.

I proposed names like @primaryColor, @primaryColorLight, @secondaryColor, etc, but the tickets were closed. Yes, it's a lot of work, but it must be done. If you can define your four colors and have Bootstrap look entirely different, it goes a _long_ way to instant customization.

<comment><USER5> That's a shame - this is my main complaint about bootstrap. If you do plunge ahead and do a bunch of color customization, it also makes upgrading to new versions a pain.

<comment><USER6> I didn't even notice the LESS variables and built a dark theme in about 20 minutes by cascading over Bootstrap vanilla. Upgrading isn't an issue as long as you make customizations in a separate file that you simply include _after_ bootstrap.css.

<http://danneu.com/darkstrap/darkstrap.html>

</comment></comment></comment></comment></comment><comment><USER7> Yes, Bootstrap is great. Honestly, I love using it. But where are all the people that I used to see screeching about semantic markup? Because this takes things in exactly the opposite direction.

<comment><USER8> yeah, like using <i> for icons <http://www.w3.org/TR/html4/present/graphics.html#edef-I>

<comment><USER9> Thanks for pointing that out. That seems like an odd design decision.

Edit: I wonder what motivated it. "i" for images and no one uses it to italicize text anymore?

<comment><USER8> yeah my best guess is that "i" for "icon", it's a good use, from the w3c "their use is discouraged in favor of style sheets." so I guess it doesn't really hurt no one, but the purists, or am I wrong?

<comment><USER10> `i` is for "italic", and that quote means that you should be using `font- style` instead of an HTML element to make your text italic.

</comment></comment></comment></comment></comment><comment><USER11> Last week 2.0 introduced me to the world of responsive design. Converted our current project to it. Higher ups are pleased and it saved me from creating a second "mobile" site. I am a fan.

<comment><USER12> Yeah I was blown away when another dev converted our foundation site to Bootstrap, and I saw the width-detection & automatic "mobile-ification"

</comment></comment><comment><USER13> The coolest new feature? Bootstrap 2.0 is completely responsive. This is what it looks like on different screen sizes: [http://areyouresponsive.com/twitter.github.com%2Fbootstrap%2...](http://areyouresponsive.com/twitter.github.com%2Fbootstrap%2F%3Fv%3D2.0)

<comment><USER14> It may be my slow data connection, but it seems as though AreYouResponsive is not, in fact, responsive.

<comment><USER15> Here we go, recursion:

[http://areyouresponsive.com/areyouresponsive.com/areyourespo...](http://areyouresponsive.com/areyouresponsive.com/areyouresponsive.com)

<comment><USER16> Whoa. That freaked out Chrome in a bad way.

<comment><USER17> Same here. Latest Chrome build on Lion too.

</comment></comment></comment></comment></comment><comment><USER18> This is awesome! Major improvements since 1.4.

Even though the main use case for Bootstrap seems to be for rapid prototyping, any thoughts on using it for a production app (but perhaps custom-themed), instead of rolling a custom design altogether? It seems Bootstrap has matured to the level that it can be used as for most projects with little customizations if any. A lot of what I read in the comments imply that Bootstrap is great at prototyping an app and once that phase is over, you throw it all out and start developing a custom design based on what has been prototyped. Why can't one just stick with Bootstrap and customize it as needed?

<comment><USER6> Why would you think you can't? Once your app conforms to Bootstrap's markup, you already have a markup/class hierarchy that makes custom styling easy. There's a blog out there that shows Bootstrap sites in the wild and they're customized.

I converted my Bootstrap 2 theme into a dark one: <http://i.imgur.com/qm1iA.png>

I call it... Darkstrap.

</comment></comment><comment><USER19> Can someone compare and contrast Boostrap 2.0 with ZURB Foundation?

I've been using Foundation for a new project and am really digging the responsive layout features.

<comment><USER20> Bootstrap and Zurb are actually quite different, in my opinion.

Both are based on solid resets and (now) great, nestable, responsive grids.

Bootstrap is great for when you're not a designer and you need to get something out there that looks passable. It includes a lot of fully styled elements and have very nice typography and forms out of the box. I found Bootstrap a lifesaver to get something up at <http://www.eventsourcehq.com> quickly.

Foundation is great to use as the foundation of a website when you have design skills or are working with a designer. Using the grids and the defaults gives you a lot less to think about when getting the rough outline of a website done, but you won't have to start overriding or deleting a bunch of included styles once you want to apply your own. We've used Foundation as the base for our example project template for <http://www.webpop.com> and plan on making more foundation based templates.

In short:

Bootstrap when you want something styled out of the box. Foundation when you just want to quickly get the structure and layout going and then apply your own styles.

<comment><USER19> Thanks! That's the impression that I got from reading a similar thread about Bootstrap 1. I opted for Foundation because I want to get something reasonable together for prototyping, but also apply a full design later.

webpop looks awesome by the way.

</comment></comment></comment><comment><USER21> Some other useful css frameworks include <http://blueprintcss.org/> and <http://compass-style.org/>, if you are interested. That being said, I have used all three for different projects and have enjoyed working with bootstrap the most.

<comment><USER22> Having using Blueprint extensively, it's great if you're trying to get a basic grid going and not much more. It's super lightweight but doesn't offer the features of Bootstrap.

</comment></comment><comment><USER23> > With Bootstrap 2, we've gone fully responsive.

This would imply a fluid grid, which it lacks.

[http://www.zeldman.com/2011/07/06/responsive-design-i- dont-t...](http://www.zeldman.com/2011/07/06/responsive-design-i-dont-think- that-word-means-what-you-think-it-means/)

<comment><USER24> It has an optional fluid grid:

<http://twitter.github.com/bootstrap/examples/fluid.html>

In any case, fixed width layouts which adapt to screen sizes are also considered a form of responsive design.

<comment><USER23> Oh! Awesome.

</comment></comment></comment><comment><USER25> Love the new stuff - any reason why you removed the animation effects of button presses? I always thought that was one of the coolest pieces of bootstrap

<comment><USER26> I'm curious about this as well. I was checking out the 2.0-wip earlier today and all of the button animations remained intact.

<comment><USER25> Yeah, I saw it just a day or two ago as well and it was still there. I wonder if they're removing effects that aren't compatible across all browsers?

<comment><USER27> The relevant issue/rationale is here: <https://github.com/twitter/bootstrap/issues/1229>

I'm glad they got rid of it. It made the buttons feel "squishy" and unresponsive.

<comment><USER26> Ah thanks for the Issue link. I was digging around last night for an official answer but couldn't find one. Thanks!

</comment></comment></comment></comment></comment><comment><USER28> The custom module building I was surprised to find, even though I've been using the 2.0-wip branch for a few weeks:

<http://twitter.github.com/bootstrap/download.html>

(Bonus: note the use of ScrollSpy to pin the sub-menu on that page!)

</comment><comment><USER29> Has anyone compared this to the Skeleton responsive grid? I like that the styling on skeleton is more minimalist, but worry that I'm missing on some features from Bootstrap.

<comment><USER30> Seeing that the designer/developer of Skeleton (@dhg on twitter) is a designer at Twitter now, I'm sure there will be plenty of mash-ups between Bootstrap and Skeleton.

At least, it gives me something to hack on this weekend :D

</comment></comment><comment><USER31> Bootstrap is great for tools, apps where the functionality is more important than everything, which is great and I use it. But for regular client websites where design is crucial (and I'm sure it wasn't meant totally for this) is almost never usable in my case. Clients want very customized functionality and looks almost all the cases. So I end up using only a few things. But I'm sure this wasn't its original purpose.

<comment><USER32> I guess someone needs to make Bootpolish - a re-skinner for bootstrap elements.. The responsive grid and well layed out less templates are really what I see as the heart, so I'm guessing this would be well received!

</comment></comment><comment><USER33> My only fear is that widespread use of these kind of pre-designed frameworks might create a homogenized web.

I understand that you can re-skin but I'm thinking many folks will go with the pre-built look/feel.

Even so, this is awesome for getting stuff out quickly. Great job.

<comment><USER34> I had similar concerns when I first started noticing bootstrap used on random websites I encountered. However, I think bootstrap will probably help increase the lower bound quality of sites while designers pushing the envelope will continue to do so, without or without bootstrap as a starting point.

</comment></comment><comment><USER35> Here is the SASS & SCSS version of Twitter Bootstrap 2.0 <https://github.com/Brajeshwar/bootstrap-sass-scss-compass>

<comment><USER36> Thank you! I was looking for this, but it's kind of hard to through the insane list of forks.

</comment></comment><comment><USER37> Bootstrap 2.0 + WordPress = #win ? Anyone knows if there is any theme out there w/ Bootstrap?

<comment><USER38> I found two, but they are not worth mentioning. They just copy the graphic elements instead of using the CSS library. For a WP framework that uses a good CSS library, see xtreme-one (it uses YAML). This match (general CSS lib + wordpress theme) is great, I agree.

</comment></comment><comment><USER39> I had bookmarked this thread and had decided to give bootstrap a try. My other option was jquery (including jquery UI). I am mainly a programmer and not a natural designer.

After about a day or so of trying out to move my existing UI (of a fairly successful app) to bootstrap, I found it a bit limiting in some ways. The commonest one being to try and change the color of the nav bar.

Also the 'brand' style in Nav bar should support logos too. Perhaps provide a css code for it.

Also in general there is just one way(albiet good) you can do for all things, which I also did not like.

In a comparative way, jquery UI themes, give me a better default option over there. And I can choose a theme from several themes.

Another thing is that many of the bootstrap's components example 'TypeAhead' are again jquery plugins, for which you get competing options in the Jquery UI.

I also think, that creators of bootstrap are hurrying up with version numbers. 2.0 is a very aggressive call. In the light of, just a few months back, we just heard of bootstrap on HN. Opensource versioning has to more trustworthy than corporate versioning (a recent good example is node.js they are .6xxx . Jquery itself is still 1.7.xxx)

The above are my brief thoughts after playing with it for a day or so. Hope it helps somebody.

</comment><comment><USER40> I use bootstrap as the base for all my new projects for clients. You guys are fantastic! Thanks for open sourcing such a great project!

</comment><comment><USER41> I wonder why they have removed sortable tables. Not a hard thing to re-add if you need it, but why the hassle? I used them a lot as a designer as it is one of the most appreciated things for my clients from the desktop-application world who expect it as a given and disappointed when it's not available.

<comment><USER24> In the Google Group, Mark Otto mentioned that he didn't want to have it as a dependency (it was the only 3rd party plugin) and raised a concern with it having its own themes.

<comment><USER41> That explains a lot. It also breaks if any of the columns get too narrow. Rather than dropping the effort to further narrow it, it crushes the text of the label upwards so you are left with a set of vertically extended labels where there is ample space.

</comment></comment></comment><comment><USER42> I'm very happy to see this new version. I have followed the 2.0-wip branch since the very beginning. At my company we use Bootstrap for a lot of different project as a barebone WordPress template with few additions in order to handle the semantic classes (and id) generated by WordPress.

</comment><comment><USER43> Pardon my ignorance, but could someone give me a rundown of what bootstrap is, and how it works?

<comment><USER44> Pre-made css for design-handicapped people like me and web design framework for designers.

<comment><USER45> A massive boon for us has been the ability to rapidly prototype UI concepts for clients. People definitely prefer interacting with tangible objects over flat wireframes. The more complex the UI paradigm you're trying to represent, the more likely you should be using the bootstrap.

<comment><USER46> That.. hmm.. still doesn't really help me. How do you use it to prototype?

Is there a tutorial somewhere, or someone developing something?

<comment><USER47> For me, the Bootstrap-101 videos got me from "wtf do I do with this thing" to "oh, I get it now". The pacing was a bit slow for me, but overall I got a lot from the videos.

[http://webdesign.tutsplus.com/tutorials/complete- websites/tw...](http://webdesign.tutsplus.com/tutorials/complete- websites/twitter-bootstrap-101-the-grid/)

</comment></comment></comment></comment></comment><comment><USER48> On the topic of the responsive design module - when I view my project on an iPhone/iPad it shows the full screen version of the site, rather than the mobile version. However, it shows the mobile version on a samsung phone.

Is there a reason for this?

<comment><USER49> Yes, it is based on media queries on the available screen real estate with differences as <480, 768, 980 and 1200px.

The phone will pick out the smallest one. Try turning the iPad into the portrait orientation.

</comment></comment><comment><USER50> Anyone know if they have a CDN like they did for 1.4? I was using it on a test site with this link - <http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css> and it works fine but didn't see if they have a hosted 2.0 version yet.

</comment><comment><USER51> In your opinion, what is the mobile equivalent of Bootstrap or what combination of JS/CSS packages can function as a bootstrap-type jumpstart?

I have a personal project that uses Bootstrap but it pains me to use it on my mobile device.

The js templating (loading JSON data into the view) that I do is a necessary part but I'd be willing to hardcode.

<comment><USER52> Depending on what you're after, there's either the native app lookalike : <http://www.chocolatechip-ui.com/>

or you could go with a collapsible column grid along the lines of <http://fluidbaselinegrid.com/> where by you have the one code base for mobile and desktop browsers.

<comment><USER53> _Depending on what you're after, there's either the native app lookalike :<http://www.chocolatechip-ui.com> _

How is it compared to jquerymobile?

</comment></comment></comment><comment><USER54> This is great and all, but anyone have a link to the old documentation for 1.4? Don't want to upgrade quite yet.

<comment><USER55> You can view it locally. If you didn't already checkout from Git:

      git clone https://github.com/twitter/bootstrap.git
      cd bootstrap
      git checkout v1.4.0
      open docs/index.html

</comment></comment><comment><USER56> I've incorporated Bootstrap 1.4 to use its styling (fonts, buttons, etc) but I'd like to get into the responsive features of 2.0. How exactly does the grid layout work, how should I layout my content? Which columns should I use and how would they adapt to changes in device max width? Thanks in advance!

<comment><USER28> It's pretty much as easy as wrapping the content in .container, .row, and .spanN tags. The responsive part should take care of itself by collapsing horizontal elements into vertical arrangements, and adjusting widths to keep them within the viewport.

There are some edge cases for various components (such as the Bootstrap navbar) that require some special markup and Javascript to collapse intelligently.

</comment></comment><comment><USER57> I'm a big fan of the js widgets- jquery-ui is starting to look a bit old- fashioned and the design on the bootstrap widgets looks very clean. If you end up doing anything very complicated you'll end up fighting the css more than it helps you but I like that I can pick and choose modules.

</comment><comment><USER58> Glad to see that Bootstrap 2.0 is out. Been following along on the 2.0-wip for the last couple days and very impressed with the new Responsive Design.

One slight problem (Chrome, Mac OSX Lion): <http://i.imgur.com/SOrUZ.png>

<comment><USER59> Your browser is probably loading in the CSS and/or image assets from it's cache of what Bootstrap v1.4 looked like, thus looking mangled when it runs the 2.0 HTML structure.

A couple of refreshes (does Chrome have Shift + R for forcing reload without cache?) should sort it out.

<comment><USER60> Chrome, annoyingly, has never implemented hard reload.

</comment></comment></comment><comment><USER61> While I think Bootstrap is fantastic and helpful, my only worry is overreliance and under customisation, thus a decrease in creativity.

I would be a little bit sad if every new web app I visited overused Bootstrap and stuck to that now increasingly popular design.

</comment><comment><USER62> I was using 1.4 in my site and will update tonight. God bless you guys :D

</comment><comment><USER63> Is it just me that's getting a really slow generation time with this? Previous versions took around 1.2 seconds, while v2 is taking upwards of 4.5 seconds.

</comment><comment><USER64> Even if you won't use it for your project, the less source is a great source for best practices regarding browser quirks and rare rendering bugs.

</comment><comment><USER65> It would be great if they could work with jquery-ui because the tools that bootstrap provided also fit jquery-ui.

</comment><comment><USER66> Designing a new project with this... it's literally saving me about 3-6 weeks worth of work. Thanks @Twitter.

</comment><comment><USER67> Nice! I'll need to upgrade to this ASAP.

Anyone that's already done it - how easy is it to upgrade from 1.4?

</comment><comment><USER68> they seem to have removed the few sample layouts they had before which you could copy/paste to start a full page. or am i missing that somewhere on the site?

<comment><USER69> <http://twitter.github.com/bootstrap/examples.html>?

<comment><USER68> ummm... yeah - why didn't I see that before?

Thanks!

</comment></comment></comment><comment><USER70> is it just me that can't find them, or is the documentation on form fields not included on v2 docs? I know they were there on previous docs.

<comment><USER71> <http://twitter.github.com/bootstrap/base-css.html#forms>

<comment><USER70> ah, thank you. don't know how i missed that.

</comment></comment></comment><comment><USER72> Nice, but still missing DatePicker...

</comment><comment><USER73> this is like a non-designer's wet dream, i'm soaked.

</comment><comment><USER74> Been using Bootstrapwip2 for a few days on <http://sharemegithub.com>

I wonder if we can look forward to mustache being implemented in in 2.1?

<comment><USER75> I hope that's not why it's down.

<comment><USER76> This appears to be the correct link: <http://shareme.github.com/>

</comment></comment></comment><comment><USER77> This is awesome. Thank you Twitter.

</comment><comment><USER78> Bootstrap rocks!!

</comment><comment><USER79> Very nice indeed. I will consider Bootstrap for my next project. Very simple to implement.

</comment><comment><USER80> This looks amazing! Can't wait to add this to some of my already-in-the-works projects. Was hoping you'd release this before I had to launch ;)

</comment><comment><USER81> That Kippt site... on Bootstrap... c'mon!!!!</comment>


Edward L. Bernayse: The Engineering of Consent (1947) [pdf] - <AUTHOR> http://classes.dma.ucla.edu/Fall07/28/Engineering_of_consent.pdf <comment><AUTHOR> must read for anyone involved in engineering smart cities[0]

[0] [https://arxiv.org/pdf/1607.00509v1.pdf](https://arxiv.org/pdf/1607.00509v1.pdf)</comment>


Large-Scale Assessment of a Smartwatch to Identify Atrial Fibrillation - <AUTHOR> https://www.nejm.org/doi/full/10.1056/NEJMoa1901183 <comment><USER2> For some years I have tracked my AF using a Polar chest band, which dumps heart rate records into my phone via bluetooth. Then I ship it to a server in influxdb and render it with grafana.

It's all very non-medically approved but I have found it super useful to see the benefits of exercise (in my case anyway) in managing and somewhat taming my out of rhythm periods. I can get an idea how hard to push my heart before it goes out.

<comment><USER3> Can you actually visualize the heart rhythm using a Polar band? For some reason, I always thought they only sent the pulse rate.

Or are you able to detect AFib using pulse rate alone?

<comment><USER2> Yes, it is clearly obvious just from pulse rate when my heart goes out of rhythm.The rate suddenly spikes and becomes highly variable. It's just as obvious when it drops back into rhythm. For me, that's typically a few minutes or hours after it goes out.

</comment></comment></comment><comment><USER4> This is the study Apple did with Stanford. It's based on the photoplethysmograph (PPG) sensor from the pre-Series 4 Apple Watches. Presumably the new Apple heart study announced will also use the ECG in the Series 4 and later [1].

[1] [https://www.apple.com/newsroom/2019/11/apple-launches- three-...](https://www.apple.com/newsroom/2019/11/apple-launches-three- innovative-studies-today-in-the-new-research-app/)

</comment><comment><USER5> You can check the waveform with one of these: [https://www.amazon.com/EMAY- Portable-Monitor-Software-Compat...](https://www.amazon.com/EMAY-Portable- Monitor-Software-Compatible/dp/B072DVN9GV)

</comment><comment><USER6> This seems to have been part of the Apple Heart Study?

<comment><USER7> Yes. Abstract talks about iPhone and funding by Apple.

Here is Apple Newsroom [https://www.apple.com/newsroom/2019/03/stanford- medicine-ann...](https://www.apple.com/newsroom/2019/03/stanford-medicine- announces-results-of-unprecedented-apple-heart-study/)

</comment></comment><comment><USER8> does anyone know how informed consent took place for this study? it seems like it would be required, but it also seems really difficult to do at this scale.

i tried to find a mention of it in the abstract or the clinicaltrials.gov entry, but was unable to find it.</comment>


Patent Trolls Drive App Developers from U.S. Market - <AUTHOR> https://www.eff.org/deeplinks/2011/07/patent-trolls-drive-app-developers-u-s-market

<comment><USER2> _It should come as no surprise then to hear reports that developers are pulling their apps from the U.S. app stores._

It begins. "Only in America" becomes "...only, not in America".</comment>


Tesla Motors pays huge fine for lacking emissions Certificate of Conformity - <AUTHOR> http://green.autoblog.com/2010/08/25/tesla-motors-pays-huge-fine-for-lacking-emissions-certificate-of <comment><USER2> The real downfall of a lot of empires must be administration, I guess, argh!

No really, in Belgium we even have a minister for simplification of administration, I kid you not!</comment>


Steve Jobs Resigns as CEO of Apple - <AUTHOR> http://finance.yahoo.com/news/Steve-Jobs-Resigns-as-CEO-of-bw-19285464.html

<comment><USER2> Jeez, out of the blue, but completely expected given his health issues.

I wonder what the stock is going to do. In after hours trading, it is down -0.68% after being up 0.69% on the day.</comment>


Ask HN: Which disk defragmentation algorithms are used in major OS? - <AUTHOR>

Which algorithms are used to make disk defragmentation on OS X, Windows, and some Linux distro? <comment><USER2> Its really a question of per file system as that makes a real difference.

XFS and ext4 will online defrag, i.e. when your volume is les than 90% full you don't worry about it, if its fuller than that fragmentation is not the problem to worry about.

BTRFS and other COW fragment easily but advantage means fragmentation is not your prime concern. Also large single write files are not the problem. When using NOCOW on a directory see above.

MAC OS X you will have terrible performance anyway... Relatively speaking if you have more than 2 disks per volume.

Windows... no idea to be honest</comment>


My Isometric Voxel Engine: One Year Later - <AUTHOR> http://www.voxelquest.com/news/voxel-quest-one-year-update-roughly <comment><USER3> Since the Kickstarter is not linked anywhere (not even in the blog post!) here it is: [https://www.kickstarter.com/projects/gavan/voxel- quest](https://www.kickstarter.com/projects/gavan/voxel-quest)

<comment><USER4> The first line of the blog post links to it.

<comment><AUTHOR> Yeah I added it in for convenience, thanks for the suggestion :)

</comment></comment></comment><comment><USER5> This progress is looking fantastic. I remember when you posted about it here last year. The dedication put towards this project is admirable.

It's good to see that the engine is near completion and that (hopefully) we'll be seeing some custom characters running around the screen soon.

Are you building it in such a way that this will make networked multiplayer feasible in the future? If not, what reasons do you have for letting that fall on the wayside?

I consider myself a gamer, but I don't have a lot of time so I only spend my time on games that I think will give me a really high quality experience. This game is the one I am looking forward to the most.

<comment><AUTHOR> Thanks! Networking is available, but not yet used for multiplayer. I'm not implementing it myself, but if modders want to that is fine. I've got way too many issues to address - as much as I would have like it in there, I had to prune my feature list and taking out networking made everything much easier to implement.

Yeah I myself can't waste much time on games, obviously. I only pick up ones that I feel are good "research."

<comment><USER6> If anything, your procedural approach should make it easier, shouldn't it? Instead of transmitting level files you can only transmit some seed data, after that only transmit the updates. This should also make it possible for all players to change the map itself through interactions, like in Minecraft. I'm imagining something like the concept of No man's sky, applied to a low budget / community project, where every player starts on his own island and through exploring the world and surviving in the environment, they can slowly get enough gear to explore the world overseas.

Btw. what's with the Swiss mug? I'm Swiss, so that made me curious :).

<comment><AUTHOR> My initial investor was from Switzerland. As I mentioned in another comment, we found eachother on reddit. He is just a regular guy, gamer, and programmer - not by any means wealthy but he had enough in savings to get me some seed funding. By coincidence, I went to Germany right after we started making a deal (I was visiting my wife's family, who is from Germany). I made a pitstop in Switzerland to meet my investor, and bought the mug there in Zurich. :)

Procedural approach does make it much easier to generate content. I've already got everything in place to generate entire seamless maps with logical road, street, city, and house placement among other things, and it is pretty easy to extend for things like caves and dungeons.

<comment><USER7> I understand why he invested. You have great passion and fantastic taste, I didn't know about this project until now.

</comment></comment></comment></comment></comment><comment><USER8> The AI and emergent plots remind me of Storybricks, the AI game tech that Sony has licensed for their "EverQuest Next" game. Designers add personality and need/want attributes to NPCs who then run on their own.

[http://massively.joystiq.com/2014/08/21/soe-live-2014-the- re...](http://massively.joystiq.com/2014/08/21/soe-live-2014-the- revolutionary-intelligence-of-storybricks-ai/)

<comment><AUTHOR> Yep, I am twitter "friends" with some of the guys at Storybricks and others who have been involved with EQN. I'm very excited to see what they come out with.

</comment></comment><comment><USER9> When I view your videos, all I can think is "oooh, he's using some kind of page-fault type engine to pull in and dynamically generate cubical subdivisions of space"

So, assuming that's what's happening, why not pre-render/pre-generate a larger area than the visible area so that this faulting in process isn't as visible for a typical viewport pan.

Also, if you were to reduce the resolution, would that make the faulting/rendering faster? Seems like that would be a good compromise, as many of the demos now feel like the terrain isn't generated fast enough to make a playable game.

Oh, can you also demo destructibility in a future video?

<comment><AUTHOR> There is some destructibility in this video, but I'll go over it more in the future. :)

You can make it go a lot faster by lowering the resolution, as I point out a bit down the page in the article. Every reduction of 2 in resolution ups performance and memory usage by 4-8 times, based on if the process is 2D (post process) or 3D related (chunk rendering). I'm continuing to add more optimizations to make things faster as I go along.

I am also going to add in better support for caching and prerendering - <USER2> now it all happens exclusively in GPU memory - I can easily expand the view even further with system memory and hard disk usage.

<comment><USER10> At the risk of having you compete with a project I would not even start, ;) you should dynamically reduce the resolution so that it runs in WebGL and create a backend in Akka or Erlang. You could get real funding with what you have here.

</comment></comment></comment><comment><USER11> What makes voxels better or worse than polygons for this kind of game and art style?

<comment><AUTHOR> With polygons, you must explicitly pass in every vertex and corresponding data (unless you use a geometry shader). This gets huge fast - with just usually around 12 32 bit floats per vertex (position, normal, material and tex coords). That is 48 bytes per vertex. Not only that, but each vertex must be processed (transformed) and the resulting polygon clipped, which is usually a more or less order-dependent operation and thus not well designed for multithreading on GPUs (they do use tiling though to address this I think, but usually this means redundant calculations).

With voxels, positions are inherently stored, and guaranteed to have some cache locality if they are uncompressed. Thus, GPUs are really good a chugging through large amounts of bitmaps, which is what I am doing (only rendering to bitmaps). With teraflops of compute power now, you can do trillions of flops every second, and in my case I can render about 1-2 billion voxels per second.

Additionally, doing procedural generation with polygonal surfaces is much more complex (I've done it, I know). Implementing stuff like voronoi patterns (used for the rocks) is trivial with voxels. Not the case with polygons, unless you are just wrapping voxelized data. Its the difference between evaluating a graph at every point, and calculating the graph at only the needed points. Voxels are implicit, polygons are explicit.

Really, you can think of VQ like a really fancy graphing calculator (in fact, all of the structures are just an extension of superellipsoids) ([http://en.wikipedia.org/wiki/Superellipsoid](http://en.wikipedia.org/wiki/Superellipsoid))

<comment><USER12> Any books / resources I can read ?

<comment><AUTHOR> I actually never read any technical book beyond a few pages, and tend to avoid papers which are typically too academic for my needs (I really just look at raw source, if anything).

My best recommendation - dive in and start coding. You are your own best teacher. :)

</comment></comment></comment></comment><comment><AUTHOR> Also, if anyone has any questions, please let me know! I'm trying to gain some visibility for Voxel Quest, so please spread the word if you can. Thanks!

<comment><USER13> This is beautiful stuff. Are you looking for contributors? I'd love to work on this with you.

<comment><USER14> Agreed, the visuals are just fantastic. Kind of clashes with my memories of the last Voxel game I played, one of these terribad Delta Force games.

<comment><AUTHOR> Ah Delta Force, Commanche, Novalogic...the birthplace of my interest in voxels. :)

</comment></comment></comment></comment><comment><USER15> Glad to see this on the top of HN! I saw you launch the Kickstarter campaign on Twitter the other day and was instantly blown away by the detail in the engine. Looking forward to watching this progress.

<comment><AUTHOR> Thanks! I'm hoping it will get better with time, still trying to address many (valid) complaints with the engine. :)

</comment></comment><comment><USER16> "The following "content" is alpha, like a wolf." haha, fantastic.

<comment><AUTHOR> I can never take myself too seriously :)

</comment></comment><comment><USER17> I really hope you get this done and get stupid rich. This is amazing. Congrats on getting this far!

<comment><AUTHOR> Thanks!! I'd settle for a decent middle class wage at this point. Right now, I am effectively making less than minimum wage based on the hours I work. :)

</comment></comment><comment><USER18> Well, I will put some money in the kickstarter campaign. When the source code is released, I will put my hands on it. :-D

You can make a GPL version so you create a community of users with dual license for commercial developers-artists so you get much more money than the ridiculously cheap 30Ks.

You can make great engines, but probably for creating amazing content for your engine you need artists.

<comment><AUTHOR> Not a bad idea - I will definitely consider GPL in the meantime, before I go to more permissive open source.

</comment></comment><comment><USER19> Question: you're using the super-fine voxels for the aesthetic, (and it does look amazing), but only coarse grained voxels for gameplay? I can see the trade-off makes sense, for the reasons you mention (path-finding, monsters can get through).

It's just that a fine-grained modifiable world would be super-amazing. It seems to me that your rendering tech could do that just as well... if the edits only occurred on-screen, they are manageable (and all the rest can be rendered off-screen to bit-maps and cached, as you do now).

Of course, what I'd really love is a living world, which also changes off- screen. e.g. erosion. But I think that may be asking too much of present-day hardware...?

marketing advice: copy notch. Do little updates as often as you can, for every small thing you do. It gives you energy, engages long-term followers and - most important - is advertising, so more people know about it.

<comment><AUTHOR> Good question - you can add in fine grained details as well. The macroscopic chunks are used to make quick calculations. Then on top of that, it sees whether or not the chunk contains microscopic changes, and if necessary recalculate a path or collision or whatever.

Erosion: doable, but not something I'm going to tackle right now. I originally built errosion in from the start to try and create realistic maps, but it turned out to be way simpler and faster to just pull in real world heightmaps and mix them together in patches, even if not realistic.

Marketing advice: taken. :) I'll be updating more frequently now, especially with the KS campaign going, which is pretty much a full time job right now.

</comment></comment><comment><USER20> I remember the last post about this engine and loved all the details. There's a huge amount about voxels I don't know, and the author always has such interesting insights.

I'm totally sold, just backed for the Platinum badge.

<comment><AUTHOR> Thanks for backing! :)

</comment></comment><comment><USER21> This looks quite good in the video, good work!

You mention a few games as inspiring traits of Voxel Quest -- most of which are quite obvious -- including Hearthstone. In what ways was Hearthstone an influence? Art style, or something beyond that?

Edit: Just finished watching the entire video, it really does look fantastic. I will say, the one off-putting part of your game design philosophy for me was the whole "no long-term progression" thing. I find the way Rogue Legacy handles this a beautifully rewarding mashup of the roguelike quick permadeath and the feeling of making overall progress in the game world.

<comment><AUTHOR> The game is largely based off of CCG mechanics, but not the way a traditional CCG plays so much. Items, skills, classes, and monsters each add their own unique mini-rules to the game, based off a larger set of common rules like Hearthstone. Superficially, it plays a bit more like Dwarf Fortress.

Funny comment about the permadeath - Rogue Legacy was exactly what made me realize I did not like unlocking. Nonetheless I'm aware of the drawbacks of permadeath, and I will do what I can to address the communities wishes (there may be various game modes for people who hate permadeath and want a progressive, traditional RPG). Spelunky is, and has been, my goto design influence for years (not the sidescrolling and platformer mechanics, but just the pacing of the game, how it handles various design choices, etc), I still consider it one of the best designed games of all time.

</comment></comment><comment><USER22> I've been looking forward to Voxel Quest since I first read about it last year - everything about it seems to appeal to my taste in games. Great to see all the progress you've made!

<comment><AUTHOR> Thank you! :)

</comment></comment><comment><USER23> Question unrelated to the game + engine: What kind of tools do you use to help manage your work?

Do you utilize any kind of project management software or methodology as a solo developer?

<comment><AUTHOR> I use Trello to manage my project. Google docs to do design documents and other spreadsheets.

There is a section of code where I adjust some important constants frequently (for chunk, buffer sizes, and other vars that are constrained at compile time for now). In this section I have a commented area for quick todos and reminders, for when they are too trivial to add to Trello or I dont want to forget them.

For other details on my work environment:

I have 4 monitors - 3 primary ones to code on, and a forth to run the game on, fullscreen if needed (i.e. for recording). I use Sublime Text by habit, even though I compile in Visual Studio. I also have a bunch of batch scripts to automate C++ stuff I don't want to deal with (LZZ for automatic header generation is crucial for my sanity).

I also have several apps running in windows to reconfigure how the desktop works, allowing desktop switching and other stuff (I'm on Windows 7 right now). I used to program on a Mac, so I actually changed my keyboard to be more mac-like (switched the control and alt keys on my keyboard and reprogrammed them in the registry - hehe).

LZZ link: [http://www.lazycplusplus.com/](http://www.lazycplusplus.com/)

</comment></comment><comment><USER24> I don't really understand how this is a game, but I'm more than happy to pledge a few dollars to support talented people like you! Go voxels!

<comment><AUTHOR> Woo! Its not really a game yet, but constructing an engine from scratch was a decision I made with intent. I've still got three years on my projected timeline to go, so I will be working further on making it a game. To use my goto comparison, if you look at the early days of Minecraft, it was just a cube-placer. Now most people call it a game. :)

</comment></comment><comment><USER25> Are you going to be releasing the engine and a game? Or just one? I may have missed that. But it looks truly amazing.

<comment><AUTHOR> Both - initially the engine source will be put out to help boost the community and mods around the game - a game is being built so that relevant features are added to the engine. Kind of dogfooding my own engine I guess. :)

<comment><USER26> Why do you want to wait to release the engine source instead of putting it on github right now ?

<comment><USER6> I'm guessing Gavan would like to protect his work a bit and not just give out licences to do anything you want with it - if others want to commercialise, he should get a fair cut, otherwise it's going to be a hard sell to investors. IMO that's completely understandable. I find it sad that things like non permissive CC licenses are regarded as so bad in the open source community - making a project like this completely open is very hard to do as a full time job because of that.

</comment></comment></comment></comment><comment><USER27> I like the look of your mountain ranges. Is that done using a published method or something of your own devising?

<comment><AUTHOR> Thanks! My own devising, but really based on existing techniques. Although of course it will be "published" since source is going out. Its actually based on just two things - one is the same heightmap used for the world, transformed and overlayed several times to produce unique cracks (it reads this based on the world position, and then does a whole bunch of sin calculations and stuff to make it look random). The same map is used to add in sediment and grass, just more permutations on the calculations. The other is voronoi patterns. It combines these to form what turned out to be surprisingly unique and cool looking (even I was surprised how it turned out).

</comment></comment><comment><USER28> It looks awesome. But without following this project up close it's really hard for me to see what changed since 12-6 months ago when I saw the last video about the engine.

And what will the actual game be about? From the video I'm not sure if there is an actual plan yet.

<comment><AUTHOR> You can find some more details about the game on the Kickstarter page (some good questions answered there in the updates section as well, with a link to the design doc), in the about section, or on the Steam Greenlight page ([http://steamcommunity.com/sharedfiles/filedetails/?id=245148...](http://steamcommunity.com/sharedfiles/filedetails/?id=245148095))

As usual, video editing and marketing are my two worst skills, so I'm not very good at putting together all this stuff. :)

<comment><USER29> The marketing of the game gives me honest concern. It is the quintessential "list of features" that is indicative of technology made without acknowledging a critical, artistic perspective - that's even true of the title "Voxel Quest." If you can correct this and gain understanding of what the game _represents_ and what areas you _want_ it to be critiqued on, it will become both easier to design and to market. Narrowing always clarifies things.

There is one aspect in which you do show a definite perspective, and that is in the use of a simulationist philosophy: Everything done in deterministic, procedural, emergent ways. Now, one of the ways in which this philosophy gets challenged is the issue of "you don't know what you don't know" \- if your simulation is built upon bad premises, then it's garbage in, garbage out.

So then, if you want to find the same kind of successes with the approach as something like Dwarf Fortress, Spelunky or Minecraft, you have to actively acknowledge where your simulation becomes intentionalized by the assumptions you make about how the world works. At that point you are in the business of making critical arguments through your game and the workings of its systems: Things like how the economy is tuned, frequency of combat, or average NPC reactions to violence, all send unavoidable messages about the totality of the world you make.

You can literally pick just _one_ thing that characterizes the world, consider it in depth and tailor every other system's features around it, and have a fine game. Even Dwarf Fortress, which is extremely deep, shows intentionality in that the details it focuses on are descriptive and categorical(types of rocks, individual organs) vs., for example, being spatially accurate like the physics simulation of a racing game. What makes DF's detail cool - and what makes it a big, complex game instead of a tiny one - isn't that it attains atomic precision, but that everything adds up to a specific, detailed, believable narrative about fantasy characters doing the "everyday things" we expect to see in a fantasy world.

To put it another way: Eliminating things from the game makes it impossible to criticize those things, and every game eliminates something! But the things a game does show should have a ton of care put into them.

If you're doing all of this right, you'll be up at night with some fear over the internal struggle of the design decisions, instead of the actual production or marketing; you are already demonstrating the necessary skill to do those two - you have very nice graphics to show off in your trailers, which is a great entry point.

The only reason why the marketing looks hard is because there's a lack of design intent, and thus nothing but bullet point features after you show the graphics. But the design can act as a master plan for the marketing, as it allows you to go on at length about the things being conveyed through the systems, vs. what the systems are, where your effort on details is going to go, and how you want the overall play experience to expand over the coming months.

<comment><AUTHOR> All good points, thanks! Many of the details I failed to convey because I targeted my past audience (people who already saw my old updates) instead of current audience (people who have no idea what Voxel Quest is). But even with that in mind many of your points still hold. Thanks for the detailed, thoughtful feedback :)

</comment></comment></comment></comment><comment><USER30> Looks like a dream project - so happy you can do it full-time!

 _> VQUI can be hotloaded_

What else can be hotloaded? Do you use entity-component-system type of architecture? Any scriptable parts?

<comment><AUTHOR> To be able to do this fulltime is really a blessing (or a curse maybe, because it is extremely hard work). Was not easy getting there - I was turned down by every single investor I ever approached (many), and threw a hail marry pass on reddit of all places, met a gamer/dev there who gave me a small amount of seed funding to get started (the rest is based on savings/severance from my old job). Now investors are knocking on my door, rather than the other way around, which is cool (and I really do appreciate everyone who has approached me, I don't take it for granted).

Great question about hotloading - everything is data-driven, no realtime scripting yet, unless you count the GLSL as scripting, which can be hotloaded. And really, the GLSL is a huge part of the scripting process - it is simply awesome to use for scripting, especially so in the context of voxels. It has blazing fast compile time (I hit refresh, refresh over 40 shaders faster than I can notice a delay) - and shaders obviously compile to be very fast. I have intentionally avoided other scripting - for the same reason Unreal went to a pure C++ engine.

<comment><USER30> Unreal has the Blueprint scripting system though :). But I am not going to argue as I don't have enough of the relevant experience. Besides your About page has cleared my questions (AI plans are quite ambitious :)).

<comment><AUTHOR> Yeah I was just going off what I read: [https://forums.unrealengine.com/showthread.php?2574-Why-C- fo...](https://forums.unrealengine.com/showthread.php?2574-Why-C-for- Unreal-4&p=16252&viewfull=1#post16252)

Did not know about Blueprint :)

Anyhow - AI is defintely ambitious, but less so once you see how simple I am keeping everything (it is going to be quite crude - really :) )

</comment></comment></comment></comment><comment><USER31> Keep the good work! Looks awesome, and it was my dream to create such game long time ago, but never happened. The tooling also looks amazing and powerful!

<comment><AUTHOR> Thank you! Living the dream. (if you only knew the torturous hours I worked ;) )

</comment></comment><comment><USER32> Are you using any sort of acceleration data-structures to manage your voxels or just storing everything in plain 3D array of positions? I imagine you can run into memory issues there if you don't account for spatial sparsity in your voxel data?

I'd be curious to know if you're something something like run-length encoding (RLE) or something hierarchical such as a B-Tree?

</comment><comment><USER33> Perfect timing, I just started to look at voxels yesterday.

Which resources can you recommend if I want to learn more about voxels?

<comment><AUTHOR> See my response to ilolu - I most recommend diving in and experimenting yourself - maybe build something that is on the CPU first since it is easier to work with. Voxels are really intuitive, you are just manipulating a 3D array of data (more complex once you get into compression and things like that). I learned everything just by playing around with code. :)

</comment></comment><comment><USER34> This page has crashed chrome three times now, twice on one machine and once on another. Somethings wrong here...

<comment><AUTHOR> Blame Weebly, that is my host (aren't they a Y-Combinator company?). :)

</comment></comment><comment><USER35> This is awesome; I don't know how I missed it last year. Donated to the Kickstarter -- keep it up!

<comment><AUTHOR> Thank you for backing :)

<comment><USER36> you deserve to get it published. :)

Really impressive update since last year. :D

</comment></comment></comment><comment><USER37> Tiberian Sun nostalgia. Love it.

<comment><AUTHOR> Man, I loved the old C&C games. :)

</comment></comment><comment><USER38> Hey, with the way you have built this engine and/or with potential mods, is it possible to change the camera angle to view the map out of isometric mode, for instance in first person?

<comment><AUTHOR> Its possible, but I have many other items prioritized above that.</comment></comment>


Amazon gives its $40 Fire TV Stick better Wi-Fi and a quad-core processor - <AUTHOR> http://arstechnica.com/gadgets/2016/09/amazon-gives-its-40-fire-tv-stick-better-wi-fi-and-a-quad-core-processor/ <comment><USER2> This is awesome !</comment>


Ask HN: What to do when a botnet is requesting password resets? - <AUTHOR> Hey there HN, I'm currently having an issue on one of my accounts where, what seems like a botnet, is constantly sending password reset requests on it. This has been going for more than a week now.
I have contacted the service in particular (part of GAFAM) and their account security department told me there is nothing that can be done in this case and I should just disregard the emails.
I now ask you, HN, what can _we_ as developers, do to prevent this from happening on our services? Limit the amount of password reset requests for an account? (still doesn't solve the issue), etc.. As I, genuinely, have not managed to come up with a solution. <comment><USER2> Adding a rate limit to the number of password reset emails in a given day or hour is trivial.

        SELECT count(*) FROM account_reset_tokens WHERE accountid = ? AND (NOW() - created) < '1 hour'::interval

        if ($count > 3)
          throw new RateLimitException();

You could also restrict based on IP, but that doesn't specifically help with the botnet.

That's what developers can do. What developers should do is consider what prevents their customer support funnel from getting overloaded.

</comment><comment><USER3> I think we need to make it more obvious when account-access occurs for users. If they can see their request logs they can investigate themselves, maybe even identify the cause or instigator.

I think letting users define restrictions on their accounts would help too, like a firewall for which countries or cities etc can access their account, schedules for when signing in can occur or when it is disabled etc. Most people could just select their city and waking hours.

</comment><comment><USER4> Stop implementing them, and move to key & pin. Use backup keys instead of resets. Stop depending on email and SMS.</comment>


E-mail error ends up in road sign - <AUTHOR> http://news.bbc.co.uk/2/hi/7702913.stm

<comment><USER2> I don't get this last one:

> People living near an Aberdeenshire building site in 2006 were mystified > when a sign apologising for the inconvenience was written in Welsh as well > as English.

Is it sarcasm? That seems perfectly reasonable to me.

<comment><USER3> Aberdeenshire is in Scotland. Which isn't bilingual welsh/english.

<comment><USER2> Ah, I wasn't paying attention. Nonetheless, 'mystified' seems a bit strong. The US isn't bilingual anything, but I am not mystified when I see signage in Spanish as well as English.

<comment><USER4> There are many people in the US who speak Spanish, and many of these can read it as well.

There are few speakers of Welsh in Scotland, even fewer who can read welsh.

It would be as odd as having French-English signs in the US.</comment></comment></comment></comment>


We cannot live by scepticism alone - <AUTHOR> http://www.nature.com/nature/journal/v458/n7234/full/458030a.html <comment><USER2> There was a 1 hour interview where Karl Popper's ideas were investigated on "Ideas: How to think about science" from CBC.ca. [http://www.cbc.ca/ideas/features/science/index.html#episode2...](http://www.cbc.ca/ideas/features/science/index.html#episode24) is the link.

It was the most intellectually stimulating interview I've heard in years. Pretty much all 24 hours of the series actually. I highly recommend it.

As an aside though, I have some criticism about this text:

>It is not only social scientists who would have to change their approach under elective modernism. If we are to choose the values that underpin scientific thinking to underpin society, scientists must think of themselves as moral leaders. But they must teach fallibility, not absolute truth. Whenever a scientist, acting in the name of science, cheats, cynically manipulates, claims to speak with the voice of capitalism, the voice of a god, or even the voice of a doctrinaire atheist, it diminishes not only science but the whole of our society.

Science's motto is "On No Man's Word".

> Science, then, can provide us with a set of values — not findings — for how > to run our lives, and that includes our social and political lives. But it > can do this only if we accept that assessing scientific findings is a far > more difficult task than was once believed, and that those findings do not > lead straight to political conclusions. Scientists can guide us only by > admitting their weaknesses, and, concomitantly, when we outsiders judge > scientists, we must do it not to the standard of truth, but to the much > softer standard of expertise.

Science is not about moral values. Science needs to be regulated by moral values. Science is like a self assembling jigsaw puzzle. It needs to be directed. Just like we can make a conscious choice to investigate technologies of destruction instead of stem cell research. Just like we can subjugate genetic research into Monsanto's killer seeds.

I think all in all, I am paraphrasing ideas put forth in the afore-mentioned interviews...

</comment><comment><USER3> I'm not so sure</comment>


The Software Millionaire Next Door - <AUTHOR> http://journal.dedasys.com/2013/01/04/the-software-millionaire-next-door <comment><USER2> I mostly hang out with folks who run product businesses, but numerically, I'd bet on services businesses being substantially more numerous. There are probably tens of thousands of consulting firms in the US. Most of them produce bespoke software for businesses at five/six figures an engagement. The math works out such that the principals at this type of firm become modestly wealthy fairly quickly, with little execution risk.

Think of every Rails dev shop you've ever heard of: $8k monthly salary per dev, $12k in fully loaded costs. Each dev has 70% utilization (~35 weeks a year) at a chargeout rate of $6k to $8k per week for journeymen and $8k to $10k for partners.

You can do the math yourself, but the short version is that a consultancy that would fit around my dinner table makes all partners millionaires, with the approximate inevitability of gravity.

<comment><USER3> Customers are not as inevitable as gravity. How do they find their customers?

<comment><USER4> A consultancy usually starts by nucleating around the contacts and first few engagements brought in by the principals. Given a few starting engagements for a few different customers, one of them is likely to turn into recurring revenue, and another is likely to provide a referral.

Then, if your delivery establishes any kind of track record at all and you're working in a "hot" area (Rails in 2008-2009, iOS in the last 3 years, &c) you can start picking up cold inbounds just by putting your name out there (on a website, with a blog, posting on message boards).

Things snowball after that.

Most small consultancies I'm acquainted with never advertise and don't have salespeople.

One thing you really need to understand is that successful consultancies don't treat clients the way HN tends to think about customers. If the process of extracting recurring engagements and referrals from customers is mysterious to you, it's because you're thinking too transactionally. You see this all the time on HN on threads about people's time tracking and invoicing techniques. The people on those threads often sound like they can't wait to get away from their customers. Of course they have trouble finding new ones. Their business processes are client-aversive.

<comment><USER5> I have never met someone who hired a programming consultant or contract company. (not talking about a MSFT contract employee. ) I have seen a few Oracle database contractors.

Who are these companies hiring Pivotal or whoever less famous?

<comment><USER6> Consultant here :-)

Believe me, the demand is huge. I can't name my company's clients, but we have consulted for a good deal of very big names.

</comment></comment></comment></comment></comment><comment><USER7> This helped catalyse a ranty blog post I've been meaning to write for a while: <http://chester.id.au/2013/01/05/on-selling-to-consumers/>

The tl;dr is that using Jobs, Gates _et al_ as your business inspirations is just sample bias. Most of the money is in selling to businesses.

<comment><USER8> Oh no way.

<comment><USER9> Oh yes way.

<comment><USER7> patio11's made our points. Just that he does it better.

</comment></comment></comment></comment><comment><USER10> Don't equate millionaires with billionaires; those 'in the spotlight' people (he names) are all billionaires, not millionaires. That's why they are automatically in the spotlight. What billionaire quietly toiled to make his money?

<comment><USER11> Seems like quite a lot of the billionaires in the US are relatively unknown: [http://www.forbes.com/forbes-400/list/#page:1_sort:0_directi...](http://www.forbes.com/forbes-400/list/#page:1_sort:0_direction:asc_search:_filter:All%20industries_filter:All%20states_filter:All%20categories)

<comment><USER10> I was referring to the list the OP named in the article.

</comment></comment></comment><comment><USER12> A more interesting question still is whether high income or high cash-out (e.g. Google employee who cashed out options in excess of $1million after IPO) software professionals cluster around the Under Accumulator of Wealth (UAW) category? Is that hypothetical Google ex-employee likely to have moved into a Palo Alto, bought a new European performance vehicle, treated themselves to a plasma in every room? These would seem to be tell tale signs of the UAW mentality.

</comment><comment><USER13> Is this the top post because it has "millionaire" and "software" in the title? Everyone's aspiration here, I guess.

<comment><USER14> no, because otherwise you'd be having a fourth category: people who are professional software developer but who also inherited so much more money than they'd make during their entire programming career ; )</comment></comment>


What Racism Sounds Like in the Banking Industry - <AUTHOR> https://www.nytimes.com/2019/12/11/business/jpmorgan-banking-racism.html <comment><USER2> White privilege. As a brown person who has been living in NA for the past 5 years, I thought this was something that black Americans use to play the victim. But now with my experiences, I slowly started to realize that yes White privilege is real and it's not going away anytime soon. I also find that this is not unique to NA. I am from India where the caste system is still alive & thriving too. Even for H1B, odds are in your favour if you are an upper caste along with your manager who is also an upper caste.

<comment><USER3> Vanguard, Fidelity, Schwab, and other discount brokers will allow people of all races to open brokerage accounts and purchase low-cost ETFs and mutual funds. A "private client" relationship with a broker at JPMorgan Chase (the subject of the article) may cost you a lot of money in fees.</comment></comment>


Coronavirus: Chinese police wear smart helmets to detect people with fevers - <AUTHOR> https://www.dailymail.co.uk/news/article-8073451/Chinese-police-wear-smart-helmets-detect-pedestrians-fevers-amid-coronavirus-crisis.html <comment><USER2> [https://www.youtube.com/watch?v=U3YO9VMa9V4](https://www.youtube.com/watch?v=U3YO9VMa9V4)</comment>


Comparing Node.js Promises, Try/Catch, Angular Zone.js and Zone - <AUTHOR> http://strongloop.com/strongblog/comparing-node-js-promises-trycatch-zone-js-angular/ <comment><USER2> Generators are the best, though I'm starting to worry I'm using them too much.

edit: I'm using koa, so co is working in the background here. Should have said that earlier, my bad.

var save = function*(){ try { yield db.insertUser(); } catch (e) { throw e; } }

<comment><USER3> That's not entirely true. If "db.insertUser()" is opening a database connection, who is going to close it on error?

The idea behind Zones for Node.js is to auto-attach new resources to the current zone, so that they can be cleaned when the zone exits.

AFAIK there is no solution for that at the moment.

<comment><USER2> I'm thinking whatever db plugin you're using, but also this pseudo code actually has a lot of implicit things going in the background (koa/co, thunks, etc).

It makes for some readable app code though.

</comment></comment></comment><comment><USER4> One thing missing from this picture is Streams - the multivalued analog to Promises (Futures in Dart). The button click example would be quite easy to handle, even without Zones, if the button had an onClick event stream, rather than taking a callback.

This code, which doesn't work as intended:

      function thirdPartyFunction() {
         function fakeXHR() {
           throw new Error("Invalid dependencies");
         }

        setTimeout(fakeXHR, 100);
       }

      function main() {
         button.on("click", function onClick() {
           thirdPartyFunction();
         });
       }

      main();

would instead look like this with a Streams-based API (I'm assuming a Dart- like API, since I don't know the proposed Stream API for JS):

      function thirdPartyFunction() {
         function fakeXHR() {
           throw new Error("Invalid dependencies");
         }

        setTimeout(fakeXHR, 100);
       }

      function main() {
         button.on("click")
           .listen(function onClick() {
             thirdPartyFunction();
           })
           .onError(function onError() {
             console.log("now it works with errors");
           })
       }

      main();

Since onClick is executed by the Stream, even a synchronous exception in thirdPartyFunction will be caught and given to the onError callback. JavaScript could really use a better DOM API with Promises and Streams in place of most callbacks. I think most of the Streams work is here: [https://github.com/whatwg/streams](https://github.com/whatwg/streams)

So Zones aren't really needed here. They are very useful though. AngularDart uses them to intercept any external trigger of the event loop so that it can run it's change detection code (this is why they ported Zones to JavaScript). Dart's unittest library runs each test in a Zone to wait for outstanding microtasks and catch async errors that might happen after a test appears to have completed and associate it with the correct test. And of course using Zones to string together async stack traces or debugging is invaluable.

</comment><comment><USER5> The author does not seem like an experienced Node.js developer. All those

        if (err) {
          done(err);
        }
        else {
          // ...
        }

are usually written in this style:

       if (err) return done(err);
       // ...

I personally don't like promises and tend to avoid libraries who use them. I don't really see the problem they are trying to solve which is not already solvable in a more flexible way through libraries like async.

<comment><AUTHOR> I agree that libraries should not be handling errors in any unusual way, or better yet just re/throw them and let consumer take care of that. That's where the promises/zones might be useful.

<comment><USER5> Right. I don't mind if people want to use promises in their own code as long as they don't force their use on library users.

</comment></comment></comment><comment><USER6> Cute, although if you promisify all your async primitives promises are throw safe and the Bluebird library makes this really easy.

I hope they're able to get to as fast as Bluebird performance , which is almost as fast as callbacks and faster than the async module.

</comment><comment><USER7> q.js can properly handle exceptions thrown in a handler. see the examples here: [https://github.com/kriskowal/q#chaining](https://github.com/kriskowal/q#chaining)

<comment><USER8> So can when.js which has become my favorite promises library:

[https://github.com/cujojs/when](https://github.com/cujojs/when)

[http://know.cujojs.com/tutorials/async/mastering-async- error...](http://know.cujojs.com/tutorials/async/mastering-async-error- handling-with-promises)

</comment></comment><comment><USER9> > Up until recently that was pretty much all we had.

[Edit: see my comment below[0]. This is more a coincidence of wording than a StrongLoop marketing line]

When StrongLoop talked at my south bay node.js meetup group, BayNode[1], at Hacker Dojo last month, they demoed Zone.js. Before demoing though, they asked if anyone in the group had "solved this" to which I made it very clear that, "Yes, I did about 2 years ago with trycatch[2]." Their response could be summed up as, "Oh?"

Long story short, not only does my async try/catch library solve this, I can say with near certainty that it solves it in a better, more consistent, more tested, more battle proven, more performant manner. We use trycatch at LinkedIn and have not had to worry about async error handling since.

Additionally, adding it to any control-flow of your choice is trivial, as I have done with my stepup library[3]. Further, their main bullet-points are about enforcing the callback contract, something EVERY control-flow library should be doing, (I previously went into more detail here[4]) and the primary reason for the popularity of promises since they formalized this contract.

In fact, I teach these core contract rules in my monthly week-long node.js bootcamp I give here at LinkedIn[5], and the only thing they have to do with control-flow is that your control-flow library of choice should enforce them, as stepup and promises do. I do add a few rules:

* Function that takes 2 arguments: 1. first argument is an error, 2. second argument is the result, 3. Never pass both, 4. error should be instanceof Error

* Must never excecute on the same tick of the event loop

* Must be passed as last argument to function

* Return value is ignored

* Must not throw / must pass resulting errors

* Must never be called more than once

Long story short, domains are broken, try/catch is insufficient, use trycatch because I solved this problem over 2 years ago and have been perfecting it since.

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

[1] [http://www.meetup.com/BayNode/](http://www.meetup.com/BayNode/)

[2] [https://github.com/CrabDude/trycatch](https://github.com/CrabDude/trycatch)

[3] [https://github.com/CrabDude/stepup](https://github.com/CrabDude/stepup)

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

[5] [https://gist.github.com/CrabDude/10907185](https://gist.github.com/CrabDude/10907185)

<comment><USER10> This seems really cool! I'm surprised I haven't heard about this until now.

However, this solution seems to be Node specific. The example where they lament about how this "was pretty much all we had" was about a browser error. Angular's Zone.js seems to be the closest project to solving the problem in that context.

<comment><USER9> Ah, sorry then for my strong rebuke. I am making the incorrect assumption then that this was a StrongLoop marketing line, not a coincidental similarity.

<comment><USER10> You should write a blog post about this. There are a lot of parallel efforts going on to bring sanity to async errors in JS, and it would be great to see what the outcome of cross-pollinating these ideas would be.</comment></comment></comment></comment>


Why Most People Will Remain in Mediocrity - <AUTHOR> https://medium.com/the-mission/why-most-people-will-remain-in-mediocrity-6c7e24c48d12 <comment><USER2> Wow, straight out of Motivational Blogger 101. Lots of quotes, pictures of people doing things, a couple keywords. The actual content of this post? One sentence: Work hard, fail, learn, fake it till you make it. Never read that before...

He's basically saying that being in the 99% of people (in his world) means that you suck, and you haven't amounted to anything. Being in his 99% can be both very comfortable and challenging though. And you don't have to be your own boss to be financially independent and travel the world. I'd even say that's more likely if you aren't your own boss.</comment>