CSS Modules - <AUTHOR> http://glenmaddern.com/articles/css-modules <comment><USER3> It's wonderful that CSS problems have been distilled so clearly, it's been a long time coming. Radium[1] is really worth checking out, it's simple and clear.

From the article:

      /* BEM */
      .normal { /* all styles for Normal */ }
      .button--disabled { /* overrides for Disabled */ }
      .button--error { /* overrides for Error */ }
      .button--in-progress { /* overrides for In Progress */

      /* CSS MODULES */
      .normal { /* all styles for Normal */ }
      .disabled { /* all styles for Disabled */ }
      .error { /* all styles for Error */ }
      .inProgress { /* all styles for In Progress */

      > In CSS Modules each class should have all the styles needed for that variant

This seems like trading one set of problems for another. It violates DRY and consequently impacts code maintainability. The corollary is that .disabled should @include .normal and then define the overrides so you only have to define the base styles once in .normal... but that also requires discipline and code wrangling.

      > [BEM] requires an awful lot of cognitive effort around naming discipline.

But the proposed alternative is not too different either:

      /* components/submit-button.css */
      .error { ... }
      .inProgress { ... }

This example just replaces BEM naming and namespacing with file naming and directory structure.

[1]: [https://github.com/FormidableLabs/radium](https://github.com/FormidableLabs/radium)

EDIT: On second reading, the stuff in there is definitely not "Welcome to the future" exploring the "adjacent possible" realm--those are quite grandoise pretexts to a solution that is just as unwieldy.

<comment><USER4> Regarding your first point, he addresses that in the next section:

"The composes keyword says that .normal includes all the styles from .common, much like the @extends keyword in Sass. But while Sass rewrites your CSS selectors to make that happen, CSS Modules changes which classes are exported to JavaScript."

And isn't file (module) naming and directory structure what we use to organize regular code? I like the idea of going to the components folder and looking for the 'submit button' file when I need to alter something much more than searching a 20,000 line css file or randomly split scss files. Even nicer is the concept of including your styles in the same directory as the components they define, further mirroring normal code organization. It seems like this would allow for much easier onboarding into a project.

<comment><USER3> I am not saying it's a bad idea. However, it trades one set of problems for another. What point is there in highlighting a problem and then proposing a remedy which introduces the same problems in a different form?

> I like the idea of going to the components folder and looking for the > 'submit button'

All existing frameworks use the same approach (Bootstrap, Foundation, et al). GetMDL.io for example uses BEM and clean files to organize code [https://github.com/google/material-design- lite/tree/master/s...](https://github.com/google/material-design- lite/tree/master/src)

Dealing with that on any reasonably sized project still requires "naming discipline" and "cognitive effort", both of which the author highlights as problems ailing BEM with a remedy that still suffer from the same. It didn't read very convincingly.

</comment></comment></comment><comment><USER5> It feels to me that this conversation is quite old I'm finding myself not convinced by the examples put forward in the article. It looks like a lot of unnecessary complexity. You can have a lot of success by simply picking a common css convention.

      .mybutton
        /* all styles for Normal */
      .mybutton.disabled
        /* overrides for Disabled */
      .mybutton.error
        /* overrides for Error */
      .mybutton.in-progress
        /* overrides for In Progress */

This is simpler and works incredibly well with javascript because I don't have to find replace remove a subset. I just addClass('disabled') removeClass('disabled').

<comment><USER6> Now what if you wanted to bring in another button - a very similar one - <USER2> _slightly_ different styles?

<comment><USER5> You extend the styles now you perhaps have:

      .mybutton
        /* all styles for Normal */
      .mybutton.skewed
        /* overrides for Skewed */
      .mybutton.disabled
        /* overrides for Disabled */

      class="mybutton skewed disabled"

The suggestion in the OP would be that each one of those classes contain all of the styles for the button. That isn't necessary. Plus it requires, what I count, a minimum of two additional language abstractions in order to do it.

<comment><USER7> Excellent answer. I love these "gotcha" examples when taking something that should be relatively simple and trying to make it more complicated to prove, um, something.

I wish people would realize that making their CSS more complicated and bloated is not necessarily the answer.

<comment><USER8> I agree, a lot of these solutions come from bad CSS. Not because CSS is bad.

<comment><USER9> That so much CSS is "bad CSS" indicates that the problem isn't the craftsman so much as the tool...

<comment><USER7> Ah, I see, so when I attempt to use a hammer as a wrench I can claim the hammer is a horrible tool.

CSS does exactly what it was designed to do and does it quite well. It only goes "bad" when people attempt to make it do things it wasn't designed to do. Blaming the tool for that is the sign of a bad craftsman.

<comment><USER9> Exactly: CSS wasn't designed for the problems we're trying to solve. We're trying to invent the proverbial wrench.

<comment><USER7> Then stop blaming the tool for bad craftsmanship. Maybe if we lay the blame where it belongs then something constructive might appear.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> So... CSS has the same global namespace issue as C, and this CSS Modules is the same solution as C++ namespaces and classes. They call it "mangling".

[https://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in...](https://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B)

(further commentary prudently withheld)

<comment><USER11> But just as with C++, that's effectively an implementation detail, and irrelevant to the larger issues addressed. BEM itself is just name-mangling structured for humans to execute manually. (wait, WAT.) We're talking about the cognitive model and load that designers and developers have to deal with when authoring styles.

I see CSS Modules (and Radium and ...) as being a space for experiments that I hope will ultimately point the way to better "baked in" solutions. Similar to how ideas from Coffeescript were "merged back upstream" into ES6/ES7.

</comment></comment><comment><USER12> I might be a majority shareholder of the following opinion, but I feel like it needs to be said.

CSS was an art, and a science. Websites like csszengarden.com showed us the promise of style sheets, and the galleries of "CSS sites" during the mid to late 2000s demonstrated what amazing works could be taken from photoshop (and Fireworks!) and made into beautiful, pixel-perfect layouts. I always felt proud to make a website with only semantic HTML and CSS, and it always worked well. Even with all the browser issues (namely those of IE6), it was easy to write cross-browser compatible code that was clean and beautiful. The (C)ascading part of CSS was still considered a feature, and deeply understanding its implications was an acceptable challenge.

Then came The Age of Great Coupling & Frameworks (made that name up) wherein CSS began to be regarded as a hindrance. Frameworks like Bootstrap became the status quo, because it meant you could go from 0% to 60% in half the time. But, no longer did anybody decide to go to 100%. The coupling I speak of isn't just a coupling of backend to frontend technologies, but a coupling of backend to frontend workflows. In a subconscious effort to become more efficient, we, as software engineers, began to find ways to incorporate automatic solutions for every problem (e.g., LESS). This is partly due to the very slow nature of completing and proliferating new CSS specifications, but in the long run all of these tools and frameworks have grown the barriers of entry, and have bifurcated the community in many ways (e.g., LESS vs SASS, responsive framework vs pure CSS, non-standard with polyfill vs standard, etc.).

These differences are not the kinds of differences that cause anger (usually), but they make it hard to hire and train, and they make it hard for frontend engineers to work together easily. At the end of the day we're all building CSS and HTML with JavaScript, but if I strike up a conversation with 3 different frontend engineers, each will be as different as if I had chosen to talk to an astronaut, a vet tech, and a professional swimmer. That's almost no exaggeration. Diversity of skills and tasks within an occupation is a good thing, but at some extreme it decreases mobility. When I felt like I had learned CSS, well years ago, the thought never crossed my mind that someday choosing a CSS-related tool would be as much a career decision as choosing a primary programming language to focus on.

FTR, I don't have solutions for the problems I pointed out, nor do I think we should somehow reset and go back to the past, but I feel strongly that we've made things more complicated than they need to be.

<comment><USER13> I feel like you're looking at the past through rose-colored glasses, my friend.

> _Websites like csszengarden.com showed us the promise of style sheets_

That site was always highly artificial -- huge deficiencies in CSS meant that it always wound up being tightly coupled to the HTML structure for any non- trivial site.

> _I always felt proud to make a website with only semantic HTML and CSS, and > it always worked well. Even with all the browser issues (namely those of > IE6), it was easy to write cross-browser compatible code that was clean and > beautiful._

I don't think any language has ever frustrated me more than CSS. It _never_ worked well (float bugs? box models? browser hacks? z-index problems? vertical centering? insane precedence rules?) and was anything but clean and beautiful.

The reason for the proliferation of tools like LESS or frameworks has been exactly to address some of the huge warts and problems of CSS (like no variables, no local namespacing, etc.) -- because these bring some desperately-needed sanity back to the CSS codebase for a large site.

I agree that there are way too many choices and not enough standardization around CSS best practices -- but the original problem here was the gigantic deficiences in CSS in the first place. CSS was never "clean and beautiful", it was and continues to be an eternal headache.

<comment><USER14> > It never worked well

Don't confused 'it never worked well' with 'i never understood how it worked'.

'Good'[1] front-end/CSS developers have a very good understanding of float quirks, the box model and how to properly vertically centre things.

Just because I don't understand how pointers in C work doesn't mean that C doesn't work well.

But yes - CSS isn't ideal.

[1] Where 'good' is similar to 'stockholm syndrom'

<comment><USER15> > Don't confused 'it never worked well' with 'i never understood how it > worked'. 'Good'[1] front-end/CSS developers have a very good understanding > of float quirks, the box model and how to properly vertically centre things.

Great. How many "good" CSS developers are there, and what is their hourly rate? If average developers still can't figure it out after its been around for a decade (see [1]), then the language has failed. At the end of the day CSS needs to usable for regular programmers, or its not very useful as a core framework for the Web.

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

</comment></comment></comment></comment><comment><USER16> I've been using CSS Modules in a couple of projects (combined with PostCSS), am pretty happy so far.

I think you could actually go one step further and embed the stylesheet in the React component's module using a tagged template string, I haven't looked into how you'd get webpack to extract this into CSS files, but I'm sure it's possible.

Eg: [https://gist.github.com/AndrewIngram/e3af5e8b70fd89a9a0d3](https://gist.github.com/AndrewIngram/e3af5e8b70fd89a9a0d3)

<comment><USER17> That (extraction) can be done (React Style does that) but for it to be consistent with JS semantics you need to evaluate code at build time because such template strings can contain interpolations from JS world.

<comment><USER16> Ah yes, forget about the interpolation issue. I knew there was a reason I stopped digging into it

</comment></comment></comment><comment><USER18> Shadow DOM completely solves this problem in a better way by scoping styles to a shadow root. The scoping allows the browser to be smarter about style recalc as well.

I do really like the idea of importing CSS into JS as a module to access the classnames and IDs though. I would like to do a similar thing with HTML imports as modules: import references to elements based on id.

<comment><USER19> Unfortunately Shadow DOM inherits CSS properties such as color;font-family.

<comment><USER20> Where do you read that? I just checked the spec and coundt find this exception to the rule.

<comment><USER19> I didn't, it is how it works in latest Chrome.

In all fairness, that's how a blank browser works by default (e.g. Times News Roman is the inherited font-family if you don't specify one) so is very likely the intended behavior.

</comment></comment></comment></comment><comment><USER21> One thing worth mentioning about class composition with CSS Modules is it allows for the convenient ergonomics of Sass's @extend without any of its problems.

Sass @extend is actually counterproductive in terms of reducing filesize [1] and results in unwieldy, unreadable CSS rules [2]. In contrast, CSS Modules achieves true class reusability and optimal de-duplication of styles in a manner impossible with Sass, resulting in a nice Chrome Inspector view because the original classes are preserved and their composition is naturally represented.

[1] [https://tech.bellycard.com/blog/sass-mixins-vs-extends- the-d...](https://tech.bellycard.com/blog/sass-mixins-vs-extends-the-data/)

[2] [http://pressupinc.com/blog/2014/11/dont-overextend- yourself-...](http://pressupinc.com/blog/2014/11/dont-overextend-yourself-in- sass/)

</comment><comment><USER22> The advantage of BEM naming is that it takes 0 effort to find your style definitions in code.

.Button--disabled copied in the browser, will find exactly 1 definition in the project. .components_submit_button__normal__abc5436 will not find you anything.

<comment><USER23> But on the flipside, in the latter case, you don't even need to grep for it -- "components_submit_button__normal__abc5436" reads as "components_{filename}_{classname}...", so you know right away to go look in "submit_button.(css|less|etc)" for ".normal {...".

<comment><USER22> This is certainly a less convenient approach. You always need to parse the class name in your head to open the correct file.

<comment><USER24> As a counter argument, when grepping files you still need to parse the output in order to open the correct file.

And, yes I understand that you can have grep output a path name and pass that directly in as an argument to your text editor. Similarly, it'd be relatively trivial to write a bash function that'd parse the class name and find the correct file to open.

Something like:

        function lookupcss() {
            find . | grep $(expr "$1" : '\(.*\)__.*' | sed 's/_/.*/g')".*\.css$";
        }

</comment></comment></comment></comment><comment><USER17> Also see styling[0] which is a loader for webpack which allows to generate CSS modules with JS.

Files configured to use with this loader (usually `.style.js`) are executed at build time and produce CSS modules. You can use any JS abstractions for that (functions, modules, variables, ...) and any npm package available (color manipulation, typography, ...):

      import styling from 'styling'
      import {smallText} from './typography'
      import {colors} from './theme'

      export let caption = styling({
        ...smallText,
        color: colors.text
      })

[0]: [https://github.com/andreypopp/styling](https://github.com/andreypopp/styling)

<comment><USER25> This is a very cool library. Thanks for the link. Have you used this in any projects yet?

<comment><USER17> We started to migrate away from pure CSS Modules to Styling in our apps. Code didn't hit production yet but we are close.

Writing styles in JS instead of CSS gave us a huge expressiveness boost and allowed to use existing JS tooling such as eslint. At the same time all CSS tooling still can be applied to compilation result (such as autoprefixer).

Also would be fun to write styles in TypeScript — statically typed styles sounds great.

</comment></comment></comment><comment><USER26> "The composes keyword says that .normal includes all the styles from .common" \-- great, except you have the meaning of the word reversed. In the context above it actually means ".normal is part of .common", which is clearly not the intent. If you wanted it to mean that ".normal includes all the styles from .common" then .normal should be "composedOf: common"

<comment> martin-adams Correct. Would the word 'comprises' be more appropriate?

<comment><USER27> I stumbled upon the Github issue and then found the HN reference. I commented with some additional thoughts and keyword options. I don't think 'comprises' would be the best choice here; it has quite a stricter meaning than 'includes' and its synonyms.

<comment> martin-adams What about 'inherits' or 'extends' to match known programming terms?

</comment></comment></comment></comment><comment><USER28> Abstractions are fine and dandy until they break down and you have to pry them open. What I don't understand here, is why the generated code doesn't follow the already established BEM conventions which the posts explores initially.

<comment><USER29> I'm with you, that generated css doesn't look right, something that generated the css BEM style makes more sense.

</comment></comment><comment><USER30> HTML is for hypertext documents, and CSS an organ of the same organism called 'HTML/CSS'. It's made for text documents, and applying it to the implementation of GUI-centric applications has always been an ugly hack. For awhile (90s to 00s AJAX) it was necessary, and now the whole professional ecosystem has built up tremendous inertia over the millions of accumulated people/hours of perfecting this 'competency'/hack. Now though, I would recommend to switch over to building 2D webapps entirely out of SVGs (say with React + Flux) e.g.: [https://github.com/Terebinth/Vickers](https://github.com/Terebinth/Vickers) or, even better, to building them entirely out of WebGL. SVGs are easy and would lead to a wonderfully efficient workflow, but I think WebGL holds the advantage for performance considerations, given the way it goes to the hardware.

<comment><USER31> Moving entirely to svg for user interface has some of its own issues (i.e. there's no default layout engine in svg; everything is essentially absolutely positioned...) but would be interesting to think about. Moving entirely to WebGL would only be viable if you don't care at all about accessibility though. For some subset of applications that might be acceptable (i.e. games), but for something like gmail or other similar applications it's definitely not.

<comment><USER32> You just have to create widgets libraries, compile them to WebAsm or something alike, and export an event-based framework for the developers to use. It can even be in another language, compiled to WebAsm.

Or, alternatively, you can just use Flash, instead of cloning it.

</comment></comment></comment><comment><USER33> Hasn't this been already done in webpack (css-loader with local scope)?

[https://github.com/webpack/css-loader#local- scope](https://github.com/webpack/css-loader#local-scope)

<comment><USER17> Webpack's css-loader implements CSS modules specificaton, see [https://github.com/webpack/css-loader#css- modules](https://github.com/webpack/css-loader#css-modules)

</comment></comment><comment><USER34> This seems like too much abstraction (magic) of things. Plus those auto generated classes really look odd and would make debugging difficult.

<comment><USER35> I assume soucemaps would solve this.

<comment><USER36> It's lovely to assume this, but I see no mention of sourcemaps anywhere. This was my immediate gripe, debugging.

Yea, the class name should point you to the file you want to look at, but that is still manual legwork. And the whole atomic css-like pitch he has with the over-the-top `composes` functionality looks like its own nightmare.

I'll watch from over here and see if this pans out for ya'll.

<comment><USER35> I can't speak from experience with regards to this particular approach, but I've worked with css-modules with webpack (css-loader), and debugging the class names is no problem at all, CSS source-maps point to the source, you can view the source code within your developer tools. It shouldn't really be any different than debugging Sass generated CSS, for example.

</comment></comment></comment></comment><comment><USER20> Doesnt the shadow-dom solve the problems with css modularity. You just write the css for your component, and it doesnt leak into anything else... Why do you need something like css-modules?

<comment><USER37> This is actually perfect for shadow dom, because it allows composition.

You gotta remember, Shadow Dom is a double edged sword, - while it prevents styles from leaking in, it prevents styles from cascading too. And sometimes, cascading was a good thing. Without it, you need to reapply base styles, and that's annoying. With this approach, you can compose component styling by declaring what to inherit.

</comment></comment><comment><USER38> I've been using JSS for everything. It makes the most sense to me. It's minimal in size and function to the point that any extra functionality can be quickly and easily added via `jss.use(plugin)`. And it's maximally modular. Every class is namespaced, and exporting everything to a single sheet for production builds is super simple, as it should be.

[https://github.com/jsstyles/jss](https://github.com/jsstyles/jss)

</comment><comment><USER39> Aren't methodologies like SMACSS addressing such problems?

I found interesting how the whole thing is specifically related to someone reading the CSS and not used to SASS.

<comment><USER39> Forget the last sentence, was referring to another link.

</comment></comment><comment><USER40> Right, but what about the name? This isn't Cascading Style Sheets any more. Hmm let's see, Composable Style Sheets. There. Oh, wait...

</comment><comment><USER41> I was first introduce to the 'CSS as code' concept by Blake at [https://github.com/blakeembrey/react-free- style](https://github.com/blakeembrey/react-free-style) \- worth taking a look if you're considering using one of these tools.

</comment><comment><USER42> Am I the only one who scrolled up and down a few times just to verify the background was changing its color and it wasn't a bug in f.lux which kicked in way too early for sunset?

</comment><comment><USER43> How does a post get to number 1 here with only 5 up votes?

<comment><USER44> There's extra weight to comments and how fast the upvotes are. If all votes are instant it'll go higher than votes over a longer period.

<comment><USER43> This is not great. I know there are controls in place to stop chain voting, but if it only takes 5 votes in 5 minutes to reach number 1 then the system is wide open to abuse.

<comment><USER45> Most systems are vulnerable if you poke around a bit. In my experience the HN voting ring detector is pretty wily.

<comment><USER43> That I agree with :)

The problem is that no system can detect signal in five votes. The numbers are just too small to be significant.

</comment></comment></comment></comment></comment><comment><USER46> Surely not the future.

<comment><USER47> Not sure why you're getting downvoted. Problems with CSS at Scale are very real (as mentioned in the slide). But this is a super complicated solution. Its like one of the head-over-heels approaches in JoelOnSoftware blogs. Surely there has to be a simpler way.

Its good that the authors are trying. But just look at the picture on this article captioned "This is how intensely we've been thinking about CSS". That's where the whole complexity comes from I guess. Good solutions present themselves and fit naturally.

<comment><USER48> > Not sure why you're getting downvoted.

Because it doesn't contribute anything but nonconstructive criticism.

> Good solutions present themselves and fit naturally.

Complex problems require complex solutions.

Also, what's so complex and non-fitting about this solution? Explaining that (and your alternative solution) would be much better than simply criticizing as you and GP did.

> Surely there has to be a simpler way.

There's a technically simpler way: modules being part of the CSS spec. But they're not, so even if technically simpler as a solution, it's a political nightmare on which we developers have no control whatsoever.

Driving forward the status quo with hacks (like to-JS transpilers did) is nothing but beneficial. Hacks drive standards.

> "This is how intensely we've been thinking about CSS". That's where the > whole complexity comes from I guess.

How much have you been been thinking about CSS and fighting its flaws? Obviously not a lot.

<comment><USER46> > Because it doesn't contribute anything but nonconstructive criticism.

No, it's just an opinion and a comment on the sensationalistic article (sub)title.</comment></comment></comment></comment>


Absinthe – GraphQL implementation for Elixir - <AUTHOR> https://github.com/absinthe-graphql/absinthe <comment> benwilson-512 The Github page may not be of much interest unless you're trying to get started, so let me say a couple words about our subscription implementation that's in the 1.4 release candidate.

The idea with GraphQL subscriptions is that a client can submit a document that is run in response to an event on the server, which pushes the result of that document to the client. So if you had a UI showing new orders, you might have a subscription that looked like:

      subscription {
        orderPlaced {
          id
          customer { id tableNumber }
        }
      }

When an order is placed you can publish an event to this subscription field either manually, or setup pubsub relationships in the schema itself.

Here's the challenge: Suppose loading the customer of an order requires a DB lookup. If you have 100 people who all submit that subscription, and you run each of those subscriptions independently, you're going to end up with 100 individual database lookups for the same customer.

De-duping documents can help; if the documents are identical and the context you're executing them in is identical, you can just execute it once and push the values out. The problem is if you have authentication or authorization rules in the document then you can't really do that, each document needs to be executed individually within the context of whoever submitted it.

One of the main features of our subscription implementation however is that the batch dataloading mechanisms we have to avoid N+1 queries within a single document can also work with sets of documents. When an order is placed we take the full set of documents triggered by that event and run them as a batch, so any redundant DB lookups can get coalesced into a single query.

Elixir itself has been a huge help here. We can achieve this batched document storage and execution without any external dependencies like Redis and, because we integrate easily with Phoenix PubSub (other backends possible) we get cluster support for free also without any external dependencies. Add in linear scaling with the number of CPUs and it's really been a fantastic platform to build this on.

</comment><comment><USER2> We're in the final stretch of migrating our old node/mongo/REST stack to elixir/postgres/graphql (with Absinthe), and I'm absolutely loving it so far. Elixir is a great language, and Absinthe is very easy to use, even for a graphql noob like me. Even new/experimental features like absinthe_phoenix and absinthe_ecto have been virtually flawless.

I guess the real test will be when we deploy it to production on Tuesday!

<comment><USER3> Why did you decide on migrating so many parts at the same time? Curious what pushed you to make the change.

<comment><USER2> Basically, our purpose for the API changed. The old stack was created first as an MVP, then evolved a lot over time. We decided to make our API useful not just for our front end, but also for developers.

The mongo "schema" was a mess, and our data actually has quite a lot of relations, so postgres was an obvious choice. That was probably the most important change.

None of our current engineers have much experience in node (the one who built the api originally no longer works for the company), and we all dislike it as a language. The code itself was a mess, and would need to be rewritten even just to switch to postgres. Ideally, we wanted a language that was typed, functional, and good for web programming. We built small prototypes in Nim, Rust, and Elixir, and Elixir just ran away with it, even though its typing is less than ideal.

The graphql choice (and the direct impetus for the rewrite) was basically because we decided to make our api useful not only for our front end, but also for our users to interact with directly from their code. For this to be reasonable, the endpoints needed to be completely restructured, and we needed to expose a lot more of our database. It seemed pretty clear that having a single graphql endpoint to expose all our data would buy us a lot in terms of being developer-friendly. Even just exploring in GraphiQL is so much better than reading docs for a REST API.

Overall, it's taken about two months of my time plus the last couple of weeks of one other engineer's time to recreate it all and migrate the data.

<comment><USER4> Can you expand on what made you choose Elixir over Nim?

</comment></comment></comment></comment><comment><USER5> DailyDrip has a really great, free episode on using Absinthe to make GraphQL servers: [https://www.dailydrip.com/topics/elixirsips/drips/graphql- wi...](https://www.dailydrip.com/topics/elixirsips/drips/graphql-with- absinthe)

In general, DailyDrip has some of the highest quality educational material I've found for Elixir (and a few other technologies).

</comment><comment> benwilson-512 Hey folks! I'm one of the Absinthe co authors, happy to answer any questions!

We're hoping to get the 1.4 release out soon, it's was delayed a bit to make sure some features were in place for the book. For now though the 1.4.0–rc is available and we've been using it in production.

<comment><USER6> Hey Ben, thanks for all your great work on Absinthe (and for being so helpful on Slack!)

<comment> benwilson-512 Thanks! Stay tuned for for a deluge of new guide content: [https://github.com/absinthe- graphql/absinthe/pull/416](https://github.com/absinthe- graphql/absinthe/pull/416)

We've been super busy getting the book finished but we want to make sure that we've also got everything someone needs to get going available in the docs.

</comment></comment></comment><comment><USER7> I'm super excited to dig into [https://pragprog.com/book/wwgraphql/craft- graphql-apis-in-el...](https://pragprog.com/book/wwgraphql/craft-graphql-apis- in-elixir-with-absinthe) once I get through my current book queue!

</comment><comment><USER8> Congrats brwcodes and team. I'd love to host you at GraphQLPDX again and do deeper dive into the library. We've missed you!

<comment><USER9> Thanks! I think I'm finally coming up for some air; I'd love to come back and chat Absinthe sometime soon.

</comment></comment><comment><USER10> Subscriptions?

<comment><USER9> (Bruce Williams, Absinthe's co-creator here). Subscriptions are part of our v1.4 release (currently in rc, stable release imminent). We support subscriptions both over Phoenix Channels and normal HTTP (Server-Sent Events)—it's built to be rather extensible. We did a talk at ElixirConf recently that illustrates some of the design decisions and motivations: [https://www.youtube.com/watch?v=PEckzwggd78](https://www.youtube.com/watch?v=PEckzwggd78)

</comment></comment><comment><USER11> Why is the name of this project so obnoxious

<comment> benwilson-512 Sorry to hear it's a bother to you. The Scala implementation of GraphQL is called Sangria, so we thought we'd continue the theme. It also has the perk of providing some fun design opportunities.</comment></comment>


Security v usability: cracking the workplace password problem - <AUTHOR> http://www.theguardian.com/media-network/2015/oct/27/password-security-usability-workplace-problem <comment><AUTHOR> I'm not an expert, but isn't the advice in this article wrong?</comment>


In Chrome 36, you can no longer disable the notification icon in the menu bar - <AUTHOR> http://www.reizbombardement.de/archives/in-chrome-36-you-can-no-longer-disable-the-notification-icon-in-the-menu-bar-os-x

<comment><USER3> I'm confused about why this feature continues to ship enabled by default. AFAICT the de facto standard is to have users opt-in to menu bar icons unless the app is only a helper or intended to be used solely from the menu bar - <USER2> the very least, remembering whether it was enabled/disabled in flags between builds/updates would be acceptable, IMO.

</comment><comment><USER4> The flag has been removed but you can hide the icon by using an entry in the Chrome menu.

<comment><USER5> I think I was able to turn it off this way, but I had to restart my browser to get rid of it.

The icon should definitely be off by default.

</comment></comment><comment><USER6> Since Chrome forked WebKit, it's been going downhill. For the past little while, with each new version of Chrome, I notice more annoyances and bugs. I recently switched back to Safari as well, and while it's not perfect, it's better than Chrome IMO.

</comment><comment><USER7> I'm confused... I've been using chrome for what seems like forever... I'm on 35 now... always OSX. Never have I seen a menu bar icon for chrome... I certainly dont have one right now and I've never disabled it...

<comment><USER7> Given the flag is references Notification Center, though... and I do get chrome notifications there... I would assume maybe if you're on an older version of OSX that chrome does this, with the lack of the notification center?

<comment><USER8> No, I'm on chrome 35 on mavericks and see it. I've seen it for a long time now actually. You don't have this?

[http://i.imgur.com/6pFdIMG.jpg](http://i.imgur.com/6pFdIMG.jpg)

<comment><USER7> Nope. And im on a 100% fresh Mavericks install with Chrome installed yesterday and don't see it. (New job, new macbook)

</comment></comment></comment></comment><comment><USER9> Chrome is quickly starting to become a bullshit Google product with no real value, not even as a web browser.</comment>


Tim's Faces - <AUTHOR> http://timsfaces.tumblr.com/?og=1

<comment><AUTHOR> I know this is pretty silly, but at the same time I find it interesting. It makes me wonder what effect stuff like this has compared to the more usual commercial and political channels of influence.</comment>


'Titstare' app at TechCrunch: women in tech deserve better - <AUTHOR> http://www.theguardian.com/commentisfree/2013/sep/09/titstare-app-women-tech-sexism <comment><USER2> When you gear an entire industry to the immaturity of male youth, what do you expect?

I'm a 46 year old male with almost 20 years of various IT experience (systems administration to .net coding to sql server) and the terms rockstar, ninja, brogrammer don't apply, nor appeal to me. I would argue that the entire IT industry is to blame for this bullshit.

Stop, just for a moment, to think about the culture you're manifesting in the words you use to describe your workforce. Rockstar? Really? Because most "rockstars" wash up, burn out, fade away or simply die and the fall is as quick as the rise.

<comment><USER3> //"rockstars" wash up, burn out, fade away or simply die and the fall is as quick as the rise."//

So exactly as most of us have come to know the industry over the last two decades. :/

</comment></comment><comment><USER4> The Hacker Community's greatest flaw -- a total disregard for predecessors -- may also be its saving grace.

On one hand, we guffaw at those "old timers" who worked in assembler, Fortran, C, or even Perl. "They could never have even imagined what they were missing," we might think to ourselves as we re-discover continuation-passing style while coding our latest, greatest node.js-based file server.

On the other hand, I think there's a good chance that Alexandra, and the rest of the next generation of programmers, will one day think that "rockstars", "ninjas", and "brogrammers" are as ridiculous and outdated as talking sock- puppets or anthropomorphic paperclips.

</comment><comment><USER5> Disappointing to see apologists for their behavior here. At least they have apologised:

[http://techcrunch.com/2013/09/08/an-apology-from- techcrunch/](http://techcrunch.com/2013/09/08/an-apology-from-techcrunch/)

</comment><comment><AUTHOR> I am absolutely amazed that these got anywhere near the stage. I'd always considered TechCruch to be about tech, not sexism.

Frankly, to the two arseholes from Sydney: you're not a larrikin pair. You're two arseholes. No love, a Sydneysider.

<comment><USER6> As an Australian, I was disappointed to see the team attempt to use "Aussie humour" as a shield. What would have been more Australian would be to harden up and apologise.

</comment></comment><comment><USER7> As a woman in tech, I'd like to thank the men in this thread who obviously get what the problem is here. This sort of stuff can only change with a concerted effort from both men and women to change the culture. And it's small steps like standing up to sexist jerks and calling out people who engage in activities like this that will get us closer to our destination.

<comment><USER8> Really, men in tech need to stop thinking that they're somehow not part of the problem and are therefore free to make jokes about it.

You become part of the problem when you do stuff like this.

You don't see white people going around using the word "nigga" lightly, why should it be OK for this sort of joke to be made at a tech conference? It's not OK. It may never be OK. So just stop doing it. You're not Louis CK, you didn't make a career of comedy. Don't think you can tread the line of these social issues and not have it blow up in your face.

<comment><USER9> > You don't see white people going around using the word "nigga" lightly, why > should it be OK for this sort of joke to be made at a tech conference?

Because people who think these are the same thing are delusional.

</comment></comment></comment><comment><AUTHOR> I also want to point out the amazing app to schedule in kids play dates, made by Alex Jordan who is 9!

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

</comment><comment><USER10> I am also a woman in tech, and I have been writing code for a living in the last 15-20 years. I didn't find titstare presentation offensive or demeaning. In fact I laughed quite a bit when they presented it. Even if women are not included in the brogrammers club, I don't find much discrimination in the work environment either. If you are great at what you do, you have the same chance as anybody else. My 2 cents.

</comment><comment><USER11> I'm tired of seeing everything linked to sexism in tech. Moreover, sexism isn't a female only problem: try (as a male) to get a job in a kindergartn or a nursery school.

<comment><USER12> Feminism is about the equality of _opportunity_ and _power_.

You cannot create a picture of equal sexism by demonstrating a low-power, low- economic status, low opportunity-of-career-advancement role (that has traditionally been a female-only occupation due in-part to traditional gender- specific roles around child-rearing) where men who choose to enter it are viewed with scepticism. Especially if that role includes close, private contact with young children.

Feminists like me want an equal share of the good jobs for women throughout all strata of all industries. Men will undoubtably have to take up some of the low-paid shit jobs to compensate—but that is equality.

Sexism _is_ a female only problem and will continue to be as long as men hold most of the _power_ and are afforded most of the best _opportunities_.

<comment><USER11> Do you realize that preventing someone from getting a job because "has traditionally been a female-only occupation due in-part to traditional gender- specific roles around child-rearing" and that "men who choose to enter it are viewed with scepticism" is the very definition of sexism?

Sexism isn't about the industry or about career advancement is about discrimination against a gender for a given category of jobs.

<comment><USER12> Show me proof of prevention.

You are confusing cause and effect.

You are concentrating on a tiny percentage of evidence in the counter direction hugely outbalanced by the weight of evidence in the main direction.

Sexism is a huge problem for women and a tiny problem for men. So small, in fact, it statistically it does not exist.

Look at the balance of the scales not the tiny fleck on one side.

Sexism is about balance not uniformity. It is about power and opportunity. Not everything has to be equal for us to eradicate it.

As long as the problem is stacked against women we should be concentrating on sexism against women.

</comment></comment></comment></comment><comment><USER13> Frankly, TitStare was quite funny. In despite of being tits-related, i can't see how a woman could find it offensive (maybe because she has tits too? i can't see the correlation).

It's more about lonely developers staring at tits.

It's funny to see how the tech industry is passing thru its "feminist" age and just can't understand that THERE ARE differences between men and women, which doesn't mean anyhow that one is better than the other. They are just different. Liking tits is completely normal for a man, joking on it is too. Sexism is something different, a much bigger and subtle problem, against which (too often) women themselves do not react.

<comment><USER14> You need to learn that what is considered (possibly socially) acceptable behaviour amongst your friends, is not necessarily acceptable in the workplace.

If you want a definition of the workplace, it includes hacker meetups, youtube videos, presentations etc. where people of all social groups come together to discuss or create code. I have a very twisted sense of humour that many would find offensive. At work though I keep that side of myself under wraps, not out of a sense of fear but of respect.

The bottom line is this: by collectively changing our behaviour to be less offensive (from the point of view of gender, sexuality, race, religion etc.) then people from those groups feel more safe and secure in that environment. If women truly felt comfortable to enter into the currently male dominated tech industry we get a bigger talent pool to choose from - the competition and skillset increases. Now re-read that sentence substituting 'women' and 'male dominated' with any minority/majority pairing and we start to see how much bigger we can make the number of available programmers.

It may seem dull to have a workplace that's so sterile and inoffensively humourless, but it's work, not a bar.

<comment><USER15> I don't want to spend 8 hours a day in a sterile humorless environment where everyone is scared to say something wrong on the off chance that someone might get offended. Moreover the old work/free time duality is dying. People work form home and do non-work stuff at work.

<comment><USER14> I totally understand this (and jnardiello and pstack's points too). As a counterpoint, I also know of at least one female dev who would think nothing of discussing an app like the one above and joining in the laughs.

I suppose the problem is, do we need to vet everyone for sharing the same humour and standards of acceptability as us? If we're joining the same football team or going to a comedy club and some beers, I wouldn't particularly enjoy hanging out with someone as dull/safe as I am at work. But is it ok to say to a woman, "We'd love to welcome you onboard so long as you don't mind the dick jokes constantly flying around the office."? (Whether explicitly or implicitly, I don't think it is ok).

If we really want to solve the clique-problem in tech, we need to either change the boundaries of acceptable humour and behaviour. No-one _wants_ to spend 8 hours a day in a "sterile humorless environment". I know I had the most fun coding in my early 20s in an office where 90% of us were just out of university and male.

There are going to be more tradeoffs towards inclusiveness as we go forward. Even it reduces the fun sometimes, I think it's the right thing to do.

</comment></comment></comment></comment><comment><USER16> This is actually a good example why you should have a code of conduct as a conference. Bad things on stage happen. As an organizer, you can now write an apology that sounds like the one techcrunch wrote:

[http://techcrunch.com/2013/09/08/an-apology-from- techcrunch/](http://techcrunch.com/2013/09/08/an-apology-from-techcrunch/)

Or, if you had a CoC, it could sound like this:

* "Sorry, we had people on stage that violated the rules we agreed upon beforehand. <list of rules from CoC> They were expelled from the conference immediately."

<comment><USER3> And that would actually seem to be a really reasonable progression for this whole thing. The presenters say "we made an unfortunate judgement call and we apologize" and the conference says "so from now on, here's our short list of rules to avoid uncertainties in the future" and then we all grow up and move on with our lives.

Unfortunately the tech industry seems to be enamoured with not merely being offended, but being offended by the potential that they could have been offended. So we'll circle the drain with everyone beating the drum in support of their own personal agendas for awhile more before this is over.

By that time, someone else will have done something dumb and we'll be ready to have another go.

</comment></comment><comment><USER17> The presenters should not get a response such as "the audience laughed at the numerous tit-related puns." or "The audience found it hilarious." Instead they should have instead met deadly silence, not booing, nothing. Don't feed the troll.

Yes, they had inappropriate ideas, yes, they should not have been let near the stage - but why did _we_ give them the response they were after?

Respecting women doesn't start with pointing fingers at other people, it starts with the individual doing so.

</comment><comment><USER12> This highlights major problems our community suffers while the comments here clearly demonstrate a few more. It's all very disappointing. We are not doing ourselves any favours here.

1\. Many male developers assume that they are in an all-male environment and behave as if they are. Sniggering schoolboy humour, edgy jokes, sexual jokes are a part of young male pack behaviour that is relatively harmless in all- male environments. In mixed environments they are not only inappropriate but they send the signal to other people that this is a young, male environment. Only.

To be inclusive we need to drop the male pack mentality. It is right to call out this behaviour, especially in public environments: conferences, keynotes, hacker sessions. It is also right to call-out all-male speaker-panels for the same reason.

2\. Something 'sexy' is not automatically 'sexist' — it all depends where the power is. A tits-tracking app is (apart from being male-pack humour) an example of those with the power in the room making fun at the expense of those less powerful in the room. It is also 'objectification' — the reinforcement of a women's place as being an object to look at or to have sex with, rather than being an intellectual equal. The women in the room are expected to laugh it off or be subject to more ridicule: "it's just a bit of fun" — This is classic bullying behaviour. As long as these rooms are mostly full of men, women will be powerless to do anything about it. It's no surprise that the fight-back starts only once these incidents hit the internet: our community is bullying women.

3\. A group of women ironically creating a pack-track app that tracks penises wouldn't automatically be sexist. It would almost certainly be funny and ironic for two reasons: 1) the balance of power is against the women 2) they would be shining a light onto male-pack behaviour. Men, still holding the balance of power here, should be able to laugh such a thing off. Sadly many of you here wouldn't.

4\. Commentators here have a fundamental misunderstanding of what Feminism and Sexism is. They are confusing _equality_ with _uniformity_.

Feminism is a civil rights movement. It is about equality of _power_ and _opportunity_ for women. Much like anti-racism it isn't about people making jokes about each other: it is about segregated jobs, inequality of opportunity, economic discrimination.

Seeking equality is not the same as seeking uniformity. Just because you can find an example where women have more jobs in a sector doesn't mean that it _is_ sexism against men. It is often the opposite: low-paid caring jobs around cleaning and child-rearing. The low-pay & low-power is the result of years of sexism, as is the usual case where men who get into these roles quickly rise through the ranks and far more likely to become bosses (despite their under- representation). Some women protect these environments as all-women precisely to give them a chance at promotion. While I don't condone this behaviour I can at least understand it.

Equality is the big picture; the balance of the scales. Men still hold the top jobs, the powerful jobs: Judges, Police Chiefs, Prime Ministers, Presidents, Board Members. Equality of opportunity is the ability to rise through the ranks based on ability not sex.

5\. Most sexism is silent. We do it without knowing we are doing it. Men appoint men because the other men are men like themselves. Men know how to talk to men; Geeky men more-so. We fill our conferences with men, our panels with men, our keynotes with men because it is an easy thing to do. We promote bright young men because they remind us of ourselves. We tell ourselves that we are simply picking the best.

Combating this silent sexism is hard. As long as all we see is men everywhere then we will continue to be silently sexist and women will continue to silently vote with their feet.

6\. It is sexist to say that men are better at programming than women. Unless you have scientific proof that I haven't seen: women are perfectly good at hacking. Any woman who has chosen a career in IT despite the discrimination stacked against her (see above) is already extraordinary yet we will generally treat her less than an ordinary hacker.

Women make up 51% of the population, they are out-performing men in school & university here in the UK and they should therefore be over 50% of our community. But they are not. This is somebody's fault and it is most probably ours. We have created an environment that is hostile to these bright young women and it is lunacy: we are throwing away half of the talent.

If we are throwing away half the talent how can we possibly be hiring the best? Half of whom we hire must be sub-standard!

Which brings me to:

7\. Positive discrimination is the only way to go for our industry. We need to adjust our gender-balance by removing our obvious gender-bias. We are currently clearly discriminating against women so we should address this positively.

<comment><USER18> 1\. Quite the opposite, the woman may feel included, but it's a farce, she isn't one of the guys as long as the guys can't be themselves while she is around. Resentment can form this way

2\. Objectification it is, but I don't agree that that is wrong. You're trying to force a societal expectation over a natural process. More or less it's 'you should have interest in me because of all my qualities, not the sexual ones'. That is a bizarre rewiring of male sexual psychology pushed by non-males, I don't buy it.

3\. keyword 'ironic' if a group of men 'ironically' made anything then it isn't automatically sexist. A group of women non-ironically a pack-track app that tracks penises IS sexist. Why? By the same definition you used above, objectification and a supposedly male belief that I am more than a penis and testicles. (Ironic that men have blow up dolls for sex, and women have a disembodied penis known as a dildo: talking about objectification and not considering the whole of a human!)

4\. No feminism WAS a civil rights movement. If anything it is an ever shifting term that has evolved since it's inception. It is no longer about equality and opportunity, it is now about special rights and privileges (family court system, maternity leave etc.) (my view) You're right, an example of an unbalanced gender work force is not indicative of sexism. Which goes both ways! That means that just because women hold most teaching jobs doesn't mean men are actively pushed away from it, maybe they don't want to teach. Much like your counter point. Just because men hold powerful jobs doesn't mean that women are actively barred from it, they may not want to be in it! I have yet to see one well done study that has convinced me of this. Anecdotes aren't effective. Equality is about opportunity, that may not be reflected in a statistically perfect 50%. Men and women are different, and they can like different jobs. The end goal is freedom, not an enforced literal numbered equality. That was tried in communist systems and people were much more miserable because of it. 5\. Most sexism is silent. We do it without knowing we are doing it. Women appoint women because the other women are women like themselves. Women know how to talk to women; Social women more-so. We fill our conferences with women, our panels with women, our keynotes with women because it is an easy thing to do. We promote bright young women because they remind us of ourselves. We tell ourselves that we are simply picking the best. Combating this silent sexism is hard. As long as all we see is women everywhere then we will continue to be silently sexist and men will continue to silently vote with their feet.

You see what I did there? It can easily be applied to Nursing. So now, do we have a sexist epidemic in nursing, on the eve of a geriatrics explosion? I don't hear ANYONE complaining about that and I am sure that is because of some very sexist reasons.

6.Women make up 51% of the population... they should therefore be over 50% of our community. Bad assertion. Really bad assertion. You're equating numeric equality with actual equality. You're assuming that women want these jobs enough to be 50%. You're assuming they are like men. I for one think they are individuals, not automatons and can have their own interests. This is somebody's fault and most probably ours. Also a bad assertion. With what unbiased reasoned study did you find this?

        If we are throwing away half the talent how can we possibly be hiring the best?
         Half of whom we hire must be sub-standard!

        Say the top 1% is 'the best'. The entire industry cannot hire the best, unless you want 99% of the workforce unemployable for IT related fields.

        2nd. Half of whom we hire must be substandard? No that isn't the case at all, probably the majority of whom you hire is standard (assuming a typical skill distribution)

        More women in the field certainly would help, there would be more of the best, and more standard, and more substandard. You increased the supply of workers, which is a good thing
        from certain view points. Your rhetoric is pretty awful though.

7\. Positive discrimination is one way to change the numbers, but as with affirmative action, the same arguments for and against apply.

<comment><USER12> _1\. Quite the opposite, the woman may feel included, but it 's a farce, she isn't one of the guys as long as the guys can't be themselves while she is around. Resentment can form this way_

That's the point. The guys aren't supposed to be 'themselves' whatever that means, they are supposed to be working — as part of a team. There is already resentment: that is why there is a need for equality at work.

 _2\. Objectification it is, but I don 't agree that that is wrong. You're trying to force a societal expectation over a natural process. More or less it's 'you should have interest in me because of all my qualities, not the sexual ones'. That is a bizarre rewiring of male sexual psychology pushed by non-males, I don't buy it._

 _' You're trying to force a societal expectation over a natural process'_

The objectification of women by men is societal, not natural: not all cultures do it & not all men do. Nature is far more complicated than you suggest: there aren't just two genders there is a sliding scale of gender. Does you idea of 'male sexual psychology' include gay men? transgender men?

At work you should have interest in me because of my skills no matter my gender or sexual orientation.

 _3\. keyword 'ironic' if a group of men 'ironically' made anything then it isn't automatically sexist._

Not true. Some things a group of men 'ironically' make won't be automatically sexist. But many things meant to be ironically sexist and/or peurile just end up being demeaning. While to a degree irony _is_ in the eye of the beholder a joke made by the more powerful that is percieved by the target as offensive is usually just bullying.

 _4\. No feminism WAS a civil rights movement._

As long as people make arguments like these Feminism very much _IS_ a civil rights movement.

 _You see what I did there?_

Very clever.

 _' we have a sexist epidemic in nursing'_

Really?

 _2nd. Half of whom we hire must be substandard? No that isn 't the case at all, probably the majority of whom you hire is standard (assuming a typical skill distribution) .. More women in the field certainly would help, there would be more of the best, and more standard, and more substandard. You increased the supply of workers, which is a good thing from certain view points._

If we are currently not using near-half the population then we must be missing half of the best people. Was it my use of the word standard that you object to? How about we go with 'average'. Take 100%. That's 50% above average, 50% below average. If you add another 100% you can put the two 50%s together to make a group 100% above the old average.

 _Your rhetoric is pretty awful though._

Nice.

 _7\. Positive discrimination is one way to change the numbers, but as with affirmative action, the same arguments for and against apply._

The same arguments for and against _what_ apply?

Feminism is needed because society still awards the most powerful, highest paid jobs and most of the best opportunities to advance their careers to men. Equality is needed because society gives these things to straight, white men.

While the days of blatant to-the-face discrimination may be over in much of the western world there is still plenty of silent discrimination occuring. I beleive most young men don't realise they are doing it — they are just behaving like their peers and would be appaled if it was pointed out to them. I am hoping that if we start calling it out they will realise and gladly change their behaviour. Arguments like yours are badly disguised sexism portrayed as 'the real' equality that fail to take in the level of the field we are playing apon.

</comment></comment></comment><comment><USER19> When I see such developments, I conclude that society does not feel the pain enough yet.

The pain that inevitably _will_ catch up with us, for all the real problems we create but do _not_ solve.

</comment><comment><USER20> What is sexist about CircleShake? It's not about women at all.

<comment><USER16> It is a very manly gesture that implies a mental image of the someone else being the subject of the gesture.

But first of all, it is very immature and tasteless and shouldn't be done on stage.

<comment><USER21> The pictured "other sex" could as well be the "same sex" for all you know -- OMOPHOBIA! CHECK YOUR PRIVILEGE!

I'm just joking, of course, and I agree that this app was immature and not deserving of any space at Disrupt (and goes doubly for Titstare, horrifying). Still, this whole PC thing sometimes can feel like walking on eggshells, as I've just demonstrated to you.

<comment><USER22> _> Still, this whole PC thing sometimes can feel like walking on eggshells_

Important stuff is rarely easy or simple.

</comment></comment></comment></comment><comment><USER23> Just wait until the guardian learns about shake weight.

</comment><comment><USER24> This was both a massive waste of time and effort. A truly interesting app would be one that measures facial symmetry. Humans tend to appreciate symmetrical features, same length of arms, legs, eye alignment, etc. I can see where this too could be abused, sadly. But at least it would have a marginally better chance to have a market. And it would provide a interesting technical challenge.

<comment><USER3> While I agree with your point, I don't see how being physically attracted to a person's symmetry is any different than being attracted to the dimensions of their hips or the size of their breasts other than being more presentable to an audience. It would be more sensible from the standpoint of the presentation, but any of those people pitchforking over focusing on physical attraction to physical attributes of human beings in this thread would have to maintain the same incredulity over one measuring each body part for symmetry.

</comment></comment><comment><USER25> So..

"TitStare" \- sexist "DickStare" \- not sexist

Got it.

<comment><USER26> Genuine question: Is there a dickstare app? And if so, is it not also considered sexist?

<comment><USER25> I don't know if there exists such an app, but it would probably not be considered sexist. Just like affirmative action / employment equity is not considered racist.</comment></comment></comment>


Facebook Oops: employee hotline to put friend and family at top of support queue - <AUTHOR> https://www.cnbc.com/2019/03/14/facebook-oops-special-employee-hotline-for-faster-customer-support.html <comment><AUTHOR> "… Primarily, employees submit requests when a friend gets suspended from their account or forgets their password. They can also be used to help friends who run businesses submit an appeal to Facebook if their business submits an ad that gets rejected by the company. …"</comment>


Time management hacks - <AUTHOR> http://www.slideshare.net/egarbugli/26-time-management-hacks-i-wish-id-known-at-20 <comment><USER2> Look at your TODO list and check if you can:

Eliminate - Is this really needed to be done? What if I just don't do it?

Delegate - Do _I_ have to do it? Is it ok if someone else does it for me?

Automate - Will I have to do this again? If yes, can I automate it?

<comment><USER3> ^ This is much more helpful than the posted content; which is essentially a collection of quotes on time management.

</comment></comment><comment><USER4> "Things I wish I'd known at 20: Your time is worth $1000/hour, act like it"

Actually, for most 20 year olds that's not true. For me, for instance, it was absolutely a good tradeoff of time and money for me to catch a train to the airport, taking 1 hour and $10, instead of catching a $50 cab for a half hour trip (therefore, I am saying that half an hour was worth less to me than $40). Clearly he meant this 'metaphorically', but when your metaphor breaks down so easily, it might not be as meaningful as you thought. What did he actually want to say there? Was it something less pithy like 'value your time'? 'Consider the opportunity costs of everything you spend time on'?

<comment><USER5> Lets say that 30 minute cab ride cost an additional $40. If your job is paying you $8 an hour then you have to work an extra five hours for it. Taking the bus didn't cost you half an hour, it saved you four and a half.

<comment><USER6> Your job may be paying you $8/hr, but if you can be doing something to move up to a higher paying job, the value of that activity may well be >$8/hr

</comment></comment></comment><comment><USER7> My best time management hack was replacing my todo list with a calendar. With todo lists I tended to put things off for later and never got everything done. With a calendar I'm forced to commit to a specific time.

</comment><comment><USER8> It's missing one slide: "it's more important to be happy than productive". Crossing stuff off your TODO list with maximum possible speed is not the end goal in itself.

<comment><USER9> What if being happy is on the TODO list?

<comment><USER10> Then you are bound to fail.

<comment><USER11> Unless you can be happy in hour increments.

</comment></comment></comment></comment><comment><USER12> The biggest hack I have was using 20 minutes countdown clock like <http://e.ggtimer.com/20minutes>. And it must be easily accesible from the Bookmarks toolbar so I can easily select 20 minutes, etc. and then get going. I think this relates to point #7: "We're always more focused and productive with limited time". :)

</comment><comment><USER13> The simplest and easiest way to get more important things done:

Ask yourself three times daily, via Outlook reminder or whatever is convenient:

"Am I inventing things to do to avoid the important?"

This is from the book The Four Hour Workweek, an excellent, excellent book. I've listened to it twice now (26 hours). This book has changed my mindset and has made me much more efficient and effective at work, and life in general.

Also suggested in the book, time tracking software like rescuetime.com or Manic Time is extremely eye opening. It was astounding how long I was spending writing emails. Now I have various email templates for common issues I face. What a great book.

[Edit]: Well that is quite the coincidence: another article on the front page of HN talks about Tim Ferriss: <https://news.ycombinator.com/item?id=5470252>

<comment><USER6> The key to productivity is to harness procrastination: Always have something else to avoid, that makes your work seem like procrastination. Make up a dreaded obligation, so that work for your other goals is seen as an escape.

</comment></comment><comment><USER14> The only one I don't agree with is 21 - "Yesterday's home runs don't win today's game".

Whilst you can no longer do anything about what happened yesterday, it can still have a huge influence on how today goes, particularly if you spend much of your day influencing other people, and you often need to keep that in mind.

E.g. - I'm preparing for a presentation with a director - did my last interaction with him go well? If not, I'm probably going to have to work extra hard at getting my message across.

Unfortunately a lot of people don't seem to get this and treat pretty much every interaction as a self-contained thing, not realising what effect existing preconceptions will have on this interaction, and not really thinking about what impact this interaction wil have on future ones.

<comment><USER6> You didn't read the whole quote. It says to focus on the present and future, not rest on past laurels.

The quote was "Yesterday's _home runs_ don't win today's game" not "Yesterday's _practice_ don't win today's game".

<comment><USER14> But yesterday's home runs may well have a psychological impact on both you and your opponent in today's game.

Not resting on your laurels is fine, but putting what happened yesterday totally out of your mind when you come to today's game/task isn't always the best thing to do.

</comment></comment></comment><comment><USER15> Time management is knowing your limits and navigating around them. Or, in HN- speak, "optimizing for your productivity given a constraint of 24 hours."</comment>


Ask HN: Best approach for adding an API to an existing rails app - <AUTHOR>

Hey, built this prototype game http://www.vvx.io/ - think it could be fun to allow API access so people could create bots that trade on the exchange. (e.g. scrape reddit for youtube videos, seed and buy/sell them onto the exchange.)
VVX.IO was my first full end-to-end just-me programming experiment. I was up until this a front-end and product guy (don't even code in my day job - the game is a part time labour of love) - so approaches to an API are new to me - there seem to be a lot of options and guidelines out there for offering APIs - from 3rd party services (mashape) to best-practice on auth etc. -  what would you guys recommend as a good place to start?
Thanks a lot! <comment><USER2> Here are a couple of tutorials which may get your brain juices flowing...

<http://railscasts.com/episodes/322-rabl?view=asciicast>

[http://railscasts.com/episodes/352-securing-an- api?view=asci...](http://railscasts.com/episodes/352-securing-an- api?view=asciicast)

[http://railscasts.com/episodes/348-the-rails-api- gem?view=as...](http://railscasts.com/episodes/348-the-rails-api- gem?view=asciicast)

<comment><AUTHOR> Cool. Thanks man.

</comment></comment><comment><USER3> Make sure you give RocketPants a look:

<https://github.com/filtersquad/rocket_pants>

</comment><comment><USER4> Check out Grape. (<https://github.com/intridea/grape/>)</comment>


Cool additions by Dropbox Interns - <AUTHOR> http://blog.dropbox.com/?p=875

<comment><USER2> Nice to see that interns seem to choose the topic they'd like to work on and feel like making really useful work! Pretty skeptical of the code obfuscator part. Even written from scratch this will not prevent people to deobfuscate it in the end.

<comment><USER3> It's not possible to reconstruct variable names that are replaced with arbitrary strings.

<comment><USER4> You seem to have not heard of the field of software reverse-engineering. If you think obfuscated JS is hard to understand, keep in mind that people like DVD Jon typically reverse-engineer algorithms out of optimized assembly.

<comment><USER3> You are completely making assumptions about who I am and what my comment means outside of what is literally there in the text of it. I never said you can't get algorithms out of obfuscated source, I said you can't get variable names.

A lot of JS code ends up getting deployed with references to future planned unreleased features. Fairly simple code obfuscation works completely to hide that form of leak. See the leak about Facebook's future integration with some music service that came out from a javascript string without there literally being any functionality to go along with it, among a number of Google+ feature leaks that came out similarly.

Obviously you can infer what the variable name might be, but you can't get the original variable name back. Was a variable count or counter? Index or i?

In reality I just thought that "Even written from scratch this will not prevent people to deobfuscate it in the end" is exceptionally silly; it's implying that existing deobfuscators use knowledge of the obfuscators in their process of reversing it. They clearly do not, and an obfuscator written from scratch is almost certainly strictly inferior to existing solutions.

I decided not to attack someone for being slightly naive and just mention something that is legitimately protected by obfuscation. Apparently that is the wrong thing to do on HN and I need to be snarky to avoid people assuming that I'm a moron.

</comment></comment></comment></comment><comment><USER5> I remember writing a code obfuscator for my first job at company XYZ ;-), not really a pleasant experience. That's why interns or entry level employees do that.

</comment><comment><USER6> "and came from a variety of schools (MIT, Stanford, Brown, CMU, Tufts, Chapman and University of Ontario"

 _eyeroll_ Starting the elitism early, I see.

<comment><USER7> And the message of this comment is?

</comment></comment><comment><USER8> So Dropbox security is based on a code obfuscator? And was it an intern that let us log into any dropbox account with any password? Kidding, but seriously, they need to get more interns because one of the most requested feature for years on their site is remote wipe ([https://www.dropbox.com/votebox/35/remote-destroy-purge- opti...](https://www.dropbox.com/votebox/35/remote-destroy-purge-option-if- laptop-is-stolen)) and they never implement it. Granted its not an entirely reliable method but its better than not offering it.

<comment><USER3> Every major company uses code obfuscation/minification/compilation on their javascript. It's not really clear what they mean though...

<comment><USER5> obfuscation != minification != compilation

<comment><USER3> Compilation where the source and target language are the same = obfuscation and minification</comment></comment></comment></comment>


Sometimes You Just Have to Put a Product Out There  - <AUTHOR> http://www.zurb.com/article/1081/sometimes-you-just-have-to-put-it-out-the

<comment><USER2> Not sure if this is applicable to a company as large and established as Apple, but I'm reminded of this quote:

"If you're not embarrassed when you ship your first version you waited too long."

<comment><AUTHOR> Think it can be totally be applied to Apple.</comment></comment>


Look At All These Guns People Got for Christmas - <AUTHOR> http://www.theatlanticwire.com/national/2012/12/look-all-these-guns-people-got-christmas/60306/ <comment><USER2> What astonishes me about the AR-15 is the cost, roughly $900. I'm not sure that it's practical for hunting, which leaves you two practical (and legal) uses: target shooting, and self defense in the event of a zombie apocalypse. I haven't gone target shooting in a while (since Nixon was president), and at $900 I'll take my chances with the zombie apocalypse.

</comment><comment><USER3> As a European, I cannot understand the reaction of people buying weapon (and especially automatic rifles) after such a tragedy.</comment>


How the Mustang would look if Microsoft ran Detroit - <AUTHOR> http://news.cnet.com/8301-10805_3-57401890-75/how-the-mustang-would-look-if-microsoft-ran-detroit/?google_editors_picks=true <comment><USER2> I saw some tech-tricked-out cars like this at SXSW this year. All I could think was, "distracted driving." I fear the roads are going to become more dangerous as manufacturers integrate more screen technologies into the auto.</comment>


The Collapsing Leviathan - <AUTHOR> https://www.scottaaronson.com/blog/?p=4816 <comment><USER2> > a hundred thousand Americans are now dead from covid, and hundreds of > thousands more are poised to die

Is he saying that hundreds of thousands more Americans will die, or hundreds of thousands of people across the world? If it's the former, I don't think that's going to happen. Most projections seem to show us hitting 200k in the worst case.

It also seems early to be convinced that we're in a new "Great Depression".

Things are bad, but this post sounds a bit like pessimism porn.</comment>


Apple says iPhone 4 algorithm is to blame, not antenna - <AUTHOR> http://arstechnica.com/apple/news/2010/07/apple-says-iphone-4-algorithm-is-to-blame-not-signal.ars <comment><USER2> Let me guess: they're trying to calm the media storm by releasing a quick workaround while the real hardware issue will be solved in the next iteration of the iPhone. Maybe by just applying a coating?</comment>


Tell HN: I work 3 hours a day and I am proud and productive - <AUTHOR>

I work 3 hours a day.
The setting: overloaded, taking on mulitple roles, work keeps piling up, people on the management side are not technical - but most of the tech workers don't complain and just what they got to do ...or they leave as some have done)
How I cope with it now: I couldn't stop thinking about work..at night and even on the weekends. I felt I was going to have a (light) nervous breakdown. But now...I tell myself that my goal at work is not to solve provlem xyz or get project xyz stamped as done. My goal is to come in and do 3 hours of work. Yes 3 hours that is it..but the hardest and best work that you can do while trying not to compromise quality...what ends up happening is that my 3 hours are sometimes better then my 8 hours of slow crap. And if I don't do anything else or my productivity drops that is fine... What ends up happening is that by working in this super fast pace, I can still continue on at a slower pace yet feel satisfied that I did my job and that I have something to report too for the next meeting (we have daily progress update meetings).
Have any of you used similar techniques ? <comment><USER2> I recall a post, I think it was here, that floated by me that said something like the most productive people only actually do about 3.5 hours of solid focused work a day. Now I wish I could find it.

<comment><USER3> I think it was a story that studied gifted young violinists in Austria or Germany- the study said that while average students "worked" all day from 9-5, the gifted ones split work and play- they worked in spurts of a few intense hours, followed by personal time.

<comment><USER4> I seem to recall that what was more important than the amount of time spent studying, was that the students were engaging in deliberate practice; they were putting in focused work intended to extend the boundaries of their skills. I think the analogy here would be that three hours of focused work (door closed, phone turned off, no checking email, no interruptions unless the building is on fire or someone is dying) would produce more, better quality results than 8 (or more) hours of work broken up by dozens of interruptions.

<comment><AUTHOR> I still get distractions and end up doing filler non technical work during those first 3 _high-speed_ hours, but I try to go at a pace as if the world is coming to an end and I need to give my work its full and qualified attention that it deserves...just like I use too when taking tests during my university days

</comment></comment></comment></comment><comment><USER5> I can't say that I do, but my uncle is a hardware engineer and he typically accomplishes an entire day's work in a few hours a day so that he can spend time with his daughter, go to the gym/do yoga, and generally be awesome (like drive around in his Maserati etc..)

He has the life..

<comment><AUTHOR> Is your uncle a freelancer ? As for me, I still have to be in the building physically for 8 hours, but getting 3 fast paced solid hours each day feels great

<comment><USER5> No, he isn't a freelancer. He doesn't have to be in any building, just make sure the work is done.

</comment></comment></comment><comment><USER6> About the same, 8 hours in the building, about 4 doing hardcore work, the others working on lightermanagement type stuff, research, future project planning, non deliverables

<comment><AUTHOR> I have a lot of administrative _crap_ to deal with too, I end up doing those in my 3 hour sprint along with the technical since they are easy wins and I cant deal wuth the fact that I have 8 outstanding items to do, 5 of them are non technica and can be done in 40 mins. In the past, i use to do one or two and felt like I needed a break and just ended up being bogged down with all the context switching

</comment></comment><comment><USER7> at a job I've had they actually told us that they expect 5 hours of work out of us and the rest would just be wasted time, meetings, filler crap, etc so I guess 3 hours is just taking that to the extreme</comment>


Apple Asks Developers to Put 'Sign in with Apple' Above Other Sign-In Options - <AUTHOR> https://www.macrumors.com/2019/06/05/apple-asks-devs-to-prioritise-its-sign-in-button/ <comment><USER2> Also from the article:

> As part of iOS 13, Apple will require all apps that use third-party sign-in > options to include its Sign In With Apple button

</comment><comment><USER3> Why wouldn't you ask?</comment>


Things UNIX can do atomically - <AUTHOR> http://rcrowley.org/2010/01/06/things-unix-can-do-atomically.html

<comment><USER2> This was just posted 4 months ago <http://news.ycombinator.com/item?id=1340115>

<comment><USER3> Hmm, identical URL too. I thought HN had duplicate-URL checking? Or it's only for duplicate URLs within some recent timeframe?

<comment><USER4> Yeah, there's a time limit (or something similar).

<comment><USER5> Given the posts above this, I can't help but wonder how close that time threshold is to four months.

It makes sense though, I mean, if I link to the mozilla.org home page due to a new software release, that shouldn't preclude the next guy from being able to link there when they make their _next_ release, right?

</comment></comment></comment></comment><comment><USER6> ___sync_fetch_and_add, __sync_add_and_fetch, __sync_val_compare_and_swap, and friends provide a full barrier so "no memory operand will be moved across the operation, either forward or backward." These operations are the basis for most (all?) lock-free algorithms._

What's lock-free about that? It sounds like locks to me, only you don't implement them yourself. What am I missing?

<comment><USER7> Compare-and-swap, for one, is a CPU instruction. There's no locking at any SW level with a CAS since you just call that instruction rather than locking, doing a compare, branching, doing a swap, and unlocking. Fetch-and-add seems to be a CPU instruction as well. You can implement these things with a lock, but it's not necessarily the case.

Atomic instructions provide atomicity, but not locking per se. Locking is just another means to atomicity. A lock says "don't schedule another thread to access this resource until I say so", an atomic CPU instruction says "don't execute another CPU instruction in the middle of me". Locks are, as is often the case, both far more powerful and far more dangerous to use.</comment></comment>


Microsoft Removes the 'X' from Windows 10 Update Leaving No Way Out - <AUTHOR> http://www.theregister.co.uk/2016/06/01/windows_10_nagware_no_way_out/ <comment><USER2> I dual boot Windows 10 and Linux Mint 17.3 and I am finding myself more in Linux than Windows recently. Not just because it doesn't spy on me or it doesn't force upgrades but because it runs faster and I feel it is a better environment for programming because it runs less games and has a lot of development options for free.</comment>


New Lawsuit Brings Clarity To Skype's IP Problem (Prognosis: Screwed) - <AUTHOR> http://www.techcrunch.com/2009/09/18/new-lawsuit-brings-clarity-to-skypes-ip-problem/ <comment><USER2> Every angle on this story I've seen so far makes the VCs look completely irresponsible and the Skype founders look like moneygrubbing assholes. All these parties seem smarter than that, I wonder if we will ever get to hear the full story.</comment>


Airbnb and house-sharing firms reduced New York housing stock by 10% – study - <AUTHOR> https://www.theguardian.com/us-news/2016/jun/27/airbnb-new-york-city-housing-stock-reduction-study <comment><AUTHOR> Trying to find the original study. It was paid for by housing advocacy groups who generally oppose Airbnb, so I want to understand their methodology since they certainly have a bias.

Edit:

This looks like it: [http://www.hcc- nyc.org/documents/ShortchangingNYC2016FINALpr...](http://www.hcc- nyc.org/documents/ShortchangingNYC2016FINALprotected_000.pdf)

Here's their underlying logic:

"If the 8,058 units defined as Impact Listings were made available on the rental market, the number of vacant rental units citywide would increase by 10 percent and the vacancy rate would rise to 4.0 percent"

So, in other words, if all of the full-time "entire apartment" listings were to hit the market as vacant units immediately, the vacancy rate would increase by 10%. This is not the same thing as Airbnb reducing housing stock by 10%.

This is actually probably more interesting:

"53 percent of all Airbnb listings are located in one of the following five "macro-neighborhoods" - East Village/Lower East Side (LES), Chelsea/Hell's Kitchen, West Village/Greenwich Village/SoHo, Williamsburg/Greenpoint/Bushwick, and Bedford Stuyvesant/Crown Heights."

Something I think a lot of people don't appreciate about Airbnb's potential impact on the housing market is that a lot of the listings are concentrated in a few areas, so while Airbnb might not impact the housing market that much overall for a particular city, it can have a pretty significant impact on individual neighborhoods.

<comment><USER2> Thanks for tracking that down. I had the same questions. I would be very interested to see followup interviews with a representative sample to investigate the percentage of units that would actually be on the market if not for airbnb.

<comment><USER3> I'm genuinely conflicted about this. On the one hand, I'm all for more housing. It can drive prices down (although not a lot I've seen has ever driven prices down in Manhattan) but at the same time, were I a property owner, I'd want to be able to do with that property as I wish. They're obviously income properties, so why are we mad about them making income in this way?

I guess I'm asking whether or not income properties either a) are already regulated as such (and laws are being flaunted) or b) the desire here is to create laws that tightly scope what a property owner can do with their non- primary residentially-zoned property?

I can't seem to form an opinion yet, so I'm mostly asking for yours, I guess. I suppose I need a bit more education on the debate.

Edit: this isn't where I meant to put this reply. But it's here now, so, if it's slightly out-of-thread, apologies.

Edit 2: if it's easier, can someone point me to a cogent and not-lopsided explanation of the debate?

<comment><USER4> I'm a property owner in one of the identified areas, for what it's worth, and I can give a summarized piece of the debate and some additional information not everyone knows.

One pro-AirBnB argument has to do with property rights, and doesn't have to be rehashed as you implied it ('doing as you wish'). Another has to do with the idea that housing is so expensive, that a renter can help pay his/her high rent by supplementing the income. <\- this latter argument is obviously not part of the 'landlords are renting out entire apartment' complaint.

One anti-AirBnB argument has to do with some of the target areas being gentrifying neighborhoods (Bushwick, Bed Stuy, others; we're not talking about Tribeca here). In these, further increasing the scarcity of housing by taking the apartments out of the long-term rental market increases rent and displaces long-time, mostly poorer residents. This argument is given more by progressives. Another anti-AirBnB argument, this time by the hotel lobby, is that hotels have to pay different taxes, and abide by different standards of code and safety [ similar to the anti-Uber arguments, I guess ] and that it's not fair.

In 2010 a law was passed which made it illegal to rent the entire apartment for less than 30 days. So if you're a renter, for example, you can rent out a room. One item of note is that in the State of New York, occupying a unit for 30 days or more grants one to certain rights as a tenant, meaning the landlord has significant hurdles in pursuing an eviction. I believe this set of laws [ edit: <30 days, not the tenants rights], which I believe went into effect in 2011, is referred to as the illegal hotel law.

One often overlooked fact is that the law here excludes 2 and 3 family homes from the illegal hotel law.

The punchline I'll add is that, in the gentrifying areas I mentioned above, a large piece of the housing stock is 2 and 3 family (especially 3 family) homes.

<comment><USER5> I would question the assertion that Bushwick's (and BK's in general) gentrification is Airbnb driven. Manhattan's rental picture started getting unreasonable around turn of the century. Williamsburg, for example, was pretty much an urban wasteland around 1997 but was already a 'beach-head' of adventerous/artist tribe of Manhattan exiles. Regardless, the displacement of poor people from these areas is self evident.

What I find objectionable in terms of Airbnb is the corrosive effect that the transitional flux has on cities and neighborhoods. Manhattan is now basically worlds largest open air shopping center -- yes a bit shinier than before but not the Gotham of yore (which is sorely missed).

<comment><USER3> Thanks, guys!

</comment></comment></comment></comment></comment></comment><comment><USER6> The situation is even worse in Vancouver. [1][2]

This is a city with Manhattan rents, paid for by Cincinnati salaries... Amid a desparate shortage of housing.

[1] [http://www.cbc.ca/beta/news/canada/british- columbia/vancouve...](http://www.cbc.ca/beta/news/canada/british- columbia/vancouver-airbnb-research-1.3621539)

[2] [https://affordablevancouver.files.wordpress.com/2016/06/airb...](https://affordablevancouver.files.wordpress.com/2016/06/airbnb_and_affordability- marjoribanks2.pdf)

<comment><USER7> I have ratted out two places in my South Granville apartment building that were permanent AirBNB's. My place is good value, and well run, and I believe someone should have the chance to live in it.

<comment><USER6> Did anything happen to the owners? Strata fines? Citations by the city?

<comment><USER7> My whole apartment is owned by a single company. I think they kicked them out. We are allowed to sublease for 6 months of the year, but you have to have the person sign a liability contract with the owning company, and they have to stay minimum 30 days. TBH I am going on vacation for 3 weeks and I want to AirBNB my place out, but I think that is the proper way to use the service.

The market here doesn't support the cash flow to buy and rent condos unless you have a lot of cash, because the wages don't match what one could afford. That Rich Dad Poor Dad shit doesn't work. So someone buying a condo can get like $1600/month, but their mortgage, maintenance, and property taxes are going to be like $3000/month. However I think a case could be made for buying and AirBNB'ing if you are good at it. My gf is a strata lawyer, and I have heard horror stories of people owning 10+ condos in a single building and AirBNB'ing them all out.</comment></comment></comment></comment>


Ask HN: Preparation to deal with economic slowdown of COVID-19 - <AUTHOR> As it is more or less common consensus that economic slowdown is obvious with COVID-19. Considering something we already know is coming what all preparations could one do to tackle it or minimize its impact to self?<p>Also as a lot of Software Engineers hang are found around HN, it would also be interesting to know about some plans or patterns of preparations that might be common things done by the people in this industry. <comment><USER2> There were some things I did once the virus becomes clear. Planning started in January.

* I was looking for other jobs in January, but backed out of that. Choosing instead to keep the job I already had. I did not like the job but it's safe employment at a large company in an essential industry.

* I refinanced my house at a higher interest rate for a massive bucket of cash. I paid off some debt and kept the rest as a large savings net in case things get really bad.

* I waited until the recent market spike on Friday to sell any stocks. I sold 10% of what I had so I could buy stock in industries that are really hurting like airlines or cruise.

* I am writing a shared/distributed operating system. It's not a true OS as I am avoiding work on low level features like kernel, drivers, or hardware acceleration and instead just working on distribution of application execution and multi-computer file system stuff. The pandemic is opening greater demand on data distribution, but aside from media most distribution is pretty archaic and limited to VPNs.

* I should be trying to take my software skills to the next level, but the job doesn't care. I am in an area of spaghetti code, utter reliance on third party code tools, and out dated practices. Instead I just have to make the best of what's there and be glad I still have employment.

* Be patient. All the data suggests the US is still far from peak bottom. Things will get much worse still and then recovery will be very slow. The prior high stock market was highly inflated by developer speculation. It will take many years to recover that. Know this now and plan accordingly.

* If everything falls apart I have a backup employment plan. I am an officer in the Army Reserves. My part time job could become a primary full time job.

* I am also doing research on foraging and trying to figure out home gardening on the cheap in cases everything else fails. 1 Fairytale pumpkin can supply a family of 4 with high nutrition food for a week and they store for 9 to 15 months and 1 plant will produce 2 to 6 fruits. I have several plants already in the ground and some large pumpkins sprouts indoors. I have sprouts of a variety of other vegetables as well.

</comment><comment><USER3> Do well at your job - the people who survive these things the best are the ones who are able to keep their job.</comment>


Chrome OS now bundles webapps in folders - <AUTHOR> http://googlechromereleases.blogspot.nl/2014/05/stable-channel-update-for-chrome-os.html

<comment><AUTHOR> Btw. Here is a screenshot: [http://imgur.com/olvkOio](http://imgur.com/olvkOio)</comment>


It's time for a hyper-crash, say multifractal analyses of the main stock index - <AUTHOR> https://www.eurekalert.org/pub_releases/2018-11/thni-itf112218.php <comment><USER2> > multifractal analyses

Seems legit.</comment>


Erich Bloch, Who Helped Develop IBM Mainframe, Dies at 91 - <AUTHOR> http://www.nytimes.com/2016/11/30/technology/erich-bloch-who-helped-develop-ibm-mainframe-dies-at-91.htm <comment><USER2> Bad URL: should be ".html", not ".htm". Correct URL is:

[http://www.nytimes.com/2016/11/30/technology/erich-bloch- who...](http://www.nytimes.com/2016/11/30/technology/erich-bloch-who-helped- develop-ibm-mainframe-dies-at-91.html)</comment>