Introducing T3: Enabling Large Scale JavaScript Applications - <AUTHOR> https://www.box.com/blog/introducing-t3-enabling-large-scale-javascript-applications/ <comment><USER2> Sorry JS developers. Guess you have to rewrite all your React apps in T3. Yes, I know you rewrote your Angular apps 6 months ago, your Ember apps a year ago, and your backbone.js apps before that, but that's just how front-end dev works.

PS: I'm currently hiring for developers with 3+ years of T3 experience.

<comment><USER3> While this made me laugh because it's an exact description of the last 3 years of my professional life, I am happy new frameworks keep popping up. The holy grail of front end frameworks hasn't been invented yet but with each new framework we ( hopefully ) make some progress.

<comment><USER4> It has been invented[1] and we're bandwagoneering[2, 3] it for you:

1\. [http://reagent-project.github.io/](http://reagent-project.github.io/)

2\. [http://www.meetup.com/Reagent-Minimalistic-React-for- Clojure...](http://www.meetup.com/Reagent-Minimalistic-React-for- ClojureScript/)

3\. [https://www.youtube.com/watch?v=DYzwfekWSzQ](https://www.youtube.com/watch?v=DYzwfekWSzQ)

<comment><USER5> Amazing, a homepage for a js front-end framework that actually has useful content with js disabled, like a web page (as perhaps, opposed to a web app) should.

</comment></comment></comment></comment><comment><USER6> I've checked their examples on [http://t3js.org/examples/](http://t3js.org/examples/) and I appreciate the effort they put in but in general there is one thing I never understood with these examples :

Why most js frameworks relay on very simple examples while they promising the wonderland? I need an advanced sample than a classic todo to evaluate a framework. Something like does multiple async ajax calls, survives page reloads while juggling data / models, and gracefully handles the errors and/or initial states. An example close to a real world project would be much appreciated.

PS: If that matters, in my day time job I'm using Angular...

edit: fixed typo.

<comment><USER7> While it would be nice to have a more complex example than a todo app, studies show that a todo list is the most complex JavaScript app you can build before a newer, better framework is invented: [http://www.allenpike.com/2015/javascript-framework- fatigue/](http://www.allenpike.com/2015/javascript-framework-fatigue/)

</comment></comment><comment><USER8> I don't know much about how to architect JavaScript applications, but I am struck by how much of this stuff seems to be glued together by strings. For example, from footer.js ([https://github.com/box/t3js/blob/master/examples/todo/js/mod...](https://github.com/box/t3js/blob/master/examples/todo/js/modules/footer.js))

        switch(name) {
            case 'todoadded':
            case 'todoremoved':
            case 'todostatuschange':
                this.updateTodoCounts();
            break;

            case 'statechanged':
                this.updateSelectedFilterByUrl(data.url);
                break;
        }

Accidentally wrote 'todostatuschanged' instead of 'todostatuschange' (in keeping with the tense of all the other actions!) and you'll get a silent failure.

Or from isListCompleted() in the list module:

        moduleEl.querySelectorAll('#todo-list li input[type="checkbox"]')

I'm not picking on T3, since all JavaScript frameworks seem to have this problem. There has to be a better way than that!

<comment><USER9> Yes, it is called static analysis [http://en.wikipedia.org/wiki/Static_program_analysis](http://en.wikipedia.org/wiki/Static_program_analysis).

It exists for JavaScript:

[https://github.com/sinelaw/infernu](https://github.com/sinelaw/infernu)

[https://github.com/facebook/flow](https://github.com/facebook/flow)

<comment><USER10> I don't see how static analysis helps the switch-case on strings. It might, if JS had a more expressive (static) type system. An enum type, perhaps?

<comment><USER11> I usually do something like

      var Constants = {
        valueA: function valueA() {},
        valueB: function valueB() {}
      };

<comment><USER12> Why do you use empty functions instead of a number or a string?

<comment><USER13> My guess is than a function will always be a unique object, rather than if it was a number or string, there's a chance you use the same value twice.

<comment><USER14> an object literal would provide the same guarantee but without the overhead of function prototype methods, wonder if there's any other reason?

<comment><USER15> Maybe they're using functions so the values can have names? Perhaps easier to debug.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> For a change it is nice to see a purely architectural JS framework. It solves what I would call a rather important problem of GUI development - what to put where. It also imposes rules of access - who calls who.

Unlike the more encompassing solutions like Ember or Angular it focuses on just that and allows the developer to pick the other parts himself.

Coming from Flex development, I see some similarities with the Robotlegs, PureMVC and the other Flex architectural frameworks. For example Modules look similar to Mediators and T3 Services are much like Proxies and Services of the aforementioned frameworks.

Unlike Robotlegs, PureMVC etc it does not specify where to put models. We should not just ditch this concept because the separation of data and view proved to be useful.

If there is a need for ViewModels then I believe they can reside in Modules. This may be convenient for a virtual DOM - based solution or data binding. The global models can reside in Services.

What the framework is missing is a more elaborate example with React or vdom and server interaction.

It doesn't seem to be over-engineered. All the decision seem to come from practice and not from architectural astronautics.

It may not be ideal, but it looks very practical, well aligns with my view on frameworks and I'll keep an eye on it.

</comment><comment><USER17> I just do not see why Box needed to create another Javascript framework. Am I missing something here? As a front-end developer I get excited about this stuff, but I just do not see what T3 brings to the table that other frameworks do not.

I appreciate that Box have released T3 for free and if people want to use, well then that's great. Nobody is being forced to use it, but it is situations like these where I can't help but wonder if efforts might have been better spent contributing to an existing open source project instead?

To me this looks very similar to AngularJS (albeit a little more stripped down). Looking at their example code, it just feels like they've made their own ES6 modules/class implementation. A better choice in my opinion would have been to take the same path that Rob Eisenberg with Aurelia has taken by making the framework ES6 and then providing Gulp and Babel to transpile it. T3 feels similar to AngularJS in that you spend an exorbitant amount of time writing class-like modules when ES6 and transpilers already give us a cleaner standards based approach.

I do not want to sound negative, I am just offering constructive criticism. I would love to hear the thoughts of the Box team as to why something like React.js would not have worked for them instead. Considering React.js promotes modular component development like T3 does, it makes me question if Box needed to build T3 when React.js and its similar MVC-less approach is the same. It is cool they did and it takes dedication and work to build a Javascript framework, but I feel like perhaps it is wasted effort.

<comment><USER18> React came just now. It's was officially released few weeks ago. T3 team might have started working on it's framework from quite long time ago.

Edit - Just to clarify - Reach and T3 are totally different things. T3 talks about structuring your application components for better code management. There is nothing stopping you from using both of them together.

<comment><USER19> Dividing an app into modules/parts as T3 does is great, but I prefer React's ability to compose and simplicity.

</comment></comment></comment><comment><USER20> I like the concept of the separating concerns and no direct coupling between modules. I think they could have taken it one step further by using messaging but I'm biased there :)

I'm curious why they decided to roll their own modules when the web component standard has been around for a few years. Granted the polyfills may not have been available years ago when they started this but I feel like contributing to those, especially since the coding styles are so similar, would have been very fruitful. Looking at it today I'm not sure why I would use their modules versus web components unless I needed IE8 support.

The jQuery dependency is a little odd; is it going to keep up with the latest version of jQuery or eventually drop it? At a job I had a few years back I had to create a new web application where I was forced to use a platform that required a very old version of jQuery (otherwise it would break horribly) which made using a newer version a little annoying (though obviously doable thanks to noConflict()). It's rare to see frontend JavaScript frameworks with dependencies.

Overall this is pretty neat though I'm not sure I would necessarily use it.

<comment><USER21> You can do inter-module communication via messages. Notice the onmessage() inside the todo example here [https://github.com/box/t3js/blob/master/examples/todo/js/mod...](https://github.com/box/t3js/blob/master/examples/todo/js/modules/footer.js)

As for $ dependency, a small discussion [https://github.com/box/t3js/issues/12](https://github.com/box/t3js/issues/12)

<comment><USER20> Ah thanks for the info; didn't notice the onmessage. Still I'm biased towards my own messaging library but that's neat :)

</comment></comment></comment><comment><USER22> Two things to consider before pulling the yet-another-js-framework card:

1\. Do you have hundreds of developers working on a big application? If not this is not for you. Move on.

2\. Have you seen what it does? Is it a whole new paradigm of MV*? Do you really have to rewrite your angular/ember/react application? From the docs and code you could clearly see it is not heavy weight at all. It is simply a framework that helps you organize your code into modules especially when disparate teams are working on a single app.

This is a framework that has been tested in productions and found useful at Box for over a 1.5 years. Don't be too quick to dismiss things. I think there is a place for frameworks like this for complex web applications.

</comment><comment><USER23> It looks like the TodoMVC[1] example has a bug:

1\. Create an entry "foo"

2\. Check the box, observe strikethrough on "foo"

3\. Check the "check/uncheck all" box (left of input box)

4\. Observe strikethrough still present on "foo"

Digging in to the code[2], it looks like the "model-less" tenet caused the CSS class on the text and checkbox to go out of sync. In React, this would be a re-render and change in the virtual DOM, or in Angular, both would be bound to a shared model/scope.

If the simple TodoMVC example has a bug like this, the framework might not work too well for larger applications.

[1]: [http://t3js.org/examples/todo/](http://t3js.org/examples/todo/)

[2]: [https://github.com/box/t3js/blob/gh- pages/examples/todo/live...](https://github.com/box/t3js/blob/gh- pages/examples/todo/live/js/behaviors/todo.js#L123)

</comment><comment><USER24> It looks interesting but what problem does it solve? modules and services are well understood, the elephant in the room is how to deal with the DOM ,how to build a composite view with its own widget logic, while not having to manually write event handlers,event delegation, and clean up the handlers.It doesn't look like this framework solves any of these issues.

<comment><USER18> Is this what you looking for? [https://medium.com/@addyosmani/javascript- application-archit...](https://medium.com/@addyosmani/javascript-application- architecture-on-the-road-to-2015-d8125811101b)

</comment></comment><comment><USER25> This only serves to exacerbate my analysis paralysis[0] (the paralysis of decision).

[0] [http://en.wikipedia.org/wiki/Analysis_paralysis](http://en.wikipedia.org/wiki/Analysis_paralysis)

<comment><USER26> And even more specific to front-end frameworks and libraries:

[http://addyosmani.com/blog/front-end-choice- paralysis/](http://addyosmani.com/blog/front-end-choice-paralysis/)

</comment></comment><comment><USER27> "Modular Design", "Made for Collaboration", "Promotes Best Practices" says nothing to me.

<comment><USER28> You could check the provided code then. Your comment doesn't say much to us, either.

</comment></comment><comment><USER29> I was skeptical going in but seeing as Nicholas Zakas is involved, I'm cautiously optimistic. For those who don't know him, he has written a number of influential books on JS as well as working on YUI.

<comment><USER30> Agreed. Lots of folks bashing on this thing, but Zakas has a serious pedigree. I have several of his books. I have to think if anyone in JS land is capable of surveying the other ideas out there and distilling some solid concepts out of them for their framework, he's the guy.

</comment></comment><comment><USER31> I don't come from a frontend background, most of my experience is just cobbled together websites that use jQuery and maybe a spot of Angular.

The myriad of JS frameworks is bewildering to me sometimes.

<comment><USER32> I also consider myself a backend developer but have written a non-trivial amount of ReactJS code. It is really a pleasure to work with. I highly recommend next time you find yourself having to do something on the front end, use React.

<comment><USER33> Another guy that enjoys both frontend and backend here.

Something that's holding me back on ReactJS is that I'd like to render pages server side, and I don't want to use Node.js, but Go or Python instead.. and there aren't many folks doing this combo.

(Maybe the best option is a "render server" in Node.js?)

<comment><USER32> Yeah you would have to dispatch your server-side rendering out to a Node process which probably wouldn't be worth it.

</comment></comment></comment></comment><comment><USER34> Here's the first page I found that explains what T3 code actually looks like:

[http://t3js.org/docs/getting-started/module](http://t3js.org/docs/getting- started/module)

I'm surprised to see such tight coupling to the DOM. When they said you could plug in something like React, I figured T3 was mostly scaffolding for dependency injection, cross-component messaging, and global config.

The event handling in particular looks gross. You register for all the events of a certain type across your whole component and then manually filter them in the listener.

<comment><USER35> Feels like they could clean up a fair bit by making those modules as custom elements

</comment></comment><comment><USER36> T3 sounds a lot like Ember-cli's structure:

\- T3 Services -> Ember helpers

\- T3 Modules -> Ember components

\- T3 Behaviours -> Ember mixins

I've also found that the code I'm writing in Ember is much easier to test because of these abstractions.

<comment><USER37> Even closer to Angular's:

\- T3 Services -> Angular Services

\- T3 Modules -> Angular Modules

As for behaviors, they seem closer to the Controller concept in both frameworks, rather than mixin.

</comment></comment><comment><USER38> People here don't know Nicholas Zakas?

<comment><USER39> Exactly what I was thinking. Also a lot of comments here seem to be upset at "yet another JS framework". T3 is actually pretty nice from what I've seen so far and does follow best practices.

</comment></comment><comment><USER40> Interesting comments here to this post. I was introduced first to this concept after watching the original ScaleApp architecture talk by Nic. Since then I have built couple of really large front-end applications spanning large teams. The concepts of this and other such frameworks I find greatly simplify development, testing and allow scaling that backbone, ember or such frameworks simply cannot provide. These concepts do require other frameworks for building functionality, but they use those so called frameworks for their toolsets rather than structure.

If you have ran your application through dependo and the resulting graph crashes the browser, you really need to look at this.

</comment><comment><USER41> MVC is perfect for User Interface applications. Why this is NOT MVC is surprising. Also I was expecting a lot of new web technologies in a framework that was introduced in 2015. Web Components?

<comment><USER42> MVC typically relies on an event model which is difficult with larger applications structured across many developers. If you look at some of the reasoning behind Flux/React this is pretty effectively outlined.

OO and MVC aren't the end all, be all of application design.

</comment></comment><comment><USER43> I spent a lot of time looking at JS libraries and frameworks. From jQuery, to Knockout, to Backbone, to Angular, to Batman, before finally settling on Ember. I am extremely skeptical about the need for more frameworks.

I usually don't give a new JS framework more than a couple of minutes to introduce itself. If it does not look like it will revolutionize how apps are built, I quickly write it off as a slightly different way to slice the pie.

<comment><USER42> Right now the clinet+server-side (isomorphic) story for a lot of these tools is less than outstanding... React, or something like it will likely win in the end. Although I've also been keeping an eye on mercury, riot and polymer. Angular 1.x was too annoying in practical use, and wrt Angular 2, may as well just use React.

<comment><USER44> Have you checked out Meteor.js and skit.js? They seem to me to be the frameworks currently most geared towards reusing code on client and server (e.g. isomorphic - sorry mathematicians).

<comment><USER42> I've looked at Meteor, and haven't looked into skit... admittedly when I looked into Meteor very early on, I didn't like their security model (or iirc lack of).

May take a look again... also, it seemed to be very tied to mongodb, which I didn't mind at the time, but am moving away from.

</comment></comment></comment></comment><comment><USER4> You can't solve a problem from the same level of consciousness that created it -- Einstein

Here is a solution for ClojureScript: [https://www.youtube.com/watch?v=DYzwfekWSzQ](https://www.youtube.com/watch?v=DYzwfekWSzQ)

<comment><USER45> It would be nice if you stopped spamming.

<comment><USER19> Your comment made me curious and I checked his comment history. There is no spam there, just normal activity.

<comment><USER4> If they don't like your opinion they push it down. If you post to help explain what you mean they call it spamming. I feel empathy toward those who act like this. I really do.

</comment></comment></comment></comment><comment><USER46> > We found that almost everything we build fits into one of these three > components

What doesn't fit? I think it's important to know where the framework lacks, they seem to have made some experience with things that didnt quite fit into this component structure.

</comment><comment><USER47> Can someone elaborate how does this compare do Backbone.js which has the same motivation - a basic, not too opinionated, skeleton for your app?

Is this better? Worse? Just different?

</comment><comment><USER48> "T3 is made to be _unopinionated_ while prescribing how some problems might be solved"

You keep using that word. I do not think it means what you think it means.

</comment><comment><USER49> I'm not a fan of heavy duty MVC frameworks on the front end like Angular or Ember. I like T3 a lot. Simple and light weight.

</comment><comment><USER50> Reminds me a bit of Twitter's Flight framework with a little more structure around how application lifecycle is managed.

</comment><comment> drew-y Based on how there examples work, I'd say this is extremely similar to meteor's blaze framework.

</comment><comment><USER51> Is there anyone in this thread who actually took the time to give this thing a shot or...?

<comment><USER52> Yes, am working with it, and seems true to form. The large scale aspect requires a re think. Couldn't be integrated into an entire code base like mine. Too much code, too few engineers.

</comment></comment><comment><USER52> Repo just went down. I know traffic isn't causing it. Did they have a regret?

</comment><comment><USER39> Interesting approach. Thanks and congratulations on your release!

</comment><comment><USER53> Dear Box,

April Fool's Day was two weeks ago.</comment>


Ask HN: How does Dropbox's Betacoin work? - <AUTHOR>

<comment><USER2> They probably just generate a GIF with your beta code, that you enter in your apps. The apps then check against Dropbox's servers whether the code is correct or not, using a hardware ID (HWID) to restrict codes to a single device. Probably nothing outstanding apart from the branding ("betacoin").

Dropbox engineers on HN, correct me if I'm wrong.

<comment><USER3> More specifically, the GIF contains the activation code in its comments section:

[http://www.velvetcache.org/2014/08/20/custom-mailbox- betacoi...](http://www.velvetcache.org/2014/08/20/custom-mailbox-betacoins)

I don't believe any hardware IDs are used. The codes are one-time use only, and your Dropbox/Mailbox account is activated with it. Once your account is enabled, you can use the beta on multiple computers.</comment></comment>


The Descriptor Protocol and Python Black Magic - <AUTHOR> http://faingezicht.com/projects/2016/04/26/python-black-magic/ <comment><USER2> A related, albeit simpler, Python quirk.

      >>> a = 100
      >>> b = 100
      >>> a is b
      True
      >>> a = 1000
      >>> b = 1000
      >>> a is b
      False

<comment><USER3> Actually not related. The case in the article is about late-binding methods to object instances (creating a new object on each access) - whereas in python 2 the "unbound method" was a lazy creation on access, and in python 3 an unbound method is just a reference to a bare function in the class' name space. The lazy evaluation is from the descriptor protocol in python (see the links in TLA).

The case you point out is because the python bytecode compiler will intern raw values for some items - e.g. string literals, some integer values, and so on. More on interning: [https://en.wikipedia.org/wiki/String_interning](https://en.wikipedia.org/wiki/String_interning)

<comment><USER2> I meant related in the strictness of the is operator.

<comment><USER4> The `is` operator is the same amount of strict in all examples here and in the article: it compares the identities (in CPython, this is essentially the memory address) of two objects.

The reason, in your example, that `is` returns different results is that small integers are "interned"; i.e., the literal 100 always references the exact same integer object, whereas 1000 will cause an integer to be allocated. (So a and b, while both represented 1000, are stored twice in memory.)

<comment><USER5> And in python 3, you can do this manually with sys.intern()

<comment><USER3> in py2 it's a builtin, so just: intern(thing)

</comment></comment></comment></comment></comment></comment><comment><USER6> Note that the descriptor protocol itself is not causing this behavior. What actually happens here is that functions are descriptors (they implement __get__()) that generate the instancemethod object on attribute access. More info here: [https://wiki.python.org/moin/FromFunctionToMethod](https://wiki.python.org/moin/FromFunctionToMethod)

</comment><comment><AUTHOR> Author here. Questions/comments/feedback are very much appreciated! AMA

<comment><USER7> Very minor point: be careful comparing IDs the way you do in the REPL (i.e., without keeping a reference to the previous object)--since the old one is released, it's possible that the memory address is reused and the ID of the new object ends up being the same, even though the object is different, which can have misleading results:

        Python 2.7.10 (default, Oct 23 2015, 19:19:21)
        [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
        Type "help", "copyright", "credits" or "license" for more information.
        >>> class A:
        ...   def b(self): pass
        ...
        >>> A.b
        <unbound method A.b>
        >>> hex(id(A.b))
        '0x104e2c0a0'
        >>> hex(id(A.b))
        '0x104daeb90'
        >>> hex(id(A.b))
        '0x104daeb90'

So the `x is y` approach is "safer." :)

<comment><AUTHOR> Interesting, had not considered that at all. So basically, to ensure the old reference is not released, just naming it would do the trick? AKA:

        >>> some_unbound_method = A.b
        >>> hex(id(some_unbound_method))
        '0x104e2c0a0'

<comment><USER8> Yep, that's right. To lay out the example the way you did in the article, it would look like:

        >>> foo = A.b
        >>> bar = A.b
        >>> hex(id(foo))
        '0xdeadbeef'
        >>> hex(id(bar))
        '0xdecafcab'
        >>> foo is bar
        False

</comment></comment></comment></comment><comment><USER9> >In 3, this distinction between bound and unbound doesn't exist, but strangely, the docs for Python 3 are not up to date

Is there a place for raising documentation bugs?

<comment><USER10> It is linked in the second update at the bottom of the article:

[https://bugs.python.org/issue23702](https://bugs.python.org/issue23702)</comment></comment>


Show HN: PQM, the smallest/simplest physical quantities module for JavaScript - <AUTHOR> https://github.com/GhostWrench/pqm <comment><AUTHOR> Hello everyone, I developed a paid spreadsheet add-on using this JavaScript module as it's primary engine. However, that add-on tanked (no interest), so I figured it would be fun to open source this incredibly useful library for everyone to use. IMHO it improves upon the existing libraries of this type as it is smaller, simpler to use and avoids the problem of "unit collisions" by using a strictly defined unit format. Please check it out and let me know what you think!</comment>


Ask HN: Who regularly uses a chatbot? And what for? - <AUTHOR> Note: Should not be your own or from your own team. <comment><USER2> My bot uses the Socratic method to understand your beliefs

[https://semap.duckdns.org/BeliefExplorer.php?q=0244388211625...](https://semap.duckdns.org/BeliefExplorer.php?q=0244388211625568)

</comment><comment><USER3> Your qualifier rules me then :). But my team regularly uses our own fleet of at least ten IRC bots for regular data-gathering and scheduling tasks.

<comment><USER4> We have reporting into chat channels as well, but I don't use any other chatbots.

Unless Alexa counts, I feed the CIA inaccurate information about my life via her.

</comment></comment><comment><USER5> at work I wrote the slackbot to

1\. remind people logging work on jira

2\. remind people to go to lunch with daily menu.</comment>


What to do when tech jobs go bad - <AUTHOR> https://medium.com/@xevix/what-to-do-when-tech-jobs-go-bad-93e631a1bdc9 <comment><USER2> I've seen this at the most basic level of contracting. To me, a lot of these problems come down to cost.

I've contracted with a dozen startups and small businesses. Most of these companies will find a young developer charging between $20/hr and $50/hr and have them start coding on their new app/website idea and feel wildly optimistic when they see the first 80% of the project come together.

Then it's time for the edge cases, and because there aren't any senior devs on the project, handling those edge cases introduces bugs. Weeks and months pass, and the project that looked like it was a surefire success descends into development hell.

But the company never fires the developer. The developer actually quits from being over stressed. Then the company goes looking for a new developer, who tells them they'd be happy to build their software for $20/hr-$50/hr. The new developer comes on, looks at the codebase, decides all of it is crap, and recommends they start over.

The new developer finishes 80% of the project in the first week.... rinse and repeat.

The company should have hired a developer or firm with a record of success, with actual, running software out in the wild. How they achieved that may or may not line up with the ideas in the OP, but at least the company would know exactly what they're paying for.

<comment><USER3> At my company managers have started referring to engineers as "resources". I think it reflects the attitude towards the workers. An engineer is just a number on a spreadsheet and there is no difference between them. If something goes wrong you just hire more resources as cheaply as you can.

<comment><USER4> "I bought my boss two copies of The Mythical Man Month so that he could read it twice as fast." \- @rkoutnik

[https://twitter.com/RichRogersIoT/status/864963914483855360](https://twitter.com/RichRogersIoT/status/864963914483855360)

<comment><USER5> When I was a lad there was a bit of advice when interviewing called the Dilbert Index. When they are walking you through the building for your interview, check out how many Dilbert cartoons people have posted in their cubes. I believe the advice went on to say that if you see more than 2 you should be worried, but maybe it was a higher number.

I'm starting to believe there's a similar rule for how many copies of MMM you see on the bookshelf. I've seen as many as 5 stacked together, and that place was whackadoodle.

<comment><USER4> My own theory is that the morale of a workplace is inversely proportional to the number of Dilbert strips hung on the cube walls.

</comment></comment></comment></comment></comment><comment><USER6> _"The company is a family." No it is not, and if it were, many companies behave like an abusive parent, where the child keeps giving, and the parent keeps expecting and punishing._

I often wonder what happened to being professional. If someone ever says they prioritize working for actual money over being passionate about changing the world while basking in the vision of some VIP on the board that's like admitting murder. I see this mindset more and more in non-tech jobs as well.

<comment><USER7> This one bit me. When I was fresh out of school I worked for a "from the garage" startup. I was naive and working around the clock nights and weekends, and the owners told me to think of it like I was part of a family. I fell for it, thinking "we are all in this together" and using it to justify the stress and hard work.

When the company succeeded, due in part to the systems I built and designed from scratch, I was unceremoniously asked to leave a few weeks before the transaction closed for many millions. I was asked to leave because as we drew nearer to a sale of the company, I had the nerve to ask for the company to put on paper how I would be a part of that transaction, since I had been verbally promised that "a rising tide floats all boats" and I would be rewarded handsomely for my work. Mistake #2 of 1000 then, accepting a verbal agreement over one in writing.

In the end, when I asked about getting it in writing so close to the sale, I was asked to leave. When I said, "but, you told me I was to think of this like a family", I was told, "we thought you were smarter than that".

That episode did a lot of damage, and I never saw anything meaningful in terms of compensation- the owners got fabulously wealthy.

I made many mistakes then, and I could have pursued legal action, but it was all too painful.

Since then I always try to insulate my feelings and remember that in a professional setting I can always do my best and be professional, but to always remember that to others, it really can be "just business". It's important to keep some distance and avoid emotional abuse at work, both doing it and receiving it.

It's not to say we can't be friendly, but just to be professional, honest and ethical in the workplace, always.

Edit: I meant to mention, that in this job, I was working for the "changing the world part", but when I saw the imminent sale coming and I had nothing, felt I had to ask if I would be a part of it. Back then, it was a mistake for me as well, to assume that I was going to do good and get handsomely rewarded and expect that the two would come together. I think it can happen, but I learned the hard way how to compartmentalize changing the world and getting paid with simply doing necessary work to get paid and survive.

<comment><USER8> And so many people out there wonder why engineers are hesitant to work for startups now, and demand high salaries.

I do also feel that the founders in that story should be named and shamed. There is absolutely no excuse for that kind of behavior. They should never be able to do that to anyone ever again.

<comment><USER9> I do completely empathise with the parent, but you also have to consider it from the other perspective.

If those type of employers could get "named and shamed" based on someones _verbal only_ , then it would be a dangerous society we live in. On the other hand, if it was written down, there would have been no problem in the first place.

<comment><USER8> I believe that naming and shaming unscrupulous founders who fuck over people like this would encourage more to codify these agreements in writing from the get-go.

The company is the one that made the verbal agreement, which they could have written down at any time. The company is the one that abused it's power, and most importantly, the trust of the employee. To me, that is an incredibly heinous act, which should come with draconian punishments.

<comment><USER10> The fact that you're saying "the company is the one..." and that they should suffer draconian punishments after reading an anonymous internet comment is exactly why we shouldn't treat verbal contracts seriously.

You don't know if the company did anything.

<comment><USER8> A company that's on the up and up will make sure the contracts are in place. One that is not will rely on people forgetting their verbal contracts.

And my draconian punishment remark was directed at founders who fuck over their employees in general. Violating that trust should carry extremely heavy penalties, to the point where you are much worse off than if you didn't.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> Great article. The one that hit home for me "One lone engineer on a big project silo'ed away".

Was on a project where we had multiple applications. The team had a new employee code an entire system as a prototype but then it was decided to put it into production. Nobody ever reviewed this code, and that engineer told me himself that the code was crap. He left the project to get away from this code and I inherited a mess, with nobody to ask questions from.

To make matters worse, the entire company relied on this system and there were about 20 regular users of this system. I was responsible for handling all of their feature requests and support which was often. Many bugs I fixed were extremely challenging edge cases, and there was zero appreciation for the complexity of many of these.

My manager was telling others at the company the code was solid, and it's "just python code" which can be figured out.

I notified the company I was leaving and they begged me to stay. Even offered to "release" me and hire me at a higher salary under another manager. The only issue was I would be required to support this same project.

My manager refused to give me a release date so I had to call HR and tell them I needed to leave at any cost. Pretty sure it's a disaster there since I left.

<comment><USER12> This happens a lot with non-technical founders hiring contractors or employees.

At first, the goal is "build a prototype," then it's "make this an MVP," and then finally "what's left to get this to production?"

I don't blame founders for this; I blame the programmers, especially if they're consultants. This is a symptom of failure to manage expectations of stakeholders.

As a developer, your job is to show the stakeholders what the tradeoffs of different decisions are, both in terms of immediate time to results, and technical debt. If you hear "make a prototype," you better ask for a projected lifetime of the prototype, and discuss with the stakeholders the tradeoffs of quickly building a prototype, making sure they understand it could mean more work later to productionize it, in exchange for less work up front.

Also as a developer, you should realize that _nothing_ is ever a prototype. Don't use "it's a prototype" as an excuse for writing unmaintanable and insecure code, because eventually someone is going to want to add some features to it. Good luck telling the stakeholders after three months of building a prototype that you need to start from scratch because the code is awful. This is especially difficult if the prototype looks like a fully functioning product (with minimal features) to the stakeholders, but you as a developer know that under the hood it's completelty unmaintainable.

It's better to take the time up front to put in place whatever you need to write quality code, than it is to take shortcuts and write bad code. A good developer will be able to explain this to a stakeholder, instead of caving under pressure to rush a prototype.

<comment><USER8> No, I completely and fully blame the managers/founders for this. No matter how much you try to drill into their heads that this is throwaway code, once they see something, they get excited, and say "Ship it!"

<comment><USER12> If the tradeoffs were valid and fully understood, the stakeholders would not logically come to the conclusion to "just ship it." The only person who can explain the tradeoffs to them is the developer.

Therefore, if they say "ship it!", they are either wrong or missing information.

If they are missing information, the developer is at fault for misinforming them of the tradeoffs necessary for decision making.

If they are wrong, then either the developer has cited irrelevant or incorrect tradeoffs, or the developer made valid points but the stakeholders understand the tradeoffs and are willing to accept them.

<comment><USER8> Or, the managers are idiots.

You're trying really hard to bring this back to always being the developer's fault, and you're ignoring that, many times, management just doesn't listen. You can explain until you're blue in the face, but if they don't want to listen, nothing will make them do so.

<comment><USER12> Everybody is an idiot about most things. As an expert in a domain, your job is to help non-experts be less of an idiot when making decisions that depend on things you know better than them. You won't get very far with a stonewalling attitude of "well, the manager was an idiot." You need to establish trust and a working relationship where you both listen to each other.

<comment><USER13> Making my boss less of an idiot is something outside of my control. I can tell them "don't do this" over and over again. If they do it anyway, how is that my fault?

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> I don't think your solutions will work. It's impossible to get time estimates right for building software. Too many variables in solving the problems, not only in writing code and testing it, but also including open office disturbances and meetings.

I understand product owners and businesses wants estimates but software engineering is not making a car. Forcing programmers to estimate their every task makes for a very bad work environment. They are not robots.

<comment><USER2> My solution to this has always been to break down the units of work into smaller pieces. Super small. Painfully small.

It requires more project management, but it's much easier to quarantine problems and explain them to stakeholders.

My rule of thumb is 4 hours. If you think it will take longer than 4 hours, it should be broken down. Ideally, most tasks will have estimates of 1 hour.

That way, when a 2-hour task requires 2 weeks to complete, you can point to the specific task and its challenges. It provides an easy explanation for why the release was late, why the requirements were too ambitious, etc.

<comment><USER15> This is micromanagement. You're describing micromanagement.

Engineers do not need to be managed down to the hour. Good grief.

<comment><USER2> It's actually not micromanagement. It's micro-documentation, which provides _more_ autonomy to the developer, not less.

The micro-tasks I'm describing go into a project management system. They are either assigned to or picked by developers who complete and document the micro-tasks on their own. Because the tasks are so small, there is almost no management of developers required.

Finally, it's trivial to find out where project estimates went wrong, because any hidden challenges are well-quarantined in the micro-tasks. If the task isn't well documented, it's still pretty easy to go to the developer and find out why it took longer than estimated.

<comment><USER16> In no-developer-experience-manager's worldview, this is actually a good idea.

If development was so easy that a manager who doesn't understand programming can break developer tasks down into small chunks - we'd live in a completely different universe!

In reality, management breaking anything down into smaller tasks, instead of people who will actually do the work, breaking things down, is going to lead to ZERO architecture and a shit codebase, 100% of the time.

That's if you're lucky and the project is a clean slate.

Existing codebases are full of code smells that'd take days to comprehend, days to chase down and comprehend what the actual requirements were/are because those are never properly documented, and then re-write that 'micro- task' so that the next developer doesn't have to spend their days in hell.

Oh, this'd need to now be tested, there'd be new bugs, and those would need to be fixed also.

So instead, in the real world - your micro-task gets handed down, the developer doesn't bother understanding what the existing codebase is doing, they just patch it until it works, contributing to the unmaintainable piece of garbage that all developers with any self respect left in the world hate.

Since only the brave/crazy ones will say 'this micro task will take 2 weeks instead of 2 days because the existing code is garbage', those brave ones will get replaced by those who will say 'yes, 2 days'. Your project will need more and more time per task, and more and more developers doing maintenance, but the managers will continue reporting successful micro-tasks completed on time!

I've just described corporate programming and how you're directly contributing to the hell that it is.

<comment><USER17> > In no-developer-experience-manager's worldview, this is actually a good > idea.

More precisely, a no-development-management-knowledge manager's worldview.

While obviously development experience can be a source of development management knowledge, there's no reason it should be the only source, and development managers ought to be screened for job skills as much as developers are.

<comment><USER16> I don't see any reason why it shouldn't be the only source - even at McDonalds, managers graduate from being regular burger flippers.

That's why McDonalds works, and software development is a perpetual disaster - McDonalds understand that to manage even something as simple as flipping burgers, you need to have done it yourself first!

It's the arrogance of business school management that's responsible for a great deal of turmoil across many areas of everyday life. Just imagine going to school for something that's not difficult, to 'learn' how to boss people around. For good pay!

Isn't that the dream of every non-creative, lazy, half-wit you never want managing anybody ever? Yes... yes it is...

This is a recent phenomena on a mass scale and it isn't going to last - getting high rank without having earned it has always been a complete disaster, just look at any point in history.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> We do a weekly standup with the team (working on the same product) and monthly company all hands. It's very useful to be aware of what everyone is working on. Sure it takes 15 minutes and it's a distraction. Thats why we do it only once a week in person and every day via a Slack channel (simple message, hi i'm working on xyz today). Not doing a standup makes it easier for things to go off track. People working on the wrong things, making mistakes with prioritization by not being aware of what other people are working on. Maybe you don't notice this as much as an individual contributor. As a manager I've seen this go wrong so many times. The group of people should be relatively small. Definitely < 20\. But for that group every should have a rough idea of what everyone else is working on.

It's also the realization that I can't/won't fully plan out someone's personal roadmap for them. They need to understand what the team is working on, what the business priorities are and make their own tradeoffs. I set high level priorities of course, but I think people should have control/ownership over their day to day tasks.

<comment><USER19> I agree. I attend a few meetings whose main purpose is to hear about what's going on with teams whose work is only tangentially related to mine. Sometimes it ends up being useful ("oh, you're stuck on XYZ problem? I think C works on that -- go ask him").

</comment></comment><comment><USER20> > Providing regular events with alcohol. Peer pressure to drink, bad health > habits, bad workplace environment.

> Normalizing and glorifying drinking alcohol.

Sure, alcohol is not healthy, and peer pressure to drink is bad.

But I've found such events to lower some barriers and help connect with people I would usually hardly talk to short of hi and bye. And I think this may affect work productivity as well as personal happiness in a positive way.

<comment><USER8> The problem with that is, not everyone likes or can have alcohol. If all your events are centered mainly around alcohol, then you're isolating those people from cultures where alcohol use is not common or frowned upon, those people who may have problems with alcohol, and those people who just plain don't want to drink.

I'm not saying never have alcohol at company events, far from it. But don't have every event be centered around it. If you're going to do company events, you need to have a variety of different things, so that, while not every event is everyone's cup of tea, people don't feel isolated at every event, either.

<comment><USER21> This does seem to be growing into a problem. I have a friend who is a recovering alcoholic and recently he went to a tech meetup where not only was it centered around alcohol but there really wasn't anything else provided. He rightly chided the organizer for not considering that there might be people who want to attend who don't consume alcohol.

<comment><USER22> I agree with this, it's especially hard in a place like Wisconsin where everywhere is "two bars and a church". I personally drink and don't have any problems with it but I also don't enjoy when every meet-up or company sponsored event is in a bar (not the company I work for but this is a common thing). Have the event at a hotel or establishment with a bar in a separate area if people want to drink. Or have the event and after the main event is concluded say, "As an after event from hours 3 to 6 we'll be doing cocktails at location XYZ if anyone is interested."

</comment></comment></comment></comment><comment><USER23> Loved this. And I agree with most of it.

One thing I disagree with (and I know this puts me in the minority) is code review.

Code review for trusted engineers is a waste of time. You're only going to find those bugs that are very hard to see. And the odds of you catching them in code review are very low. Also, if you're a kind of fast moving startup (like my company is) there's so much new code coming through that it is a serious slowdown to review it all. At least at the level where you'd need to if you're going to catch the things that the original author missed.

I only make juniors and new hires do code reviews. I'll also ask for code reviews if an engineer is taking on a task that's totally new for them. But otherwise we've totally cut them out and been fine.

<comment><USER24> Eh, half the benefit of code review on teams I've been on is just making the other engineers aware of what's going on. 75% of the code reviews are just a "good to go", the other 20% are questions about why a change was made that inform the other engineers about that particular business constraint, and the last 5% are actual issues.

As you said, it's completely different for junior engineers where it ends up being more like 90% bugs/tech debt, but the code reviews aren't all useless

<comment><USER25> 100% - Most code reviews are. Why are you doing this? please add a comment. Wait! this will break this other thing in some obscure way. Or hey! I built this other thing over here, let's re-use it.

</comment></comment></comment><comment><USER26> This article describes how the author would deal with or avoid various pitfalls in a business environment.

It's truthful and not "whiney", as the more sociopathic among us are quick to sneer.

However, an underlying thread is needed to weave these criticisms into a meaningful critique. Mismanagement is a theme, but, alone, is insufficient for making the piece persuasive or insightful.

</comment><comment><USER27> > Writing new systems that don't need to exist simply to scratch an itch to > write (NIH syndrome, etc.)

I've seen this so many times and it almost always ends in failure. Rewrites as well. Engineers can't resist improving a system while rewriting it (adding caching, redundancy, etc). They neglect proving core functionality is intact before making improvements. They also often neglect the thousands of man hours it took to find all the bugs in the system.

I've been building ML systems for a while and I've even seen engineers coming up with their own search/optimization algorithms. This _always_ fails. It's hard enough to get standard techniques to work, since your data usually differs (slightly or severely) from what the technique was validated on (standard, cleaned data sets used for journal papers).

</comment><comment><USER12> > Someone has a great new design they want to implement which is leagues > better than what exists, and the existing design is just so awful. Only, > it's going to require some duct tape here and there, but that's totally > acceptable because overall it's better. Until it becomes apparent that it's > mostly duct tape, but you've gone all-in on this and you can't go back.

> Solution: Start over. The sunken cost fallacy is real. You've made a > mistake, and that's ok, you can take those learnings and build something > better. Don't settle for chaos.

Seems like a smart solution, and yet I almost never hear "throw it out and start over" as an option for dealing with unforeseen problems.

Perhaps as programmers we should take some lessons from writers, who will _often_ throw out all their work from the past day/week/month, because once it goes into production (a published book), you can't change it. In software, you can change it, yes. But if it doesn't add anything useful, complicates existing things, or will slow development in the future, there is a clear reason to just drop it and move onto the next approach.

One way to make "just drop it" a more palatable option is to give yourself a grace period from the outset. Something like "if we can't get this to work in a week, we'll drop it and reevaluate." This is when it helps to have at least two people (engineer + manager, or engineer x2) because it eliminates "developer pride" as a variable in decision making and holds someone accountable for making that decision after a week. As a manager, often the most important decisions are not what to build, but what _not_ to build.

</comment><comment><USER28> Good to see someone took the effort to document the commonly prevalent issues and probable solutions. Doesn't matter how many facts can be arguable or the how much credibility be questionable about the person, finally it boils down to he took the time and effort to document it and share it. Discussion can follow, but there should be something existing to discuss about.

</comment><comment><USER29> Excellent condensation of the issues. Great ideals to work toward. Just moving in this direction would be helpful in any industry. If we implemented your codebase ideas in education... well, you know we'd have great education.

</comment><comment><USER30> > Excessive democracy leading to indecision

This is one I've hit a number of times, my solution in the past has been to 'go rogue' and get something done, people will be bothered (usually someone unofficially says it's a good idea), if it works out often enough, we'll start 'deciding' to do more things if for no other reason than to take some credit.

While reading, I was trying to come up with a cohesive idea as to why these things happen, or what single thing could prevent them. The best I could come up with is having a good 'Director of Development' or maybe Project Lead. I don't know what the title should be because I haven't really worked for one. I've worked with great team leads and companies with fine CEOs. CTO's are rarely close enough to the problems being solved and often just not available. I myself worked as a Director of Development for a small startup that eventually ran out of runway. The dev's said they enjoyed working together but I don't think it was long enough or going through the many pivots to test out how that would have been.

Most places I've been have business people that plan projects. Then there are product owners and PMs with teams, design/UX, front-end, back-end, SRE/devops, sometimes even multiple teams with overlapping roles to execute. This I know, doesn't work for long.

Startups that grow and promote internally to fill such a role, may or may not work--depends on the individual. What's really needed is good alignment and balance of business goals and employee happiness. Two things which are both true: startups need to iterate fast to find that magic point; employees are a company's greatest asset. You can't forsake one for the other.

<comment><USER30> > [0] Please don't comment about the voting on comments. It never does any > good, and it makes boring reading.

Despite the quoted item, I couldn't see how to understand the (incorrect?) use of downvoting comments as disagreement rather than to discourage unwanted behaviour which doesn't contribute to a discussion. In any case, a comment as to why is always helpful.

[0] [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

</comment></comment><comment><USER31> Get a hobby. Relax and don't take work so seriously. I'm not saying avoid responsibilities, but do the best you can and lead by example.

</comment><comment><USER32> In the UK in the last ten years the average salary for a senior developer has gone up from £35k to nearly £50k but for contractors, weirdly the average rate outside of London has stayed around £350 a day

</comment><comment><USER33> This post would still hold true if replace the phrase 'tech jobs' with just 'jobs' :) Such a wonderful article on all things wrong at the workplace these days.

</comment><comment> trey-jones I honestly read 2 paragraphs before deciding that a large part of the problem is the author's inability to work through adversity. Maybe even an industry culture of avoiding adversity rather than dealing with it (aka laziness).

<comment><USER8> Really? I saw a bunch of things that happen when management doesn't want to be held accountable. I saw a bunch of things that end up coming back to the developer to bite them in the ass. I saw a bunch of things that make for long hours and late nights for no valid reason.

Basically, I did see a bunch of adversity, but artificial adversity. Adversity that doesn't make anyone stronger, or better, or even feeling accomplished. Just a bunch of bullshit that one had to wade through. And if you're in the position in your career where you have alternatives, why on earth would you decide to stay in that environment?

</comment></comment><comment><USER34> Sounds like a really toxic person to work with. Lots of complaints and few solutions.

<comment><USER35> Be kind.

I agree that my run through of the article seemed to point to problems more than solutions, but I have always felt that the old chestnut 'don't bring me problems, bring me solutions' was a bit shortsighted.

Yes, it would be nice if every problem had a solution provided in a gift wrapped box. Yet, it is dangerous to pretend that problems do not exist simply because we do not know how to solve it.

Now, how to do this without become overwhelmed and despondent in the face of these problems is another issue.

<comment><USER36> Ive created account only to say "thank you" for writing this article. Thought im just projecting issues that dont really exist because of not so long ride in this bus (just promoted to senior)...

At first i tried to tackle those issues but it seems that nobody cares or doesnt want to accept that we have such issues in the first place. Im just happy others see those issues too and try to solve them at least by rising awerness.

Im also sure that if i tried to bring this article to discussion i would be fired next day because of "playing primadonna" one of our managers use to say...</comment></comment></comment>


Transformation at Yahoo Foiled by Marissa Mayer's Inability to Bet the Farm - <AUTHOR> http://www.nytimes.com/2015/12/03/technology/transformation-at-yahoo-foiled-by-its-leaders-inability-to-bet-the-farm.html?ref=technology <comment><USER2> Duplicate is already on the front page: [https://news.ycombinator.com/item?id=10668957](https://news.ycombinator.com/item?id=10668957)

<comment><AUTHOR> Thank you. Strange as I did a title search and it didn't show it was already posted. Good catch.</comment></comment>


Ask HN: GitHub vs Bitbucket - <AUTHOR>

At the moment my company is dead in the water due to yet another GitHub outage. They seem to hit weekly now. I'm considering switching to another provider today.<p>How does Bitbucket stack up in terms of reliability? Features are sort of irrelevant compared to recurring downtime. <comment><USER2> Personally I love Bitbucket. Unfortunately you'll get scoffed at by the "true nerds" for using such a second rate product (aka less trendy). Their new UI is really awesome and you really can't beat the price (free).

<comment><USER3> BitBucket is awesome. I've used it for months and I've had no issues at all. Great new UI as well!

</comment></comment><comment><USER4> As a bitbucket user I can say that I've been using it for about 14 months and I can only recall one outage. But take that info with a grain of salt.

It may not be github's software as much as they are the number 1 git hosting service and therefore they are the biggest target for hackers.

I might be talking out of my ass here but it feels a bit like the argument for using Apple versus MS, i.e. there are no viruses for Macs since they are more secure... until Apple grew in popularity, which then attracted more hackers to write viruses for Apple's OS, which showed that it is was not invulnerable.

I doubt Bitbucket will supplant Github as the goto git hosting service, but if they grow they might be subject to more attacks? Just a thought to consider.

</comment><comment><USER5> I use Github professionally, and for my open source projects. The visibility of a project on Github is hard to beat, and is often found just because it's on Github. Outages usually come on the front-end, and often I've been able to push to Github within minutes of finding an outage. That said, we're a small company with almost no remote collaboration on a given project, so outage doesn't affect us much.

However, for my serious, closed-source projects (that I might want to become products) I use Bitbucket. So far I've experienced no outages.

</comment><comment><USER6> BitBucket is an Atlassian product, I believe in Atlassian quality and recommend BitBucket will all my heart, its super realiable and also very cheap.

</comment><comment><USER7> How does a github outtage cause you to go 'dead in the water'. You're still using git. If you need to share code among devs, you could always use git- daemon[1].

[1]: [http://www.kernel.org/pub/software/scm/git/docs/git- daemon.h...](http://www.kernel.org/pub/software/scm/git/docs/git-daemon.html)

<comment><USER8> agree. We heavily rely on Github as well but we have managed to get around the outages.

However, we have moved to bitbucket recently b.c their pricing was better suited for us.

</comment></comment><comment><USER9> I prefer BitBucket because it's not as expensive and really really solid. Not one problem in over 3 years using it.

</comment><comment><USER10> From personal experience, in 2 years on Bitbucket I can remember one unscheduled outage and that was only a few minutes IIRC. This from daily use at UK time.

And to echo xauronx, the new UI really is great and pretty much did for my Github envy.

</comment><comment><USER11> I use Bitbucket for private repos and Github for public repos, Isn't Github more social .

</comment><comment><USER12> If you want to use BitBucket, but still get the exposure of GitHub, its relatively easy to setup an hourly sync.

Just turn off the wiki and issue tracker at GitHub, and link to the BitBucket ones in your README or something like that.

</comment><comment><USER13> If you want fit hosting I recommend getting a 1GB VIPs and installing Gitlabhq. Try it out it is awesome using it for personal stuff.

</comment><comment><USER14> Are you just looking for git repository hosting or also issue tracking plus wiki? The former is much cheaper than the latter.

</comment><comment><USER15> I've been using BitBucket for the past 3.5 years, can't remember having a problem even once.

</comment><comment><USER16> Why not use git, gitolite, and gitweb on your internal network?

<comment><USER17> gitweb seems good, I'm gonna try it.

<comment><USER18> It's very easy to install under Ubuntu.

</comment></comment></comment><comment><USER19> Github for open source project Bitbucket for private usage</comment>


Protonmain – secure email from scientists and engineers of CERN and MIT - <AUTHOR> https://protonmail.com/ <comment><USER2> I would like to move to a new mail provider, but to be honest: That "enterprise/professional" support is pretty much a joke:

If you want to use a custom domain because you not only have an own domain, but want to add let's say 5 co-workers to use their service, you have to share ONE (!) Login with all co-workers, because you can not create sub-accounts nor share one custom domain over several accounts.

See: [https://protonmail.com/support/knowledge-base/custom- domains...](https://protonmail.com/support/knowledge-base/custom-domains/)

That was the point, where I was out of the game ...</comment>


Can You Solve This? 1B Records per Second Data Streaming Challenge - <AUTHOR> https://nanosai.substack.com/p/the-one-billion-records-per-second <comment><USER2> This isn't well-specified enough to be a real challenge. They say it can be a server - but not too beefy of a server. What does that even mean? If I put eight NVMe SSDs in a 128-core server, is that too beefy? What about 64, 16 cores?

Can I know (or bound) the number of orders or products in advance to preallocate? Can I design the dataset myself with certain assumptions (e.g. sorted with respect to time)? Can I bound certain aspects of the dataset (e.g. orders must not contain more than 255 products, orders always contain the prices of everything, etc.)?

Latency isn't apparently a factor - so if I'm processing 1B records, do we care how quickly it gets done? If not, I'll just stream the data off to a GPU and get the results later?

<comment><USER3> Hi Varrakesh, the reason it is not "well specified" is, that all of your suggestions are interesting to try out and benchmark. Rather than saying "it has to be exactly like this" we have left it more open ended by saying "what would it take to get to 1 billion records per second?".

The answer might be different on different types of hardware, and with different types of data sets, and with different types of data set sculpting. Yes, it is okay to have one benchmark where there are no more than e.g. 255 products, or 255 customers, but then we should probably also benchmark with e.g. up to 65.536 products and 65.536 customers, and up. Part of achieving high performance data streaming is the ability to make your data small.

It would also be okay to use a GPU - although we have not (yet) plans about doing that. Still, it would be very interesting to see what kind of results you could get with that design.

We just have the requirement, that the data streaming engine must not be exclusively designed for this challenge. It must be a reasonably functional general purpose data streaming engine.

By the way, we hope to reach the 1 BRS milestone on a single server, i7-6700 Quad-Core Skylake CPU, with 2 NVME SSDs mounted in RAID 1. 1 GB of memory to run the benchmark app should be enough, but the server will probably have 64 GB by default.

</comment></comment><comment><USER4> It doesn't matter much whether I can solve it since the first rule of the contest explicitly bans me from writing code to solve it.

<comment><USER3> What we mean by that rule (general purpose data streaming engine) is just, that the product must be usable for other use cases than just this challenge. You can write your own data streaming engine, but it should be able to handle a wide variety of use cases, not just the challenge use case.

For instance, simply writing a program that loads 1 billion bytes into memory, iterates them and sums them, would not count as a "general purpose data streaming engine". But you don't have to use Spark, Kafka or something like that. You can write your own.

</comment></comment><comment><USER5> Ok, so I solve this very monetizable problem for you, and what do i get? Bragging rights?

<comment><USER3> I think you misunderstood. WE will implement this data streaming engine, and give it away as open source ! ... so WE get the bragging rights, you get the data streaming engine.

</comment></comment><comment><USER6> Yes I can, but why would I spend the time adapting my trading engine to process someone else's data? Seems like I'd be providing free R&D.

Also, kind of funny that C/C++ are not listed in the application form.

<comment><USER7> Their current engine is written in Java so you could just wait until their engine gets to 100m and port it to C++ to win

<comment><USER3> Exactly ;-)

</comment></comment></comment><comment><USER8> Kind of seems like they want someone to do a tonne of work for free...

 _Contest closes_ \---- _Nanosai advertises that their platforms now supports 1B requests per sec_

<comment><USER9> Hi - we think you misunderstood because you probably haven`t red the post properly. WE will implement this data streaming engine, and give it away as open source ! The reason we are asking people if they can solve this challenge, is for us to know if there are other easy to use data streaming engine that can help solve this as per our relaxed/open specifications.

<comment><USER8> Regardless, still seems like your parent company Kahler AI will leverage and monetize the engine all under the guise that its open source.

I also love that you include NO INCENTIVE with this 'challenge'. Why would anyone submit code to you guys for free?

All smells fishy to me.

<comment><AUTHOR> Kahler is not parent company of Nanosai - though both share Zaiku Group as parent with Nanosai being an open source JV project with Jenkov Aps.

Also, yes the streaming engine will be useful to some use cases for Kahler. However, it is open source and so anyone will be able to access the same underlying engine.

By the way, we already have several people signed to the challenge including people working for notable tech companies!:)

</comment></comment></comment></comment><comment><AUTHOR> Hi everyone, many thanks for all your comments - though there may have been some misunderstanding that we address below:

WE (at Nanosai.com) will attempt to build a data streaming engine that can process 1 billion records per second, and release it as open source. If YOU want to try the challenge too, that's fine (e.g. someone already working on data streaming engine tech). We did not mean for YOU to solve this problem for US.

Our initial measurements and calculations show that it should be possible to reach 1BRS, although the records would have to be small. Still, a data streaming engine will always have some record iteration overhead, so it would take some tuning to get that overhead small enough to reach 1BRS even with 1 byte records.

</comment><comment><USER10> A quick check to see if there are any hardware bottlenecks.

Ignoring use of a GPU, how many IPS is a quad core i7 (mentioned by jjenkov)?

And how many instructions might it take to do something useful to a record? Say read 16 bytes and do some compares.

Or would the SSDs be the bottleneck? Also, RAID1, not RAID0, so effectively just 1 SSD.

Or NVMe? Wow, a google search says vendors are pushing for 32 GBps. (My SATA setup is obsolete.)

Maybe it's purely a software problem.

</comment><comment><USER11> The description of this challenge is confusing and poorly specified. It is unclear why it is supposed to be technically difficult. Giving it my best interpretation, this is essentially a solved problem and people that know how to solve it are unlikely to find it interesting.

Also, it would probably help if it was written in a programming language appropriate for the purpose, such as C or C++.

</comment><comment><USER12> Is there some kind of test harness for this? What does generic streaming engine mean here?</comment>


The Sony Z3 Compact Is Android's Best Kept Secret - <AUTHOR> http://gizmodo.com/the-sony-z3-compact-is-androids-best-kept-secret-1646103841

<comment><USER2> i love my z1c. i can't justify replacing it after only nine months for the newer model, though.</comment>


What's Driving Transit Ridership Declines? - <AUTHOR> https://www.citylab.com/commute/2017/02/whats-behind-declining-transit-ridership-nationwide/517701/ <comment><USER2> > When Uber and Lyft left Austin, mass transit saw a very modest one percent > bump in ridership, according to the transportation consultant Jarrett > Walker.

To be fair, when Uber and Lyft left, people started using Arcade City, Ride Austin, GetMe, and Fare.</comment>


Darpa wants help cracking the election security problem - ga-vu https://www.fifthdomain.com/dod/2019/08/05/darpa-wants-help-cracking-the-election-security-problem/ <comment><AUTHOR> The article goes awry from the first sentence:

> If election security is an engineering problem,

It's not an engineering problem, it's a political problem. To the extent that it's engineering, it's solved if we would only adopt the known good approaches.

But we won't because there is political utility in having elections remain murky and messy for parties who may benefit from manipulation of the vote through disenfranchisement or other shenanigans.

</comment><comment><USER2> I think paper ballots should be collected at each polling location.

I also think paper ballot totals from each polling location should be published publicly in a variety of forms, so that the totals can be added independently.

<comment><USER3> Paper ballots get counted publicly. Anyone that would like to witness it can attend for any amount of time and call out miss counts. Totals are read out on live TV.

<comment><USER4> Multiple counts that are corroborated is a common validation, iirc. That would be tedious, to listen to or correlate.

24-13 .... 25-13

25-13 .... 25-14

26-13 .... 26-14

</comment></comment></comment><comment><USER5> The most successful attacks on democracy are gerrymandering (US especially) and misinformation (global problem, see Brexit thou specifically). Don't get me wrong, this sort of security is necessary but there's nothing wrong with tossing out the machines and using real paper ballots with a pencil (thus sidestepping the problem). You can even machine-read those for a machine count (which can be verified since the paper ballots are still around to rescan with different hardware/software for validation).

How do you engineer around the misinformation vector thou? That's the hard problem.

<comment><USER6> Not only are paper ballots simple and effective, they can be mailed out 2 weeks ahead of time and people can vote with a laptop, at their leisure. Also, you don't have to store them for three months at a time with proof of custody, you can just scan them, or dump them once the election has been certified.

Voting machines sound great but that it's solving a problem by doing things the same with tech.

<comment><USER7> Where I come from, the voting machines create a paper with the votes, which the voter gets to review. That seems to have all the advantages of the paper ballots, with the electronic advantage of rapid totals.

I _would_ like to see spot checks - pick a few precincts at random, and compare the electronic totals to the paper.

<comment><USER6> the paper ballots via mail handle infrastructure and are counted by machine with spot checking. Also, you can go to the vote counting floor at any time and be part of the process.

However you don't have to setup/store machines, and people can vote over a few days which means better access to everyone.

</comment></comment></comment></comment><comment><USER8> Use the post office. Use paper ballots in the mail. Many security issues vanish if polling places are no longer rich targets. In my state of residence, my ballot is sent in the mail, and I get SMS notifications when it is sent to me and when it is counted.

<comment><USER9> You never know if it's counted correctly, though, so it sounds like the auditing challenge remains

<comment><USER10> We have a system where you can go and see a webpage say your vote was counted after you mail in your ballot. What you can't do is tell if that webpage is accurate.

This still feels like a tractable problem in the domain of pure crypto if you divide it into a commitment scheme and a tabulation step.

</comment></comment></comment><comment><USER11> An excellent essay on Voting Security by Bruce Schneier, showing how hard this problem is: [https://www.schneier.com/essays/archives/2004/07/voting_secu...](https://www.schneier.com/essays/archives/2004/07/voting_security.html)

And more on the same topic: [https://www.schneier.com/essays/elections/](https://www.schneier.com/essays/elections/)

</comment><comment><USER12> Disenfranchisement (e.g. requiring voter ID) and gerrymandering are far more significant issues for the democratic process in the USA than ballot security, which is a relatively solved problem.

<comment><USER13> Most countries require a form of voter ID.

<comment><USER14> If you don't require voter ID in the US, how do you prevent duplicate votes?

<comment><USER15> You don't.

"BUT ITS NOT A HUGE PROBLEM"

it still happens, which is a problem none-the-less.

<comment><USER7> There's two problems. One is duplicate votes, which may be an insignificant problem. The second is public perception of the fairness and security of elections. The first is a problem; how big a one I don't know. The second is a problem, and a big one.

</comment></comment></comment></comment></comment><comment><USER16> Step 1) Make sure the guy in charge of bringing election security bills to vote on the Senate floor can't accept campaign donations from voting machine companies [1].

Step 2) Bring election security bills to vote on Senate floor.

[1] [https://www.newsweek.com/mitch-mcconnell-robert-mueller- elec...](https://www.newsweek.com/mitch-mcconnell-robert-mueller-election- security-russia-1451361)

</comment><comment><USER17> Both are important, but WRT elections, faith in security is as important as actual physical security. I don't see how a black box of tech can convince a layperson that voting is secure. We need more in the way of audit trails and accountability.

<comment> m-p-3 The toughest part is ensuring anonymity and privacy while ensuring someone can only vote once, ensure the vote is legitimate, and accounted for.

The only way I can see that is using a PKI-based ID to validate the ID of someone, but then how do you ensure that person can vote anonymously and only once?

</comment></comment><comment><USER18> Back when we were all agonising over "Hanging Chads" in Bush v. Gore, Bruce Schneier published a series of collaborative works featuring the back & forth design of secure paper ballots + digital voting. So that was what? 2000?

Surely the problem then isn't technical, it's cultural and political.

</comment><comment><USER19> Israel has an old-school paper-based procedure, with cross-party observers present at every step. This wastes a lot of paper, but is very hard to hack. [https://www.timesofisrael.com/can-israels-election-count- be-...](https://www.timesofisrael.com/can-israels-election-count-be-tampered- with-an-official-explains-the-process/)

</comment><comment><USER20> IMO it shouldn't be all or nothing, here's a system I think would be the best of both worlds:

\- Allow people to express voting intent & go through the candidates on the ticket with a website/app (as strong as it can be), which spits out some random ID/QR code

\- Widen voting time period to _months_

\- Support mail-in-ballots in more states

\- Add a mandatory # of holidays per year (with proof of vote, notification of which local/national election the person is voting in)

\- Require people to confirm their vote in person, with the option to vote with the QR their phone generated (and a confirmation screen afterwards for them to review), with every vote required to take a certain amount of time in the booth (to prevent timing people to figure out if they used their cell phone or not).

This setup allows for a few things:

\- Early consideration of candidates and their positions and the ability to save _how_ you were going to vote once you're in the booth

\- More signals of voting intent that could be used to detect fraud (in addition to random sampling)

This scheme probably needs more thought to prevent election tampering, but I think _adding_ a digital element as additive would be a benefit. If the digital element detects voting intent that sharply diverges from voter rolls, then a recount in whatever county is triggered.

</comment><comment><USER21> * Open Voting Specification (includes paper trail)

* Ranked Choice Voting (or better)

* Individual Vote Verification API

</comment><comment><USER22> I had thought that this was a great opportunity for blockchain, if identity could be solved reliably. That being said, identity is already being solved through IDs, voting stations, home-delivered ballots, etc.

The audit-ability and reproduce-ability would be great features, while cost and latency wouldn't be huge problems for voting.

There were even a few start ups in the space (e.g. Votem), but none seem to have made the jump to doing real elections. Votem did a few smaller voting experiments like a vote for the Rock & Roll hall of fame, but never made its way to state elections.

I hope that DARPA can not only inspire innovation, but also help startups break into the difficult game of government contracting.

<comment><USER23> You can't have an anonymous system that simultaneously allows meaningful verification: if there is no way to tie me to my vote in the system, then there is no way for me to prove that my vote was misrepresented to anyone but myself. Even if there were, there is no way for me to prove that my claim about my vote is correct. Even if many people come out claiming that their votes are mis-represented, there is no way to know whether that is a sign of errors/tampering with the system, or a concerted campaign to try to put the election in doubt.

Any system which foregoes physical proof of voting as a base for the count, relying instead on after-the-fact verification, is open to this problem. A complex system, whether software or even mechanical, can never match this level of confidence.

<comment><USER24> There are crypto schemes that can solve those problems. Some work with paper ballots as well.

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

</comment></comment></comment><comment><USER25> Given postal votes are a thing, and have been for many years (at least for UK/AU/NZ), is there still such stringent requirements on making it difficult/impossible to buy/coerce votes? Since both can be done using postal votes already.

Does this then open up more digital options? Eg app based voting where your vote is published along with everyone elses but in anonymised form, so everyone can independently verify the totals. By anonymised I mean the app displays a random "vote reference ID" that you could check in the final published ledger to see your vote was included, and was recorded correctly.

</comment><comment><USER26> India has been conducting elections via electronic voting machines for a while now: [https://en.wikipedia.org/wiki/Electronic_voting_in_India](https://en.wikipedia.org/wiki/Electronic_voting_in_India)

In India's case, the paper ballots actually caused a lot of rigging as booth capturing was ramptant. EVMs greatly helped tackle that.

A small sample of the votes are also verified using voter-verified paper audit trail (VVPAT).

<comment><USER27> And there are rampant reports of election fraud. so your point?

</comment></comment><comment><USER15> DARPA, fund me.

1\. go vote 2\. check to see who hasn't left their house today via open source GPS indicators 3\. vote as them too because its illegal for those at a voting station to ask to verify your identification 4\. ??? 5\. undetectable voter fraud

<comment><USER28> There's a high chance you'll go try to vote as someone who simply didn't register. In California you could then register as that person and vote provisionally, but polling officials will check your identification.

Alternatively you may attempt to impersonate someone using vote by mail. In that case, there won't be a ballot to vote at the polling station, and even if you are able to successfully register provisionally or convince polling workers to give you a blank to fill out, election officials are already looking for these kinds of duplicates.

</comment></comment><comment><USER29> I know Ron Rivest has a lot of interest and work invested into securing voting system. I can't point you to a direct paper, but if you Google it I'm sure you'll find more then enough.

</comment><comment><USER30> Has it been proved that elections have been tampered with in past?

<comment><AUTHOR> Yes — for instance last year in North Carolina's 9th congressional district.

[https://en.wikipedia.org/wiki/2018_North_Carolina%27s_9th_co...](https://en.wikipedia.org/wiki/2018_North_Carolina%27s_9th_congressional_district_election)

> _On February 21, the board unanimously voted to call a new election because > of fraud by Republican operatives._

</comment></comment><comment><USER31> Those who are involved in the American election industry, from government to vendors or consultants, have committed to a platform based on verified C. The industry continues to refuse to adopt a memory safe language such as Rust. Granted, the investment in a new toolset is costly. However, the benefits are very compelling. In the meanwhile, industry will crutch its toolset decisions with white hat hacking events, bug bounties, millions of dollars in contracts supporting audits and testing, etc.

Path dependence is costly. In the case of elections, more than money is at stake. Industry must move beyond verified C to Rust.

</comment><comment><USER32> Paper ballots?

</comment><comment><USER33> Ballot security is a solved problem (but, sadly, I think DARPA knows this, which makes me wonder what's really motivating this work):

Use paper ballots. Scan them at the polling place for fast electronic tally.

Audit a significantly significant random sample of the paper ballots after the election, and do a full recount if any discrepancy is found.

Prosecute people that violate chain of custody for the ballot boxes. (Give this power to a non-partisan authority.)

There are open problems around tampering with voter rolls; this is done both by state governments and foreign powers. We still need a scheme to make this more detectable (and to invalidate the election when it happens).

<comment><USER34> Occasionally we hear about "found" ballot boxes especially around recount time. How do they get lost. Or what does it mean when they say they lost them (and found them). I'd imagine it's more prevalent than we hear as it seems rather odd if they only disappeared and reappeared in contested elections.

<comment><USER35> Imagine a very large mostly volunteer-run event that only runs once a year or so and where some fraction of the volunteers are running the event for the first time.

At the end of the day all the important equipment gets packed up, shipped somewhere, and unpacked.

But sometimes -- rarely, but sometimes -- some really important piece of equipment gets left behind at the event site or unpacked incorrectly at its new location.

I just described marathons, carnivals, and... voting.

<comment><USER36> In Germany, we also have paper based voting and yet, we do not have the issue that _ballot boxes_ disappear. Everything and I mean literally everything is accounted for and if the numbers do not match up (e.g. less boxes of ballot boxes than before, or n(valid votes)+n(invalid votes)!=n(total votes) there is an immediate recount. No one leaves until shit is done, and if it gets too late everything is packed up, sealed and boxes counted.

The horror stories of the US are a failure of their system, not of paper voting.</comment></comment></comment></comment>


Rate My Startup: TrivialMobile.com - <AUTHOR>

This idea won the "most useful" nomination at Hack TX hackathon a couple of weeks ago. Basically, it's an attempt to reduce the effort around creating mobile websites down to zero. We have not officially launched this service yet, but we feel good about quality and would totally appreciate feedback from this group! Thanks! TrivialMobile.com <comment><USER2> I like the simplicity of this idea. However, I am wondering if we could call this as creating websites since this looks more like submitting a blog through our email. Sorry about the negative comment, but that was the point that struck me on watching the video.

<comment><AUTHOR> Thanks for this note! I actually agree - our current marketing message is overselling the current features. We'll try to polish it further. We are also designing a few new features that would reduce the gap between us and full blown website generators.

</comment></comment><comment><USER3> Clickable: <http://TrivialMobile.com>

</comment><comment><USER4> I watched the 1 minute video on your home page. I liked how fast and easy it is to get an app going. I think you have something going here with this idea.

</comment><comment><AUTHOR> Wow! This forum has been extremely helpful. We had a few people try the service, even one even identified a bug. Please keep the feedback coming :)</comment>


Freelancer? Seeking Freelancer? My analysis. - <AUTHOR> http://alanhollis.com/hacker-news-freelancer-seeking-freelancer-analysis/

<comment><AUTHOR> Looking to get some feedback on my pitch and ways to improve what I can offer next time! Any feedback positive/negative would be greatly appreciated!</comment>


80K worth of AWS Credit – help extend startup runway - <AUTHOR> We have 80K worth of AWS credit that we'd like to sell for a lesser amount to extend our runway by few more months while we are closing a funding round.<p>Any takers? <comment><USER2> Per the Terms & Conditions at [https://aws.amazon.com/awscredits/](https://aws.amazon.com/awscredits/) :

"Promotional Credit you receive is personal to you. You may not sell, license, rent, or otherwise transfer Promotional Credit. Promotional Credit may be applied only to your own account, and not any other account."

<comment><AUTHOR> Thanks for the heads up. I overlooked this and we are keeping our credits to ourselves.</comment></comment>


Elon Musk says deleted his Tesla titles - <AUTHOR> https://www.cnbc.com/2018/10/30/elon-musk-says-deleted-his-tesla-titles.html <comment><USER2> Elon Musk says he deleted his Tesla titles 'to see what would happen'</comment>


USN-3984-1: Linux kernel vulnerabilities - <AUTHOR> https://usn.ubuntu.com/3984-1/ <comment><AUTHOR> FTFA: ... memory previously stored in microarchitectural fill buffers of an Intel CPU core may be exposed to a malicious process that is executing on the same CPU core. A local attacker could use this to expose sensitive information. (CVE-2018-12130)</comment>


The Multiverse Is Inevitable, and We're Living in It - <AUTHOR> https://medium.com/starts-with-a-bang/the-multiverse-is-inevitable-and-were-living-in-it-311fd1825c6 <comment><USER2> The phrase "Multiverse" has become overloaded. Max Tegmark thinks that there are at least four different kinds of "Multiverse", which he organizes into levels. This article corresponds to level 2: post-inflationary bubbles. The four levels are:

1\. Space beyond the cosmic horizon. 2\. Post-inflationary bubbles (this article). 3\. Quantum multiverse, i.e. Many Worlds interpretation. 4\. Platonic multiverses. i.e. Other mathematical structures that "are" universes.

It helps to know about the idea of different kinds of multiverse, and how they are not mutually exclusive, when reading articles like this which use the term Multiverse without disambiguating it.

See: [http://space.mit.edu/home/tegmark/crazy.html](http://space.mit.edu/home/tegmark/crazy.html)</comment>


System and method for creating exalted video games... - <AUTHOR> http://www.google.com/patents?id=aAuzAAAAEBAJ&printsec=abstract&zoom=4&dq=exalted&as_psra=1&as_psra=1#PPA1,M1 Abstract: A video game method and system for creating games where ideas have consequences, incorporating branching paths that correspond to a player's choices, wherein paths correspond to decisions founded upon ideals, resulting in exalted games with deeper soul and story, enhanced characters and meanings, and exalted gameplay. The classical hero's journey may be rendered, as the journey hinges on choices pivoting on classical ideals. Ideas that are rendered in word and deed will have consequences in the gameworld. Historical events such as The American Revolution may be brought to life, as players listen to famous speeches and choose sides. As great works of literature and dramatic art center around characters rendering ideals real, both internally and externally, in word and deed, in love and war, the present invention will afford video games that exalt the classical soul, as well as the great books, classics, and epic films—past, present, and future. <comment><USER2> This is just a patent application, and I hope it is denied, but the flow chart on page 1 is classic.

If you ever fail to spout American idealized political ideology the world falls into serfdom. Persisting in your proselytizing won't convince the NPC and save the world, but after you've done it enough you can shoot her and that saves the world.

You listening world? Take a lesson.

<comment><USER3> In later flow charts, quoting Lenin can turn people into a "vampire/communist" somehow. I've always suspected.

</comment></comment><comment><USER4> [http://www.google.com/patents/about?id=aAuzAAAAEBAJ&dq=e...](http://www.google.com/patents/about?id=aAuzAAAAEBAJ&dq=exalted&as_psra=1&as_psra=1)

Check out the "Gold 45 Revolver" patent heard 'round the world! Happy 4th! The videogames renaissance & revolution hath begun!

Happy 4th! The videogames renaissance & revolution hath begun! Check out the "Gold 45 Revolver" patent heard 'round the world:

SYSTEM AND METHOD FOR CREATING EXALTED VIDEO GAMES AND VIRTUAL REALITIES WHEREIN IDEAS HAVE CONSEQUENCES: [http://www.google.com/patents/about...sra=1&as_psra=1](http://www.google.com/patents/about...sra=1&as_psra=1)

<http://libertariangames.blogspot.com>

"a fallout 3 mod based on this poo poo would be boss as gently caress." "What's scary, for me, is that this might be exactly what gamers want." --onelastcontinue.com <http://www.onelastcontinue.com/9136...kers-patent-it/>

@SIMDYNASTY: "I didn't bother reading it, but my friend (who found it) said "did you notice he quotes the Declaration of Independence, Gandhi and then talks about Clint Eastwood and Eminem?"" --simdynasty.com "That thing is the proverbial gift that keeps on giving." --simdynasty.com "gently caress! I actually have to come back and read this later as it will take too long right now. loving hell though!" @TWITTER: Wow! Most amazing videogame patent ever. Save the earth from communism by not shooting the hooker! 120page WIN <http://tinyurl.com/savehooker> \--<http://twitter.com/DenUngeHerrHolm>

</comment><comment><USER5> My, it does go on a bit, eh? This sort of thing makes me wish the patent office could charge extra for unreasonable workload.

<comment><USER6> The claims only run to a hair above a single page, though. And they don't even amount to much - as far as I can tell, they're trying to patent what amounts to a plot for a video game. And not even a particularly interesting one!

</comment></comment><comment><USER7> It's a decision tree. With a moral angle. Sorry, but he should be fined for wasting the patent examiners time.

I tend to screw these things up, since IANAL, but this reminds me of Re vs. Bilski, in that all he did is take a couple of pre-existing ideas, threw them together, and added the words "in a video game".

</comment><comment><USER4> With a little bit of imagination, the novel "Gold 45 Revolver(SYSTEM AND METHOD FOR CREATING EXALTED VIDEO GAMES AND VIRTUAL REALITIES WHEREIN IDEAS HAVE CONSEQUENCES )" gaming technology could open up brand new universes of gaming! The major gaming companies are leaving billions on the table!

[http://forums.somethingawful.com/showthread.php?threadid=314...](http://forums.somethingawful.com/showthread.php?threadid=3143589&userid=0&perpage=40&pagenumber=9)

</comment><comment><USER8> <http://gold45revolver.com> <http://libertariangames.blogspot.com>

[http://forums.somethingawful.com/showthread.php?threadid=314...](http://forums.somethingawful.com/showthread.php?threadid=3143589)

"SYSTEM AND METHOD FOR CREATING EXALTED VIDEO GAMES AND VIRTUAL REALITIES WHEREIN IDEAS HAVE CONSEQUENCES"

</comment><comment><USER9> I wonder what it would cost to license this patent. The "quotes Hayek to turn zombie" mechanic has lots of cross applications I think.

</comment><comment><USER10> <http://libertariangames.blogspot.com> gold45 revolver How much is it worth 2 Bethesda/EA/38 Studios/Visceral/Bioware/Ubisoft?

</comment><comment><USER6> Patent or lit-major dissertation? YOU DECIDE!

</comment><comment><USER11> Oh my. What if our entire universe is just a role-playing game created by a crazy patent-seeker in another universe, and we are the NPCs?

At least, I'm not consciously a paying player. Are any of you?</comment>