Select Transform: JSON template over JSON - <AUTHOR> https://selecttransform.github.io/site/ <comment><USER2> Gotta love JSON. It's XML without the tools so you get to reinvent everything to pad your resume.

        XML -> JSON
        WSDL -> JSON schema
        XPath -> JSON path
        XSLT -> JSON template?
        SOAP -> Swagger and friends

One or two decades from now there will be too many tools and things to learn about JSON so another generation will reinvent a new "perfect format for everything". And a new cycle will have started.

<comment><USER3> I kinda get this criticism, but this is also a bit like lamenting that we write the same libraries for different programming languages. I mean... yeah. Some ideas are good across protocols. That's why they're copied.

On a merits-based thing, if you're just looking at XML, it has a lot of things going against it .If someone sends me something "in JSON", I can have a good guess what it'll look like. Not as much luck with XML. XML punishes you for using attributes (because you can't place composed types within them), but the awkward alternative is placing attributes in sub-elements.

I have a list of products with prices. I store the price as a quantity attribute on a <product>. I decide later on to store currencies for all my "money" objects. Do I now double the amount of attributes? It's all super awkward, and JSON's mental model is more straightforward, even if you end up with approximations.

<comment><USER4> Why is it super awkward and how does JSON solve this problem any better?

<comment><USER5> JSON is a lot easier to read.

        {
          "employees": [
            {
              "name": "John Crichton",
              "gender": "male"
            },
            {
              "name": "Aeryn Sun",
              "gender": "female"
            }
          ]
        }

versus

        <employees>
          <employee>
            <name>John Crichton</name>
            <gender>male</gender>
          </employee>
          <employee>
            <name>Aeryn Sun</name>
            <gender>female</gender>
          </employee>
        </employees>

<comment><USER6> Or

        <employees>
          <employee name="John Crichton" gender="male" />
          <employee name="Aeryn Sun" gender=female" />
        </employees>

<comment><USER7> I believe that was OP's point. Using the annotation you cannot add an attribute with subattributes. What if you wanted to add the employee's last six salaries. Suddenly you need to restructure your xml:

        <employees>
          <employee>
            <name>John Crichton</name>
            <gender>male</gender>
            <salaries>
                <salary>10000</salary>
                <salary>10000</salary>
                <salary>10000</salary>
            <salaries>
          </employee>
          <employee>
            <name>Aeryn Sun</name>
            <gender>female</gender>
          </employee>
        </employees>

Using JSON, you just so: "salaries": [10000,10000,10000]

JSON is not only less verbose, it is also more flexible and easier to read and understand. You don't have to worry about should I use tags or attributes for that because I late might have to use sub tags, and that makes it far easier to use (and honestly parse as well because many XML documents I have gotten are very inconsistent).

<comment><USER8> Why do you need to restructure the xml? You can just keep the attributes. To add the salaries there are quite a few options, as XML is just as flexible as well.

Using a List (XSD List) type:

        <employees>
          <employee name="John Crichton" gender="male" salaries="10000 10000 1000" />
          <employee name="Aeryn Sun" gender="female" />
        </employees>

And using mixed content (complexType):

        <employees>
          <employee name="John Crichton" gender="male">
            <salary>10000</salary>
            <salary>10000</salary>
            <salary>10000</salary>
          </employee>
          <employee name="Aeryn Sun" gender="female" />
        </employees>

</comment></comment></comment></comment></comment></comment></comment><comment><USER3> I think there's a lot of useful unexplored territory in this sort of tool. So much work nowadays is happening in maps/dictionaries/what-have-you, with a lot of work being, essentially, data shape transformation.

Despite this, many languages aren't great at this! we have tools that work alright on first-order operations but fall apart on higher level things.

Even really simple things like "conditionally include a key" are rarely supported in a way that leads to concise code. How many times have we all written

      foo = {...}
      if bar:
         foo['a'] = x

instead of something like

       foo = { ... , 'a': x if bar }

and then having bugs because of branches? Tools that solve this sort of problem will be to modern programming what things like the Unix shell was to data mungers in the past.

Haskell lenses kinda goes into this stuff, though Haskell itself is a bit hard to use in a lightweight fashion. Clojure has Specter. But still looking for some more stuff to fill this hole, especially in the "transitionally typed" stuff like Typescript or Python + Mypy

<comment><USER9> IMHO any tool that converts JSON to JSON is pointing to the wrong direction.

Json should strictly be used as a serialization format and everyone who touches it should immediately parse it into a typed data-structure that represents your domain better.

In fact you really should represent your data in your code using whatever native object hierarchy / algebraic data types / option types / etc. your language supports. (Algebraic datatypes are awesome at this sort of thing, it allows you to avoid the aforementioned conditionality)

The problem is the right way to do this is also the hard way, because people hate writing "boilerplate" classes and serialization code and once you start thinking about making it "easy", you end up using json as the in-application data structure because "who needs types anyway".

<comment><USER10> You are very correct. Boilerplate (de)serialization code is 100x better to have to write than code with JSON-blobs pretending to be business objects.

</comment></comment></comment><comment><USER11> What's wrong with:

        return {
            labels: data.items.map(function(value){
                return {
                    type: "label",
                    value: value > 10 ? value : value * 100
                };
            })
        };

I hope your project does not get too popular.

<comment><USER12> Even cleaner with ES6.

return { labels: data.items.map(value => { type: "label", value: value > 10 ? value : value * 100 }) };

</comment></comment><comment><USER13> Looks cool, but I can't help but think that you're just reproducing what map() and filter() do, without any real benefits?

<comment><USER14> I perceive it being middleware as the benefit. For when your client isn't set up to manipulate the incoming data and you can't edit the backend resource that generates it. Or vice versa.

</comment></comment><comment><USER15> This seems pretty interesting, and I will be happy to play around with it.

I am a bit concerned that there is no discussion in the docs of the potential security risks of allowing direct native JS execution of arbitrary instructions passed in by an untrusted source.

I use a project called JSONLogic (jsonlogic.com) which bears some similarity to ST in terms of being able to select and transform values. The biggest advantage I see with it is, unless you explicitly plug in a rule that parses and executes user data, there is no way for the data to "escape the sandbox". This means you can safely build a query syntax on top of it where you can directly consume the arbitrarily complex query from an untrusted source and execute it in a secure manner.

</comment><comment><AUTHOR> Hi, my name is Ethan. I'm the creator.

I thought I would provide some context on why I wrote this library, and how I'm using this right now. So here it goes:

Other than ST.js, I also work on another open source project called Jasonette ([https://www.jasonette.com](https://www.jasonette.com)), which lets you write an entire native iOS/Android app in nothing but JSON markup.

And when you can express the entire app logic--from model to view to controller--in JSON, you can split them up whichever way you want and load them from anywhere (from a file, from cache, from a remote server, or from local memory).

But the biggest benefit of all is: you can load an entire ios/android native app from the server in realtime, just like how web browsers load HTML/JS/CSS in realtime.

When working on Jasonette, implementing model and view was relatively simple. For model it's natural since JSON is all about describing data. For view i just needed to come up with a syntax to describe layouts and all the standard mobile UI components in JSON.

However the biggest challenge was how do i actually describe functions in JSON. Without a function, it's just a mockup and won't really do anything meaningful.

Which brings us to ST.js.

When you think about what a function is, it takes one value and turns it into another. So basically what I needed to do was build something that will take one JSON, and turn it into another JSON, but most importantly I would have to do it using JSON. Basically I needed to implement a finite state machine in purely JSON.

And this is what templates do. So I set out to build a JSON template engine that turns one JSON into another using a template which itself is written in JSON.

What's really cool about this is, since the template is JSON (As far as I know there doesn't exist any prior art that uses JSON as a template, otherwise I would have used it instead), it has all the benefits of the JSON format itself:

1\. You can store it anywhere (Most DBMS nowadays support JSON natively)

2\. You can send it over the Internet

3\. You can compose them easily

4\. You can validate them using JSON schema

5\. etc.

To use a more specific example, I use ST.js in both Android and iOS versions of Jasonette as the template engine. And a JSON template is absolutely necessary in this case.

For example, if I want to take a piece of device-generated data and render it, I need to be able to somehow parse it client-side (can't send it back to server to re-generate a JSON) [http://docs.jasonette.com/templates/#3-device- api-generated-...](http://docs.jasonette.com/templates/#3-device-api- generated-data)

This also applies to many cases where the client-side data contains privacy- sensitive data. The only way to dynamically parse something that happens on the client side is by writing the template itself in JSON and sending it over as data.

Anyway, I hope you guys take a look at the examples on the homepage to get a glimpse of what makes ST.js powerful. Each example is almost its own library, except that you don't need a separate library for those purposes since all you're dealing with is JSON.

<comment><USER16> So Jasonette functions are just about transforming the model, all in a reactive way? Like view->events->transform model->view?

<comment><AUTHOR> It can transform anything that's written in JSON, which means both model and view and anything else.

One of the use cases for ST.js in Jasonette is dynamic client-side rendering, where it takes dynamic data and renders it against the template, after which it becomes native components.

Another use case is implementing actual functional programming. This one is not as straight-forward since it involves maintaining another separate state machine for function call stack. But this is also achieved using ST templates. Here's a blog post that talks about it in detail [http://blog.jasonette.com/2017/02/15/functional- programming-...](http://blog.jasonette.com/2017/02/15/functional-programming- in-json/) but it's a bit involved.

Also Jasonette has something called mixins, which you probably can guess based on its name. It lets you mix in JSON objects into another, so that you can make the app modular. That's also achieved internally using ST.

Overall, I believe even I'm just scratching the surface of what this can do, which is why I decided to take some time to clean things up and prepare and open it up as its own repo, because I think there's tons of other things that can be done by taking advantage of the fact that all that's happening is:

JSON A + JSON B = JSON C

Hope this makes sense!

<comment><USER17> > _Another use case is implementing actual functional programming_

I remember our chat 8 months earlier on Reddit about this: [https://www.reddit.com/r/functionalprogramming/comments/5ufm...](https://www.reddit.com/r/functionalprogramming/comments/5ufmy2/designing_a_functional_programming_language_in/)

Yeah. You're still aiming for "functional programs encoded as (essentially) s-expressions but written in JS-Object-Notation (JSON) instead of LISPy parens". And that's still fine if you see that as a major leap forward. Not sure about the audience, those who want to "functionally program a mobile quasi-native APP that can self-update from a server" and know what the "functionally program" part means, wouldn't they reach for JS via React Native? Same selling points implicit already. Is it for those who never programmed but are expected to declaratively express functional idioms in your JSON notation without needing to install all sorts of dev tools and SDKs? Not entirely implausible at all I guess. Curious to see who will end up as your target audience. =)

</comment></comment></comment></comment><comment><USER6> XSLT for JSON?

<comment><USER18> That's the first thing that came to my mind too.

XSLT is very powerful but also incredibly messy because it has to be expressed in XML.

Doing the same in JSON seems like it would result in the same problem.

<comment><USER19> > XSLT is very powerful but also incredibly messy because it has to be > expressed in XML.

Being expressed in XML does not help, but the language is just _bad_ with implicit data flowing through and very odd constructs, there are XML template languages which I found much more readable than XSLT e.g. I remember my experience with genshi much more fondly than the years I spent with XLST.

</comment></comment></comment><comment><USER20> Have you considered reaching out to DevOps folks to consider something like this for complex configurations?...There are related solutions such as jsonnet/ksonette but I think something like this might be preferable.

I work on a similar problem though using a UI based approach, I gave a demo to the Kubernetes SIG App group a while back which be found here: [https://www.youtube.com/watch?v=alEzE8MSNaI&t=30m](https://www.youtube.com/watch?v=alEzE8MSNaI&t=30m)

Btw Ethan, maybe my email is landing in your Spam folder? I've tried reaching out :)

<comment><AUTHOR> Thanks! I actually built this library for my own usage (Jasonette) and decided to open source it because I realized it can be powerful for all kinds of other purposes.

In essence ST.js is a finite state machine implemented purely in JSON. So I can imagine it being used for things I haven't thought of, which is why I open sourced it. Would be really cool.

Please feel free to reach out at ethan.gliechtenstein[at]gmail thanks!

</comment></comment><comment><USER21> Now that's a goddamn demo. No fussing about.

I can't wait to play around with this.

</comment><comment><USER22> Currently I'm having issues trying to figure out a new stack where we can't figure out where to put the backend for front-end logic in a React App over the top of GraphQL. I've been thinking of implementing something like this as the transforms or the formatters don't make a ton of sense to be on the client or the API or in GraphQL and I'm loathe to make another API call in the chain as it feels like I there's enough of those already?

Would that be a good use case for this?

<comment><AUTHOR> Creator here. Yup, in fact you can check out something like that here [https://github.com/SelectTransform/JSONQL](https://github.com/SelectTransform/JSONQL)

Basically you can send the JSON template over JSON to the server, and let the server transform the raw data using the template before returning.

The most important benefit here is that, since everything can be expressed in JSON, it can be stored or transmitted over the Internet, which enables interesting cases like this.

</comment></comment><comment><USER16> I like the fact that this exists, but I prefer to use jq.

I also would like to know in which situation this is preferable to jq.

<comment><USER23> There's also [http://jmespath.org](http://jmespath.org) \-- the syntax for which is supported in AWS CLIs.

Not sure which one is better at this point. Using jq still often feels like trying to decode a code golf contest entry.

<comment><USER16> Really? I find jq syntax rather pleasant to read and write.

</comment></comment></comment><comment><USER24> Just saying learn ramda

</comment><comment><USER25> This is game changing.</comment>


Traditional Mail is More Efficient Than Online Advertising Methods - <AUTHOR> http://www.maindevice.com/2012/06/15/traditional-mail-more-efficient-than-online-advertising-methods/

<comment><USER2> "Snail Mail is 30 Times More Efficient than Email"

...and at least 30 times more expensive.

Mailchimp campaign:

1000 mails sent

40 people open it

10 people visit the website

cost: $15

Snail mail campaign

1000 mails sent

100 people open it/read it

50 people visit the website

cost: $1500

It may be more efficient from a conversion perspective, but it's certainly not capital-efficient.

<comment><AUTHOR> Well,

10 people visit the website - don't buy shit 50 people visit the website - they'll buy something

<comment><USER2> Conversion rate after the user visits the website is going to be the same either way. You could triple your email outreach to his the same visitor count as snail mail and have tons of capital left over.</comment></comment></comment>


Towards Principled Design of Deep Convolutional Networks: Introducing SimpNet - <AUTHOR> https://arxiv.org/abs/1802.06205 <comment><USER2> I'm sure a lot of effort went to writing this paper, but I have to say I'm underwhelmed with the reported results.

First of all, CIFAR results in 2018 are just not going to cut it. The efficiency is only measured in terms of parameter count, and not even compared to CondenseNet. "SAF Pooling" does not deserve a special name, as it's just max pooling followed by dropout. And again, no significant performance benefit is reported.

Overall, the paper seems like a solid class project, but the contribution to the field is minimal.

<comment><USER3> Have you read the whole paper? cause the whole idea around that paper was not to introduce a new architecture or breaking any new state of the art results but to identify and introduce a series of guidelines by which one can achieve better performance in "any" architecture.

Their "demo" architecture which they call simpnet outperforms much deeper and more complex counterparts without the use of any fancy techniques such as skip connections, DenseBlock, etc. Not only their test network which was in fact a demo showcasing the effectiveness of the mentioned guidelines (as they indicate that in section 3 I guess) could outperform much heavier and more complex counterparts, the memory usage and training speed is also different and much better.

The "SAF Pooling" part was to show how a design choice concerning something as trivial as a pooling operation can particularly affect the end result, improving network generalization capability, and what the intuition behind such design choice was. In the section they talk about SAF Pooling, they clearly state they deliberately did not choose a complex mechanism such as the ones they had covered, in order to keep everything simple ( a reminder of/reference to what they first claimed in the introduction) and show how much performance can be harnessed out of a simple design with a proper systematic approach.

They also show some previously known practices/thoughts should not be followed and why. For example, concerning overlapped pooling they show the idea of overlapped pooling being better than its counter part, advocated by many including professor Hinton does not apply all the time, and interestingly using non overlapped pooling would be a better choice. Thats when they dig into the pooling operation and later show how to get to the SAF pooling idea and why that makes sense. The same thing goes about why architectures face degradation and explain what PLS and PLD issues are and why networks face such problems. They also explain why strided convolution is not a good replacement for maxpooling and many more.

<comment><USER2> I've seen at least a dozen of papers providing "guidelines" to good NN architecture design (e.g. "Rethinking the Inception Architecture"). I don't mind another one, and I'm not saying they gave a bad advice, but as a DL practitioner I haven't really learned much from this paper as far as new good tricks to use.

Anyone who tried using dropout in convolutional layers would use it after pooling/subsampling. It just does not make sense to do otherwise. Moreover, in my experiments, I didn't see any improvement of doing dropout there. If overfitting is a problem, dropout in conv layers is not going to help much. I've seen a number of various powerful new regularization methods published recently, I'd try them instead.

As far as max pooling vs stride two convolutions, I compared them on multiple architectures, and while I agree that max pooling usually provided a slight boost, there were exceptions, and the difference was typically not significant enough to care. In fact I remember max pooling having a significant advantage only in very small networks (such as Lenet5).

Same goes for the most of their advices: either you already know it, or it's not always true, or when true it does not result in significant accuracy gains.

More importantly, and as I pointed out already, there are two serious shortcomings in the paper:

1\. They have not tested their architecture on ImageNet. That alone disqualifies them from providing any advice on how to design a modern image classifier. Cifar is a toy dataset only suitable as proof of concept for new ideas, just to show that whatever crazy thing you came up with works in principle. In 2018 no one cares about results you got on Cifar. ImageNet is much more challenging, and that's why it requires all those "fancy techniques".

2\. They have not compared their architecture to the latest state of the art (e.g. CondenseNet, which has been out for several months now). From the numbers I see in the paper, they haven't even bothered to measure the amount of computation (FLOPs). Show me that SimpNet outperforms existing SoA in efficiency models on ImageNet, specifically in regards to latency of inference. Then I will take the advice seriously.

EDIT: I just read the section in the appendix which argues for using non- overlapping pooling (vs non-overlapping), and I fail to see any compelling explanation. Yes, higher layer feature maps show the presence of abstract features. Why should non-overlapping pooling be better here?

<comment><USER3> I agree on the ImageNet and I also think they should publish their results on that dataset as well. I don't see why it shouldn't perform well. CIFAR10 is small compared to ImageNet, However, achieving highly competitive accuracy is very hard. Nearly all SOTA architectures have more than 20 ~ 50 Millions of parameters or high memory usage. So I still think their result is impressive enough concerning their "small and simple" architecture with that amount of parameters. If they were to use any new/fancy techniques and achieve the current accuracy, I would say you are right, but concerning everything that's been said, its impressive for its kind. Its as if, a normal car is already on par with top sports car which utilized all they could at hand to achieve their maximum performance. Think what happens if an already well-performing car gets tuned up with those fancy techniques its rivals are utilizing. (The main idea for the paper by the way)

Again we need to pay attention here that, models such as CondenseNet cannot be compared with their architecture in that sense because the nature of the work is completely different. It seems you failed at getting their actual point concerning strided/max-pooling. Strided convolution always requires more parameters, it imposes more overhead compared to the pooling operation. Were you to have a limited budget concerning FLOPS/#params, you would clearly see what difference such trivial yet important statement makes.

Concerning the ImageNet, while I agree with you that they should also submit their results on ImageNet, I do not think failing to do so would disqualify them completely! Since the nature of the work implies you can improve "any" architecture with the aforementioned principles. (ResNet and SqueezeNet were two simple examples in their paper with a single change!) So you would still be benefiting from their work even if you are not using their demo architecture. Aside from that, they are trying to provide better understanding as to why certain things work better, so that with such gained intuition, a better strategy, a method is devised or developed.(The reason for using dropout and their effect, the use of maxpooling, the PLD, PLS issues, etc) So unlike CondenseNet, they were not focused on a specific technique to improve, rather they tried to focus on the main building blocks that affect the performance the most and why. and in choosing those building blocks, they aimed at the most primitive ones that nearly all architectures can take advantage of. So Simply put, you may start improving the already great CondenseNet or pretty any architecture by following such principles.

I could think of a reason as to why they may not have included the CondenseNet results. Looking at their comment on the arXiv page, it seems they had submitted their paper in December 2017 and also looking at the date CondensNet was published,(November 25, 2017) its possible by December they were already in the process of submitting their work and never noticed CondenseNet.

They first dismissed the previous claim that advocated: "use overlapped pooling because of the imagelike properties and also because the non- overlapped pooling loses a lot of information in that sense which affects the performance adversely", then they indicated that when considering their intuition and what actually exists, looking at their experiments proved the non-overlapped pooling performing better. Their provided intuition seems plausible, but at the same time it may not apply to all situations.

<comment><USER2> Ok, you have a good point regarding max pooling being more efficient than strided convolutions. I didn't think of that.

Regarding overlapping pooling: ok, so they dismissed the previous intuition. But I don't see any new intuition offered! Yes, those higher layer feature maps are more abstract, so what? Why exactly non-overlapping pooling should work better for more abstract "images"? At least in Hinton's paper they tried to explain it.

Ultimately, it all comes down to this:

1\. I often use a vanilla ResNet-50 with ImageNet as a baseline (e.g. [1]]). Can you tell me what suggestions from the paper I can apply to make it either more accurate or more efficient?

2\. If I use CondenseNet [2], what suggestions from the paper would help me improve accuracy/efficiency?

3\. Alternatively, if I use the SimpNet as a starting point, what adjustments should I make to make it competitive on ImageNet?

I have a 4 GPU workstation sitting idle at the moment, so I can test any of these scenarios right away.

[1] [https://github.com/tensorflow/models/blob/master/official/re...](https://github.com/tensorflow/models/blob/master/official/resnet/imagenet_main.py) [2] [https://github.com/ShichenLiu/CondenseNet](https://github.com/ShichenLiu/CondenseNet)

<comment><USER3> Forget about more abstract "images", you are not dealing with "images" from a certain point forward in a network. The concept and nature gets very different. You are dealing with "feature"-maps. when this is the case, you can no more make assumptions based on dealing with images. If we are dealing with some features, it may make sense not to include duplicated features which will ultimately result in not very distinctive or accurate patterns. I guess, when you avoid the duplicated features or let me rephrase it better, prevent the overlapping, this way, you are essentially paying attention to the unique combination of features in the input and as the network is further trained, such patterns get more developed and the network can have much easier time to discriminate between classes, because of better feature entanglement. that's what I think is happening.

1.There are more than 10+ points in the paper, simple things that I guess you can readily do are : 1.Increase the interlayer connectivity 2.Use larger feature-maps, 3.Use max-pooling (or its dropout variant) (change the upper layers that do downsampling, to have the stride of 1, instead of 2 and then use a max-pooling after them for downsampling) 4.Use Global Max-pooling instead of Global Avg-Pooling 5.ResNet seems to be using padding and stride of 2 for early layers: 1.Do padding = 1, set stride = 2, remove the immediate pooling layer and instead use the stride 2 for the outgoing volumes(side branch and the main one, use stride of for the others). (the early local information are important, so the operation max-pooling carries out would not be interesting. 2.Experiment with the removal of 1x1 kernels in early layers, (as a starting point, change the first/two resblocks and later on in the next round of changes, add more blocks). 3.remember to use GP at the end as well. 4.Since we are removing 1x1 kernels in early layers, we will be facing an increase in #params, we first carry out the test, run the counterpart resnet with increased #params, or balance out the neurons in the next round (as they show in their paper, this balancing can be tricky and may need a well-planned distribution)

2.You can go about this like ResNet, they have similar basic building blocks, multiple poolings, use of stride 2 and average pooling.

3.SimpNet was a demo architecture, I don't think that would make sense :-/, but anyway if we are to enhance it based on what we have available, I would say, SimpNet would benefit much more if it was deeper and had interlayer connectivity. So since they point out to papers such as DenseNet, stating one of the main reasons they perform very well is because of the better and richer information pools made available by using interlayer connectivity, we can use that as well. Aside from these, they have not included their ImageNet tuned network. I couldn't find one in their repo as of today. The ImageNet model may differ, so we can either run our tests on the CIFAR10 model that we have or wait until they update their repo with the ImageNet model.

One important thing to note here is that, after all the changes, the result should then be finetuned (hyperparameter tuning, multiple runs to check the variance and account for random initialization effect, etc ) so we can come to the right conclusion. (By the way whatever result you get, I think it would be a good idea to send the authors an email and let them know about your experiments)

Good luck and keep me posted</comment></comment></comment></comment></comment></comment>


Why I'm Changing My Mind About Bitcoin - <AUTHOR> http://www.businessinsider.com.au/im-changing-my-mind-about-bitcoin-2013-12

<comment><USER2> Wow, an article on Bitcoin that provides some sensible, down-to-earth arguments. It also mentions the demand from China, which goes a long way towards explaining its price rise this year.</comment>


Android 4.0: A coming of age and homage to Windows Phone 7 - <AUTHOR> http://www.extremetech.com/computing/100591-android-4-0-a-coming-of-age-and-homage-to-windows-phone-7

<comment><USER2> > _Android is ready and eager to drop its mantle as the nerd and power user > OS._

> _We all know that Android is the geeky option._

This doesn't match my notion of the Android and Apple ecosystems.

<comment><USER3> Fo' real. Anybody who thinks this only reads tech news and doesn't deal with mobile phone consumers in the real world.

Android is the _cheap_ option. You can get Android burners now on budget telcos like Cricket and MetroPCS. Geeks like it too, but that's not the massive perception of the OS. It's becoming just the default phone.

<comment><USER2> Honestly, the only passionate defense I've seen for Android has seemingly been nothing more than thinly-veiled rejection of Apple, from people who are staunchly anti-Apple. I've never heard anyone seriously defend Android for being consumer-friendly, or easy to use, or fast/smooth, etc.

<comment><USER4> I have an iPad 2 and a Nexus S and my GF has an iPhone 4. I build iOS apps. I know my way around the cocoa API and the devices and for day to day use I much prefer my Nexus. The deep google integration is fantastic and vanilla android on the nexus is a polished experience (sans hardware accelerated animations), much more so than all the crappy OEM interfaces.

I'll give you fast/smooth, but from now on, I can't see my next phone being anything other than a Nexus.

<comment><USER5> Google Maps with Voice Navigation was the killer app that made me ditch iPhone 3G for Nexus One. Now with Nexus S, I haven't looked back.

If your digital life is in Google apps, a Nexus phone is a very sensible choice.

I'm not willing to put up with carrier crapware on non-Nexus phones though. That would be too big of a compromise for me.

</comment></comment></comment></comment></comment><comment><USER6> I call bullshit.

Sure, they have found a couple of Android screens that have squares on them, and it is true that both Microsoft and Google are rejecting the "analogy" approach for UI that Apple has embraced. But that is as far as it goes.

Look at the Android lock screen or the start screen and you'll see they are totally different. Android simply doesn't use the card-based metaphor that Windows uses.

(Also, note that Duarte came from Palm - surely it would be more interesting to see how WebOS influenced Android than Windows did?)

</comment><comment><USER7> Not an homage at all.

ICS and Metro are both examples of Swiss style maturing in mobile UI design.

Apple at its best in iOS is similarly executing Swiss style.

<comment><USER8> And at its worst, Apple gives us faux leather GUIs.

</comment></comment><comment><USER9> All this while comparing Metro to a lavatory sign and dissing Apple's design too.

From [http://thisismynext.com/2011/10/18/exclusive-matias- duarte-i...](http://thisismynext.com/2011/10/18/exclusive-matias-duarte-ice- cream-sandwich-galaxy-nexus/)

"Across the board Google and Android is taking design a lot more seriously," Matias says, and points out that Roboto is used throughout the system. "There's this thing that's happening right now in user interface design that I find kind of shackling. The faux wood paneling trend, and the airport lavatory signage trend." He laughs when he says this and pulls up a slide on his computer, a split screen of an Atari 2600 and… airport lavatory signage. It's an obvious dig at both Apple and Microsoft.

<comment><USER10> The comparisons are very appropriate.

<comment><USER11> Apple cranked up the textures to 11 in iOS 5. So ugly and juvenile... I really find it difficult to believe that this is the same company that produced the gorgeous iPhone OS in 2007.

<comment><USER8> For example, I can deal with Apple's brushed metal, but who thought a faux leather GUI was a good idea??

</comment></comment></comment></comment><comment><USER12> Homage to Windows phone 7. How about we call it what it is. A Windows 7 rip- off.

<comment><USER13> when do people finally get it? everything is a remix.</comment></comment>


A new sandboxing JavaScript framework: FuseJS - <AUTHOR> http://github.com/jdalton/fusejs

<comment><USER2> Direct links to github projects really shouldn't be HN topics. An article, explanation, etc would make more sense -- maybe the github wiki link for a project, if it actually explains something. Even that doesn't work for this project, though.

Something distilled is more appropriate.

</comment><comment><USER3> Framework emulation will allow FuseJS to use the plugins and extensions of the emulated framework as well as allow devs to use the framework syntax they are more familiar with.

<comment><USER4> So I need to load an additional js framework in additional to whatever one I'm using so that I can run plugins from yet another framework? As much as I _love_ javascript, we still have to remember that most people don't use the kickass speedy browsers that we tend to (Chrome, Safari). Depending on your audience, you have 30-40% of your audience using Firefox. That's pretty good, but things get boggy with FF and too much js running.

If you're building a web application, i.e. something like Gmail, then you need to pick one js framework and stick with it. Make your code as efficient as possible. If you are just building a regular web site, do you _really_ need to have all of that extra overhead for a couple of widgets?

Treat js development like da Vinci treated marble. Cut away until you find the statue in the marble.

<comment><USER3> The idea is that with FuseJS powering the framework it will be more stable (additional bug fixes, additional browser support) and faster (less abstraction, forked methods, speedy design). So you can replace the emulated framework with FuseJS + emulation layer and not have to reprogram your entire application that is running on the old framework. FuseJS is designed to be modular so you can use only the parts you need :D

</comment></comment></comment><comment><USER4> I'm confused about what the point is for this project. So far I only get the sandboxing part. That part makes sense. But running "emulation" for other libraries? If you just use jquery/yui/extjs you don't have to worry about native prototype modifications.</comment>


Ask HN: What kind of contracts a freelancer should/should not sign?  - <AUTHOR>

<comment><USER2> a non-compete clause or anything that makes it so you can't own your own work.</comment>


StackEdit is a full-featured, open-source Markdown editor based on PageDown - <AUTHOR> https://stackedit.io/

<comment><USER2> it's hard to keep all the markdown _converters_ straight.

let alone all of the web-based markdown _editors._

but, for those of you who are trying to keep up with it, stackedit.io here is one of the better ones that's around.

i myself still like dillinger.io the best, but this one seems to be a full-on match for all important dimensions.

-bowerbird</comment>


Confirmed: Facebook Loses CFO Gideon Yu - <AUTHOR> http://www.techcrunch.com/2009/03/31/confirmed-facebook-loses-cfo-gideon-yu/ <comment><USER2> HN thread on New York Times reporting of same issue:

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


Zoom End-to-End Encryption Whitepaper - <AUTHOR> https://github.com/zoom/zoom-e2e-whitepaper <comment><USER2> How can they offer E2E while still complying with Chinese laws?

<comment><USER3> Quite easily. They just need to make it so that one of the "ends" is Zoom itself.

<comment><USER4> Zoom isn't an end. That's not what "end" means in the context of "end to end".

<comment><USER3> It shouldn't be, but if you don't control the software and the encryption algorithm, there's no reason why zoom couldn't just sign the content so that could evesdrop on everything.

<comment><USER5> Signing has nothing to do with eavesdropping.

<comment><USER4> That's simply not correct. If you don't have authentication you don't have encryption.

</comment></comment></comment></comment></comment></comment><comment><USER6> It seems to me they have a way to do E2E without sacrificing quality with many participants.

<comment><USER4> It seems more like they didn't implement E2E encryption.

<comment><USER6> How so?

</comment></comment></comment><comment><USER7> At [https://team.video](https://team.video) instead of lying to you and saying we do end to end encryption, we tell you that we do point to point encryption: [https://team.video/pages/security](https://team.video/pages/security)

This allows us to identify the active speaker, keep some statistics on who spoke in the meeting, and rely on mediasoup's fantastic media router ("e.g. hey, we missed a keyframe there, can you give one to me?")

(edit: omit needless words)

<comment><USER6> So we should try your service just because you say you won't lie? What do you think of this white paper anyway?

<comment><USER4> Compare:

1\. Zoom: is actively lying right now, has lied in the past, and has had numerous security breaches which were easily avoidable.

2\. Team.video: This Doug W. Brunton fellow may be lying, but at least is not currently taking an opportunity to lie, and seems to have a decent grasp of the tradeoffs involved in end-to-end versus point-to-point.

<comment><USER6> So we should use your service because you don't lie, correct?

<comment><USER8> I don't think he's trying to convince you he's not lying, but rather we should promote services that encourage transparency and open standards.</comment></comment></comment></comment></comment>


Facebook is building its own Steam-style desktop gaming platform with Unity - <AUTHOR> https://techcrunch.com/2016/08/18/facebook-desktop-game-platform/ <comment><USER4> Steam has succeeded (I think) because they've managed to walk a thin line w/ drm and not screwing up the user experience too much.

Facebook would be smart to have gaming and social as two separate things with optional integration with Facebook. They'll screw it up because they'll make the optional part super annoying. Because when have they not?

I turned off my Facebook years ago. That works fine for me, but I'm frustrated any time someone uses Facebook to post something I'd like to read (like yann lecun or john carmack) because it's a step backwards. It'd be like Doom being released as an AOL exclusive.

Anyway, my money's on steam and ue4 dominating for years to come, not a new dist platform and not unity.

<comment><USER5> Facebook's Oculus has already tried to go the way of exclusives and walled gardens so I doubt it will take off. PC gamers are an opinionated noisy bunch and they will cause all kinds of drama for Facebook if they aren't as open as Steam. I don't really get this anyway. Steam works. Origin and Battle.net kinda make sense since those are the publisher's platform, and there's also GoG's Galaxy. There's really not any more room for another competitor.

<comment><USER6> > Steam works

But does it still provide a great experience for gamers and creators? I'd wager so say they can do a lot better, but they're letting their success stagnate them. Buggy mobile apps, questionable revenue share on Workshop items, no strong answer to the discovery of good games ever since Greenlight came out, IMHO Valve isn't doing enough with their platform on their own. I'd welcome competition to get them to perk up their step a bit.

<comment><USER5> There already is competition. GoG's Galaxy. It's great. Nobody I know uses it. Not a single streamer on twitch I've ever watch uses it. I'm fine with competition too, but not from Facebook. They've already fucked up with the Oculus store and I don't trust them anyway. Facebook is an unscrupulous advertisement company that turns intimate personal information into pay per click ad dollars.

I'd even go so far as to say Valve not caring is a good thing. They don't try to interfere too much and when they do and it blows up they walk it back.

<comment><USER7> > I'd even go so far as to say Valve not caring is a good thing.

Ridiculous statement.

Waiting weeks for a support request is not a good thing.

Waiting weeks then getting response in russian is not a good thing.

The app being a generally slow clunky experience is not a good thing.

Piss poor preview games is not a good thing.

CS Go gambling is not a good thing.

DotA2 is not a good thing. :p

A lot of things were even worse before Origin arrived and Valve started at least a half-assed attempt to make things better.

<comment><USER8> What's wrong with DotA2??

<comment><USER9> For this person it's likely that it's not League or HOTS... or to make the standard joke... it's actually challenging and for adults instead of an ez mode toy for kids.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> This seems like a smart play and necessary if they're going to take Steam/Vive head on in VR.

That said they really need to catch up with the Rift - maybe their focus on the lower end of the market with Gear VR will save them, but outside of this the Rift is pretty disappointing.

Steam game support for games that run on both the Rift and Vive make it stupid to buy games on the Oculus store, but worse than that once you've played with the touch controls and room scale that the Vive offers it's clear the Rift just does not compare.

The Vive is heavier, it's hardware is not as aesthetically pleasing and it's clunkier (more wires, bigger pain to set up). Other than that though it's categorically better - if Oculus doesn't ship some touch controllers and room scale sensors soon I think they'll lose the high end market (unless they're able to power through on brand alone). The Vive also has an interesting front facing camera and doesn't let light in through the nose.

I've been seeing people on Craigslist selling their Rift and keeping their Vive - not a good sign for Oculus.

My Rift is unplugged and in the closet.

<comment><USER11> Well, they're doing a very poor job with the Oculus store, why would this one be any different?

I'm not saying they don't have the money or technical talent, but clearly the politics of Facebook are morally onerous to gamers. Everything about the Rift should have been a slam dunk. It had the mindshare, pr, capital, early adopter advantage, etc. Hell they even have John Carmack.

Now its the red headed stepchild of the VR wars. Oculus went from a gamer friendly company to what seems to be something run by a bunch of milquetoast MBA's with zero interest or experience in gaming. Cut-throat deals like exclusives, contradictory and anti-consumer policies, confusing PR (why is Luckey yelling at people on reddit?), inability to catch up (no motion controls yet?), etc have hurt the brand and the Vive seems like the go-to for VR right now. In a couple months the PSVR will be out, with motion controls. Where exactly does that leave Oculus? As the has-been of the industry?

I can't see Facebook winning over the PC gamer crowd. Casuals have mobile, they're not installing this thing. Beating Steam means beating Steams street cred which its been carefully building for over a decade. I just don't think companies like Facebook have the culture to win here. The types of people who can work a monopoly well in the social media space are pretty much the worst kinds of people you want in the gaming industry, and Oculus's failures are proof of that.

<comment><USER12> > Oculus went from a gamer friendly company to what seems to be something run > by a bunch of milquetoast MBA's with zero interest or experience in gaming

Oculus isn't a gaming company and Facebook didn't buy it for it to be one. Facebook sees VR as the next big social platform.

> Oculus's failures are proof of that

The Rift has outsold the Vive 10 to 1. And the Gear has sold over a million units.

<comment><USER13> >The Rift has outsold the Vive 10 to 1. And the Gear has sold over a million units.

Completely false. Vive has outsold CV1 2:1 so far. Best approximate numbers right now are 50,000 Rifts to 100,000 Vives.

<comment><USER12> Where are you getting that 50k Rifts number from? Every estimate on Rift sales has it at around 500k.

<comment><USER14> The last numbers I saw were here: [http://www.roadtovr.com/htc-vive-sales- figures-data-100000-s...](http://www.roadtovr.com/htc-vive-sales-figures- data-100000-steamspy-data/)

</comment></comment></comment></comment></comment></comment><comment><USER15> I'm beginning to get sick of the Unity monoculture. All their games have the same feel to them, which I can only describe as 'sluggish'. Truly ambitious games built with Unity inevitably wind up buggy as well, since doing anything outside the box requires hacks and workarounds.

<comment><USER16> Yep, if there was ever a game that deserved a custom game engine, it would be Kerbal Space Program. The version of Unity that they used constrained them to 3.5 gb, and 32 bit floating point coordinates, in a game that deserves a true scale solar system.

I keep hearing that double precision floats for coordinates are unrealistic because of the optimisations that are available only for 32 bit floats, but I am willing to make serious sacrifices to free myself from the Spheres of Influence and the Orbital Railroad of Destiny; the real solar system mod forces a full scale environment, and even though the visual geometry is off by roughly a metre from the physical geometry, I still consider it to be an improvement.

<comment><USER17> The engine itself can only do so much, if you don't want to write a whole new graphics library too.

This post by the _Outerra_ dev on planetary scale precision issues and on how to circumvent some issues by implementing custom log scale depth buffers offers a good introduction.

[http://outerra.blogspot.de/2012/11/maximizing-depth- buffer-r...](http://outerra.blogspot.de/2012/11/maximizing-depth-buffer-range- and.html)

</comment></comment></comment><comment><USER18> Valve/Steam solved a problem that the PC gaming community faced in late 2003, namely streamlined distribution of online content. Now there seem to be countless fighters in the ring; I can only see this experiment ending in either a small fandom based on exclusivity deals or smoldering out quickly.

<comment><USER19> Consumers don't really need multiple steam-like platforms either. I don't see the market supporting more than a couple. It's a steep hill to climb for anyone who want's to compete with Steam.

<comment><USER20> Steam, and GoG are the only companies who seem to make it stick.

On paper, GoG isn't doing things that differently than EA and Ubisoft (just the no-DRM bit, which is admittedly a pretty great selling point), but I think EA and Ubisoft's brands are just so toxic that people are loathe to use them for anything they aren't _forced_ to use them for. I think Facebook runs into much the same problem nowadays. Their brand is just increasingly toxic outside their core business, and the network effect is strong enough that people don't really have much of a choice there.

Blizzard is also a player, but like EA and Ubi they only sell their own products through it.

Aside: EA has effectively wiped most knowledge of its existence from the Internet, but I remember when EA launched its _first_ Origin platform back around the 2006 era, and then discontinued it a couple years later. I lost all my Battlefield 2 expansions, and I've been incredibly gunshy about them ever since.

[https://en.wikipedia.org/wiki/Battlefield_2#Booster_packs](https://en.wikipedia.org/wiki/Battlefield_2#Booster_packs)

<comment><USER21> There's actually lots of Ubisoft games on Origin.[0] I've also seen The Witcher and lots of indie games on there, too. I poked around Uplay a bit, but that appears to be 100% their own.

[0] [https://www.origin.com/en- us/store/browse/ubisoft](https://www.origin.com/en-us/store/browse/ubisoft)

</comment></comment></comment></comment><comment><USER22> I feel like if this Steam-clone were called 'Oculus Play' or some other name more-distanced from 'Facebook', I'd be less uneasy with it. I know in all likelihood it's an irrelevant distinction from a data harvesting standpoint, but the implied expansion of the 'Facebook' brand from its original locus of a yearbook-style personal page makes me uncomfortable.

I'm not (entirely) opposed to social integration of my gaming. But if a compelling gaming portal introduces social network integration, I'm more amenable to it than going the other direction, when a social network makes me download another desktop app.

It's also somewhat contrary to Facebook's established practice of having distinct brands (albeit as a result of acquisitions); a brand that appeals to a different demographic. Instagram appeals to a different kind of person than Facebook; WhatsApp appeals to a different kind of person than Messenger, and the like.

</comment><comment><USER23> As seen in the comments here there's a strong reaction of "why would I ever use this instead of Steam?" from the existing gamer crowd. Yet from Facebook's perspective even if _not one_ Steam user jumps ship, they could theoretically still grow their platform to 10x the size of Steam based off just their existing Facebook userbase. That's tremendous upside and seems completely worth the risk.

<comment><USER24> I have to agree, the sheer numbers of people Facebook has access to could crush Steam in terms of active users. I love Steam and think Facebook has enough of my information as it is but you can't ignore these numbers.

<comment><USER25> Why can't you ignore them? The Catholic church also has a very high number of users and you surely ignore those wrt competing with Steam. The Vatican is certainly in an even worse position to convert users to game shoppers, but I don't think that Facebook is that far ahead in this. People have pretty much stabilised in how they expect their relationship with Facebook to be and any offers to extend it to new grounds are likely to be ignored. When Farmville happened, Facebook users were a lot more experimental.

</comment></comment></comment><comment><USER26> This is going to end up being the junk shed of game distribution. In everything it does, it seems FB's mediocre content curation/distribution is 'good enough' for its users. It's the fast food of the Internet, after all.

That said, I assume it will be successful and I'm a fan of the idea. It'll help bridge that gap from a casual browser-flash gamer to start installing clients and move onto more serious entertainment.

I'm confident this WILL remain a tool for strictly casual gamers, though. Discerning/younger audiences only use FB for event invites at this point.

Steam rules the space because it has fought for credibility in the gamer community. Facebook on the other hand caused so much hate/drama when they bought Oculus.

</comment><comment><USER27> I do not see myself moving away from steam anytime soon. Its easy and works.

<comment><USER28> They will bundle a killer app with it, just like steam did with half life 2.

<comment><USER29> I REALLY do not see Facebook getting the killer app like Half Life 2, or Battlefield like mentioned below on Origin. Besides, that was a completely different time, before anything even existed. Steam didn't pull users away from the number one software distributor, to become number one. It was more of a killer app, just to adopt the concept.

Further segmenting your software between services, is exactly what people use Steam to AVOID. The fact that everything is in one place, no lost keys, no lost disc, is its selling point. It's bad enough I have to also use Origin to play some key games. So I'm certainly not going to further dilute my libraries.

<comment><USER30> > I REALLY do not see Facebook getting the killer app

Between Carmack and Facebook's ability to buy any developer who is on the market I think they can put up a solid contender at launch. Probably won't be enough though; I see this more as a Tidal or Apple Music kind of move-- existing major player enters the market with desirable exclusives or platform integration but fails to break out of the middle of the pack.

<comment><USER31> So you're guessing they'll end up like Microsoft's Xbox division - <USER2> billions to place a solid constant 2nd place, and still not being net revenue positive after a decade.

</comment></comment></comment></comment></comment><comment><USER32> > Will require facebook login to play games

Is gonna be fun to see this thing rise and fall more faster than the shit uplay is.

<comment><USER33> If there's one thing I want, it's my wife's friends getting spammed with Facebook notifications about the fact that I got the Monster Kill achievement in Hello Kitty Island Adventure.

<comment><USER34> Now I won't have to tell my boss that I need a sick day because I was up all night playing Civ. He'll already know....

</comment></comment></comment><comment><USER35> On a related note, why doesn't steam install into android? It seems to me like there are hundreds of dozens of android games on steam(literal ports from android to PC/MAC) but there is no way for the player to install the android version on their phones, unless if they also buy from Playstore the games they already have on Steam.

<comment><USER36> 1) Owning a Windows/Mac/Linux copy of a game does not mean you implicitly have a license to the Android version, even if it's a "literal port".

2) It's not really in Steam's interest to give you that license for free for games you already own, or to set up some kind of cross-buy where you automatically get it if you buy a PC copy. It'd cost them a ton of money and they have no reason to promote Android as a gaming platform alternative to PCs.

3) The juicy market on mobile isn't selling premium games like on Steam, it's selling in-app purchases in freemium games. I don't have an Android device handy but the first paid game on my iPhone's "Top Grossing Games" list is Minecraft at #44. The only other one in the top 150 is Reigns at #106. The premium game market on mobile is just not profitable enough to make a huge loss-leader like 2) above viable.

<comment><USER37> I think many developers would opt into giving Android versions of their game to owners on Steam if they have an Android port. If this wasn't the case then something like the Humble Mobile Bundle, which regularly gives you DRM free PC\Mac\Linux + Steam keys + Android APKs would not exist. At this point I think there is a large backlog of titles on Steam that have Android ports, and like with Mac and Linux developers would add those to Steam to make their older titles more attractive to new buyers.

This feature would be more of a value add to Steam making the platform more attractive. If Steam on Android was big enough Valve could capture some of the free to play market as well, you're forgetting that even though Steam sells a lot of premium titles many of the most popular games are F2P already, roughly 20 of the top 100 player count games on Steam are F2P. Valve knows how many people have the Steam app installed on Android and it's fully possible that they don't consider the effort worth it for them. For me it'd be a nice way to manage updates for games that I already own on Steam, have APKs for (via Humble Bundle), but don't want to re-buy on Google Play just for automatic updates.

</comment></comment></comment><comment><USER38> There's no way this can go wrong. If Facebook is known for anything, it's moldbreaking and open innovation.

</comment><comment><USER39> Steam is an awesome plaform that doesn't try to piss the user off (looking at you EA Origin and UBI Play). I don't think anyone can outdo this right now (at least on PC). This FB portal will probably also require a FB? Another fail if this is the case.

</comment><comment><USER40> You mean Facebook want to get into game distribution business? The last thing we need, is another DRM ridden distributor that also pushes for distributor lock-in features (like they did with Oculus initially). I buy my games through GOG.

</comment><comment><USER16> Facebook. Unity. Yuck.

I'm sure it will make them a killing, though (not sarcasm)

<comment><USER41> Well said! Haha yeah, you've got the two most bloated proprietary apps working together. Woooo!!

Some men just want to watch the world burn!

These softwares are so terrible for the world. Terrible for any person trying to make a living programming and terrible for education.

I only realized recently how easy* it is to create realistic graphics using libre software. (I believe this is what draws most people to Unity - <USER3> that it's hard to replicate their demos)

Implement the features I want

Forget about all the bloat I don't want

Get all the benefits of my custom software, favorite os and editor.

</comment></comment><comment><USER42> Unity games are not going to strongly compete with Steam. Unity engine just isn't performant enough. I think this is more for mobile-style casual games: think flash games with 3D instead of 2D graphics. Will probably make a chunk of change from bored homemakers, but it isn't going to pull marketshare from 'PC master race'-type Steam gamers.

<comment><USER10> Unity is powerful enough for 3D open world games ([http://www.firewatchgame.com/](http://www.firewatchgame.com/)).

I was under the impression that Unity and Unreal were basically comparable engines - is this not the case?

<comment><USER43> > _I was under the impression that Unity and Unreal were basically comparable > engines - is this not the case?_

I'm not 100% intune with game dev, but I always thought Unity was more indy- focused while Unreal was more big boy focused. I know off the back of my head that Unreal powers games like Street Fighter and Bioshock.

I can't really find any other $100MM+ budget games developed with Unity.

<comment><USER44> Like any engine, Unity has its unique advantages and drawbacks. A small dev team can cover a lot of ground using Unity, and some programming tasks are actually quite pleasant with it. Some people have asserted in this thread that Unity's performance is deficient, but it's easy to write games that run smoothly on a large gamut of devices, whereas UnrealEngine's IDE and even almost empty scenes made with it run at 5fps on my maxed-out 2012 iMac. It might _scale_ better, but Unity beats it handsdown in most low and medium complexity workloads.

These are reasons why Unity is well liked among indies, and not necessarily only among non-technical people either. But if you have many millions to burn, other engines give you more room for customization, have more high-class sales teams, and have a workflow that is optimized to be familiar to artists with a AAA background.

<comment><USER45> I've been developing a game using UE4 on a 2012 iMac for the past year and I get about 60fps@1080p in the editor on the highest settings. I can comfortably run DS+2 Clients to test multiplayer when I scale it down to Low. The only really slow thing is DebugDraw calls, which I haven't found to be a blocking issue, though it it certainly annoying.

</comment></comment></comment></comment></comment><comment><USER46> By "desktop" do they mean "not mobile", or "not web" for that matter? Unity's support for mobile (and to a lesser extent for WebGL) is certainly one of its major selling points.

The article makes some vague hypothetical referfences to mobile, but doesn't explicitly say if Facebook's "desktop" platform is intended to support mobile devices right out of the gate.

>Meanwhile, these platforms' support for mobile could allow Facebook to earn taxes on mobile games without owning its own mobile operating system. It once tried a different approach, building an HTML5 mobile web gaming platform called Project Spartan to sidestep the iOS App Store and Android's Google Play. But developers dismissed it as underpowered compared to the native operating systems.

</comment><comment><USER47> Wait, so I'm going to see more invitations from friends to games that I have no intention of playing than I already do? I mean, I figure that's kind of part of the business model by now. Some days I miss fragging newbies in Half- Life DM, but when seeing stuff like this, I'm glad I freed up my time to do stuff like mowing the yard and scooping kitty litter, which, strange as it might sound, are on par to me now with achieving victory in an online game.

</comment><comment><USER48> To me the question is will people be willing to use it? I feel like a lot of people I know are trying to disengage from FB as much as they can while keeping in touch with people. The older generation are not the ones who are going to buy a ton of games through FB and the younger gen seems mostly happy with Steam. Personally I do not see a market for this. We're not talking about web based games like back in the Farmville days.

</comment><comment><USER49> Nice move from Unity, which has built a great development suite but is hampered by its own success with its very reasonable fixed cost license per seat business model. This partnership allows them to get a revenue cut of its customers' games without alienating them.

I had always expected Unity to build their own steam-like platform, but this short circuits things with an immediate huge userbase. Great move.

</comment><comment><USER50> i miss being able to install a game without having to install a bunch of associated crap with it.

as much as i love steam it has always been borderline malware imo. sits in my system tray, uses my bandwidth, cpu cycles and memory etc... was even worse back when it refused to let you play your games without an internet connection too. :P

</comment><comment><USER51> Are they going to have two separate game stores/platforms? Oculus store for VR and a separate one for everything else?

On the one hand it seems redundant, on the other they can at least share a single sign on and friends list for everything they do, being Facebook and all.

</comment><comment><USER52> Will they have the same sales though? After buying Ryse for $3 and filling my game library for 300+ titles on a very limited budget, I don't think about switching to any other game store.

</comment><comment><USER53> Unity is a good engine but I've been playing around with libGDX lately, got a first person XP walking around a cube now with a page of code. Easy, I'm not a game dev.

That same code runs unchanged on Android, PC (Windows, Linux, Mac), iOS (I've not tried this) and HTML (using the excellent GWT compiler). I'm using IntelliJ (it works but not as nice as Eclipse, unfortunately Android support seems better now in IntelliJ). Just pick the target and run.

Zuckerberg has a good idea but needs to use libGDX to make it a success. Call all stop and go libGDX. He won't succeed with just Unity.

As a side note, I don't use Facebook, can't stand it.

PS I'm not in favor of Facebook winning on this either, Steam rocks.

</comment><comment><USER54> Wouldn't be surprised if the Facebook app (& Messenger) will be used to distribute & host these games. Skipping the app stores.

</comment><comment><USER55> Android client for Steam is a long time coming. (and no, not just a chat client, but a dedicated one to distribute Android games)

</comment><comment><USER56> I can't see this winning over PC gamers. They'll probably stick with Steam. Casual gamers will give it a shot though.

</comment><comment><USER13> Ugh. Steam is sluggish enough as it is, being implemented entirely in C++/QT. I cant even imagine how awful this would be.

<comment><USER57> Steam is basically an app that browses a website, and also downloads some stuff. It feels like a clunky web browser because it is.

</comment></comment><comment><USER58> If Facebook is serious about gaming it may just acquire GoG and integrate it with it's service.

</comment><comment><USER59> Seems like an electron/nwjs app, does it sounds plausible ?

</comment><comment><USER60> They will have to do something once everyone stops using them as a social network. Like when MySpace became a music site.

<comment><USER61> > They will have to do something once everyone stops using them as a social > network.

Do you really see this happening any time soon?

<comment><USER62> Years ago I used to think they would be replaced like everyone before them. But they've reached such a large mass of people, I'm not so sure anymore. It has to happen eventually, but I can't even guess when that would be anymore.

</comment></comment></comment><comment><USER63> kill it with fire!

</comment><comment><USER64> Messenger and Facebook are the two buggiest apps I use most often. For about a week now, the "seen" indicators have been completely broken on all platforms for me and for some of my friends. Before that, somehow my messages got pinned to the top half of the screen for a day, which would be neat as a feature except (1) how is that bug even possible in a sane system (2) its not a feature.

Can't wait to use a gaming platform engineered by the same people. Who cares about bugs in games anyways? Multiplayer gaming is very resilient.</comment>


Show HN: PyScribe – A Python library to make print debugging more efficient - <AUTHOR> https://github.com/alixander/pyscribe

<comment><USER2> Small suggestion: make the output format configurable or at least choose simpler defaults. I think the lib itself is pretty nice and usable, but the produced logs aren't.

The log as output now contains a lot of 'human readble' text and almost full sentences, but in my experience when you are skimming a logfile manually, which for me happens a lot, it really slows you down because you constantly have to skip over the useless parts to get to the core which in this case would be values of variables.

For example:

\- _From line 9: x is the int 5_ : _From_ is imo completely unnecessary. _line_ could be left out as well for me, a number followed by a colon is standard enough and if you know it is a line, adding that word adds nothing to the usefulness of the log and makes for longer lines. Arguably one would rather call it _an int_ and not _the int_ but I'm not a native English speaker so not sure about that. It does sound weird to me though. Furthermore while I'm at it I'd leave it out all together. I would prefer something terse as _9: x int 5_

\- _bar is the str foo at beginning of for loop at line 12_ it really took a careful reading to grasp what it says. I don't immediately know what I'd pick instead, something like _12: begin for: bar str foo_. Also maybe you should stick to standard Python printing as on the repl and use _' foo'_ in quotes so it's immediately obvious it's a string (you seem to be doing that while printing dicts?)

<comment><AUTHOR> Excellent suggestions, will be adding format configurations next!

<comment><USER3> That being said, be careful to not make it too difficult to use.

Configurable is good, as long as there are sensible defaults that just work.

<comment><USER4> IMO good-defaults will emit text people could reliably parse/interpret/transform with _other tools_.

This helps keep the project simple and focused, since users with specialized needs don't need to ask you for specialized features.

</comment></comment></comment></comment><comment><USER5> I think it is unfortunate this does not support python 3. I think we have already passed a tipping point in the migration from python 2. Just look at the python 3 readiness[0]. I believe it might already be more interesting for beginners to learn python 3 over python 2 now.

All new packages should think about supporting python3, or at least be ready to support it with a lot of __future__ imports.

[0]: [http://py3readiness.org/](http://py3readiness.org/)

<comment><AUTHOR> I'm not exactly sure if it doesn't work on Python3, I had only tested it on 2.7 so it mightt (there aren't any external dependencies). I'll probably test it on Python3 and safely include that in the supported versions soon.

<comment><USER6> It wasn't too bad, looks like you had a couple of calls to xrange() (now just range()) and were using the result of a filter as a list. I've submitted a PR to add 3.4 support to it, and to add it to Travis.

</comment></comment></comment><comment><USER7> I noticed a couple of minor issues and thought I'd post them here rather than making issues on github since the author is reading.

First, desugaring doesn't treat the shebang line of a file properly for executable python scripts on Linux. If the first line is, for example, '#!/usr/bin/env python', then the desugared file has three imports at the top of the file and the shebang line after those imports. It would be nice to preserve the shebang line as the first line (and maybe also to make the desugared file executable if the input file was executable).

Second, the desugaring doesn't ignore commented out lines, as I discovered on commenting out a line like

        #ps.p("my test: " + foo)

before noticing the optional label parameter. Trying to run a file with that line or desugar it results in an IndexError.

<comment><AUTHOR> Ah, you're right. Totally forgot about that. Thanks for pointing it out!

</comment></comment><comment><USER8> This will probably sound very negative, and while I think there's a need for a nice library to help bring to light what happens to data in your code, I don't think the pyscribe way of doing it (using sugar to transcribing a piece of code into one with more logging) is very useful in the long run.

For one, it seems the only type of change you can watch for are changes via assignment for top level variables. For example, any of the mutable built-ins (and I confirmed this by trying to use pyscribe) can't be watched for all changes. For example, mutating the list later with .append() doesn't log anything, nor does changing a value in a dictionary. You also can't watch a particular key in a dictionary, or an attribute in a class (these lead to parse errors when trying to run pyscribe).

Even if you modified the code to support this, you wouldn't be able to control access everywhere that piece of data went. Suppose I had a dict and and some point:

      ...
      d = {'foo': 'bar'}
      ps.watch(d)
      ThirdPartyLib.do_stuff(d)

If that third party library mutated d, there'd be no way for you to know, unless you also were able to desugar those files (basically impossible because in some cases the source code isn't even available).

In any case, this type of mutation is generally what causes the most bugs. A value changing by assignment doesn't need a run-time logger. These change are in plain sight; just do a search for the variable name in the local body of the function. Mutation that occurs in other contexts (when the object has been renamed, or passed to another function where access is through a different variable name) is the difficult thing to debug, and pyscribe cannot handle that with the current design.

Honestly, I think this is better handled with mocking objects. See how python Mock library does things, and possibly use it yourself (it wouldn't be all that much work to write your own wrapper, but Mock is seriously powerful). Basically watching a variable means wrapping it with a mocked object that defers all reads/writes to the real object, while logging all those changes. Not relying on desugaring also means you can watch what happens to your data when you pass it into third party libraries.

<comment><USER8> On further digging some more examples of assignments not caught:

      ps = pyscribe.Scriber()
      x = 0
      ps.p(x)
      ps.watch(x)
      for x in range(4):
        pass
      # x is now 3
      [x for x in range(5)]
      # x is now 4

<comment><AUTHOR> Ah, I'll have to fix that.

</comment></comment></comment><comment><USER9> I have been using python for some years now (although I'm no Guru..) and have almost always been able to debug using PDB or a python IDE. I'm not sure how this helps debugging? Is it debugging through some type of logging? I haven't checked out the source code yet, and the site is fairly brief on actual use- cases. Thanks for any feedback.

<comment><AUTHOR> I wish I could give you pros and cons, but I've never touched pdb or used a python IDE before myself. In my 3 years of programming, I've only used print statements to debug (for Python programs).

I'll be adding more documentation soon, but perhaps this is a more informative use case: Too often in my Python programs, I'll do something like, print("x is: " \+ str(x)). That's already too much to keep typing, but sometimes I'll want to know the type, or maybe it's a dictionary and printing without separators makes them blend together (say, in a for loop). In that case, I'll do: print("\</comment></comment><comment>---\nx is: " \+ str(x) + "\n")

The library allows this to be simplified to "ps.d(x)". It's rather opinionated towards my own workflow and what I was too lazy to keep doing. Perhaps I'll try pdb one day and find my library useless.

<comment><USER9> But, it's dead simple to use an IDE. Plus the code you debug within the IDE is the same as the production code. It allows to use breakpoints, and watch vars. There are a bunch of free IDEs, what don't you like about using one?

<comment><AUTHOR> You think you misunderstood; I didn't try it and not like it, I just never tried it. I'm most productive on Vim/Terminal right now. From a quick google search, it doesn't seem like I can use all the Vim commands in an IDE (though I see some articles on using Vim AS an IDE). Have you personally tried both and preferred an IDE over Vim/Terminal?

</comment></comment></comment><comment><USER10> would like to share this which I found on twitter recently:

The Law of printf debugging: debugging messages inserted to track down unwanted behavior asymptotically approach "o_O"

\-- @a_cowley

So thanks alixander for a considerable step in the right direction.</comment>


Ecological Redemption: Ocean Farming in the Era of Climate Change - <AUTHOR> http://www.centerforneweconomics.org/publications/ecological-redemption-ocean-farming-era-climate-change <comment><USER2> "The old economy is built on the arrogance of growth at all costs, profiting from pollution, and the refusal to share economic gains with 99% of Americans."

This mindset is shared by many building the new economy. Peter Thiel said in an interview that growth is necessary because otherwise "for my life to improve, I have to take from you."

Even the most brilliant economic and entrepreneurial minds of _our_ day get it wrong. We need limits on individual growth.

Our current economic system violates natural law.

</comment><comment><USER3> Awesome read!

Our oceans were so full of fish and other species, now a days it's depressing... I think it's been 15 years since I've seen a Seahorse in a random dive they used to be everywhere and I am sure it's not bad luck.

</comment><comment><USER4> This really was an interesting and eye opening read.

<comment><USER5> Agreed. I wasn't aware of of such a variety of ocean flora was untapped, although I am not surprised. There are over 2,000 edible land plants but only a few dozen under active cultivation.

</comment></comment><comment><USER6> fascinating read, I hope this leads to something</comment>


68 Katy – 68000 Linux on a Solderless Breadboard - <AUTHOR> http://www.bigmessowires.com/2014/11/17/68-katy-68000-linux-on-a-solderless-breadboard <comment><USER2> Followups since this was posted in November: [http://www.bigmessowires.com/category/68katy/](http://www.bigmessowires.com/category/68katy/)

</comment><comment><USER3> God watches out for drunks, fools, and people who build multi-MHz logic circuits on solderless breadboards. :-P

From a signal-integrity perspective, he should _not_ be able to get away with that.

<comment><USER4> He can't. _" My 68008 runs at 2 MHz (it was unstable when tested at 4 MHz), providing similar performance to a 1 MHz 68000."_ He had to de-rate the clock speed of an 8MHz part to get it to run on that breadboard.

The 68000 line has a sad history. It came out in 1979, and for a while, it looked like it was going to be the winning microprocessor. Intel didn't have a 32-bit entry for years later. But early attempts to build workstation machine ran into problems. The 68000 had no matching MMU, and wouldn't work properly with an MMU anyway - page fault state saving wasn't quite right. Machines with external MMUs were built anyway, but great kludging was needed to get around the design flaw. The Apple Lisa avoided using increment instructions, and Apollo had two CPUs; one for the user and one for the kernel, with only one running at a time.

That was fixed in the 68010, which came out in 1982. But by then, IBM had picked the Intel 8088 for the IBM PC. Motorola didn't come out with the MC68451 MMU until a few years later, and it was a slow, segment-oriented MMU. So the Macintosh didn't have an MMU, and had a much weaker OS than the Lisa - no process isolation, no paging, not even a real CPU dispatcher. The UNIX workstation crowd (Apollo, Sun, HP, etc.) all developed their own MMUs for the 680x0 line.

If Motorola hadn't had those errors in the 68000 and had shipped an MMU earlier, the history of computing could have been quite different.

<comment><USER5> Looking back it does appear that Intel did nearly everything right, and their competitors didn't. It did help a lot though getting the IBM PC business, and due to that, aligning with Microsoft. If you look at the 68000 machines at the time they all had flaws that prevented them from really taking off, often not things that couldn't be corrected, but things that held them back. The Mac didn't have a hard disk, or multitasking, or color. The Amiga would always be constrained by the custom chips and that would be a problem long term, plus Commodore wasn't investing enough in software. Atari had a good simple product, and GEM wasn't too bad, but they didn't develop it further either. And the workstation market was constrained, as said by the parent, by the lack of a decent MMU solution. And then RISC came along too. In an alternative universe maybe the 68000 machines could have joined forces around a common unix platform and built a major market, but that didn't happen here.

<comment><USER6> What held back the 3b1? That's rarely mentioned in these parts, but it was a fantastic machine from a company that had experience building real computers (if even for its own use.)

<comment><USER4> There were a lot of early UNIX workstation companies in the early 1980s. Three Rivers, Apollo, HP, IBM, Apple, Sun, Sony, and AT&T all had 680x0-based machines. All totally incompatible.

At the time, it looked like lower-cost versions of those were the future of computing. But, as mentioned previously, Motorola was too slow getting the MMU situation fixed, which meant that all those workstations had some homebrew MMU that ran up the cost. Not until the 60030 in 1987 did Motorola offer an on- chip MMU. Workstations in that era cost $10K - $20K in 1980s dollars. Even the Apple Lisa was a $10K machine. Workstation prices didn't come down fast enough. Meanwhile, people were learning how to get things done on the original DOS PC, clones, and PC/AT, which had inferior technology but volume was driving down the price.

We had UNIX on the desktop in the 1980s, but few could afford it.

</comment></comment></comment></comment></comment><comment><USER7> Previous discussion: [https://news.ycombinator.com/item?id=8622720](https://news.ycombinator.com/item?id=8622720)

</comment><comment><USER8> This is amazing, as a newbie in electrical engineering and just recently playing with my Arduino this is simply awesome!!

</comment><comment><USER9> Reminds me of 18-545 at CMU. We did it with wire wrap though. Good times.

Congrats on being able to fit the kernel in 512K

</comment><comment><USER10> Reminds me of the old PT-68K board; loved that thing, and the 68K.

</comment><comment><USER11> Would mac os 9 apps compile and run on this system?

</comment><comment><USER12> when ls -l /bin is being typed, all the last modified dates are "Jan 01 1970" why ?

<comment><USER13> Because they are read as '0' and that's the start of the unix epoch.</comment></comment>


Targeting Meritocracy - <AUTHOR> http://slatestarcodex.com/2017/07/24/targeting-meritocracy/ <comment><USER2> For what it's worth, I think this piece is mostly right, especially in pointing out the lack of recognition that our current society does not generally "accept that education and merit are two different things."

I think there's more to the criticism of a meritocracy, namely that randomness plays a large role in opportunities and demonstrations of success, but the focus of the linked piece is also part of it.

The example of performance of surgeons in medical school is kind of ironic, given studies showing that grades in medical school only weakly correlate with real-world performance. The later mention of ability-chess performance correlations is actually not that different from grade-performance correlations across a range of educational levels.

Not too long ago, there was a job ad posted here that kind of underscored many of these sorts of criticisms, essentially suggesting they were only interested in people from the most prestigious schools. The implication, of course, was that this corporation was not interested in your actual professional achievements or ability, but only the status of the school you attended (which is related at least earlier in life, but not in general).

The example of the person with the degree that's discussed in the piece is also an excellent one, that arises many times. A better example are companies requiring administrators to have master's degrees for its own sake, even if this is not actually required for the job duties. I've seen countless examples where corporations require master's degrees, and actually do not care what they are, which raises the question of why the degrees are actually being required, above and beyond the obvious question of what the job duties actually entail.

Meritocracy has its own problems, related to randomness in events and outcomes, but I think the more immediate problem the linked piece discusses might be better labeled credentialism.

I think it's tied to broader trend toward increasing laziness on the part of corporations and institution in their hiring practices. Maybe it's not laziness, but rather, a sign of regulatory capture, or gross inequality, in that there is such an imbalance in the number of qualified individuals and the number of jobs that employers have to start using criteria that are only tangentially related to the job to filter out applications (e.g., I have 50 people who could actually do this job well, and don't want to admit my choice at this point is actually random, so I'll start selecting them based on unrelated, or only very weakly related criteria).

<comment><USER3> From a hiring managers perspective, there is also the benefit that a person who has gone through college is a safe choice that it unlikely to reflect badly on them.

</comment></comment><comment><USER4> The article misses the finer points of most of the articles quoted and makes sweeping generalizations.</comment>


Ask HN: An alternative to IMDB scores, whats a better way to pick movies? - <AUTHOR> I like IMDB rating, helps find the best movies easily. But, recently when I decide to watch a movie based on the scores alone, I have been greatly disappointed. Eg. The Joker 2019 movie is highly rated, but its not the movie for me. I don't generally like such sad and mind-fuck kind of movies.<p>Has anyone thought about this? I would like to create a new movie rating system, that will be easy to pick the right movies. <comment><USER2> The best indicator is a recommendation from someone whose opinion on movies is largely aligned with yours. I suppose you need a platform where the user is profiled and matched against reviewers/raters/critics with similar tastes. Has anyone done this?

<comment><USER3> criticker.com does exactly this by normalizing individual user ratings into percentiles and calculating a "Taste Compatibility Index", floating those users whose ratings are closest aligned with yours to the top (and their highest-rated movies). In my case, the resulting predicted score for most movies is close to 80% accurate. Highly recommended site.

[https://www.criticker.com/](https://www.criticker.com/)

</comment></comment><comment><USER4> When it comes to picking things you are spending your free time on, movies, dining out, video games, books, etc. you are more likely to immediately not even consider stuff you strongly dislike. Its really frustrating to see things in lists you wouldn't even consider. You lose any hope in that system being able to help you find something to escape reality for a while.

What is needed is a movie pick service and that starts with asking what genres you hate. Then get into specific movies you hate to further refine the list of things I don't want to see but at the same time clarifying questions to narrow down the like/dislikes because there are movies that combine elements from different genres. For example, The Joker could be considered in the #superhero, #sad, #mind-fuck categories and if you like #superhero movies but strongly dislike #sad and #mind-fuck then those should be weighted higher and the system shouldn't show The Joker on any personal lists.

The service should have an unfiltered search so people can just find stuff too.

<comment><AUTHOR> Exactly, free time is a premium and has to be treasured.

I think a quiz like what you meantioned would be effective. The problem is finding data that could help power such a quiz. Example, a #tag of #sad could be assigned to a movie that's just 20% sad, leading to misuse/misinterpretation. What we may need is a variable-tag metric... But I don't think there is any available data for this yet..

</comment></comment><comment><USER5> It's impossible to press a complex object into singular value. Everyone has different key aspects and you can't see from a single value which key aspects are strong and which are weak.

Read some reviews and critics to get a hint on the vibes and content of a movie and whether it matches your personal taste. IMDB has them both.

<comment><AUTHOR> What about multiple metrics, which each can talk about specific aspects of why someone would watch a movie. I could then weigh these metrics as per my preference and choose the movie of my liking. Do you get it?

<comment><USER5> Sure, you can do that. There are sites doing this, many more did that in the past. Most failed at some point because the amount of work, knowledge and dedication for this to reach a critical mass of uptodate meaningful data is to big to survive longterm.

And in the first place you will be very busy to figure which metrics you want in the first place. You basically need a complete set of them before you even begin for serious, because otherwise you will invalidate all older entries if you add metrics later.

Thinking about, tags are popular today, several media centred-sites are using them to allow a kind of freeform-metric to describe content. Maybe with modern solutions you can do something machine learning-voddoo to extract tags from reviews and generate meaningful metrics for describing impressions of a movie.

<comment><AUTHOR> You are very right, especially with the challenges in making it successful. Crowd sourcing or Machine Learning are the options I guess, each with its pros and cons.

</comment></comment></comment></comment><comment><USER6> Metacritic consistently come out on top when compared to IMDB and Rotten Tomatoes. This article is a good dive into the pros and cons:

[https://thenextweb.com/syndication/2018/02/04/imdb-rotten- to...](https://thenextweb.com/syndication/2018/02/04/imdb-rotten-tomatoes- metacritic-data-scientists-guide-movie-ratings/)

</comment><comment><USER7> Only you can know what you like.

The more movies you watch, the better your intuiton for predicting if you'll like the movie by watching the trailer will get.

I found imdb scores are good to have a general idea. Eg I probably won't like a movie with a 5.9 score, even if the trailer seemed good. Or I'll give a movie with a >8 score a chance if the trailer is okay, but sometimes I know a movie is not for me by the trailer, no matter how high the score is.

For everything in between I decide mostly by the trailer and the past movies of the director.

<comment><AUTHOR> What do you look for in a trailler ? Could you describe the process in few words?

<comment><USER7> >Could you describe the process in few words?

Not really, I wouldn't know how to describe it. I just have an intuition of when a movie is "promising" according to my taste. An intuition that gets better the more trailer and movies I watch.

</comment></comment></comment><comment><USER8> I like a few actors, directors, screenwriters. I watch what they did, and watch movies when one of them makes one. I can't watch anything else. It limits the movies I can watch to one or two per couple of years, but it's okay.

I used to be a voracious movie consumer when I was younger, but it's due to the fact there was a backlog. Now there is none.

</comment><comment><USER9> I've had some good recommendations from [https://movielens.org/](https://movielens.org/)

Also, if you like a particular movie/genre then it's best to google for similar ones. People tend to recommend 'if you like X then you should also check out Y'. I've found this to be a decent indicator.

<comment><AUTHOR> I like these profile based recommendations, but they tend to be black box ones. They miss out on the how I may like a future movie that I have not come across before. I like how nomadlist.com has done it for places. You can easily figure out which place to go, just using their fitlers.

Would a similar filter be useful for movies?

</comment></comment><comment><USER10> In the past I used to use Criticker ([https://www.criticker.com/](https://www.criticker.com/)) and found that once I'd rated some movies the recommendations were very good.

But like others have said the easiest way is to find a friend/critic who has similar taste to you and just see what they recommend.

</comment><comment><AUTHOR> I am really looking for an answer to this. I promise to incorporate the best answer arriving out of our discussion in my site flixcatalog.com. I don't think the existing filter on imdb scores makes sense.

<comment><USER11> Isn't the current iMDB score just an average of everyones scores combined?

How do you propose a scoring system would work where movies are scored according to your preference in movies?

<comment><AUTHOR> If you look at what nomadlist.com has done for places - I can easily figure out if I would like to visit a place or not, by selecting their emoji based filters.. I think a similar emoji based rating, that could say how sad a movie is, how happy a movies is, etc, could be useful. What you think?

<comment><USER11> Personally I would associate a frowning/sad emoji with something negative; the movie is bad etc.

It sounds like you want to seperate the rating and emotion/vibe of a movie, and score/rate both?

<comment><AUTHOR> Yes, emotions- "how does one feel while watching the movie". This is missing from the traditional genre tagging - "whats the movie about"

</comment></comment></comment></comment></comment><comment><USER12> You could, instead of looking at the score only, also use the tags on imdb to at least guide you to films of interest to you.

<comment><AUTHOR> You mean the genre tags, like crime, thriller, etc?

<comment><USER12> Yes. Things like that, plus the certificate, the mood you're in, the usual reasons for sitting down to some visual presentation. Also, on imdb the scores are incredibly mean average for very popular movies and can vary wildly on the lesser known. If you take a look at a movie you love, and one you hate, you can find a surprisingly short width of score. What this means is that the meaningful scores are 6ish to 8ish. Most popular Movies sit in that area, hence a 6ish in genre you like may actually be rated great by you and an 8ish in genre you dislike might mean you'd appreciate it though not love it.

</comment></comment></comment><comment><USER13> letterboxd.com - The score is a good reference, but you will also find really good lists from users with the same taste as yours.

<comment><AUTHOR> I like letterboxd, but unless I read through all the comments, I can't make out if I would like a movie or not. There scoring is similar to imdb. I dont think just a simple rating system would be a solution.

<comment><USER14> The most efficient solution is to give the user a predicted rating which tells him at first glance how much he'll like a movie. Of course the prediction is based on how much the user has liked other movies (collaborative filtering). Netflix used to do that quite well until their recommendation system went down the drain for marketing reasons. My app Coollector Movie Database works on that principle.</comment></comment></comment>


Start programming using Object Pascal Language - <AUTHOR> http://www.code.sd/startprog/index.html

<comment><USER2> (Regular) Pascal was one of the first programming languages I learned (right after machine language and Algol). It's my favorite programming language of all the ones I've learned.

It would be nice if Object Pascal could bring Pascal back into common usage.

</comment><comment><USER3> Excellent book.</comment>


How the new Gmail image proxy actually works and what does this mean for you - <AUTHOR> http://filippo.io/how-the-new-gmail-image-proxy-works-and-what-does-this-mean-for-you/ <comment><USER2> Thanks for this. There is so much false information floating around, it was a relief to find a presentation of the facts, backed up with evidence.

</comment><comment><USER3> "the single most useful piece of information a sender gets from you loading the image is that/when you read the email"

Marketers around the world rejoice.

I'm guessing everyone just had a bump in open rates today.</comment>