Ask HN: Im a programmer who feels deficient at solving puzzles. How to improve? - <AUTHOR> Hi HN,
I've been programming my whole life (and, professionally, for 6 years).
However, I feel very deficient in solving puzzles and algorithms.
The things I feel deficient at are problems that sound like: 'given an array of prices for a certain stock in a single day, how would you find the maximum profit from one trade?'.
This manifests as being an excellent (even a 'senior') day-to-day programmer, but flunking during the hard parts of a technical coding interview like, say, at a Google interview.
What can I do to improve this area of my thinking? Are there any recommended 'daily puzzle' or 'school' sites that focus on this?
Thanks for your help! <comment><USER3> Create an example of your problem. Solve for specifics before variables. Then generalize it and replace those specifics with variables. Skipping the first step can be confusing because many people struggle to conceptualize abstract data.

Studying algorithms and their use cases can be helpful as well: [http://blog.notdot.net/tag/damn-cool- algorithms](http://blog.notdot.net/tag/damn-cool-algorithms)

When you have to search something to solve it. Make sure you aren't searching for the answer to solve the answer but are searching the answer to understand the answer. Take some time to study the solution to your problem and make sure you understand what it is doing and how it works so that next time a similar problem arises you might be able to solve it because the solution worked for you in the past.

</comment><comment><USER4> Solving project euler problems did a lot to teach me about efficient use of algorithms and using algorithms to solve problems.

</comment><comment><USER5> _The things I feel deficient at are problems that sound like: 'given an array of prices for a certain stock in a single day, how would you find the maximum profit from one trade?'._

My naive answer to that is ignore the absolute prices, but iterate over the array to get an array of price movements, and then weight those by volume data (if that is available) or select the largest (if not). Could you expand on what it is you find problematic about that sort of question, eg lay out what your thought process is and where it gets blocked?

In terms of suggestions, maybe it would be worth your while considering problems a bit outside the programming domain, and working on them someplace other than your desk, on the theory that a change is as good as rest. Martin Gardner's 'Mathematical Recreations' columns for Scientific American were collected into one or more books, and I think some of Ian Stewarts' as well. These are great because they comprise fairly abtruse problems along with a discussion of strategies for dealing with them.

There are of course lots of 'math pouzzle of the week' sites from various universities, and books of math puzzles. but you should definitely pick up 'How to solve it' by Georg Polya, which is considered a classic education text. [http://www.amazon.com/How-Solve-It-Mathematical- Princeton/dp...](http://www.amazon.com/How-Solve-It-Mathematical- Princeton/dp/069111966X) This is over half a century old but it's a great book, it's like having a patient mathematics teacher that wants to help you succeed at your side. Again, study these things away from your desk - <USER2> some other study space, even a park, and practice working with paper and in your head. You will retain things better by changing your environment for study.

Another thing that strikes me about your post is that your abilities are affected by the situation - you feel confident of your ability to get things done when allowed space to think, but you don't deal well with high-pressure environments like interviews. This is normal. Build up a good idea of where your intellectual strengths and weaknesses are and what your best strategies for dealing with them are. Don't be afraid to say in an interview 'I'm good at this sort of problem, I'm always slow at that sort so my first response will be a few brain farts...' Remember too that in a good interview, you're not just being rated for your raw intellectual ability, but on how you deal with your limitations and how you go about decomposing a problem. Nobody knows everything!

Lastly, don't assume you must do it in isolation. Maybe part of the stress at interviews is not the questions themselves but the social context. If you can afford it, consider hiring a graduate student in math or CS at a local university to tutor you a few hours a week. A person with an academic leaning will be better equipped to assess and direct your learning ability than someone who is trying to solve the 'puzzle' of filling an open position at a company and who can only provide limited feedback on your performance.</comment>


Review: The ARM-powered Samsung Chromebook - <AUTHOR> http://www.zdnet.com/review-the-arm-powered-samsung-chromebook-7000006097/

<comment><USER2> Isn't this:

 _"It's a reasonably fast, go anywhere, do anything computer [...]"_

taking the praise a bit too far? I mean, it's based on an ARM core, and runs Google's own operating system. That means it won't "do" much when it comes to existing applications, at all.

I understand that it's strictly for using the web and maybe other net-based services, but that sentense from the review really sounds as if it isn't.

<comment><USER3> Can it do anything at all when Google bans your account?

<comment><USER4> Google banned how many accounts, in total? Do we have any numbers or statistics?

I can't put the threat in context without knowing its prevalence.

<comment><USER5> I'm not sure how you can tolerate even the possibility of being banned from a computer that you own and payed for.

<comment><USER6> Relax. This is no Surface. You can create another account or flip the developer switch and install your own OS on it. It should run Ubuntu (for ARM) just fine.

</comment></comment></comment></comment></comment><comment><USER7> "For ports, it comes with one USB 3.0 one USB 2.0 port, and an HDMI port."

I'm seriously considering getting this just to watch video on my TV. The key question for me is whether it supports espn3/watchespn. I see Chrome support listed, but not sure if it only works on x86.

<comment><USER8> That's an interesting question. To date the only way flash works on ARM is through the Android port, and Adobe has abandoned any development on that. It's interesting that the issue hasn't been addressed directly anywhere.

Even if it is supported I wouldn't buy this if consuming flash based content is your major goal. Even on the more directly supported x86 Chromebook I've used flash "works" but only marginally well. It's definitely not a pleasant experience on lower end devices.

</comment></comment><comment><USER9> I love my CR48 but the video is choppy at 480 and above and when dual booting Ubuntu, I only have about 8gig on the SSD. I wonder it it would be possible to upgrade the SSD to a 60gig or so. I have seen them for under $40.

<comment><USER10> That one is using an Atom CPU and a very old (I believe Imagination) GPU. The Mali T604 GPU inside this chip is brand new, and can easily play 1080p video. It's actually the only mobile GPU in the market that can support a 2560x1600 resolution right now, which we'll see in the soon to be announced Nexus 10.

</comment></comment><comment><USER11> I've ordered one, at least part in curiousity, because I think the device probably fits a lot better into my work life than a tablet, and I want to see how it actually runs.

It'll probably be too slow, and the battery life won't be quite enough for a full days work, but it's probably got around 30-40% of the functionality of a Macbook air at 25% of the price (for the same weight).

I won't be using it all day every day, but it'll certainly be coming on the next few trips with me.

<comment><USER12> I still have the CR-48 google shipped out for beta testers a few years back. Its uprising what it can do, considering the low-end hardware its composed of.

For web browsing it is great. And if you do a lot of work from ssh, you'll be fine. With the added RAM and beefed specs, this thing may even be OK at playing video.

<comment><USER11> The reviews seem to suggest it does pretty well for video playback, the GPU might well be more powerful than the atom one, which wouldn't be hard!

</comment></comment></comment><comment><USER13> Can it run a useful OS? If so, it's probably worth the $250 flyer to play around.

<comment><USER14> This is indeed an interesting question and I would be interested in hearing more about this, yet none of the articles I have seen so far said anything about putting something else on it.

Looking at both the Raspberry Pi and my normal laptop, even the standard 16GB SSD should offer more than enough space for a normal Linux install of one of the ARM-compatible distributions. However, it would also be interesting to know whether the SSD can be changed for a bigger one.

Is there any sort of locked bootloader involved in the factory Chromebook?

I'd be thankful for any article pointing me in an appropriate direction.

</comment></comment><comment><USER15> I've been working on a lot of my projects lately on a prgmr VPS and I just tried out the Chrome SSH app and it's pretty good. I could see and ARM-powered chromebook with 3g being a pretty good hack anywhere kind of laptop with good battery life. Of course, the new iPad with 4g is a bit more with better battery life and could work the same way. In either case, I like the direction things are heading.

<comment><USER10> The 3G price of this Chromebook ($330) is surprising. I don't think it costs even $50 to add a 3G chip to a device these days, and for that $80 they could've added an LTE chip.

This might surprise you, but this Chromebook uses a battery that is almost _3x smaller_ than that of the new iPad - 4,000 mAh vs 11,500 mAh. The difference in battery life between the two is not that large, though (6.5h vs 9h), because the iPad has a much higher resolution, and that takes its toll on the battery.

But even then this Chromebook has a surprisingly small battery - as small as a 7" tablet basically. In fact the Nexus 7 has a 4,300 mAh battery. I understand Google needed to push the price to $250, but I find it hard to believe they couldn't at least push it to 10h with a slightly bigger battery. Are batteries really that expensive?

<comment><USER16> Keep in mind the 3G model comes with 100MB/mo data for 2 years; you're paying for the service too. I'd theorize that not being LTE is a way of keeping that bundled service as cheap as possible.

<comment><USER10> That makes a bit of sense if they included the cost, but the whole idea doesn't. Why would I pay an extra $80 on a $250 device, just to get 100 MB's of data per month? If I was really looking for 100% Internet connectivity wherever I am, and I'd need a 3G/4G chip inside, I'd probably want a 5 GB data plan to go with it.

<comment><USER17> But 100MB of data is about perfect for emergency use. If you're like most people, 99% of the time you are somewhere with WIFI, but it's the 1% that you aren't when you really need it. Combine the 100MB a month with a very occasional $10 day pass and most people would be covered.

</comment></comment></comment></comment></comment><comment><USER10> Considering this Chromebook only uses a dual core 1.7 Ghz Cortex A15 CPU, I found this very interesting:

 _"On the other hand, its score makes it only a little slower than IE 9 on Windows 7 SP1 on a Gateway DX4710. This PC is powered by a 2.5-GHz Intel Core 2 Quad processor and has 6GBs of RAM and an Intel GMA (Graphics Media Accelerator) 3100. In short, the ARM Chromebook does a lot more with a lot less hardware than a stock Windows PC does."_

<comment><USER18> The "newest" Core 2 Quad is nearly 5 years old. A quick google search reveals that computer uses a Q6600 which is nearly 6 years old:

[http://www.techspot.com/review/36-intel- core2-quad-q6600/pag...](http://www.techspot.com/review/36-intel- core2-quad-q6600/page1.html)

That's a pretty irresponsible omission by the author. It's about as bad as his claim that ChromeOS is based on "Ubuntu Linux".

<comment><USER19> Even then, a 1.7 Ghz dual-core Cortex-A15 is not even close to be 'only a little slower' than a five year old 2.5 Ghz Core 2 quad. With a bit of luck it's going to be a little faster than a 1.6 Ghz dual-core Atom.

The whole 'review' reads like a paid advertisement, it's a shame crap like this ends up on the HN front-page. The guy is basically saying you get a Chrome browser for $249, as if that's a good thing. Because "it's the future, it's going to revolutionize computing". He doesn't mention using the thing for _any_ other kind of application except internet browsing, then concludes with the following brilliant quote:

>> This Chromebook represents the true future of the PC. It's cheaper than any device that's remotely comparable to it be it tablet, laptop or any of the hybrids. It depends not on the local computer but on network services to get things done. Today, that motto has been made reality in my hands by Google and Samsung with the ARM Chromebook. This really does change everything.

Give me a break... :-/

<comment><USER20> > The guy is basically saying you get a Chrome browser for $249, as if that's > a good thing.

I think it's a good thing, and I bought one. I was lucky enough to receive a CR-48 which completely changed my opinion on a chrome-only computer. I also own an older iPad and HP Touchpad (running ICS) yet both of them are sitting on my desk with drained batteries. For some reason I found myself reaching for the CR48 when on the couch or traveling. Yes, tablets were fun for gaming on planes but other than that I preferred the full browser experience w/ a keyboard. I use it for browsing, email, and basic dev work using ShiftEdit and occasionally Chrome Remote Desktop. I'm not saying it's superior - some people prefer different devices.

<comment><USER19> Just out of curiosity: how do you use it while traveling? Without network connectivity the thing is basically unusable right?

Just looking at 2-year 3G plans with at least 1GB data limit and no bandwidth restrictions, the value proposition of a Chromebook is not so great anymore. For the price of the 3G plan alone I could almost buy a new MacBook Air.

<comment><USER20> I can only think of one instance in two years I've owned it when I needed to get online but didn't have internet access. I used offline gmail to respond to a few emails so not a big deal.

The CR48 has built in 3G but I decided against buying the $330 one and paying for a plan and will instead use my phone to tether when needed. I use FoxFi for free tethering and it's worked surprisingly well. I don't travel often - and wifi + occasional tethering is good enough for me.</comment></comment></comment></comment></comment></comment>


Lennart Poettering interview on systemd [video] - <AUTHOR> https://www.youtube.com/watch?v=Rm68XYskgH8&t=2100

<comment><USER2> some day, the yung'uns are going to look back at LP, and put him in the same category as K & R, Pike, Carsten Haitzler, or other visionaries.

And I'll have to patiently explain how this man wrote an RPC-backdoor for the GPL via systemd, and is no friend of GNU or any project that he doesn't own or co-opt.

Then I'll show the youtube video where he hijacked some poor German guy's talk, so he could say fun gems such as "if you don't like logind, you must obviously hate the disabled". If they still like him after that, I'll give up talking, and marvel at their cognitive dissonance.</comment>


How can I download this podcast? - <AUTHOR> This is a podcast aired by BBC a few years ago. Normally a download option is available but since this has been hosted for a long time, they took off the download
button, maybe some policy they follow.
Is there still a way to download this podcast?
http://www.bbc.co.uk/programmes/b05xxhwb
Thanks in advance for any assitance extended? <comment><USER2> Can't test it right now, but seems like it's an rtmp stream - try youtube-dl?

<comment><AUTHOR> I have downloaded Youtube-DL on my Windows 7 machine but have never done this kinda stuff before?

Would you please guide me around, if it's not too much of an ask?

<comment><USER3> It's been a while but.. \- open start menu \- type cmd \- drag and drop the Youtube-DL.exe file from where ever it is onto the cmd window. This should type out the whole path to the file \- put a space after the exe path and then put in the URL of the podcast you want. you might have to put a few options first. \- You might have to use the stream URL(as in the url of the media stream, not the url of the page), which you can find from .. maybe open your browsers "inspector" and go to the network tab, and play the stream and see what url it actually starts loading..

</comment></comment></comment><comment><USER4> As a boring aside: this was never a podcast; but just a clip from a full program.

</comment><comment><USER5> youtube-dl --extract-audio --audio-format=best <url>

<comment><USER6> Is there a list of supported websites for youtube-dl?

Or does it just automatically grab whatever media is in the URL page?

<comment><USER5> It has to be supported, there's a list here: [https://github.com/ytdl- org/youtube-dl/blob/master/docs/supp...](https://github.com/ytdl-org/youtube- dl/blob/master/docs/supportedsites.md)</comment></comment></comment>


Ask HN: How to monetize support of existing free and open-source projects? - <AUTHOR>

Have been managing a few open-source projects for years and have wanted to get paid for the work that I put into it in my spare time. I am aware that it is much more difficult getting people to pay for support for free, open-source projects, especially after the maintainer has been supporting them for free previously, but I feel like I have nothing to lose since the product will only get better if I am more motivated to work on it. Any advice? <comment><USER2> If users are submitting pull-requests and you're just too busy to manage the process for free, that's one thing. Good luck charging for that.

But if you have a backlog of enhancements that a bunch of people want but can't/aren't coding themselves, maybe you could run a little campaign to raise $this_much money by $this_deadline in order to deliver $these_features

</comment><comment><USER3> I'm doing this for a project I started, OpenPhoto. It's sort of like Wordpress in that anyone can download and install the software. And like Wordpress, we are trying to monetize it by providing a hosted solution.

I quickly found, for us, that hosting alone wasn't sufficient. So now we are offering complimentary solutions along side the open source product. We let you import photos from Facebook and Instagram for free. You pay to do it from Flickr.

We also automate some tasks that would otherwise be nearly impossible. Such as migrating from Deopbox to S3 (one aspect of the product is that you select where your photos are stored). This feature also let's us offer storage provided by us (required to get users up and running immediately. Then we can let hem change their mind later.

It is early in the game but people are paying. Hopefully enough users will. It becomes a win for the project and the creators since active development can continue.

</comment><comment><USER4> I wrote Big Brother (<http://bb4.com>), and it was 99.5% free (until we sold out to Quest/Dell). Originally a lot of our revenue came from support.

We just offered 3 tiers of support. For $250 a year we'd answer emails. For $500 we promised an answer within a day. For $750, within 4 hours, and for $1000 a month I'd take your phone call.

So, people are paying for your time, and for access... I was shocked my how many people opted for $1000 a month phone support (direct access to the developer/author).

Otherwise, support continues to be provided by a mailing list, group or other mechanism.

Good luck!

</comment><comment><USER5> You should check binpress <http://www.binpress.com> (I'm one of the founders), it is a marketplace for source code. While 50% of the projects are not necessarily open source, the other half are open source projects where the developer also charge for a support license.

Many customers will prefer to purchase a support license in order to ask the developer a question. Some will create a feature suggestion and since they have paid, the developer is more likely to implement them.

</comment><comment><USER6> Users are always looking for enhancements and willing to pay for them. Allow people to bid features up, by paying.

</comment><comment><USER7> I think that your best bet is to first understand who is using your project and why. Once there try to find the needs of companies - they are often more likely to pay for your time.

</comment><comment><USER8> If you want more specific advise ,why don't you list the projects you are talking about.

</comment><comment><USER9> I think it depends a lot on context. I used to participate in a free forum. The founder was brilliant at choking off all possible avenues of monetization while bitching endlessly about wanting to make money (edit: mostly to help cover costs, not necessarily profit per se in his case). He did not want to ask for donations and he also did not want to commercialize it. However it was quite popular and outgrowing its hosting solution, which led to lots of complaints of slowness due to traffic load. I thought he should have posted a notice saying "The site is slow because we need to upgrade from x server costing x amount of money per month to y server costing y amount of money per month. When I get enough donations to cover y for a year in advance, I will happily upgrade. Until then, quit your bitchin." Then any time someone complained, link to the notice (with donate button, naturally) and tell them "Put up or shut up". Similar to the webcomic author whose audience was whining he wasn't updating enough and he said "I make x amount at my day job. Match that." Much to his shock, he had $4000.00 in an hour. He said it to say "shut the fuck up". Instead, he ended up quitting his job and doing the comic full time.

So where do you have demand? Find some way to charge for it. That's what I am trying to say. List your assets, list where you have demand, list different ways that might get monetized. Tie pay to what people want from you.

Best of luck.

<comment><USER10> > He said it to say "shut the fuck up". Instead, he ended up quitting his job > and doing the comic full time.

Does this story continue? Getting a bunch of money from a one-time plea or stunt is drastically different than a recurring revenue stream; I'd love to hear how well he did after he started doing it full time (and how he chose to monetize; still donations?).

<comment><USER9> Iirc, it is the backstory for this comic, which I believe is still the author's full time job:

<http://www.somethingpositive.net/></comment></comment></comment>


Steve Jobs, 1955 - 2011. Bye Steve ... - <AUTHOR> http://www.apple.com/#Bye

<comment><USER2> There aren't too many people who are considered legends in life. I consider us lucky to have shared a time in this world with Steve Jobs, legend of innovation. Truly a man ahead of his time.</comment>


Challenge Incredicat Can You Beat the Thinking Cat? - <AUTHOR> Https://incredicat.com <comment><USER2> So I got through lots of questions, and now it's just saying "Are you thinking of X" endlessly.

I guess it doesn't know the thing I'm thinking of. I guess I win. Sort of.

Do I get a prize?

</comment><comment><USER3> I beat it with "hashtag".</comment>


BuckleScript Is Rebranding - <AUTHOR> https://reasonml.org/blog/bucklescript-is-rebranding <comment><USER2> I really really want this stack to succeed -- I think it has so much potential. And I've been hoping that some of this confusion would get cleared up.

Unfortunately, after reading this blog post I think I'm even more confused than I was before. Are Reason and Rescript separate projects? It seems like there are now _three_ different syntax options: OCaml, Reason, and ReScript? Even if it's a good change in the long run, the lack of clarity is concerning...

Seems like it may be more stable to just stick with OCaml syntax and js_of_ocaml [1] for now...

Also interesting that OCaml is not mentioned a single time on the new website [2]. I guess they're trying to appeal to JS devs and sell it as a new thing, but seems useful to at least be aware that there's a connection to an established language?

[1]: [https://ocsigen.org/js_of_ocaml/3.7.0/manual/overview](https://ocsigen.org/js_of_ocaml/3.7.0/manual/overview) [2]: [https://rescript- lang.org/docs/manual/latest/introduction](https://rescript- lang.org/docs/manual/latest/introduction)

<comment><USER3> Pretty confused over here as well, and I already had a decent idea of the differences and why's between Bucklescript, Reason, and OCaml.

<comment><USER4> I wasn't confused till I read this comment after reading the ReScript docs:

> ReScript looks like JavaScript, works like JavaScript, works with > JavaScript, and outputs to the highest quality of clean, readable and > performant JavaScript. The big difference is that ReScript comes with a > bulletproof type system, a solid build system, and a couple of extra > features that'd make JavaScript users envious.

[https://rescript-lang.org/docs/manual/latest/introduction](https://rescript- lang.org/docs/manual/latest/introduction)

So you're saying their ecosystem supports other languages too?

<comment><AUTHOR> No, that's not what it's saying...

<comment><USER4> Then that needs to be clearer as to what it means.

</comment></comment></comment></comment></comment><comment><USER5> I lucked into a job writing ReasonML (soon to be ReScript) on a React codebase some time late last year, and I've got to say that so far it has been a career highlight for this engineer. Not only did it scratch my itch for functional programming, but I also got to use one of the best type systems around as well, given how this project lives on top of the OCaml compiler.

That said, there were definitely some rough spots along the way, but I'm hopeful that this re-branding and unification of the infrastructure is a step in the right direction.

<comment><USER6> The lack of documentation is the main issue that I had with it.

<comment><USER7> I haven't looked at Reason in awhile, but since its just sugar on top of OCaml, most OCaml docs/stackoverflow questions should help.

<comment><USER6> It gets tougher when you want to use ReasonReact

</comment></comment></comment></comment><comment><USER8> I get puzzled by how often projects whose ostensible user bases are composed entirely of technical professionals seem to make vast sweeping branding changes on the basis of "simplifying" the "confusing" naming, so that we end up with three(?) different things (a compiler, a language syntax, a new almost-compatible version of the language syntax) with the same name.

Is there really a large audience of programmers capable of writing OCaml but not catching on that "BuckleScript" referred to the compiler? (For that matter, is there really a large audience of programmers capable of writing OCaml but only if the syntax superficially resembles JS? Maybe I'm the one out of sync here...)

<comment><USER9> Reason/BuckleScript has always been about attracting JS developers to the powerful type system of OCaml. That was the reasoning for the Reason syntax. This, to me, feels like another step in accommodating developers who are coming from outside the OCaml ecosystem. When I was a less experienced developer, and even still sometimes now-a-days, as I approached a new language, the difficulties I often had were more with the tooling surrounding a language rather than the language itself.

As a language ages and evolves, I think it's easier for the authors and contributors to forget what it's like approaching it fresh. Many times documentation is written with an unintended assumption of an understanding of the ecosystem. Coming to the OCaml/Reason/BuckleScript ecosystem could definitely be confusing.

</comment></comment><comment><USER10> This seems like it is only adding to the confusion. Is only BuckleScript rebranding to ReScript or the entire Reason/BuckleScript eco-system? Also BuckleScript is a memorable name and ReScript is just "meh"...

Edit: The "rescript-lang.org" page is clearer -- it's the entire Reason/BuckleScript world is being rebranded into a single unifying thing. Still confusingly though, they call this the "documentation" site.

</comment><comment><USER11> Can't all of this be sidestepped and just write standard (non-forked) OCaml and feed its bytecode through Js_of_ocaml [https://ocsigen.org/js_of_ocaml/](https://ocsigen.org/js_of_ocaml/) ?

That might not have the ultimate React integration (guess that's the answer to the question). But on the other hand probably aligns better with the instinct of many developers to reduce (albeit not eliminate) levels of unnecessary layering.

<comment><USER12> BuckleScript (now ReScript, I guess) can still compile standard OCaml syntax.

<comment><USER11> AFAIK it's a forked compiler and already a number of language versions behind the mainline one.

<comment><AUTHOR> Yes but OCaml 4.06 is still OCaml.

</comment></comment></comment></comment><comment> andrewl-hn From an outsider perspective it's still make very little sense.

I thought ReasonML is a language, an alternative to Elm, PureScript, or other FRP-focused compile-to-js languages. When I check projects on GitHub written using ReasonML it says "Reason" as a language name (why is it just Reason, and not ReasonML?). For example, Onivim: [https://github.com/onivim/oni2](https://github.com/onivim/oni2)

What's BuckleScript then? How is it related to Reason? If it's related why did it have such a seemingly unrelated name in a first place?

<comment><USER13> All these questions are exactly why they rebrand under a single name, ReScript.

\- ReasonML is a thin syntactical wrapper on top of OCaml

\- To compile it down to Javascript you need Bucklescript, an OCaml-toJS compiler developed by Bloomberg (IIRC)

and so on

All the tools need to be installed from different sites, have their own sets of dependencies and conventions etc.

<comment><AUTHOR> Not really. ReasonML is vendored and distributed with BuckleScript. It's one install to get started:

        npm install --global bs-platform

<comment><USER13> They are still completely separate entities when it comes to documentation, library support etc.

<comment><USER14> Work is done to unify them [https://reasonml.org/](https://reasonml.org/)

<comment><USER15> The reasonml.org project had a very strong focus on documenting the BuckleScript + Reason workflow (later on it was a goal to add Reason Native docs).

Now that BuckleScript was rebranded to ReScript, we decided to move and simplify the BuckleScript related docs from reasonml.org to rescript-lang.org

As soon as we migrated all our existing Reason / BuckleScript users over to the new ReScript website (with Reason syntax toggling etc), we will most likely redirect reasonml.org to reasonml.github.io, which will yet again focus on pure ReasonML / Native docs.

More details will follow as we are making further progress.

</comment></comment></comment></comment></comment></comment><comment><USER16> Hm. So there was a bucklescript language/syntax - in addition to ocaml and reasonml?

I'm not sure what to make of:

[https://rescript-lang.org/](https://rescript-lang.org/)

> This has no impact on the development of the ReasonML language. In contrary, > ReasonML can now focus on their goals, as much as we can focus on ours.

Does this mean that ReScript is/will be a language that compiles to js, but not machine code?

And that ReasonML will continue as an ocaml dialect that supports both compiling to machine code (eg for back-end services, native apps) - and to js - using the ReScript compiler? But only interop with ReScript when targeting js?

<comment><USER17> Bucklescript extends OCaml syntax. OCaml has good support for language extensions. You need adaptations to interface to js.

<comment><USER16> OK. So ReasonML and bucklescript both extend ocaml syntax? And the bucklescript syntax and compiler is becoming ReScript - distinct from ReasonML.

But the ReScript compiler supports three syntaxi going forward: ReScript(bucklescript), ReasonML and ocaml?

And the ocaml (native) compiler supports ocaml and reasonml - but not ReScript?

<comment><USER17> Reasonml is an alternative syntax for OCaml. From the user's perspective, there is just one language OCaml, with two alternative syntax OCaml or Reason. If you want to interface to Js you need additional annotation for FFI, no matter which syntax you choose. The Reason syntax includes this FFI [https://reasonml.github.io/docs/en/external](https://reasonml.github.io/docs/en/external) adapted from Bucklescript, while Bucklescript itself is just OCaml plus the annotation and maybe other compiler directives. The Reason syntax also includes support for React which is not part of OCaml. I don't know what goes under the ReScript umbrella.

<comment><USER18> More specifically, the Reason syntax has JSX: you can use React without JSX in OCaml/BuckleScript and you can use JSX for non-React things in Reason (either BuckleScript or native).

</comment></comment></comment></comment></comment><comment><USER13> If you search for "bucklescript" on Google, it shows lots of links to [https://bucklescript.github.io](https://bucklescript.github.io) All of them are now broken. So much for "we'll rename tools in backwards compatible way"

Edit: the site is now back

<comment><USER19> Or if you go to the docs, BuckleScript is everywhere:

[https://reasonml.org/docs/reason- compiler/latest/introductio...](https://reasonml.org/docs/reason- compiler/latest/introduction)

<comment><AUTHOR> Or if you go to the ReScript docs, the naming has been changed: [https://rescript-lang.org/docs/manual/latest/introduction](https://rescript- lang.org/docs/manual/latest/introduction)

<comment><USER13> The fact that naming has been changed shouldn't break people's bookmarks, links from blogs, links from external documentation, search etc. You keep the site around until the current version is truly and fully deprecated, and only then remove it, maybe.

The site is back up though. Next step is to plaster banners on each page directing users to the nee docs.

<comment><AUTHOR> The redirects are all done directly. No banners needed.

<comment><USER13> The redirects are done directly if github supports it. Going by the undeniable fact that bucklescript.github.io was unreachable when the repo was renamed, you will need banners.

</comment></comment></comment></comment></comment></comment><comment><USER20> I'm glad that this project seems to have some momentum. There was a long time when the ReasonML blog didn't update, and I was afraid the language was dead.

<comment><USER21> This has been confusing for sure - most of the improvements for the language has been blogged at the Bucklescript website, since the Reason repo was only responsible for the syntax (and syntax has been mostly stable). So there is a ton of momentum hidden from visitors on the Reason site.

Hopefully that issue solved by this rebrand - a language should have a unified website for Syntax, Compiler and Standard Lib, and Blog Updates.

</comment></comment><comment><USER22> Seems like a poor choice of branding for discoverability and SEO. Really curious about the process for that decision.

<comment><USER11> "Reason" was/is an inspired name for this kind of programming language. I mean, here's what the dictionary says:

        reason [mass noun] The power of the mind to think, understand, and form judgements logically

\--

Alice: What are you using for that project?

Bob: I'm using Reason

<comment><USER22> I don't think it's in dispute that the name "Reason" is inspired. "ReScript" is not good for discoverability when we're discussing that in the context of search engines, however.

</comment></comment></comment><comment><USER23> Cool, I hope this does well. Last I looked at reason/bucklescript I really liked it, but found the barrier for entry pretty high. The bsc compiler wouldn't even install on arch.

<comment><USER18> What problems did you have installing? I think it was straightforward for me on manjaro.

<comment><USER23> This was a year or more ago, but this failed to install: [https://aur.archlinux.org/packages/bs- platform/](https://aur.archlinux.org/packages/bs-platform/)

It's pretty out of date here too. I can't remember if I tried to install with npm.

<comment><USER18> Oh yes, you definitely want to install it with npm rather than your package manager, unless you are trying to completely avoid npm.

</comment></comment></comment></comment><comment><USER24> I was trying to convince my boss to let me break off a piece of my Node.js program and rewrite it as a separate Ocaml process. Which he thought would take too long.

But then I remembered Reason exists and there is no argument about taking too long anymore because I can incrementally convert one function at a time if I need to.

I hope someone convinces the guy who shows up on Google under Rescript to use another name or something.

</comment><comment><USER25> Can I get a compile to js comparison here- if you've used more than 1

1) bucklescript 2) typescript 3) f# fable 4) scala.js 5) gopher.js 6) clojure 7) elm

<comment><USER26> What blows my mind about bucklescript is the compiled output is small and readable. Also because "it's just javascript" making it work with other javascript is much easier than with other examples. The compiler is also FAST

That experience is similar to typescript "it's just JS" except that the HM type system feels like MAGIC when you compare it to TS.

When you work with cljs and elm you need to bring in the runtime so the payloads are large. Additionally errors in prod can be opaque as the output is usually minified and barely resembles your original source. I believe there is tooling around this but it is still not the same as regular JS in that regard.

Interop between reasonml and cljs is comparable - typing reasonml can take a bit of getting used to but there are escape hatches and gradual typing to allow you to incrementally type things.

So ELI5:

type system of Elm.

Interop and "impurity" of cljs but immutability encouraged by language

"its just JS" like TypeScript

Haven't used f#, scalajs or gopher

Unfortunately, because there are many many layers of complexity which is not always easy to google or discover it can be hard to get started

</comment></comment><comment><USER27> Still no async/await?

</comment><comment><USER28> Here is what they are saying on reasonml.chat[0].

[0]: [https://reasonml.chat/t/bucklescript-is- rebranding/2460](https://reasonml.chat/t/bucklescript-is-rebranding/2460)

</comment><comment><USER29> Just another example why betting on platform languages always wins long term.

<comment><AUTHOR> How so?

<comment><USER29> Platform languages might not be so shinny as guest languages, but they will stay relevant as long as the platform plays a major role, and might even outgrown the platform into other domains.

Guest languages are always fighting for adopting, require FFI, additional debugging tools, tend to create duplicate libraries for everything ('cause their use must be idiomatic in guest language).

Even when FFI is kind of copy-paste compatible with the platform language, eventually the platform language will introduce concepts that aren't that easy to integrate into guest language, or the shiny features from guest language require funnel interfaces to the host language, or aren't exposed at all, thus increasing the divergence.

Then comes the rebranding, which might introduce uncertainty into the ecosystem regarding its future.

So coming back to the platform languages.

C, JavaScript, Java, C#, PHP, Objective-C, Swift might be not be the best, and they have their warts (how I love to hate C), but at the end of the day they own the platform that made them what they are, and will stay around as long as their platforms are relevant.

</comment></comment></comment><comment><USER24> [https://discord.com/invite/reasonml](https://discord.com/invite/reasonml) to discuss with them directly.

</comment><comment> node-bayarea So, no more "BS" ;)

</comment><comment><USER26> Shame libraries like bs-json bs-css bs-express all exist...

<comment><USER15> ReScript will continue to support existing bucklescript bindings and tools (like ppx). It would be great to align library names with the new brand name though (bs- always sounded weird imo)

</comment></comment><comment><USER30> TL;DR - [https://rescript-lang.org/](https://rescript-lang.org/)

Future of BuckleScript and Reason now both called ReScript.

<comment><USER16> No, apparently not. (it's what I thought first too).

It would seem bucklescript (the language/syntax) and bucklescript (the compiler) and the infrastructure for js interop will be named ReScript.

ReasonML (the syntax/language) will continue to work with both the ReScript compiler/framework and with the ocaml compiler.</comment></comment>


Facebook on track to make $1.1B revenue in 2010 - <AUTHOR> http://techcrunch.com/2010/06/22/facebook-revenues/

<comment><USER2> I'm more interested in seeing the number for profit.

<comment><USER3> I am guessing the profit is nothing to brag about, otherwise I am sure they would have...

<comment><USER4> He clearly states they don't care about profit: "At this point in the company's evolution, I don't see a huge need for the company to be throwing off a huge amount of profit. What's the point? [...] If you prematurely optimize, you might get a bigger piece of a smaller thing."

<comment><USER5> On the other hand, they already have 400 million users, which is about 20% of the entire internet population in the whole world[1]. Part of me is thinking what exactly are they waiting for? Something tells me even if they were at 100% internet population, they would still be making meager profits and have an underwhelming IPO. But then again I'm a glass half empty kind of guy when it comes to Facebook.

[1]<http://www.internetworldstats.com/stats.htm>

<comment><USER6> 20% of the internet population what percent of the time? for what subset of their habits?

</comment></comment></comment></comment></comment><comment><USER7> So they're making $2.50 per user per year? Nice one.

<comment><USER8> How much are they making per employee?

<comment><USER9> $2.5 / user * 1.1m users / developer = $2,750,000/developer

[http://blog.ebuddy.com/index.php/ebuddy-blog/beating- faceboo...](http://blog.ebuddy.com/index.php/ebuddy-blog/beating-facebook-at- user-to-engineer-ratio/)

<comment><USER10> As a matter of comparison, let's look at Google.

$23.6 bn in 2009 (don't have 2010 numbers, and don't want to speculate).

I don't know how many engineers they have, but I've heard the number 10,000 bandied about.

The below says about 20,600 employees total, so my hunch is that 10k might be a little bit high. [http://investor.google.com/documents/20100331_google_10Q.htm...](http://investor.google.com/documents/20100331_google_10Q.html)

Given the 23.6 bn is probably low for 2010, and 10,000 engineers is probably a bit high, the resulting value of 2.36 million is a lowball estimate. The real number is probably closer to, oh, say, $2,750,000 / engineer :D

</comment></comment></comment></comment><comment><USER11> What do you think the minimum investment for buying Facebook's stock at the IPO will be?

</comment><comment><USER12> wow, sickest PR team ever.</comment>


Osfoora for Mac: A Comprehensive Review - <AUTHOR> http://zerodistraction.com/blog/2012/2/18/osfoora-for-mac-a-comprehensive-review.html <comment><USER2> The name "Osfoora" initially struck me as an encoding of "Twitter" with a substitution cipher ("o"s in the same places as "t"s, and the same length), but apparently it's Arabic for "Little bird".</comment>


Privacy is dead.  Long live Trust - <AUTHOR> http://www.datagenetics.com/blog/september32013/index.html

<comment><USER2> Great overview :)</comment>


Ask HN: Is anyone keeping statistics about internet usage during COVID-19? - <AUTHOR> As many countries are in lockdown it will be really interesting to see some usage data.... <comment><USER2> Cloudflare's blog posts about COVID-19 impact on the internet is a good starting place: [https://blog.cloudflare.com/cloudflare-during-the- coronaviru...](https://blog.cloudflare.com/cloudflare-during-the-coronavirus- emergency/) and [https://blog.cloudflare.com/covid-19-impacts-on-internet- tra...](https://blog.cloudflare.com/covid-19-impacts-on-internet-traffic- seattle-italy-and-south-korea/)

<comment><USER3> Yes, we are. We are watching it very carefully. What do you want to know?

<comment><USER4> What's the delta in average daily throughput and peaks at your exchange points at different COVID milestones (China quarantine, Italy quarantine, France quarantine, US national emergency declared)?

I assume traffic utilization has jumped, just curious by how much.

<comment><USER3> We are publishing data on our blog: [https://blog.cloudflare.com/covid-19-impacts-on-internet- tra...](https://blog.cloudflare.com/covid-19-impacts-on-internet-traffic- seattle-italy-and-south-korea/)

Stay tuned.

</comment></comment></comment></comment><comment><USER5> Google tracks how many people connect with IPv6, which is a metric for how many people are staying at home:

[https://www.google.com/intl/en/ipv6/statistics.html](https://www.google.com/intl/en/ipv6/statistics.html)

IPv6 connections peak in the weekend and over the Christmas break, when people are connecting from home.

</comment><comment><USER6> Most CIX do have a statistics website. See [https://en.wikipedia.org/wiki/List_of_Internet_exchange_poin...](https://en.wikipedia.org/wiki/List_of_Internet_exchange_points_by_size) [https://de.wikipedia.org/wiki/Internet- Knoten#Tabelle_intern...](https://de.wikipedia.org/wiki/Internet- Knoten#Tabelle_internationaler_Internet- Knoten_\(CIX\)_\(nach_Datenverkehr_sortiert\))

</comment><comment><USER6> [https://www.de- cix.net/en/locations/germany/frankfurt/statis...](https://www.de- cix.net/en/locations/germany/frankfurt/statistics)

</comment><comment><USER7> My gigabit home internet was consistently up/down at 890-920mbps but since the outbreak it is only at 490-510mbps. :(

</comment><comment><USER8> I only can say that I read that the major internet service providers on Spain are nearly at the limit of what can handle.</comment>


Nvidia RTX 3080 cards are selling for thousands on eBay, and people are pissed - <AUTHOR> https://www.theverge.com/2020/9/17/21443901/nvidia-rtx-3080-ebay-reselling-sold-out-shortages <comment><USER2> It's not just bots, the supply itself was extremely low. Many redditors pointed out, using employees as source, some microcenters had a grand total of 10 gpus each.

This was nothing more than a paper launch.

</comment><comment><AUTHOR> Reading reddit forums this morning, it seems individual consumers didn't even get a chance to order - sites like Bestbuy went from "Notify when in stock" to "Out of stock" at 6am PST (supposed preorder open date).

</comment><comment><USER3> Have a read at this. On this OP's opinion, which he's spoken to people close to the issue, Nvidia is purposely limiting stock and giving better cards to reviewers, in hopes they will be seen in a positive light, only to upcharge customers for lesser-quality models when the "stock" frees up in October.

[https://www.mooreslawisdead.com/post/nvidia-s-ultimate- play](https://www.mooreslawisdead.com/post/nvidia-s-ultimate-play)

<comment><USER4> I don't know if it's reliable source (regarding nVidia), but you'll be surprised to know that most manufacturers do this. That's why it's better to wait for those that post updates about the product after a certain period of time and to give a chance to the smaller reviewer that most likely had to buy the stuff to test it, just like everyone else.</comment></comment>


Show HN: Penny – Sell via Instagram; has an API to automate shipping/verticals - <AUTHOR> https://www.paywithpenny.com

<comment><AUTHOR> I just launched my first company, Penny. Penny provides a simple way to open an online shop on Instagram. Sellers post a photo of the item along with the price and the hashtag '#paywithpenny'. Buyers can then purchase the item by posting '#sold' in the comments.

It also has an API ([http://www.paywithpenny.com/api](http://www.paywithpenny.com/api)) so you could pontentially automate shipping (if you have some sort of drop-shipping setup) or even manufacturing for on-demand items such as art prints.

To celebrate the launch, we launched a bunch of koozies into (near) space and are selling them via @beentospace on Instagram. Proceeds will go to charity.

</comment><comment><USER2> This sounds pretty amazing, though I would love to see the actual user flow after the #sold comment. Couldn't find an about page or a blog post though..

</comment><comment><USER3> So ridiculous and cool

</comment><comment><USER4> So awesome!

</comment><comment><USER5> Awesome!</comment>


Microservices Bliss with Docker and Traefik - <AUTHOR> http://blog.hypriot.com/post/microservices-bliss-with-docker-and-traefik/ <comment><AUTHOR> Incidentally, Traefik version 1.0.0 [0], codename reblochon was released [1] a couple of days back.

[0] [https://github.com/containous/traefik/releases/tag/v1.0.0](https://github.com/containous/traefik/releases/tag/v1.0.0)

[1] [https://blog.containo.us/traefik-1-0-0-reblochon-is- out-e6fc...](https://blog.containo.us/traefik-1-0-0-reblochon-is- out-e6fca002284d)</comment>


A Regulatory Framework for the Internet - <AUTHOR> https://stratechery.com/2019/a-regulatory-framework-for-the-internet/ <comment><USER3> There should be no regulatory framework at all. The Christchurch video should have been able to be seen by everyone if they so chose. All of it should be free as in speech. I find discussing the implementation of alternatives anathema.

Youtube, Facebook, etc. are just a stopgap solution for infrastructure that should enable completely distributed and unblockable information by default. The problem is that we've taken too long to move on from them because they're easy. Any time the progress of technology slows down people seek to control how it's used. That this guy is explaining how the regulatory framework _should_ work is a symptom of of this cycle and it needs to be ended or at the very least we need to move on to the next phase.

Seriously, any regulatory framework for the internet is shit and any line of thinking allowing for such shouldn't even be followed. Period.

<comment><USER4> We're past the point of debating whether to regulate the Internet. That ship has sailed. It's painfully obvious that the ease with which a nation-state actor can spread propaganda necessitates _some_ form of regulation for security purposes.

Because the Internet doesn't belong to one nation, there are many different ideas as to what that regulation needs to look like. The biggest problem in the "everything should be free!" viewpoint is the assumption that all cultures around the world will converge on western democratic values. That's honestly a pretty arrogant assumption (though shared by many in the west).

There absolutely needs to be _some_ framework — I'm just not sure the author proposes is the right one. I normally like Ben Thompson's frameworks, but the categories he proposes are not MECE and very hand-wavy. It's a good start to thinking about the problem, but there are a lot of business models aside from ad-supported that drive problematic behavior as well.

<comment><USER3> Whenever I'm reminded that people like you exist I remember why I'm working so hard to build technological barriers that will eliminate the damage your screwed up viewpoints will cause. You are the oppressors. Remember that.

<comment><USER4> If you don't regulate mass communication, the person who buys the biggest loudspeaker becomes the oppressor.

<comment><USER5> We need regulation, but not in the authoritarian way you propose. We need to _prevent_ any one person or organization from having too big a loudspeaker, and that means maintaining a free-expression attitude and creating regulation that ensures that no one can interfere with that. Your statement is highly ironic because all it does is hand the fucking loudspeaker to the government instead, which as you yourself said, can be any sort of government, including authoritarian ones. You haven't thought this through, and there are people who have done so for a lot longer than you have. Your arrogance in this matter will be your undoing.

</comment></comment></comment></comment></comment><comment><USER6> UGH. I was so excited when I read the thread title, only to be sorely disappointed to realized they're talking about regulating the _wrong_ thing.

We need regulation to keep the web at least moderately open and interoperable. We need regulation to enforce standards and make it possible to jump over the wall of walled gardens.

We're in a sorry state right now in that only email and SMS are open standards for talking to people, and under constant siege. Attempts for new revolutionary decentralization are yet to do a better job than most protocols from the 80s. What if we had regulations to force service providers to provide APIs and interoperability in their services? What if messaging someone on Facebook from Google hangouts was as easy as sending an email?

The balkanization of the web and walled gardens is to me the biggest issue that affects the most people for the worst, and while we constantly talk about the new technologies that could solve the issue if only there was a way to develop them, we ignore (I think often out of unconditioned reflex) that the issue could be fixed in a timely and reasonable manner by bringing the government in with a reasonable framework.

People complain all the time about how Google and Facebook and Netflix and Spotify own all my data and make it impossible to use it outside their platform, yet I never hear people discussing the most obvious solution: just regulate them to make the data interoperable and empower you like you wish all the decentralized technology would enable you to do, if only they had adoption!

<comment><USER7> > People complain all the time about how Google and Facebook and Netflix and > Spotify own all my data and make it impossible to use it outside their > platform, yet I never hear people discussing the most obvious solution: just > regulate them to make the data interoperable and empower you like you wish > all the decentralized technology would enable you to do, if only they had > adoption!

That doesn't address the issue where your personal information is their business, ie. the ad-supported business as discussed in the article. The limits of what's allowable probably needs to be well-understood by all parties.

<comment><USER6> In the case of Facebook unless it becomes a subscription it does not indeed. In the case of Netflix, Spotify and G Suite it's baked into the subscription already, what the regulation would do is alleviate vendor lock-in.

</comment></comment></comment><comment><USER8> This is a simple articulation around something I've wondered for a while.

From a regulatory perspective should we be less concerned with regulating the content on the platform (e.g. a single post, copywrited material) and more concerned with regulating the broadcast effect/technology now inherent in all the non-chronological feeds across ad supported social giants (e.g. instagram now put my post in everyone's feed, or trending).

There seems to be more than enough precedent in the US around regulating control over broadcast, pre-internet: Limiting TV and newspaper ownership shares, limiting advertising to children and smoking ads, equal time, decency standards -not advocating, just calling out that these things have happened.

Some of this I think stems from content being carried on lines deemed "common carrier" (I'm no expert), but the gist seems to be the same here. No one said you couldn't make a movie that included a line with the word "Fuck", but you couldn't broadcast that movie into every American home before the 8 o'clock news.

<comment><USER9> The precedent for regulating content on broadcast networks is based mainly on scarcity of radio spectrum; something that does not apply to the Internet. See for example: [https://en.wikipedia.org/wiki/Red_Lion_Broadcasting_Co._v._F...](https://en.wikipedia.org/wiki/Red_Lion_Broadcasting_Co._v._FCC)

</comment></comment><comment><USER10> I'm not a staunch defender of social media giants, but this article paints them in an unfair light.

It seems to suggest that FB endorses content like the Christchurch video, merely because the guy posted it on FB live. FB removed the video as fast as they could.

Apart from magical AI that could somehow stop the recording, I really don't know how else FB should have acted.

<comment><USER11> What they could have done was have an entirely different business model.

Guy sets up super-projector pointed at the moon, lets people submit videos to a website and vote on which ones get projected on the moon. Pretty soon it's playing gore porn. Guy takes it down as soon as he finds out says "oh man sorry about that, don't know what I could have done to stop that", but then turns the projector right back on because every so often it plays an ad and those are paying his bills.

Some things are just a fundamentally bad idea and there's no fixing it. I don't have a great solution for it. I'm pretty sure the entire Internet has proven to be a bad idea, in fact, but like so much technology you can't put it back in the box so now we're stuck with it.

</comment></comment><comment><USER12> The last thing the internet needs is regulation.

</comment><comment><USER13> Unheard of. This is why in the US we have the 1st amendment backed by the 2nd amendment. The freedom of speech can't defend itself.

What needs regulation is ISPs and companies that deal with personal data.

</comment><comment><USER14> What an oxymoron ? Regulation and Internet. If you regulate it, everyone will leave your regulated network for another parallel open network IPFS anyone.

<comment><USER15> > everyone will leave your regulated network for another parallel open network > IPFS anyone

Maybe that'd be a good thing?

What I wish could happen here in the US is wider private mesh network adoption.

Right now, it exists at a certain level in some cities, but it is something that is relatively unknown, and ultimately it has to connect to the wider internet via commercial carriers, which ultimately limits it.

If it could be completely distributed, with all nodes privately owned - <USER2> something like CB radio used to be (of course, there were problems with that from some operators - sigh) - anyone could stick up an antenna and easily become a node on the mesh.

...but in the US, you run into a very big problem: Hopping the "gaps".

In certain areas of the United States (primarily the southwest region, but others exist too) making the hop from one city to the next via independent distributed mesh means is virtually impossible. Either distance or geographic constraints (mountains) hinder the coverage.

The best solution I could think of, that wouldn't require one or multiple wealth benefactors (who would then be in de-facto control of that portion - not what is wanted, I'd imagine), would be mesh nodes in all vehicles, so that you'd have travelling nodes on the highways and elsewhere.

I know it's all a pipe dream; I'm just tired of being so restricted in what I can or cannot do with my "pipe" unless I spend a buttload of money on a "business class" pipe (which my provider may not even allow to my home; plus I bet it would also have certain restrictions as well).

</comment></comment><comment><USER16> but the questions is: Does really spreading Christchurch video have any negative consequences?

Without answer to this question we cant censor speech and say we are not totalitarians.

<comment><USER10> Yeah the article expects you to accept that without question. I'm totally fine with FB removing it from their servers - I would do the same thing. But government interference here would destroy the internet, plain and simple. We can have "nuanced" discussions all day long, but there is no "nuanced" law around what can and cannot exist on the internet.</comment></comment>


Obama signs secret directive to help thwart cyberattacks - <AUTHOR> http://www.washingtonpost.com/world/national-security/obama-signs-secret-cybersecurity-directive-allowing-more-aggressive-military-role/2012/11/14/7bf51512-2cde-11e2-9ac2-1c61452669c3_story.html?tid=socialss <comment><USER2> I thought Obama was promising transparency not too long ago.

<comment><USER3> Did you read the article or just the title? The subject-referenced policy Obama signed is pretty much detailed high-level policy guidance on what is considered network defense and what is considered cyber operations, and in doing so sets out rules for usage of such. This is exactly the kind of thing CIA, Dept. of State, Dept. of Defense, etc. _don't_ need being made directly available to Iran, China, Russia, non-state actors, etc.

The article also notes that corresponding guidance for cooperation between the government and civilian agencies is still being worked both on Capitol Hill and as a separate Executive Order.</comment></comment>


Eventbrite UA claims right to film, distribute users events - <AUTHOR> https://www.eventbrite.com/support/articles/en_US/Troubleshooting/eventbrite-merchant-agreement?lg=en_US#8 <comment><USER2> This is my favourite line: "You are responsible for obtaining, at your own cost, all third party permissions, clearances, and licenses necessary to secure Eventbrite the permissions and rights described above, and you represent that you have done so."

Licensed some background music for your event for that specific use? Think again, from now on you have to license everything for worldwide, unlimited use, just in case Eventbrite wants to maybe make a buck off of it.

<comment><USER3> Nobody would use Eventbrite with such a clause, as it makes you liable for unforeseen costs. If the third party rights holder gets wind of this, they can charge you whatever they want as you are forced to pay.

The obnoxiousness and absurdity of this clause is simply stunning.

<comment><USER4> _Nobody would use Eventbrite with such a clause, as it makes you liable for unforeseen costs._

Yet here we are!

</comment></comment></comment><comment><USER5> > You, on behalf of yourself and the Subjects, agree that Eventbrite, its > successors and assigns will own all rights of every nature whatsoever in and > to all films and photographs taken and recordings made hereunder (the > "Recordings"), including without limitation of all copyrights therein and > renewals and extensions thereof, and the exclusive right to use and exploit > the Recordings in any manner, in any medium or context now known or > hereafter developed, including the right to freely edit the Recordings for > use or create new works from the Recordings

I take this to mean that Eventbrite owns the rights to whatever they record forever and ever, somehow including copyrights. So if I wanted to sell tickets to an event and once the event was completed sell a recording of the event, could Eventbrite sue me? It states they have the "exclusive right to use and exploit the Recordings in any manner" (including use in media not yet invented).

Am I interpreting this correctly?

<comment><USER2> No, "hereunder" is the magic word here (as I see it). It should only apply to those recordings done by Eventbrite themselves under these terms, not yours. Still, good luck having an artist sign that some third party (Eventbrite) may potentially record them without recompense.

<comment><USER6> So if it's a ticketed event (i.e. you can't enter without a ticket), would eventbrite need to buy a ticket to access the event to record it?

<comment><USER2> As I understand it, no.

</comment></comment></comment></comment><comment><USER7> This seems completely batshit insane.

For example, even if you wanted to, you can't wave a magic wand and give Eventbrite a perpetual license to play a recording of music that you licensed for your event.

</comment><comment><USER8> These chumps sell tickets...and they want to own all rights to any event that sells tickets through the app? LOL.

"You are responsible for obtaining, at your own cost, all third party permissions, clearances, and licenses necessary to secure Eventbrite the permissions and rights described above, and you represent that you have done so."

</comment><comment><USER9> The filming clause has now been removed. [https://twitter.com/eventbrite/status/988175772031447040](https://twitter.com/eventbrite/status/988175772031447040)

<comment><USER10> Why would I ever trust a business which thought that adding this outrageous language to their TOS is even remotely OK?

For all I know they were exploring how far they can push and will always continue so.

<comment><USER11> I'm going to e-mail them. I hope a decent fraction of this reading this do so, too. Communication is a key part of accountability.

</comment></comment></comment><comment><USER12> I'm neither a lawyer nor a lawmaker, so I'm sure there's a bunch of nuance that makes this difficult to pull of in practice, but please...

We need an enforceable law that penalizes and discourages absurdly overreaching legal agreements that doesn't require lawsuits between the participants that take years and lots of money to resolve.

<comment><USER13> The law of the market says Eventbrite is going to get killed over this.

</comment></comment><comment><USER14> Looks like they've removed that section.

21 April has 8 sections but now it's only 7. [https://web.archive.org/web/20180421071949/https://www.event...](https://web.archive.org/web/20180421071949/https://www.eventbrite.com/support/articles/en_US/Troubleshooting/eventbrite- merchant-agreement?lg=en_US)

but in such a rush they didn't update the introduction which still mentions filming and recording.

</comment><comment><AUTHOR> Twitter discussion [https://twitter.com/branaby/status/987206339268169728](https://twitter.com/branaby/status/987206339268169728)

</comment><comment><USER15> "By reading this comment you agree to give me $100."

I think many of us here either have businesses or work for one that has a user agreement. Do we all do this just to cover our butts?

It seems like such a gray area that you can have "click through agreement" up to a point. But that point where it fails legally is unknown until tested in court.

Maybe a general guideline like "all services directly related to our business arrangement fall under this agreement." Then anything you pay for Eventbrite to do is available for click-through-contracts, but nothing outside of that?

</comment><comment><USER16> The answer is decentralized event ticketing obviously

<comment><USER17> Hopefully you're not shoehorning blockchain bullshit into this.

Decentalization could solve stuff in this space by having the actual event- holder selling the tickets and such.

Adding blockchain to it won't solve any problems that can't be solved traditionally better and easier.

<comment><USER18> I think (or at least hope) gp was being sarcastic. These has been a huge uptick in folks trying to blockchain all the things.

<comment><USER16> I was being a little sarcastic, though if I had to name a few real world use cases for blockchain event ticketing would actually make some sense. Everyone hates Ticketmaster and resellers like Stubhub are rife with scammers. If you can build a solution using blockchain to reduce ticketing fees to 0 and enable ability to resell/transfer tickets it _might_ work.

</comment></comment></comment></comment><comment><USER19> A possible alternative:

[https://eventil.com](https://eventil.com)

Started a while back by some of the guys from (I think, it's been a while) the Ruby scene. Seems decent.

</comment><comment><USER20> Wow, I believe that I have just read (in this section 7), the longest sentence I have seen thus far in my life and I would not be surprised if I never read a longer one.

<comment><USER21> This is far from the worst you'd ever see in a contract; see, e.g., the 416-word sentence at [https://weagree.com/drafting-principles/1-general- drafting-p...](https://weagree.com/drafting-principles/1-general-drafting- principles/1-1-plain-english-simple-and-clear/a-short-sentences/)

</comment></comment><comment><USER22> Wow! I want to see them try this at a Google hosted event.

</comment><comment><USER23> We used Tito [1] to put on Longhorn PHP [2], and we were very happy with it! They're still small enough that they respond very quickly to requests for changes / fixes as well.

1) [https://ti.to/](https://ti.to/) 2) [https://www.longhornphp.com/](https://www.longhornphp.com/)

<comment><USER24> To clarify, Tito is event management software which the parent commenter used to organize the Longhorn PHP event. I thought this was some random spam before clicking through the links.

</comment></comment><comment><USER25> Tickettailor.com is a good indie alternative. Easy to use and no ticket fees.

</comment><comment><USER26> Clearly this was not what they intended, and I'm sure it'll get fixed this week.

<comment><USER20> Yes, _if_ this happens to be noticed by the media, I'm certain we'll see a press release or interview with the Chief Damage Control^W^WMarketing Officer in the next couple of days where they explain how this is all just one big misunderstanding ("no no no, we didn't mean _that_ , we promise!") and they are working quickly and diligently to clarify and simplify their new Merchant Agreement and straighten this little issue out.

A few days after that, some other newsworthy event will happen, everyone will forget about this, and we won't hear another word about it until the first lawsuit over this Agreement is announced.

I think the only thing that might be missing is an indemnification clause -- although it may very well be in there (I freely admit to not reading the _entire_ Agreement, just this section 7). That way, when the venue you've booked for your event -- or one of the participants or attendees -- decides to sue Eventbrite, they can point out how _YOU_ promised them you had everything taken care of and so it is _YOU_ , obviously, who is entirely to blame. For everything. I expect that elsewhere in this Agreement, however, you have likely given up any right to sue and agreed to have someone of their choosing handle any "disputes" which may arise.

 _IF_ I, by chance, ever again desire to attend an event where Eventbrite is the vendor handling ticketing, I will certainly make sure that I read, very carefully, every word of any agreements they try to get me to click through during the ordering/checkout process. Considering everything I just read here, I cannot imagine the things that they will expect an attendee of an event to agree to.

<comment><USER2> You may want to take a look at 9 (b) of their Terms of Service then... you agree to arbitration or small claims court max. But of course you could have opted out of that (9 (i)) - if you knew that you had to do it within the first 30 days of using Eventbrite. Too late now.

<comment><USER20> Heh, I edited my comment and added a quick note about that -- apparently right about the same time you were writing this comment.</comment></comment></comment></comment>


Google+ upcoming features: Google Experts and the Facebook wall - <AUTHOR> http://grack.com/blog/2011/09/26/google-upcoming-feature-discovery-google-experts-and-the-facebook-wall/ <comment><USER2> Thanks for doing the code dive, Matt, and then blogging what you found. I will be curious to see what they wind up doing with the Google Voice integration. Yes, it's predictable that they would do that kind of integration... but still good to see.

</comment><comment><AUTHOR> Google Experts is definitely the most interesting part. It appears to be a "Quora-killer" inside of Google+.</comment>


Show HN: Alternative to inverse kinematics (?) - <AUTHOR>

Hi HN,
This was my M.A. thesis, and I would appreciate some feedback from HN. It is a robot arm with a visual system. It did a tracking task - looking at a computer screen, following a red dot by moving a mouse.
https://www.youtube.com/watch?v=wQ6FGeSjN9c
The interesting thing is it doesn't use traditional inverse kinematics, instead there are multiple cascades of feedback loops, no internal models.
First level are just standard position control loops, just like any servo.
Second level loops are controlling relationships between arm points, they operate in parallel, simultaneously. For example - one of the loops maintains distance from fingertip to base (reach), and another one maintains the height from the fingertip to the surface. If the setpoint for reach changes, then the arm will start extending the elbow. That will disturb the height control system, and it will compensate to maintain its setpoint.
Third level is the visual system, it was used to maintain distance of cursor marker to target marker. If the target moves up, then the control system maintaining vertical distance sets a new setpoint for the height control system, which sets the shoulder servo to move, and that disturbs the reach system which then starts the elbow servo and so on.
It is actually an M.A. in psychology, on theories of motor control, testing perceptual control theory. It was very low budget and my mechanics skills are not yet polished. Hopefully, next one will be better. I was gonna record it doing the tracking task, but a couple of gears broke, and now I need to replace the gearbox.
Anyway.. anyone here read about perceptual control theory? There are some interesting simulations of arms with 14 degrees of freedom, also not using traditional inverse kinematics. I'm kinda weirder out by the lack of people who have heard about the theory, it's been around for quite a while, and seems like a pretty interesting approach. <comment><USER2> Interesting - what is the advantage in not using inverse kinematics?

I'd think with your second level loops with objective functions like you say, you'd be able to get the thing to work for small changes at low speed. At higher speeds, you'd have competing objectives - I think this could explain the vibrations you get at higher speeds? Perhaps also a risk of getting stuck in some local minima/maxima where your robot thinks it can't move to a better position - probably more of a danger with higher degrees of freedom.

<comment><AUTHOR> The advantage is in reduced computational load on the calculating machine. Not so much for a small number of DoF, but for multi-jointed arms or humanoid robots, or hexapods and similar. If you use inverse kinematics, the computational load grows exponentially with the number of DoF. For cascaded loops, it should be smaller, since computation is local to the loops.

Second level loops need to be slower than first level loops, so that they don't cause conflicting setpoints. It works pretty good in simulations, so I'm thinking the vibrations are probably caused by mechanical deficiencies. Also, they come with increasing the gain of second level loops. Most vibrations die out after reducing the gain.

As for the local minima and being stuck, I haven encountered that problem with 4 or 5 degrees of freedom, or in the 14 dof arm.</comment></comment>


Log for Machines - <AUTHOR> http://journal.paul.querna.org/articles/2011/12/26/log-for-machines-in-json/

<comment><USER2> NO! No, no, no, a thousand times, no.

I spend all day every day troubleshooting broken things. Human readable logs are the very last thing that I have left that leaves me with any energy to keep troubleshooting things. If you take that away from me too, I swear I'm going to shoot somebody. (If I have any sense left when I go 'round the bend, I'll target a software engineer that thought it would be a good idea to fix what wasn't broke.)

Here's the thing: I can do anything with a human readable text log. I can scan it visually and look for anomalies; I can use my favorite text editor with it; I can grep it; I can cobble together some magic incantation on a command line to munge it to death until it cries out in mercy and gives me _exactly what I'm looking for_.

If I have to use somebody's special web-based woo-widget to view and search the contents of a log, if I'm restricted to the limits of their imagination when it comes to trying to get useful information out of the log, if I have to debug their dumbass invention while somebody's time-critical server is flopping around on the floor before I can even begin to figure out what in the heck is actually wrong with the server, I'm going to be stupid not to give up completely on support.

If you want to log information _which is useful to you_ , you can do that without hardly any trouble at all without replacing perfectly good, reliable logging facilities which are the way they are for damned good reasons. Just write a Ruby whatchamacallit or a Python thingamajig or a PHP flibbedyfloo and log it to your MySQL database or your Postgres database or your no-sql nuh-uh- it's-not-a-database. I don't care.

But if I ever open up a server log and get blasted by a jillion lines of JSON that make it a thousand times harder for me to figure out how something broke I'm going to go on a shooting spree.

<comment><USER3>
        >Here's the thing: I can do anything with a human
        >readable text log. I can scan it visually and look for
        >anomalies; I can use my favorite text editor with it; I
        >can grep it; I can cobble together some magic
        >incantation on a command line to munge it to death
        >until it cries out in mercy and gives me exactly what I'm looking for.

That's basically _why_ the article is proposing using JSON: it's easily readable/scannable by a human, can be easily opened in a text editor, isn't all garbagy like XML, has near perfect support in every scripting language and is rumored to be Christ 2.0.

        >But if I ever open up a server log and get blasted by a jillion
        >lines of JSON that make it a thousand times harder for me to figure
        >out how something broke I'm going to go on a shooting spree.

Are these really that different?:

        >host.com:80 w.x.y.z - - [25/Dec/2011:06:07:42 -0600] "POST /page/open HTTP/1.1"
        >200 1200 "-" "Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0"

        >{'host':'host.com', 'timestamp':'2011-12-25 06:07:42', 'method': 'POST',
        >'path':'/page/open', 'protocol':'HTTP 1/1", 'response_code':200,
        >'content_length':1200, 'user_agent': 'Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0'}

There's a bit of extra verbiage, but the JSON version is perfectly extensible and would allow the devs to add additional debugging information to help you find issues. That said, I can see the downside to letting devs insert random crap, because you could get reams of garbage in the logs. As example of possibly helpful info it'd be easy to add db and app times:

        >{'host':'host.com', 'timestamp':'2011-12-25 06:07:42', 'method': 'POST', 'path':'/page/open',
        >'db_time':0.157, 'app_time':0.43, 'protocol':'HTTP 1/1", 'response_code':200,
        >'content_length':1200, 'user_agent': 'Mozilla/5.0 (Windows NT 5.1; rv:8.0) Gecko/20100101 Firefox/8.0'}

<comment><USER2> > _...isn't all garbagy like XML..._

I don't think it's fair to take something that isn't garbagy at all and then say that the proposed alternative isn't bad because it's not as garbagy as one of the garbagiest things ever invented. :-)

JSON may not be as garbagy as XML, but it's still garbagy. With logs in their current format, often my very first tool in log analysis is the scroll wheel on my mouse. It's so lovely because all the lines are unbroken, the columns line up so neatly, and the data in the columns are so distinct from each- other. JSON dicks all that up.

Now, OK, I'll admit it wouldn't be very hard for me to whip up something that will take a JSON-formatted log and turn it into something I actually want to read. And in fact that's exactly what I'd end up doing.

But, logs are already getting big enough that some companies are doing very stupid things to them. (Bluehost, by default, logs only the last 24 hours for all hosted sites; if you turn on their "extended" logs feature, their logs still have huge gaps in them.) JSON makes that problem a lot worse for those companies. And, if their log rotation isn't set up correctly -- and if they're doing vhosting I'll bet you a donut it's not -- then what would have been a silly amount of data to process now becomes nearly impossible to process.

<comment><USER3>
        >> ...isn't all garbagy like XML...
        >I don't think it's fair to take something that isn't garbagy at all
        >and then say that the proposed alternative isn't bad because it's not as
        >garbagy as one of the garbagiest things ever invented. :-)

I can see how what I wrote could be interpreted to say "JSON is a little garbagy", but I didn't mean to imply that JSON is at all garbagy. In fact, in comparison to the standard web log, it's very readable. Further, as a dev, I read web logs pretty frequently and I've forgotten what the "- -" was in the log line I pasted...

EDIT: hey, I ignored most of your reply and that's rude:

My first tool for debugging Apache is 'less', so I would be screaming and yelling if JSON logs were harder to read than non-JSON logs.

Agreed about the size of the logs, but JSON logging seems to only change the caliber of the handgun used to shoot yourself in the foot, not turn it into a Howitzer.

</comment></comment></comment></comment><comment><USER4> This falls under "good intention, but not well planned out" IMO. Single line logs are MUCH easier to process with text-oriented tools, which is why they've stuck around for so long.

This solves the encoding problem, but not the "how do I read/search it" problem, which is kicked down the line to other tools. And having a different format for every daemon is just a new problem.

I'd look at how others have dealt with the problem - for example, Logstash, which is a log parsing and movement engine:

<http://logstash.net/docs/1.0.17/learn>

Also, timestamps aren't recommended for storing time data - they're not human readable, and convey less information than something like ISO8601 which covers more edge cases.

</comment><comment><USER5> Not this again...

        * The first level consumer of a log message is a human.
        * The programer knows what information is needed to debug an issue.

      I believe these presumptions are no longer correct in server side software.

The author's assumptions are wrong on both cases:

There may be any number of automated agents consuming the log, so a human isn't the largest consumer of log messages (in volume), but it is the first consumer of log messages as it is a human that ultimately will need them to troubleshoot issues.

Programmers are not the ones who "debug" issues in production environments.

Both of these are just symptoms of the same base misconception about how systems administrators go about their work. The same misconception that brought us XML configuration files.

When troubleshooting production issues I want to be able to grep for specific strings or regular expressions. I want to be able to tail the log. I do not want to have to parse structure (programatically or mentally), I do not want multi-line log entries. I do not want to be forced to use a tool just to transform the log from whatever format into something I can read.

Going even further: often production issues arise when only people less familiar with the system are available locally. In these cases I don't want to explain log structure over the phone.

</comment><comment><USER6> There's actually a plan to replace syslog with something that's easier to create tools for.

[https://docs.google.com/document/pub?id=1IC9yOXj7j6cdLLxWEBA...](https://docs.google.com/document/pub?id=1IC9yOXj7j6cdLLxWEBAGRL6wl97tFxgjLUEHIX3MSTs&pli=1)

</comment><comment><USER7> I wonder if we need text logs at all anymore. It seems silly to expect people to be able to read millions of log entries from tens, hundreds or even thousands of servers. Maybe binary logs using protocol buffers or thrift are the way of the future.

<comment><AUTHOR> Maybe.

Protobuffers or Thrift can definitely be smaller in byte size, which does matter somewhat, but JSON right now is just more easily accessible.

I think in a few years, assuming JSON logging really takes off, you'll see people using these other RPC formats in order to optimize and reduce the size of their messages.

I view 'better' RPC formats as a performance optimization of the same basic idea though: Easily add new fields, and use a format designed for computers to consume.

<comment><USER8> JSON lends itself pretty well to compression as well so a binary format might not buy you as much as you think.

</comment></comment></comment><comment><USER9> Regardless of the syntax for encoding a server event, having a request id (txnId in the post) is an often overlooked detail. See how Google do this in their systems: [http://highscalability.com/blog/2010/4/27/paper-dapper- googl...](http://highscalability.com/blog/2010/4/27/paper-dapper-googles- large-scale-distributed-systems-tracing.html)

</comment><comment><USER10> I'd prefer to have two logs, one for human reading and one for machine consumption.

<comment><USER11> DRY. Just make a text filter that takes the machine ones on stdin and prints out the human ones on stdout. Unix, baby!

</comment></comment><comment><USER12> Apache Flume also xfers things in json.

</comment><comment><USER13> s,JSON,BSON,g

These logs are for machines, and should be compact -- why use JSON at all?

<comment><USER3> Two reasons:

        Easily read by human *and* by machine;

        Highly compressible since it's full of repeating strings.

My Apache logs compress by about 94%. Chances are good that you wouldn't find much of a size difference between gzipped JSON and gzipped BSON (though parsing BSON would be faster).

<comment><USER13> One could imagine a "bzoncat" utility which simply reads bson objects on stdin and emits formatted json objects on stdout. I don't know, the difference probably doesn't matter.

</comment></comment></comment><comment><USER14> Oh christ. I'm pretty sure my sysadmin friends would murder anyone that tried this on their boxen. As an engineer, while I appreciate the amount of shiny going on here, I doubt that adding yet another layer of tooling requirements to dealing with logs is the right answer--this could lead to serious ax- sharpening of picking the best JSON-to-readable scripts, and you can bet your ass that'll be different on every machine, install, site, etc. etc.

All that being said, I could see this being hilariously useful in game development. Having little JSON crumbs dribble out during playtesting and QA would be really handy, and that is an area where data mining is actually quite useful. Having a trivial way of sorting through crumbs by issue or tester, and then being able to, say, project the bugs into an HTML5/WebGL-based tool for devs to use would be really nifty.

<comment><USER15> Social games has been doing this for 2+ years already, with JSON log files scraped into various databases and viewed using web tools for everything from A/B test impressions to virality to monetization to error logging (especially useful when you can't get the error to reproduce locally).

</comment></comment><comment><USER16> Before tea, standard sysadmin response: NO

After tea and some thought: No thanks</comment>


My Experience with OAuth.io - <AUTHOR> http://tommcfarlin.com/oauth-io/

<comment><USER2> This week they open sourced a version of their core, I am curious to see some real project insight regarding this version as well

[https://twitter.com/OAuth_io/status/360280255358963714](https://twitter.com/OAuth_io/status/360280255358963714)

[https://github.com/oauth-io/oauthd](https://github.com/oauth-io/oauthd)

</comment><comment><USER3> I found it easy to use too. Still waiting to see their pricing.

<comment><USER4> [https://oauth.io/#/pricing](https://oauth.io/#/pricing)

</comment></comment><comment><USER5> This was great. Neat tool.</comment>


Show HN: SiteGuru – Check your website for SEO and usability issues - <AUTHOR> https://www.siteguru.co/ <comment><USER2> I have an old browser, but still:

I entered my website, got a blank screen with just this:

{"status":"error","message":"We cannot access this page"}

So I thought, "ah, must add _www._ I guess". Did so and got this:

{"status":"success","message":"Sitecheck started"}

Aand..that was it.

</comment><comment><USER3> I sincerely wish the images were svgs, or at least higher resolution pngs.</comment>