Disassembling Jak and Daxter - <AUTHOR> http://www.codersnotes.com/notes/disassembling-jak/ <comment><USER2> "GOAL never had a source-line debugger, as far as I know, although there's no reason it couldn't given some effort to write one."

Actually, it did. IIRC, the debug state required for converting run-time addresses to source lines was persisted in the compiler (which was a REPL, not a one-shot process like C), rather than exported in the form of symbols. The interface was pretty sketchy, but I'd say it was about as usable as GDB. You could set breakpoints, inspect registers, etc...

A lot of debugging was "live" though - since all the code was hot-loadable, you could just insert a debug print in the middle of a function on the fly. It was a really nice, iterative way to work.

<comment><USER3> Since the entire thing was hot-loadable, how was the game linked, did every function call go through a indirection, or did you potentially re-link the entire program if the new function couldn't fit at the address of the old one?

<comment><AUTHOR> > did every function call go through a indirection

Yes.

<comment><USER3> I wonder if that would still be an acceptable trade-off with high-performance games on modern memory architectures.

<comment><USER4> No need to wonder. That is exactly how C++ vtables work.

<comment><USER5> For virtual functions. Not all calls get an indirection. At least with any respectable compiler..

<comment><USER4> Right, and how many game developers are recommending to "never use virtual functions because they are slow" in 2017? I remember seeing statements like that in Usenet posts and articles from the 1990s.

<comment><USER3> Also, "never use virtual functions" is very different than "don't use virtual functions everywhere" Common wisdom is that virtual function usage in hot loops can become problematic.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> I have such immense respect for the kind of people that made GOAL. From the powerpoint, it states that it was made by one developer over a year-ish, and solely supported it through the development of Jak and Daxter.

It's the kind of confidence like that, in a very aggressive market, where delays are killer, but knowing that you can make a tool that would help make an even better product.

Apparently the team had difficulty picking it up and using it for a while, and lots of issues that would run the development machines into the ground. Through all that, they still produced a very refined and high quality product on a tight deadline.

Anecdotally, introducing Angular to a group of seasoned developers, more experienced in RPG and JCL than anything web-wise, over the course of a month was enough to lose sleep on. Heavy respect for that developer and the team as a whole.

</comment><comment><USER7> The first Jak game I played was Jak II. It blew my God-damned mind. Completely smooth world transitions, completely smooth character and facial animations... and AUTO-SAVE. I used to tell my buddies "they could do auto-save because they wrote a custom threading system using coroutines -- in Lisp! -- that interleaved memory card I/O with the main engine in a way that C++ just couldn't do at the time!" They didn't understand, but oh well. Lisp had saved me from putting up with the game grinding gameplay to a halt while it was "Saving. Do not remove the MEMORY CARD (8MB) (for PlayStation® 2) or turn off the power."

</comment><comment><USER8> Interesting read! If you want to read more about the programming of Jak & Dexter, as well as its predecessor Crash Bandicoot, check out Andy Gavin's awesome blog: [http://all-things-andy-gavin.com/2011/03/12/making-crash- ban...](http://all-things-andy-gavin.com/2011/03/12/making-crash-bandicoot- gool-part-9/)

<comment><USER9> A while ago he gave me the manuals to GOALENV and GOALASM, but not the right to post them. Hopefully it's long enough ago now he'd be willing to make them public!

<comment><AUTHOR> Alas, I suspect it's up to Sony whether these things get published :(

</comment></comment></comment><comment><USER10> _I don 't work at Naughty Dog, and I don't have any secret knowledge of Jak & Daxter, except what I figured out myself from the disc. So a lot of this may well be wrong. Take a pinch of salt with it._

Isn't there an HN regular who _did_ work at Naughty Dog, at least in the Crash Bandicoot days? Was he still around by the J&D days to fact-check?

<comment><USER2> I know of at least a couple of ex-dogs who lurk around here. The article's pretty much correct, if memory serves.

I started at ND in 2004, around the tail-end of Jak 3. After Andy had left, I picked up the Goal compiler, and hacked it around to generate code for the PSP. After about a week or two, we had the kernel booting, and hot-patching working. We built a whole engine that looked _amazing_ , but unfortunately the project was shelved. Still, it was some of the most fun I've had in my career.

<comment><USER11> Why was it shelved?

<comment><USER12> Afaik they rewrote their engine for better threaded workflows for the ps3

</comment></comment></comment></comment><comment><USER13> This is basically the reason I visit HN at least once every day. What a fantastic article. Like the author, I've always had a fascination with ND games and especially the Jak & Daxter series (a fascination which only augmented when I learned how much of them was coded in a Scheme and I understood what that meant). Unlike the author, I've never had the perseverance or chops to disassemble the game like this. Props, and thank you!

</comment><comment><USER14> I worked at Naughty Dog, shipped Crash Team Racing and worked for 6 months on Jak & Daxter.

These are my understandings. If someone there as different recollections I'm happy to be corrected.

The LOD system in Jak & Daxter was based on / inspired by the LOD system in Crash Team Racing written by Danny Chan. The easiest way to explain that system is to imagine a cube with 8 vertices. Subdivide it so it's got 9 quads per face using 48 vertices. Let the artists move the vertices wherever they want. The close up LOD is the full 48 vertices, the far LOD is the 8 vertices. At some distance between the 2 the 48 are interpolated until they match the 8 so there's no popping. You can see this happen in CTR pretty easily if you play the Coco Park track. If you can manage to keep the purple pillars on the left in view you'll see them morph. Unfortunately this video doesn't keep them in view but it shows the pillars I'm referring to

[https://www.youtube.com/watch?v=StURmtwJfLk#t=6m30s](https://www.youtube.com/watch?v=StURmtwJfLk#t=6m30s)

Hiding the morph or rather building things that don't appear to morph was a skill the artists learned as they progressed. Jak & Daxter you don't see it much. The first Ratchet & Clank which uses the same tech from Naughty Dog you see it quite often as their artists were new to the technique.

As for GOAL it was my first experience writing a large amount of LISP. Before that I only wrote a few emacs macros. Things I took away from it

* Having your own compiler can be a huge benefit

Whether or not LISP itself is awesome many of the benefits were because we had our own compiler anything we wanted could be added. Live reloading of functions is not impossible in other languages if you have your own compiler.

Another simple example you could specify the byte offsets of fields of structs. As a game programmer that seemed awesome compared to C where you just had to go through contortions and add padding and pray.

* Having a full language for macros is amazing

I'm still surprised so few other languages have this. LISP lets you use the entire language at compile time. Query a database, read a file, emit code. In C/C++ most people use python to generate code in my experience. C++ has the template system but it's arguably not designed to do the things people make it do. In fact I'm surprised there aren't more transpilers from some reasonable language to C++ template meta programming. Even if that was popular though C++ templates can't read files or query databases at compile time.

As one tiny example I designed a particle system. There was an init structure listing all the parameters for particles. To be efficient it needed the list of be in the same order as the fields in memory. The macros I wrote would take an unsorted list and sort at compile time, filling out any missing parameters with defaults so the code that emits a particle would walk straight forward, no conditionals, cache friendly.

In any case I'm still waiting for a mainstream language to offer this

* Having a REPL into the game is cool

You could almost think of working on Jak & Daxter like opening up an webpage in your browser's devtools. A REPL at the bottom you can start inspecting things, changing variables, even more you could replace functions. The whole thing ran inside emacs. You could open a file, put your cursor in some function and press some hotkey to compile just that function live and patch it into the running game. This was better than say Unity in that Unity serializes the entire game, compiles everything, then deserializes back where as GOAL would just compile that one function.

* No 3rd party libraries

I'm not sure this was important back then but nowadays with so much open source and commercial libraries to help make a game it was a problem that the GOAL environment was not really conducive to using any 3rd party code since that would have been in C/C++

* No Visual Studio quality debugger

I've been on lots of projects without a good debugger and it's always been frustrating. Writing your own language from scratch probably means no good source level debugger. From the REPL you could set breakpoints and step through code but it was like using gdb. Sure I get by but not nearly as fast as a real debugger with watches, various panes showing live memory, live variables, conditional breakpoints, etc...

Maybe now a days you could easily make a web based backend or abuse the browser devtools with source maps and remote debugging protocol or something to get a good debugger with low effort?

* Slow Dev system

This might have been a problem that was fixed but when I left you'd start up the game and wait several minutes as in like 10 or maybe even 20 before you could play. The entire AST for the code would be put into GOAL and then the game would be running. If the game crashed you'd get a message in the REPL. Andy Gavin, the guy that created GOAL would look at the message, see the issue, type some magic incantation, and the game would come back instantly. For me though who didn't have a mental image of how the entire system worked most of the time I just had to reboot and wait the 10-20 minutes.

How that was eventually solved I have no idea. Maybe all the programmers internalized the system and could do the same magic that Andy could do. Or maybe Andy found a way to make the system start up faster.

I'd be curious to know the answer.

Of course this was offset by being able to live edit functions for fast iteration.

* LISP can be fast

There's nothing inherently slow about LISP. Maybe most impls are not fast but GOAL was. Jak & Daxter has some of the largest worlds, with the most polygons on the screen and it runs at 60fps on PS2 where as most other games on PS2 run at 30fps or less and far less polygons. That includes whatever garbage collection it used (I honestly don't remember what it did there). In other words, whatever assumptions I had about higher level languages and/or garbage collection being bad for game dev were mostly proven wrong.

<comment><AUTHOR> > There's nothing inherently slow about LISP.

> In other words, whatever assumptions I had about higher level languages > and/or garbage collection being bad for game dev were mostly proven wrong.

I'm afraid I have to disagree on that point. GOAL is not LISP -- it just looks a bit like it, and draws a lot of ideas from it. However, LISP is ultimately dynamically typed, while GOAL is statically typed. This means the compiler can generate fast code ahead of time, LISP can't.

GOAL also does not use runtime garbage collection in the same way a LISP system does.

<comment><USER15> > However, LISP is ultimately dynamically typed, while GOAL is statically > typed. This means the compiler can generate fast code ahead of time, LISP > can't.

LISP (of 1958) can't, but Lisp can. Optimizing compilers for Lisp were invented decades ago.

Surprise: Common Lisp has types and type declarations since day one (1984). The type system is not what you would expect from, say, Haskell. But it allows the developer to define and specify types.

Additionally one can set optimization policies (debug, space, safety, ...), declare functions to be compiled inline or request to have data stack allocated. And so on...

Compilers which take advantage of type declarations and type inference to create optimized code exist also since that time.

See the Common Lisp Hyperspec chapter on types:

[http://www.lispworks.com/documentation/HyperSpec/Body/04_.ht...](http://www.lispworks.com/documentation/HyperSpec/Body/04_.htm)

> GOAL also does not use runtime garbage collection in the same way a LISP > system does.

There are several Lisp systems which do similar things (manual memory management) like GOAL. Mostly they were/are used to develop certain types of applications - like GOAL.

Let's see how sbcl, ( [http://sbcl.org](http://sbcl.org) ) handles types at compile time: it clearly identifies and describes where it has not enough information for best optimization.

        (declaim (optimize (speed 3) (debug 0)))

        ; a TYPE declaration

        (deftype somebyte ()
          `(integer 0 255))

        ; an untyped function

        (defun add1 (a b)
          (+ a b))

        ; declararing the types of function ADD2
        ; but one argument remains of general type.
        ; arguments are of type SOMEBYTE and T.
        ; T is the most general type.
        ; Return value has type SOMEBYTE.

        (declaim (ftype (function (somebyte t) somebyte)
                        add2))

        (defun add2 (a b)
          (+ a b))

        ; declararing the types of function ADD3

        (declaim (ftype (function (somebyte somebyte) somebyte)
                        add3))

        (defun add3 (a b)
          (+ a b))

You can now see what the LISP (sic!) compiler says, when it can't optimize the code:

        * (compile-file "/tmp/test.lisp")

        ; compiling file "/private/tmp/test.lisp" (written 13 JAN 2017 09:15:03 AM):
        ; compiling (DECLAIM (OPTIMIZE # ...))
        ; compiling (DEFTYPE SOMEBYTE ...)
        ; compiling (DEFUN ADD1 ...)
        ; file: /private/tmp/test.lisp
        ; in: DEFUN ADD1
        ;     (+ A B)
        ;
        ; note: forced to do GENERIC-+ (cost 10)
        ;       unable to do inline float arithmetic (cost 2) because:
        ;       The first argument is a T, not a DOUBLE-FLOAT.
        ;       The second argument is a T, not a DOUBLE-FLOAT.
        ;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES DOUBLE-FLOAT
        ;                                                                &REST T).
        ;       unable to do inline float arithmetic (cost 2) because:
        ;       The first argument is a T, not a SINGLE-FLOAT.
        ;       The second argument is a T, not a SINGLE-FLOAT.
        ;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES SINGLE-FLOAT
        ;                                                                &REST T).
        ;       etc.

        ; compiling (DECLAIM (FTYPE # ...))
        ; compiling (DEFUN ADD2 ...)
        ; file: /private/tmp/test.lisp
        ; in: DEFUN ADD2
        ;     (+ A B)
        ;
        ; note: forced to do GENERIC-+ (cost 10)
        ;       unable to do inline fixnum arithmetic (cost 2) because:
        ;       The second argument is a T, not a FIXNUM.
        ;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES FIXNUM &REST T).
        ;       unable to do inline (signed-byte 64) arithmetic (cost 5) because:
        ;       The second argument is a T, not a (SIGNED-BYTE 64).
        ;       The result is a (VALUES NUMBER &OPTIONAL), not a (VALUES (SIGNED-BYTE 64)
        ;                                                                &REST T).
        ;       etc.

        ; compiling (DECLAIM (FTYPE # ...))
        ; compiling (DEFUN ADD3 ...);
        ; compilation unit finished
        ;   printed 2 notes

        ; /tmp/test.fasl written
        ; compilation finished in 0:00:00.030
        #P"/private/tmp/test.fasl"
        NIL
        NIL

<comment><USER16> It might also be interesting for readers to see what the resulting code is from these three functions.

I recompiled your code with SAFETY 0 and here is the result. This example also shows off how you can look at the disassembly of any function directly from the REPL.

First, ADD1. Since the compiler doesn't know anything about the types (the arguments could be floating points numbers, rationals, bignums or any other type) so it will simply call the GENERIC-+ function which does all of this. Needless to say, it's much slower than a native addition.

        CL-USER> (disassemble #'add1)
        ; disassembly for ADD1
        ; Size: 14 bytes. Origin: #x2291202A
        ; 2A:       488BD1           MOV RDX, RCX                     ; no-arg-parsing entry point
        ; 2D:       E86EE26EFD       CALL #x200002A0                  ; GENERIC-+
        ; 32:       488BE5           MOV RSP, RBP
        ; 35:       F8               CLC
        ; 36:       5D               POP RBP
        ; 37:       C3               RET

The function ADD2 still has unknown types, so there is not much the compiler can do but to call GENERIC-+ in this case.

        CL-USER> (disassemble #'add2)
        ; disassembly for ADD2
        ; Size: 14 bytes. Origin: #x22911FBA
        ; BA:       488BD1           MOV RDX, RCX                     ; no-arg-parsing entry point
        ; BD:       E8DEE26EFD       CALL #x200002A0                  ; GENERIC-+
        ; C2:       488BE5           MOV RSP, RBP
        ; C5:       F8               CLC
        ; C6:       5D               POP RBP
        ; C7:       C3               RET

Since the compiler knows that both arguments are bytes, it can simply call the ADD instruction. With the exception of some extra bookkeeping needed when returning from the function, this is just as efficient as what a C++ compiler would generate. You can also declare a function as INLINE to allow the compiler to inline the call.

        CL-USER> (disassemble #'add3)
        ; disassembly for ADD3
        ; Size: 12 bytes. Origin: #x22911F4A
        ; 4A:       4801F9           ADD RCX, RDI                     ; no-arg-parsing entry point
        ; 4D:       488BD1           MOV RDX, RCX
        ; 50:       488BE5           MOV RSP, RBP
        ; 53:       F8               CLC
        ; 54:       5D               POP RBP
        ; 55:       C3               RET

</comment></comment></comment></comment><comment><USER17> If the author is reading, I found the disassembler source[1] interesting - MSVC hangs when you compile it for Release!

[1] [https://github.com/rmitton/goaldis](https://github.com/rmitton/goaldis)

<comment><AUTHOR> Yeah I noticed that :)

I believe it might be the giant if-then chain I use for disassembling opcodes.</comment></comment>


Google Research and Daydream Labs: Seeing eye to eye in mixed reality - <AUTHOR> https://www.blog.google/products/google-vr/google-research-and-daydream-labs-seeing-eye-eye-mixed-reality/ <comment><USER2> That is really cool! They are using a realistic 3D model of the persons face and eye-tracking in the VR headset to make a good guess at their facial expression, effectively reconstructing the face that's hidden by the headset.

Not something you can easily do as a consumer yet, but for high quality mixed reality production this seems like a great boon.

For an explanation of mixed reality videos are made I recommend this: [https://www.youtube.com/watch?v=8T7ux3DXP_w](https://www.youtube.com/watch?v=8T7ux3DXP_w)

</comment><comment><USER3> This is really cool work. I'm not sure about anyone else, but this doesn't get past the Uncanny Valley for me.

<comment><USER4> I really liked the approach that Oculus are taking and which Zuck demo'd last year[1], with cartoon avatars that are still expressive enough to convey facial expressions.

It definitely falls on the other side of the uncanny valley, and anyway, who is going to want to render a realistic version of themselves into the VR world, when you can be <insert favourite person/creature/character>?

That said the tech in the OP is very cool, and I can see plenty of use cases (e.g. business meetings or celebrity broadcasts).

[1]: [https://www.facebook.com/zuck/videos/10103154531425531/](https://www.facebook.com/zuck/videos/10103154531425531/)

<comment><USER5> In the FB video, I think the facial expressions were like emoticons: they had to be manually invoked. This approach could do it automatically in realtime, by mapping the facial movements onto a cartoon avatar (probably easier than onto the real face).

<comment><USER4> Interesting, do you have a source for that info, or is that a guess?

Watching the video the eyebrow movements look a bit twitchy, I'd assumed they were face-tracking them. I have no supporting evidence beyond watching the video, so I'd be interested to know more details either way.

</comment></comment></comment></comment><comment><USER6> That's very cool, but a LOT of production work.

Probably fails the cost-benefit analysis for most people doing Mixed Reality videos for their VR products. However, if it was productised, that'd be a different story.</comment>


Video of hundreds of police attacks on peaceful protestors - <AUTHOR> https://twitter.com/greg_doucette/status/1266751520055459847 <comment><USER2> Police have proven, without a doubt, in the past week, that they cosplay as military because they lack the necessary discipline to join the actual service, and that the only joy they get in life is to take a break from beating their wives to inflict violence on innocent civilians. They're a rogue force that must be defunded and disbanded.

<comment><USER3> It's been remarkable to watch the military, where they've been involved, handle things so much better than the police have. The difference in training and attitude couldn't be clearer and it makes the police look even worse by comparison.

<comment><USER4> It truly seems that the military members' first and foremost allegiance is to the country -- and that for many cops, their allegiance is to their department.

Disturbing thought of the week: would a coup actually be an improvement on the current situation?

<comment><USER5> I've thought this through.

The military is both loyal to the Constitution and wary of the idea of fighting an insurrection at home - the generals know exactly how bad it gets because they have just been doing that overseas. They have every reason to do what it takes to put back the country together with minimal harm, given a crisis where they are called upon to make a significant commitment of forces. But they won't act until they start getting orders that will trigger such a crisis - i.e. to do unconstitutional acts at home with the goal of putting down insurrection.

And that presents the worst case scenario: Months to years of military governance that is premised in reestablishing the values and principles of the USA. This will necessarily bring out some related questions around the founding document and overturn some historical precedents.

But it will not turn into a dictatorship because that makes the loyalties compete with each other: You would need a leader so strong, so approved of as an ideal, that they can overturn centuries of belief in the nation. Unlike countries that have little history in this regard and are prone to instability, the only way any such leader can look legitimate and maintain power is by following through on the core values of the USA and therefore winning "hearts and minds". As such they would reinstall a republic in due time.

And that is the worst case, as I see it. It only gets milder from there, with more of the reforms coming from within the existing system.

</comment></comment></comment></comment><comment><USER6> @greg_doucette posted over 200 videos in this thread but it's difficult to scroll through all of them, you may have to search something like:

[https://twitter.com/search?q=from%3Agreg_doucette%201%EF%B8%...](https://twitter.com/search?q=from%3Agreg_doucette%201%EF%B8%8F⃣1%EF%B8%8F⃣1%EF%B8%8F⃣&src=typed_query)

or [https://twitter.com/search?q=from%3Agreg_doucette&src=typed_...](https://twitter.com/search?q=from%3Agreg_doucette&src=typed_query) if that one doesn't work here

</comment><comment><USER7> Thanks--will look later. For someone who already has, are these mostly legit? That is, is there enough context to see that the protesters were acting lawfully and not the instigators?

</comment><comment><USER8> I've been thinking of relocating away from the DC area and eventually, a database of police and local government attitudes will be one of the primary factors in deciding where to relocate, if I decide to do so.

Obviously NY, Seattle, Minneapolis, Louisville, and Asheville NC are not under consideration.

</comment><comment><USER9> Some of these are hard to watch.</comment>


Ask HN: Resources to learn Angular JS? - <AUTHOR>

I've been learning Javascript for a while now and am quite impressed with what Angular JS can do.<p>So now that im ready to get my hands dirty, where should I start first? <comment><USER2> Some links I found helpful while trying to make a sudoku game with angularjs (<https://github.com/mouradmourafiq/angular_sudoku>):

[http://deansofer.com/posts/view/14/AngularJs-Tips-and- Tricks...](http://deansofer.com/posts/view/14/AngularJs-Tips-and-Tricks- UPDATED)

[http://www.yearofmoo.com/2012/10/more-angularjs-magic-to- sup...](http://www.yearofmoo.com/2012/10/more-angularjs-magic-to-supercharge- your-webapp.html)

<http://blog.petermolgaard.com/tag/angularjs/>

[http://onehungrymind.com/angularjs-sticky-notes- pt-1-archite...](http://onehungrymind.com/angularjs-sticky-notes- pt-1-architecture/)

[http://www.raymondcamden.com/index.cfm/2011/11/29/My- first-A...](http://www.raymondcamden.com/index.cfm/2011/11/29/My-first- AngularJS-application)

A google discussions about the difference between factory and service:

[https://groups.google.com/forum/?fromgroups=#!searchin/angul...](https://groups.google.com/forum/?fromgroups=#!searchin/angular/service$20factory/angular/56sdORWEoqg/VxECXKbn3gsJ)

</comment><comment><USER3> The main angularJS site has a good tutorial to get you started. This blog i found helpful when getting started, specially the integration with yeoman: <http://briantford.com/blog/angular-yeoman.html>. These are video tutorials about angular.js: <http://egghead.io/>. The rest is up to you.

</comment><comment><USER4> RailsCasts has a good pro episode. <http://railscasts.com/episodes/405-angularjs></comment>


Raphaël, small javascript library for manipulating images and charts (svg/vml) - <AUTHOR> http://dmitry.baranovskiy.com/raphael/ <comment><USER2> I started playing with this yesterday. It might make for a good alternative to canvas. At least from a compatibility standpoint.

Internet Explorer doesn't have native support for canvas or svg, which is why Excanvas and Raphael fall back on vml to provide canvas and svg-like support, respectively.

Canvas and vml really aren't a good match, though. Canvas is stateless, whereas both vml and svg insert objects into the DOM. It's this mismatch that really kills Excanvas' performance when rendering any kind of animation.

<comment><USER3> _"... Internet Explorer doesn't have native support for canvas ..."_

Yes it does ~ <http://code.google.com/p/explorercanvas/>

<comment><USER2> Explorer Canvas aka "Excanvas" uses VML. That's kind of what my post was about. It's a very nice hack, but it's certainly not native support.

<comment><USER3> _"... It's a very nice hack, but it's certainly not native support. ..."_

You are right. I missed that bit but does allow you to give IE users a taste. If we waited for full binary support for all things without hacks nothing would get done.

</comment></comment></comment></comment><comment><USER4> This is pretty cool.

I'm impressed that they have tested it in working in IE6+, FF3+, Safari 3+, Opera 9.5

</comment><comment><USER5> I can think of a few apps that could use this library. Man it's really difficult to express enthusiasm over the internet.</comment>


On responses to "Bye, Amazon" - <AUTHOR> https://www.tbray.org/ongoing/When/202x/2020/05/06/Answers <comment><USER3> > Yeah, the story is about firing whistleblowers, not about a random Canadian > Distinguished Engineer's reaction to it. So news organizations should follow > the primary sources, not me.

Yes and no. I appreciate where he's coming from, but "mega-corporation exploits and mistreats blue-collar workers" isn't new. That happens every day, and has since corporations have existed.

"White-collar worker quits over own company's treatment of blue-collar workers" _is_ news. It points to a shift: even the people profiting off this are starting to think it's getting ridiculous.

I'm having trouble thinking of any other cases where this has occurred. The only thing that comes to mind is Gates and Buffet saying they should pay higher taxes, but that has much less personal impact on them.

<comment><USER4> Yes.

This incident shows AWS engineers have significantly more leverage than their coworkers in warehouses. If you are an engineer who works for Amazon and you want to see real changes here's a suggestion:

In an ideal world, you will not have to look for another job, to encourage change, but considering the circumstances, the most impactful way to encourage change is to follow Tim Bray's footsteps.

If a significant amount of critical engineers leave AWS and they make it clear that it was because of the poor treatment of Fulfillment Center teammates, Amazon will change. AWS who want to have a major impact, and are _willing & able_, should find a new employer. Secure new positions, resign then write to all the journalists covering Tim Bray's story, about why this group decided to leave. Warehouse workers as a group have significantly less leverage because they are easier to replace, especially now when there are so many people who are unemployed that can quickly take their position. AWS engineers as a group have far more leverage because they are harder to replace, even now, during the pandemic.

As for me, this will be the last year I shop for products on Amazon for the foreseeable future, and I may never come back, and I will be encouraging others to do the same. I'm one of those people who love shopping on Amazon, well not anymore.

<comment><USER5> I know it's not much, but every time Amazon's recruiters send me an invitation to apply for a position with them, I respond saying that I won't consider working for them until they treat their warehouse workers better. Of course it helps that I am happily employed and not looking for a new job.

<comment><USER6> Big change is made up of a bunch of small deeds that are each individually not much. Good for you!

<comment><USER7> yes, our brains are evolutionarily wired to magnify adverse phenomena from very little data.

if a given recruiter hears that message just 3 or 4 times, they're likely to start believing it's prevalent across the labor pool.

</comment></comment></comment></comment></comment><comment><USER8> Super glad to see Tim pointing media organizations to the actual impacted folks. Emily Cunningham, for instance, is a good speaker with an important story to tell and a passion for change.

It's nice to see someone with Tim's position handing the megaphone off.

<comment><USER9> That may be true, but she doesn't have the presence that Bray does. It's understandable that he doesn't want to be the face of it, but I feel he's doing the movement a disservice by quitting in protest and then _not_ working it. Whether he likes it or not, he's had a significant, long-term impact on the world and has been in the public eye for decades. Being able to put a graphic on the screen that says "Tim Bray: Internet pioneer quit in protest of Amazon workplace environment and worker treatment" is far more likely to gain traction with the average person, who is who they need to attract, than you can do with Cunningham. Even if Bray isn't as well spoken as she is.

It's unfortunate, but that's the way it works. One comes across as a person who saw something wrong and wanted to be part of the change, even at their own expense. The other comes across as a disgruntled fired employee (whether that's true or not is irrelevant when you have seconds to convince someone just to pay attention to your cause).

I don't think he's wrong to want to stay out of it and let others directly involved lead it, but I feel he hurt things a bit by shining the spotlight on himself (which was unintentional, to be sure) and then turning his back on it.

<comment><USER10> Is it really this way? "The average person" has never heard of either of these people.

<comment><USER9> You don't need to have heard of everyone in an interview. An interviewer being able to introduce you as someone of authority (which Bray surely is) who wasn't fired, but quit in protest should (keyword, of course) give the layman enough information about you to at least listen to what you're saying. And given that the spotlight was put very squarely on him in the last week already, there's a chance that people have already seen news reports about his resignation, which would help with that a little more.

That's all hypothetical, though. I'm curious if there is any studies/hard data on the effectiveness of the two situations in reaching the public. Maybe I'll try to do some digging this weekend.

</comment></comment></comment></comment><comment><USER11> Brad Porters response is really disappointing.

It's possible that he and his team are doing everything in their power but that Amazon completely fails it's warehouse workers nonetheless.

<comment><USER12> Completely agree. I saw this on LinkedIn where some of my ex-colleagues gave it a bunch of "Well said!" platitudes (side note: comments on LinkedIn posts must be the largest collection on useless banal drivel that humanity has ever produced, and in a world of ubiquitous social media, that's saying a lot).

It was so disappointing not because it was wrong - all of the points Brad made about Amazon going to great lengths to protect workers and rejigger processes rang true. But it missed the point and completely did not address at all Amazon's culture WRT responding to whistleblowers. Furthermore, all the other "yeah, that's right!" comments from other very highly paid white collar Amazonians (with barely a peep from Amazon's factory workers, though not unexpected given the medium) came across as extremely tone deaf and the equivalent of the aristocracy congratulating each other over how well they treat the servants.

<comment><USER13> I think the problem with LinkedIn is that it is exhibitionist by its very nature. Your audience is not just your co-workers, but potential employers, so most people say the things that are accepted within that group ( though it could be argued many groups are like that -- even HN to an extent ) and/or please prospective recruiters.

I agree about one thing though. LinkedIn was the only place when I was straight up 'attacked' by random people, who did not agree with my opinion. All of a sudden, all my posts started talking about coke I do and whatnot. It was a weird experience for me, but I immediately stopped all actual conversations on LinkedIn based on that.

The risks are not worth it.

</comment></comment></comment><comment><USER14> The "bye, amazon" post made me think about my consumer habits. I'm building a gaming rig now, I decided to avoid amazon and ebay as much as I ca to let shops avoid paying selling and advertising fees.

<comment><USER15> I'm curious what the reason for avoiding eBay is?

They don't seem to be engaging in any of the more egregious behaviors that earn Amazon flak simply by virtue of not having their own product lines and warehouse/distribution system.

<comment><USER14> > I'm curious what the reason for avoiding eBay is?

Super low quality customer support, eBay is on sellers side as they bring profits, sellers purposely adversative products to sell more then refuse refunds, when I made complaint to eBay eBay got on their side. I have humidifier that not suitable for my needs and has super-low quality filter that's not HEPA as it was described. When I want to buy something cheap of questionable/unidentified quality, I go to aliexpress.

I have motorcycle cover that was supposed be XL and fit my motorbike, but got S that covers only top half... seller sent be back 20% of cost, but I still have cover I can't use.

GPS tracker that for some reason doesn't work with Orange (and others) SIM cards in the UK, but works in Poland (with Orange SIM).

Arduino WiFi that came in original(?) packaging, but was rusted. I can keep going like this...

It's been like this since I ever use eBay (~2010), I always lie to myself "this time it won't happen" and it keeps happening.

<comment><USER16> > eBay is on sellers side as they bring profits

Amazing how perspective is. I'm 99% a buyer (hundreds of items bought, and three items sold, and never again).

I sold a Mavic 2 Pro drone with 5 batteries. The whole process was a mess. Buyer complained that it didn't come with the CrystalSky tablet in one picture (that was added after they started bidding, to show Flight Logs, was explicitly disclaimed as being a part of the package, and was not in the receipts I sent the buyer). After that, three weeks later:

"The batteries don't work."

"Any of them?"

"Nope. I want a refund."

Note that two of the batteries were less than 4 months old, still in warranty.

He then stated he wanted a refund of $800. Bear in mind, 5 brand new batteries would be $670.

No evidence was shown. I stated I'd like to get the original batteries back, as I'd be able to get them replaced under warranty or possibly repaired and recoup some of my money (I was skeptical there was any issue, but still). He agreed. I asked him to send me an eBay message acknowledging that the partial refund was contingent on him sending me the batteries back and that he accepts me disputing the refund if not.

He does so.

Refund is sent (for about $700, to include his return shipping costs).

Less than an hour later I get a message, "USPS says they won't ship damaged batteries so I will not be returning them".

I then suggest we meet in person to exchange them (I live a few hours away, not convenient, but still, $700...). He umms and ahhs, "How will I be able to prove that I gave them to you in person?". I suggest we do it in a police station (his local PD suggests people do this for CL, etc.). More umm and ahh. "I need to contact eBay support to see if they recommend this." (eBay has a FAQ page describing how they recommend doing in person sales, and refunds, and documenting it). "I never heard back from them so I'm not sure what to do". I point this out, and he goes silent.

I open a dispute. No evidence provided for damage/faulty goods. Multiple instances of the buyer trying to show something/anything was problematic with the listing. Not abiding by agreement, refusing/avoiding any method of returning damage.

"We have closed your dispute. Based on our review, the buyer is entitled to a partial refund for damage. He is not required to return the batteries".

So he ended up with a Mavic 2 Pro, with less than 20 hours flight time, 5 batteries, for in the order of $950, all told.

eBay is on the side of least resistance, damage or liability, financial responsibility to eBay, no-one else.

</comment></comment></comment></comment><comment><USER17> Wow, the linked response to his initial post from Brad Porter is actually the single slimiest business communication I think I've ever read. Snake.

What is it about corporations that strips your personhood?

EDIT: On further inspection, the other post (by Anton Okmyanskiy) is actually worse. The undercurrent of "Yes, we're being evil. No, we're not going to change in meaningful ways. I don't even feel bad about the ways we're currently being evil. Why? Ideology!" within it is somehow slimier: with Porter, he's at least lacking self-awareness (or _public-facing_ self- awareness), but in Okmyanskiy's case, it's definitely there, he just doesn't care.

<comment><USER18> It was a surprisingly typical PR piece. The issue is firing whistleblowers, the whole response is about working real hard and saying the truly offensive thing was a comment in the other's article. I guess people internalize this way of presenting things when they get to this level.

</comment></comment><comment><USER19> Having done a bit of time at Amazon, I'm so perplexed by some of the news coming out around them now.

* Amazon.jobs || [https://www.amazon.jobs/en/principles](https://www.amazon.jobs/en/principles)

Ownership, Insist on the Highest Standards, Earn Trust, Have Backbone; Disagree and Commit...

Their response to whistle blowers should have been, "Hey thanks for bringing this up internally, that's what the internal communication tools were for. We're trying, but clearly these are unprecedented times and we need to do better. Thanks for bringing your voice and your data to the table so we can improve."

I don't love the idea of airing dirty laundry without going through internal channels first... but assuming these people did that first, they should never have been shown the door. Amazon is a startup at scale, and if you take away the ability for people to openly raise concerns, you ruin the culture.

It shouldn't just be about the stock price, y'know? Amazon was a great place to work, and grew, because people challenged authority and found better ways of doing things. It's a mistake, and hugely damaging to the brand, to lose sight of that.

<comment><USER20> Ex Amazon here.

I agree with most of the principles and find them meaningful rather than "deliver excellence" platitudes.

But some some principles clearly apply only to the workers and not management. Earn Trust, Have backbone and Frugality especially.

> Amazon is a startup at scale

That's a PR slogan.

> It shouldn't just be about the stock price, y'know?

Amazon is a for-profit company. Workers engage in frugality, stockholders enjoy the billions.

> because people challenged authority

Amazon is quite data-driven when it comes to engineering but very vertical and disciplinarian. Try challenging Bezos, or talking about unions, for example. Remember point 6 of the SOA memo?

\---

5) All service interfaces, without exception, must be designed from the ground up to be externalizable. That is to say, the team must plan and design to be able to expose the interface to developers in the outside world. No exceptions. 6) Anyone who doesn't do this will be fired. 7) Thank you; have a nice day!

\---

The company is well know for firing easily, both directly and through stack ranking.

<comment><USER19> Well, yes... but anyone who doesn't use service-oriented architecture should be fired, right? (=

I mean... we've all seen some of the shit Amazon put out back in the day, the one-offs, the impossible to maintain or integrate with shit some team in a silo built... easy to have silos when every team has to be small. I don't know, I really feel like the SOA memo wasn't so much a threat as just a joke to bring home the point that not using SOA is dumb and impossible to work with.

And I honestly felt like Amazon was a startup at scale. Man, I really loved my time there. Met some of the best people I ever worked with.

<comment><USER20> I largely agree on using SOA (although Amazon sometimes goes too far) but this thread is not about design.

</comment></comment></comment></comment><comment><USER21> It's uncomfortable to think about, but the companies that serve us are largely reflections of what we value as a society. Right now people value low-cost and convenience. If consumers were willing to pay more for the same goods because a retailer treated employees well, retailers would follow suit.

Don't blame Amazon, they're just giving us exactly what we want, and I say that as someone who buys from Amazon, feels bad about it, but keeps buying because I just can't give up the low cost and convenience.

Instead of asking Amazon to do better, we should be asking ourselves why we are so unwilling to pay anything but the absolute lowest cost for something in spite of all the negative consequences for others.

<comment><USER17> Willing isn't equivalent to able. For tech workers, sure, they can afford expensive products. When you've got a _household_ income of _$44,097_ (literally West Virginia's _median_ household income), it stops being "willing" and becomes "able."

Don't blame consumers when the problem is companies and law itself.

</comment></comment><comment><USER22> I just cannot see any response on LinkedIn as anything other than exhibitionism.

It's always the Directors/VPs that I see doing this. Is it just their in-group doesn't have time for personal blogs any more?

<comment><USER23> Did they ever...?

Most "personal" blogs from VP-and-over personalities have always read like carefully-scripted PR.

</comment></comment><comment><USER24> I still don't understand in what way Amazon warehouse workers are being treated worse than an average American warehouse worker working for someone other than Amazon.

<comment><USER25> I've had friends who worked in Amazon warehouses. They've all been puzzled by the news stories about bathroom break issues and unreasonable performance targets, because it doesn't match their experience at all. When a company reaches Amazon's scale, I have no problem believing that someone, somewhere, was mismanaging a team. I don't believe it's the norm though.

As for recent events, the complaints seem to be that Amazon didn't implement enough COVID-19 countermeasures early enough, and that their implementation of COVID-19 policies hasn't had perfect coverage. From [https://www.theverge.com/2020/4/10/21216172/amazon- coronavir...](https://www.theverge.com/2020/4/10/21216172/amazon-coronavirus- protests-response-safety-jfk8-fired-covid-19)

> Smalls, 31 years old and father of three, had worked at JFK8 since it opened > in 2018 and Amazon warehouses in New Jersey and Connecticut before that. > It's a good job, he says, with good benefits, and he hadn't had any > complaints. But in early March, he became concerned about what would happen > when the virus reached the warehouse with its 5,000 employees.

You can read more anecdotes in the article. I fully believe the managers involved in those incidents should be fired, but I'm still not convinced that those negative anecdotes are the norm across all of Amazon.

<comment><USER26> And then you hear story after story about mass infections at meat processing pants where the employee conditions sound far worse, but that doesn't make the news like this

</comment></comment></comment><comment><USER27> With big companies should we (as in the world) not be singling out the actual people who make the shitty decisions in these big organisations. From the previous thread I got the impression that not all Amazon warehouses are equal. I have been in corporate companies where senior management make really rubbish decisions and hide behind the PR company releases. In the end it reflects badly on the whole company but it really is a few bad apples. Disclaimer I know nothing about how the whole PR world works.

</comment><comment><USER28> I choose to stay with Amazon, but I have a lot of respect for people who do what their heart tells them to do. It's not my fight to fight though.

<comment><USER29> The thing is, that's totally alright too! I don't think we should realistically expect everyone bothered by it to quit.. our current environment doesn't support this ideology.

The disgusting thing is when Brad posted a PR piece that avoided the issue Tim raised. Brad could be the best person in the world but that action was not good or fair.

</comment></comment><comment><USER30> If I search these comments for the word "union", there are no relevant results. Why don't we unionize tech workers?

</comment><comment><USER31> > _Two things can be true at once: You work hard to preserve your employees' > health, and your administrative culture treats them as fungible units._

This is some pretty agile dancing. :)

<comment><USER32> Why? A farmer works hard to preserve his cows' health (every cow that gets sick is lost money), yet they are fungible units on their way to the meet grinder.

The two things are perfectly compatible.

<comment><USER33> Sick cows don't always mean lost money, and farmers don't work hard to preserve the aspects of the cow's health that doesn't cost them money. For example, it's actually cheaper to keep cows in conditions that would cause any animal to suffer from depression, than to care for their mental health.

It may seem weird to talk about the mental health of beef cattle, but we're not talking about beef cattle, we're talking about workers, whose mental health absolutely does matter.

</comment></comment></comment><comment><USER34> Amazon is a very problematic mega-corporation in many respects, not the least of which being worker exploitation. It really needs to be either broken up or socialized.

<comment><USER35> It amazes me how unself aware some HN users are when it comes to giving Government more power. I wonder do they know how much bad tech regulation has been both passed and stopped.

The government would love to have more power over tech to both gather information on people and to control the narrative.

Did anyone not see how Tim Cook was kissing up to the President and how much he enjoyed it? Do you really prefer to have a potential abusive government With the power of the state with more power.

<comment><USER33> I'm definitely not pro-government. I want power to be in the hands of individuals, not _any_ centralized entity.

The problem is, if you don't have a powerful government, you get something worse: powerful corporations. At least government (in a democracy) has to maintain some pretense of serving individuals. The only times corporations have to pretend to serve individuals is if their customers are individuals, and even then they can just lie about it: the whole field of advertising is devoted to that. Governments can (and do) lie about serving people too, but they have it a bit harder: consider the difference in connotation between the words "advertising" and "propaganda". And in an ideal government, there's a great deal of transparency, which makes it harder to lie. In contrast, corporations have largely unquestioned active protections over their internal secrets, and corporate transparency is practically oxymoronic.

The role of government is to protect the weak from the strong, and in order to do that, unfortunately, government has to be strong. In this context, that means regulating corporations so that they can't trample individuals. Ideally, government also has checks and balances so that government also protects individuals from government. Obviously that's hard to do, and no government I know of has implemented it perfectly, but it's the best idea we have--if you have a better idea feel free to share it. And so we're clear: having an anemic government isn't a better idea: that just gives you rule by corporations.

<comment><USER34> > The role of government is to protect the weak from the strong

The role of government is to maintain the social order, the basic social relations w.r.t. ownership of property, particularly capital like land, production facilities, access to natural resources etc.

This means mostly protecting the interests of the strong few against the weak many. In some cases of misconduct by powerful individuals or companies - outside the bounds of the acceptable and resulting in potential jeopardy of the social order - it may protect the weak against the powerful as well.

<comment><USER35> How has the government protecting the weak and minorities worked out - <USER2> the entire history of the US?

In the US "it's not the strong few". The majority can and does use the government to impose its will.

<comment><USER34> That's like saying the wind imposes its will on a sailing ship. It's not entirely false, in the sense that the ship only goes in a direction that's not upwind, but - the ship uses the sail angle to take angled directions to that of the wind, or just furls up the sails - and eventually goes where the people sailing it want to.

I hope the simile is clear enough...

Specifically - persecution of minorities is not a "natural" social phenomenon, it is very much an acquired tendency on the personal level and encouraged and stoked by social, economical, and political institutions.

<comment><USER35> It doesn't matter _why_ it happens. The fact is it _does_ happen by the same political institutions that people want to give more power to.

<comment><USER33> Do you actually want to go back to the days of companies beating workers when they collapse partway through a 13 hour day and paying them in store credit? Or can you agree that giving government the power to make those things illegal was a good idea?

<comment><USER35> Assault has always been against the law. But you expect the same government to "protect workers" when they just made people go back to work in the meat industry by invoking a law meant to be used in times of war?

<comment><USER33> > Assault has always been against the law. But you expect the same government > to "protect workers" when they just made people go back to work in the meat > industry by invoking a law meant to be used in times of war?

Well, obviously I'd prefer the government used their powers for good, i.e. actually protect workers.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER36> I just purchased from Amazon but they gave me $100 to open a new credit card that I will disable in 1 month. (edit: actually, I think that I will disable it today so that I can re-apply more quickly)

</comment><comment><USER37> Someone gets to FIRE built on the backs of the workers then gets praise for doing so. A more meaningful response would be better to donate the millions of Amazon stock he had to the workers on the front line.

<comment><USER38> He lost a lot of money (circa 1m according to original story) in salary and stock vesting taking the decision to quit.

Although you make a good point that he can FIRE due to previous income. Something nigh impossible on a warehouse picker wage.

<comment><USER35> After he made a million a year from Amazon for six years. No matter when you leave Amazon you're leaving money on the table since they are always giving employees RSUs that will vest at some later date.

<comment><USER39> So what?

I don't understand this attempt to discredit the person because they previously made some money at amazon.

A million dollars is still a lot of money. They still had to make a decision to turn down that easy money and speak up about it. They could have just as easily continued to work at amazon and save up 10+ million, etc.

<comment><USER35> He didn't "leave" money on the table anymore than anyone else who works for big tech, is always getting RSU's that vest over time.</comment></comment></comment></comment></comment>


Realtime view of traffic to Al Jazeera's site as Mubarek stepped down - <AUTHOR> http://www.borthwick.com/weblog/2011/02/12/jan25-sorry-for-the-inconvenience-but-were-building-egypt/

<comment><USER2> Kind of reminds me of the circumstances surronding CNNs popularity after the 1st Gulf War because they had been reporting live from Baghdad during the bombing.

Only Al Jazeera's role was arguably more important!</comment>


Dealing with link spammers? - <AUTHOR>

I've been working on a project to allow website viewers to talk to each other in real-time based around any particular link .eg. people could be on HN and talk to each other live.
The problem i've noticied is that every now and then we go through a phase of being hammered by spammers who just stream out link after link.
Has anyone experienced this and come up with useable solutions to stop this sort of behaviour.
Currently they are firing out from multiple IP addresses over wide ranges so IP isn't really a good option.
Has anyone got any ideas?
Cheers HNers <comment> mike-cardwell Captcha? Your own custom content filtering?</comment>


Time Warp, Solaris  - <AUTHOR> http://krow.livejournal.com/627555.html

<comment><USER2> Sun has been doing all the right things...but several years too late.

They've Open Sourced Solaris, but they seem to expect good package management to simply spring into existence (or they expect people to pretend like their pkg tools are an acceptable substitute for package management, since they've put a shiny GUI on top of it...but a highly polished turd is still a turd). I thought when they hired Ian Murdock, there would be an instant move towards apt-get and dpkg on Solaris, which would be a huge step in the right direction (I like yum/RPM better, but both are perfectly acceptable).

There's seemingly a belief within Sun that Solaris is _so good_ that people will beat a path to their door now that it's Open. The problem is that it exhibits a complete lack of comprehension of what makes Linux so much better for the vast majority of users. Linux is so much more adaptable than Solaris...and it all comes down to how many nicely packaged applications are available for Linux, instantly. So, for all the great stuff in Solaris (and there's plenty to be excited about: ZFS, dtrace, Zones), it's simply not an acceptable substitute for Linux, and the folks who are in a position to fix it are utterly oblivious to how badly they're failing.

So, I expect the folks at Sun will get packaging figured out three or four years from now...and at that point Solaris will be even less relevant than it is today.

<comment><USER3> PS Dude need to check out blastwave.org.

<comment><USER2> Yes, we use blastwave packages for the Solaris version of our products. It's an admirable effort, but it leaves a lot to be desired.</comment></comment></comment>


Scientific Regress - <AUTHOR> https://www.firstthings.com/article/2016/05/scientific-regress <comment><USER2> A winning poker player only needs a tiny edge to be long-term profitable. Yet there will be swings in his bank account, no matter how good his play; there is even a real chance of bankruptcy in his lifetime.

The question I would then ask to the author: is science (in its current form) a winning, long-term player?

That is, let's grant that most of science is wrong (i.e., not replicable). Let's grant that entire paradigms -- which are objectively better than their successors -- can be wiped out by garbage fads and the fraudsters that perpetuate them. Let's even grant that it's possible for scientific understanding to net regress over the course a lifetime.

The interesting question to me is whether the human practice of science (inclusive of its politics and fraudsters) is still on a long-term, upward trajectory towards truth (not strictly monotonic, but upwards as n goes to infinity). Even after reading horrifying accounts of how bad science is in 2016, I would still be shocked if the answer to this question was no.</comment>


Owe Someone Money? Just Bump (YC S09) Your Phones - <AUTHOR> http://bits.blogs.nytimes.com/2010/03/15/owe-someone-money-just-bump-your-phones/

<comment><USER2> Can I have some special kudos for thinking of this when the API was announced?

<http://news.ycombinator.com/item?id=1010581>

<comment><USER3> Yes, I mentally gave you kudos at the time if that helps. ;)

</comment></comment><comment><USER4> Isn't this the original idea that got Paypal's founders their initial VC investment - transferring cash from one Palm Pilot to another? If memory serves me right they scrapped it early on because the tangential website transaction feature was becoming popular.

<comment><USER5> <http://en.wikipedia.org/wiki/Confinity>

Palm Pilot IR transfer system.

</comment></comment><comment><USER6> This should be an interesting battle between PayPal and Square. PayPal has the brand and Goliath sized resources.

Square has backwards compatibility with how credit cards are currently used and a fast, innovative team.

</comment><comment><USER7> What could possibly go wrong..

<comment><USER8> The bump part seems unnecessary in fact. "Select somebody from your contact list,then bump their phone". The bump just ensures... what exactly?

<comment><USER9> You "bump" another phone if you _don't_ have their contact info already. The app automatically sets them as the recipient of your paypal transaction (presumably without you having to save their information -- which allows "business" type transactions without filling up your contact list.)

<comment><USER8> Ok, I misread the process then, I can believe that.

</comment></comment></comment></comment><comment><USER10> Looks like it could catch on because the gimmick seems genuinely fun, but "Christine" has some serious man-hands.</comment>


Ask HN: Hacker News Los Angeles Meetup? - <AUTHOR>

I moved to LA a few months ago and have seen a few tech/startup meetups, but am wondering if there was a large enough HN contingency to warrant an LA meetup.<p>Any interest? <comment><USER2> I'm in Irvine but I would be willing to make the trek up there.

</comment><comment><USER3> I'm up for it</comment>


Ask HN: Are we losing all the older members - <AUTHOR>

When I look at most of the comments posted, it is usually from people with accounts less than 1 year old and very rarely from accounts over 2 years old. I wonder what gives ?     Could it be that new members simply outnumber the oldies by such a huge factor. Or do people eventually tire of HN <comment><USER2> I don't see the same names around as much, I am not an old old member but I am well past the two year mark. 2nd gen would probably be a good name for my group, where people coming on today would be 4th or 5th gen. I read HN from the early days and took a long time to create an account and start contributing.

There have been some pretty high profile defections of people that have felt that HN has changed too much so their is some attrition from some of the old members who felt that HN represented an elite club. Some say the quality is worse, some say it is just different in either case the focus has definitely changed.

In my personally opinion what made me decide to join HN was the self policing of memes and humor, while I enjoy those things they destroy some of the other site that had a serious focus on technology and the industry. Also and most important, HN discourages the "mine is bigger" arguments. To me, that is the one element of a site like Slashdot or HN that will kill it dead for smart individuals, it turns them off and makes them look for the exit quickly.

I think so long as that self policing remains, people will come and go and the focus will change, but smart people will always be attracted to it.

</comment><comment><USER3> [1.5 year thoughts]

Based on my observations since the Usenet days, over time discussion boards/lists tend to attract individuals who are generally more inclined on average to enter discussions than those who formed the initial community.

Incentivizing posts via reward points, etc. probably enhances this tendency -- the regularity with which discussion of the karma threshold for downvotes occurs is perhaps symptomatic of this.

Finally, long time users are more likely to leave because of changes such as the hiding of comment scores or the shift in topics or the shift in comment quality than a new user who experiences no change.

</comment><comment><USER4> I've read HN about every day for over 3 years now. It's very much a different bunch commenting these days. I like to think that the older group has gotten so busy applying everything they learned here that they no longer have the time or need to be as active. Perhaps an overly optimistic view, but it beats worrying about HN becoming reddit.

</comment><comment><USER5> Given HN's growth, I wouldn't be surprised if new members did vastly outnumber older members. Power laws and all that.

</comment><comment><USER6> I don't know if they're leaving or not (although probably plenty moved on ... many of us used to use Slashdot, digg, reddit etc) but at the least they're going to be heavily outnumbered - these days HN is a big, popular site with and a highly desirable source of traffic.

</comment><comment><USER7> You should read the following from 'jacquesm'

<http://jacquesmattheij.com/attitude+does+not+scale>

His point about small town versus large city is wonderful.

</comment><comment><USER8> I lose my passwords periodically and it's easy to get a new account. I post semi-anonymously anyway.</comment>


Ask HN: What are you hacking on this weekend? - <AUTHOR> <comment><USER2> Game development code (specifically, at the moment, vectors, bezier and animation tweening) and Unity tutorials.

<comment><AUTHOR> Great!

</comment></comment><comment><USER3> A WebGL toy featuring a dancing disco duck.

<comment><AUTHOR> Haha nice!</comment></comment>


The Plain Writing Act of 2010 [pdf] - <AUTHOR> http://www.gpo.gov/fdsys/pkg/PLAW-111publ274/pdf/PLAW-111publ274.pdf <comment><USER2> >SEC. 6. JUDICIAL REVIEW AND ENFORCEABILITY.

>(a) JUDICIAL REVIEW.—There shall be no judicial review of compliance or noncompliance with any provision of this Act.

>(b) ENFORCEABILITY.—No provision of this Act shall be construed to create any right or benefit, substantive or procedural, enforceable by any administrative or judicial action.

I'm not particularly familiar with the intricacies of self-regulation in the US government; if judges can't review whether an agency is following the rule, and individuals don't have grounds to force the matter because it's not a "right or benefit", does this mean that there's no enforceability at all, or is there some other mechanism not mentioned here that kicks in by default?

<comment><USER3> Its essentially unenforceable: the only avenue left is Congress using violations as motivations for future action, but Congress doesn't need a law for a basis of that. Its pretty much purely symbolic.

</comment></comment><comment><USER4> This is funny and ironic, but really it's no different than implementing Lisp in C. Naturally, the implementation language will not be as nice as the implemented language.

</comment><comment><USER5> We also need a bill length vs. review time rule.

If a law is too long for a representative to have read it (Patriot act, ACA) then Congress should not vote on it until they've had enough time to read it.

I propose 10 days + (number of pages / 5) after it's been introduced to the public.

<comment><USER6> > (number of pages / 5)

Five pages alone can require a lot of reading.

<comment><USER5> Agreed, as anyone who codes and therefore understand how much understanding five pages of logic can be.

But bills often have more pages than days in an elected congress (two years is just over 700 days) so you have to divide out

</comment></comment></comment><comment><USER7> The way some governmental texts are written, I wouldn't be surprised if they run the original text through an obfuscation find/replace algorithm that replaces words <5 letters with a similar word from a thesaurus with the maximum length available.

<comment><USER8> Those algorithms are called lawyers.

</comment></comment><comment><USER9> It took 2+ full pages to tell people to keep things simple. Awesome.

<comment><USER10> You'll notice they explicitly _don 't_ cover regulations (like the one they were writing), probably because of the amount of legal precedent for nitpicking the exact phraseology of a given law or regulation...

<comment><USER3> > You'll notice they explicitly don't cover regulations (like the one they > were writing),

No, they were writing a law, which is different from regulation; law isn't covered, but not because it is explicitly excluded, but because its not included, at a minimum because it is written by Congress, and this only covers work product of Executive agencies.

But more importantly, they've specifically acted to make the law _completely unenforceable_ (see Sec. 6.)</comment></comment></comment>


Scheme Cookbook: Common idioms and recipes in Scheme - <AUTHOR> http://schemecookbook.org/

<comment><AUTHOR> Now I'm wondering if they count as design patterns or not...

<comment><USER2> I think that's a matter of perception. Much has been said about what exactly design patterns are, but my personal take is that they're a linguistic tool rather than a how-to. Every craft or art has a catalogue of terms that they use to describe the specifics of the practice. For programming, these are "patterns". Novices learn them because those who came before realized these practices were the foundation of the craft and thus deserved names. But in and of themselves they are not useful save as the most high level of guides (and let's face it, no one implements an exact copy-as-presented of Fowler's Visitor pattern).

Which is my long-winded way of saying: Yes, I think so. :)</comment></comment>


Arrakis: The Operating System Is the Control Plane - <AUTHOR> https://www.usenix.org/conference/osdi14/technical-sessions/presentation/peter <comment><USER2> _We have designed and implemented a new operating system, Arrakis, that splits the traditional role of the kernel in two. Applications have direct access to virtualized I /O devices, allowing most I/O operations to skip the kernel entirely, while the kernel is re-engineered to provide network and disk protection without kernel mediation of every operation._

That's the way IBM mainframes have worked since IBM VM, 1972.

There's a lot to be said for this. For historical reasons, most microprocessor systems have an I/O architecture that's far too much like that of an 1970s minicomputer - device registers with meaning determined by the peripheral. Minicomputers had that because they couldn't afford enough transistors to do mainframe-type channels. That problem went away a long time ago, but the legacy architecture remains.

You need both channels with access control and peripherals designed for channels to make this work without OS intervention. Peripherals may have privileged functions - user programs may be restricted to an address range on a disk, or an IP and MAC address on a network controller.

<comment><USER3> SR-IOV is pretty much designed like this. The master PCI function has all the privileged ops while the slave devices have none.

The Intel network cards (all the 10g ones, some 1g) at least have IP and MAC filtering, and support at least 64 virtual network cards for each physical port.

It has taken longer for storage, but NVMe has SR-IOV, which means you can split out virtual drives without the OS having to check block ranges. Not widely available yet, although Google cloud now has support[1].

[1] [https://cloud.google.com/compute/docs/local- ssd](https://cloud.google.com/compute/docs/local-ssd)

</comment></comment><comment><USER4> This is pretty awesome! In the past I worked on a project which we implemented a control-plane/data-plane separation architecture within Linux. The system had two CPUs and we had Linux running on one with configuration apps and all network related IO ran on the other CPU. The problem was that this was implemented at the kernel level and whenever an application needed to share data across the CPUs it was slow. The implementation could have probably been better, but this was a long time ago and I can't recall everything that was done. Regardless, Arrakis looks like a great project with a lot of potential.

Imagine this type of stack being used in an embedded system. I've worked on embedded projects that achieved high throughput but in most cases there were FPGAs and DSPs doing a lot work to help. Userspace-to-Kernel context switch delays have always been a latency issue with any Embedded Linux system I've worked on.

Arrakis looks like one would be able to achieve high performance without the need for FPGA and or DSP (depending on the use case of course).

Side note: Cool, I noticed they're using lwip from Adam Dunkels. He's an amazing programmer.

</comment><comment><USER5> This is using hardware isolation (IOMMU, SR-IOV) to reduce the need for software (including kernel) isolation.

See also Intel SGX ([https://www.virusbtn.com/virusbulletin/archive/2014/01/vb201...](https://www.virusbtn.com/virusbulletin/archive/2014/01/vb201401-SGX)), disaggregation platforms (seL4, Qubes, Genode) and userspace networking (Intel DPDK, [https://01.org/packet-processing](https://01.org/packet-processing)).

</comment><comment><USER6> The main website: [https://arrakis.cs.washington.edu/](https://arrakis.cs.washington.edu/) Github: [https://github.com/UWNetworksLab/arrakis](https://github.com/UWNetworksLab/arrakis)

Intriguing.

<comment><USER7> Are there any bootbale images to play with? Or it's all build from source at this stage?

</comment></comment><comment><USER8> This seems like genuinely good stuff. I'm not a systems guy, so question: How long would it theoretically take for somebody to hack NodeJS to use this? What about getting NodeJS to use zero-copy buffers as be mentioned, by somehow overriding JSON.stringify? Thanks.

<comment><USER2> Don't get too excited about zero-copy. Copying is cheap if the data was recently referenced and is in cache. Conversely, if the data was put in memory by a peripheral device, it costs almost as much as a copy to get it into the CPU's caches.

The bookkeeping associated with zero-copy often exceeds the copying cost. This was the curse of the original message-passing Mach implementation, which gave microkernels a bad name.

<comment><USER8> What are your thoughts on [http://kentonv.github.io/capnproto/](http://kentonv.github.io/capnproto/) ?

<comment><USER2> That the sender can probably crash the receiver with a malformed offset in a message.

I'd like to see marshalling as a language feature. It's compilable, done often, and has an effect on performance. Many marshalling systems, from OpenRPC to protocol buffers, use a precompiler. But that adds another level of language.

<comment><USER9> > That the sender can probably crash the receiver with a malformed offset in a > message.

Errr, that would be a major bug in capnproto. While it's definitely possible the software has bugs, it's certainly a design constraint that the sender absolutely cannot crash the receiver.

[http://kentonv.github.io/capnproto/faq.html#arent- messages-t...](http://kentonv.github.io/capnproto/faq.html#arent-messages- that-contain-pointers-a-huge-security-problem)

</comment></comment></comment></comment></comment><comment><USER10> The main enabler seems to be the fact that isolation is now redundantly enforced in two places - both by the kernel, and by IO device drivers. In return for making the hardware support non-optional, Arrakis eliminates the kernel's involvement.

<comment><USER11> > The main enabler seems to be the fact that isolation is now redundantly > enforced in two places

Can the kernel realize it and, if the hardware can manage isolation with OS semantics, step aside?

This isolation support in hardware reminds me of the "Software on Silicon" thing Oracle has shown on their new SPARC. Is offloading more and more application and OS level logic to hardware going to explode?

</comment></comment><comment><USER12> Darn, I thought this was going to be about audio consoles[1].

[1]: [http://arrakis-systems.com](http://arrakis-systems.com)

</comment><comment><USER13> So in essence this is akin to running DOS inside a hardware assisted VM?</comment>


Hong Kong's Ultra-Rich Population Overtakes New York's - <AUTHOR> https://www.statista.com/chart/15360/the-top-10-cities-with-the-highest-ultra-high-net-worth-population/ <comment><USER2> Url changed from [http://thesoundingline.com/hong-kongs-ultra-rich- population-...](http://thesoundingline.com/hong-kongs-ultra-rich-population- overtakes-new-yorks-surged-by-31-last-year/), which points to this.</comment>


Ask HN: How to do responsive design with 1080p mobile phones? - <AUTHOR>

With devices cramping more and more screen resolution into small sizes, bootstrap and other frameworks won't scale anymore. (My understanding is they change layout based on resolution?)
Is there a good database of useragents mapped to screen sizes or some other way to know what type of device this is/how big the screen actually is in inch?
Obviously this will also be needed for TV designs for the possibility of different UX.
Any ideas? <comment><USER2> The best thing developers can do for mobile-ready websites is stop treating them different and just let the browser vendors _continue_ to handle it for everyone.</comment>


Zooids: Building Blocks for Swarm User Interfaces - <AUTHOR> https://www.youtube.com/watch?v=8Ik7V_QH5wk <comment><AUTHOR> A paper:

[https://dl.acm.org/citation.cfm?doid=2984511.2984547](https://dl.acm.org/citation.cfm?doid=2984511.2984547)</comment>


Components.studio – Component IDE one click to NPM - <AUTHOR> https://components.studio <comment><AUTHOR> Hi HN,

We believe that we are in the component age. Reusable components are the only way to have consistency, quality, and efficiency. But writing reusable component is a lot of work. Sometimes, we spend more time on the setup of the project than on the component itself. Copy/pasting code is fast but only takes you so far We want the best of both worlds!

Our workflow:

\</comment><comment>-----

Select your starter-kit

Code your component immediately

[Write tests]

[Write documentation]

Publish to npm in one click!

Repeat

\</comment><comment></comment><comment>

That's it! Your component is ready to be used in any project.

No install, no endless setup, no search for the perfect up-to-date project template... Components.studio takes care of the boilerplate infrastructure. Spend your time on Quality, Accessibility, Animations... not on setup!

After the success of WebComponents.dev, people have been asking for more technologies outside of Web Components.

Components.studio delivers! Preact, React, Riot, Solid, Svelte, Vue 3 (beta already), WebAssembly with AssemblyScript, and more, check the 44 starter- kits!

Try now! [https://components.studio](https://components.studio) No signup required.

We would love to have your feedback.  Ask us anything!

Francois, Gregory and Georges</comment>


Notes from November 28 Meetup of Bay Area Tech Solidarity - <AUTHOR> https://sfbay.techsolidarity.org/2016/11/28/meeting_notes.htm <comment><USER2> > The creation of a Muslim registry is obviously just the first step. It's a > PR campaign to spread the idea that Muslims are a special group that can be > discriminated against.

If this happens, I will seriously consider becoming Muslim, and urging other irreligious people I know to consider doing the same, to dilute the database. I'd remain an atheist, but I'd be a Muslim atheist instead of a Christian atheist. I'd buy a Quran and read it once, then put it on the shelf and not believe it, replacing the Bible that is currently on my shelf not being believed. For local charity giving, I'd direct that to a local mosque instead of a local church.

Only 0.9% of people in the United States are Muslim. Atheists and agnostics make up about 7%, so if a large fraction of atheists and agnostics registered as Muslims, it would greatly dilute the database. There are also a substantial number who believe in some sort of spirituality but not in traditional gods, and quite a few people who believe in gods but as a personal thing and not as part of an organized religion. All of these together make up about 20% of the population. If a lot of those people would register as Muslims, it would really really dilute the database.

<comment><USER3> If you are interested in this type of activism, and live in a city that offers its own form of ID (notably SF or LA), you can do this _now_ by signing up for a city ID card. There is considerable concern that the city ID databases will be used as registries of illegal immigrants, so the more legal residents who take advantage of it, the weaker that signal becomes.

Plus, it's nice to have a second form of photo ID sometimes.

In SF, you need an appointment to get an ID. You can make one here: [http://sfgov.org/countyclerk/sf-city-id- card](http://sfgov.org/countyclerk/sf-city-id-card)

</comment></comment><comment><USER4> Forming a union and joining the labor movement would be a start. Oh sure everybody hates unions, but there's not a progressive country in the world without a strong labor movement. Without labor you're left with narrow-minded plutocrats and unreliable technocrats to run everything.

<comment><USER5> Good luck with that. This industry has too many people with egos far bigger than their accomplishments justify, in my opinion. There is a tendency in this field for folks to believe tech is about as close to a meritocracy as it gets, and that unions or even a trade guild would just hold "the best" back.

<comment><USER6> > There is a tendency in this field for folks to believe tech is about as > close to a meritocracy as it gets, and that unions or even a trade guild > would just hold "the best" back.

You don't have to be arrogant about your own abilities to realize that promotion based on seniority would privilege longer-tenured workers over better, lesser-tenured workers.

That doesn't just hurt the best workers -- it hurts anyone who is above the average.

Promotion based on seniority is a common feature of union contracts, so it's a valid concern.

Some people like seniority-based promotion because it can reduce discrimination in promotion decisions. For example, a woman could be promoted based on seniority even though her sexist boss might prefer a less-qualified, less-tenured male candidate. That would certainly be unfair, and seniority- based promotion could prevent that. However, the tech industry is currently mostly men, which means that any female employee who joins a large company will have at least a few decades' worth of men ahead of her in line for a promotion, no matter how good she is at her job. Seniority-based promotion would actually entrench gender diversity problems for at least 20 years, rather than solve them. The only way it would have positive effects vis a vis diversity would be to impose it on a workforce that is already diverse but has discriminatory managers.

<comment><USER5> Do you have evidence that seniority based promotion hurts above average workers? Do you have good reason to suspect that seniority based promotion is a likely enough feature of a union in this industry to warrant concern?

<comment><USER6> Average is the break-even point.

If you are average: Given that most people are average (because that's what average means), you aren't an outlier, so you wouldn't expect a faster or slower promotion timeline in a meritocratic system than in a seniority based system. After all, the majority of people more senior than you at any company are likely to be average too (because that's what average means), unless the company has an unusual distribution of employee skill across the tenure spectrum. In a meritocratic system, you are still average, and you would still have an average promotion timeline. If you are average, it doesn't much matter what system you have.

If you are above average: Your talent will be recognized, and you will be promoted faster than most of your peers in a meritocratic system. In a seniority-based system, people who are not as good as you will be promoted before you because they have worked at the company longer. This hurts you, and it hurts the company, because both could do better under a meritocracy. You should prefer a meritocratic system over a seniority-based system.

If you are below average: In a meritocratic system, you would be promoted as a last resort, when better people are not available. In a seniority-based system, you will be promoted just because you stuck around, even if you suck. You should prefer a seniority-based system over a meritocratic system.

If you are a worker at any level, and you improve your job skills and your value to the company, that will increase your promotion prospects in a meritocratic system, but not change them in any way in a seniority-based system. So why would anyone try to improve or work hard in a seniority-based system?

<comment><USER5> I have to object: you've provided a description of how you think seniority based systems work, but no evidence to support your contention that it is, in fact, the way they do.

<comment><USER6> No evidence is needed. It's a self-defining term.

It's very simple: when a group of people are considered for a promotion, the person who has the most seniority, i.e. has been at the company for the longest time, will automatically be given the promotion.

That doesn't mean the guy in charge of the mail room is going to be promoted to head of engineering because he's been there longer than any of the engineers. Promotions happen within departments. But you can damn well bet that the guy in charge of the mail room is the mail room employee who has been at the company the longest, no matter how good he is at his job.

Any system that doesn't work like this is not a "seniority-based" system, and is outside of the scope of the discussion.

<comment><USER5> Well, when your argument is "I say so" then of course there is no discussion to be had. How absurd.

<comment><USER6> This is the same as asking for evidence that circles don't have corners ("do they _really_ work that way?"). Seniority-based systems are _based on seniority_. Systems that are not based on seniority are not seniority-based systems, just as shapes with corners are not circles.

<comment><USER5> No, it's not the same as asking for evidence that circles don't have corners, because the latter is a strictly mathematical concept and the topic of promotion schemes is not.

Can you provide empirical evidence with actual seniority based systems that match the very strict description you've supplied? Because if not what you have is an unsupported hypothesis, not a description of reality.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> One important thing is a bit mischaracterized, Trump didn't claim he'd deport 11 million legal immigrants, he claimed he'd deport illegal immigrants. Even Mexico deports illegal immigrants to its country. It's not something most countries consider controversial.

As far as I know he didn't say he'd turn a blind eye to police violence. What he said was essentially he wanted less antagonism toward police.

I think playing loose with words like this and confounding things kind of elicits skepticism.

<comment><USER8> 60 Minutes interview, September 2015:

Pelley: "Eleven, 12 million illegal immigrants --"

Trump: "Or whatever the number is."

Pelley: "Still in the country, what do you do?"

Trump: "If they've done well, they're going out and they're coming back in legally. Because you said it--"

Pelley: "You're rounding them all up?"

Trump: "We're rounding 'em up in a very humane way, in a very nice way. And they're going to be happy because they want to be legalized. And, by the way, I know it doesn't sound nice. But not everything is nice."

<comment><USER7> If he really wanted to keep out illegal immigrants he'd do what Japan or China do. Require verification of legal residence from everyone for job, schools, etc. No fences/walls needed.

Or he could ask someone to develop an app where people could report people who are working without proper docs and fine the workplace and schools for violations. It could even be incentivized and non false positives get rewards of some sort --tax credit, whatever. False positives get demerits, etc.

That said, if employers are not willing to pay citizens a minimum wage of $15, then we will need a way to allow cheap unskilled imported labor to work on farms etc. Set up a system where you allow seasonal work visas. If you overstay, you are out 5 years. If you want to stay past a season extend your visa by exposing someone overstaying their visa so you get self policing. However, since this creates underemployed citizens, tax the employers who employ imported labor to underwrite citizen unemployment benefits.

<comment><USER9> Yes but since all of this fear-mongering is contrived by the liberal safe- space culture that has bred groups like this and not based in reality, we won't need to do any of that.

<comment><USER10> Beyond the moral arguements, the real reason nothing has happened is that this has absolutely no popular support in areas who actually have undocumented immigrants.

People in these areas usually are fine with them because "who cares". Businesses are fine because they usually represent cheap labor. Local governments have a lot to do on their plate already, they don't want to go in the immigration business.

These policies are basically "federal overreach". Feds fly in to do something the locals do not want.

Do you think LA is a sanctuary city because of Obama? It's the will of the people. Who cares what people in Iowa think?

<comment><USER8> We're fine with them because they're our friends and neighbors.

<comment><USER11> And republicans are fine with them because they need cheap workers they can abuse who will never call OSHA, that they can steal wages from, and that they can stiff on workers comp.

For just one of so many appalling stories: [https://www.thenation.com/article/immigrant-workers-are- bein...](https://www.thenation.com/article/immigrant-workers-are-being- deported-being-injured-job/)

If we actually wanted to stop illegal immigration, getting serious about e-verify and levying enormous fines on employers would get the job done.

<comment><USER7> Oh for sure. But the dimming of prospects for low skills Americans may have the Repubs, with their newfound populism, find that to survive as a party they will have to look out for the derided suburban worker instead of the guy or gal who sit in corner offices.

<comment><USER11> I will believe it when it happens (not that I would object, the middle class needs all the help it can get).

But so far, the populism looks like hokum. For just one example, Carrier was bribed to stay. And probably in a way that gets more money to the execs than to the employees. My bet is grift all the way down...

<comment><USER7> It ain't going to happen but I'd love to see Bernie tapped for a labor dept job. Get him in, co-opt him and have him go at the sellouts who move ops overseas to save a few bucks.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> This is a fantastic result of Trump's election. You should have been thinking this way for the past decade. Third party data silos are a grave liability - it hardly matters if the acting threat is overt authoritarianism, progressive totalitarianism, or plain old economics.

</comment><comment><USER13> From the Notes, this is a very sad story:

"I am Muslim, born in Massachusetts. I love my faith. Muslims in the US are very scared. Both my mom and wife wear the hijab, so I'm always worried they'll be attacked in the street. Even in the Bay Area it's a concern. Of course I encourage them to continue; it's important not to be affected. A few years ago, my mom and sister were at a farmers' market in Boston, what seems like a liberal setting. A big guy ran up and called them terrorists, started spitting at them. My 60 year old mom and 20 year old sister were really intimidated. My sister cried for the rest of the day. People stood by and watched. I give them the benefit of the doubt; they were taken off guard. We have to be aware of our surroundings and be ready to act. It takes mental preparation, so you don't end up reacting like a deer in the headlights."

I am worried what happens to a diverse country, such as the USA, when it elects a leadership that is vocally anti-immigrant. We are about to find out. All of us need to do what we can to minimize the kind of bigotry that might escalate under anti-immigrant leadership.

<comment><USER14> It's a potentially very scary time for minorities. The president sets the tone of the country through their actions. A president being anti-immigrant could bring that same quality out in others...

<comment><USER15> That's already happening. I've witnessed people trying to intimidate minority folk here in the East Bay, yelling 'you're going over the wall!' unprovoked at people on the street for example.

</comment></comment></comment><comment><USER16> I'm in a union (pension, can't give it up) and I work F/T for one of those flat hierarchy startups, hired through a who's hiring post a few years ago. I actually prefer the union environment even with it's many problems to having no boss which is my other job. I now have to often depend on flaky coworkers who disappear days at a time or spam me with memes all day on Slack, and careless commits I have to fix repeatedly even after telling them the problem each time. There's nobody for me to complain to since we don't have a boss, there's an absentee founder somewhere and just every remote worker for themselves.

The problems with a union is of course your dues being misspent on administrative bloat, campaign donations, executive travel (go to any union site and click on events, there's often 2-3 a month requiring travel), and education costs for executive members. The actual organizers and shop stewards aren't paid anything by the union, it's the top tier executives that pocket the dues. What we tried to do was get them to take half for admin bloat, stop the campaign donations nonsense, and put the rest into a strike fund to pay us during lockouts something more than the picket line pay which is a paltry $100/week. There is typically 4-6years between contracts, and we each pay them $162 a month in dues.

Another problem is of course the adversarial situation that will inevitably become your daily workplace. Your management is now the enemy, as they will never capitulate to all your demands during collective bargaining so every single work meeting you have with them is usually a fight. Everything you do is now paid in time values, so if they ask you to do something that isn't clearly spelled out in the collective agreement you don't do it because it's free work, such as asking your contracted plumber to mow your lawn. This creates many problems, as management repeatedly tries to implement ridiculous new procedures that of course add time which is unpaid.

The positives with a union is you can directly confront coworkers if you have issues with them that are work related (and not criminal such as sexual harassment), so you don't have to go to management which could have them fired. It's nice to work out petty disputes between a floor steward and your coworker without the heavy hand of management adding complexity and fear into the mix. Another positive is you are free to speak your mind directly to management without fear of being arbitrarily terminated or screwed with. It's common where I work to see somebody walk up to management and tell them their attitude is disgusting to their face in front of everybody. Finally you get to bid on everything, so the founder's cousin who started yesterday doesn't get priority vacation over you.

Also goodbye implied forced Christmas parties, implied forced picnics with some visiting sales manager or your boss on the weekend or forced team building clownery outside of work hours, fake vacation policies that claim to be 'unlimited', unpaid overtime, and idiotic work environments like cafes or bars, my favorite idiocy being a historic theatre sized bank building converted into a very loud cafe with wood benches roped off where everybody was expected to work.

</comment><comment><USER17> Where can I get information on a Seattle Tech Solidarity group?

<comment><USER8> Contact me (my info is in the intro to the linked page). I'm hoping to set up a Seattle meeting in January.</comment></comment>


The Error Machine of Joseph Newman (1999) - <AUTHOR> http://www.phact.org/articles/free/newman.php <comment><AUTHOR> I just saw a documentary about the inventory of the Newman machine which leaves the viewer wondering if it was legit. Found this article and I figured there would be some experts on Hacker News that could give their opinion.</comment>


How to set up a computer lab for less than $1500 with Raspberry Pi - <AUTHOR> https://opensource.com/article/18/3/computer-lab-school-raspberry-pi?sc_cid=70160000001273HAAQ <comment><USER2> ~$120 per station ($50+$50+$20) is a territory of perfectly fine Lenovo T420/X220/T430/X230 laptops from recycling centers. Not hugely scalable, but will work up to couple hundred units (can order that many with one phone call in EU).</comment>