Robots for children to program - <AUTHOR> http://www.play-i.com/

<comment><USER2> This looks really neat, but as a parent, I have no desire to introduce technology to my son at the age of the kids in these videos. I think that physical and social skills are much more important to develop earlier. The part of the video with the boy sitting by himself with an iPad at a playground while children run around him made me feel sad.

<comment><USER3> Maybe they should have shown a bunch of children around the iPad brainstorming enthusiastically on how the next move to program on the robot?

<comment><USER2> That'd work better for me.

</comment></comment></comment><comment><USER4> This looks awesome - when I got my sifteo blocks the first thing I wanted was to make them capable of driving around. I wonder if there will be a smaller version at some point. I can imagine it would be awesome for table top gamers!

</comment><comment><USER5> I wish to God they'd had one of these for me when I was ten..

</comment><comment><USER6> ... Soon to be followed by the children for robots program.</comment>


Show HN: A JavaScript debugger (press Go to debug bubble sort) - <AUTHOR> http://appshare.co <comment><AUTHOR> This is a simple app which can be used to build and debug small Javascript apps. Ask me any questions that you may have

<comment><USER2> This is a very cool app. how did you implement the `steps`. i meant how exactly the state is saved for the entire program?

<comment><AUTHOR> Thanks. To implement the steps I take the Javascript source code, then I use Esprima to parse the code and insert Javascript lines to trace the variable values:

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

The code is open source and available on Github too:

[https://github.com/zubairq/appshare](https://github.com/zubairq/appshare)</comment></comment></comment>


Show HN: Github for Contracts - <AUTHOR> https://www.comparisign.com/demo#HN

<comment><USER2> Things like this are potentially crazy-huge[1]. When contracts are flying back and forth, it is nearly impossible to detect small changes in already-reviewed sections. Does Comparisign cope with editing format changes? Sadly it is not uncommon for parties to switch format (normally from word to pdf) to hide the fact they are making changes.

The big nut to crack to really complete the offering is approvals. Currently some large companies use things like Exchange meeting invites and the such with "if you mark as attending, this will count as approving the changes" and other such tricks. Allowing for each individual change to be approved, then to require pulling the latest copy directly off the site and printing for final signing would fix so many problems, and make life a lot easier in big companies.

And things like this are for more than just contracts - all kinds of business documents from minutes to employee reviews require approval by multiple parties

Throw some auditing and standards[2] around it, and you'll have a very tempting enterprise offering indeed! Long term, look to implement various forms of SSO, made massively more complex by the need to allow at least two separate organisations to work together on documents.

[1] I've heard this asked for by a number of people I know, all of which have said this would have avoided a number of headaches for them!

[2] ISO 27001 at the least. 99.5% uptime would be the minimum, and get someone with some service management experience involved to do a proto-SLA. And even though you're not explicitly storing card details, your clients might want card and bank account details in there, so don't be surprised if PCI-DSS is asked for at some point

</comment><comment><USER3> Looks cool. I downloaded the diff PDF and it rendered correctly in evince on Fedora 18, without a single warning. I routinely see GVFS warning in terminal for many PDF documents with evince. I'm impressed.

The idea itself is equally interesting. However, I don't understand the legal nuances enough to know whether this can really catch up. Best wishes to you!

</comment><comment><USER4> Can you identify whats different between this and say DocuSign, HelloSign, Simpler, and a few other document sharing/editing comfirmation services that exist?

</comment><comment><USER5> boom. assuming legal documents is primary use case v1?</comment>


YC-Backed Bluesmart Raises $2M for Its Self-Tracking Suitcase - <AUTHOR> http://techcrunch.com/2015/01/23/yc-backed-bluesmart-raises-2-million-for-its-self-tracking-suitcase/ <comment><USER2> There are at least a half dozen other suitcase tracking devices. Here's one you can buy right now: [http://www.amazon.com/Trakdot-Luggage- Tracker/dp/B00KL3ZA4M](http://www.amazon.com/Trakdot-Luggage- Tracker/dp/B00KL3ZA4M)

One that connected to Uber might be useful. If your luggage comes in on a different flight, it automatically calls a Uber slave to deliver it to wherever you are.

<comment><USER3> Yes, there are several devices that accomplish the tasks of the individual features that our product includes. But there were no solution with everything integrated in one single product. The Uber idea is great. We actually thought of something similar. Hopefully we can make it happen soon

</comment></comment><comment><USER3> Here one of the co-founders. Happy to answer any questions about our company and technology

<comment><USER4> Are there recurring costs for 3g/4g connectivity? What's the coverage area?

What is "37 Watts lithium ion battery"? Is it 37 watt-hours?

Could I achieve similar tracking ability to dropping an old Android phone into my suitcase, with a tracking app installed on it? How would this hack fall short compared to your product's tracking feature?

<comment><USER3> Initially there will be no additional cost for the basic level service. We might offer a premium version down the road. Still defining coverage but aiming to have a practical global coverage. The battery's capacity is 10,000 milliamps per hour. Yes, there are many hacks you can do to achieve a similar tracking ability. We want to provide a comprehensive solution in which the location tracking is just a part of it.

<comment><USER5> "37 Watts lithium ion battery" is meaningless as a capacity.

As is "10,000 milliamps per hour".

You likely have a 10 amp hour, 3.7 volt battery yielding a capacity of 37 watt hours. This is about the same capacity as an ordinary smart-phone (perhaps a bit larger, I think an iphone is 5 or 10ish ).

<comment><USER3> 10,000 mah is the same as 10 amp hour. And that is 6 times what an iPhone has actually

<comment><USER6> Those units are very different from milliamps _per_ hour (which is basically a nonsense unit) and watts (which are a unit of energy per time, therefore saying nothing about how long the battery will last).

I'm just trying to address the confusion here. Battery capacity is a relatively mundane detail, and I don't necessarily expect the people writing marketing copy to understand electrical terminology.

</comment></comment></comment></comment></comment></comment><comment><USER7> By the way, we will be hiring soon. Check out our jobs page: [http://bluesmart.com/pages/jobs](http://bluesmart.com/pages/jobs)

</comment><comment><USER8> Maybe I missed something, but how does the suitcase communicate with your services? Isn't it limited by bluetooth range?

<comment><USER3> It's not just Bluetooth. We will be publishing the details of our full tracking solution soon

<comment><USER8> It'll be interesting to know. You can't make calls from the plane to transmit location. You can however, do it when you detect the luggage has landed, based on altitude and/or airport coordinates.

<comment><USER3> That's correct. Stay tuned, we'll release technical details in a blog post soon. Thanks for the feedback</comment></comment></comment></comment>


How a tweet led to medical photo app Figure 1 getting backing from USV - <AUTHOR> http://business.financialpost.com/2014/08/26/how-a-tweet-led-to-toronto-medical-photo-app-figure-1-getting-backing-from-union-square-ventures/

<comment><USER2> the article doesn't actually mention how the tweet led to the company getting funding, or anything to do with what the tweet said!...</comment>


The Importance of Icon Metaphors - <AUTHOR> http://louiemantia.com/blog/?p=9

<comment><USER2> He seems awfully biased towards Apple icons. Admittedly, some of their icons use better visual metaphors, but I can't help but wonder if his preferences have developed from his day-to-day use of Apple software, as opposed to objective evaluation of the designs.

<comment><USER3> I think most of his analysis is reasonable, certainly I think many of the Mac icons work better at smaller sizes.

I think he cuts the Safari icon too much slack, however - I didn't realise that there were continents painted in the background of the compass, and the compass is fairly weak as a metaphor for the Web.

I think the Finder icon is poor too.

Disclosure: Another Mac user.

<comment><USER2> I wouldn't call it unreasonable; just biased.

I guess it's hard to be objective, given the pervasiveness of operating systems. I'm sure if I ever succumb to Alzheimer's disease, my grandchildrens' names will be forgotten long before I forget how to use Windows ;-)

</comment></comment></comment><comment><USER4> "Designing the Obvious" by Robert Hoekman dedicates a whole chapter in his book on supporting the user's mental model.

A great example he gives is deleting files. Instead of writing command line prompts to delete files, users simply drag icons into a trash bin on their desktop.

The visual metaphor of throwing something away is simple and it makes sense.

</comment><comment><USER5> "Firstly, I want to apologize in advance, as I do not write often, and don't claim to be a good writer. Proceed with caution."

I liked his article, but this is just about the worst opening sentence I've seen in a while. Yeesh. Have those thoughts if you must, but don't share them with your readers.</comment>


Directsum.jl – Abstract tangent bundle vector space type operations - <AUTHOR> https://github.com/chakravala/DirectSum.jl <comment> dan-robertson I feel like the readme could do with a better introduction. At the moment it seems like weird mix of mathematically technical definitions, code examples (I guess related to api specifics), and some random Julia type-system/size-limit technicalities thrown in too.

But that said, I don't think I know anything about this sort of geometry or algebra so maybe instead I should want a paragraph telling me to give up.

Also is V"++++" the same as S"++++" (or rather, is V the same as S?), this looked like maybe the notation just changed? But like I say, I couldn't really follow the readme so I'm likely wrong here.

<comment><AUTHOR> The difference between V"++++" and S"++++" is that the S" specifically constructs a Signature concrete type, while the V" is for automatically selecting an appropriate type of the VectorBundle category, which is not limited to Signature specifically, making it a more general constructor call.

</comment></comment><comment><USER2> If this tickles your fancy, check out the bivector.net community.

Check the demo

[https://observablehq.com/@enkimute/animated- orbits](https://observablehq.com/@enkimute/animated-orbits)

Join the discord

[https://discord.gg/vGY6pPk](https://discord.gg/vGY6pPk)

<comment><USER3> Cool!

</comment></comment><comment><AUTHOR> Related: Grassmann.jl – Differential Geometric Algebra - [https://news.ycombinator.com/item?id=22076368](https://news.ycombinator.com/item?id=22076368)

</comment><comment><USER3> What problem is one solving when this becomes useful? Is it a compressed representation of something?

<comment><AUTHOR> Correct, it is an encoding to represent SubManifold spaces used in the multi- linear Grassmann algebra. It might seem strange on its own, but the advantage it provides in Grassmann.jl is specialized automatic pre-compilation for differential geometric algebras based on a vector bundle manifold. For example, see [https://grassmann.crucialflow.com](https://grassmann.crucialflow.com)

</comment></comment><comment><USER4> I'm not sure I understand how the different types in this library---Manifold, VectorBundle, SubManifold---correspond to the standard definitions of these mathematical objects. How is a manifold represented here? Can arbitrary manifolds be represented?

<comment> dan-robertson I think a complication is that there are abstract types and concrete types. The abstract types let you say "give me a tangent bundle where ..." and the concrete types actually implement the thing as eg a vector or a sparse vector or ...

An alternative example would be that in Julia you can talk about abstract vector types of which dense and sparse form disjoint subtypes

<comment><AUTHOR> Indeed, the Manifold{n} type from AbstractTensors.jl ([https://github.com/chakravala/AbstractTensors.jl](https://github.com/chakravala/AbstractTensors.jl)) is defined as an abstract type in Julia. The parameter `n` is used to specify the Manifold dimension, which is locally isomorphic to R^n.

A VectorBundle is another abstract type, which standardizes an encoding format for concrete Signature and DiagonalForm types, or more. SubManifold can select subspaces of a VectorBundle or generally an arbitrary Manifold.

The design of the type system was optimized for algebra interoperability and adaptive subspace precompilation.

<comment><USER4> Okay, so say I want to do computations with differential forms on some particular manifold, like a torus or RP^n. Maybe I want to evaluate the Hodge Laplacians on some forms. What would I need to do to implement that within this system? I see references to computing Betti numbers and Euler characteristics in the documentation, so I assume something like this is possible.

I'm not very familiar with geometric algebra or its computational implementation, so apologies if this is either obvious or not even wrong. This looks very cool and useful, I just don't know how to connect it to the things I understand.

</comment></comment></comment></comment><comment><USER5> Do people do these kinds of computations often in practice?

<comment><AUTHOR> This is part of the foundations of my geometric algebra implementation, which you can find out more about at [https://grassmann.crucialflow.com](https://grassmann.crucialflow.com)

</comment></comment><comment><USER6> This is very cool, but what is the use case?

<comment><AUTHOR> It is used as a type system for code generation and high performance calculation with discrete differential goemetry sub algebras. More information is at [https://grassmann.crucialflow.com](https://grassmann.crucialflow.com) or also at [https://bivector.net](https://bivector.net)</comment></comment>


The feature supported in IE6, but not Chrome - <AUTHOR> http://blog.thomseddon.co.uk/gzip-support-in-chrome/ <comment><USER2> Am I thick, or is the real solution to use "Content-encoding: deflate" when the data you're sending is a "deflate" stream, instead of claiming "Content- encoding: gzip" and crossing your fingers?

Honestly, that's like changing the extension of a .rar to .zip and asking why Windows Explorer can't open it but gnome-open can.

<comment><AUTHOR> You are quite right, and it would be the correct way to do it with a stream filter, so thanks.

Personally I had never thought to look what the deflate indicated and figured it was similar to sdch, now I know.

</comment></comment><comment><USER3> Not true. If you specify the Content-Encoding headers, Chrome and Firefox decode and display the images properly.

<comment><USER4> Doesn't this mean that IE is doing content-type sniffing?

<comment><USER3> Yes it does. It always has done.

</comment></comment></comment><comment><USER5> First: Gzip'ing images is _worse_ than leaving them alone. Don't do it.

Second: Chrome always handles gzip with the correct headers.

</comment><comment><USER6> Did you send the response header "Content-Encoding:gzip" when serving the image?

<comment><USER3> He clearly did not, because if he did he would have noticed that it works. That IE tries to decode anyway is a bug.

<comment><USER7> As far as I know, the HTTP standard doesn't require browsers to decode content with a decoding mechanism if and only if it has been specified in the Content- Encoding header. I don't think this is a bug.

</comment></comment></comment><comment><USER8> That's probably because you don't gain anything from gzipping images, right? From memory you might just increase the file size by gzipping, and you'll definitely increase processing work.

<comment><USER9> I think you're forgetting that when you put a compressed file in another compressed file it makes it a surprise.

<comment><USER10> Kinda like flying a plane inside another plane.

</comment></comment></comment><comment><USER11> A tempest in a teapot.

1\. A modern graphic file is already maximally compressed.

2\. Given (1) above, an effort to compress the file further can only make it bigger (one of the paradoxes of misapplied compression).

3\. So the decision to reject gzipped graphics is wise -- it educates inexperienced programmers in a subtle point about compression technology, more or less by force.

The above is true -- take a file composed of supposedly random numbers (or byte values). A good measure of the file's randomness is the inability of a well-written compression algorithm to make it smaller.

By contrast, a measure of the redundancy (of exploitable content repetitions or patterns) in a file is the degree to which it _can_ be compressed, the ratio of its compressed versus uncompressed size. In my experience, political speeches tend to be very compressible.

</comment><comment> d--b it is pretty clear in google's message: jpeg and pngs images are already compressed (the last step of the compression is similar to a gzip compression in many ways). Putting a jpeg in a zip file is similar to put a zip file in a gzip file. It is usually increasing the space, and it's using some cpu time to inflate / deflate. Whether it is google role or mozilla to teach you that you shouldn't do that is debatable. But I can see why they wouldn't want to develop a feature that's useless and costly. It would be like developping an engine for a car that uses more gas for your car to go slower...

</comment><comment><USER12> A 899kb JPEG image (100% quality) compressed at best compression will take file size down to 878kb (but who leaves a JPEG at 100% quality?). While compressing a PNG will yield a file of identical size most times, if not larger.

I built my own archive format years ago, using bzip2 for game programming. When you compress an already compressed file the result is almost always larger, or at smallest is the same size. On top of having to be decompressed twice on the client side, this is a total waste of server resources.

</comment><comment><USER13> If I remember the complaints about IE6 correctly, one of them was that IE6 oversteps standards and best practices, rewarding poor coding that wouldn't fly in standards-compliant browsers. If I'm correct on that, this seems more like a "feature" than an actual feature; that is, something you can get away with even though you shouldn't.

</comment><comment><AUTHOR> If anyone could enlighten me as to why this is I would really appreciate it

EDIT: My question was in reference to the latter part of the final conclusion, Chrome sends:

Accept: _/_ Accept-Encoding:gzip,deflate,sdch

But doesn't actually support it. Thanks to hobbit_longon for help pointing out the error in the final point.

<comment><USER14> Is this a joke?

You want to know why people don't gzip their images? What benefit do you think you get from gziping a jpeg or png stream? Why were you trying it in the first place?

<comment><AUTHOR> I think you may have misunderstood the conclusion of the article and so hence my question: When requesting an image chrome sends:

Accept: _/_

Accept-Encoding:gzip,deflate,sdch

But if you abide by this and send it gzip'ed it fails...why?

<comment><USER15> When the request is sent Chrome doesn't know the content type of the response, so it can't know that what it's requesting is an already-encrypted file.

<comment><USER14> Who said anything about encryption?

</comment></comment></comment></comment></comment><comment><USER16> am i surprised that absolutely wrong on all levels article contains code examples in PHP?

no.

</comment><comment><USER14> gzipping web content isn't optimisation 101, that's optimisation 102.

Optimisation 101 is profiling.</comment>


Writing a book, still the same pain 15 years later - <AUTHOR> https://medium.com/@kentbeck_7670/writing-a-book-47688825695e <comment><USER2> I'm a working novelist (I put out about two books a year, I'm a WSJ best- seller, Edgar nominee, blah blah blah) and the number one mistake I made in the past is the same as when I would sit down in front of a code editor or Photoshop and not have a plan. While we can all "seat of the pants" things to some degree, without a detailed plan your chances of getting derailed increase exponentially.

I've written best-sellers in week (for real) - not because I have any special skill (I'm not a particularly fast typist) but because I write very detailed outlines that break things down enough that I never stare at a blank screen yet always have enough room to have fun improvising.

Outlining for me is asking a series of nested questions about "What" and "Why" and always knowing where I need to go next.

<comment><USER3> It's worth mentioning, perhaps, that a lot of writers don't have a plan/outline: Stephen King, for example, who has described in great detail how he works in "On writing": he starts with a situation and develops it as he writes. In fact, in most cases where I've read about how a writer works there is no plan/outline. However, it was mentioned in court proceedings that Dan Brown had an outline for "The Da Vinci Code", so I don't have sufficient evidence to conclude which approach is most popular. Perhaps it's just those writers who like to write about writing that prefer not to have a plan.

<comment><USER2> "On Writing" is a wonderful book. If you're Stephen King, plot and structure run through your veins. If you're a mortal like the rest of us and "seat of the pants" isn't working...then outline. Outlining also saves you from having to randomly kill off half your characters in the middle of the book because there's no way to wind down all their storylines...

I'll also add that anecdotally, my writer friends who outline go through far fewer revisions than those that don't.

If your process works, don't mess with it.

</comment></comment></comment><comment><USER4> Writing a book is easy. You sit down by the keyboard, slit your wrists, and pour your self out. (That's not a typo, btw.)

I've written one, and in the process acquired a near limitless admiration for those who can do it for living, book after book, decade after another. Even for a topic you feel should be easy - every page that ends up being in the final result, you have written at least 3x. The editing process alone is brutal, and the harsher, more demanding editor you get to work with, the better the results.

<comment><USER5> As a side note, don't think writing a second edition makes the process any easier. I recently finished the second edition of my book on technical blogging and I'm left with the distinct feeling of having "changed little" while objectively having spent more time writing this than the first edition.

Still, in the end, you get to hold your baby.

As Winston Churchill said, "Writing a book is an adventure. To begin with it is a toy and an amusement. Then it becomes a mistress, then it becomes a master, then it becomes a tyrant. The last phase is that just as you are about to be reconciled to your servitude, you kill the monster and fling him to the public."

<comment><USER6> > As a side note, don't think writing a second edition makes the process any > easier.

Why?

Just add "dot" on last page -- and second edition of your book is ready!

<comment><USER7> No, no, no. You have to move the chapters around, renumber the sections, change the order of the questions at the back, and introduce a couple of new typos.

Otherwise how are you going to force the students to buy the new edition?

</comment></comment></comment></comment><comment><USER8> FWIW, the numbers in that piece seem pretty spot on for me.

Something around 75K-100K words (translating to about 200 pages with some figures, etc.) is probably the minimum for what publishers (and most readers) consider a "real" book.

I've been writing most days for about 20 years. I've always considered 1K words/day a good ballpark for a "writing day." (That's a decent length for a blog post or article.) That's with various meetings and other activities/tasks but without any other major commitment. (i.e. I find it hard to crank out 1K words at the end of the day after getting home from a day of work or an event) I'm considered a fast writer by people I work with.

Do the math. And that's more or less ignoring rewrites, extensive edits, any in-depth research/interviews, and so forth.

</comment><comment><USER9> I've tried publishing a novel in India (English) and it is much more painful than the 80k limit.

A top editor told me, more like lamented, that they focus on historical fiction or romance because "that's what sells"

I wrote a decent thriller which my friends read in one day because they loved it. Granted, they are my friends so they could by lying, but the publishers just read the synopsis and saw that it isn't historical or romance and ignored. That's what Indian publishers do, they ignore!

And there was this one agent who asked me money so he could "represent me". He then wanted me to sign a contract, which meant that if I didn't publish book to publisher he would get then I'd have to pay him 10k or something. And his mother has a publishing house. I read online that he gets books published from his mom's house.

Which agent asks for money?!

I have 4 unpublished novels, one is about a guy who wakes up at a bus stop with 0 memories and tries to figure out his past, one long fiction about science fiction that spans 1000s of years and one is a satire on the new form of Authoritarian regimes. This satire is a 2 book series.

<comment><USER10> First rule of publishing: money flows towards the author, not the other way round. (Not necessarily very much money mind, but it's the direction that's the important bit!)

No reputable agent charges authors directly for their services - their income comes out of a cut of the money paid by publishers to authors.

If you have a stack of books that your friends actually like & can't get published, do you have anything to lose publishing them yourself on Amazon's Kindle platform?

<comment><USER9> First rule, that's what I thought and I declined his offer.

You won't believe his arrogance. He replies "This wasn't an offer"

I was planning to publish on Kindle but I'm not sure how to market the book.

Do you know perchance how to market Kindle books? I read that 99% authors don't market their books.

I want to be among the 1%!

<comment><USER10> Definitely not my area of expertise! But go read the blogs of people that have been successful at it - plenty of tips there.

<comment><USER9> Thank you!

</comment></comment></comment></comment></comment><comment><USER11> I deeply regret writing my novel. It took an agonising 8 years when I was desperate to get it out as soon as possible. The issue was that I wanted a certain level of quality. I ended up self publishing on Amazon :/

I try not to think about what I could have done with the time: study math, programming, do stand up comedy etc. etc.

It is what it is I guess.

<comment><USER12> I understand your pain, but I want to ask: did you put much effort into marketing it after publishing? A lot of writers put 99% of their effort into writing, and by the time they've finished the book they're out of energy to pursue the marketing aspect. This is compounded by the fact that talented writers are not necessarily good at the marketing side of things.

The key is to persist with marketing until it either succeeds, or you've got clear evidence that most readers don't like it enough. If you're not good at marketing, find people who are.

Sometimes, the key to success, especially if you've got a quality product, is to persist after most people would have thrown in the towel.

</comment></comment><comment><USER13> At risk of sounding like a low-effort critic, I have to say I'm not sure what we're supposed to take away from this post. It's got about zero useful information or interesting insight.

It really does come across as "How not to write a book" but without any sort of...life...to the writing.

I say that with nothing but respect and admiration for what Kent has contributed to the world of software engineering. As for this blog post in isolation, I just can't figure out who would read this blog post and feel it deserved to be shared around.

<comment><USER14> I think it's written for other writers. To help communicate the pain and process. It's easy to feel like it's "just you" and everyone else just shits perfect chapters, one per week, and hits publish.

I enjoyed it.

<comment><USER15> There's an industry of writers providing advice to other writers about writing. Think of it like self-help but for writing.

I used to attend some writers groups, but everyone was always looking for a method that would make writing easy, instead of just writing.

Almost nobody knew what they were talking about. Figuring out what works for you _is_ writing.

<comment><USER16> Presumably, the people who actually know how to "operationalize" writing, aren't writing self-help books, but rather are managing stables of prolific (if maybe schlocky!) writers.

I would love to hear writing advice from the managing editor of a publisher of pulp serial-fiction books, of the kind where the writers churn out multiple new books per year. Those books might not be the greatest thing ever written, but certainly they're better than failing to ever publish anything.

<comment><USER8> For that matter, there are series of branded tech books of various sorts that are used by companies for marketing campaigns. They're written by freelancers and are often more successful at their objectives than you would like to know.

<comment><USER17> I've always been curious how that scene works. It feels like a comfortable place for someone with broad curiosity and an ability to write. Do you have any insights?

</comment></comment></comment></comment></comment></comment><comment><USER3> I think there's an interesting phenomenon here how a lot of people get obsessed by producing a book. I have seen so many blogs by aspiring writers, and overheard their conversations on trains, too. What drives people to do this? I think most of them don't hold much hope of becoming rich or famous: they understand that most writers need a day job. Perhaps for some reason they consider themselves inadequate until they are a published author. But why? Does it just follow from the way authors and publishers create a mystique in order to sell their wares?

The mystique (if that's what it is) seems to be quite specific to being the author of a _book_. Writing a series of articles for a national newspaper or being a commercially successful screenwriter or ghost writer somehow isn't good enough, even if it's much more lucrative.

<comment><USER18> A book is something that you can point to and say "I made that". Regardless of the content, a book is not fleeting or ephemeral. These days people will even look up to you if you are capable of reading one. So it carries weight, both in the physical and mental sense of the word. If you're not self published, a book is also a sign of approval. Someone who knows about these things thought it was good enough to print. Really, there are lots of reasons to want to write a book.

<comment><USER19> That is true. Books are read after centuries, magazine articles not

</comment></comment></comment><comment><USER20> This is a really accurate account of what it's like to go solo on a book project. It can be brutal.

I'm surprised and a little sad there isn't a full discussion of how to line up friends and admired colleagues to make the journey easier. They can help with the early brainstorming. The best ones are invaluable advisers on scope, pacing and cadence. They will remind you about the merits of your best ideas when you feel lost, and they will help you cull with a lot fewer tears.

I tried doing my first book solo and stalled out after a year. Rounding up an advisory circle let not only brought that book back to life -- it also created a trusty new process that has let me write four more books more quickly and with less stress.

</comment><comment><USER21> For those who write eBooks, what is the best output format? I am planning to write a introductory book on deep learning which is going to contain a lot of math and code. I find LaTeX as the best way to author math stuff but I don't know if I can generate .mobi and .epub files from it.

Are the .mobi and .epub formats even worth it?

Would it be simpler to just output an A6 format PDF that can be viewed alike on desktop as well as eReaders?

<comment><USER22> I use pandoc+xelatex to convert GitHub style markdown to pdf [1] I've also noted down other options in the last section of the blog post, which I think should get you started.

I haven't yet been able to generate a decent looking epub/mobi for technical books with code snippets. And these also depend on which reader user has. I've been asked by a few to support these formats, but majority are happy with pdf.

[1] [https://learnbyexample.github.io/tutorial/ebook- generation/c...](https://learnbyexample.github.io/tutorial/ebook- generation/customizing-pandoc/)

<comment><USER21> Thank you for sharing your insights. Can you share more details about what issues you with epub/mobi for generating technical books? Do you have any experience with machine learning and math content? If generating epub/mobi for technical books is a problem I am guessing it would be even more of a problem to generate good looking epub/mobi with math content.

<comment><USER22> Issues with epub/mobi: pandoc gives me error which I didn't put much effort to get it resolved. I tried a sample book generation using rstudio and the resulting epub was bland compared to pdf (no syntax highlighting for code, spacing isn't pleasing between code and text, etc) - I searched a bit and found that I'd need to know learn a lot about CSS to get better results. A book from another author on leanpub (the platform allows you to generate all types from single source) was remarkably poor to read on my desktop epub reader compared to pdf (again no syntax highlighting, spacing issues, etc). Do try to compare same book in pdf vs epub/mobi if you get the chance.

No experience with ML. Have read a bit of content for Python+Math, but only as pdf.

</comment></comment></comment></comment><comment><USER23> Maybe you should look into nootropics, nutrition, and meditation.

In my case, I'd have to let everything sit on my mind (refine, enrich, blend, blur, cohese..) for a while. After, I'd write it all in one go.

Outlines are sometimes great, as they allow pacing and regularity. On the other hand, they tend to destroy substance in a work.

Unless writing for leisure, ensuring there's a sufficiently-sized accessible interested market for your topic.

The more effort put into a book/novel, the less likely it is to do well. Many books catch on due to a good title (picking the right/hot topic). Everything else mainly involves revolving around and repeating the desire leading to the hot nature of the topic. The editor will handle the rest (grammar, spelling, etc). Most who buy books are women or feeler males (ie, all emotion).

</comment><comment><USER19> "Smalltalk Best Practice Patterns" was a good book

<comment><AUTHOR> s/was/is/g

One of the biggest insights I gained was reading about "intention revealing selector".

Before that I had thought that we needed "higher level" programming languages, whatever that meant, exactly.

This made me realise the importance of naming (one of the two, three? hard things I computer science). If I could find an intention-revealing selector, I didn't need any higher level, because the current level was just fine.

This was the case much more often that I would have thought, it just required work. (eek)

And it also gave you an indicator that you might, in fact, need a "higher" language level, or more accurately an architecturally more appropriate one: when you can't create intention-revealing selectors.

<comment><USER24> If anyone else was wondering: [http://wiki.c2.com/?IntentionRevealingSelector](http://wiki.c2.com/?IntentionRevealingSelector)

> Name methods after what the method does, don't name methods after how it > works.

<comment><USER25> This rule applies even more to API documentation. As soon as you mention _how_ , that becomes part of the _what_ interface you have to support.

With _internal_ method names, for tricky code, it's a bit more fuzzy, and sometimes I've found that putting _how_ information into the name seems to be a great idea, for readability&correctness of code that calls it. This is more for functions/methods for which the _how_ is relevant (or, you could say, some of the _how_ becomes part of the _what_ ).

<comment><AUTHOR> What vs. how was what made this click for me.

Apparently, there was a method to invert the screen

       >>>flashScreen
          self invertScreen.
          self delay:sometime.
          self invertScreen.

There was also the requirement to have a "visual beep" to accompany an acoustic beep. The way the visual beep was to be implemented was to invert the screen.

Now you _could_ have just put "... invertScreen." where you were supposed to do the visual beep.

Or you could add a method:

       >>>visualBeep
           self flashScreen.

Before, I would have said this method is completely superfluous, after all it doesn't really do anything that isn't already in the system. However, the service it provides is giving something the correct name. This is highly valuable.

<comment><USER19> Yes, it packages a set of code-lines together which have the shared property that they all serve the same purpose. Even if it is called from only one location it makes sense EVEN THOUGH IT DOES NOT REDUCE the code-size. It does the opposite if you call it only once. But it makes it easier to understand the code because it hides details under a separate method. It makes it easier to read the calling code because it makes the calling code shorter.

I'm not quite sure however if this was the reasoning behind Intention Revealing Selector which I thought was more about how to name methods, not about whether and when to package multiple method-calls into a single new method.

</comment></comment></comment></comment></comment></comment><comment><USER26> I think the problem is totally different for those who live to see their projects finished. Then there are people like me who have no such urge.

If a person like me can get into the routine of writing (which would be very difficult trick) then the writing itself would probably be quite easy. There is no fear of blank page, no depressive thoughts of "am I ever going to finish" etc. But there is no reward in the other end of the tunnel either. The writing itself would have to be fun enough.

<comment><USER8> What you describe seems more akin to why people write diaries rather than write books.

I'm sure I'm over-generalizing but anyone who sets out to write a book has publishing it in mind--and, if they're using a publisher, the publisher certainly does.

Things like blogs blur the boundaries to be sure. But I still view blogs as discrete published items rather than a process I enjoy for sake of the process.

For me, photography is probably more in the enjoying the process camp although I do publish it as well.

</comment></comment><comment><USER27> I am working on my first book and today just cut it into two books because ... because it demanded it.

But doing 100k words? wow? And getting early feedback and marketing and ... lots to do :-)

</comment><comment><USER28> This means writing a book is a creative endeavor.

Creativity does not get easier with time.

</comment><comment><USER29> These discussions about writing books are the best thing in Hacker News.

</comment><comment><USER30> I read this three times and still don't understand. What was the point or thesis of the article?

</comment><comment><USER31> (Aw, I was hoping this would be about publishing a book with LaTeX...)

<comment><USER32> I myself write books in Markdown. Each chapter has a markdown file, the book is version controlled with Git, there is a "build script" that does a "build" (in this case it's a shell script that concatenates the markdown files and runs them through pandoc and calibre CLIs to generate eBooks and PDFs).

When I send to my editor I just tell her to modify the files as she sees fit. When I get them back I put the new files on a branch and create a PR so I can start discussions on changes, etc.

I think the process is pretty darn efficient but it's hard to sell it to non- techie writers/editors.

<comment><USER33> I wanted to use a workflow like this years ago working with Apress. Possibly (hopefully) things are better now, but at least at the time, all their tooling expected Word docs as the input, and you had to use a very specific stylesheet (including goofy stuff like magic text strings to insert images).

There were also some manual transformation steps occurring on their end, because there was a cutover point where the Word doc was no longer accepted and you had to just quote page and line numbers to get further changes made.

<comment><USER34> Are there publishers who are more accommodating of inputs like LaTeX/pandoc/markdown/etc? It'd be great to know that kind of thing when considering publishers.

<comment><USER35> I think No Starch Press accepts LaTeX markup. There is a nostarch package on CTAN. [https://ctan.org/pkg/nostarch?lang=en](https://ctan.org/pkg/nostarch?lang=en)</comment></comment></comment></comment></comment>


Widely reported 45% emissions reduction necessary by 2030 actually closer to 60% - <AUTHOR> https://mobile.twitter.com/PeterBrannen1/status/1049438189918638080 <comment><USER2> Why don't just accept the simple, and well-know fact that no emission reduction is or will be possible, and CO2 emissions are going to continue increasing, probably growing about 3x-4x by the end of the century, for as long as there are non-renewable energy resources?

I am not a doomster, i know humankind will switch to renewable energy and is already well on track to do that, it is possible even without any new large scale inventions while these are coming too. It is just that after all, mineral resources are free stuff. Free stuff is going to be used until it runs out, or until the remaining portions of it will become too hard to get (and we humans are very inventive when it comes to getting our hands on free stuff, see shale revolution).

Just accept this as a fact and plan economic and social changes based on its consequences.

Until you start simply nuking the countries which are using mineral resources, any attempts to curb CO2 emissions mean only increasing them, as you will decrease production of something which you probably do very efficiently (as you are a developed nation), leaving market space for less developed, and less efficient nation to produce same amounts of stuff, using more of the mineral energy and producing more CO2. We humans are also highly competitive species. We instinctively choose harming ourselves if it means harming our enemies even more.

<comment><USER3> The world collectively regulated CFCs, so we know global scale externalities are a solve-able problem. [https://www.nbcnews.com/mach/science/good-news- about-ozone-h...](https://www.nbcnews.com/mach/science/good-news-about-ozone- hole-even-better-you-think-ncna835971)

There may be some bad actors but not enough to halt gains. [https://www.upi.com/China-to-beef-up-CFC-inspections-as- UN-i...](https://www.upi.com/China-to-beef-up-CFC-inspections-as-UN- investigates-illegal-emissions/3041531928505/)</comment></comment>


EventReduce: An algorithm to optimize database queries that run multiple times - <AUTHOR> https://github.com/pubkey/event-reduce/blob/master/README.md <comment><USER2> Did I understand this correctly? You have a single set of items which you query by evaluating a predicate on each of them and then sort the matching ones. After the initial query you update the query result by looking at all the data update events, i.e. you remove delete items from the result, you insert matching new items in the correct position according to the sort order and you insert, remove, or move updated items as they start or stop matching the predicate and change their position according to the sort order.

<comment><AUTHOR> Yes this is correct. The performance benefit comes from doing all this stuff on the CPU instead of using disc-io. Also the internal binary decision diagram of EventReduced is optimized in a way to run less logic then a query would do. This makes it even faster then running the query again with an in-memory database.

<comment><USER3> And the main cost of this (questionable IMO) benefit is losing consistency, which is losing any change to DB not coming from the calling app. You haven't mentioned this cost anywhere.

<comment><AUTHOR> The writes are not tunneled somehow through this algorithm. You still use the database like your normally would do. So the consistency is not affected.

Also this is an open source project, not something I want to sell you. Feel free to make a PR/issue with any open topics that are not mentioned in the docs.

<comment><USER3> >The writes are not tunneled somehow through this algorithm

Then I fail to understand how it works. How Event-Reduce becomes aware of these "write events"?

>this is an open source project, not something I want to sell you

You made it open source so others can use it, right? They better be making an informed decision whether your solution suits their needs.

<comment><AUTHOR> You have to provide the events by yourself. See EventReduce as a simple function that can do oldResults+Event=newResults.

And yes, you should always do testings before you use open source stuff. There is no warranty use it on your own risk.

<comment><USER3> OK, so you don't "tunnel writes through" EventReduce, you "tee" them to EventReduce.

Anyway, to maintain consistency, you have to limit yourself to one process of your app. No sharding, load-balancing etc. This is significant limitation, and it's not obvious. I encourage you to mention it in README.md.

<comment><AUTHOR> I encourage you to read the readme and check out the demo. EventReduce is nothing magically drills out your database and affects the consistency of your write-accesses.

It is a simple algorithm that is implemented as a function with two inputs and one output.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER4> Materialize exists to efficiently solve the view maintenance problem: [https://materialize.io/](https://materialize.io/)

<comment><USER5> There is also noria [0] which is basically a SQL database with integrated materialized views with memcached like perf. - But I think it is more in a research state.

[0]: [https://github.com/mit-pdos/noria](https://github.com/mit-pdos/noria)

<comment><USER6> Any database which offers what are called "continuous queries" also solves this problem. I'm glad the ACM Digital Library is open right now, because I can just point to: [https://dl.acm.org/action/doSearch?AllField=continuous+queri...](https://dl.acm.org/action/doSearch?AllField=continuous+queries)

The work in general purpose streaming grew out of the continuous query work in the early 2000s. Marrying truly general purpose streaming with transactional databases is not a solved problem (as opposed to transactional databases providing streams), but the notion of continuously running database queries has been around for a long time.

</comment></comment></comment><comment><USER7> How does this work for complex queries with sub-queries, LEFT OUTER JOINs, LATERAL JOINs, aggregation (DISTINCT/GROUP BY), window functions, CTEs, RECURSIVE CTEs?

I've a radically different approach: can the queries in question as VIEWs, materialize them, use triggers to update materializations where you can write those triggers easily and the updates are quick, or schedule an update where they're not.

If your RDBMS is very good about pushing WHERE constraints into VIEWs, and depending on how complex a VIEW query is, you might be able to make the update automatic by just querying the materialization's underlying VIEW with appropriate WHERE constraints from the ROWs being INSERTed/UPDATEd/DELETEd. You can tell which VIEWs might suitable for this by checking that the TABLE whose row the trigger is running for is a "top-level" table source for the VIEW's query: meaning a table source that's either the left side of a top- level LEFT JOIN, or either side of an INNER JOIN. If you can run a query on the VIEW with a timeout then you can just do that in the trigger and mark the materialization as needing an update if the query is too slow. Lastly, a scheduled or NOTIFYed job can run to perform any slower updates to a materialization.

<comment><AUTHOR> It sounds like you did not read the READme. What you are describing is something that does scale up with more data but not with more requests. When you have an application where 1000s of users subscribe to different queries, your view-maintainance would kill the write performance while EventReduce does not.

</comment></comment><comment><USER8> Forgive me if I missed stuff, please point me in the right direction if you've covered it, but some questions if I may (after I've said well done!). I've considered this problem before and it seems very difficult . So:

1\. Do you have a paper on this with a rigorous justification of the algorithm?

2\. This surely has to rely on the isolation level being pretty high, or EventReduce might be reading while n other processes are updating. I don't see that mentioned.

3\. Surely you need logical clocks for this? If not, could you point me to a high-level description of the algorithm to show why they aren't necessary.

4\. Why does sort order matter? A timestamp yes (see 3. above), but I don't understand why the order matters.

thanks (and trying to understand this might be the thing to get me into looking at BDDs again. I never understood their value).

<comment><AUTHOR> 1\. No I do not have a paper. I thought a lot about publishing a paper first but then decided against it, because I think that good code and tests and demos are more valuable.

2\. EventReduce is mostly useful for realtime applications. I myself use it in a NoSQL database (RxDB). There you stream data and events and a single document write is the most atomic 'transaction' you can do. If you need transactional serial writes and reads that depend on each other, you would not use EventReduce for that.

3\. EventReduce is just the algorithm that merges oldResults+Event. It assumes that you feed in the events in the correct order. Mostly this is meant to be used with databases that provide a changeStream where you can be sure that the order is correct.

4\. Sort order matters because EventReduce promises you to always return the same results as a fresh query over the database would have returned. When the sort order is not predictable, the returned rows from a query depend on how the data is stored in the database. This order cannot be predicted by EventReduce which means it will then return a wrong result set.

PS: BDDs are awesome :)

<comment><USER9> It would probably be a good idea to write a paper at some point; it's simply easier to read a document explaining the algorithm with some pseudocode than to dig through an actual codebase with all the messy language-details in between the parts that actually matter.

<comment><AUTHOR> I understand that reading the plain source code is more painful then reading a paper.

There are many different trade-offs between a paper and the current repository with source code. For me the biggest argument was that EventReduce is a performance optimization. So to be sure if it really works and is faster, you always need an implementation since you cannot predict the performance from a paper.

Because I did not have time for both, I only created the repository with the implementation. Maybe a paper will be published afterwards.

</comment></comment></comment></comment><comment><USER10> This seems conceptually similar to differential dataflow.

[https://github.com/timelydataflow/differential- dataflow/blob...](https://github.com/timelydataflow/differential- dataflow/blob/master/differentialdataflow.pdf)

</comment><comment><USER11> "EventReduce can be used with relational databases but not on relational queries that run over multiple tables/collections."

Forgive my ignorance, but that is the whole point of working with a relational database. If cannot use JOINS then this solves only a very limited use case.

<comment><AUTHOR> The biggest usecase for EventReduce is realtime applications. Most technologies for these like Firebase, AWS AppSync etc. work on non-relational data. If you want to use EventReduce with relational queries, you have to make them non-relational before, for example by using materialized views. If you do not want to do that, you should not use this algorithm in its current featureset.

<comment><USER12> My guess would be that if you're at a scale where you're thinking about these sorts of things, you are also at a scale where you're running on multiple machines. How does EventReduce share writes across the cluster?

<comment><AUTHOR> EventReduce is an algorithm and not a database-wrapper. It will not care about your writes or if your database layer is a cluster and so also not affect them.

<comment><USER12> Sorry I wasn't clear in my original post.

I'm thinking about the application layer. If you have an application that writes data to a table, it's typical to run multiple instances of that application to support scale and reliability requirements.

If I send a write to one instance, how does it communicate and synchronise that write with the other application instances?

I ask because this can be a tricky thing to do, especially when consensus is required, as consensus algorithms such as Raft/Paxos require a number of network roundtrips which will introduce latency, and actually account for much of that latency in the database examples given in some cases.

<comment><AUTHOR> EventReduce is a simple algorithm. It does not care or affect how you handle propagation of writes or how you handle your events, transactions or conflicts.

See it as a simple function that can do oldResults+event=newResults like shown in the big image on top of the readme.

<comment><USER12> This means then that if you run multiple application servers, which most do, that you'll need to implement a data distribution mechanism of some sort.

I must admit, with limitations like this I'm struggling to figure out the use cases for this.

Edit: so I guess this is easier using the change subscriptions you mention in other comments. That does mean many subscribers, but hopefully that's minimal load. This has the trade-off that it's now eventually consistent, but I suppose that's not a problem for many high read applications.

I'm still feeling like this could be solved in a simpler way with just simple data structures and a pub sub mechanism. Now I think of it, we do a similar thing with Redis for one service, and a custom Python server/pipeline in another, but we've never felt the need for this sort of thing.

Do you have more details about specific applications/use cases, and why this is better than alternatives?

<comment><AUTHOR> I think the best example for why this is useful is described by david glasser at his talk about the oplog driver used in meteor.js [https://www.youtube.com/watch?v=_dzX_LEbZyI](https://www.youtube.com/watch?v=_dzX_LEbZyI)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> This sounds like (a simpler version of?) Lambda Architecture [1, 2]

[1] [https://en.wikipedia.org/wiki/Lambda_architecture](https://en.wikipedia.org/wiki/Lambda_architecture) [2] [https://www.manning.com/books/big- data](https://www.manning.com/books/big-data)

<comment><USER14> To me this sounds a lot like how CRDT works (just simpler and not rigorously proven).

e.g. making deterministic changes to some data _before_ you've heard back from any sort of central single-source-of-truth.

Difference with CRDT is that the goal is to never actually hear back from a central authority and still have consistency between clients.

Maybe this is a sort of hybrid CRDT/OT.

</comment></comment><comment><USER15> The goal of this is to reduce DB queries? Why not just queue up / batch writes? What benefits does this provide over application side batching of the event.

EvenReduce assumes there are no other systems interacting with the DB state (by using the old state that the current system saw). If there are no other systems, simple batching would work fine.

<comment><AUTHOR> All your assumptions are wrong. Please read the other comments here or at least the readme of the repository. I will happily answer all ongoing questions you have afterwards.

</comment></comment><comment><USER16> I'm going to look at the code, but how does are transactions in the database handled in eventreduce?

Specifically, I'm wondering about isolation levels which determine whether uncommitted changes are queryable before commit/rollback.

</comment><comment><USER17> IMO An open cursor of Change Stream with Aggregation pipeline (for given use- case) in MongoDB is more flexible solution to achieve this functionality.

In addition, it also tracks the history of changes and hence allows the cursor to go back if needed with "resumeToken"

[https://docs.mongodb.com/manual/changeStreams/](https://docs.mongodb.com/manual/changeStreams/)

<comment><AUTHOR> There is a big difference between a change-stream and a realtime query. For example mongodbs cursor-stream is a good way to observe the events that happen to a specific collection or documents that match some criteria. If you want the realtime-results of a query that has sorting, skip limit etc. than it is really hard to warp the changestream into this. In fact this is exactly what EventReduce could do for you.

For more information about the difference I recommend the video "Real-Time Databases Explained: Why Meteor, RethinkDB, Parse & Firebase Don't Scale" [https://www.youtube.com/watch?v=HiQgQ88AdYo&t=1703s](https://www.youtube.com/watch?v=HiQgQ88AdYo&t=1703s)

<comment><USER17> >> There is a big difference between a change-stream and a realtime query. For example mongodbs cursor-stream is a good way to observe the events that happen to a specific collection or documents that match some criteria. If you want the realtime-results of a query that has sorting, skip limit etc. than it is really hard to warp the changestream into this.

Have you actually tried it from mongo shell or any mongodb client driver ?

In the official document link which i shared it is clearly mentioned it supports aggregation pipeline. Any operator which is compatible with aggregation pipeline framework including "$sort" and "$skip" can be used. You can also use JOIN like operator "$lookup" or "$graphLookup".

See this link for info [https://docs.mongodb.com/manual/core/aggregation- pipeline-op...](https://docs.mongodb.com/manual/core/aggregation-pipeline- optimization/)

<comment><AUTHOR> Yes I used it. I actually know it really well. I also did performance comparisons with mongodb and mongodbs change stream and cursors. What I posted here is just an algorithm. You could now compare it to mongodb (a product) and say it is a "more flexible solution" but I do not see the point in directly comparing it simply based on the documentation of both.

<comment><USER17> >> Yes I used it. I actually know it really well. I also did performance comparisons with mongodb and mongodbs change stream and cursors.

Can you share the link for the code and data in Database against which you are querying to prove your claim ?

<comment><AUTHOR> No and I also do not want to "claim" something. Feel free to do your own tests.

</comment></comment></comment></comment></comment></comment><comment><USER18> Very cool! This reminds me of some research I did a few years ago on program consolidation: [https://dl.acm.org/doi/10.1145/2594291.2594305](https://dl.acm.org/doi/10.1145/2594291.2594305)

<comment><AUTHOR> Thanks that looks interesting. I added it to my to-read list.

</comment></comment><comment><USER19> Databases like PostgreSQL don't offer insights into the query plans, does EventReduce parse the SQL statements to determine which tables and rows will be affected by a query and run the appropriate caching or cache invalidation logic?

<comment><USER20> > Databases like PostgreSQL don't offer insights into the query plans

How so?

[https://www.postgresql.org/docs/current/sql- explain.html](https://www.postgresql.org/docs/current/sql-explain.html)

[https://stackoverflow.com/questions/7359702/how-do-i- obtain-...](https://stackoverflow.com/questions/7359702/how-do-i-obtain-a- query-execution-plan-in-sql-server)

[https://mariadb.com/kb/en/analyze- statement/](https://mariadb.com/kb/en/analyze-statement/)

[https://docs.oracle.com/cd/B19306_01/server.102/b14211/ex_pl...](https://docs.oracle.com/cd/B19306_01/server.102/b14211/ex_plan.htm)

<comment><USER19> This is only for queries where you explicitly want the query plan.

However, your query won't return the query results.

And regular PostgreSQL queries don't let you return the query plan they used on top the query results.

</comment></comment></comment><comment><USER21> Many applications solve this by using memory caching (e.g. Redid, memcached, etc.) of performance sensitive datasets. There are a lot of drawbacks to the approach, to the point that I would avoid it altogether.

<comment><AUTHOR> The difference is that with simple caching you have to run full queries again when the cache becomes invalidated. This is often expensive especially on write intensive data usages.

</comment></comment><comment><USER16> Have you compared with an in-memory data store like Redis? Due to the lack of support for joins, that seems like a more natural comparison than A relational database.

</comment><comment><USER22> Interesting, seems similar to Firebase's Firestore NoSQL database. In that you can create a complex query and receive real-time updates on each query.

</comment><comment><USER23> So... a write-through cache?

</comment><comment><USER24> The use case seems better fit for a streaming database.

<comment><AUTHOR> There is a big difference between a database with an event stream and a 'realtime query' that can be created with event reduce.

<comment><USER6> What is that difference?

<comment><AUTHOR> I recommend the video "Real-Time Databases Explained: Why Meteor, RethinkDB, Parse & Firebase Don't Scale" [https://www.youtube.com/watch?v=HiQgQ88AdYo](https://www.youtube.com/watch?v=HiQgQ88AdYo)

<comment><USER6> That does not answer what differentiates your solution. I work on steaming systems. I am aware of the spectrum of online, latency aware data processing. But what I can tell from your solution is that the changes are coming from the database itself. Since, as I understand it, the database is the still the source of all data, I don't see why your solution is any faster than continuous queries in a database.

</comment></comment></comment></comment></comment><comment><USER25> Sooo...Materialized/Indexed Views?

<comment><AUTHOR> No, see the FAQ in the readme:

Materialized views solve a similar problem but in a different way with different trade-offs. When you have many users, all subscribing to different queries, you cannot create that many views because they are all recalculated on each write access to the database. EventReduce however has a better scalability because I does not affect write performance and the calculation is done when the fresh query results are requested not beforehand.

<comment><USER25> Others have pointed this out already: This is wholly dependent on the RDBMS used, and Oracle offers incremental refresh on demand. I have to admit though that I mistakenly thought that MSSQL would as well...

</comment></comment></comment><comment><USER26> Nice</comment>


Ask HN: how can I get user feedback without contacting users directly? - <AUTHOR>

I'm working on a fairly large project building a business intelligence product for healthcare organizations. It's going well except for the fact that we have a minimal amount of user feedback. We haven't been able to contact users directly as that would be stepping on the toes of other divisions and when we get contacts from the "appropriate" sources they are typically useless. This roundabout method has also meant that we get in touch with a customer only about once a month and as I said, they tend to be useless (not our target audience).
Today, I decided to change this. While I can't actually contact users I decided that I would reach out on Quora and Reddit and find users who actually know a thing or two about Census metrics. So far, I received a few responses and I intend to ask different questions on these sites as well, provided I continue to receive helpful feedback.
I'm thinking, however, that there must be other methods to indirectly reach out to customers. Thus, I pose the question to you: how else can I get user feedback without contacting customers directly?
Thanks! <comment><USER2> 1\. Tweet surveys out to hashtags.

2\. Go (literally, physically) to places where your customers hang out. (Starbucks.)

3\. Post in Facebook groups you think your customers would Like.

4\. Post in LinkedIn groups you think professionals who'd buy your tool would participate in.

5\. etc.

There are so many examples out there. Just brew some coffee, Google "how to get customer feedback", and take notes for an hour. You'll be set for at least a week of experiments.

* [http://blog.kissmetrics.com/best-ways-to-get-feedback/](http://blog.kissmetrics.com/best-ways-to-get-feedback/)

* [https://www.helpscout.net/blog/customer-feedback/](https://www.helpscout.net/blog/customer-feedback/)

* [http://www.desk.com/blog/customer-feedback/](http://www.desk.com/blog/customer-feedback/)

* [http://blog.crazyegg.com/2013/09/17/customer-reviews-that-co...](http://blog.crazyegg.com/2013/09/17/customer-reviews-that-convert/)

* [http://insideintercom.io/3-rules-for-customer-feedback/](http://insideintercom.io/3-rules-for-customer-feedback/)</comment>


Ask HN: How much would ongoing part-time help cost us? - <AUTHOR>

Hi,
I run a small non-profit using the internet to make the contemporary art world more transparent and accessible for the public. Thanks in advance for any advice!
I do all the coding for our projects myself, but I'm the director of the organization so it's quite difficult to block out stretches of time when I can focus. Right now we're working in PHP but the plan is to gradually move our projects into Ruby on Rails.
Therefor, I want to work towards hiring a part-time developer who can help me every week for something like 10 or 15 hours. Thus my question: I don't know how much I should budget for that goal.
I'd ideally like it to be a permanent position, rather than something freelance (although it might make sense to have a trial period on a freelance basis). I'd be willing to hire someone remotely from anywhere in the US, or hire someone in Chicago where we are based. Would remote workers command different salaries than local ones? I'm hoping to find someone reasonably connected into programming communities and current standards, someone legitimately professional. I'm entirely self-taught, so I know my code is probably wonky and in places overly complicated. Part of what I want this person to do is to clean things up and modernize them, so it has to be a programmer of decent quality (although ultimately the projects are fairly straightforward).
So: what should I expect to pay (total) for this work? Also, any resources about the best way to find this person and tell that they're the right candidate?
Thanks very much for any help!!
Forrest <comment><USER2> Hey Forrest, I'm a PHP and Ruby developer also located in Chicago. I'd be happy to discuss your projects and see if this is something I can help you out with. [http://www.daniel-yang.com](http://www.daniel-yang.com)

Daniel</comment>


How Not to Be a Platform: Twitter's Firehose Mistake - <AUTHOR> http://www.3scale.net/2015/04/loosing-innovation-twitters-firehose-mistake/

<comment><USER2> Just yesterday I read in the Vancouver, Washington paper "The Columbian" of a lawsuit that a fruit distributor just filed against a railroad company. The fruit vendor had been shipping apples and pears to the midwest; this turned out to be hugely popular with the result that it was offered a $30M acquisition.

However the railroad is no longer willing to ship the apples as it is reallocating its resources to transport crude oil instead.

I don't doubt that in the short term the oil is more profitable to the oil company, but I expect that even without the lawsuit, they will lose in the end. Those whose livelihoods depend on shipping their product will look for other means of transport.

<comment><AUTHOR> Yes - that's a great example, if you're not inviting people to try things on your platform you loose in the long run. It might be a genuine resource issue - but seems unlikely that there's no arrangement that would work!</comment></comment>


Dancing on the Lip of the Volcano: Chosen Ciphertext Attacks on iMessage [pdf] - <AUTHOR> https://isi.jhu.edu/~mgreen/imessage.pdf <comment><USER2> Blog post by one of the authors about the attack: [http://blog.cryptographyengineering.com/2016/03/attack-of- we...](http://blog.cryptographyengineering.com/2016/03/attack-of-week-apple- imessage.html)

Also the title seems to be a reference to Last Week Tonight's Apple ad: [https://youtu.be/zsjZ2r9Ygzw?t=950](https://youtu.be/zsjZ2r9Ygzw?t=950)</comment>


Driverless cars promise to reduce accidents, revolutionise transport - <AUTHOR> http://www.economist.com/node/21560989 <comment><USER2> With driverless cars, the largest expense of taxis - the driver - disappears.

The driver of a taxi needs to make enough in a day to cover the periods when there are no fares, or travel from a low fare-density area back to the high fare-density areas (and in some regions with ridiculously constrained supply of taxis via "badges" or other such anti-competitive pro-monopoly legislation, to pay the ridiculous fee to just operate a cab).

With the drivers removed, you now have a fleet of taxis that can run 24 hours a day (minus maintenance etc.), cost zero to just sit and wait for a fare, and can be managed and coordinated easily to migrate across the changing fare- density regions throughout the day.

If the price and convenience goes down enough, various groups of people stop needing cars. They just use the "get me a cab" app on their smartphone (or just use the regular telephone) to get a cab when they need it. If this creates a positive feedback loop of cheaper & more convenient -> more people using it -> more taxis deploted -> cheaper & more convenient etc., then in some high-population areas, owning a car will become an unnecessary extravagance.

Operated automatically gives scope for further savings; heading from point A to point C via B, and someone in B is also going to C? You'll get offered a "share this ride for this discount" option.

All this leads, hopefully, to fewer cars needed to provide the same number of journeys, at lower cost. So, how do I go about shorting the car manufacturers? :p

<comment><USER3> I'm fully convinced self-driving cars will be sold commercially within the next 10 years. However, it is going to be a _very_ long time until they are allowed on the road sans human (even if they are self-driven 99% of the time, I'm positive legislation will require a human behind the wheel at all times and car makers will have to attempt to enforce this technically), which puts a serious dent in your taxi plan.

You're right long term, but self-driving cars that are allowed to drive without any human behind the wheel is more like a 50 years out thing, IMO. Part of this is just cultural and political, and part of it is due to real technical challenges (there are still going to be extraordinary driving situations in which the obvious thing to do would be clear to any reasonable human but not an autonomous car without serious general purpose AI).

<comment><USER2> "there are still going to be extraordinary driving situations in which the obvious thing to do would be clear to any reasonable human but not an autonomous car without serious general purpose AI"

I believe that any such situation that could not be dealt with by simply coming to a safe halt is currently very badly handled by humans. I believe that they could be better handled with the _current_ state of the art, let alone advances we see over the next few decades.

I'm not arguing that they could be perfectly handled; just that the machines can do better than the average meat-bag.

<comment><USER3> Even simply coming to a safe halt is problematic. What if some troll traps a self-driving car with a few empty cardboard boxes?

<comment><USER4> It stays still until someone removes them. If it's a cab it's more than likely to simply call for help.

<comment><USER3> And while it is still, it is now an obstacle for other empty self driving cars. Soon the troll has blocked an entire intersection or freeway using a combination of empty boxes and other trapped self-driving cars.

You underestimate the effort a good troll would be willing to put into this.

<comment><USER5> There are lots of simple things that one could do to a roadway to impede or endanger traffic. Consider, for example, the danger of leaving something sharp or slick on a tight turn where people often speed.

I've thought about this for a few years, and as near as I can tell it's either much harder than it seems, or there are fewer vandals than I'd have expected.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I think the biggest problem with adoption is going to be integrating them into traffic. A car that obeys the speed limits and follows at a safe distance is going to have issues driving in someplace like Los Angeles. It will be interesting to see how that plays out. For instance, what happens when other more agressive drivers learn that they can just cut off driverless cars and the software will just happily slow down to let them pass? It's a really interesting problem set.

<comment><USER7> I guess, but the saving grace is that the passengers of such cars are less likely to care, unless they're in some special rush.

I mean, if I had one, I would be reading or working or talking to someone, and might not even notice a few extra minutes transit time. It'd be like riding public transit minus the inconveniences (noise, strangers, waiting).

<comment><USER8> I stopped caring much about extra minutes on the road when cruise control became standard equipment - years ago. When I drive a car without cruise I tend to be competitive and aggressive, but with cruise I set it and chill out. People may pass but I no longer care.

Bring on the Google cars and I'll detach completely.

</comment></comment></comment><comment><USER9> This might become a great transition technology. But leaves many problems unsolved: 1\. All the issues surrounding fuel-burning engines OR all the issues surrounding huge and expensive batteries. 2\. An inherent lack of energy efficiency. The payload/car-weight ratio is typically 1/10 or worse. 3\. Cars are very expensive, they take a lot of space and require roads that take even more space. 4\. Cars are not safe.

Driverless cars really only solve (4) and have small advantages in terms of fuel efficiency and congestion. A network of Driverless taxis should be much cheaper than owning a car, since these cars will be utilized heavily throughout the day. An even better approach would be an automatically dispatched shared-taxi system that would group passengers that want to go to close destinations.

I wonder why there isn't more effort directed towards Personal-Rapid-Transport system. i.e.small electric carts on dedicated lanes (or lines, or rails), with low weight and no battery. Like a packet-switched version of the train system. Such systems can be highly automatic, very energy-efficient and provide convenient rides relatively cheaply. It looks like we have had all the technology required to do it for at least 30 years. It seems that the only thing stopping this type of technology from being developed is that it requires someone with a lot of capital and guts who's not afraid of dealing with a regulatory nightmare. Unfortunately there aren't that many Elon Musks out there.

Here are some specialized PRT systems in use: [http://en.wikipedia.org/wiki/Personal_rapid_transit#Existing...](http://en.wikipedia.org/wiki/Personal_rapid_transit#Existing_and_planned_networks)

</comment><comment><USER10> The article outlines some (current) limitations in the car's judgement when evaluating the dangerosity of an object ahead. If/when this becomes mainstream, how long until pranksters and terrorists find ways to leverage limitations and cause accidents?

<comment><USER11> Is causing accidents in self-driving cars going to be any more a target than causing accidents in human-driven cars? Seems you could already wreak a lot of havoc with rush-hour traffic if you really wanted to. Blinding/distracting drivers, obstacles, maybe little bombs?

<comment><USER12> Well, since self-driving cars are new and don't have the protection of an earlier history of precedents, then yes, they will be much bigger legal targets. The whole overblown spontaneous acceleration incidents would be a good pointer.

</comment></comment></comment><comment><USER13> I'd say no more than 50 years before driving by hand becomes illegal in most places, especially large cities. The benefits will just become too obvious.

</comment><comment><USER14> The likelihood of the Teamster's union allowing (i.e., not obstructing) driverless cargo hauling to succeed in the US would be close to zero.

<comment><USER15> I think they would be beaten by the tactic that killed Fleet Street (where newsprinters got rid of all their personnel by moving their business, but leaving outdated personnel such as typesetters behind. See [http://www.mediauk.com/article/32718/the-fleet-street- revolu...](http://www.mediauk.com/article/32718/the-fleet-street-revolution)): secretly buy your driverless trucks, and replace all your drivers overnight. That way, you won't have employees that can strike against the change.

<comment><USER16> I wouldn't be surprised if the trucking companies are able to offer them a competitive wage for acting as freight minders.

They might even end up with similar pay for less total hours away from home.

<comment><USER15> What freight would there be to mind that isn't minded already today? The only thing I can think of is the freight on the driverless cars, but I do not see how that would lead to "less total hours away from home"

<comment><USER16> A trucker is only allowed to drive a certain number of hours a day, mostly because they are supposed to rest. If they aren't driving, they can sleep while the truck is moving.

<comment><USER15> => trucks will make more hours a day driving

=> we need need fewer trucks

=> we need fewer drivers minding those fewer trucks

I fail to see what would make truck owners offer 'competitive salaries' given that there will likely be X>1 truck drivers competing for each 'truck minder' job, and that the job requires fewer qualifications (drivers do the minding today, and future minders will not need a drover's license)

</comment></comment></comment></comment></comment></comment><comment><USER17> I love the idea of driverless cars; it is nevertheless important to note that hacking might replace drunk driving as the #1 cause of deaths on the road.

</comment><comment><USER18> I wonder how those cars will perform in places like Hanoi or Nanchang. <http://www.youtube.com/watch?v=oetF3UTIwbc> <http://www.youtube.com/watch?v=7aodbmS_43M>

<comment><USER19> Hopefully there can be more public transport. The problem at the moment with most public transport is that it requires a human driver. That makes it relatively expensive for the transport of one or two people, or even 8 people. Some places have a partial solution (with driver) - <http://en.wikipedia.org/wiki/Share_taxi>

The main reason for owning transport is because it guarantees availability when you need it, especially where you are and where you want to go. You pay quite a bit extra for that, and it does get inconvenient (having to park away from where you want to be, dealing with traffic, insurance, maintenance etc).

Mobile infrastructure is very good in places like you mention (good coverage, low price) so this is solvable.

</comment></comment><comment><USER20> They can also cut our balls once and for all and put us out of our misery.

So much is spent pursuing "safety" and squeezing that extra minute of "productivity" that everyone is forgetting to live their lives as human beings.

<comment><USER21> I don't see the connection between driving and "living my life as a human being", or the connection between riding in an automated vehicle and "having my balls cut".

Human identity has nothing to do with driving. I can't wait until I don't have to do it anymore.

<comment><USER20> By not knowing how to drive something, you are losing an important ability. Your reach will be 3 or 4 miles at most, and over time this passive "I just want to [_____], do it for me" mentality sets in.

And for what? just not to drive? to have more 20min available to check your Twitter stream?

Remember, you are choosing to be ignorant in a very important aspect of modern live, and i guess only those who at some point were deprived of it realize their importance.

<comment><USER9> Seriously? Most of the world's population doesn't drive a car. It's not good for very long distances and not good for very dense urban areas where traffic is slow and parking is lacking. It can't drive in rural areas (unless you have a sturdy jeep) and it costs a lot of money. Also, it has a non-negligible probability to kill you along the way.

The modern car is not some one-true solution to transportation, it's great success in the US has a lot to do with the patterns of suburban sprawl and to destruction of the rail system by the car manufacturers.

I suspect the car is going out of fashion as people move more and more into dense cities.

<comment><USER20> Most of the world's population doesn't drive a car because they can't afford one.

"I suspect the car is going out of fashion as people move more and more into dense cities."

Really? millions and millions of chinese people moved to massive urban areas and the first thing they buy when they earn some money is a car or a motorcycle, making China the biggest auto market in the world around 2010/11. Pretty much the same pattern with the "BRIC"s

Look, everywhere outside the same old cosmopolitan places where the reality distortion field is too strong, people will own a car and they will make roads and bridges so they can happily drive them.</comment></comment></comment></comment></comment>


Plug Your iPhone into Your Vehicle's Onboard Diagnostic Computer  - <AUTHOR> http://www.mlive.com/news/flint/index.ssf/2010/05/kettering_alumni_develop_new_a.html <comment><USER2> This is nothing new, but they appear to have packaged the offering to an audience not served by their competitors, though the quote about it being appealling to car geeks is suspect to me. Assuming they are having successful sales, this could be a good example of taking a well-defined product, targetting a completely different audience, and cutting out/focusing on features that will resonate with this audience.

For reference, take a look at the leading OBD-II iPhone app Rev (<http://www.devtoaster.com/products/rev/>). I've actually owned and enjoyed this app for the past 2 years. It pretty much does everything. Anything you can do through the OBD-II port, you can do, and customize completely to how you need it. It also does the CEL lights, which is pretty standard. But selling to auto enthusiasts, this app focuses on the performance features.

No car geek would ever recommend GoPoint over Rev, but for someone that's interested in environmental impact and fuel economy, GoPoint's simplicity and price clearly wins.

</comment><comment><USER3> This is pretty cool. Too bad it's $100 for the cable. If it was $45, I think I'd go for it.

</comment><comment><USER4> Reminds me of the scene in Independence Day where they plug their laptop into the alien mothership.</comment>


The 265 members of Congress who sold you out to ISPs - <AUTHOR> http://www.theverge.com/2017/3/29/15100620/congress-fcc-isp-web-browsing-privacy-fire-sale <comment><USER2> Anytime something like this comes up where a complicated issue is universally praised or derided I'm reminded of the Zen parable[0] of the possibly fortunate farmer

[0] [http://www.katinkahesselink.net/tibet/zen.html](http://www.katinkahesselink.net/tibet/zen.html) first one on that page.

<comment><USER3> Sometimes things are pretty clear cut.

"One day farmer's young daughter was diagnosed with aggressive and terminal cancer.The neighbors again came to offer their sympathy."

What would the farmer say then?

<comment><USER4> "Maybe," replied the old man. The following day, a group of bandits came to the town and razed it, torturing the village folk. The farmer's young daughter had already passed in the night, and didn't experience the horror.

The neighbors were dead at this point and couldn't be reached for comment.

</comment></comment></comment><comment><USER5> There is already groups and small organisations that are gathering money to buy up these congressmens' browsing histories to publish them online. If this idea actually works, the karma and schadenfreude will be awesome to delight in.

<comment><USER6> That doesn't seem to be possible: [https://news.ycombinator.com/item?id=13992953](https://news.ycombinator.com/item?id=13992953)</comment></comment>


Ask HN: What do when your company has bad health insurance options? - <AUTHOR> I'm in the middle of completing my open enrollment forms for this year and I gotta say - my health insurance options are kind of crap. And it was the same at the previous startup I worked at it.
In fact, the only time I had good health insurance options was when I was at Caterpillar (obviously much larger / corporate).
What options do I have, living & working in the US, to improve my situation -- short of changing employers?
I mean, can you even compare startup insurance plans without asking HR during an interview/at the offer stage?
FYI - my insurance options are determined via a co-employer (common for startups with under 50 employees) <comment><USER2> This is a stinky situation. Even with the healthcare exchanges, it's usually cheaper and much less of a hassle to get your health insurance through your employer.

It seems to me that this is a hard thing to compare before the interview/offer stage. However, it's all part of compensation as far as I'm concerned. In other words, it usually makes sense to take a salary cut for better health insurance or to ask for more salary (or equity, etc.) when health insurance options are worse, though how much of a cut/raise is going to vary based on a person's needs (i.e. healthy people are rarely visit the doctor aren't going to value good health insurance as much).

The other option that might be possible in a small company is to ask for extra cash in exchange for not going on the health insurance plan. For example, if your company pays $5000/year towards your health insurance, they might be willing to cut a deal with you where they pay you $4000 if you _don't_ take the insurance (under Obamacare, they have to _offer_ a group policy, but it seems like doing this is fair game [1] as long as you have the option to be on the group policy). In practice, this option really only seems practical if you have a spouse or someone else who can put you on their health insurance plan, since individual plans are usually much pricier than negotiated group plans offered by employers.

[1] [http://obamacarefacts.com/questions/can-pay-employee-not- tak...](http://obamacarefacts.com/questions/can-pay-employee-not-taking- health-insurance/)

<comment><AUTHOR> Yeah, spouse plans are great, _if_ they are significantly better/cheaper. I'm a single dude who doesn't have a ton of health problems, but I see middle age on the horizon and I know I'm going to start going to the doctor more.

FSA is a good option for for reducing total costs -- if you're ok preallocating / can predict your health care costs for a year. Which I don't think most people can.

Perhaps there's an opportunity for someone to improve transparency here w/r/t job hunting. I'm not sure I would have changed my decision about where I was going to work -- but it would have been nice to know what my options were.

<comment><USER3> FSA is also tax advantaged, so you can pay out of pocket and invest for retirement or whatever, when you are more likely to have health costs.

</comment></comment></comment><comment><USER4> I used to work in insurance and I still sometimes write insurance related stuff as a freelance writer.

Obamacare allows children to be covered by their parents until age 26, even if they do not live with the parents and even if they are married. This may not apply to your situation, but it may be helpful to some of the younger people on HN.

A little known "loophole" for Obamacare that is actually very effective is to go with Direct Primary Care. I have blogged about that;

[http://micheleincalifornia.blogspot.com/2015/12/how-to- fix-a...](http://micheleincalifornia.blogspot.com/2015/12/how-to-fix-americas- financial.html)

Best.

</comment><comment><USER5> "Long gone are the days when you thought your insurance—even if you were paying higher premiums—was going to cover you very well," > [http://www.wsj.com/articles/employers-shift-higher-health- ca...](http://www.wsj.com/articles/employers-shift-higher-health-care-costs- to-workers-1476194147)</comment>


Permission Follow-Up - <AUTHOR> http://blog.asmartbear.com/permission-follow-up.html

<comment><USER2> The article gets my vote for simply sharing intense aversion to phone conversations. I'm glad it's not just me.

<comment><USER3> That's the one thing I took away from the article. I'm obviously not the target audience that made the telephone a killer app. If it was up to me, we'd probably have gone from telegraph to SMS/email, skipping the phone. There's just something about a disembodied voice that freaks me out a little.

</comment></comment><comment><USER4> "I captured a couple of next-actions for me."

...</comment>


How to remove software cracks and keygens from file hosting sites - <AUTHOR> http://successfulsoftware.net/2011/01/25/how-to-remove-software-cracks-and-keygens-from-file-hosting-sites/ <comment><USER2> "Billions of dollars are lost every year from illegal downloads of music, movies and software"

The industry has yet to present proof to this statement other than: estimate the number of downloads and do a dumb multiplication with retail prices.

<comment><USER3> I also can't help thinking that piracy helps the incumbent by protecting the market at the bottom end. I'm pretty sure low cost or open source alternatives to, say, Photoshop would have a lot more traction if the option to pirate it wasn't there.

<comment><USER4> Yup. If I couldn't pirate Photoshop, I'd be pretty handy with GIMP by now.

</comment></comment></comment><comment><USER5> Didn't try out the software mentioned in the post myself, but at first glance it seems the guest blogger has ironically created a desktop search tool for warez

<comment><USER6> That's the free part too, so anyone can use it.

Although I suppose it won't be long until a cracked version of CrackTracker appears on those file hosting websites.

Another interesting concept would be to package this in a DLL and include it in the software you want it to protect. When someone runs a cracked copy, it will go see if it can find any relevant links in the browser's history and then auto-report them.

<comment><USER7> No need to crack the software if you only use it as a keygen search tool.

But man.. Reporting browser history to an unrelated software vendor.. Do you by any chance work at SONY?

</comment></comment></comment><comment><USER4> > Imagine if this 70% didn't exist or it was converted to regular paying > customers!

Two _hugely_ different scenarios.

In the first one, your software is suddenly only 30% as popular as it is now. Imagine if there was no way to run Photoshop except to pay the $700 for a version. I wonder how popular and indispensible it would be to companies that pay for it, then.

</comment><comment><USER8> I couldn't play my legally purchased copy of KOTOR II thanks to the DRM without cracking it.

I'd argue that cracks, even if not KeyGens, have legal applications. Especially now when some companies include DRM which might cripple your game should they go out of business and their servers go down.

Even though I can see why this is a flawed argument, I feel the need to make it anyway: Cracks aren't illegal some countries, either.

[edit: replaced an 'or' with an 'and'. This mistake happens when I code too, sadly!)

</comment><comment><USER9> This is potentially useful information, but whilst reading it I was yet again alarmed by exactly how easy the DMCA makes it to send threatening copyright infringement notices.

<comment><USER10> Yeah, and he is dangerously close to suggesting that you can DMCA keygens or cracks -- if you didn't write it, you can't DMCA it.

Sure, if someone's redistributing your _program_ you can, but if they just wrote a keygen, you don't have copyright in that, and filing a DMCA notice in that instance would be illegal.

</comment></comment><comment><USER11> "Thankfully for the ISV, torrent use is on the decline. People prefer direct downloads of the full package instead of slower peer-to-peer downloads."

Wishful thinking unfortunately.

</comment><comment><USER12> The CrackTracker tool mentioned at the end looks interesting. I've not seen an attempt to tackle the huge number of shady warez sites before.

What would be _really_ interesting to see would be if someone uses this tool to remove cracks for their software can tell us if there is an appreciable increase in the number of sales afterwards. That way we can get some real hard evidence for the real impact that software piracy has on desktop software.

<comment><USER13> Am I crazy, or could the pirates also use his tracker tool to find cracks in the first place?

</comment></comment><comment><USER14> > Imagine if this 70% didn't exist or it was converted to regular paying > customers!

Imagine whatever you want, but most of the people are probably using it _because_ it's free. This is why the numbers touted by the anti-piracy industries are so ridiculous.

</comment><comment><USER15> Whatever you do, it doesn't matter. A boatload of companies have tried to fiercely combat piracy - not a single success. So why even bother and waste money in various methods, it only delays (in a matter of days ?) the crack.</comment>


You Don't Need Redux, MobX, RxJS, Cerebral - <AUTHOR> https://medium.com/@foxdonut00/you-dont-need-redux-mobx-rxjs-cerebral-6a735b150a02 <comment><USER2> This is about a code pattern for implementing state. Works great with any vdom library like Mithril, Inferno, or React.</comment>


Ask HN: Are you interested in a "recent weather" app? - <AUTHOR>

Hello everyone. I'm the pressureNET developer and I'm frustrated not just at the lack of good forecasts but also at the lack of easy-to-access recent weather.
I have made a similar post to r/android asking if they are interested as well, since this will start with an Android app before it goes anywhere else. See http://www.reddit.com/r/Android/comments/15l0fw/is_randroid_interested_in_a_recent_weather_app/ if you're interested.
When travelling to a different city it's nice to know what the weather will be like. But for me, it's much, much more important to find out what the weather was like recently. For example, I'm in Vancouver right now but I'll be in Toronto and Montreal in a few days. Now, I happen to know that there was an epic snowstorm there because I'm a weather nut and I don't live under a rock. But what if I didn't know? The forecast is sunny and cold for the next little while. I've also been thinking about this since we just put our pressureNET data archive online with our visualization tool at http://pndv.cumulonimbus.ca. It struck me that...nobody else seems to be doing that!
So I'm starting to build this Android app to show you the recent weather for whatever city you'd like. I'll probably add widgets. And pretty graphics of course.
Does this interest you? I could probably have a Beta ready within a week, and of course the source code will be open and published on GitHub.
I have an additional motivation for this. pressureNET is now costing more than $100 / month and I'm looking for a way to get Cumulonimbus to be profitable. Our one app for sale is T minus, but it has some bugs and doesn't provide as much utility as I was hoping, so it's not bringing in much cash. It will be possible for us to directly monetize pressureNET in the future, but that's likely a long ways off.
There doesn't seem to be anyone building a "recent weather" app (if you know of one, please tell me)! So I figure if we do a good job, we may have some small financial success with a freemium model for Recent Weather.
What do you think, Hacker News? Is this a viable idea with any demand for it? <comment><USER2> I would perhaps also look into longer term comparisons. This day 1 year ago, minimum and maximum recorded temperature for that week/month/day etc.

<comment><AUTHOR> Excellent. Will do, thanks. :)</comment></comment>