The Ghosts of Baha Mar: How a $3.5B Paradise Went Bust - <AUTHOR> http://www.bloomberg.com/news/articles/2016-01-04/the-ghosts-of-baha-mar-how-a-3-5-billion-paradise-went-bust <comment><USER2> I wonder what the full story is. As told it would paint a pretty bad picture of Exim and Chinese construction labor. Presumably its out there to try to discourage people from dealing with Exim (a cautionary tale of the form "This happened to this guy, don't let it happen to you.") but I doubt that tactic will really work unless the story gets a lot more traction.

And this is the part I don't understand (and conversely why I think there is more to the story); If you are in a contract with a 'no fire' clause, then you only get there by adding 'final approval' clause. That is to say you have final approval on the work performed and if it isn't up to your standard the contractor will re-do it at their expense until it is to your standard. Your only method of putting pressure on the contractor is to deny approval, thus increasing costs which cuts into profits. The people who were enriching themselves on those profits won't want to give them up to re-work costs, and will put pressure on the workers and their supervisors to avoid failing approvals.

So if you don't bother to inspect, and you sign off on work that later fails, you are at fault. While it may be considered rude and unprofessional, there are a lot of people who feel that getting away with extra money while following the letter (if not the spirit) of the agreement as a great pastime. Manufacturing and construction is an area where such people can really turn a small short cut into a big payout for themselves. You have to realize that going in, and they won't be mad at you for calling them on it when its allowed and they will be very pleased when you miss out your opportunity (they consider that a 'win'). You will meet these people during your career, treat them appropriately.

<comment><USER3> > Then the 2008 financial crisis hit, and would-be partners balked. When China > State Construction Engineering Corp., the world's second-largest contractor, > approached Izmirlian about stepping in, he said yes. The company directed > him to Export-Import Bank of China, or Exim, which promotes trade and > investment under the direction of Beijing.

> Seeing a way into U.S. markets, China State Construction promptly invested > $150 million. Exim kicked in $2.45 billion in construction loans -- with the > proviso that Izmirlian could never fire the Chinese builder, no matter what, > and that workers from China would do the job.

It seems his business partners ditched in 2008 and he agreed to a bad contract to salvage the project via an Exim loan.

> In May 2014, Izmirlian appealed to an independent mediation service based in > Washington, D.C., but the troubles multiplied. Pipes burst when inspectors > tested the fire sprinklers and faulty balcony railings had to be reinforced, > people with knowledge of the construction said. When Izmirlian complained, > China delayed its money, one said.

Exim then used its control of the purse strings to put the screws to him whenever there was a problem.

> Christie says he's still optimistic the resort can open. In December, Exim > said a number of potential investors had expressed interest. These include > Guo Guangchang, chairman of a non-state Chinese conglomerate called Fosun > Group, people familiar with the situation say. Fosun already owns stakes in > Club Mediterranee SA and Cirque Du Soleil Group.

Yeah. :/ He should have abandoned ship the moment he needed an Exim loan.

<comment><USER2>
       > Yeah. :/ He should have abandoned ship the moment
       > he needed an Exim loan.

Exactly, and that is where I'm hung up in this story. Since he's apparently had some experience here and he _didn 't_ abandon the project, I would have expected that the contract language would protect him from the situation he is currently in. That it didn't makes me wonder why he agreed to it in the first place. Reminds me of the joke about looking around the poker table to spot the sucker, if you can't spot the sucker then YOU are the sucker.

<comment><USER4> I don't really see what good a contract would do. It's probably worthless in a Chinese court where it would matter.

</comment></comment></comment></comment><comment><USER5> Both Izmirlian and the Bahamian govt were naiive with Chinese business culture. Contracts have zero value.

</comment><comment><USER6> Seems pretty stupid to agree that the construction company could not be replaced.

<comment><USER7> If you can't fire them, how can you possibly hold them accountable?

From the article: >"Baha Mar Ltd.'s decision to file for bankruptcy is the direct result of its failure to secure adequate financing and its mismanagement," the Chinese company told the court.

Which is ironic, because it essentially translates to "By agreeing to use a construction company that couldn't be fired, what did you expect? That's just plain mismanagement right there!"

</comment></comment><comment><USER8> Seems a little dumb not to build half of the resort first and develop a revenue stream while preparing for the second phase.</comment>


Show HN: Point your repos to their new home - <AUTHOR> https://gitlab.esy.fun/yogsototh/gh-notify-move <comment><USER2> You know git is distributed? You can keep all your repos both on GitLab, GitHub, as many local machines as you want... etc. all at the same time.

<comment><USER3> Most orgs like having a single source of truth for their projects, though (for instance, the Linux kernel GitHub repo is simply a mirror). In fact, if anything, this project could set up mirroring so repos are mirrored from GitLab to GitHub, etc.

<comment><USER4> But then, the Linux kernel really have multiple sources of truth, depending on what version you are talking about (Linus branch, mainline, vendor forks, etc)

The main point isn't about the source code, it's about all the rest : bug report, discussions, planning..

</comment></comment></comment><comment><USER5> don't do this please.

I run my own gitea instance, and for repos that are in multiple places, I leave a note in the readme as to what the canonical URL is. If someone wants to open a PR or an issue on Github I don't wanna be hostile by having them create another account just to ask a question. Once the patch is merged, it gets pushed on all remotes.

If you have a large project with lots of contributors and activity, and you actively want to discourage contributions in the wrong place, you can disable issues or PRs for that one repo.

Also, people browse code using GitHub clients, serving an empty Readme is not a good idea to break that behaviour.

<comment><USER6> Why aren't issues, etc., part of the repo and so pulled (optionally) to duplicate repos. Shouldn't web front ends be views of federated content -- having issues in one git web front-end not get propagated to others for the same project is surely a major flaw.

<comment><USER7> Yes, but for-profit corporations like github aren't exactly incentivized to build their service that way.</comment></comment></comment>


A Math Geek's Ride to the High Court in Landmark Patent Fight - <AUTHOR> http://www.law.com/jsp/article.jsp?id=1202435264768&src=EMC-Email&et=editorial&bu=Law.com&pt=LAWCOM%20Newswire&cn=NW_20091109&kw=A%20Math%20Geeks%20Ride%20to%20the%20High%20Court%20in%20Landmark%20Patent%20Fight

<comment><USER2> _"Our revenues are down millions of dollars because we don't have the patent" and the royalty stream that would have resulted, he said. "We have no market power. That's the essence of it. You can't protect your interests." He said competitors have entered the market, and utilities themselves have "reverse- engineered" WeatherWise processes_

You mean you can't get a government-backed monopoly on your product, so you actually have to _compete_?! With _competitors_ who charge _lower prices_?! Cry me a river.

<comment><USER3> With competitors that do not have their liability of having funded years of research to advance the field, but have simply copied the idea after, often by reverse-engineering, as the TFA states.

<comment><USER4> Which is proof positive that it does not warrant a patent, since apparently having access to the input and the output data is enough to re-create the box in the middle.

Besides that, such a big fuss over being able to 'bill a constant amount' month-to-month, it really is nothing but a business method, no matter how intricate the computations behind the scenes.

It's a convenience at best, and one that I would assume would be re-creatable by any number of mathematicians given the assignment.

<comment><USER5> _It's a convenience at best, and one that I would assume would be re-creatable by any number of mathematicians given the assignment._

But just about any patentable idea is recreatable by experts in that field if they are given that assignment. I do not claim to know whether or not this particular patent should have been granted, but I do not see why the fact that it can reverse engineered should be relevant.

<comment><USER4> Reverse-engineering and writing a spec is one of the ways you can legally get around trade secrets and copyright infringement claims, so if the patent does not stand it is very relevant indeed.

Clean room development is usually (but not always) not enough to get around a patent though.

<comment><USER5> I must be misunderstanding something.

I know that clean room implementation has been used to avoid trade secret and copyright claims, but that seems to have little relevance in this case. If anything, it seems to somewhat show the need to have a patent protect developments like this.

<comment><USER4> I think it argues the exact opposite, if your device can simply be reverse engineered by observing the inputs and outputs then it shouldn't be patentable.

That means you can treat it as a black box without any knowledge of what is going on inside and produce an identical black box with a possibly completely different implementation on the inside.

These guys are essentially trying to patent something that can be expressed as a mathematical formula, and in my opinion that should not be possible.

Reduce it to an absurdity, imagine the patent on 'Pi' or a patent on calculus. Does it seem 'right' to you that such a thing should be patentable ?

If any group of mathematicians skilled in the art could come up with it that alone should have been grounds for dismissal, just being the first should not give you an automatic entitlement.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> This very much makes me think about the line: "One thing I do feel pretty certain of is that if you're against software patents, you're against patents in general. " from <http://www.paulgraham.com/softwarepatents.html> . While it sounds like this dispute is more about the mathematical algorithm, that is very little different from software, and while the article never explicitly stated it I very much suspect they put their algorithm into machine code.

Things like this make me almost think I should be going into law. This will truly matter to a large number of companies, and probably more so to start ups than to larger more established companies that already have market share.

<comment><USER6> PG is wrong on the subject of patents though: the problem with software patents is that if you are building a car the price of having a lawyer work out if you are violating a couple patents is a lot less than 1%, but it would properly make it many thousand times more expensive for a startup to develop a piece of software (assuming that we don't count the founders time).

And unlike physical patents it costs nothing to produce the software once the innovation has been made, so there is no need for a small guy to have something to sell to a big company to ensure the innovator is getting something for his efforts.

<comment><USER5> _PG is wrong on the subject of patents though: the problem with software patents is that if you are building a car the price of having a lawyer work out if you are violating a couple patents is a lot less than 1%, but it would properly make it many thousand times more expensive for a startup to develop a piece of software (assuming that we don't count the founders time)._

PG has said in other essays that it often makes sense for a startup to not worry about whether what they are trying to do until they are sued. If they are still tiny it is unlikely they will be sued even if they are infinging, and if they are large then they will have the resources to either defend against the suit or make a reasonable settlement.

But that is a practical matter. None of that changes the fact that it borders on logically inconsistent to argue for patents of machines while against the patenting of algorithms (and a program is nothing but an algorithm that has been properly formatted).

</comment></comment></comment><comment><USER7> This whole debate kind of seems like a livelock with no obvious solution.

If you make patents too powerful, you get people 'patent trolling' and producing a lot of vague patents with no intentions of implementing/putting to use/selling the IP involved; instead hoping to be able to sue someone for violating it.

If you make patents too weak, people invest heavily in reverse engineering instead of innovation/invention and take other people's ideas and make money off of them.

I find this to be a very frustrating and disheartening position to be in.

I almost think that there is something wrong with the idea of patents (not the idea of intellectual property) because it seems that they fail at both ends of the spectrum with regards to protecting people who actually produce useful things for our society and continue to push us forward.

<comment><USER8> Isn't reverse engineering also protected against by patents?

<comment><AUTHOR> Yes, it is.

The patent system is predicated on the idea of disclosure (indeed, the very word "patent" derives from a Latin word meaning "open"). The idea is that inventors will add their innovative knowledge to the public domain, for which they will receive a temporary monopoly on its commercial exploitation.

Most proprietary software is protected by trade secret laws, which are vulnerable to reverse engineering. Patented software is not, since it has already been disclosed in the public record and is nonetheless protected during the term of the patent by virtue of its monopoly status.</comment></comment></comment>


Fast Differentiable Sorting and Ranking - <AUTHOR> https://arxiv.org/abs/2002.08871 <comment><USER2> Something that I didn't know, and may help others understand this paper better, is that there's a way to define the sorting a vector through the creative use of the Birkhoff–von Neumann theorem:

[https://en.wikipedia.org/wiki/Doubly_stochastic_matrix](https://en.wikipedia.org/wiki/Doubly_stochastic_matrix)

which is better explained here:

[https://cs.stackexchange.com/questions/4805/sorting-as-a- lin...](https://cs.stackexchange.com/questions/4805/sorting-as-a-linear- program)

where the sorting operation is defined as a linear program. Evidently, this has been known for at least half a century. That said, if a solution to a linear program can be found in a way that's differentiable, this means that the operation of sorting can be found to be differentiable as well. This appears to be trick in the paper and they appear to have a relatively fast way to compute this solution as well, which I think is interesting.

<comment><USER3> While the roots have been known for a long time, my impression is that the key paper that started this line of thought was Marco Cuturi's NIPS 2013 paper "Sinkhorn Distances", which is, IMHO, a very nice read.

<comment><USER2> Certainly I may be missing something, but it seems like the advance in this series of papers is that they figured out a way to calculate a differentiable solution to the sorting problem quickly, whereas it was already known that the a differentiable solution already existed, no?

</comment></comment></comment><comment><USER4> >"While our soft operators are several hours faster than OT, they are slower than All-pairs, despite its O(n^2)complexity. This is due the fact that, with n= 100, All-pairs is very efficient on GPUs, while our PAV implementation runs on CPU"

Paper is interesting but not yet sure of practical uses.

The trick I use in practice when I need a differentiable sort, is usually a pre-sort step which involves thresholding (i.e. selecting with sparsity only values greater than a certain score (usually either a constant, or a fraction of the best score, or the Kth score ) ). Then pay the quadratic price with n=10 or 20.

I don't see when the relevance of rank between garbage results would really matter. When n get bigger and you don't want to ignore bad results, usually quantile approximations suffice.

In the applications they cite :

The smart use (cross-validation) of threshold by the Huber loss in section 6.4 works better 2 out of 3 times in their own graphs).

The other use cases when order matters (for example like in section 6.3 is where the rankings are given as input). If n is low you pay the quadratic cost, if n is high you usually need to process samples a subset at a time for memory reasons and use some comparison losses (triplet loss...). So this is relevant only in the sweet spot in between if you need exact calculations.

</comment><comment><AUTHOR> I find this paper super cool, and highly unintuitive that an operation as discrete as sorting can be done entirely with smooth functions, and efficiently to boot.

However I must admit that I do not fully grasp the implications of this paper. Why do we really need differentiable sorting for deep learning in the first place? What new possibilities open up as a result? My best uneducated guess is that the gradients produced by differentiable sorting are more informative than regular piecewise sorting, and this allows the gradient descent to progress faster, therefore training faster. (Think about how you can know an entire analytic function can be completely known from any small neighborhood. Are these sorting functions analytic too?) My intuition tells me that the derivatives produced with this technique allow the optimizer to see true gradients across classes.

Are higher order derivatives also meaningful here?

<comment><USER5> A few months ago, I played with a Julia differentiable programming framework, and I thought what if I make a differentiable virtual machine and use unsorted and sorted numbers as training data. will it learn a sorting algorithm, something similar to deep Turing machine. My conclusion was I can't ....

<comment><USER6> The million dollar question is if it's possible to construct a theory of computation where the input language itself is automatically differentiable, and where the execution semantics are also so. Perhaps a continuous spatial automata that has been proven to be Turing complete.

</comment></comment></comment><comment><USER7> Huh. I've only read the paper superficially, but it definitely looks cool. I wouldn't have thought to implement sorting by geometric projection onto an unfathomably huge polygon, then optimizing the projection by transforming it into isotonic optimization ([1], apparently?). I'm not sure my geometry-fu is strong enough to properly understand the details of the approach.

I do have one question though: what is the resulting algorithm actually "doing" when analyzed as a conventional sorting algorithm and not a geometric operation?

[1] [https://en.wikipedia.org/wiki/Isotonic_regression](https://en.wikipedia.org/wiki/Isotonic_regression)

</comment><comment><USER8> Skimming papers like this make me think maybe we spend too much time computing stuff in discrete spaces vs continuous ones.

This textbook covers CS theory using real numbers instead of integers.

[https://www.amazon.com/Complexity-Real-Computation-Lenore- Bl...](https://www.amazon.com/Complexity-Real-Computation-Lenore- Blum/dp/0387982817/ref=sr_1_2?keywords=real+computation&qid=1582431445&sr=8-2)

<comment><USER9> > Skimming papers like this make me think maybe we spend too much time > computing stuff in discrete spaces vs continuous ones.

I would go one step further and argue that we shouldn't teach kids discrete math first, but rather continuous math instead.

Sure, you have discrete digits and toys, but Piaget (and his student Papert) observe that kids begin pouring water between different containers in the bath before they can do integer counting and from that develop understanding that objects of different shape can have the same volume and concepts of partial filling, ratios etc.

The human scale world is continuous more than it is discrete.

<comment><USER10> Current K-12 curriculum is, from a perspective, all about preparing kids for 3 years of calculus. From this pedagogical perspective, discrete narratives are there to be a stepping stone into continuous narratives. Some people like Gilbert Strang believe that there's way too much emphasis on calculus and not enough on algebra.

</comment></comment></comment><comment><USER11> Based on an initial read, this looks like a significant breakthrough to me.

I wonder if the techniques developed by the authors could make it feasible to take _other_ piecewise linear/constant algorithms (which until now have been considered "non-differentiable" for practical purposes) and turn them into differentiable algorithms.

Think beyond sorting and ranking.

<comment><USER12> it's not completely unprecedented because there were other ways of getting equivalent results before (the Sinkhorn based optimal transport approach cited, for one), which have been used for all kinds of interesting tasks. the contribution is that it does so more efficiently.

<comment><USER11> Agree. That's what I mean when I wrote "for practical purposes" above... although in hindsight I could have articulated it better. Thanks!

</comment></comment></comment><comment><USER13> I have always thought of the LambdaRank objective ([https://www.microsoft.com/en-us/research/publication/from- ra...](https://www.microsoft.com/en-us/research/publication/from-ranknet-to- lambdarank-to-lambdamart-an-overview/)) as mapping the scores to a probability distribution over rankings, or as they call it "projections onto the permutahedron".

</comment><comment><USER14> This is immensely useful for my vying attempt to produce a compact lookup- tableless perfect hash generator for big datasets using ML.

Naively one might think, why not just do a standard loss - a point to point metric like mean squared error. But this is deeply flawed. Because it requires assigning each sample to a specific natural number, effectively reducing the solution space by an order of magnitude, n!. In practice, believe me, I have tried - the network never converges because the mapping is entirely arbitrary and has nothing to do with the samples.

To remedy this, we need an innovation in loss functions / mathematics. The loss function for the output of the net needs to be a set function [1]. This set function should measure the distance between the _Set_ of outputs of the net and the Set {1,2,...,n-1,n}. This is different from KL and all the other standard loss metrics, because we do not care about the point to point mappings, and have no ability to histogram or compute the probability distribution since those are non differentiable operations.

On sorting: tensorflow has a differentiable sort but it is a hack and simply propagates the loss backwards to the position the original data was in before it ended up in its sorted position. This loss of dist(sort(Y_pred),[1,n]) provides better results but still fails for large data sets due to the fakeness of the sort derivative.

I have a hunch that there is a mathematical way to uniquely measure some arithmetic quality to optimize for, that is maximum when the output set is the discrete uniform distribution.

The mean, standard deviation and other statistical measures are terrible identifiers and actually, via statistical theory, we would need n moments for a dataset of size n, to uniquely identify the distribution..so scratch those off the list [2].

So there are two ways to achieve this milestone in ML:

1) a truly differentiable distance metric between two sets d(S,T)

2) a differentiable measure of ideal dispersion / density that forces the output set S to converge to the discrete uniform distribution (this is more problem specific to perfect hashes.)

Perhaps this sort is the key to doing #1 generically so we can have a new type of NN based on the output Set instead of the specific points. It is late here but I am excited to hear feedback.

[1] [https://en.wikipedia.org/wiki/Set_function](https://en.wikipedia.org/wiki/Set_function)

[2] [https://en.wikipedia.org/wiki/Hausdorff_moment_problem](https://en.wikipedia.org/wiki/Hausdorff_moment_problem)

<comment><USER15> is the loss you're talking about like fused gromov-wasserstein distance?

we hit permutation invariance issues like what you're talking about in some atomistic simulations because the atoms need to be permutable if you want to use the same model for chemistry as protein folding/docking, and the FGW algo from e.g. [https://arxiv.org/pdf/1811.02834.pdf](https://arxiv.org/pdf/1811.02834.pdf) [https://tvayer.github.io/materials/Titouan_Marseille_2019.pd...](https://tvayer.github.io/materials/Titouan_Marseille_2019.pdf)

relaxes the invariance issue by adding a feature distance to the euclidean distance.

higher order distance matrices are a neat trick, but blow up VRAM past 10-50k atoms, but if you did it in mixed precision with newer gpus it could scale damn far. problem is, the distance between distance matrices assumes the target and source items are matched, so you get into iterative closest point alignment, and pretty soon you're just reinventing RMSD

it would be cool for molec stuffs to have fast permutation-invariant set based loss functions using transport theory, but this might be better handled with a model-free approach (just let the AI figure out the loss function itself)

</comment></comment><comment><USER16> Reminds me of this older result by Brockett about using dynamical systems to do these types of problems that I always really found interesting

[https://ieeexplore.ieee.org/document/194420](https://ieeexplore.ieee.org/document/194420)

</comment><comment><USER17> I find this super interesting but unfortunately don't have enough background in Deep Learning to recognise what this would be used for. To train a model that knows how to sort stuff (probably not)? Would someone have mercy and ELI5?

<comment><USER18> Deep learning models require that all of their component are differentiable in order to fit their parameters.

This means that most building blocks for neural networks are basic linear algebra and not much else (I am simplifying, nowadays we have access to a surprisingly large array of operations).

This paper gives you two new building block, a sorting function and a ranking function. The ranking function might have direct applications for recommender systems.

</comment></comment><comment><USER19> I feel like this is over my head, but if the problem is that sorting a vector produces non-differentiable kinks in the output then why not just run a simple polynomial regression over it and differentiate _that_?

</comment><comment><USER20> Just skimmed the abstract — on a practical level — can this be used to better train a global ranking function given subsets of example ranked data?</comment>


Shiny Old VxWorks Vulnerabilities - <AUTHOR> http://blog.metasploit.com/2010/08/vxworks-vulnerabilities.html

<comment><USER2> Very interesting-its hard to believe that an embedded device manufacturer would release a device with debugging enabled and baked in-when I worked in industrial embedded electronics there was no way to dump the memory across the network (well you could read/write bits in memory using a backdoor that was implemented for setting the serial number but you had to poke the bytes in the right order and it only triggered a function builtin to the firmware to write to NVRAM..)

<comment><USER3> That's right, nobody would ever do anything like echoing everything you type to a command shell or anything:

<http://www.zdnet.com/blog/burnette/worst-bug-ever/680>

:-)

<comment><USER2> Oh I had forgotten about that. Haha</comment></comment></comment>


20 Excellent Free (Web) Rich-Text Editors - <AUTHOR> http://www.webdesignerdepot.com/2008/12/20-excellent-free-rich-text-editors/ <comment><USER2> I think '20 Excellent' is a stretch. Even the best Web-Based editors are bad. This is why there are so many of them. Nobody has solved this problem well.

From experience, here is what I can recommend and why:

      * TinyMCE - If you need an editor that has many features, go with this. The latest version have improved code output, but it is still questionable.  Of the feature-packed editors it is the most lightweight and produces the best code.

      * WidgEditor - It is ugly by default and has very few features.  It is probably also hard to extend.  That said it produces very clean code.

      * YUI Rich Text Editor - It is comparatively young and still pretty good.  If you use YUI it is probably good enough.

</comment><comment><USER3> I'm still looking for a simple editor that can auto-indent code/text. (Not even context sensitive, but at least keep the indent of the previous line). I've only found buggy or overkill implementations.

<comment><USER4> I've been using UltraEdit for a long time. It's feature rich and easily configurable to your editing style. Windows only and costs $50. It has auto- indent, syntax highlighting, FTP editing, and all that good stuff.

For Java I also use eclipse. Free, has everything, including the kitchen sink, aint simple, significant learning curve. It's slow and a real memory hog, but it is really integrated into the java world.

<comment><USER3> Thanks for the recommendations, but I'm actually looking for an editor written in javascript to embed in a web site that allows some nice code editing (chiefly auto-indent).

Offline, I use textmate, smultron (both os x), vim.

</comment></comment></comment><comment><USER5> AFAIK the only editor that can strip nasty paste-from-word HTML into nice pure XHTML, and that actually enforces XHTML is XStandard. Does anyone know if any of the other editors can do this?</comment>


The Structured Web - <AUTHOR> http://groups.google.com/group/whits/t/dd87bcac1f187f70 Why the Semantic Web didn't work, won't work, and what we can do about it. <comment><USER2> The Semantic Web utopia suffered from pretty bad chicken-or-egg problem: why would anybody publish semantic data when nobody used it, and why would anybody consume it when none was available. Instead of the utopia, I'm seeing technologies of the Semantic Web stack pop up in different places... CMSs publish RDFa for SEO purposes (see Google's Rich Snippets), and for example MeeGo's Tracker data handling layer is actually an RDF triplestore, with SparQL provided as the main API for app developers.

Apart from these, I see the big potential for these technologies in integration: if you publish your content with RDFa annotations, your site has an API 'for free'.

<comment><USER3> It might not seem like it, but publishers are coming around (at least in some domains). RDFa is getting traction as a source for metadata in communities like education and open content (disclaimer: it's part of my job to convince people in this area why they should also publish RDFa metadata).

I'm convinced that this will be a gradual thing that takes hold in certain areas where it's immediately useful, and from there extends to other areas, sort of like the beginnings of the internet.

<comment><USER2> Yep, I'm also seeing positive signals. Both the SEO and the integration ("your website is your API") angles seem to work pretty well with publishers.

In the IKS Project we're trying to implement some semantic features to many popular Open Source CMSs. When that is built-in, there will be lots more RDFa out there... <http://www.iks-project.eu/>

</comment></comment></comment><comment><USER4> I got the impression that something was going to be proposed, but it seemed vague . . . is there something being proposed?

On the 303 stuff: I don't understand the problem. RDF can talk about various things, not just web pages: RDF uses general URIs, which could be URLs, URNs, or whatever else is invented. If you don't want to make statements about a web page, you don't use an http URL. What is the need for using 303 responses?

And I don't understand the JSON comparison. Sure, RDF in XML is dismal, but RDF in Turtle is OK. The core, real, RDF is just URI triples -- subject, predicate, object -- it is already very simple, elegant, and powerful. How does JSON help?

I do like the idea of RDF/data-web/GGG uses and applications, but I can't figure out what this article is really trying to say.

</comment><comment><USER5> Nice article. I would argue that JSON is suited for a structured web though. Imagine even something like RSS turned into a JSON structure — if everyone would simply publish open JSON feeds we could have a lot of interesting client-side applications...

<comment><AUTHOR> Sure, JSON seems to have lots of uses.

I know a few people who've been working on a JSON Schema for the more formal datasets. I worked on an Internet Draft for this for a while, before the effort crumbled. Like most of the Web though, JSON really tends to shine when it is semi-structured — with any additional structure applied to it, post-hoc, by the consumer. CouchDB is a good example of a system that embraces this property.

</comment></comment><comment><USER6> What's the "old Atom wiki"?

<comment><AUTHOR> I wasn't actively involved, but as far as I know, the old Atom wiki was the birthing place of Atom. Sam Ruby hosted it on his site, and got a lot of discussion around the idea of a new syndication format. I believe it was called Echo for a long while.

<http://intertwingly.net/wiki/pie/FrontPage></comment></comment>


Ask HN: How do you track your production deployments? - <AUTHOR> My teams have noticed a lot of benefits by tracking the number of deployments we're making to staging and production environments. Along with the actual number, knowing what's running where and which changes were introduced in a quick and easy to understand fashion has made any troubleshooting faster, product roll outs easier, etc.<p>Is anyone else doing this? How are you tracking such deployments? <comment><USER2> We use Teletraan [1], if you look just at the first pic in the repo you can see a "Deploy History".

Internally it tracks: timestamp, type of deploy (regular, rollback), state (succeeded, aborted, running), success (% on the fleet), build (git commit), user who did the deploy.

There's also a button to list all commits from the past deploy which is often useful to debug issues when a deploy fails (in our case, most of the time who deploys is not who authored the commits).

[1] [https://github.com/pinterest/teletraan](https://github.com/pinterest/teletraan)

</comment><comment><USER3> We ran into something similar last month, what we ended up doing is adding the deployed sha1s to dynamodb table, after deployment of a new version we added an item to the table, after release(complete route53 switch to the new cloudformation stack) update the item and add a timestamp with the release.

each item had the following fields: sha1(partition key), environment, deployment timestamp, release timestamp

</comment><comment><USER4> Depending on how you deploy your projects the approach might differ a lot. One thing we are doing right now is that we write notes to the commit that is being deployed (ofc that is automated). Good thing is that you do not need any extra infrastructure/db/storage, the bad thing is that it can be quite fiddly and sometimes painful (in case you deploy from non master).

</comment><comment><USER5> We use a deployment tool (octopus) that keeps track of when each version is released.

We also wrote a simple hubot script that shows the "diff" on GitHub comparing the changes between the currently deployed version and master, handy to review what's going to be rolled out at a glance.

</comment><comment><USER6> We use pepperreport.io to track our releases or infrastructure deployments. It also gave us metrics about performances. Basically it call their API with our release name.

</comment><comment><USER7> How do you deploy your app in production? We have CI/CD configured in Jenkins, There is no manual deployment.</comment>


How I saved over $4000 on software? - <AUTHOR> http://www.nilkanth.com/archives/2006/10/24/how-i-saved-over-4000-on-software/

<comment><USER2> What he has listed SQL Server aren't equivalent products, and I'm pretty sure not open source, much less the "free as in freedom" standard of GNU software.

VMware server is free as in cost.

Here's what I'm looking for in free software:

Versions of ProTools, GigaStudio, and Finale.

Video editing software

<comment><USER3> What?!?! Ok, take that gum out of ya mouth before you talk.

<comment><USER2> The article isn't really good enough to be worth a formal reply. I was just brainstorming related ideas.

<comment><AUTHOR> Open Source Alternatives: <http://www.osalt.com/> for more gum :)</comment></comment></comment></comment>


RobotJS – Node.js Desktop Automation - <AUTHOR> https://github.com/octalmage/robotjs <comment><USER2> Cool project! Seems like its capabilities are somewhat similar to Hammerspoon, an OS X project where you can script almost anything in the OS with Lua. I believe it was forked from Mjolnir.

I use it for window management (which is it awesome at, especially considering I have a very complex arrangement with a 4K monitor + laptop screen), automatic mute when not home, remapping shortcuts, and more.

The config syntax is pretty simple and works great. There are some really cool ones all over the internet. Here's mine: [https://github.com/STRML/init/blob/master/hammerspoon/init.l...](https://github.com/STRML/init/blob/master/hammerspoon/init.lua)

Hammerspoon Docs: [http://www.hammerspoon.org/docs/](http://www.hammerspoon.org/docs/)

<comment><USER3> Came to post the same thing. Here's mine: [https://github.com/heptal/dotfiles/blob/master/roles/hammers...](https://github.com/heptal/dotfiles/blob/master/roles/hammerspoon/files/init.lua)

<comment><USER2> That's a nice one, especially the paste block workaround. That is my #1 least favorite security fad/flaw.

</comment></comment></comment><comment><USER4> Despite its many syntax quirks, AutoHotkey is an amazingly powerful tool for automating Windows keyboard and mouse input - I use it daily at work.

Having an equivalent tool on the Mac would be awesome, as I don't think anything in AutoHotkey's class exists right now...

<comment><USER5> Out of curiosity, have you looked at Sikuli [1]?

[1]: [http://www.sikuli.org/](http://www.sikuli.org/)

<comment><USER4> I hadn't heard of it before, and it does look potentially very powerful.

My only initial concern from reading the quick start ([http://www.sikulix.com/quickstart.html](http://www.sikulix.com/quickstart.html)) is the apparent requirements to use the "SikuliX IDE" for scripting...

<comment><USER6> The magic of Sikuli is its use of the OpenCV library under the hood (and Tesseract for OCR). You could skip the Sikuli part and just use OpenCV and Tesseract directly. (Not easy, but theoretically possible.)

<comment><USER7> I once used sikuli to extract a table from a pdf. Pretty funny way of hacking a fast solution for a problem. It's a pretty powerful tool but not very stable. IDE is also not so exciting but gets the job done. Pretty excited to see how far this project will go.

</comment></comment></comment></comment></comment><comment><USER8> AutoIt MVP member here (James on the forums).

I'm really glad to see a replacement for AutoIt and AHK and potentially, if not already, cross-platform too.

I can't speak for AHK but AutoIt has made huge progress over the last couple of years. Jon has been working on new features, especially improved COM support.

Maybe RobotJS will have a community too? It'd be great to see UDF's and a thriving ecosystem.

<comment><AUTHOR> Awesome! AutoIt is great. AutoHotkey wouldn't exist if it wasn't for AutoIt.

AutoHotkey has also improved a bunch recently. Lexikos picked up development and he's done a killer job. But unfortunately it (and AutoIt) will never be cross platform. That's why I made RobotJS.

I honestly never thought about a community but that's an amazing idea. A classic forum would be great, I've spent so much time on the AutoHotkey/AutoIt forums. I'd love for this to happen.

<comment><USER9> Why won't it ever be cross-platform? Would the effort just be too gargantuan?

<comment><USER10> It's too directly tied to the Windows API. The vast majority of non-language code would have to be rewritten to run correctly, unless they emulate the Windows API instead.

</comment></comment></comment></comment><comment><USER11> I've been looking for something like this forever! I loved AutoIt v3 on Windows, and osascript always felt super crippled in comparison (as well as impossible to look up documentation for). I've long since forgotten what I wanted to use this for, but I'll be sure to remember this for later!

<comment><USER12> > AutoIt v3

AutoHotkey is available and open source but the custom scripting language is off-putting, I would much rather have something like standard JavaScript for it. If this project moves forward in that direction it could be great.

[http://ahkscript.org/](http://ahkscript.org/)

<comment><AUTHOR> I grew up on AutoHotkey but yeah, the syntax is very strange. It's actually based on AutoIt v2. The closest language (syntax wise) is Assembly, and that's silly.

AutoHotkey is avalible, but only on Windows. I don't think I would have made this if AutoHotkey was cross platform.

</comment></comment></comment><comment><USER13>
        //Type "Hello World".
        robot.typeString("Hello World");

        //Press enter.
        robot.keyTap("enter");

Whoever designed this interface didn't think much about consistency.

<comment><AUTHOR> It's very temporary! There's discussion about it here:

[https://github.com/octalmage/robotjs/issues/4](https://github.com/octalmage/robotjs/issues/4)

<comment><USER13> Ah, thanks for the pointer!

        keyboard.type('foo');
        keyboard.press('fn');

... makes much more sense.

<comment><USER6> I'd go for as short (but still readable) as possible.

      > robot.keys("Type a string")

      > robot.keys(ENTER)   // ENTER is an integer key value

(I've been thinking about this while trying to make an idiomatic node client for Selenium WebDriver... [https://github.com/hugs/34#api](https://github.com/hugs/34#api))

<comment><USER14> Importing enum values into global/function/module local namespace has always been a PITA for javascript environments. Any suggestion on how to do this cleanly?

<comment><USER6> I'm sure it's possible, but one way to avoid it -- turn the constant into a method:

      > robot.keys.ENTER()

(Not great for key combos, though...)

<comment><USER15> I'd then go with

      robot.keys.enter()

(since enter is a function, not a constant) and make it chainable by returning `robot.keys`.

      robot.keys.ctrl().enter()

<comment><USER16> You'd probably want something slightly different than keys - at least some way to different between key presses and hold the keys down at the same time.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> See also: [http://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html](http://docs.oracle.com/javase/7/docs/api/java/awt/Robot.html)

Java had this, like, forever. Long live "Write Once Run Anywhere"!

<comment><USER17> Nice stuff. Java provides so much out of the box that it becomes confusing.

</comment></comment><comment><USER18> Love how simple and solid this project is. You can use it to do a ton of new things in Node.

<comment><AUTHOR> Thanks! Node.js can do anything!

</comment></comment><comment><USER19> RobotJS + chrome drivers (and therefore CSS selectors for mouse/keyboard actions) would be the holy grail for integrations testing. webdriver.io kind of does that now, but it's a bit finicky... Any idea how I'd set that up?

<comment><USER20> I think it would be awesome if we can somehow hook this into some API that grabs

\- the process list \- list of the window positions \- text under a cursor \- provides an interface to create specialized keyboard/mouse actions for specific apps (because why stop at chrome?)

i'm sure this is project is going to be quite popular :)

</comment></comment><comment><USER21> Looks damn neat! I've not used AutoIT (and the likes) previously so I can't think of compelling use-cases yet. Can someone suggest some possible ideas on what to automate in my desktop with this Node library? Thanks!

</comment><comment><USER22> is there anything like this for browsers? I know theres things like casperjs but that seems more "browser test" specific, not "browser automation"

<comment><USER12> Selenium can be used for browser automation.

<comment><USER23> I've used Selenium a bunch the last couple months to automate daily/hourly jobs to pull data from 3rd party UIs that don't offer an API. I couldn't imagine not having a tool like Selenium at my disposal!

<comment><USER20> Pro tip: create a chrome extension with permissions on all [http://](http://) and [https://](https://) sites, or run it through Node-Webkit/nw.io, then you can use the generic DOMParser and querySelectorAll with a pretty fluent interface on any site you can imagine.

example here: [https://github.com/SchizoDuckie/DuckieTV/blob/angular/js/uti...](https://github.com/SchizoDuckie/DuckieTV/blob/angular/js/utility.js#L45)

<comment><USER24> > or run it through Node-Webkit/nw.io

That's quite interesting! I thought node-webkit isn't suitable (yet) for such purpose. Could you go into more detail on how to do parsing/automation external sites with it?

<comment><USER20> It's very suitable! (I'm using it in DuckieTV in production, works like a charm!)

Basically, you can use xmlhttp to fetch any webpage becaused of relaxed restrictions. then use DOMParser (a built-in browser component, that you can even shim) to create a virtual DOM of that xmlhttp result, and execute regular querySelector and querySelectorAlll queries on that :)

</comment></comment></comment></comment></comment></comment><comment><USER25> robot.js, what will happen when we want to publish a js library for actual robots in something like Tessel? (;

</comment><comment><USER26> This is great!

I wrote up some ideas about "aQuery -- Like jQuery for Accessibility", which RobotJS would be very useful for implementing. It refers to the Mac accessibility API but it could work with any platform, and even abstract the differences between platforms just like jQuery does.

[http://www.donhopkins.com/mediawiki/index.php/AQuery](http://www.donhopkins.com/mediawiki/index.php/AQuery)

Also, Morgan Dixon did some wonderful stuff with Prefab: The Pixel-Based Reverse Engineering Toolkit, which would be great to integrate into RobotJS.

[http://homes.cs.washington.edu/~mdixon/research/prefab/](http://homes.cs.washington.edu/~mdixon/research/prefab/)

aQuery -- like jQuery, but for selecting, querying and manipulating Mac app user interfaces via the Accessibility framework and protocols.

So you can write jQuery-like selectors that search for and select Accessibility objects, and then it provides a convenient high level API for doing all kinds of stuff with them. So you can write higher level plugin widgets with aQuery that use HTML with jQuery, or even other types of user interfaces like voice recognition/synthesis, video tracking, augmented reality, web services, etc!

For example, I want to click on a window and it will dynamically configure jQuery Pie Menus with the commands in the menu of a live Mac app. Or make a hypercard-like user interface builder that lets people drag buttons or commands out of Mac apps into their own stacks, and make special purpose simplified guis for controlling and integrating Mac apps.

[...]

aQuery could apply the DOM tree searching and traversal and data association stuff to the Accesibility Tree, which is similar in a lot of ways to a DOM tree, and describes all the widgets and user accessible affordances and commands in an app, as well as non-tree-like relationships between them (this label describes that widget, this tab represents that panel, this icon represents that view, this editor manipulates that object, etc).

[...]

aQuery should provide ways of registering patterns and calling handlers when user interface items that match them are created and destroyed. jQuery doesn't directly provide a way to do that (handling page onload events and XHR request responses is usually sufficient), but of course there is a jQuery plug-in that does it: [https://code.google.com/p/mutation- summary/](https://code.google.com/p/mutation-summary/) .

So when some user interface objects you're interested in controlling come into existence, you can wrap them with your own "widget" to glue them into whatever other user interface you want to provide. (pie menus, hyperlook, ar, speech recognition, etc).

[...]

I think aQuery should be independent of jQuery, but I like to use jQuery as a metaphor for how it works, even though that might suggest that it's tied to jQuery, or even HTML, which it shouldn't be.

</comment><comment><USER27> Thank you OP!

> 95.1% C

Any intention on making this available for other languages?

<comment><USER28> I think you are misunderstanding; robotjs is written in C but it is a module for Node.js which means you implement it using Javascript.

Node.js modules can be written in C or Javascript but implementing new features like this requires you to use C so there is no "making this available for other languages".

<comment><USER27> I stand corrected. I looked closer.

I never knew node modules could be written in C.

<comment><USER29> I was searching around for a js wrapper, but found that even the JS API was implemented in C [1].

I would only implement the low level "hardware" primitives in C, then implement the high level API in JS like Chromium's Blink-in-JS initiative [2]. Once they start expanding the high level functionality, they will lose potential contributors by sticking with pure C.

[1] [https://github.com/octalmage/robotjs/blob/master/src/robotjs...](https://github.com/octalmage/robotjs/blob/master/src/robotjs.cc)

[2] [http://www.chromium.org/blink/blink-in- js](http://www.chromium.org/blink/blink-in-js)

<comment><AUTHOR> You'd be surprised by how many C/C++ programmers there are out there! I've already been surprised by the number of contributions. But yeah, using C wasn't a choice, it was the only option. Luckily we already have all planned features implemented in C.</comment></comment></comment></comment></comment>


New WebKit Features in Safari 11.1 - <AUTHOR> https://webkit.org/blog/8216/new-webkit-features-in-safari-11-1/ <comment><USER2> All these new features, but HTML5 audio is still utterly busted on iOS Safari[0]. So much so that my music player PWA is essentially unusable on iOS Safari.

Bug filed here[1], simple repro here[2].

I appreciate that service worker is here. I appreciate that they are making progress on PWA support. It's good to see. But there are some longstanding HTML5 issues in the browser that need to be fixed. Would really appreciate some Apple devs solving it; the fix is conceptually simple: fire HTML5 audio .ended event when audio finishes playing, even if the screen is off or app is in the background.

[0]: [http://debuggerdotbreak.judahgabriel.com/2016/12/13/its- almo...](http://debuggerdotbreak.judahgabriel.com/2016/12/13/its- almost-2017-and-html5-audio-is-still-broken-on-ios/)

[1]: [https://bugs.webkit.org/show_bug.cgi?id=173332](https://bugs.webkit.org/show_bug.cgi?id=173332)

[2]: [https://bitshuvafiles01.com/iOSAudioBugRepro/audioError.html](https://bitshuvafiles01.com/iOSAudioBugRepro/audioError.html)

<comment><USER3> I can't resolve the domain debuggerdotbreak.judahgabriel.com

<comment><USER2> Really? It's working fine here...

<comment><USER3> Now it's working. Did you change something? I tested against both @22.214.171.124 and @188.8.131.52 when I filed my comment and both (at the time) said the domain didn't exist.

Perhaps you have flaky authoritative nameservers?

</comment></comment></comment></comment><comment><USER4> >WebKit in Safari now supports loading H.264 encoded MP4 video with an HTML tag.

I was confused by this sentence, but it actually says "HTML <IMG> tag" (the "<IMG>" part of the text is unescaped, and does not render). Meaning you can use <img src="video.mp4">

"But we already have <video> and animated webP and..." is addresed in depth in the linked article: [https://calendar.perfplanet.com/2017/animated-gif- without-th...](https://calendar.perfplanet.com/2017/animated-gif-without-the- gif/)

<comment><USER5> I was thinking about this the other day, in the best case scenario, we are only 5 years away from a patent free H.264 codec. And we finally have something to truly replace GIF.

I wonder what other things we could do to H.264 to further improve the standard while aiming to be patents free within a foreseeable time frame. And act As the baseline of the web to move forward.

</comment></comment><comment><USER6> The security model for service workers looks interesting. Will other browsers do similar things?

"A service worker registered by an example.com iframe inside a webkit.org page will be able to communicate to all service workers and clients that share the same (webkit.org, example.com) partition, but not to any other example.com or webkit.org client. A network load made by a (webkit.org, example.com) service worker will use the same cookies as if the network load was made in an example.com frame embedded in a webkit.org page. Similarly, private browsing mode is enforced in a service worker by partitioning service workers according the browsing session."

[https://webkit.org/blog/8090/workers-at-your- service/](https://webkit.org/blog/8090/workers-at-your-service/)

</comment><comment><USER7> Really nice to see service worker in Safari. Now all major browsers support at least the bare minimum of SW - we'll see a big improvement in the web landscape though that :)

</comment><comment><USER8> Also note Apple has added PWA support in iOS 11.3

[https://medium.com/@firt/progressive-web-apps-on-ios-are- her...](https://medium.com/@firt/progressive-web-apps-on-ios-are- here-d00430dee3a7)

<comment><USER2> Unfortunately, their PWA "add to homescreen" feature is so bad, it's unusable. I've had to tell my users not to add to the homescreen.

For example: sending a PWA to background causes it to die. For my music player app, this is a showstopper; the audio stops playing.

Bringing the PWA to the foreground causes a full refresh. Again, showstopper for my PWA.

<comment><USER9> Also a PWA which is "added to homescreen" actually LOSES access to at least some APIs (I know for a fact that getUserMedia is disabled when a page is added to a home screen).

This led to us needing to tell our users to NEVER add the page to the homescreen (pwa or otherwise) or the app will stop working, which confused many and made other suspicious (IMO rightly so, that's such a fucking weird thing to have to specify!)

<comment><USER10> This is really frustrating to me. Why are PWAs second class citizens when it comes to getUserMedia? Why is Apple perfectly happy to cripple websites when a user has specifically pinned it to the home screen, but allows full featured access in the browser?

Are they really worried mobile websites will overthrow the App Store in popularity?

Sometimes I really feel Safari is the new IE.

<comment><USER9> So in talking with some Safari engineers a while back when iOS 11 first came out, they say it's a technical limitation (Safari is a somewhat different codebase than the "web views" are on iOS, the webViews being more integrated into the OS), and technically an app added to the homescreen is run in a webView.

That being said, it does really suck, and it's something they NEED to get solved before the possibility of taking Safari and iOS seriously in the web- app space happens.

</comment></comment></comment></comment></comment><comment><USER11> I think `font-display: optional` is going to nice if sites actually use it - try to use the fancy font, but only if it's cached. Never hide the text or switch the font after rendering it.

Of course, there are going to be plenty of sites that still consider their fancy font to be more important than the actual text it's rendering...

</comment><comment><USER12> It would be nice to have web API permissions so that users could disable some of these, e.g. Beacon on a global or per-site basis. The OS infrastructure already exists for mobile app permissions.

<comment><USER13> If you turn off Beacon, sites will just fall back to XHR/Fetch/redirect and performance will suffer.

</comment></comment><comment><USER14> Will we ever have a way to tell the browser engine to shrink images to some maximum dimensions before uploading them to the server, without javascript?

Is there any work being done in that direction? Javascript implementations like Pica - [http://nodeca.github.io/pica/demo/](http://nodeca.github.io/pica/demo/) are slow even with wasm. It'd also be nice not to rely on javascript for such fundamental things.

<comment><USER9> Wouldn't that be pretty trivial with just a <canvas> element?

use the `drawImage` function to draw the image scaled to whatever size you want, then just call any of the APIs that you want to get either ImageData, a base64-encoded-URI, or a PNG Blob resized.

The exact method of resize is up to the useragent (IIRC i could be wrong on this), and it's done in "native" code, not in javascript.

<comment><USER15> png would be huge (since it is lossless) and jpg would incur double compression (source jpg and re-compressed from canvas) losing quality.

<comment><USER9> Is there any solution other than those 2 options?

Any resizing of a jpg to another jpg is going to incur double compression isn't it? Sure there are ways of mitigating it using various sampling and resizing algorithms, but it's not going to be perfect, and there is no "one- size-fits-all" best algorithm.

What would a "browser API" provide that you can't already get with canvas?The only thing I can think of is customizable resize algorithms, but I'd rather have the option to change that for a canvas, rather than a specific "resize this image API".

</comment></comment></comment></comment><comment><USER16> I was a long time safari user, but I stopped taking safari seriously when they started requiring you be an apple developer to create an extension - $99/year to even make one for yourself.

Apple is trying to create a closed ecosystem with the browser and I for one will not just let that go. Add all the features you want! You'll be treated like IE until you start playing nice with others.

</comment><comment><USER17> Happy to see sub resource integrity and directory/clipboard API.

</comment><comment><USER18> >The Styles sidebar in the Elements tab was reworked to use a different, but familiar model for editing style rules, properties and values. It also features improvements in navigating between different style views.

Does this mean they'll finally go back to the style tag entry they used to use - the same one Chrome uses today? That would be a great help!

<comment><USER19> Looks like they have, yes.</comment></comment>


Ask HN: How do I improve user engagement on a photo site? - <AUTHOR>

Hi,  I've developed a site
http://ookaboo.com/
which has accumulated about a million images and gets several thousand visitors a day who are looking for pictures.
I've recently added features to let users add images and I've quite literally recorded a 0.01% conversion rate.  I think part of the problem could be the U.I. but I think another part is that I've attracted the wrong audience.
Any ideas how I can get better use engagement. <comment><USER2> I agree with prpon. Your site gives a craigslist feel. Not even a wiki feel.

Look at one of your similar competitors: <http://www.flickr.com/> They have a calls to action as you scroll down with a final "Still not convinced? Take the Flickr Tour!".

If I refer a friend to your website, what are they going to do? They'll act confused as there's no steps or where to start. In fact, they see all these categories and get overwhelmed. I then noticed there's step-by-step instructions but it's surrounded by all those hyperlinks. You need to emphasise it more. Take a note of Flickr.

So you're appealing to designers or people with creativity? Your website doesn't look creative. Look up website inspirations. Copy a few websites that you like, then try creating your own.

SEO issue, why are you redirecting to /o/pictures as main directory? It should always be <http://ookaboo.com/> in URL if I go to it. You will encounter issues as well future linking issues if people bookmark it and you didn't sufficiently re-direct it due to a backend or some kind of change.

</comment><comment><USER3> Seriously my friend, that site needs some design love. I am no design guru here but that site desperately needs a designer.

Here are a few things I would suggest:

1\. Search box at the top to search images. 2\. slide show of random images front and center. 3\. A call to action button to upload images. 4\. scrollable or scrolling categories.

You pretty much have everything I said, but nothing stands out.

<comment><AUTHOR> So far as 2 I'm frustrated because I'd like to emphasize what's unique about Ookaboo. I could do the same slide show everybody else does, but I've got better metadata and don't know how to show it off in a way that people get instantly.

I'm not so sure what you mean by 4.

<comment><USER3> By scrollable categories, I mean that you have categories mentioned below in long list. I don't know if anyone would have patience to go through them. Certainly not me.

A scrollable categories list would show different categories in a nicer way with 4 at a time and a more button to view the complete list if someone is interested.

You might have better metadata than anyone else but I didn't get it from looking at the page.

Flickr does a pretty good job of displaying other information on the side of a photo. You can do the same with your metadata <http://www.flickr.com/photos/gcattiaux/2349773004/></comment></comment></comment>


New Bronze Age civilization discovered in Russia - <AUTHOR> http://news.yahoo.com/s/afp/20101011/wl_afp/russiahistoryarcheologycaucasus <comment><USER2> The title given this article (by yahoo, incidentally, not evo_9) is impressively incorrect. "Previously undocumented bronze age civilization newly discovered" would be more accurate. It's also interesting, but not nearly as incredible as a literal new society in russia that is living with bronze age technology.

<comment> m-photonic >It's also interesting, but not nearly as incredible as a literal new society in russia that is living with bronze age technology.

I don't think too many people read it that way.

<comment><USER3> I did, although I didn't believe it.

</comment></comment></comment><comment><USER4> It would be nice if all stories involving a location include a link to satellite or aerial photos of the location on Google Maps or similar. I want to zoom in on those ruins.

</comment><comment><USER5> Having trouble not making a Civ joke here.</comment>


Scaling the Largest Dockless Bikesharing Platform - <AUTHOR> https://pingcap.com/blog/Use-Case-TiDB-in-Mobike/ <comment><USER2> After living in Washington DC which was one of the first cities to successfully implement the bikeshare model, I honestly dont understand why cities still continue to push the dockless model. Capital BikeShare in DC worked for year, I didn't have a car and it was my primary means of transportation. There was a plethora of docks placed strategically throughout the city and I rarely had an issue finding a dock to park my bike. In the last year they are testing the dockless model and I now I see bikes thrown all over the street just as I have in other cities with dockless bikeshare. Why the push to continue for the dockless option?

<comment><USER3> Well why do you need a dock at all? In Singapore and China, I find shared bikes from different providers neatly parked virtually at any major bus stop, subway station mall or apartment block and it's very convenient for say doing a short shopping trip or going to the metro. Is the problem that people in DC don't park properly?

<comment><USER4> I see bikes without saddles (stolen?), with destroyed/sliced saddles (vandalism) and in otherwise okay shape lying .. everywhere in Singapore. Sometimes in the middle of the road (the divider, not the actual road). In random bushes.

Yes, the _majority_ probably is parked properly. But there are so many cases of "bike abuse" around that I see on a daily basis that I'm constantly shaking my head about this lack of respect and care. Is DC that much worse? I wouldn't know.

<comment><USER5> I would have expected Singapore of all places to be tidy, given all the anecdotes about anti-littering enforcement, chewing gum, etc.

<comment><USER4> It is quite clean, for sure! It's so much cleaner than any other place I've been to.

But people are people and some things are quite normal and expected here.. Like randomly putting these bikes ~wherever~ or littering cigarette buds.

</comment></comment></comment></comment></comment><comment><USER6> > Mobike is the world's first and largest dockless bike-sharing provider

World's first?

Please, DB has been operating one across Germany since 2000, 15 years before Mobike even existed.

<comment><USER7> According to Call A Bike's terms, some locations require you to return the bike to the place where you started from, charging you a 5 EUR fee if you choose not to.

This seems to make Mobike's claims true, the first truly dockless service for all customers regardless of location.

[https://www.callabike- interaktiv.de/pdf/connect/Price%20list...](https://www.callabike- interaktiv.de/pdf/connect/Price%20list%20Call%20a%20Bike.pdf)</comment></comment>


In the gig economy, everyone is a hustler - <AUTHOR> http://www.thedailybeast.com/blogs-and-stories/2009-01-12/the-gig-economy/full/

<comment><USER2> I greatly respect the writer of this article (Tina Brown), however the post left a bad taste in my mouth. I disagree that workers being independent is disempowering (she didn't say it explicitly, but she said people were struggling), or that it _has_ to be annoying for the businesses employing them.

My unsubstantiated hunch is that she's writing this from a mildly older- industry perspective, and that those businesses and workers might be struggling more with this. I have many friends (in admittedly newer industries) who are thriving as independents. Not just financially, but the freedom and opportunity it gives them to travel and challenge themselves is great. Sometimes they take well paying gigs, sometimes they work for peanuts on crazy projects.

I guess I just disagree with the "attitude" of the article. That independence isn't something to "settle" for, but something to strive for. She writes like it's a result of a bad economy, but I think many kinds of work would be headed in this direction anyway, even if the economy were sailing.

<comment><USER3> How old are your friends who are thriving as independents? The "freedom and opportunity" are a great deal less glamorous for those in their late 40s who are just trying to raise kids and provide for the family...

<comment><USER4> You mean there are people who don't like freedom and opportunity? I am doing well working independently in my 20's, but I hope when I'm in my late 40's I still appreciate freedom and opportunity. I would think that new opportunities would be beneficial for me, my kids, and my family as well.

<comment><USER5> You are implying that you appreciate the freedom and opportunity to succeed - of course, who wouldn't!

However, I don't know if you can separate that from the freedom and opportunity to fail (can you have good without evil?) How much are you factoring that into your calculations for your late 40's and beyond?

<comment><USER6> Let me try and make sense of this: freedom and opportunity to succeed is good, but entails possibility of failure, which is bad.

You're saying you don't want the freedom and opportunity to do either when in your late 40s and beyond? Or are you saying that you want to have the opportunity to succeed, but not to fail, when you're in your late 40s? Didn't you just say that's not possible? I'm confused...

<comment><USER5> I honestly don't know how I will think in 20 years - that obviously depends on what will happen between now and then.

What I'm trying to say is that as people get older and have a family to support, they might get more risk averse, and begin to prefer safer options (which likely involve less freedom and opportunity). The cost of failure then is much higher than the cost of failure now.

</comment></comment></comment></comment></comment></comment><comment><USER4> This article is terrible. They surveyed 500 people on the internet. Over a hundred people said they did some consulting work, so therefore America is a "Gigocracy". Seriously?

She makes it seem like a negative thing that people can't describe what they do with a simple sentence. As if everyone should say Hi, I'm Joe the Plumber or Bob the Butcher.

Then she describes the "penny-ante slog" of working three times as hard for less money without raises. From personal experience, I'm making twice as much money and work maybe half the amount of hours or less. When you start a new project or gig, you decide how much money it will cost, and if it's not worth it to you, then don't do the project. If you want a raise, then you raise your rates.

She makes it sound like everyone finds their gigs on Mechanical Turk.

</comment><comment><USER7> Once again, a serious discussion of this topic would mention Coase's 'Theory of the Firm':

<http://journal.dedasys.com/2009/01/14/the-gig-economy>

Actually, my article isn't very serious either, but it does talk about one of the underlying reasons for the balance between contractors and others external to the firm, and employees.

</comment><comment><USER8> Less pay? Please. If you get a good name when you start out gigs you want will come to you and you will earn much more after expenses than you did at a previous employer doing similar work.

Also this whole article reads like an overreaction. "Get Jim on this meeting" - Buffoon Boss "Jim's not in today" - on top of things clerk "Lets bring in Julie who knows nothing" etc...

</comment><comment><USER9> My experience with gigs is that if you do your job well you'll make more $ and have more freedom.

<comment><AUTHOR> In my experience, I did make slightly more, but I couldn't afford health insurance. If I had any kids, it would have been even worse.

That's why I believe that some form of nationalized health coverage will actually lead to far more entrepreneurship as many of these concerns evaporate -- especially for those with families to worry about.

<comment><USER10> You assume that nationalizing health insurance will lower the cost without having too large a negative effect on quality. Or, like most people who advocate nationalized things, you assume that people above you on the income scale will be subsidizing your consumption.

Not all of these things are necessarily true.

<comment><USER11> Nationalizing health insurance might improve quality; the quality of health care in the US is pretty appallingly bad, compared to, say, Argentina. I hear health care in nearly all the other OECD countries is also nationalized, lower in cost, and higher in quality than in the US, but I only have personal experience with health care in the US, Argentina, Canada, and the Federated States of Micronesia (where I can assure you that health care is terrible).

Admittedly the health care we've used so far here in Argentina hasn't been the public system, but I hear it's not that bad either.

</comment></comment></comment></comment><comment><USER12> I am not certain the writer understands the concept of a hustler.

</comment><comment><USER13> Wow. This article seems to be able to be boiled down to, "Because people are fed up with poor pay or being overburdened in traditional 9-5 jobs, they are trying to get more freedom and happiness. And this is just RUINING all our bad business practices and making all these POOR MANAGERS frustrated."</comment>


Don't use JavaScript for Retinafying - <AUTHOR> http://mir.aculo.us/2012/09/22/dont-use-javascript-for-retinafying/

<comment><USER2> This is a _horrible_ suggestion.

Stop being careless with your users' bandwidth. Assuming that every client should get the highest-resolution (and thus highest-bandwidth and highest- memory-cost) assets is just lazy.

Use Javascript. Something like <https://github.com/scottjehl/picturefill> works beautifully and results in only one request per asset, with a noscript fallback. It's more markup, which is kind of a pain in the ass, but it means that the right clients get the right assets and you don't end up destroying your poor EDGE and 3G customers because you decided they needed a 2400x1200 splash image. Let's not forget that a "retina" image imposes a 4x memory cost on the client - image data has to be decompressed to be displayed. So, your user on their mobile phone with 512mb of RAM is going to have a terrible experience when your website is using 4x more of their precious RAM on images that don't actually provide them with any visual benefit.

Double-pixel displays are still, by a massive margin, the exception. Unless you're specifically serving a Retina Macbook-targeted audience, you're going to incur a lot of overhead for no appreciable benefit for the majority of your audience.

<comment><USER3> Not to mention, using high resolution graphics when only displaying at a lower resolution increases battery usage and lowers performance of the webpage.

</comment></comment><comment><USER4> Don't retinafy at all. You should not assume your user has LTE speeds on his shiny iPad. As long as webdevs won't have a better navigator.connection, retinafying should be avoided.

On the web, loading times trump beauty.

<comment><USER5> Larger image dimensions don't mean larger file sizes, see [http://mir.aculo.us/2012/08/06/high-resolution-images-and- fi...](http://mir.aculo.us/2012/08/06/high-resolution-images-and-file-size/) for an explanation.

<comment><USER4> Yes, it does. Not linear larger files, but larger files at constant quality. His examples are conveniently chosen to sell his book. 20% bigger is 20% too much for a non essential asset.

</comment></comment></comment><comment><USER6> > for bitmapped images, go high-resolution and let the browser scale down

Wait, I should use more bandwidth than I need, and impose a client-side performance hit? What is wrong with a little CSS to serve the right assets to 1x, 1.5x and 2x pixel ratio devices?

</comment><comment><USER7> Why not use a rewrite for Apache or Nginx? More info: <http://undefinedbehavior.net/2012/03/27/retina-rewrite/>

</comment><comment><USER5> Of course, exceptions prove the rule. Sometimes CSS and HTML are not good enough and you'll have to resort to use JavaScript.

But you shouldn't make it the default go-to.</comment>


New Video Shows How Humanity Could Spread Throughout the Galaxy - <AUTHOR> https://gizmodo.com/new-video-shows-how-humanity-could-spread-throughout-th-1835873779 <comment><USER2> Yess. We should think of that. Frightened about the global warming.</comment>


Ask HN: Soft launch new startup in a week no matter what...good/bad? - <AUTHOR>

I have been working on a new project non-stop since New Years. My goal was to launch as soon as possible and then quickly iterate based on customer feedback.
That sounded great when I first started. Now I'm five weeks in, and every day I think of new features/refinements that I want to implement before launch.
Any advice on setting a hard deadline for launch? Thanks! <comment><USER2> One more point... You seem to be at the same point as me with my 'project' (I loathe calling everything a startup) and keep coming up with more ideas. Resist temptation! Have the core idea out there as a site that at least _some_ people can try out, so that you're getting outside feedback to validate your concept. Don't aim for perfection. Aim for function.

Now if only I could listen to my own advice.

<comment><AUTHOR> You're right, I will start testing it out with my friends and play it by ear from there. Thanks!

</comment></comment><comment><USER3> Once the core product is built, launch it.

There are endless ideas and features you can add. Sometimes its better for the users to watch the company grow than have the perfect product launched.

</comment><comment><USER2> There's degrees of launches. If you're going for a limited soft launch, just tell your friends, prevent indexing via robots.txt and limit expectations on the site. And don't post it here ;)

</comment><comment><USER4> hold for two more weeks... and launch the LAUNCH Conference. :-)

<comment><USER5> @schwabr21 I'd take him up on it if I were you! Too bad I'd already broken one of the rules with my semi-secret launch that's coming up...</comment></comment>


Concise Java - <AUTHOR> http://www.infoq.com/articles/Concise-Java

<comment><USER2> From the "Not from The Onion" files</comment>


Securing the Internet of Things - <AUTHOR> http://www.slideshare.net/pizak/securing-the-internet-of-things <comment><USER2> It looks like it might have been a fascinating talk.

Feedback on the slides: Whether you intend it or not, your audience rightly ends up being way more diverse than just the people who already know what all the acronyms mean. Therefore you should provide definitions or at least expansions of acronyms as they are introduced.</comment>


Zero to Brand in 48 Hours - A Webinar for Startup Founders and Brand Hackers - <AUTHOR> http://www.istrategylabs.com/zero-to-brand-in-48-hours-a-webinar-for-startup-founders-and-brand-hackers-of-all-kinds/ <comment><USER2> He tell that you should state your offering in max 3 bullets. And in his intro of his company crams like 19 items into one slide!? Again, he asks you avoid jargon, did anybody notice how much jargon was in their intro?? Dude, practice what you preach.</comment>


Understanding herpes simplex virus immunity to inform vaccine design (2016) - <AUTHOR> https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4973325/ <comment><USER2> I've never had a cold sore in my life. My first wife often got them.

I put down my 'immunity' to having chicken-pox when I was somewhere around 3-6 months old. Looks like my young system got such a workout from it that I don't allow any herpes viruses to come near me.

Then again, I'm not going to tempt fate by going out and screwing a few girls with genital herpes just to be certain.</comment>


System76 Announces New Darter Pro Linux Laptop - <AUTHOR> https://www.notebookcheck.net/System76-announces-new-Darter-Pro-15-6-inch-Linux-laptop-with-excellent-battery-life.401806.0.html <comment><USER2> Do System76's systems work OOTB on Debian Stable these days?</comment>


These are the small US towns that will be crushed as trucking becomes autonomous - <AUTHOR> https://qz.com/se/machines-with-brains/1017379/these-are-the-small-us-towns-that-will-be-crushed-as-trucking-becomes-autonomous/ <comment><USER2> What is achieved by designing the site this way? Did the designers test this site out before releasing it? It is almost unusable.

<comment><USER3> Yeah, I wanted to read this, but gave up after trying twice to scroll. What ever happened to plain old dark on light text with images in the middle? Why do we need fancy JavaScript effects getting in the way of actually, yanno, reading?

<comment><USER4> +1 after getting about half way through I accidentally scrolled into some other article and then couldn't use the back button, wtf.</comment></comment></comment>


Inconvenient Truths on the "New Energy Economy" - <AUTHOR> https://fee.org/articles/41-inconvenient-truths-on-the-new-energy-economy/ <comment><USER2> Unless refuted, these sobering observations should be confronted by everyone when considering the future of the energy economy and its relationship to climate.</comment>


57% of Android apps are free -- iPhone apps: only 27%  - <AUTHOR> http://www.downloadsquad.com/2010/07/06/57-of-android-apps-are-free-iphone-apps-only-27/

<comment><USER2> Pretty meaningless figure. There are lots of mitigating factors, like ads, whether the free app is merely a teaser with in app purchase, whether the app is a fart machine, etc. Because of all of these factors, it is very difficult to extract any meaningful data from app stores.

</comment><comment><USER3> Some of this may be explained by Google Checkout limitations. In some countries, developers simply aren't allowed to submit paid market apps (but free ones are fine).</comment>


Open-Source GPU Architecture from the University of Wisconsin-Madison - <AUTHOR> https://github.com/VerticalResearchGroup/miaow/wiki <comment><USER2> UWM = University of Wisconsin Milwaukee.

The University of Wisconsin Madison is referred to as UW, "Wisconsin", or The University of Wisconsin -- but not UWM.

<comment><USER3> Isn't University of Wisconsin Milwaukee the folks that have the really good cryptography courses?

</comment></comment><comment><USER4> It should be noted that this is the design for a single "Compute Unit" of a GPU, not an entire GPU. A GPU consists of an array of many of these connected up in a complex fabric, along with a lot of other components. The linked design includes none of these.

</comment><comment><USER5> Since this is based on AMD's GCN architecture, aren't there any patent issues?

<comment><USER6> the ISA isn't open?

<comment><USER5> What do you mean by open and what does that have to do with patents?

</comment></comment></comment><comment><USER7> Now, if you add a realistic memory hierarchy model, it can be used for a far deeper performance analysis than the official OpenCL tools are providing.

</comment><comment><USER8> I've been wanting to learn the internal architecture of GPUs for a long time, so this will certainly be very useful. Thank you.

<comment><USER9> One set you might find interesting, with likely expired patents, are the once- revolutionary SGI systems. Their O2 workstations and InfiniteReality systems specifically. Systems like O2 and Octane were used for movies such as Fight Club plus visualization applications (and Quake). The InfiniteReality technology was used in the Final Fantasy movie albeit with a lot of it. These might be copied in an open effort.

Note: To be clear, these aren't GPGPU systems but straight GPU's. I think MIMD architectures for general-purpose have proven better than GPU's. Just less investment and good one's mostly get acquired. FPGA's can be better, too, with good HLS tools and S-ASIC/ASIC conversion for better performance later.

[http://webstaff.itn.liu.se/~matco/TNM053/Papers/p45-kilgard....](http://webstaff.itn.liu.se/~matco/TNM053/Papers/p45-kilgard.pdf)

[https://en.wikipedia.org/wiki/InfiniteReality](https://en.wikipedia.org/wiki/InfiniteReality)

Far as internal architecture of regular GPU's, just search for it in Google with terms like that to find it. There should be descriptions of their architectures and plenty that came before them.

</comment></comment><comment><USER10> related: AMD published source code of HSA Runtime library

[https://news.ycombinator.com/item?id=8605764](https://news.ycombinator.com/item?id=8605764)

________________________________

and yes, it's Univ Wisconsin-Milwaukee, where i used to ride my bike to take my first programming classes.</comment>


Union Station is back online after facing scaling issues on Day 1 - <AUTHOR> http://blog.phusion.nl/2011/03/04/union-station-is-back-online-and-heres-what-we-have-been-up-to/ <comment><USER2> This reads like a Ted Dziuba performance art project.

I mean designing your setup as a ~15 server cluster _on one box_? __on a raid-1 of sata drives!?! __then xfs on raid-0!!!

This url is getting saved now as my canonical 'overengineering leads to faceplants' example.

<comment><USER3> I'm not sure what you're getting at. We were getting so much traffic that this setup is _necessary_ , and now that we've scaled I'm very, very glad that we went with this "overengineered" setup since day 1. We also never explicitly chose RAID-1; it was just the default setup that our hosting provider gave us.

But yeah if you're running a blog, don't do this.

</comment></comment><comment><USER4> RabbitMQ if deployed in the wrong manner, or stuck in the wrong place for the wrong reasons will bite you. I see that it looks like a transaction manager because Mongo can't handle tx very well? I beleive MySQL does, and so and Cassandra. Seems more a fit for that type of job.

<comment><USER3> We don't use RabbitMQ as a transaction manager. We use it as a worker queue.

RabbitMQ was not the bottleneck. In fact RabbitMQ doesn't perform much I/O at all.

<comment><USER4> I do see that now thx.

How many rails backends are you running?</comment></comment></comment>


Git Commits to the U.S. Constitution - <AUTHOR> https://github.com/JesseKPhillips/USA-Constitution/commits/master/Constitution.md <comment><USER2> Apparently you missed the post on the front page with (currently) 1096 points: [https://news.ycombinator.com/item?id=21338257](https://news.ycombinator.com/item?id=21338257)</comment>