Symbolic expressions can be automatically differentiated too - objections
http://h2.jaguarpaw.co.uk/posts/symbolic-expressions-can-be-automatically-differentiated/
======
johnbender
One can also calculate the derivative of a context free grammar with respect
to a given terminal.

[http://matt.might.net/articles/parsing-with-
derivatives/](http://matt.might.net/articles/parsing-with-derivatives/)

~~~
Apanatshka
That's also a really cool article. Thanks for sharing it!

------
delluminatus
Great post, as an AD tutorial and as a (an?) Haskell exercise. Having known
nothing about AD before, I feel like I have a good understanding of what it is
-- as he says, it's so simple -- but I don't understand _why_ the algorithm is
so much faster. Just looking at the differentiator function and the AD
function, it actually appears that the AD should take longer because it does
more computation per step (both the function and the derivative). But it seems
like every article or paper is talking about how to implement AD, not why the
algorithm is so efficient. Does anyone happen to know of a good article or
paper about that? Ideally, one just as nice and comprehensible as this!

~~~
vidarh
The first alternative builds a large tree structure, and then evaluates the
whole tree structure afterwards.

So first it blows up the size of the expression to process and _then_ it
calculates the result. A lot of those calculations will be redundant

The second one not only avoids evaluating the tree separately, but "prunes" a
lot of the evaluation automatically by effectively short-circuiting the whole
process. Consider (with the caveat that my Haskell understanding is
rudimentary at best and it was about 20 years since I last did anything
involving symbolic differentiation) :

       Product e e' -> Product e (diff e') `Sum` Product (diff e) e'

Followed by a separate run with:

        Product e e' -> ev e * ev e'

vs

        Product e e' -> let (ex, ed)   = ev e
                                (ex', ed')       = ev e'
                        in (ex * ex', ex * ed' + ed * ex')

(I pick the "Product" rule as an example because it is one of the ones that
blows up the size of the tree)

Lets say you do something simple like Product X X. You get Sum (Product X One)
(Product One X) out, and then you have to evaluate each node.

In the second case, you match Product e e'. You process X and assign (x,1) to
(ex,ed), and process the second X and assign (x,1) to (ex', ed'), and then
return (ex * ex', ex * ed' \+ ed * ex').

In the first case, you've first differentiated 3 nodes (Product + 2x "X"),
then evaluated the 7 nodes that was produced as output, for a total of ten
nodes processed.

In the second you've evaluated/differentatiated 3 nodes in one go without the
intermediate step of having to evaluate a much larger tree.

In a large example, the number of nodes in the differentiated output quickly
explodes and subsequent evaluation would increase rapidly in cost.

~~~
amelius
From an asymptotic complexity viewpoint, I don't see any difference between
the two algorithms (AD versus building an expression tree and doing it
symbolically, then evaluating). Both are linear in the "size" of the
expression. So I don't understand what you mean by "quickly explodes".

~~~
tome
See here:

[http://h2.jaguarpaw.co.uk/posts/why-is-naive-symbolic-
differ...](http://h2.jaguarpaw.co.uk/posts/why-is-naive-symbolic-
differentiation-slow/)

In summary, yes both functions are linear, but the size of the symbolic
derivative is quadratic.

------
kazinator
I would swear I read some Lisp-related paper about this with some nice Lisp
advocacy in it, too.

Aha, here it is:
[http://www.cs.berkeley.edu/~fateman/papers/ADIL.pdf](http://www.cs.berkeley.edu/~fateman/papers/ADIL.pdf)

> _For fans of Lisp, there is no question that one motivation is to show how
> easy it is to implement in Lisp. Lisp provides a natural representation for
> programs as data and a natural form for writing programs that write
> programs, which is what we do in ADIL. The code is short, and is in ANSI
> standard Common Lisp. Since it is not "naive" code written in just the
> obvious idioms of introductory Lisp, it illustrates, for those with only a
> cursory familiarity, that Lisp is more than CAR and CDR. In fact we did not
> use those routines at all._

Ah, but you did use A and D. cAr-tomatic cDr-ivation!

:)

------
davexunit
Surprised to not see SICP's excellent section on symbolic differentiation not
mentioned here:
[http://sarabander.github.io/sicp/html/2_002e3.xhtml#g_t2_002...](http://sarabander.github.io/sicp/html/2_002e3.xhtml#g_t2_002e3_002e2)

------
33a
Algebraically, automatic differentiation is the same as adding a nilpotent
element e, such that e^2=0 to your algebra. You can continue this pattern out
to get higher order derivatives. For example, if you also add an element f
where f^3=0, the coefficient of f is proportional to the second derivative.

~~~
amelius
Sounds interesting. But could you explain this so that people without a
postgraduate degree in mathematics can understand this?

~~~
eru
The idea might be similar to [https://en.wikipedia.org/wiki/Non-
standard_analysis](https://en.wikipedia.org/wiki/Non-standard_analysis)

Edit: Actually,
[https://en.wikipedia.org/wiki/Smooth_infinitesimal_analysis](https://en.wikipedia.org/wiki/Smooth_infinitesimal_analysis)
seems much closer.

~~~
amelius
Interesting. But...

> by denying the law of the excluded middle, e.g., NOT (a ≠ b) does not imply
> a = b

Ouch, that is where my brain starts hurting.

------
turkishrevenge
Conal Elliot's paper on the subject is a really good starting point:
[http://conal.net/papers/beautiful-
differentiation/beautiful-...](http://conal.net/papers/beautiful-
differentiation/beautiful-differentiation.pdf)

------
nwhitehead
This example makes it really clear what's going on. Could someone translate it
to do reverse automatic differentiation? That's the one I never quite
understand.

~~~
Animats
You mean integration? That's much harder, but has been done automatically.
Symbolic differentiation is easy, because you can just keep blindly applying a
set of rewrite rules until none of them apply. That process converges on a
unique result. Symbolic integration doesn't converge in that way. More
strategy is required, and you're not guaranteed a closed form solution.
Mathematica has a good symbolic integrator.

~~~
cperciva
_Symbolic integration doesn 't converge in that way. More strategy is
required, and you're not guaranteed a closed form solution._

However, if a closed-form solution exists which can be expressed in terms of
the operations + - * / exp log, then it is guaranteed to be found.

------
eru
Great article! It might benefit from a comparison with Oleg's Typed tagless-
final interpretations ([http://okmij.org/ftp/tagless-
final/course/](http://okmij.org/ftp/tagless-final/course/)).

------
jfoutz
The thing that's great about the typeclass approach, you can do anything you
want behind the implementation. you can numerically evaluate the expression,
but even cooler, you can recover the parse tree. I never could sort out how to
deal with 'if', because it's not typeclassed. if it was, boy could you do some
amazing stuff. partial differentiation, tree rewriting, with the LLVM stuff
you could runtime compile arbitrary functions. super neat trick.

~~~
mpweiher
That's also what's great about pure dynamic systems like Smalltalk. 'ifTrue:'
is just a message-send, the class "False" doesn't evaluate the block
parameter, the class "True" does. And yes, you can then recover the parse
tree, for example the Gemstone OODB lets you use arbitrary blocks (closures)
as queries, recovers the parse tree and then creates an optimized query from
it. Quite neat.

------
finin
THE LISP DIFFERENTIATION DEMONSTRATION PROGRAM, K. Kaling, Artificial
Intelligence Project, RLE and MIT Computation Center, AI Memo 10, 1959.

[https://archive.org/stream/bitsavers_mitaiaimAI_878286/AIM-0...](https://archive.org/stream/bitsavers_mitaiaimAI_878286/AIM-010_djvu.txt)

ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-010.pdf

------
deepnet
Could Automatic Differentiation learn by applying learnable weights to the
compiled S-expression atoms - Backpropagating Errors applied with Stochastic
Gradient Descent ?

A program would constrain a task with functional statements, which is then
compiled to weighted s-expressions which learn the specific task from training
data.

A sort of Neural-net functional program hybrid.

------
notthemessiah
Dual numbers are just a means of formalizing the properties of an epsilon (a
tiny change in calculus), and are the means of preserving enough information
to think of the function and its derivative at the same time. EG: (x + ε)² =
x² + 2ε + ε², but ε² = 0, so we get x² + 2ε, (a tiny change squared becomes an
insignificantly tiny change)

------
platz
Forward-mode AD doesnt't really scale. Reverse kode AD is useful for the
backpropigation algo in machinelearning however

~~~
guest1539
What part doesn't scale?

~~~
kxyvr
I'm a little late to the party, but hopefully this'll explain.

Basically, you have to be careful about what it means to scale or not scale.
If all you want is a derivative with respect to a single variable, forward
mode scales just fine, great in fact. However, if you want the gradient, or
the derivative with respect to every variable, then the forward mode does not
scale well at all with respect to the number of variables. Specifically,
assume we have m variables. In order to calculate the derivative of an
expression with respect to 1 variable is 2 times the cost of a function
evaluation, 2 * eval. In order to see this, it's easiest to note that we don't
need an expression tree for forward mode AD like the article uses. Really, we
can get away with just a tuple that contains the function evaluation as the
first element and the partial derivative as the second element. Then, all of
the rules are basically the same as the article, but we're always doing one
operation on the first element, whatever the function is, and a different
operation on the second element for the partial derivative. This is twice to
work, so 2 * eval. Since we have m variables, this becomes 2 * m * eval. And,
yes, memory layouts, fewer optimizations for algebraic data types compared to
floats, etc. mean that it's actually slower, but, honestly, it's pretty fast.

The reverse mode is different because it turns out that it can calculate the
entire gradient, or all m partial derivatives, with 4 * eval cost. Note, this
is independent of the number of variables. Proving this is a pain, so I can't
give a good explanation here. Realistically, source code transformation tools
perform around 10-20 * eval. Operator overloading tools perform around 20-30 *
eval, so it's slower in practice, but pretty damn good.

Now, unlike the forward mode, where we really only need a tuple to carry
information, the reverse mode does require an expression tree. In order to
understand why, it helps to note that the forward mode is really a directional
(Gatteaux) derivative and the reverse mode is the total (Frechet) derivative.
This affects how the chain rule manifests. Specifically, the forward mode
repeatedly applies two rules

(f o g)'(x) dx = f'(g(x)) g'(x) dx

(f o (g,h))'(x) dx = f'(g(x),h(x)) (g'(x)dx,h'(x)dx)

Basically, in the function evaluation, we do some operation g before f. In
order to figure out the derivative, we also do the g derivative operation
before the f derivative operation. The first rule is for unary operations like
negation and the the second rule is for binary operations like addition.
Anyway, the reverse mode takes the Hilbert adjoint of this. Specifically:

(f o g)'(x)^* = g'(x)^* f'(g(x))^*

(f o (g,h))'(x)^* = [g'(x)^* h'(x)^* ]f'(g(x),h(x))^*

We care about the adjoint because of a trick from the Riesz representation
theorem. Specifically,

f'(x)dx =

(f'(x)dx)1 =

<f'(x)dx,1> =

<dx,f'(x)^* 1> =

<dx,grad f(x)>

where <.,.> denotes the inner product. Anyway, basically the gradient of f is
the adjoint of the total derivative of f applied to 1. Therefore, if we knew
the adjoint of a computation applied to 1, we'd get the gradient. In other
words, we can rewrite the chain rule above as

grad (f o g)(x) = g'(x)^* grad f(g(x))

grad (f o (g,h))(x) = [g'(x)^* h'(x)^* ]grad f(g(x),h(x))

That's the core of reverse mode AD. Note, many, if note most descriptions of
reverse mode AD talk about doing the chain rule in reverse and then they add
dual variables, etc. That may be a description that's helpful for some, but
not for me. In truth, it's just a bunch of adjoints applied two one and
knowing the Riesz representation trick.

Now, the reverse mode AD does require an expression tree to be kept. The
reason for this is that the computation about did g before f. However, if we
look at the chain rule we have

grad (f o g)(x) = g'(x)^* grad f(g(x))

This means that in order to calculate the gradient of the composition, we need
to know the gradient of f first even though we did the evaluation of g first.
However, we need to know the evaluation of g in order to calculate the
gradient of f. The way we resolve this is that we evaluate the functions in
order, but keep an expression tree of what we did. This gives all of the g(x),
f(g(x)), etc. Then, we run over that expression tree backward to calculate all
of the gradients. Because we run over the expression tree backwards, we call
this the reverse mode.

How we run over the expression tree backwards is important and tricky to do
right. The way that we can sort of see that we can do everything in 4 * eval
cost is that the trick is not to create multiple vectors to store the gradient
when running over the tree, but to have 1 vector and to update this vector
with the new derivative information when required. Basically, we're just
inserting information in the right spots, which can be done efficiently. In
practice, storing the expression tree in memory can be really expensive. For
example, imagine a for-loop that had 10 billion loops. That's a really long
expression tree to hold in memory. Now, source code transformation tools are
really clever and don't actually store all of those expressions in memory, but
just run back the for loop, which is why they're more efficient. Operator
overloading techniques (algebraic data types) can technically optimize this as
well by doing some interesting caching techniques. However, the overall idea
is that it can be expensive and there are lots of ways to do this wrong, but
also lots of places to do things right and be creative.

As aside to a comment left above, back propagation is indeed just reverse mode
AD combined with a nonglobally convergent version of steepest descent. I've
never seen a paper that worked this out, but it's something that's known
within the AD community. Someone, someday, should really write that down.

Anyway, that's probably a much too long response to your simple question. In
short, forward mode doesn't scale when calculating gradients because the cost
is 2 * m * eval whereas the reverse mode can do it in 4 * eval. For a single
variable, or an entire directional derivative, the forward mode scales fine
and in fact works better than the reverse mode for this case.

Edit: This formatting is killing me. Hopefully, it all looks fine now.


 Contracting out an API - comments on the spec, or even a bid? - andrewljohnson
https://docs.google.com/document/d/1-OQrDRvoHk-fX0Yc9NJ_Os9y9wbxK_W2-jMXAKbFCRg/edit?hl=en_US

======
ErikHuisman
So basically only one user can login per UUID? There are no means of
unregistering the device? A user can log in on multiple devices but can't
logout. Also store the APNS key @ device_register you might wan't to sent
pushes in the future. Put password in basic auth and use ssl (at minumum)..

~~~
andrewljohnson
Yes, one user per UDID for now. If you want to unregister a device, you can
email me, and if we get multiple requests, we'll code a solution.

Storing APNS sounds like a good idea.

As for security, I am ok that this would be susceptible to a wifi sniffer. We
will note that it is insecure for users, but they won't care. If we get a bid
that implements security, we'll consider it, but I'd rather have it work than
be secure.

~~~
AretNCarlsen
> We will note that it is insecure for users, but they won't care. ... I'd
> rather have it work than be secure.

I would have an easier yet more profitable life if I could manage to adopt
that attitude for my projects.

------
wccrawford
You might be better off having 2 people, one to make your web API and 1 to
handle the 'backup' portion of it. One is programming and 1 is systems work,
and it can be difficult to find 1 person that does both well, and it
affordable.

------
simonhamp
First you have to tell us your budget! You should always have a budget. But
also be prepared to stretch that budget

Otherwise, the spec is pretty well written. Some of the finer details will
probably come out as the project progresses, but this is a good starting point
:)

~~~
andrewljohnson
I think you should always have a budget, but that it is probably unwise to
reveal that budget.

I certainly don't expect to pay a few hundred bucks for this. The spec is
clear, and I'll accept a reasonable bid, either for the project or at an
hourly rate with an estimate.

------
dools
I can't find the link or remember the name of the service, but a few days ago
I saw a website for a company that allows you to easily create a "cloud
backend" for your mobile application.

I've tried every search term I can think of but can't find it. Maybe someone
else has seen it?

~~~
bdb
There have been two mentioned on HN recently: zStack and StackMob (the latter
is run by a friend and former coworker of mine.)

Ironically, zStack has the OP listed as their only reference customer. Er,
guess that's not working out so well?

~~~
dools
HA! Yes zStack was it. I only know now because I just received an invite to
zStack (now called Parse) - then I returned here to see if I could still tell
the OP about it, I guess they already know ;)

------
tgrisfal
* Use KML or other existing standards.

* You get what you pay for.

~~~
andrewljohnson
The track files will be stored in the flat file format we use within the app.
The server won't really do anything with them besides ferry them around.

We do have client code that converts those files to GPX though, because we do
data exports.


US states: If they were countries - timr
http://www.economist.com/node/17910000?story_id=17910000
======
shawnee_
California needs to be two states: Northern CA and Southern CA. It doesn't
make sense for one state to have so much oomph, but to be such a disaster,
financially.

Northern CA and Southern CA are completely different worlds; they have
different agendas and different kinds of people flock to each one for
different reasons.

State taxes, government latency, budgeting. . . all of these things could be
simplified and improved if the state were not such a behemoth.

~~~
bendmorris
Many states have groups that want their state to be divided into two or more
states; you just hear about California more in the news because they're
bigger. One less prominent example is eastern vs. western Washington, where
the farmers in the east feel dominated by the liberals in Seattle; I believe
they even voted on it in the past. If we divide up states into homogeneous
sections, pretty soon every neighborhood will be its own state.

(Edit: Apparently it's so common there's a Wikipedia article:
[http://en.wikipedia.org/wiki/List_of_U.S._state_partition_pr...](http://en.wikipedia.org/wiki/List_of_U.S._state_partition_proposals))

~~~
jerf
"If we divide up states into homogeneous sections, pretty soon every
neighborhood will be its own state."

Some science fiction writers have hypothesized about this for a while.
Technology is trending towards empowering ever smaller groups to manage their
affairs quite effectively, and enabling those groups to rapidly snap together
with other groups on an as-needed basis. It isn't that hard to look out 50-100
years hence and ask what all these massive centralized governments are really
doing for us that couldn't be done by much finer-grained bands of smaller
ones. (Don't think something like every county fully a nation in the modern
sense, think something more like the relation of states to the federal
government, and counties doing things like perhaps buying into pre-existing
health care plans or something, across a wide array of such issues.) There are
days when the US government's current trend toward centralization seems
downright anachronistic to me.

I recall one science fiction story in Analog where after significant advances
in nanotechnology, the minimum self-sustaining unit of civilization became a
single house. It was literally possible to seal off a suburban house plot and
it could survive solely on the incoming solar energy and the technologies it
had. After the homeowner got in some trouble with the local law enforcement,
he has the bright idea of simply seceding from the nation, though various
legal handwavery and appeals to the ancient question of the social contract.
It was one of those interesting, thought-provoking stories that at least made
me think. Yes, I am well aware of the other tradeoffs involved and how
important defense and preventing the tragedy of the commons is, the point is
not that this is obviously a good idea, the point is that it is not
_unthinkable_ that we may indeed be trending towards smaller polities in the
future. The outcome of the battle between centralization and decentralization
haven't been written yet.

~~~
unsigner
One of the core ideas of Mao in the mid-20th century was to divide China into
completely self-sufficient entities of about 3 mln. people, who should produce
EVERYTHING without any trade whatsoever - because trade breeds wealth, which
breeds inequality. They were supposed to mine their own iron and smelt their
own steel from their own territory, for example.

Unsurprisingly, didn't work too well.

~~~
Unseelie
>Unsurprisingly, didn't work too well.

I find I cannot pidginhole this statement in an easy anti-communism idiom.
While it may be addressing the failures of communism (read centralized
planning), it actually holds rather well on a long view historical suggestion.
Mao was talking about peasant-farmer communities, and ones of around three
million people, with strategically divided borders, could easily continue
their existence at a turn of the century (for North America) standard of
living.

Just saying, there's nothing structurally wrong with the idea.

------
izendejas
I'd like to see a graph with per capita numbers now.

On a per capita basis, California does slightly better than the US at large:
about $50.8K vs. $47k US (according to the CIA/IMF):

[http://en.wikipedia.org/wiki/List_of_countries_by_GDP_(PPP)_...](http://en.wikipedia.org/wiki/List_of_countries_by_GDP_\(PPP\)_per_capita)

------
johnohara
We're still waiting for a porn star to run for California's highest office. In
the meantime, Italy owns the headlines.

~~~
Mz
Actually, a porn star did run. But was beat by Schwarzenegger.

[http://en.wikipedia.org/wiki/Mary_Carey_(pornographic_actres...](http://en.wikipedia.org/wiki/Mary_Carey_\(pornographic_actress\))

------
Swizec
Huh, I never imagined Italy was that rich ... then again, FIAT does own half
the motoring world.

~~~
mooism2
Italy's population _is_ over 50% more than California's.

~~~
sliverstorm
Aren't they _tiny_? (As a landmass. Not the people themselves.)

~~~
arethuza
The area of Italy is 301,338 km2, the area of California is 423,970 km2

According to a list of US States by size
([http://en.wikipedia.org/wiki/List_of_U.S._states_and_territo...](http://en.wikipedia.org/wiki/List_of_U.S._states_and_territories_by_area))
Italy is larger than all but four US states (Alaska, Texas, California and
Montana).

------
mashmac2
West Virginia = Iraq.

What can we say about that?

~~~
brudgers
Dear Honorable Mashmac, Esquire,

Congratulations on your recent promotion. My uncle the late ambassador
Professor Bubba Watts deposited $419 million dollars in the first National
Bank of Montgomery prior to his departure. Due to my recent marriage to a
close relative, I am unable to access these Funds. Please forward your social
security number and Bank Account password so that I may deposit these funds
for your finders fee.

Sincerely and respectfully your humble servant,

brudgers of Alabama=Nigeria

------
maukdaddy
FYI there is an interactive version, which also includes population:

[http://www.economist.com/blogs/dailychart/2011/01/comparing_...](http://www.economist.com/blogs/dailychart/2011/01/comparing_us_states_countries)

------
schwit
It would be nice if the states were permitted to run their states as if
countries, without the incessant interference of the federal government.

~~~
Mz
That was basically the original conceptualization. It didn't work too well and
was modified. IIRC, that political configuration has a history of failure
whenever tried. (Maybe someone who is more of student of political history can
elaborate. Not my strong point.)

~~~
clarkm
What makes you say it was modified because "it didn't work too well," and what
does that even mean?

~~~
Anechoic
Presuming your question wasn't rhetorical:

<http://en.wikipedia.org/wiki/Articles_of_Confederation>

<http://en.wikipedia.org/wiki/Shay%27s_Rebellion#Consequences>

~~~
hugh3
I'd say power centralised at the Federal Government because that's what power
tends to do -- it tends to centralise.

Those who have more power tend to find ways to use that power to (always with
the very best of intentions) to obtain more power. Whenever the Federal and
State governments argue about who has a certain power it always winds up
looking like a wolf and a chicken arguing about what's for dinner.

~~~
btilly
Power does not always centralize. For instance the long-term trend in Canada
has been towards decentralization. According to the Constitution there are
many things that the federal government has sole responsibility for that in
practice have been moved to the provincial level (with the blessing of the
federal government).

------
known
Due to the intrinsic cultural diversity, each State cannot _productively_
govern more than 2 million citizens. We should _decentralize_ the World into
States or Cantons as in Switzerland.

<http://en.wikipedia.org/wiki/Cantons_of_Switzerland>

------
simon_kun
I love this work. It would be nice if there was some representation of the
similar country area - kinda like a cartogram
(<http://en.wikipedia.org/wiki/Cartogram>)

------
nnutter
I would be interested in seeing a similar map based on GDP per capita.

------
cromulent
Come on, _three_ Finlands? Take a number, folks.

~~~
kuzux
Might be a reference to the Monty Python's Finland song, or just coincidence.

------
BlackLogic
Poor Washington got Greece

------
benohear
Where's China?

~~~
grhino
No single US state has a GDP equal to China. You would have to combine
multiple states to equal the GDP of China.


Ask HN: Good blog or publication that covers startups (both tech and non-tech)? - stevenj

One(s) that primarily just cover new products, companies, etc.<p>Not general industry news, etc.
======
templaedhel
<http://thinkstartups.com/> covers weekend projects, hackdays, and other
"hacker culture" such things. It is not updated daily, more like weekly, but
still good to have in an rss reader somewhere.

~~~
thehodge
Thanks for the mention :), I'm trying to update daily but my computer died
whilst I was in Wales and I couldn't write posts on my iPad ;)

------
evancaine
<http://www.springwise.com> and sister site <http://www.trendwatching.com>

------
aspir
Inc.com

~~~
stevenj
Inc.com covers a lot of general industry news.

I'm thinking more like the "Show HN: Please Rate My Startup/Web App..." type
of posts that reveal tech products, or a local business that just opened, or a
new, tangible product that just launched (and is ready to be purchased and
shipped).

------
frankydp
www.mixergy.com

~~~
stevenj
If I remember correctly, Mixergy primarily takes a look back on successful
products and companies.

I'd like to read/learn about products and companies that are just becoming
"real". Ones that have just shipped.


Teaching my 10-year-old daughter to program - RobbieStats
https://unsupervisedmethods.com/teaching-my-10-year-old-daughter-to-program-9e2d7963938
======
bridge_ro
This is really cool. I tried introducing my 7 year old daughter to programming
over the weekend and, while she was interested in being able to make things, I
had a hard time keeping her attention (which is probably a reflection more on
my lack of teaching ability). Maybe I'll give her a few more years and try
again.

------
rem1313
I have an old Thinkpad x61 lying around. What would be the best way to
introduce a 7-year-old to programming? I plan to be heavily involved of
course. Can anybody recommend Linux distro that is responsive and programming
enviroment? From the looks of it, Scratch requires Flash...

~~~
Muges
> From the looks of it, Scratch requires Flash...

Snap may be a good flash-free alternative:
[http://snap.berkeley.edu](http://snap.berkeley.edu)

~~~
rem1313
Thanks!


Plugged in [2009] - digisth
http://www.newyorker.com/magazine/2009/08/24/plugged-in

======
danclr
The charging infrastructure is the key for growth and changing behaviour? What
is the associate cost for deploying the network.

------
sbnpr
what is the growth expected in e-mobility?

~~~
rdyms
This is important for having a better environment in the future.


Show HN: Today I Learned - camerondaigle
http://til.hashrocket.com/
======
minimaxir
A blog is not a Show HN.


Creative demo of HTML5 canvas - vl
http://mrdoob.com/projects/harmony/

======
olalonde
Was posted here a few days ago.

~~~
pan69
And a few days before that... I don't like going into the 'old'ing but I was
under the impression that there was a URL check when posting doubles on HN.
Maybe I was wrong...

~~~
fnid2
The fancy HN dup checker doesn't look at #'s in the url.

------
mlLK
There is a lot of interesting code in here; I took the liberty to beautify the
JavaScript here, <http://pastebin.com/zVe5a1Fi>

This got me so excited I've decided to dedicate my spring break to getting
acquainted with HTML5 by learning to us <http://processingjs.org>

I think HTML5 could quite likely liberate JavaScript from the DOM altogether
and provide the necessary foundation for revolutionizing 'the manner' in which
we develop the browser as a client-side application on 'some system' while
further streamlining the web-server as a means of storage. I mean HTML5 could
very well be the solution for writing _formidable_ JavaScript that can do so
much more besides molesting the DOM. ;)

------
est
It didn't work last time on Chrome Dev 5.0.307.1 (r37331)

Today I found out it was because an extension called Kill Evil

[https://chrome.google.com/extensions/detail/epieehnpcepgfiil...](https://chrome.google.com/extensions/detail/epieehnpcepgfiildhdklacomihpoldk)

------
dbz
This is amazing. I wish there was the ability to make text via typing as well
because I could easily make some basic designs to pretty up my website with
this =]

(Yes. I'm not a designer)

Edit: Hold Shift for colors!

------
clusterfu_k
This works for me in Firefox 2 and Opera 9.64... should it?

I guess basically my question is, what HTML5 features are used in this that
they would be supported in Firefox 2 and Opera 9.64?

------
nirmal
I wish someone would translate Fugpaint (<http://www.benfry.com/fugpaint/>) to
be Canvas based.

------
juvenn
Fantasic!


Ask HN: Can a bill be introduced to stop HFT? - mandeepj
HFT is not trading. It is gambling. It has killed stock market.
======
1971genocide
Bernie Sanders has an interesting idea based on some research done by
economist.

He calls it the "Robin Hood Tax". Essentially you charge a small fee whenever
any trade happens in the market.

The opponents of this idea state that it will prevent the market from being
efficient as trading would slow down - undermining the Efficient Market
Hypothesis.

However his argument is that a small enough charge will not prevent genuine
investor from trading and just discourage the speculative traders.

~~~
mandeepj
There is already a trading fee which equates to 'Robin hood tax'. Each
platform has their own number for e.g. scottrade charges $7 for each buy and
sell. I think HFT traders don't pay that fee for each trade.

HFT is just evil. Direction less buy\selling based on the trend that is
currently prevalent in the market.

------
AnimalMuppet
Yes, such a bill can be introduced. I doubt it could pass, though, unless
there's _much_ more documented _and publicized_ evidence of damage caused by
HFT.

~~~
mandeepj
One of the biggest reasons for market crash is automated selling that gets
started by computers.

~~~
minimaxir
Macroeconomics is a _little_ more complicated than that.

------
mandeepj
The other thing that I like to be stopped is giving stock ratings. If a fund
manager wants to buy a stock then they would cut down its rating and other way
around if they want to sell it.


Digital Ruins of a Forgotten Future: Second Life Still Has 600K Regular Users - grzm
https://www.theatlantic.com/magazine/archive/2017/12/second-life-leslie-jamison/544149/?single_page=true
======
aryehof
Interesting perspective that Facebook perhaps encouraged the demise in
popularity of Second Life. While Facebook is more based on reality, much of it
imaginary nevertheless. It is full of stylized and posed selective personal
photos and experiences, that propose an idealized version of ourselves to the
world.

~~~
dom96
And interestingly, Facebook is creating something very similar to Second Life:
[https://www.facebook.com/spaces](https://www.facebook.com/spaces)

------
arisAlexis
Decentraland will be a proframmable VR world blockchain based. It will be
second life 3.0

------
Overtonwindow
For many it's all they have....


Ask HN: How do you maintain your garden? - StianSando

Do you do it yourself or do you use professionals? If you use professionals, who?
======
kjs3
I have a garden so I have something that isn't tech related to enjoy. So...I
do it myself.


Boeing Fought Lion Air on Proposed Max Simulator Training Requirement - berkut
https://aviationweek.com/air-transport/boeing-fought-lion-air-proposed-max-simulator-training-requirement
======
mcv
Boeing was already plenty culpable for these disasters, but this underscores
just how much they pressured they pressured their customers to avoid training
that could have mitigated the problems and prevented the crash, just to keep
up the illusion that they wanted to present to the world: that it was
effectively identical to the NG when it really wasn't.

~~~
rob74
On the other hand, Boeing was also under pressure from other customers
([https://www.reuters.com/article/us-boeing-airplane-
southwest...](https://www.reuters.com/article/us-boeing-airplane-
southwest/u-s-lawmakers-question-boeings-1-mln-rebate-clause-for-
southwest-737-max-orders-idUSKBN1X92D4)) who wanted to avoid simulator
training for their pilots. Which doesn't excuse them of course, but I think
it's important to see the whole picture...

~~~
CaptainZapp
Sorry, but: So what?

If you're not able to keep promises you shouldn't make them in the first
place. The buck stops with you, period.

No pilot training was often used as an argument. But I think the problem was
actually much more severe.

If Boeing would have designed a completely new plane (which they should have)
they would have lost a decade to Airbus' offerings in their most important
market.

That, in my opinion, was the real reason for that shoddy hack of a plane.

~~~
Entalpi
So Boeing was slow to react to the market forces at play and lost out to a
faster moving more adaptive competitor. When that happens in a market you
typically lose money and try to stage a comeback by reinventing yourself or in
some way try to work your way back. Boeing chose to rush and is now paying the
price for being a slow and complacent behemoth of a company at a market where
others are innovating and competing.

~~~
wu_187
This has nothing to do with markets and everything to do with ethics. It is
not ethical for a company to knowingly risk lives to rush out a new product.
In the airline industry, it is unheard of for this to happen. Everything is
triple redundant for a reason. Typically you would cut corners elsewhere that
is not a risk for human lives. Boeing already tried that by outsourcing the
construction of the 787 and it was riddled with failure. They should have
learned their lesson there.

------
ameen
In a way, Boeing’s plight underlines American work culture vs. European and
other relaxed but stringent work cultures.

American businesses are constantly churning output with not much to show for
(relative to effort vs results) as the employees are burned out, investors and
C-suite demand more of the middle-management and they in-turn pressure
engineering and sales teams, etc.

The results have spoken about which one works and which doesn’t. Toxic work
culture starts from the top.

~~~
datenhorst
I believe Harvard Business School and its ilk deserve a lot of blame for the
instilling of a profit-at-any-cost culture across the US.

~~~
neuronic
I studied abroad in the US as a European and the first sentence the
microeconomics professor blurts out: "Greed is good."

At that point I wasn't as gobsmacked anymore because several days before some
17 year old girl yelled in a 300 person biology lecture at the professor to
stop telling lies about evolution (first week of college).

But "greed is good" struck me as an oddly American way of viewing the world.
Europe isn't free of greedy people, by any means, but it's sort of not the
first rule you learn in school.

~~~
msiemens
I guess it depends. I have a German engineering degree and took a business
administration course as a part of that. And in one of the first lectures our
professor told us that _The formal goal of the company is to maximize profit_.
Which seems to be just a more formal way of expressing _Greed is good_. But
then again, this might be influenced by American business culture…

~~~
neuronic
Agreed, and I obviously suffer from some bias since I could not experience
college in both countries.

But the microeconomics angle seemed more personal - as in attempting to
describe interaction between people with some extrapolation to larger
entities.

------
toast0
Even if Lion Air had done simulator training, it seems unlikely to have
helped, unless there was specifically material on MCAS or at least stabilizer
runaway by the electric trim system.

One airline demanding and getting simulator time doesn't help if the decision
has already been made to not inform pilots about MCAS. Boeing's flight rules
model has always been around the pilot(s) having situational awareness and
being in absolute control; the problem with MCAS is not what it does, or that
it's needed to avoid stalling, the problem is that it was not known to pilots,
that it operates without any clear indication that it's operating, and that it
can only be disabled by disabling electric trim, and that manual trim is
extremely difficult to impossible to use if the stabilizer is at full nose
down (there was an old 737 procedure for this, but it was removed some number
of redesigns ago, it was reportedly not in the 737 NG manual)

~~~
willyt
Here is a video explaining how difficult the manual trim procedure is:
[https://www.youtube.com/watch?v=aoNOVlxJmow](https://www.youtube.com/watch?v=aoNOVlxJmow)

~~~
tzs
Note that the video is about manual trim in extreme conditions.

If pilots knew about MCAS and that in the case of a runaway trim due to MCAS
they need to disable electrical trim and switch to manual trim early and keep
it manual for the rest of the flight, they would not get into the conditions
where it is hard to turn the manual trim wheels.

~~~
willyt
But even if they had known about MCAS, I think I read somewhere that they had
30 seconds to diagnose the problem before it put the trim in this
configuration.

------
jakobegger
Can someone explain how Airplane Simulators for pilots work?

Do simulators have the same hardware as real planes, or do they have a
software model of the airplane?

If you simulated a broken AoA sensor, would the simulated plane behave similar
to the real plane? Would the MCAS system have the same bugs in the simulator
as in the one in the real aircraft?

Can you try new scenarios in a simulator, or can you just try scenarios that
the simulator was designed to run?

~~~
phugoid
> Do simulators have the same hardware as real planes, or do they have a
> software model of the airplane?

If you're looking at the highest fidelity level D simulators, the instruments
and controls in the cockpit are either the same parts as the aircraft, or
functionally identical (but cheaper).

> If you simulated a broken AoA sensor, would the simulated plane behave
> similar to the real plane? Would the MCAS system have the same bugs in the
> simulator as in the one in the real aircraft?

One of the big costs in building a simulator is buying the data package from
the aircraft manufacturer, with the aero model and details of system
internals, things like electrical and hydraulic schematics. Sim makers build a
software model of these internals at a pretty low level. For the most part, if
you introduce a fault in some part of the system it will behave the right way
as an emerging property, not because you're forcing the system to have the
right outputs.

Some software components from the aircraft get installed on the simulator with
the same hardware platform from the aircraft, others get run as executables on
the simulator's computers, and others get re-implemented from scratch (lots of
FORTRAN and C).

That kind of detail comes into play when the instructors introduce multiple
failures at the same time - pilots have to take corrective actions to make the
faults go away or manage them - if you don't model the systems at a pretty low
level you'll never high fidelity.

> Can you try new scenarios in a simulator, or can you just try scenarios that
> the simulator was designed to run?

There is a list of malfunctions available to the instructor, who runs the
session from the back of the "cockpit" on touch panels. For the most part,
these malfunctions cover failures that are anticipated by the aircraft
manufacturers, and the corrective actions / system behavior are well
understood. Each fault is tested to make sure it works properly. You don't go
and fail some random component in the system.

When an important failure happens in the real aircraft, it might get added as
a training scenario to simulators already in operation.

~~~
NotCamelCase
> You don't go and fail some random component in the system.

I always wondered if they did that, something akin to fuzzing tests in SW.
Wouldn't it be useful to detect unexpected situations that'd be catastrophic?
Or the benefits from it wouldn't outweigh the cost/time loss?

~~~
phugoid
Even with a pretty good model, if you introduce new failures that were not
anticipated/tested, there's a risk that the system will not behave as per the
aircraft. Now you're giving "negative training" to your pilots, maybe worse
than no training at all.

Also, imagine you're an airline with thousands of pilots and dozens of
instructors: you're running an airline and a school at the same time. You need
to build a curriculum of training and testing that will standardize your
pilots. There's room for thinking outside the box but not too much.

~~~
NotCamelCase
Good point, thanks for your insights!

------
hhas01
Jesus.

Pardon my French, but seeing that photo makes me fully appreciate two things:
1. Just how incredibly low 737 sits to the ground (obviously a feature from
back in the days when luggage was manually loaded), and 2. How _anyone_ would
think pushing those enormous engines forward like that could be any less
disruptive of its proven design than lengthening the undercarriage to give
them the clearance they so desperately need.

Death of a thousand cuts. Indeed. Hope the monster never flies again.

~~~
amyjess
> how incredibly low 737 sits to the ground (obviously a feature from back in
> the days when luggage was manually loaded)

People, not luggage. Specifically, the 737 was designed to cover short-haul
routes between regional airports that didn't have gates, where people had to
get on the plane by walking up portable steps.

Boeing never expected the 737 to be the low-cost plane of choice between major
aviation hubs.

~~~
alistairSH
Not always portable steps. The 737 has (optional?) steps built into the
chassis.

[https://www.youtube.com/watch?v=oQ-6PDYRj80](https://www.youtube.com/watch?v=oQ-6PDYRj80)

------
konspence
This whole thing looks like a disaster. As other commenters are pointing out,
even if the pilots did the MAX simulators, would they have been trained to
respond to the AOA failure? Unlikely.

It seems like Boeing completely missed serious cases on the testing of the
plane, and is hoping that the "UAT" phase (simulator training) would have
uncovered the issues.

But UAT never underwent the condition of an AOA sensor failing.

------
_Codemonkeyism
Key take away

"There is absolutely no reason to require your pilots to require a MAX
simulator to begin flying the MAX,” the Boeing employee replied. "Once the
engines are started, there is only one difference between NG and MAX
procedurally, and that is that there is no OFF position of the gear handle.
Boeing does not understand what is to be gained by a three-hour simulator
session, when the procedures are essentially the same.”

~~~
Athas
I still think it's interesting to reflect on the mindset that leads to this
conclusion. As far as I have been able to determine (although I'm not in the
aerospace field), the 737 MAX _is_ procedurally identical to the NG, _except
when something breaks_. The failure modes are slightly different, with
potentially lethal results. As a computer scientist, I'm not accustomed to
thinking about functional equivalence in the presence of hardware failure, and
maybe this Boeing employee was not sufficiently drilled on the need to
consider such aspects for aeroplanes. It is of course the fault of Boeing
corporate culture and internal procedures that this can be overlooked.

~~~
salawat
>As a computer scientist, I'm not accustomed to thinking about functional
equivalence in the presence of hardware failure...

How are you not?

I mean, I get it 90% of the time we screw up the programming somehow, but as a
computer scientist, I never ignore the possibility of hardware failure. Memory
goes bad. Devices fail. Networks die. Semiconductors transiently in strange
ways if you don't take the right precautions...

It's the entire impetus behind GIGO. If you shove garbage into a perfectly
working software system; (corrupt data from a malfunctioning input source),
you still get out garbage.

It's why life and safety critical automation is so fundamentally different
from lower stakes programming tasks where "reboot the damn thing" is a viable
option.

If your sensor goes bad, and you're in the air, you can't do squat to fix it.
You have to detect the error, and fail the system gracefully by taking it out
of the loop, informing the operator of the system failure, and most
importantly, _never allow that system to do anything that could jeopardize the
ability of the operator to continue operating_.

This is or at least I thought it was basic Control Systems 101...

~~~
Athas
> How are you not?

I research compilers and type systems. If the RAM dies while the compiler is
running, you rerun the compiler on a new machine. A lot of computer science
abstracts away the notion of hardware failure, because otherwise it becomes
enormously cumbersome to talk about anything. This is fine as long as you
don't actually build real high-reliability systems with the same approach.

~~~
acqq
>> How are you not?

> I research compilers and type systems.

I hope it's obvious that the software you work on is not supposed to be run
during the flight.

The critical software is supposed to do as little as possible, and everything
is expected to be in already compiled (and thoroughly verified) state.

And even for the product of yours, as soon as it is not used only for the
research but as a production compiler which produces a firmware for the plane,
it would have to be proven much more than what is expected from it while it is
just an artifact of a research.

In short, even if you are lucky to just do the research, you should be aware
(and thankful) that the critical software has other expectations. Including
how it responds to failed sensors: different response to the external inputs
is _a fundamentally different_ software, even if you never thought about it
before.

~~~
gknoy
I think his main point was that for most of us, hardware failure is considered
an adequate excuse for why something works -- most of us are not expected to
have software that _continues working_ when things break.

~~~
acqq
The "failures" of the sensors are simply the "less common" inputs. The proper
control software should simply be written for all possible inputs, which
include inputs from faulty sensors, and the result of the processing should
not have some catastrophic consequences.

Compare to the web app that awaits the username, but when the username is not
the "most common" (e.g. contains some new unicode symbols, or is of zero
lengh) it allows catastrophic security failure and intrusion.

------
GenericsMotors
Around the time just before the MAX was grounded, I remember there being lots
of unfounded speculations (here on HN as well!) that Lion Air's and
Ethiopian's pilots were somehow substandard and lacking the training of their
first world counterparts. Meanwhile it was Boeing actively keeping vital
information and training from pilots.

The lesson from this is still not learned, and can see at least one apologist
on this thread repeating this same BS again...it's infuriating.

------
ummonk
On the specific issue of simulator time though, if the simulator behaves
basically the same as a Boeing 737 NG, what is the point of putting them
through the MAX simulator? It does seem like a pointless exercise that
wouldn't have provided the pilots any extra practice (or crucial knowledge of
actual differences like MCAS).

Obviously, now that they're adding checklist practice for emergency scenarios
relevant to the 737 MAX, it makes sense to require simulator practice, but I
don't think that would have previously made a difference.

~~~
inferiorhuman
Here's the ASRS entry I was thinking of:

 _I had my first flight on the Max [to] ZZZ1. We found out we were scheduled
to fly the aircraft on the way to the airport in the limo. We had a little
time [to] review the essentials in the car. Otherwise we would have walked
onto the plane cold.

My post flight evaluation is that we lacked the knowledge to operate the
aircraft in all weather and aircraft states safely. The instrumentation is
completely different - My scan was degraded, slow and labored having had no
experience w/ the new ND (Navigation Display) and ADI (Attitude Director
Indicator) presentations/format or functions (manipulation between the screens
and systems pages were not provided in training materials. If they were, I had
no recollection of that material). _

[https://www.theatlantic.com/notes/2019/03/heres-what-was-
on-...](https://www.theatlantic.com/notes/2019/03/heres-what-was-on-the-
record-about-problems-with-the-737-max/584791/)

~~~
ummonk
Wow, that is pretty damning.

~~~
inferiorhuman
Yeah, I'm curious which airline this was. For obvious reasons ASRS anonymizes
data but this seems like an end-to-end failure and it's pretty disappointing
that the pilot(s) didn't feel comfortable rejecting the plane.

------
Brave-Steak
I'd _really_ be interested in knowing at what level these two employees were
at. How deep does the rot go? Even if the CEO is gone, these people are still
around.

------
vmchale
What a shitshow. The entire thing is graft, and the US government turned a
blind eye because it's deemed an important industry.

~~~
mrtksn
Isn't it also unfaithfulness to capitalism to protect an industry in such a
way? I would have assumed that if someone believes in the mechanics of
capitalism would have let it be.

------
triceratops
Can anyone experienced in aviation ballpark how much retraining a pilot on a
new plane costs? How does it compare to a pilot's annual compensation or other
figures of importance (e.g. annual airline revenue or profit, operating
expenses of a plane etc)? Helping airlines avoid retraining seems like the
driving factor behind all these apparently shortsighted decisions that led to
the MAX but, assuming everything had gone well, what were the actual potential
savings? I'm just trying to understand the stakes.

------
Entalpi
What ever happened to ”safety first”.

~~~
xiphias2
If you ask the Boeing CEO about it, safety was always the top priority.

------
epicgiga
Lion: "we'd like to practice using this plane so we don't crash it". Boeing:
"no". Lion: crashes it. Hundreds die. Boeing: "not our fault, their pilots
were untrained".

How is no one is prison again?

~~~
mattacular
The Boeing CEO exited the company with just 60 million dollars, which is a lot
like being sent to prison.

~~~
Aloha
In fairness to the guy, he came from the Military side of the house, the
program was basically ready for flight by the time he took over the CEO slot.
Basically all of the fatal design decisions were made before he became CEO.

The 737 MAX was a failure of process, not by specific choices made by a leader
- he was fired however for his poor response to the crashes, he committed many
tactical and PR errors, which made the restoration process longer than it
should have been.

If still you want to lay blame at any single persons feet, lay the blame at
the feet of James McNerney, the CEO who ran Boeing while the bulk of the
development of the MAX was done, he's the one who kicked the MAX program off.

~~~
stefan_
What do you mean? The policy set here was literally set at the highest level,
a specific choice - "no training, no certification" was the precise goal for
the 737 MAX. How can you claim that is a failure of process.

~~~
Aloha
I'll argue that making the MAX behave the same as a non MAX 737 is a reachable
and reasonable engineering goal, the process failed because it didnt do it
safely.

Airbus absolutely uses its fly-by-wire system to change the handling
characteristics of its airplanes, to make them fly the same - I see no reason
why Boeing couldn't do the same thing.

~~~
acqq
> I'll argue that making the MAX behave the same as a non MAX 737 is a
> reachable and reasonable engineering goal

And I argue the opposite: it can‘t be made to behave exactly the same as soon
as the failure scenarios are considered.

In computer speak, you just look from the point of view of a “most common”
run, not all the special cases, exceptions etc.

There are other impossibilities too, directly related to the certification
requirements, already documented in the news articles before.

~~~
YawningAngel
The normal failure scenario for safety critical electronics on an aircraft is
that you have an entirely redundant system that takes over. I don't see why
that approach wouldn't have been sufficient here.

~~~
acqq
It is documented in the articles: failure modes have to be trained if they
aren’t the same, and with MCAS as it should be (not as if was and failed
catastrophically twice) they can’t be the same. New devices have to be
recertified. Two sensors can’t be redundant, three would be again not the same
plane. Newer computers won’t be the same plane etc.

Wait to see what the final opinion of European agencies are once the latest
changes are evaluated and you’ll see that it’s not the same plane, even if
Boeing all the time bent over backwards over the dead bodies of others.

------
hurricanetc
They wouldn’t have trained on an MCAS failure so this is irrelevant as far as
the actual crashes are concerned.

It’s just more evidence of Boeing being a corrupt organization.

------
justinclift
This is why Boeing shouldn't be allowed to have anything to do with new Space
contracts (ISS, etc) until this MAX issue is a solved, faint memory. eg for
decades

~~~
tzfld
Space hardware development is heavily supervised, and there are no issues
induced by mass production.

~~~
justinclift
So, exactly like aviation, and it hasn't worked out there. :(

------
tzfld
The way Boeing seems more and more evil as the story is folded out, makes me
think that all these article may be heavily one sided and never hearing
Boeing's own version and motivations.

~~~
cjslep
You can always read the prime source material yourself: Boeing's own internal
emails and chats they released about the 737 MAX.

And do note: those released items are Boeing putting its best foot forward.
And it's a low bar. Imagine the emails and chat transcripts that were not
released.

~~~
wahern
> And do note: those released items are Boeing putting its best foot forward.
> And it's a low bar. Imagine the emails and chat transcripts that were not
> released.

My guess was that the new CEO was trying to get out ahead of developments by
airing the remaining dirty laundry. It makes him and Boeing look sincere and
starts the clock on the public forgetting the bad news. The constant drip of
bad publicity made the previous CEO look like an idiot.

I don't expect Boeing to actually clean up their act, but I bet they're going
to be smarter about things going forward. I doubt there are going to be any
more damning reveals about the 737 other than what can be mined from these
latest disclosures. 777X is another matter, but I bet any revelations will
occur more quickly and cleanly.

------
redis_mlc
To give you an idea how big a tragedy an airliner accident is in Indonesia ...

The average Javanese person I've talked to knows 900 relatives by name.

------
WalterBright
> and that an erroneous MCAS activation would be quickly diagnosed as a
> runaway stabilizer. The 2013 memo casts doubt on the former, and the two MAX
> accident sequences disproved the latter.

This does not mention that an Emergency Airworthiness Directive was sent to
all 737MAX crews after the LA crash explaining exactly how to resolve the
runaway trim issue, which is:

1\. restore normal trim using the column trim switches

2\. cut off the stabilizer trim with the console cutoff switch

The text is:

Boeing Emergency Airworthiness Directive

"Initially, higher control forces may be needed to overcome any stabilizer
nose down trim already applied. Electric stabilizer trim can be used to
neutralize control column pitch forces before moving the STAB TRIM CUTOUT
switches to CUTOUT. Manual stabilizer trim can be used before and after the
STAB TRIM CUTOUT switches are moved to CUTOUT."

[https://theaircurrent.com/wp-
content/uploads/2018/11/B737-MA...](https://theaircurrent.com/wp-
content/uploads/2018/11/B737-MAX-AD-1107.pdf)

Both the LA and EA crews repeatedly successfully countered the runaway trim
with the electric trim switches. The LA crew never took the next step of
cutting off the trim. The EA crew did cutoff the trim, but did not trim to
normal first.

Dealing with runaway trim is a "memory item" for the 737, meaning the pilots
are supposed to know about the cutoff switches that are prominently placed on
the center console in easy reach.


Peter Thiel aims to purchase Gawker's archives - scandox
https://www.washingtonpost.com/news/posteverything/wp/2017/12/12/if-you-miss-gawker-dont-let-peter-thiel-buy-its-archives/?utm_term=.dc77956cc23a
======
scandox
Is this a case where a quick scrape and an IPFS version might make the whole
thing moot? I presume that isn't legal - but is it viable and will it prevent
the loss of the material?

Not that I have a strong moral view either way. Just interested.

~~~
QAPereo
To be fair, if you find yourself taking a strong moral stance opposing Thiel,
you’re probably in the right.


What contextual information would best improve HN discussions understanding? - antpls
Hello! I'm from France. I find myself misinterpreting some of user's comments because of lack of context or introduction to the comments or personal experiences of authors. Comments currently have 4 pieces of information so far beside text : author's username, vote count, date time and, implicitly, parent comment. According to you, what 5th piece of information would help to better understand author's point of view? As an example, each post could also have the continent or country where the author is currently living in (at the time of writing and posting)
======
antpls
To better explain why I suggested country : with that information and the
date, we can for example infer what was the political system at the time of
writing the comment, among many other inferences we could imagine.

~~~
antpls
Another example could be the field in which one declares working in : legal
(no more IANAL required :-)), science, driving, engineering, programming,
cook-chief, investment, etc


Nudging out support for a carbon tax - colinprince
https://www.nature.com/articles/s41558-019-0474-0
======
Pxtl
This is happening in Ontario right now as we speak.

The Ontario government is fighting against the federal revenue-neutral carbon
tax and has instituted a small grab-bag of subsidies for businesses doing
green refits.

So in essence, they're taking a neutral system that put money to taxpayers and
turned it into a subsidy on corporations that pollute, and claiming it as a
populist victory. And the public ate it up.

I've heard nonsense like "I recycle and don't litter, why should I have to pay
a carbon tax" as if those things are related.

~~~
martythemaniak
It should also be noted that the federal carbon tax is a tax-and-rebate
scheme. Ie you get taxed on the carbon and the revenues get refunded to the
consumers. If you make a lower-carbon choice, you keep your money. If you
don't, nothing really changed. It's also slightly progressive, since lower-
income folks will actually come out ahead by a bit without making any changes.

Warning: strong political opinions below.

What we're seeing is really a replay of the ACA reaction in the US. Obamacare
was a rejigged Romneycare, which was a rejigged Heritage Foundation plan which
was a reaction to the Clinton's healthcare plans. It was a conservative,
market-friendly approach to solving an issue... until it was actually
implemented. Then we found out it was just a talking point meant that was
never meant to be acted upon, a mere cover that allowed conservatives to
pretend they were interested solving an issue.

Likewise, the tax-and-rebate scheme is basically most conservative and market-
friendly approach to tackling climate change that actually produces results.
But now that it's actually been implemented, the Ford/Kenney/potential-Scheer
governments are reacting by repealing it and replacing it with nothing that
produces results. Because they don't have the guts to say simply "No, we don't
believe in this and we're not going to do anything about it"

~~~
Joakal
Lets say it cost consumers $100.

After Carbon tax, company gets $20 tax. Price becomes $120. Government says to
consumer, here's $20. Consumer and company see no difference. Government cost
goes up to maintain the scheme.

This is why people say the carbon tax/price must go towards non carbon
ressearch/products.

~~~
lodi
Let's further say that there exists another company that can produce the same
widget with fewer emissions, but it costs $110 base price + $0 carbon tax to
do so. Now the green company actually has a viable product, and consumers are
incentivized to switch to it.

~~~
Joakal
Consumers still see $100 net pre and post tax. That's why I think the rebates
are flawed.

------
oski
In researching what we can do about climate change, the most convincing
proposed policy solution I've seen comes from the Citizen's Climate Lobby -- a
Carbon Fee and Dividend ([https://citizensclimatelobby.org/basics-carbon-fee-
dividend/](https://citizensclimatelobby.org/basics-carbon-fee-dividend/)),
which I learned about while reading "Being the Change" by Dr. Peter Kalmus.

Basically, it's a plan for a carbon tax along with a rebate program (similar
to UBI in my opinion) so that the least well off financially don't get crushed
by things like higher gas prices.

~~~
Pxtl
That's actually what was implemented in Canada last month on all provinces
that didn't run their own carbon pricing system.

You'd think everybody could get behind it, right? I got $300 on my tax rebate
as an advance for this year's carbon pricing.

Of course the conservatives hate it, because their carbon plan is "no."

And they're on track to win in November.

~~~
ttul
We shall see. A lot can change between now and then. The SNC affair will fade
over the summer and the truth is the economy is doing very well - that
typically drives election results.

~~~
Pxtl
I wish I shared your optimism. I keep worrying we're going to see a repeat of
Ontario's provincial election.

------
adrianN
We need to just introduce that damn tax already. We should have introduced it
thirty years ago after the Rio summit! The longer we wait the harder the
transition will become.

~~~
mauflows
It's currently before Congress

[https://energyinnovationact.org/](https://energyinnovationact.org/)

~~~
chewbacha
Nothing moves in Congress right now because Mitch McConnell is only interested
in confirming judges as fast as possible. And he has been explicit in being
non-cooperative with Democrats.

------
jlgray
An under-represented argument for a carbon tax is the fact that it would
encourage companies to innovate, both with respect to efficiency as well as
using renewable energy.

I predict that industries in countries that adopt a carbon tax earlier will
end up with a competitive advantage.

~~~
spodek
I'll go further with the example of the U.S. car industry in the 60s, when the
evidence was clear that consumers preferred safe, reliable, affordable,
efficient cars -- from increasing sales for Volkswagen and Toyota, and most of
all from the success of _Unsafe at Any Speed_.

I doubt anyone then would have predicted that two of the U.S. big three would
declare bankruptcy and that Toyota, then manufacturer of podunk little cars,
would become the #1 manufacturer, but it happened.

Had U.S. regulations met consumer demand, U.S. manufacturers may have
innovated what consumers wanted instead of more chrome, tail fins, size, etc.
Regulation came eventually, but too late for the industry to avoid
bankruptcies, unemployment, and so on.

In fact, regulation didn't stifle innovation but directed it. Engineers can
innovate around safety and efficiency as much as on speed and tail fins. I'd
rather have 100,000 mile warranties and electric cars than more chrome, which
U.S. market forces created.

Today, regarding the environment, the governments that regulate to reflect
citizen demand for clean air, land, and water will create markets and
companies that beat ones that don't. I hope current U.S. policy doesn't
bankrupt more future U.S. markets and companies.

------
mrosett
Full text pdf:
[https://www.researchgate.net/journal/1758-678X_Nature_Climat...](https://www.researchgate.net/journal/1758-678X_Nature_Climate_Change/publication/333068802_Nudging_out_support_for_a_carbon_tax/links/5cda4b91299bf14d95950a77/Nudging-
out-support-for-a-carbon-tax.pdf)

------
wbeckler
The latest IPCC report says we have just 11 years to halve global emissions or
we'll be seeing massive destruction to civilization. This is what is spawning
organizations like Extinction Rebellion, which forced the UK government to
declare a climate emergency. A tax now seems like too weak a measure. Greta
Thunberg and Extinction Rebellion and others are talking about 15% reductions
annually in industrialized countries. Any other proposal accepts doom or
millions of unnecessary deaths as options.

------
sandworm101
So market driven. So incentive-based. So flat. So American.

America loves to do things via tax code, which is why the US tax code is
famously so complicated, but that time is gone. The answer isn't a new tax to
nudge the market. The answer is not an incentive to _please_ stop polluting.
We don't need 10% reductions here and there. We need massive reductions
everywhere, preferably with active capture that pushes carbon emissions into
_negative_ territory. We cannot afford to fund green energy by taxing non-
green energy. Coal cannot fund solar. Coal has to stop. We need rules to say
that burning coal is now illegal. We need rules that mandate solar+wind as a
fixed percentage of energy generation. We need massive rewrites to the rules
that limit the deployment of new nuclear technologies. The opportunity for
politically-friendly market-based (ie American) approaches has passed. It is
time for governments to pass absolute rules forbidding some behaviors and
mandating others. If that offends political sensibilities, those political
sensibilities need to be set aside.

(1) Burning more than 100kg of coal per year is illegal.

(2) All new houses must include 10m2 of solar panels per resident.

(3) Windmills are, by law, not "an eyesore". No more complaining about them
spoiling your retirement view.

(4) Those who cannot articulate the difference between a millisievert and a
microsievert, between fission and fusion, are not allowed anywhere near the
planning meeting for any new power plant.

~~~
joshe
Incentives work really really well. Almost nothing else does over the long
term.

For a concrete alternative with incentives:
[https://citizensclimatelobby.org/basics-carbon-fee-
dividend/](https://citizensclimatelobby.org/basics-carbon-fee-dividend/)

A massive $600 billion dollar per year incentive based nudge.

~~~
sandworm101
[https://en.wikipedia.org/wiki/Montreal_Protocol](https://en.wikipedia.org/wiki/Montreal_Protocol)
: absolute ban on CFCs worked.

[https://en.wikipedia.org/wiki/Tetraethyllead](https://en.wikipedia.org/wiki/Tetraethyllead)
: EPA mandated reductions of lead in gasoline worked.

Not to mention the thousands of little things (drunk driving, slavery,
universal suffrage, speed limits etc) that were overturned relatively
successfully without any market-based approaches. There is a right-wing
philosophy that all government actions are inherently inefficient, but the
reality is that laws work. It is possible to ban a behavior on day one and see
it substantially reduced on day two.

~~~
thebooktocome
China has continued to leak CFCs despite the ban.

~~~
wcoenen
CFCs in the atmosphere are still dropping. (The news was that the rate at
which CFCs disappear has slowed down a bit, and some are pointing at China for
that.) I'd say the policy was pretty effective.

~~~
thebooktocome
I don't think China deserves the benefit of the doubt on this topic.

"From the Korean and Japanese data, we used our models to show that emissions
of CFC-11 from north eastern China had increased by around 7,000 tons per year
after 2013, particularly in or around the provinces of Shandong and Hebei,"
said Luke Western, a University of Bristol atmospheric modeler. "We didn't
find evidence of increasing emissions from Japan, the Korean peninsula or any
other country to which our networks are sensitive."

[https://www.cnn.com/2019/05/22/health/china-cfc-pollution-
en...](https://www.cnn.com/2019/05/22/health/china-cfc-pollution-environment-
intl-scn/index.html)

~~~
wcoenen
OK, the emissions were indeed confirmed to be coming from China. Fortunately
they are tracking down the CFC producers now and shutting them down:
[https://nationalpost.com/news/world/china-makes-arrests-
shut...](https://nationalpost.com/news/world/china-makes-arrests-shuts-down-
rogue-chemical-factories-that-spewed-banned-ozone-depleting-
gas?fbclid=IwAR2D_XkH2BtI20r1AeessWBVp8uMXyIWpe5L4wQ1FZAPaWUreQjuwoszVU4)

------
avsteele
I don't think you'd see as much resistance to such a tax if it was dollar for
dollar paired with a reduction in other taxes. This has two benefits:

1) In the absence of this pairing it just looks like a government-growing cash
grab to a segment of the population.

2) People who aren't even convinced of the dangers of AGW can still support
it.

~~~
shaki-dora
I wish I had your optimism. I'm almost certain that even a revenue-neutral
bill would be presented as a tax increase in the right-wing media.

And, of course, even something that is revenue-neutral overall will have some
winners and losers: SUV owners will pay more than those commuting with public
transport. Poorly isolated single-family homes in the south relying on air
conditioning through the summer will be more expensive compared to flats in
northern brick houses, etc.

~~~
sokoloff
> SUV owners will pay more than those commuting with public transport. Poorly
> [insulated] single-family homes in the south relying on air conditioning
> through the summer will be more expensive compared to flats in northern
> brick houses, etc.

Those all sound like _excellent outcomes_ in terms of linking behavior to
carbon emissions via a price-signaling mechanism.

Logically, it's impossible to simultaneously incentivize people to emit less
_and_ not have the current high emitters feel some incentive to change.

(Edit: removed one extraneous negation in the last sentence.)

------
gwbas1c
I personally wonder if taxing carbon producing machines makes more sense than
taxing fuel? The taxes could directly subsidize cleaner alternatives.

Then, once a lot of carbon producing machines are out of use, introduce a
carbon tax to help push the remaining ones out?

------
gdubs
Instead of calling it a tax, let’s just say we’re going to stop subsidizing
carbon.

------
GiorgioG
This won't be popular with the HN crowd, but taxing activities that we want to
reduce/minimize doesn't work. Cigarette taxes didn't work in any meaningful
way (see
[https://www.nber.org/papers/w18326.pdf](https://www.nber.org/papers/w18326.pdf))

~~~
jlgray
I don't think the comparison to cigarette taxes is completely fair. Cigarettes
are relatively inelastic w.r.t. price as they are addictive, and have no real
competing product.

Electricity and power generated from carbon emitting sources on the other hand
have a much more elastic demand curve. E.g. if your energy bill is cheaper
with renewables, no one would choose to go with fossil fuels. Likewise with
electric vehicles. If the cost of tanking up an EV is significantly lower than
an internal combustion vehicle, people will switch for purely economic
reasons.

You can look at the lack of a carbon tax as an incentive on fossil fuels which
socializes the externalities.

------
throwaway857384
I think this sums it all up "but is controversial because it imposes costs on
consumers."

A carbon tax is a way for all of us (people) to deal with the problem, while
the corporations that created and caused it get a 'get out of jail free' card.

~~~
adrianN
Corporations don't burn coal for fun, they satisfy demand created by people
like you and me while trying to maximize profits. Without a carbon tax,
corporations that manage to successfully externalize that cost have a huge
competitive advantage.

~~~
ken
Companies don't pay taxes for fun, either. What I think that comment is
referring to is the fact that corporations have a history of being really good
at weaseling their way out of paying taxes, and the bigger companies are the
best at it.

A carbon tax, in particular, looks like it would be very easy for a
multinational to escape. It's reason #{xyz} to move your facility across the
border and out of American jurisdiction.

If we can't get them to pay taxes already, won't a carbon tax simply be yet
another tax which is disproportionately paid by small businesses and
individuals, and not the actual biggest polluters, while driving more
manufacturing jobs overseas to countries which don't have such laws?

~~~
amelius
I guess the solution here is to have customs duties based on emissions taxes
paid in the originating country. This is not only needed to prevent
corporations from moving their business elsewhere, but also to compete with
existing/new corporations in foreign countries.

~~~
sokoloff
You can't base duties just on emissions taxes paid. (Setting aside practical
record-keeping concerns,) If factory A pays no emissions taxes paid because
they're based in a country without carbon taxes and factory B pays no
emissions taxes because they're in a country with no carbon taxes _but also_
are using carbon-free energy sources and factory C is located in a country
with carbon taxes and pays those taxes, should we charge B the same as A in
duties? Should A pay more than C by the exact amount of the carbon taxes? If C
implements an energy efficiency program to cut its consumption in half, should
A now pay less? How could B "prove it"? How do we control such that A can't
represent itself as B?

At some point, these other countries are sovereign entities, and it's going to
be difficult to dig into the on-the-ground facts at each factory and step
along the supply chain to determine emissions.

~~~
amelius
We can measure CO2 emissions from space:

[https://climate.nasa.gov/climate_resources/99/graphic-
measur...](https://climate.nasa.gov/climate_resources/99/graphic-measuring-
carbon-dioxide-from-space/)

If company X in country Y wants to trade with the US, they could require that
country Y provides full transparency in carbon emissions, where the
measurements from space could be used as a checksum.

~~~
sokoloff
Neat tech. (For those curious, it seems like we are capable to measure CO2
increase or decrease to an uncertainty of approximately 0.3% [of CO2, meaning
~1ppm overall]. That's impressive.)

Even if the last "embargo uncooperative countries" strategy were possible, I
think you'd find that all of their domestic production would be carbon-
intensive and their exports would all be "carbon neutral".

~~~
amelius
Well, we could require that countries (trade partners) pay tax on their
emissions as opposed to companies. How these countries tax their companies
internally could be an internal affair entirely. And this also solves the
bookkeeping at the border.

------
Lendal
Grand projects like TVA and Tesla Inc are what will solve global warming.

Carbon tax is just money. More money doesn't solve global warming. In fact I
would say money is the reason we have global warming in the first place.

~~~
tybit
Money is probably the most persuasive tool we have as a society to change
behaviour. Yes engineering is vital but it works with economics not in
isolation.

~~~
wolco
I think the issue is who pays. If it ends up as consumer tax only it will take
awhile before change is reflected. A business tax would accurate change.


How to Kill Mysql Performance - arjunlall
http://www.slideshare.net/techdude/how-to-kill-mysql-performance

======
jaypipes
Hi folks, this is Jay Pipes, the author of the slide decks in
question...someone notified me via email that these slides were up online.

I had no idea those slides were even up online! People tend to take the slides
from my website (<http://jpipes.com>) and post them on various websites
without my knowledge, which is perfectly fine. :)

Those slides are also quite old (2+ years now). I've done many presentations
since then and have a number of alternate slide decks which you may find
useful. Here are the links to download PDFs from my website.

<http://jpipes.com/presentations/kill-mysql-performance.pdf>

[http://jpipes.com/presentations/target-practice/target-
pract...](http://jpipes.com/presentations/target-practice/target-practice.pdf)

[http://jpipes.com/presentations/target-practice/target-
pract...](http://jpipes.com/presentations/target-practice/target-practice-
workbook.pdf)

<http://jpipes.com/presentations/joinfu/joinfu_part_one.pdf>

<http://jpipes.com/presentations/joinfu/joinfu_part_two.pdf>

[http://jpipes.com/presentations/dqm/legend_drunken_query_mas...](http://jpipes.com/presentations/dqm/legend_drunken_query_master.pdf)

You can also download a chapter of my book (Pro MySQL) on SQL Scenarios:

<http://jpipes.com/presentations/sqlscenarios.pdf>

Cheers!

jay

------
ams6110
How to ensure that [some] people won't read your post: require Flash.

~~~
arjunlall
You would probably be better off complaining to slideshare.net or the original
author of the slideshow for posting it there.


Why Does Moby-Dick Sometimes Have a Hyphen? (2015) - Tomte
http://www.smithsonianmag.com/smart-news/moby-dick-has-mysterious-hyphen-180957512/?no-ist
======
bane
English hyphens are kind of one of the world's worst language features of all
time. They're supposed to indicate when two words are being joined together,
until people get tired of using the extra symbol and then just drop it
altogether and mush the words together into a proper Germanic compound word.

This can happen incredibly fast in linguistic terms -- anybody remember
"e-mail"?

Since compounding words happens naturally in English grammar, hyphenation is
some weirdo vestigial hangover from the times before English was written with
spaces and the "rules" are entirely arbitrary and up to whatever style guide
you happened to have studied in school.

In some bizarre twist of fate, hyphenation is on the decline and instead of
just compounding two words together like any decent Germanic language, some
style guides are encouraging people to keep the words separated with spaces,
coming a full 180 degrees from the original use of a mark to compound words
for clarity in texts made without spaces.

Is it "on-line", "on line", "online", how about "log-in", "log in", "login"?

It shouldn't go beyond notice that the hyphen seems to exist as a way to
prevent compounding in the proper Germanic way, but isn't needed at all for
Latin or Greek based compounds or neologisms.

Language prescriptivists can make a real mess of things and really screw the
languages up for the rest of us. Trying to Romanize English was a terrible
idea.

~~~
ghurtado
I agree with much of what you said, but this:

> "log in", "login"?

Is a bad example, because these two have taken on two slightly different
meanings: the spaced version is the verb, and the single word version is the
noun.

~~~
bane
It also turns out that English tolerates noun/verb homophones just fine, the
orthography doesn't change the pronunciation at all and it doesn't really
matter in this case.

~~~
ademarre
You sound like you know more about this than I do, but I find _login_ as a
verb distasteful and believe such usage should be avoided. What would you do
for the past tense? You'll decompose the word to its natural verb, _log_ , and
write _logged in_.

Also, I, for one, still favor _e-mail_ , but I'm definitely in the minority
there.

~~~
bane
I think the problem I have more is that most of this business hinders
communication by trying to establish rules that are orthogonal to the language
-- usually with some kind of prestige agenda towards Romanticizing English.
Hyphens to compound words were simply a convenience and clarification mark for
a time before we used spaces. We use spaces now, hence we don't need hyphens
anymore to compound words.

What we do need is a more reasonable set of conventions that are well
harmonized with the mechanics of the language.

e.g. Shall we use "login" as a verb? Then we're going to get verb tenses like
"logined" and "logining". Are we, collectively, okay with that? Then fine,
we'll use that.

If we don't like that then we won't compound the words in the verb usage and
continue on with "logged in" and "logging in".

But then we'll have this weird case where the verb "log" almost always means
"to keep a record of", _except_ when followed by "in" or "out". But languages
tend to not like this kind of exceptionalism and we'll probably be in a state
where we keep evaluating just compounding them and applying the existing
tensing rules.

~~~
ademarre
Personally I prefer _sign in_ over _log in_. Partially because _to sign_ seems
to carry a stronger connection to the intended meaning, _to authenticate_ ,
than _to log_ does.

~~~
evincarofautumn
It’s the same metaphor—you’re signing the (virtual) logbook to get in.

~~~
ademarre
Good point, it is the same metaphor, but signing is the essential action. What
do you do with the log book? You _sign_ it.

Another reason I prefer _sign in_ is because there's less discord about its
usage. I have never seen anyone try to write _signin_. Maybe they'll hyphenate
it, but even then people seem less inclined to use _sign-in_ as a verb
compared to _login_.

~~~
grzm
My general rule (I don't remember where I picked it up. Maybe the Chicago
Manual of Style?) is that the verb form is that the hyphenated or single-word
form is the noun or adjective, and the unhyphenated form is the verb.

\- He will log in to the system.

\- What's your login?

\- Please sign in.

\- That's the sign-in table over there.

Along these lines, does the button/link describe the action (click the button
to _log in_ ) or the type of button (the _login_ button).

The question of whether to to use sign in or log in is separate.

I go back and forth on prescriptivist vs descriptivist versions of language,
though at the end of the day, languages that are in use change. I think it
makes sense to create the equivalent of a stylebook for a publication or site
so that there's consistent usage (prescriptivist), but understand that there
are going to be inconsistencies across the use of language as a whole
(descriptivist).

------
djsumdog
So when I finish a book, I'll occasionally switch over to Moby Dick while I
figure out what book to start next. Over the course of like a year, I've made
it past the 50% point.

It's honestly a terrible book. The author is more obsessed with whales than
his characters. There are entire chapters dedicated to whether whales are
fish. Other chapters that describe every tiny detail about the whaling
industry.

I mean I guess it's good if you want to understand historical whaling. But
it's hardly an enjoyable read.

~~~
colechristensen
There's a big different between "a[n objectively] terrible book" and "not
something I like".

------
wanderr
WTF with the auto playing video on mobile when you scroll down? I guess I'll
be avoiding smithsonianmag links...

------
mpclark
TLDR: We don't know

...and, let's face it, nobody cares. Move on, dear reader.


Show HN: OpinionatedC – Because ObjC should have inherited more from Smalltalk - Rockslide
https://github.com/leoschweizer/OpinionatedC

======
Rockslide
Op here.

First of all, let me say that I'm totally aware that with Swift lurking around
the corner, Objective-C is far from being the cool kid on the block. However,
the latter is not going away anytime soon, and as long as Objective-C code has
to be written and maintained, there is a need to produce readable and succinct
code.

During the past year, I've basically worked full time with Objective-C. Since
I use the excellent ComponentKit (Objective-C++) to build app UIs, it wasn't
really practical to switch to Swift. So I was sitting there, stuck with
Objective-C, and coming from a Smalltalk background, I couldn't help but
notice the influences it took on Objective-C. But I also couldn't stop
noticing where brilliant design decisions didn't find their way from Smalltalk
to the Apple world.

That's why I created OpinionatedC.

The thing I was missing the most was the super-immersive and highly-consistent
Smalltalk collection API. In Smalltalk, most of the time it doesn't really
make a difference if you work with an Array, an OrderedCollection, a Set or
even a String. In ObjectiveC, it does. That's why the focus of OpinionatedC is
clearly on collection extensions at the moment.

P.S.: I'm aware of many of the alternative libraries that offer a similar
feature set, like Undersocre.m or ObjectiveSugar (or even ReactiveCocoa -
which is great but a really big dependency if you just want the kind of
extensions offered by OpinionatedC). However, none of those did really
convince me. Don't get me wrong, they are great libraries, and badmouthing
them is the last thing I want to do. But ultimately, I decided to build my own
alternative anyway ;)