Some Obscure C Features - <AUTHOR> https://multun.net/obscure-c-features.html <comment><USER2> In numerical analysis, "Hexadecimal float with an exponent" is not an obscure feature, it's a really nice one! If you want to communicate to somebody an exact number that your program has output, you need to either tell them the decimal number to enough digits + the number of digits (i.e., "Float32(0.1)", which is distinct from "Float64(0.1)"), or you can tell them the same number in full precision in binary, in which case the floating-point standard guarantees that that number is exactly correct and does not depend on how you interpret it. It's really nice for testing numerical code, especially with automated reproducible tests. Completely unambiguous, and I wish more languages had that (I saw the feature in Julia first).

<comment><USER3> I wish Javascript, etc. had hexadecimal floats. It's annoying to worry about whether different implementations might parse your numbers differently, worrying about whether you need to write down 15 or 17 decimal digits, ...

Often the numbers (e.g. coefficients of some degree 10 polynomial approximation of a special function) are not intended to be human-readable anyway. Such values were typically computed in binary in the first place, and the only place they ever need to be decimal is when written into the code, where they will be immediately reconverted to binary numbers for use.

<comment><USER4> I mean, it's not too difficult to add them. You can parse, shove your result into a data view, Uint32Array, or whatever, then turn that into a Float64Array.

<comment><USER3> Fair enough. You can also just base64-encode (or whatever) a big block of binary data. But having built-in support for hex floats would be nicer.

</comment></comment></comment></comment><comment><USER5> The preprocessor trick of passing function macros as parameters is not that obscure. I have seen it used and I've used it myself. It is very useful when you have a list of static "things" that you need to operate on.

Say I have a static list of names and I would like to declare some struct type for each name. I also would like to create variables of these structs at some point, and I would always do so for the entire block of names. You could do something like this:

        #define apply(fn) \
            fn(name1) \
            fn(name2) \
            fn(name3) \
            ...
            fn(nameN)

        #define make_struct(name) struct name##_t { ... }
        #define make_variable_of(name) name##_t name;

        ...

        apply(make_struct);  // This defines all the structs.

        void some_function(...) {
            apply(make_variable_of);  // And this defines one variable of each type.
        }

Yes, it is not pretty (it is the C preprocessor after all), but it can be very useful and clean.

<comment><USER6> I would call that the X macro pattern, but the wiki article doesn't agree that it should pass the `fn` as the argument. Not sure if that's important.. [https://en.wikipedia.org/wiki/X_Macro](https://en.wikipedia.org/wiki/X_Macro)

<comment><USER5> Maybe at some point macros could not be passed as arguments? I honestly don't know. Passing it as a parameter avoids all that define/undefine business.

</comment></comment></comment><comment><USER7> Most of these are due to the cruft added in C99 and later.

Compile-time trees are possible without compound literals.

More than twenty years ago, I made a hyper-linked help screen system a GUI app whose content was all statically declared C structures with pointers to each other.

At file scope, you can make circular structures, thanks to tentative definitions, which can forward-declare the existence of a name, whose initializer can be given later.

Here is a compile-time circular list

       struct foo { struct foo *prev, *next; };

       struct foo n1, n2; /* C90 "tentative definition" */

       struct foo circ_head = { &n2, &n1 };

       struct foo n1 = { &circ_head, &n2 };

       struct foo n2 = { &n2, &circ_head };

You can't do this purely declaratively in a block scope, because the tentative definition mechanism is lacking.

About macros used for include headers, those can be evil. A few years ago I had this:

       #include ALLOCA_H  /* config system decides header name */

Broke on Musl. Why? ALLOCA_H expanded to <alloca.h>. But unlike a hard-coded #include <alloca.h>, this <alloca.h> is just a token sequence that is itself scanned for more macro replacements: it consists of the tokens {<}{alloca}{.}{h}{>}. The <stdlib.h> on Musl defines an alloca macro (an object-like one, not function-like such as #define alloca __builtin_alloca), and that got replaced inside <alloca.h>, resulting in a garbage header name.

<comment><USER8> I haven't heard of "tentative definitions" before. Couldn't you just replace it with a regular declaration i.e.

        extern foo n1, n2;

Is there any benefit of tentative definitions over this?

<comment><USER7> Yes; the "extern" is potentially confusing when the definition is located in the same file below. They usually inform the reader of the code to look in some other file for the definition, and usually appear in header files.

</comment></comment></comment><comment><USER9> I was reading the source code for a NES assembler written in pre-C99 C, and there was an odd C feature used in it that I haven't really seen anywhere else.

It was before C had built-in booleans and the author had defined their own, but true was:

        void * true_ptr  = &true_ptr;

true_ptr is a pointer to itself. So however many times you deference it:

        printf("%p\n", true_ptr);
        printf("%p\n", &true_ptr);
        printf("%p\n", *((void**)true_ptr));
        printf("%p\n", *((void**)*((void**)true_ptr)));

You get the same pointer:

        0x5555fefe715b
        0x5555fefe715b
        0x5555fefe715b
        0x5555fefe715b

I still think that it's neat that, even with ASLR, you have an address at compile time that you know won't collide with address space of malloc results, or the address space of your stack.

Also you can declare the pointer as const and the value it points to as const and, if your kernel faults on writing to readonly memory pages, you get a buggier version of a NULL pointer that only segfaults on write.

Also it takes a second to figure out why the position of the const matters even though the pointer's value is the value of the pointer, and why only one of these segfaults on write:

        const void * const_pointer = &const_pointer;
        void * const const_value   = &const_value;

<comment><USER10> I've used this feature to create constants that are unique IDs.

<comment><USER11> Wouldnt count macro work as well?

<comment><USER10> I think that would be per file/translation unit. These values are unique across a linked binary.

</comment></comment></comment></comment><comment><USER12> No mention of trigraphs? They are one of my favourite obscure C language features that I've never used.

Excerpt from GCC man page:

      Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
      Replacement:      [    ]    {    }    #    \    ^    |    ~

Missing backslash on your keyboard? No problem, just type ??/ instead.

<comment><USER13> Related to trigraphs are the alternative logical operator keywords like `and` and `or`. I'm surprised people don't use them more often because they're nicer to read than && and ||. In C, you must #include <iso646.h> but I think they're standard keywords.

C++ code example on Godbolt: [https://godbolt.org/z/ED6tXK](https://godbolt.org/z/ED6tXK)

[https://en.cppreference.com/w/cpp/language/operator_alternat...](https://en.cppreference.com/w/cpp/language/operator_alternative)

<comment><USER14> Hmmm... I would not prefer using "and" and "or" because that syntactic sugar obscures whether the bitwise or logical operations are intended. You get really used to reading && and || as "and" and "or" in your head after the first two decades of C programming : )

</comment></comment></comment><comment><USER15> A more obscure feature is the uncommon usage of comma operator. We often use the comma operator in variable declaration and in for loops. But it can also be used in any expression.

For instance, the next line has a valid C construct:

       return a, b, c;

This is particularly useful for setting variable when retuning after an error.

       if (ret = io(x))
           return errno = 10, -1;

The possibilities are endless. Another example:

        if (x = 1, y = 2, x < 3)
         ...

But the comma operator really shines when used in conjunction with macros.

<comment><USER16> The comma character as a token in variable is decalararions is not the same thing as the comma operator.

<comment><USER15> You are correct. My mistake.

</comment></comment></comment><comment><USER17> All craziness but then:

>a[b] is literally equivalent to *(a + b).

Is this obscure? I thought that's pretty much the first thing you learn about arrays in C? It's pointers, all the way down.

<comment><USER18> Not really. The way it's usually introduced is that you get the same "reference" both ways. The fact that it's _literally_ equivalent, and especially that there's no pointer type requirement on the left-hand-side, with the consequence of allowing ridiculous code like 2[array], is pretty obscure. Even more so because the equivalence _doesn 't_ work that way in C++ -- in general, features of C that _aren 't_ available in C++ tend to be not as widely known.

<comment><USER19> >Even more so because the equivalence doesn't work that way in C++

What do you mean? As far as I remember, C++ is very similar in this respect when it comes to array and pointer types.

<comment><USER18> Only for the most primitive types, though. For anything else, operator[] is used in C++ instead, without an operator+ fallback. So for example, if your array is a std::array instead of a C-style array, saying 1[array] will not work.

</comment></comment></comment></comment><comment><USER20> These examples actually were more obscure than the usual list.

<comment><USER21> Yeah, I did know 3 of them[1] but the rest were completely new to me! Not that I'm an expert or anything, but I tend to enjoy reading about obscure C features. That sizeof can have side effects is... a bit crazy although the multiple compatible function declarations are horrifying.

[1] Array designators, Preprocessor is a functional language and a[b] is a syntactic sugar.

</comment></comment><comment><USER22> A little off-topic but here is a cool piece of code about a special case in C:

        void (*foo)() = 0;
        void (*bar)() = (void *)0;
        void (*baz)() = (void *)(void *)0; // Error

Can you guess why compilers reject the last line?

<comment><USER19> Only the first two expressions on the right are null pointer constants (integral constant expression with a value of 0, optionally cast as a void *), that can be used to initialize all pointer variables, including function pointers. The last one is merely a null pointer (to void), that can't be implicitly converted to a pointer to a function.

C++ has stricter rules for null pointer constants, and thus only the first version is valid C++.

</comment></comment><comment><USER23> Although calling the preprocessor "functional" is being too pleasant. The C preprocessor was always a text substitution system, so macro as parameter is not that "obscure". Of course, I may have missed something subtle in the example.

It's also not clear how to use that preprocessor example.

<comment> augusto-moura see [http://conal.net/blog/posts/the-c-language-is-purely- functio...](http://conal.net/blog/posts/the-c-language-is-purely-functional)

old but gold

<comment><USER24> >The C ADT is implemented simply as String (or char *, for you type theorists, using a notation from Kleene)

Still makes me laugh

</comment></comment></comment><comment><USER25> sizeof actually doesn't evaluate its expression for side effects most of the time; only if the operand is a variable-length array is it evaluated.

<comment><USER26> And it's not even entirely clear what that means.

The standard says:

"If the type of the operand is a variable length array type, the operand is evaluated; otherwise, the operand is not evaluated and the result is an integer constant."

But what does it mean to evaluate the operand?

If the operand is the name of an object:

        int vla[n];
        sizeof n;

what does it mean to evaluate `n`? Logically, evaluating it should access the values of its elements (since there's no array-to-pointer conversion in this context), but that's obviously not what was intended.

And what about this:

       sizeof (int[n])

What does it mean to "evaluate" a type name?

It's not much of a problem in practice, but it's difficult to come up with a consistent interpretation of the wording in the standard.

<comment><USER25> > If the operand is the name of an object [...] what does it mean to evaluate > `n`?

When you say "n", syntactically, you have a primary expression that is an identifier. So you follow the rules for evaluating an identifier, which will produce the value. C doesn't describe it very well, but the value of the expression is the value of the object. In terms of how it is implemented in actual compilers, this would mean issuing a load of the memory location, which is dead unless `n` is a volatile variable.

<comment><USER26> Sorry, in the first example I meant to write (adding a declaration and initialization for n):

        int n = 42;
        int vla[n];
        sizeof vla;

not `sizeof n`). (It doesn't look like I can edit a comment.)

Logically, evaluating the expression `vla` would mean reading the contents of the array object, which means reading the value of each of its elements. But there's clearly no need to do that to determine its size -- and if you actually did that, you'd have undefined behavior since the elements are uninitialized. (There are very few cases where the value of an array object is evaluated, since in most cases an array expression is implicitly converted to a pointer expression.)

In fact the declaration `int vla[n];` will cause the compiler to create an anonymous object, associated with the array type, initialized to `n` or `n * sizeof (int)`. Evaluating `sizeof vla` only requires reading that anonymous object, not reading the array object. The problem is that the standard doesn't express this clearly or correctly.

<comment><USER27> Your example is unnecessarily tame. The value of n need not be known as compile time, e.g. it may be input by the user at runtime.

</comment></comment></comment></comment></comment><comment><USER28> The article has examples of array parameters like

        int b[const 42][24][*]

but you can get more fun with variably modified array parameters instead of just constants like 42. For example,

        double sum_a_weird_shaped_matrix(int n, double array[n][3*n]) {
            double total = 0;
            for (int x = 0; x < n; ++x) {
                for (int y = 0; y < 3 * n; ++y) {
                    total += array[x][y];
                }
            }
            return total;
        }

has a variable and a more complicated expression in those positions.

But those variably modified parameters can have arbitrary expressions in them, like

        int last(size_t len, int array[restrict static (printf("getting the last element of an array of %zu ints\n", len), len--)]) {
            return array[len];
        }

C++ denies us this particular joy which could have made function overload resolution even more fun.

<comment><USER29> Another neat note IIRC is that array parameter sizes don't actually do anything, they just are there for semantic purposes and get treated as raw pointers.

So if you do

        void func(int x[10]);

You're free to call it like

        int k[5];
        func(k);

And you won't get any warnings. Unsettling!

<comment><USER28> That's what the static keyword means in those array declarators.

        void func(int x[static 10]);

must be called with an argument that is a pointer to the start of a big enough array of int. I can't get recent GCC or Clang to warn on violations of this, though.

<comment><USER30> There are cases where the compiler _can 't_ enforce it:

        void foo(int *p)
        {
          func(p);
        }

How can the compiler know if `p` points to space for 10 integers?

</comment></comment></comment></comment><comment><USER31> A nice but I guess more of a linker feature is if you declare a function as __weak__, you can check it at runtime for == NULL to determine if the application was built with the function defined.

<comment><USER32> I would say most interesting linker features are non standard, so outside of the scope of this article :/

<comment><USER33> True, however, it is precisely the stupid linker tricks that make C such an interesting and powerful language nowadays. Weak symbols. Interposition (LD_PRELOAD). dlopen() and friends. Filters. Direct binding / versioned symbols. ELF semantics in general (which make the use of one flat symbol namespace safer).

</comment></comment></comment><comment><USER34> One of the more obscure, yet often employed, "features" is to use something else as a C preprocessor.

</comment><comment><USER35> This was c++ and not C, but it is a preprocessor pitfall.

I needed to compare and older and newer version of some file from the RCS, so I saved temporary copies named "new" and "old". diff told me what I needed to know, but I failed to delete those temp files.

Hours later I typed "make" to build my program and got all sorts of errors deeply nested in some library function. Did someone misconfigure the server I was on? OK, maybe it is an incremental build problem? etc. It took took long to figure out the problem.

It turns out that during compilation, as one of the library .h files was being scanned, it contained #include <new>, which picked up the junk file in my working directory instead of using the C library.

</comment><comment><USER36> I found the most interesting one to be compile time trees.

Does anyone have any good use cases for it?

<comment><USER37> I don't like to think of it as compile-time trees. It basically only allows you to construct complicated structures but doesn't allow you to examine them at compile time (that would require constexpr functions in C++; can't be done in C). It's honestly not a very impressive feature.

</comment></comment><comment><USER38> Effectful sizeof, what a delightful _feature_!

Though the compile-time magic with structs and functional macros are so tempting that I feel like it's high time to do some C.

</comment><comment><USER39> > VLA typedef ... I have no clue how this could ever be useful.

I used this feature recently. I had several arrays of the same size and type, and the size was determined at runtime. The VLA typedef let me avoid duplicate type signatures which I find more readable.

        int N = atoi(argv[1]);
        typedef int grid[N][N];
        grid board;
        grid best;
        grid cache;

</comment><comment><USER40> No mention of the downto (-->) operator?

      int x = 10;
      while (x --> 0) {
        printf("%d ", x);
      }

<comment><USER41> That's just the decrement operator and inequality operator!

<comment><USER42> not inequality, rather the "greater-than" operator.

"!=" would be the inequality operator... :-)

</comment></comment></comment><comment><USER43> > a[b] is literally equivalent to *(a + b). You can thus write some absolute > madness such as 41[yourarray + 1].

Wow. This has to be the best C obscurity that I've ever seen.

<comment><USER32> Come on, that might not be obscure for a C ninja master like you, but I'm pretty sure many people had no idea ;-)

Notice how the list is sorted from actually obscure to less interesting.

I even took the time to write a pseudo disclaimer above this one :D

<comment><USER43> I wasn't being ironic :)

</comment></comment></comment><comment><USER44> The WTF part seems useful. E.g.

type quaternion float[4];

quaternion SLERP = {1.0, 0, 0, 0};

<comment><USER37> Did you mean

        typedef float quaternion[4];

?

That's not a VLA.

</comment></comment><comment><USER45> Hell, c11 has ghetto generics.

</comment><comment><USER46> Are we calling these features, now?

<comment><USER47> Most of the examples listed (hex floats especially) are very much features.

</comment></comment><comment><USER48> Here is an obscure c feature:

      int main()
      {
         int a = 8;
         {
           int a = 4;
           /* a is only scoped to this block */
         }
         printf("%d", a); /* prints 8 */
      }

It is also why C++ is not a strict superset of C

<comment><USER25> If you want to tell if your compiler is C or C++, run this program:

       #include <stdio.h>
       int main() {
         printf("%d\n", sizeof('a'));
       }

It's the second thing C++ mentions in its list of incompatibility with C (the first is "new keywords").

A more obscure difference is this program:

       int i;
       int i;
       int main() {
         return i;
       }

It's legal C but not legal C++.

<comment><USER49>
        int main() {
          return 4//**/2
          ;
        }

<comment><USER19> Line comments have been part of the C language for a long, long time (added in C99); so much so that, especially when discussing the subject on the internet, more and more often they predate some of the younger participants.

<comment><USER50> Personally, I didn't know that C lacked line comments until I ran into a project that compiled with -std=c89 -pedantic.

<comment><USER26> C doesn't lack line comments. The obsolete 1989/1990/1995 version(s) of C did lack line comments.</comment></comment></comment></comment></comment></comment>


Scrum – False God of Innovation - <AUTHOR> http://blog.aha.io/index.php/scrum-your-false-god-of-innovation/

<comment><USER2> Just a few points about Scrum that you have wrong ...

* Scrum is not a methodology or a process, just a framework

* There is no product manager role in Scrum, but there is a Product Owner role

* There is a big difference between "ownership" and "management", which could be the source of some of the dysfunction you are seeing

* There is no formula for a Product Owner to follow. Remember, Scrum is just a framework, and the Scrum Team gets out of it what it puts into it.

* You make the POs sound like victims by saying "... have not been able to really do anything about it". I think they were the wrong person for the job.

* Product Owners should not attend the daily Scrum. It's just for the development team. Instead they could spend this time innovating!

* A product's vision is manifested in a properly refined backlog.

* It sounds like the first two struggles you listed (MVP and complaining customers) were caused by the PO being ineffective. The next three are just aspects of a PO's job responsibilities

* Effective POs should be focusing on competitive research, market assessment, positioning, go-to-market readiness, etc.

* I'm not sure where you came up with the notion that POs should be heads down. The Scrum Guide describes just the opposite.

I do agree with your antidote at the end, that a PO should start with the goal, be transparent, and trust the dev team. If your article just these points, readers might find it valuable.

I know you want to sell your product, but if you are going to bash Scrum in the process, you might want to up your game, and your facts.

Richard

<comment><AUTHOR> Thanks for taking the time to respond.

</comment></comment><comment><USER3> This is what happens when Scrum is not treated as a framework, but as the Bible. The whole point around agility (Including the Scrum framework) is Inspection + Adaption. Scrum does not solve problems - it merely brings them out in the open. It's a tool - not the goal. It's driven by the value, not the process.

A seasoned agilist would ask you to build a great product with a great value even if it breaks the process. If somebody asked you to follow Scrum to the dot at the expense of the value then s/he has a problem in understanding agility.

Wrong implementation of Agile is worse than the wrong implementation of a traditional approach!

<comment><AUTHOR> Agreed. It's fundamental to address the "whys" and "whats" in addition to the "hows."</comment></comment>


How to reduce draw calls in Unity (also for Unity 5) - <AUTHOR> http://www.pencilsquaregames.com/2015/01/reducing-draw-calls-also-named-setpass-calls-on-unity5/

<comment><AUTHOR> Hey Guys,

I've created a small tutorial showing how to reduce draw calls in Unity, it works for any type of shader and if you combine the meshes it also will work on Unity free.

any feedback, appreciated ;)</comment>


L.A. temporarily suspends Uber's permit to rent out electric scooters and bikes - <AUTHOR> https://www.latimes.com/california/story/2019-11-04/los-angeles-suspends-uber-jump-scooters-bikes-data-privacy <comment><USER3> I guess I don't see any way a dockless bike/scooter rental scheme can be compatible with privacy. Their need to know where available bikes are, and to be able to detect thefts makes it hard to imagine they could work without GPS tracking.

And as soon as you know who rented what bike when, and where each bike went, you're going to start knowing customers' homes, workplaces and places of worship.

Although the government _and_ uber knowing this data is less private than uber alone knowing, we all know uber doesn't give a shit about customer privacy. Personally I'd be much more worried about uber having the data in the first place than about the government also having the data.

<comment><USER4> Would you feel the same way if Uber complied privately and the article read:

"Uber shares real-time rider information with government agency"?

It seems like Uber can't win. If they share information, they're violating the trust and privacy of their riders. If they don't they still don't care about privacy but they're now also flouting regulators.

<comment><USER5> > It seems like Uber can't win.

Which is fine. They chose to collect the information, and they are facing a bad look following that decision.

Of course, their business model might not work without the collection, but not every business model is guaranteed to look good.

<comment><USER6> But Uber is offering a service that by its very nature requires that you expose the service provider to information you may wish to keep private. How is this the service provider's fault? It's not like they're going out of their way to add tracking into something that doesn't require it.

Like this is a little nuts, if you buy one of those GPS trackers for your kids you don't get to act shocked when you find out the company has their location records. You get to be angry if they use those records for anything other than providing you service but of course they have them.

<comment><USER7> If a service "by its very nature" does shady things, maybe that service should not be offered in the first place?

Critcizing users afterwards that they "can't act shocked" for having these things done to them is only playing a blame game.

<comment><USER8> This is a very daft take.

It's not even _remotely_ shady for a service to inherently involve knowing where you are. That's something that is true of every brick and mortar store, and indeed every cab driver. Yet the government doesn't demand that those businesses provide real-time feeds of information about the movements of their customers, and if the government _were_ to do so and they were to object on privacy grounds, we wouldn't take it to mean that their entire business model is inherently immoral and all shops should cease to exist.

</comment></comment></comment></comment></comment></comment><comment><USER9> The core issue is that ridership data is a key piece the cities need to craft a tax on ride-sharing, and to tailor the tax to help their financially challenged public transit entities. Uber knows that if they give up scooter use data the city will immediately request it for ride sharing as well. The privacy question conveniently aligns with Uber's position, but I doubt that this is Uber's core concern vs avoiding every major city banging on the rideshare piñata to fund the gigantic debt service payments and generous benefit programs for their underutilized public transit systems.

<comment><USER10> You are talking about the city that has half its space dedicated to free street parking and a bunch of highways cutting through it as if it's some sort of modern mobility policy paragon just trying to correctly price out externalities.

No, whatever Ubers goal in _not doing this_ , I'm sure the motivations of local L.A. politicians are forever more twisted. These people wouldn't know public transport if a bus ran them over. Which is unlikely to happen, given their average speed of 9 mph.

<comment><USER11> 1.2 million ride LA metro a day.

<comment><USER12> And many many many more don't. It's the second largest city in the US.

</comment></comment></comment></comment><comment> the-dude Headline misleads, L.A. intends to suspend Jump, an Uber subsidary. They have time to appeal until Friday.

<comment><USER13> Yeah, I was picturing the chaos if the UBER app suddenly stopped working all of a sudden.

</comment></comment><comment><USER14> In case folks are curious about the underlying technical details, LADOT along with the Open Mobility Foundation (OMF) built the Mobility Data Specification (MDS) which are "RESTful APIs used to specify the digital relationship between mobility as a service Providers and the Agencies that regulate them."

API Spec: [https://github.com/CityOfLosAngeles/mobility-data- specificat...](https://github.com/CityOfLosAngeles/mobility-data- specification/tree/dev/agency)

Uber, as they do, is refusing to comply with laws/provide data that would enable local governments to actually regulate them. As I understand it, the pilot phase was for Bikes/Scooters, but the intention is to require use of similar APIs by car based rideshare companies in the future. Which explains some of Uber's resistance despite this only currently covering JUMP Bike Share.

There's a number of other cities (NYC, Miami, Philly, SF, SJ, SEA, etc) involved with OMF/MDS. LADOT is one of the first implementations but they aren't doing it all in house. Much of the design/development of the mobility API spec and open source implementation[2] has been contracted out to Lacuna.ai (via Ellis & Associates, a wholly owned subsidiary)[3].

[2]: [https://github.com/CityOfLosAngeles/mds- core](https://github.com/CityOfLosAngeles/mds-core)

[3]: [http://clkrep.lacity.org/onlinecontracts/2019/C-130956_c_7-2...](http://clkrep.lacity.org/onlinecontracts/2019/C-130956_c_7-26-19.pdf#page=10)

</comment><comment><USER15> Of all the public-goods usurped for private profit companies recently, I find the scooters to be the most intrusive.

Scooters on sidewalks are dangerous and should be banned.

We have explicit laws against skateboarding and riding bicycles on sidewalks in most communities. For bicyclists in San Francisco: "It's illegal to ride on the sidewalk if you are over the age of 13. (SF Transportation Code Sec. 7.2.12)" [https://sfbike.org/resources/bicycle-law/rules-of-the- road/](https://sfbike.org/resources/bicycle-law/rules-of-the-road/)

Yet, everyday you can find scooters on sidewalks wherever scooters are available. Toddlers use sidewalks - they walk in a random walk. Hearing impaired, sight-impaired, mobility-impaired people use sidewalks. Seniors use sidewalks. These people do not expect 180lb adults riding at 5 to 10mph right in their face. The kinetic energy and momentum at 10mph of an adult is considerable.

Falls for anybody can lead to bone fractures. Even more so for seniors. Hip fractures in particular can be fatal for seniors. [https://medicalxpress.com/news/2018-06-hip-fractures- elderly...](https://medicalxpress.com/news/2018-06-hip-fractures-elderly- death-sentence.html)

Scooters should not be allowed on sidewalks.

<comment><USER16> Now do cars.

<comment><USER17> Cars aren't allowed to drive down sidewalks in any jurisdictions I'm aware of.

<comment><USER16> Right, because they have multiple dedicated lanes that are designed to drive in. Bikes and scooters don't have the same luxury, so they have to choose between risking getting killed by riding among cars, or riding on the sidewalk. The solution is obviously to build safe infrastructure for scooters.

</comment></comment></comment></comment><comment><USER18> The thing is, these scooter APIs are getting reverse engineered pretty often. (I contribute to a github repo[0])

So Uber can't really hide the data if they're in noncompliance.

St Louis has this clause written in their scooter legislation that a certain number of scooters must be in certain regions for the purpose of equity. I'll tell you it's a damn lie as far as the data is concerned. No one seems to care though. It was written in so politicians could advertise it as a good thing, but they refuse to enforce it because of the little revenue or attention the scooters bring. I don't really care where they put the scooters, but it still pisses me off both that scooter companies are seemingly above the law and that some politicians are lazy cheats.

[0] [https://github.com/ubahnverleih/WoBike](https://github.com/ubahnverleih/WoBike)

<comment><USER19> WoBike is great, and I've contributed to that repo too, but that data is quite different from data in question in this article. Unless I'm mistaken, most of the reverse engineered APIs (and public ones in municipalities that mandate them) are for _available_ scooters. This article is about scooter location while it's being ridden around by a renter.

<comment><USER18> In the linked article, which I'm assuming this refers to:

> The city will require companies to share information on the start point, end > point and travel time of each bike or scooter trip within 24 hours after it > ends, and whether the vehicle entered zones where riding or parking are > restricted.

I know for at least all of the scooters I've tracked, you can identify each scooter by a unique ID. Assuming you pull your data on a minute-by-minute basis, you can retrace the start and end of a scooter ride.

For example, Scooter 123 is available at x,y at 12:05, It's not available from 12:06 to 12:15. It becomes available at 12:16 at x,y. The ride was approximately 11 minutes and started and ended at those two points.

I don't think the city wants real-time data, and frankly I don't think these companies would be willing or even capable of producing it.

</comment></comment></comment><comment><USER20> > data are necessary to figure out which companies are flouting the permit > program's rules

Sending all ride data seems excessive. A few photographs taken by city officials showing scooters in wrong places should do the trick.

<comment><USER21> There's a cap on number of scooters and bikes each company can deploy. That's what LA is trying to enforce by asking for data.

FTA

"Los Angeles officials have said the data are necessary to figure out which companies are flouting the permit program's rules, including caps on the number of vehicles and bans on riding in certain areas. They have also argued that the companies cannot be trusted to regulate themselves."

<comment><USER22> Require hard to counterfeit licensing stickers for each vehicle that need to be re-applied to each scooter yearly. Sell a limited number of numbered stickers. If you find a vehicle without a sticker, you know they aren't following the requirements.

To prevent sticker tampering, stickers can be placed behind a transparent piece of tempered glass or forego stickers entirely and use bolted on metal plaques.

</comment></comment></comment><comment><USER23> This is preposterous. Imagine government requiring any business to delivery real time data on customer behavior, from doctors to restaurants, Walmart to dispensaries.

The Fourth Amendment of the US Constitution is about privacy FROM GOVERNMENT INTRUSION, which is precisely what this is, an intrusive act on the part of government.

Why don't they devote their time and effort to actually fixing the crumbling infrastructure here? It's a joke. There are third world countries that have better streets and highways than we have in certain parts of Los Angeles.

<comment><USER24> Fourth amendment deals with "unreasonable" search and seizure. It could be argued that municipalities requesting data on usage of infrastructure they must maintain, fund and plan for is not unreasonable.

<comment><USER25> By that metric, requiring that all cars report their location live to the municipal government would be OK - after all, that car is using the roads they maintain. For that matter, why limit it to cars? Require that every citizen report their GPS location 24/7 - if you're out of the house you're using their roads or sidewalks, and if you're in the house you're using city water/power/sewer.

<comment><USER24> Indeed, I don't entirely disagree.

</comment></comment></comment></comment><comment><USER26> Don't taxi, bus, and trucking companies do this? I always thought any public transit actor had to do this to provide data to be used by DoT for traffic engineering. Like I know that traffic engineers tweak limits of public transport asset density as part of planning traffic flows.

I may be wrong, but I'm pretty sure this is just Uber getting rolled into the infrastructure they should have been participating in anyway.

I'm not terribly thrilled about the implications; but it's also not surprising at all that a transit service provider would have to guarantee to a locality that they can locate their assets.

<comment><USER22> > it's also not surprising at all that a transit service provider would have > to guarantee to a locality that they can locate their assets.

That requirement can easily be met by occasional random spot checks a few times a month. There's no need for realtime reporting.

</comment></comment><comment><USER27> Why GPS? Why not low tech transponders? They're precise enough to help you locate a scooter but too imprecise for navigation or tracking the exact path someone took. Especially if they don't ping frequently.

<comment><USER28> Partly because some cities have no-ride zones where scooters and bikes are banned outright or supposed to be speed limited.

The boardwalks in some CA cities fall into this category. You can ride in the street parallel at whatever speed you want. But on the boardwalk, you're capped at X mph (usually <10mph, if I'm remembering correctly).

Yes, the city could just use traffic enforcement to issue tickets. But, I'm inclined to have software enforcement and not hire more traffic cops.

<comment><USER29> > But, I'm inclined to have software enforcement and not hire more traffic > cops.

I can contest what a police officer is claiming in a court. With automated systems? Good luck.

If society wants to enforce traffic laws, it should hire more cops, not hackable AI blackboxes.

<comment><USER28> The software doesn't issue you a ticket, so there's nothing to contest. It simple slows the scooter down in the restricted zone. And if the software is wrong, you stop using the system, and move to a vendor that makes it work.

Anyway, not claiming this is ideal. Just sounds (without much thought) like a better solution than traffic cops.

<comment><USER30> Maybe if we're going to go down this route, we should have these systems in our cars, too.

<comment><USER24> No one wants to go there because _freedom_ but I (reluctantly) agree. There might be safety considerations, too, but I'm guessing they are mostly edge case type issues

<comment><USER31> There are massive safety implications.

We expect pressing the gas pedal to have a predictable outcome.

Subverting this expectation is potentially quite dangerous.

Consider that someone might temporarily exceed the speed limit while passing, legally, in the oncoming traffic lane. Then this system kicks in, they can't pass, and get hit by oncoming traffic because they're pinned by the car they tried to pass.

<comment><USER28> Can you legally exceed the speed limit to pass? I don't believe you can (at least not in most locales).

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER32> Uber doesn't really have a leg to stand on. Cities use traffic data to determine things like traffic light synchronisation, where to build or expand roads, speed limits, etc...

In this case, they're allowing electric personal vehicles on city sidewalks, information would be useful to determine if they should create bike lanes, change traffic signal patterns, etc... Not to mention, at the end of the day, cities do have control over what drives where, how fast, etc...

</comment><comment><USER33> The general conversation of the comments here is confusing.

> Companies are required to transmit real-time data on all trips made within > the city, including the start point, end point and travel time.

This is not "real-time rider information" as mentioned by many comments, this is 'real-time scooter information'.

> Uber has resisted the rule for months, arguing, with the backing of several > data privacy organizations, that the city's policy constitutes government > surveillance. With minimal analysis, they say, the information could easily > reveal where people live, work, socialize or worship.

I don't understand. The city should know where you live, you pay taxes and utilities and I'm sure there is a whole mess of bureaucracy that knows where individual names live for different reasons. Are we worried about specific elements within the bureaucracy knowing certain information? Is this information only accessible by monitoring scooters and not available to said entity by getting it through other means (school district zoning and so on)?

> Los Angeles officials have said the data are necessary to figure out which > companies are flouting the permit program's rules, including caps on the > number of vehicles and bans on riding in certain areas. They have also > argued that the companies cannot be trusted to regulate themselves.

This makes sense, no one would expect a regulation with no ability for the enforcing agent to monitor to be followed.

> Companies such as Uber "generate and collect massive amounts of personal and > financial data," while the city "does not collect information specific to > individual riders beyond trip information," said Marcel Porras, the > Transportation Department's chief sustainability officer, in a letter to > Uber last week.

Yeah, that's pretty much what I expect from this situation, the whole dog and pony show that these rideshare companies put on seems like a farce.

I'm not happy with municipalities for a whole load of reasons, LA especially has an awful history in many domains. But there is no world in which I trust these rideshare companies MORE than I trust municipalities.

EDIT: I should add I'm sad that Uber(Jump) get to redefine the data privacy debate via their spokesperson and this journalist. I don't blame the writer, but it is absurd to validate claims like my second except above. I think this is gaslighting? If not, then related. Some PR moves to seed public expectation in this matter. They are implicitly defining this issue as something that is fundamentally different when the data is stored and collected by a corporation (them) to be sold and used however they desire vs utilization by entities in the public sector. I am happy to point people to a fantastic conversation on the "two" definitions of data privacy here:

[https://idlewords.com/talks/senate_testimony.2019.5.htm#two_...](https://idlewords.com/talks/senate_testimony.2019.5.htm#two_views)

<comment><USER34> > Uber has resisted the rule for months, arguing, with the backing of several > data privacy organizations, that the city's policy constitutes government > surveillance. With minimal analysis, they say, the information could easily > reveal where people live, work, socialize or worship.

I actually laughed out loud when I read this. Incredible that these companies have the audacity to take that stance.

"It is only we, the technocratic elite, that should be allowed to know where people live, work, socialize or worship, and to use that information to extract even more data and even more profit from these people. The city government should sweep the streets and mind its own business."

<comment><USER35> I'm confused that HN is suddenly enthralled with giving real time location data to the government. There was actually a recent Supreme Court case that extended Fourth Amendment protections to such data.

<comment><USER33> If that were the case:

> enthralled with giving real time location data to the government

Then I would completely agree with you, but as I point out in the first except of my original comment, this IS NOT the case. Maybe the reporting is wrong, and therefore I'm wrong, but I'm frustrated by the general consensus in this thread being what you just wrote. That is not the situation. And similarly, I'm frustrated by the implicit defense of ride share companies here. As I end my original comment, I distrust both municipalities and these ride share companies. I'm not enthralled by anything here.

</comment></comment></comment></comment><comment><USER36> Uber doesn't really have a say though, right? If the law says they need to provide the data, they need to provide the data.

</comment><comment><USER37> Feels like the buried lede is that all the other companies already sold out all the private information of their riders.

</comment><comment><USER38> This article is positioned like Uber / Jump can argue the matter and/or have leverage. Additional comments here act like Uber should be able to operate as they want. They do not and cannot. In order to operate legally as a business in a locality, you have to obey the law. If that law is sharing your data, you've gotta figure out a way to do that, or not operate.

Figure out a privacy notice for your LA Riders and add it to your EULA - <USER2> knows they've done this for less worthwhile purposes before. In this case, this is about sharing competitive information with the city that others might see. This is not a choice. Any language of upset from the company seems like hyperbole and not to be taken seriously.

If you think this is crazy, I'd ask you to take a look at liquor boards throughout the US. This data sharing agreement seems paltry to comply with by comparison.

<comment><USER39> I've never heard of a liquor board that required stores to deliver to the government a real time feed of who's buying what liquor. If such a policy were created, and BevMo announced they refuse to comply, I'd be fully in support of that despite my normal concerns about companies ignoring regulations.

It's not about the general principle here. If Uber's claim about deanonymization is accurate, this specific policy is PRISM level bad.

<comment><USER40> Is Uber a Retail Store? Does the Store leave their merchandise all over the neighborhood with GPS micro controllers on them?

This analogy is absurd.

As municipalities get more technically advanced, why shouldn't they have access to the same type of data or where these scooters are? How hard is it to open up an API?

This seems to be, how dare citizens impose a cost of doing business in their neighborhoods!

<comment><USER41> > why shouldn't they have access to the same type of data or where these > scooters are? How hard is it to open up an API?

They don't have the right to know where I go.

<comment><USER42> You as an individual I agree; there should be no disclosure of customers themselves. However, I do think the city deserves to know in real time where all the 30 pound lithium ion battery and motor, pieces of litter are.

<comment><USER43> I think it's more complicated than that though.

[https://www.latimes.com/local/lanow/la-me-ln-los-angeles- sco...](https://www.latimes.com/local/lanow/la-me-ln-los-angeles-scooter- surveillance-privacy-20190315-story.html)

> The data would not include a rider's name, but even in sprawling > metropolitan areas, paths between home, work and school are typically > unique, experts say. Someone with basic coding skills and access to the data > could easily connect a trip to an individual person.

> "This data is incredibly, incredibly sensitive," said Jeremy Gillula, the > technology projects director for the Electronic Frontier Foundation, a San > Francisco-based digital rights group.

</comment></comment></comment></comment></comment></comment><comment><USER44> LA should focus on its massive homeless problem. 50,000 people sleep on the streets every night in LA.

<comment><USER45> Remarkably, a government of the size and complexity of Los Angeles is able to do more than one thing at a time.

<comment><USER44> ah right. They can simultaneously fail business and the homeless. #concurrency</comment></comment></comment>


Donald Trump Won Because of Facebook - <AUTHOR> http://nymag.com/selectall/2016/11/donald-trump-won-because-of-facebook.html <comment><USER2> I think he won indirectly because of Facebook. The real powers behind the meme magic on Facebook were /pol/ and /r/The_Donald. This is evidenced by the amazing growth rate of /r/The_Donald and the huge traffic to and support from /pol/.

And I don't think misinformation won Donald the presidency. The main theme pushed by the two forums I mentioned was that Hillary and the DNC were extremely corrupt. Every new WikiLeaks release was scoured by /pol/; there were daily /cfg/ (Clinton Foundation general) threads on /pol/ in which tons of anons investigated the corruption of the Clinton Foundation and then made memes and organized social media movements about their findings.

It wasn't misinformation that won Donald he presidency, it was the organized effort of people trying to expose corruption. Whether the corruption was over- exaggerated is another story.

<comment><USER3> /pol is the core of the memetic power, doxing, psyops, and investigation

/r/The_Donald is much more public oriented

<comment><USER2> Yep. /r/The_Donald is essentially the main distribution channel of /pol/.

</comment></comment></comment><comment><USER4> On the Left, we used to make fun of Republicans for living in the Fox News bubble (Jon Stewart memorably dubbed it "Bullshit Mountain"), and how easily they were fooled by the constant stream of fake scandals (Death Panels! ACORN!). But this time we fell into our own bubble, hard. I'm sure conservatives in this thread will say we were in one the whole time, and maybe they're right. This election isn't Facebook's fault as much as humans' desire to believe what they want to believe.

<comment><USER5> > This election isn't Facebook's fault as much as humans' desire to believe > what they want to believe.

I like to say that humans are very efficient bias confirmation machines.

Of course, I may now just be saying this because your comment confirms my bias that humans are bias confirmation machines.

Objectivity - true objectivity - is _incredibly_ hard, and most people are deluding themselves if they think they're anything approximating objective (and I count myself in that number!), IMO. I want to believe that I'm objective, but my observation that just about nobody else seems to be very objective suggests that I'm not, either.

</comment></comment><comment><USER6> He won because the election was fair. Get over it. The election was democratic and that's that.</comment>


Infrastructure Secret Management Software Overview - <AUTHOR> https://gist.github.com/maxvt/bb49a6c7243163b8120625fc8ae3f3cd <comment><AUTHOR> I have submitted a question on this topic ([https://news.ycombinator.com/item?id=11623372](https://news.ycombinator.com/item?id=11623372)) a short while ago, since the only other overview I could find was from 2014. Following the sound of crickets, I went off and built my own overview and comparison of what's currently out there.

The gist also has a link to a feature matrix of various products.

Corrections and additions would be very welcome!</comment>


Show Us Your Production Code - <AUTHOR> http://say26.com/show-us-your-production-code

<comment><USER2> Not everyone has the luxury of owning the IP to their production codebase. If you want to start posting chunks of it online you're going to need a better excuse to give your boss than "I want to win an internet argument".

<comment><AUTHOR> It's not to win an argument but rather to share it with other developers (and get feedback). So your request to the boss will sound like "I'm hesitant if this piece of code is the best way to do it, can I show it to the world?"

<comment><USER2> Well, saying that might sound like you are suggesting you don't know what you are doing. Besides it's unlikely that you are going to get meaningful feedback based on one chunk of code without the context of all the other stuff it interacts with.

If that level of peer review is really important to you , then you would be best off releasing the source to your entire app.

<comment><AUTHOR> Have you been following all the Ruby discussions in the past few days? A single action from a complex controller in Basecamp would be enough for me to understand how 37 Signals are handling the not so skinny controller stuff.

It would be much more useful than seeing another 'create user and send email' stuff, which I see in almost every article about controllers.

<comment><USER2> Not really, but I don't think seeing a bunch of code with calls to hidden function would be all that useful.

It is simple enough to distill your approach down into some fictional code that can be easily understood. I do it all the time when I'm posting questions on Stack Overflow and don't want to stick the real code on there.

It might be nice to see some of their production code, but it doesn't really offer any value to them other than being able to fire a shot in an internet war.

</comment></comment></comment></comment></comment><comment><USER3> Are you not concern about many security issue with showing production code?

<comment><AUTHOR> Showing one controller action or model method will not compromise your application security.

I'm not saying people should put their application to github, just asking them to use real examples in their articles (like I did with MessagesController#create)

</comment></comment><comment><USER4> Perhaps the reason is that the actual production code is an unholy mess that they'd be ashamed to show?

Many times during my career, I've had to deal with those who profess to know the "right way" of doing things. They'll throw acronyms like DRY and YAGNI at you all day. They'll go on and on about patterns and "best practices". Yet when it comes to writing actual production-grade code, they often produce the worst of the worst.

This behavior has, in my experience, been extremely prevalent within the Ruby community, and with the JavaScript community to a lesser extent. So I wouldn't be at all surprised to see them making all sorts of recommendations, without ever backing it up with real-world code.

<comment><AUTHOR> That's been my guess as well. Probably some developers are ashamed. But if you think about it, sharing real, messy code is much more useful than showing a polished, contrived example.</comment></comment>


Fish vs. Fish in Street Fighter II - <AUTHOR> http://www.twitch.tv/fishplaystreetfighter <comment><USER2> Can the fish see the game? What if the fish were rewarded for winning? Can we train fish to play street fighter? How about rats?

<comment><USER3> I don't think this is a possibility. While you could get some sort of feedback loop going (fish gets hit it gets shocked, fish hits it gets food or something), there would be no way for the fish to understand the massive amount of information they'd need to grok from the game, so they'd just be getting all this random stimuli with nothing to attach it to.

I can't see anyway to bridge the gap of making the fish understand the stimuli in relation to what's going on in the game. I would imagine the same is true for rats.

<comment><USER4> The fish doesn't need to grok the entire game, it just has to be better than the other fish. (Cue that joke about two people being chased by a bear and one pausing to put on his sneakers. "What are you doing? You can't outrun a bear!" "I don't have to, I just have to outrun you!")

For example, if fish A realizes that swimming around corner X gets it food, because X happens to correspond to "move forward and punch", that's enough to win the game if fish B doesn't figure out the same.

</comment></comment></comment><comment><USER5> If you like to watch computer-controlled 2d fighting characters with actual decent AI (most of the time) squaring off against each other, check out [http://www.saltybet.com/](http://www.saltybet.com/) .

There are over 5000 characters in the database, and it runs 24 hours a day. The matches can get really amusing sometimes.

<comment><USER6> It really is amazing, I still wonder how Salty made it.

Also some protips to those who are interested:

1) Always bet DBZ

2) Never trust chat

3) Never bet DBZ

<comment><USER5> From a technical standpoint it doesn't seem too hard to set everything up (over time), but the concept and then the monetization of it is pretty ingenious.

I've seen Salty himself in the chat every now and then. I wonder how much time he spends working on the site vs how much he makes off of it every month.

</comment></comment></comment><comment><USER7> Background: This is the logical conclusion of Fish Plays Pokemon ([http://motherboard.vice.com/read/an-exclusive-interview- with...](http://motherboard.vice.com/read/an-exclusive-interview-with-the- fish-playing-pokemon)), which was a hackathon project and a play on Twitch Plays Pokemon.

<comment><USER8> I believe this is actually the logical conclusion of the Internet.

<comment><USER9> Nah, that would involve cats playing video games.

<comment><USER10> I am not sure if cats are a good idea for this. But what about rats? Could we teach them to do image recognition? Perhaps it could answer questions like "is there a cat in this picture?". Since rats are quite small this approach could scale well.

<comment><USER11> The rat rack.

</comment></comment></comment></comment></comment><comment><USER12> And as a finishing touch, man made 2 fish fight eachother on Street Fighter and streamed it to the world in real time.

God I love the internet :D

</comment><comment><USER13> He needs to randomize the 1P/2P assignment because Aquarius seems to prefer being on the right side of the tank and gets an unfair advantage as 1P.

<comment><USER14> Maybe Aquarius prefers the right side because Aquarius likes to win.

</comment></comment><comment><USER15> A lot of engineering effort to watch Balrog jab and Blanka duck forever.

Fish are bad at playing Street Fighter II. I already intuitively knew this.

<comment><USER16> Watching them for a bit, I would say they're ~=> my mom playing Street Fighter - the occasional times she would play video games with me, the results of her play often looked like this.

Fish > My mom at video games? Perhaps.

</comment></comment><comment><USER17> Stream seems to be down, here's what was on: [https://www.youtube.com/watch?v=NHrRksz- XLI](https://www.youtube.com/watch?v=NHrRksz-XLI)

</comment><comment><USER18> Soooooo much more engaging than the Fish Plays Pokemon the creator links to. I explained it to a coworker (...in marketing) and couldn't help but giggle at every other sentence in my explanation. "So the fish swim around in that virtual grid, see, and that triggers button presses in the fighting game." Sweet action, as the kids say.

</comment><comment><USER19> I don't get it, can someone please tell what is going on?

<comment><USER20> The position of two fish in a tank are tracked. The tank is divided into a grid and the position of the fish in the grid determines the input into the game.

<comment><USER19> ooh cool :P

Thanks :)

</comment></comment></comment><comment> w-ll Well given that its Street Fighter my best strategy was to always just mash random buttons.

I do wonder if he choose the fish at random or tried to find more active fishies.

</comment><comment><USER21> Humans are pattern recognition animals, we like to look at anything random and extract meaningful patterns from it.

I see this game as a clear example of that, where (random) fish movement is fed to a computer game and translated into game play (pattern). I fail though to conclude anything particularly interesting if one fish won the game :)

</comment><comment><USER22> Hypnotic. Aquarius can't seem to lose.

<comment><USER23> He is a winning machine. His gold color suits him well. Aquarius is an impeccable fighter.

<comment><USER22> The last ~10 or so matches I've seen show Aquarius winning, often by a tiny margin. These fish might be more skilled than some real players.

They should make it so that you can play vs. a fish now.

EDIT: I spoke too soon, the Bruce is making a comeback.

<comment><USER24> Twitch plays Street Fighter against fish!

</comment></comment></comment></comment><comment><USER25> I wonder now if one could train chimpanzees to play the game successfully.

<comment><USER26> Yes.

[https://www.youtube.com/watch?v=YkuO-8hfGhM](https://www.youtube.com/watch?v=YkuO-8hfGhM)

<comment><USER27> Nice, but I think it is not real, just marketing for the new Planet of the Apes movies.

</comment></comment></comment><comment><USER28> What I'd really want to see is two monkeys playing the game against each other for the treat. If given some time, I believe that they can get better than most humans.

</comment><comment><USER29> I had a dream one time when I was a kid that I trained a puppy to play Street Fighter 2. I'd never imagine it would ever be linked to anything this close to reality.

</comment><comment><USER30> Haha this is awesome! First a couple of HackNY fellows make Fish Plays Pokemon, now this! I can't wait for what fish related fun comes next.

<comment><USER31> Fish playing 2048 would be my guess

<comment><USER32> Fish playing Flappy 2048 - [https://news.ycombinator.com/item?id=7431047](https://news.ycombinator.com/item?id=7431047)

</comment></comment></comment><comment><USER33> Anyone know if these guys making these games are using some kind of library for the image processing or what? Seems pretty complicated to do

<comment><USER34> I can confirm that FishPlaysPokemon uses OpenCV. There's a wealth of knowledge and tutorials, so if you just want to isolate certain color ranges (what they're doing), I guarantee there are tons of resources. There's also Python bindings to make things even more friendly. After that, it's some simple math to figure out which quadrant it's in and then trigger the correct button press.

<comment><USER33> Hm, good call, thanks for that. Looks like there's a binding for Nodejs out there too: [https://github.com/peterbraden/node- opencv](https://github.com/peterbraden/node-opencv)

</comment></comment></comment><comment><USER35> If one of the fish managed to make an Hadoken it should get a job at Konami (or at least a nice place on an "Konami"-Desk)

</comment><comment><USER36> Would be interesting to observe if there may happen to be some pattern in fish movements as more data is collected over time.

</comment><comment><USER37> what's missing from "fish plays game" is some sort of reward for the fish. I wonder how clever they can get.

</comment><comment><USER38> These fishes are more entertaining than the Pokemon game which was played through the chat room.

</comment><comment><USER39> what about the parody of [http://twitch.tv/garlicplays](http://twitch.tv/garlicplays)

</comment><comment><USER40> I was actually hoping for a writeup on the differences between regular fish and fish in SFII, but this is also good.

Next we need kittens versus fish. Kittens are much more active.

</comment><comment><USER41> This is best thing I've seen all year.

</comment><comment><USER42> If I could upvote you 10 times for the most ridiculously useless (but cool) thing I've seen on HN, I would. You win HN for today sir.

</comment><comment><USER43> This is the answer to life, the univers and everything!

</comment><comment><USER44> Url changed from [http://techcrunch.com/2014/08/20/7000-people-are-watching- tw...](http://techcrunch.com/2014/08/20/7000-people-are-watching-two-fish- play-play-street-fighter/), which points to [http://www.theverge.com/2014/8/20/6048973/fish-vs-fish- stree...](http://www.theverge.com/2014/8/20/6048973/fish-vs-fish-street- fighter-twitch), which points to this.

</comment><comment><USER45> I thought I was going to see Phil Fish fight himself, somehow.

<comment><USER46> That already exists, it's called Indie Game: The Movie.

</comment></comment><comment><USER47> Just gotta say this is a strange outcome of our technological developments.. I mean think of the energy that was spent making this work - it could've been done doing something.. I dunno fucking useful?!

It's almost as bad as watching two "grown-ups" play Street Fighter lol.

<comment><USER48> this exercise is useful.

1) the creators had a chance to learn/practice their favorite libraries and languages -- computer vision is hugely useful and applicable to nearly all domains.

2) the creators got spectators to think about the technologies involved, possibly motivating some to learn about them, and undoubtedly teaching a few people about things they didn't know the concepts behind. (computer vision. hell, check the comments on HN, a few of us didn't know how it worked and were thus elucidated.)</comment></comment>


The neo-feudal structure of Internet scale platforms. - <AUTHOR> http://highscalability.com/blog/2010/1/25/lets-welcome-our-neo-feudal-overlords.html

<comment><USER2> The difference is that you can move from one feudal to the next if you plan ahead. EC2 images may not be easy to move, but your deployment scripts would not be hard to replay on rackspace or any other VM host.

</comment><comment><USER3> in a lot of ways developers have been 'liberated' by these cloud systems to be able to scale apps rapidly, plus we are also only in the early stages of the cloud, it will be interesting to see how the playing field levels as more players enter the market.

on a related note, <http://incubator.apache.org/libcloud/> is a python client thats trying to create a unified library for a bunch of popular cloud hosts</comment>


Daryl Bem Proved ESP Is Real, Science Is Broken - <AUTHOR> https://redux.slate.com/cover-stories/2017/05/daryl-bem-proved-esp-is-real-showed-science-is-broken.html <comment><USER2> >For the rest of that semester and into the one that followed, Wu and the other women tested hundreds of their fellow undergrads. Most of the subjects did as they were told, got their money, and departed happily. A few students—all of them white guys, Wu remembers—would hang around to ask about the research and to probe for flaws in its design. Wu still didn't believe in ESP, _but she found herself defending the experiments to these mansplaining guinea pigs_. The methodology was sound, she told them—as sound as that of any other psychology experiment.

Calling the act of being skeptical towards a study designed to demonstrate ESP "mansplaining" is about as disingenuous as it gets.

<comment><USER3> I stopped reading there. You have got to give them credit for being able to inject some "white guys ugh am i right" message regardless of the story. Slate is garbage.

<comment><USER4> It's a shame you stopped because the rest of the article is very interesting. (SPOILER: The mainsplainers are proved correct)

</comment></comment></comment><comment><USER5> Just like calling every person who can whip up some html and JavaScript an "Engineer" is bad for the reputation of Engineering as a whole, so calling everything that has statistics and is peer reviewed "science" is bad for the reputation of science. I think a lot of damage to science has come from psychology and "social sciences" in corroboration with the popular press when one-off studies are popularized with supposedly profound implications for our understanding of how humans work, only to be contradicted a few months/years later by a different one-off study.

I think for the sake of our future, we should stop putting both physics which can predict, detect, and verify gravity waves from across the universe, and social sciences which are largely surveys with statistics into the same bucket.

<comment><USER6> Everything that's peer reviewed and backed by statistics is science. This article is stating that the (non) statistics used by the author, a.k.a cherry picking, is the root of fake results.

If indeed one could replicate the results every single time, over a large population, then ESP would hold true. But that obviously fell flat on its face when the Berkeley coders backed it up with their online experiment

<comment><USER5> So if Viking A measured thunder when it was cloudy vs clear, did some statistics and concluded with a sufficient P value that Thor was more likely to swing his hammer when it was cloudy, and then got a bunch of his buddies to agree his math was ok, you would call that science?

<comment><USER6> Peer review!= Collusion from buddies. What you describe here is collusion

</comment></comment></comment></comment><comment><USER4> This is a interesting site on a tangentially related issue: [http://www.joseduarte.com/](http://www.joseduarte.com/)

</comment><comment><USER7> hoax

<comment><USER8> Well, this is enjoyable. Are you in fact "that" Sam Harris? Or perhaps a fan?</comment></comment>


Magnetic Property of Light May Lead to More Effective Solar Panels - <AUTHOR> http://michigantoday.umich.edu/2011/04/story.php?id=7980&tr=y&auid=8154157 <comment><USER2> [CORRECTIONS ABOUND! It isn't as bad as my first napkin suggests.]

Well done scientists[1]! Cue the engineers…

 _And it must be focused to an intensity of 10 million watts per square centimeter. Sunlight isn't this intense on its own…_

Sunlight is about 1000watt/m^2. They are using 100 billion watts/m^2. That is, you would need to concentrate sunlight to 100 million times to reach this level.[2]

Put another way, if your fiber is about 1mm in diameter, you will need a perfect[3] mirror array 10 meters in diameter to drive it[4]. [CORRECTED from 400 meters, thanks to _loup-vaillant_ ]

Wild speculation follows:

• This has got to be used in pulsed mode. 100 kilowatts down a 1mm optical fiber is going to vaporize it if done for more than a tiny fraction of a second. Are there the optical equivalent of super conductors that are suitable for this?

• I went with a 1mm fiber because it "only" required a 10m mirror to drive it, but at what voltage are we going to get 100 kilowatts of power out of a non- conductor with a 1mm^2 cross section? Sounds like 50 zillion is the answer.

• Lets guess 10% efficiency, and the rest comes out as light at the end of the fiber (so our fiber doesn't turn to plasma). Where are you going to point that? I suppose into a light tight chamber contained in the molten salt loop of a steam power plant would be a good start.

• Maybe this all works better at the nano scale. Heat dissipation is easier since essentially all of the optical media can be in contact with heat sink. The mirrors get smaller to achieve the required light density. There is a shape, sort of stretched parabolic looking, that is a non-imaging optical funnel which _might_ get your light all gathered to the same point, albeit going in a variety of direction. The total power would be lower, lowering the voltage required, letting you use sane power converters.

[1] And yet again, you have degraded the value of my undergraduate education by falsifying my hard learned facts.

[2] I may well have lost a zero or more each way. It's early. Don't use these calculations to place orders for mirrors.

[3] From 10+ meters away it is going to have to focus to a 1mm target. [CORRECTED from 200+, it doesn't sound _so_ bad now]

[4] On proofreading I see I have a [4] footnote, in the text but no corresponding note. It was probably vaporized by a poorly aimed fiber.

<comment><USER3> Aren't you missing a time variable?

I didn't go to University, and wasn't much for science in high-school, but (using your figures) sunlight is 1000watts/m^2/second (or millisecond or minute), isn't it?

If so, aren't your concerns about the size of the mirror, etc. imposing a limitation, kinda like saying we can build a jet that will fly from NYC to San Fran in 30 seconds, but we can't keep the people in one piece during the trip. Therefore, we slow it down to a more humanly acceptable speed. With the volume of sunlight hitting the planet, would we not be able to take only a portion of that sunlight and concentrate it over time to get the same effect??

Of course, like an airplane, you need a minimum speed to create lift, and this magnetic effect may have such a limiting speed/force(?).

Of course, I have no idea what I'm talking about, but you seem quite knowledgable.

<comment><USER4> _I didn't go to University, and wasn't much for science in high-school, but (using your figures) sunlight is 1000watts/m^2/second (or millisecond or minute), isn't it?_

No, sunlight is 1000 watts / m^2, or 1000 joules per square metre per second. The Watt is a unit of power (ie energy over time).

<comment><USER2> As a footnote, there is a pitfall here in the English language. The word "over" might mean divided by, or it might mean "integrated across", which are, in the case of constant power completely opposite meanings.

power is energy ÷ time (assuming the power is constant, and thinking of horizontal lines for fractions you might say "power is energy over time")

energy is power × time (assuming the power is constant, but if you are thinking "integration" you might say "energy is power over time")

The language can hurt the understanding.

</comment></comment></comment></comment><comment><USER5> I work for a living doing research on solar cells.

I downloaded the technical paper and had a quick look. It would have taken me days of hard study to understand what this undoubtedly clever people have done, even though I have a PhD in physics. From how excited they seem to be about their own work, I would guess its probably a very nice piece of theoretical physics. But a few things are clear, from their own words:

\- They have not actually fabricated a solar cell, their most optimistic expectation based on this technology is 10% efficiency. With efficiencies bellow 14% you cant compete with other energy sources (you can not reach grid parity), even if your solar cells are so cheap that they are free. That is because the solar cell itself is only a fraction of the costs of solar energy. Think of land, maintenance, support structures, cabling, power electronics, and so on. That means that this concept, as it is, is useless for solar energy production, just like "organic" and other fashionable solar cell technologies. \- The effects they are talking about happen when light has an intensity, in their own words "as low as 10^7 W/cm2" that is a hundred million times more intense than the light from the sun. You need a big, expensive laser to observe the effects they are talking about. \- This is just one more case of people trying to spin their work as a revolution in solar energy, just because it is fashionable and it gives you publicity and funding for your research. They are probably fooling themselves in the first place, but that is no excuse. This type of thing is terribly detrimental for all of us, as it takes funding and attention from the solar cell technologies that actually work. This is a shame for the people involved, and for the University of Michigan. \- If you want to make a bet on solar cells, bet for III-V concentrator solar cells. These are the most efficient ones, by far, (above 40%), and can be used under optical concentration (up to a thousand suns) making the cost of the cell itself almost irrelevant.

<comment><USER6> From my not-still-incomplete engineering education I came to understand that "solar panels" are huge photodiodes.

Doesn't sound exiting at all. I get to the point of having a PhD like you, I guess nothing will excite me on the mass media when it comes to technology.

</comment></comment><comment> loup-vaillant > _The university is pursuing patent protection for the intellectual property_

They make a discovery that may significantly benefit all humanity, then they ensure it won't spread as fast as possible. Besides, I wonder who fund the research so the university can claim property on new knowledge. (I'm not accusing the university specifically here, they may have little choice given the current system. Nevertheless, this sucks.)

<comment><USER3> From my understanding, they can't patent the physics, and that is the real discovery here.

They have potentially hit on a way to create energy from a previously unknown or ignored phenomenon, but just like you can't patent gravity, you can't patent this.

Now that people are paying attention to this phenomenon, lots more research will go into the best way of capturing it. Sure all those will likely be patented as well, but there is nothing (in theory) stopping you from developing your own way of capturing this energy and making it freely available to the world.

<comment><USER7> > They have potentially hit on a way to create energy from a previously > unknown or ignored phenomenon, but just like you can't patent gravity, you > can't patent this.

Not so fast. While you can't patent gravity, you can patent using gravity to do things (subject to novelty and obviousness).

That's how Feynmann ended up with a patent on nuclear submarines. You can't patent radioactivity or heating things with radioactivity, but you can patent using heat from radioactivity to do specific things.

</comment></comment></comment><comment><USER8> And a million pseudo-science/crack-cure marketers fire up their word processors...

</comment><comment><USER9> This begs the question, if you can magnetically polarize light, can you bend a beam of light with a strong enough magnetic field? and if so, there is tremendous potential beyond just energy storage.

<comment><USER10> This discovery doesn't have to do with magnets 'polarizing' light. Rather it's using light's magnetic component to setup a charge separation. You also can't "steer" light by polarizing it. Polarization is just the 'angle' that EM makes with its direction of travel. Polarizing light just means selecting which angle you want your light to have.

<comment><USER2> I recommend a look at "circular polarization" for anyone that thought they understood polarization as the direction the light vibrates.

Take two pair of Real-3d glasses from the movie theater and try the different orientations (including front-front, front-back permutations). The vertical/horizontal model will not explain your observations. Hence, I know about circular polarization and had a confusing pre-movie experience at Iron Man 2.

<comment><USER11> I missed the first 3 or 4 minutes of Avatar because I was playing with the glasses and a laser pen pointer :-)

On one level I agree with you that this seems, at least initially, as tidy bit of theoretical physics. Most people 'get' that light is an electromagnetic wave, and of course Maxwell tied the two together quite elegantly.

The clever bits will be these two:

1) Is there a material, either natural or 'meta' in which the structure can convert a fraction of the light passing through it into a magnetic field. If so, and the light is modulated, you can induce a current in a conductor. Could be useful, could be a parlor trick.

2) Can you run it backwards? Which is to say if you generate a magnetic field of the proper type and orientation in the presence of such a material, can you convert the magnetic field into light? If so what frequency? What coherence? Does this paper provide the foundation for a LAAMR (Light Amplification by Amplified Magnetic Resonance) (no, its not a pun on 'lamer' :-)

I expect if you can create the latter you could probably get a Nobel prize (or at least share it).

Am I the only one who enjoys finding out we're wrong about some long held scientific beliefs (in this case the magnetic influence of light)

</comment></comment></comment></comment><comment><USER12> Meta comment: it's kind of awesome to see more umich.edu links on HN lately. Would there be interest in an Ann Arbor meetup, say early May, after Funded by Night?

<comment><USER13> see: <http://www.a2techevents.com/>

A2 New Tech is relatively well attended by the hacker news crowd. Their monthly meeting is tonight: [http://www.a2newtech.org/events/16678437/?eventId=16678437&#...</a></comment></comment>


Help Uganda children and make Vim better at the same time - <AUTHOR> http://www.vim.org/sponsor/index.php

<comment><USER2> I have been using Vim for almost a year now, and I've thought about donating before. Thank you for reminding me. I will continue to use Vim, and I will continue to donate.

</comment><comment><USER3> how can i help vim without helping ugandans?

<comment><USER2> It's awesome you want to help development of the this magnificent text editor: you can help in two ways I can think on top of my mind, if you browse the www.vim.org site, I'm sure you will find more ways.

1\. it's open source project: donate your development time, write documentation, develop useful scripts, anything you can really... 2\. you still can donate money, regardless of helping the children in Uganda, because "donations increase Bram's motivation to keep working on Vim". That's a good cause, wouldn't you agree?

</comment></comment><comment><USER4> How long its this charity going on? I remember that message in vim for a long time (never made me donate because of it btw. I donated to thank Bram, he did what he want with it.)

My point being that any poor condition that needs external help, and last so long, is most probable being maintained by some other factor irrelevant for the charity results, or being helped in any way by the charity ...or maybe it's just an honest huge mess that indeed that a lot of time.

any word if the money goes to the pockets of the pharma industry, which is the main place to blame for high aids treatment prices?

Most countries ignore some medical patents when they can prove excessive profits, but said country must have means of producing it themselves.

<comment><USER4> Better link for a news site: <http://iccf-holland.org/news.html>

</comment></comment><comment><USER5> This video sums up (in a beautiful way), what I would like to say about such initiatives.

<http://www.youtube.com/watch?v=hpAMbpQ8J7g></comment>


Why Pebble Time, Not Android Is Apple Watch's Biggest Competition - <AUTHOR> http://www.macworld.com/article/2889211/why-pebble-time-is-a-bigger-threat-to-the-apple-watch-than-android-wear.html <comment><USER2> The reason why I keep watching what Pebble does is because for Apple and Google the watch could be just an accessory to their main event like ChromeCast and AppleTv. But for Pebble their watch and its capability is their bread and butter. When Apple and Google would be satisfied checking it off the feature list Pebble meanwhile will continue to innovate and try cannibalizing the phone, implementing feature (maybe good, maybe bad) that used to be on the phone, but now on the watch. While today there is talk about off loading computing to the phone it wont be long before the watch will be good enough.

</comment><comment><USER3> I think Pebble's biggest selling point is that it works on iOS and Android.

I don't think that many change ecosystem on purpose after deciding iPhone or Android (they're too invested fairly quickly) but I'm sure many people get a cheap Android phone when they lose or break their iPhone.

It will be a painful realisation when the iWatch won't connect to a temporary Android phone.

<comment><USER4> Just because you rarely change ecosystem, I don't believe it is the biggest selling point.

To me, it is that the Pebble simply works, and does it well. I've tried wearing an Android-based smartwatch - while great hardware (except battery time) - it simply didn't work that well. I think that is the biggest selling point.

On the other hand, I remember having my Pebble in a drawer for most of the first year. But once SDK 2 was released, things started to happen and it became really useful in itself and the apps/watchfaces available.

<comment><USER5> > it simply didn't work that well.

Can I ask what wasn't working that well?

<comment><USER6> I wear a moto360 everyday since october, and I really like the "hardware part" of the watch (it looks good and feels nice). But, the software (or whatever it is), is a complete mess. The UI (card display, gestures) is made for square screens, not round ones. The voice control either doesn't work because of my accent/noisy surroundings or it makes you look like a very very strange person. For a long time, there was an issue that kept the time displayed on the watch's ambient screen from updating (so you would get "jumps" of several minutes when the watch activated).

I could go on for a long time, but I think you get the idea: it is just not a finished product.

</comment></comment></comment></comment><comment><USER7> If I could get a pebble that looked like a moto 360 I'd be in. But to me it should be a watch/jewelry first, and smart second.

<comment><USER8> This is what I realized after picking up a Moto360 on sale a few months ago. I'd held off on buying a smart watch due to the common complaints people seemed to have: battery life, usefulness, etc.

But honestly I saw it on sale for $175 and kind of wanted a new gadget so I pulled the trigger. Since then it's funny because the issues most people have (apps and such) have been the least important things about it for me.

I don't mind laying it on the cradle when I go to bed every night and the same complaint some people have (it doesn't do much that I can't just do on my phone) means that I won't miss it terribly if I forget the charger on a trip out of town and the battery dies after a day or so.

Really what I like about it is that it's a watch...that I can change the face on. The hardware looks nice and I can pick faces that show all sorts of info at a glance. I've even spent a little time with apps like Facer and Watchmaker and some Photoshop/Illustrator to make my own faces. It really is neat. I can have my watch show an animated X-Wing flying down an 8-bit trench with a digital countdown-style time readout on top or I can make it look like a minimalist analog watch with a little weather icon made to look like part of the display. I can show weather/radar or a visualization of the temperature over the next 24 hours as a ring around the face. There's really no end since you can just program it to look like whatever you want.

And yeah, I get little notices about traffic or Amazon deliveries and other typical Google Now stuff but that's just icing. I hate to say it but even as a function-over-form kind of guy, I'm actually pretty cool with something where one of the main functions is being able to play around with the form.

</comment></comment><comment><USER9> I don't know if this is a common sentiment — it hasn't been brought up at all in the Apple podcasts that I listen to — but my primary interest in getting a smartwatch is customizable faces. Watches are interesting because they're little mechanical microcosms that sit on your wrist; with a computer, you can simulate the movement and do so much more on top of that. This also has the potential of opening up a whole new app market.

Pebble can already do this (albeit imperfectly) while the Apple watch is _years_ away from having an always-on display.

<comment><USER10> This is pretty much the primary reason I would ever get a smartwatch. Once I can put Tokyoflash-esque [1] faces on the watch, then I would consider jumping in.

[1]: [http://www.tokyoflash.com/en/watches/1/](http://www.tokyoflash.com/en/watches/1/)

</comment></comment><comment><USER11> While I love Pebble, I feel like this is similar to when the iPhone (and iPod Touch, which was also a huge deal at the time due to the popularity of MP3 players) came out and suddenly made people realize just how much a well- designed touchscreen UI could change their interactions with an historically button-based product.

I think the battery life is going to still be the catching point that nips apple's momentum, but we shall see.

<comment><USER12> There's an argument to be made that its easier to charge a device every night, than wonder if your 30% will get you through to the next day and figure out when you should charge it.

<comment><USER13> At 20% on the pebble in the evening I'm pretty confident I can make it through the next day, but that's not really your point I suppose.

I really don't get that argument, you can easily charge it up every day if you want to. It stops you worrying if you're going away for a few days though, I know if I charge up my pebble before the weekend I can go away without worrying about needing a charger. I don't have to worry about my watch in the evening because I've used it quite a bit today.

It's like saying that Hummers have the advantage because you have to keep stopping for fuel every petrol station, rather than wondering if you can make it to the next one.

<comment><USER14> My iPad ends up completely drained all the time because I don't need to charge it every night. My iPhone never does. It's silly, but I know that needing to charge something every night makes it easier for me to keep it charged.

</comment></comment></comment></comment><comment><USER15> Man there are so many varying takes on what people want from a watch that I really sympathise with designers and manufacturers.

It took me a fair bit of cash to work out my own sweet spot - an automatic Swiss watch on my left arm, and a Microsoft Band on the right. This after trying really hard to like (and wear) a Pebble, and then a Pebble steel. The Pebble just doesn't do anything I _need_. Unfortunately for Android, it's part of an ecosystem I won't touch. Apple's watch is appealing like crazy, but DOA because I need to take my phone along if I want to track a run or cycle. The Microsoft Band is amazing, but its Achilles heel is that it's not waterproof. Swimming is the one thing I'm still using a dedicated device for. Oh and diving, but while you'd think tech has advanced enough by now, I'm not expecting much from smart watches for that.

<comment><USER16> From what I have read, Microsoft Band heart rate sensor is useless. Too bad, once somebody delivers continuous heart rate tracking with reasonable accuracy and bulk, he will have my money.

<comment><USER15> Yeah I followed that saga too. And I still have no idea whether the sensor is actually bad, or good. I do know that the Band samples at different heart rate frequencies depending on what it's running -

\- Exercise modes (Run and Workout): Heart rate records every second

\- Sleep tracking : 2 minutes on, 8 minutes off. Repeats throughout duration

\- All other times : 1 minute on, 9 minutes off, and repeating the cycle

\- Manual: You can force-check your heart rate at any time by tapping the Me Tile

</comment></comment></comment><comment><USER17> I'm surprised there's not much mention of the different app architecture for Pebble vs Apple Watch.

For Apple Watch, _all_ application code lives on the phone and every interaction on the watch requires a round trip to the phone and back. This contributes to the shoddy battery life, sure but I'm mostly concerned about latency. When writing your app, you really only use a designer in Xcode.

For the Pebble, code for watch-specific behavior lives and executes on the watch itself, along with two options for logic on the phone: 1) a native companion app which the watch talks to (more like the way Apple Watch apps work, but with code split across devices) and 2) arbitrary javascript which runs in a execution sandbox that all the Pebble watch apps share.

Anyone think that the Apple Watch approach is a better idea? Tempted to get one to compare.

<comment><USER18> > For Apple Watch, all application code lives on the phone and every > interaction on the watch requires a round trip to the phone and back.

IIRC this is just for now, and they're going to have native apps soon, but the SDK for that isn't ready yet.

I wonder if the (current) Apple Watch approach is better battery-life wise, given that it avoids any data syncing and does any and all heavy processing on the iPhone rather than the watch.

</comment></comment><comment><USER19> I have found my pebble watch to be surprisingly useful. And given its cost a reasonable value. The big 'win' for me was simple vibrating notifications, as I don't hear high pitches any more it is the first watch with a timer/alarm function that I _always_ notice. The ability to change watch faces is also fun, and that it always has the time displayed is, for me, critical in a watch.

That said, when v2.0 of the firmware pushed with additional notification/services my ability to recharge once a week dropped to I must recharge it every 3 days or so. Not a win for me.

</comment><comment><USER5> Won't that be changed if Google develops iOS compatibility for Android wear?

<comment><USER20> Is there any evidence to suggest that they would?

<comment><USER21> There have been rumours that they might. No idea how on earth it would work though. iWatch is pretty tightly coupled with iOS internals.

<comment><USER22> I dont think it would take very much to get the simple stuff like notification to work. Thats all Apple's API which is open to developers. All Google may have to do is provide some kind of downloadable layer for support for more tightly coupled things(Google Now). I am assuming that Apple lets them.

</comment></comment></comment></comment><comment><USER23> One interesting thing is to see who Apple is targeting their watch. So far it has been featured in high profile fashion magazines. I think this is clear distinction from Pebble and maybe also from Android products.

</comment><comment><USER24> The article's mention of carrier-subsidized iPhone price of $199 made me see something obvious: what if the Apple Watch was also subsidized?

Since it's likely to increase network usage, it seems a reasonable bet for carriers. Maybe an extra $50 on top of the iPhone to get a watch too?

<comment><USER25> Further, they could just spread the cost into the 2-year plan. I'll actually be a bit surprised if this doesn't happen.

</comment></comment><comment><USER16> sigh. Android Wear and Apple Watch are NOT direct competitors. They both only work with their respective OSes.

<comment><USER26> They're competing to create the most compelling ecosystem. If people are lead to believe that Android+Android Wear is a better pair than iPhone+Apple Watch then people will switch.

<comment><USER27> That is a battle that will be won or lost without either platforms' watch actually mattering. I would agree that Wear and iWatch are not really competitors, except in the heads of fanboys who want direct comparison charts.</comment></comment></comment>