Developing for the iPhone: The Fear - <AUTHOR> http://daringfireball.net/2008/10/the_fear

<comment><USER2> _The Phone and iPod apps are special, because at a fundamental level they perform tasks that cannot be duplicated in a web app. But there's nothing any more special about Mail than there is about, say, Calendar._

He's wrong. The Mail app would be near and dear to Jobs because he wants to take over the market of Blackberry and similar devices also. Keeping a web browser open in order to receive mail pushed real-time from an Exchange server would be extremely awkward.

</comment><comment><USER3> _The problem is that the apps that are the most interesting, the most important, are the ones that take the most work to create. And the apps that take the most work to create are the ones that are most likely not even to be made in this environment, because the risk is greater._

I find this argument appealing because if Apple took it seriously, it would lead to a more open development process. Unfortunately, I'm not sure the logic is sound -- innovative or important applications aren't necessarily big, so the development cost of one needn't be much more than any other application. If innovative applications are more the product of chance and insight than long development cycles, Apple only needs to attract many developers, not big developers.

However, if you assume the logic is correct, then Android may end up _helping_ the iPhone: If a developer has an idea for the iPhone that requires significant investment, they can develop it first for Android for some payoff, then (with development costs largely sunk) they can port to the iPhone. The net result is that the iPhone would get a large, innovative application that it wouldn't have gotten had Android not existed.

<comment><USER4> I have a feeling that porting from Java/Android SDK to ObjC/Cocoa/iPhone SDK is probably still a lot of extra effort and presents many hazards of its own...

<comment><USER3> Granted, but I'd guess the major cost of an application is coming up with the idea and working out the functionality and any user interface issues. With that cost sunk, porting -- or even rewriting from scratch -- could well be worth it, especially if you can already gauge the popularity on one platform.

Along those lines, I think we'll quickly see the most popular iPhone applications either ported to Android by their original authors or cloned outright by others.

</comment></comment></comment><comment><USER5> It's a long article. Quick summary: NDA is gone, but for the App Store you still can't trust Apple in the sense that you need to trust a ladder before you'd climb it. It's not unreasonable to insist that Apple write down some rules and stick to them regarding accepting applications for the App Store.

<comment><USER6> Some rules would be nice yeah, in the same sense that the laws of nature make me comfortable with climbing said ladder.

<comment><USER4> Just because the concepts are sound, how do you know the ladder was well- constructed, doesn't have any damage that might weaken its structure, etc? You need to trust the company that built the ladder to make quality ladders, and you need to trust the individual ladder to not have any major faults.</comment></comment></comment>


Smoking Meat with the Internet of Things - <AUTHOR> http://www.universalmind.com/smoking-meat-with-the-internet-of-things/ <comment><USER2> Hmm, given that the ESP8266 is many times more powerful than the Arduino, why use the Arduino at all? Why not just directly program the ESP8266 to do all the sensing and sending of data?

<comment><USER3> That would definitely be an option. There are lots of ways this could be accomplished and what I wrote up by no means the most efficient. It was a learning experience for me and I wanted to document how the whole thing came together. I recently got a YUN and that could send data direct to parse with SSL so there wouldn't be any need for the proxy server in the middle. Thanks for taking a look!

<comment><USER2> Ah, yes, if you're using Parse, that would be a good option. You can also use MQTT with SSL straight from the ESP8266 by using the NodeMCU firmware from here: [http://frightanic.com/nodemcu-custom- build/](http://frightanic.com/nodemcu-custom-build/)

<comment><USER3> Hey Stavros, thanks for the link! That tool looks awesome to customize your own builds.

<comment><USER2> Yes! I can't wait for my ESP to arrive so I can try all this out.

</comment></comment></comment></comment></comment><comment><USER4> Temperature probes are a cool but solved problem, gotta add some motorized control to the air inlets on your Weber to control temps :)

<comment><USER5> My team at a recent Startup Weekend did this.

RasPI with a PID loop turning a fan on (increase heat)/off (decrease heat). The RasPI fed this into a backend server via websocket. We through a front end on to graph the temp, humidity etc. We could even set the temp and turn the fans on/off via the site.</comment></comment>


Ask Yc: What is a Good Book to Read Before Learning a Programming Language? - <AUTHOR>

I have dabbled in server side Programming Languages here and there, but I would now like to thoroughly learn a new language.  Before I do that,what would be a good book to read? <comment><USER2> You need to tell us which language you want to learn. Otherwise it's like saying "I want to learn sports" -- amateur curling and professional football are very different sports. Windows programmers, Mac/iPhone programmers, server-side programmers, Javascript programmers, enterprise Java programmers, and Linux kernel hackers need to focus on different things.

In the absence of details, all we can recommend is basic mental conditioning for programmers. A standard piece of advice is "SICP". Another is "K&R". Eric Raymond's essay on "How to Become a Hacker" is a little dated and a _little_ opinionated, but worth reading. "Learn emacs" (or, to be fair to vi and Textmate, "learn a decent text editor") is a piece of advice that I'm glad I followed.

You cannot go wrong by learning the basics of databases and web application architecture. The architecture of web apps is more important than the choice of server-side language. If it weren't so dated I'd recommend _Philip and Alex's Guide to Web Publishing_. For a more up-to-date version of that, you might try the required texts for this MIT course: <http://philip.greenspun.com/teaching/one-term-web>

<comment><AUTHOR> I would like to learn Erlang, but am looking for a general Computer Science/Programming book. A book that will explain some of the fundamentals behind computer programming no matter what the language.

</comment></comment><comment><USER3> It's essential that you complete Isaac Asimov's I, Robot for a thorough understanding of how badly things can get out of control.

<comment><USER4> I think maybe you've just seen the movie, and been misled into thinking you know what Asimov's robot stories were about. _I, Robot_ the book, has no bad consequences (likewise almost all of the other Robot novels...excepting the bit with the mind-reading robot and the 0th law leading to interesting results for planet earth...but it was _still_ all for the good of mankind). The robots were all basically the good guys.

<comment><USER3> oh yeah I forgot about the part where there was absolutely no conflict in any of the novels

<comment><USER4> I'm not sure I understand how the existence of conflict has anything to do with my statement. You said, "how badly things can get out of control", and my recollection of the robot novels (and _I, Robot_ , in particular) pretty much universally includes a few _humans_ getting out of control and robots helping other humans put things right again. I don't see how your comment (either of them, actually) makes sense in that context.

</comment></comment></comment></comment><comment><USER5> Neil Stephenson's Cryptonomicon.

<comment><USER6> A great book for a good read - thoroughly recommended on principal but I think this specific request calls for something a bit more fundamental to the task of acquiring that programming language.

<comment><USER5> Well, if the 'specific request' had been in any way shape or form 'specific', maybe. It wasn't, so I recommended something that's a great hacker book in any case:-)

</comment></comment></comment><comment><USER7> Try " _The Practice of Programming_ " by Kernighan & Pike (you can download it here: [http://truly- free.org/e/n/Kernighan,%20B.W.%20&%20Pike,%...](http://truly- free.org/e/n/Kernighan,%20B.W.%20&%20Pike,%20Rob%20-%20The%20Practice%20of%20Programming.zip)).

</comment><comment><USER8> Read <http://norvig.com/21-days.html> .

</comment><comment><USER6> spend $12 at Amazon on a copy of Charles Petzold's book, Code: The Hidden Language of Computer Hardware and Software.

It will all begin to make sense as you will have a thorough understanding of what is going on at the lowest level. You will never regret acquiring that knowledge.

</comment><comment><USER9> Design Patterns</comment>


TiVo unveils 24TB DVR - <AUTHOR> http://investor.tivo.com/phoenix.zhtml?c=106292&p=irol-newsArticle&ID=1964575 <comment><USER2> So they're basically moving from timeshifting to permanent storage. It's not just about keeping the last 5 episodes of the Simpsons but all of them, forever. Why buy the DVD set?

</comment><comment><USER3> Raid5, so six 6TB drives?

You don't think they are measuring un-raided capacity with six 4TB drives?

</comment><comment><USER4> very useful... only for someone who wants to start his/her own Aereo.</comment>


Machine Learning Music Composed by Fragments of 100s of Terabytes of Recordings - <AUTHOR> https://nwn.blogs.com/nwn/2019/01/wdch-dreams-robert-thomas-la-phil.html <comment><USER2> Computer-generated art will have to face very soon the problem that the sheer novelty that a computer can generate (at least apparently) meaningful content like photos, etc. will run out, and people will start expecting that the results are actually good.

<comment><USER3> As someone who has played roguelikes for nearly 2 decades now, I'm not holding my breath. For a niche genre with a small developer community, roguelikes punch well above their weight in novelty, complexity, and replay value.

Computer generated art isn't really about computers, it's about what the human artist can achieve by tuning the parameters. Like any other medium, there is an enormous range to operate within. At the same time, there are suitable constraints which tend to enhance (rather than limit) creativity.

<comment><USER2> > Computer generated art isn't really about computers, it's about what the > human artist can achieve by tuning the parameters

That's not "computer generated art", that's "art generated with computers".

I understand that there's a lot of nontrivial tuning to current generative NN models (I spent the downtime between christmas and new years learning to train image-making GANs in several simultaneous DigitalOcean droplets; the major issue for me as a non-expert was balancing the expressive power of networks and the complexity of training them in a short span of time). But the novelty in the results of a GAN isn't "whoa, a computer enabled me to make this surreal photo-like bitmap", but "whoa the computer learned how to draw photorealistic noses".

This is partly due to an anthropomorphization that we indulge even for relatively dumb programs, but also due to the fact that when we mess with hyperparameters we're not learning a correspondence with (aesthetic) results, we're at best learning a correspondence with network performance, training time, discriminator vs. generator learning curves, etc.

This will be a poor analogy because I'm typing in a hurry, but a painter of fine representational art learns a precise relation between brush movement (something that he does with muscles) and brush stroke (a result); but the aesthetic result is the brush stroke itself. He eventually learns to think in brush strokes; he exists in very close relation to the canvas while making brush movements.

What we're looking at with computer-generated art is a situation where (1) what is sought is a surprise, not a system-and-method for obtaining finely- chosen aesthetic results from expertly-wielded tools and (2) we seek it by becoming masters at the thing that produces the surprise -- we learn to think in terms of online optimization first and then with the higher order abstractions of dense and convolutional layers and training regimens. We're not making paintings, we're making brushes.

And in the beginning it's awesome that paintings are even possible. But if they fail to continue to attract and capture attention, well, brush-making becomes a money-loser.

<comment><USER3> _That 's not "computer generated art", that's "art generated with computers"._

I don't think such a distinction exists.

 _whoa the computer learned how to draw photorealistic noses_

It didn't, though. You just fed it a whole bunch of photos of people's noses and it learned how to combine them in a way that was pleasing to you, after you spent a long time tuning the parameters and adjusting the algorithm. I fail to see how this is any different from tuning a roguelike's dungeon generating algorithm to produce natural caves and other structures that are pleasing to you. Heck, lots of roguelikes already include datasets of pre-made dungeon pieces (sometimes called vaults) that they can snap together like Lego. This is exactly analogous to brushes in your claim.

The only real difference between a roguelike's dungeon generator and a neural network is that the developer has a better understanding of what's going on so that it doesn't always seem like magic. Having said that, roguelikes still tend to surprise their developers every day.

</comment></comment></comment></comment><comment><USER4> Regarding some machine Learning concept, Do you also think some websites which helps in finding chords can have a problem with their cloud storage as well. Like I am amateur to ask this question but just want to know if machine learning is being used in some websites like for ex. say ( [https://www.guitaa.com/](https://www.guitaa.com/)), Then will it affect the efficiency or responsiveness of the website as well or not?

Because if the website is providing the whole youtube library, then it must be needed a vast amount of storage on the cloud as well. This question is maybe a little out of relation with the main one, But still would like to know the answer!

</comment><comment><USER5> Reminds me of some of the 60's-70's era electro-accoustic experimenting, with the exception of some of the more modern synth sounds that crop up here and there. Actually, during the first couple of minutes Berio ([https://en.wikipedia.org/wiki/Luciano_Berio](https://en.wikipedia.org/wiki/Luciano_Berio)) came to mind, though I'm not exactly sure how fair that reference really is.

</comment><comment><USER6> Rather abrasive music in my opinion, although I suppose "abrasive music" is still music, so maybe this is qualified praise?

How does "100s of Terabytes" compare to the amount of music the average human composer/musician listens to over the course of their career?

<comment><USER7> Very roughly, a 3 minute song is ~5MB, and so 100 TB ~ 60M minutes ~ 114 years; needless to say, this is many times the amount of music one person could listen to in their lifetime.

Edit: additionally, it's possible (likely?) that the music is downsampled before training, so this figure may be something of a lower bound.

<comment><USER8> Maybe they should have used less data of 'higher' quality then?

</comment></comment></comment><comment><USER9> Little did we know that an AI studying over 100 years worth of music would approximate Merzbow.

<comment><USER10> Too mellow for merzbow. And not as interesting.

</comment></comment><comment><USER11> Fast foreard 7 minute. The start of Stravinsky's Le Sacre du printemps, that continous to become something else. Nice remix.

</comment><comment><USER12> Potentially important question: is the ML system a "derivative work" of the input music? How about its output?

</comment><comment><USER13> The bit I random skipped to sounds pretty terrible. Barely "music".

I've definitely heard much better AI-generated music, e.g. stuff from Wavenet.

</comment><comment><USER14> Thanks for sharing. I have always found machine learning fascinating; to see it put to use for something beautiful is a wonderful experience.

</comment><comment><USER15> Nothing impressive but its a start</comment>


Any resources for graduate project ideas? - <AUTHOR>

Hi, Im a CompSciEng graduate student (MS) looking for a thesis/project topic. Is there a website or other resource that would help in this. If not, wouldn't it be a good idea to have such a collection point for graduate projects ? <comment><USER2> <http://philip.greenspun.com/research/fantasy/>

</comment><comment><USER3> the hottest topic you may work on are mobile phone apps, e-commerce with the help of biometric technology, web 3.0 etc.</comment>


New Startup: MonitrApp - <AUTHOR> http://monitr.io/?hn

<comment><USER2> Maybe it's because I haven't slept all night. But is it just me or is there really no one trying to sell me anything. I feel like I'm reading a bear bones feature list. No descriptions. No upsells. It's almost a "Here it is. Take it or leave it.".

<comment><USER3> Agreed. The copy does not excite a need to do anything, even stay on the site.</comment></comment>


Ask HN: Unknown side effects of starting a new company? - <AUTHOR>

I am currently thinking about starting a start up, and to fund it getting a "company" credit card. However, I don't know how that would affect my credit score.<p>Due to that side effect, I started thinking about other potential unknown "costs" I haven't thought about. What are some you have ran into? <comment><USER2> The biggest cost for a startup is to try to act like a company to look good in front of others.</comment>


Maskbook – Enforce the Natural Law of Privacy - <AUTHOR> https://maskbook.io <comment><USER2> > We hold these truths to be self-evident, that all men are created equal, > that they are endowed by their Creator with certain unalienable Rights, that > among these are Ownership of Computation, Liberty of Encryption, and the > Pursuit of Privacy.

</comment><comment><USER2> Post on F __ _k, not viewed by F_ __k</comment>


Ask HN: Best way to update broken links on HN? - <AUTHOR> A recent discussion reminded me of an interesting hackernews article from a while back [0]. Unfortunately, the link to the originally referenced link is dead. It looks as though the article/site has been moved to a new location [1], and I guess I'm just wondering if there is a way to
update the original post?<p>[0] https://news.ycombinator.com/item?id=8440486 [1] http://blogs.sciencemag.org/pipeline/archives/2014/10/10/things_i_wont_work_with_peroxide_peroxides <comment><USER2> To me, the |web| link seems like a reasonable work around. It's a convenient starting point for anyone who cares.

</comment><comment><USER3> You could ask the moderators: email@example.com.</comment>


Build your own IoT/MQTT node for less than $2 - <AUTHOR> http://albert-david.blogspot.com/2018/12/build-your-own-iotmqtt-node-for-less.html <comment><USER2> For those new to this, you can get little esp8266 based modules with usb, header pins etc for about the same price. [https://en.m.wikipedia.org/wiki/NodeMCU](https://en.m.wikipedia.org/wiki/NodeMCU)

Arduino software compatible too.

<comment><USER3> Those are really cool. Here's an esp8266 framework primarily intended for home automation: [https://github.com/xoseperez/espurna](https://github.com/xoseperez/espurna)

<comment><USER4> I use this in about ten devices (one of which is a custom-built dog feeder) and love it. I hate using closed-source IoT devices and this is a perfect alternative.

<comment><USER5> Please do tell more! Is there a blog?

<comment><USER4> My site is at [https://www.stavros.io/](https://www.stavros.io/) and various smaller projects at [https://www.makerfol.io/stavros/](https://www.makerfol.io/stavros/). The particular dog feeder is mostly my dad's build, I only provided the software and relays to trigger it, so it's not written up anywhere. I can post some photos if you like.

</comment></comment></comment></comment></comment><comment><USER6> It's cheap but what's the 0power consumption? This tutorial from Eric Tsai covers a similar architecture but a lot more extensible, with a lot more explanation, and each end node can be powered from a coin cell for many years:

[https://www.hackster.io/erictsai/lora-tooth-small-ble- sensor...](https://www.hackster.io/erictsai/lora-tooth-small-ble-sensors-over- wifi-lora-gateways-0aa109)

<comment><AUTHOR> ESP-12f module running with tasmota firmware consumes around 30mA when measured on the 5V side, if you want to go further down, deep-sleep option of ESP8266 is the way to go, but tasmota firmware doesnt support deep-sleep(may be you need node-mcu firmware to achieve sub-mA consumption). There are CR-123 3v battery powered ESP8266 temperature/humidity products which use deep-sleep mode and report the sensor samples every hour so that devices operates atleast a year on battery power(check out shelly H&T product)

</comment></comment><comment><USER7> I recently found out about Sonoff-Tasmota ( [https://github.com/arendst/Sonoff-Tasmota](https://github.com/arendst/Sonoff- Tasmota) ), i hate it. Because now i bought for 300 € of Sonoff products for home-automation based on the MQTT protocol.

(The project allows you to flash the Sonoff products with custom firmware)

They also have an IR module, for customizing your remote.

Anyone else has other ideas that are similar for home automation without adjusting your electronic wiring?

<comment><USER8> Like you hinted, flashing Sonoff-Tasmota firmware on ESP8266 hardware lets you get A LOT of home automation equipment for fairly little. They make many devices and someone getting started should checkout the Sonoff-Tasmota for supported devices AND check out Sonoff.

If you don't want to use a Sonoff Basic or maybe the bigger 4 channel option, I'd suggest getting some of their wall adapters like the S31 (think Wemo wall plug). There is a confirmed flash for Sonoff-Tasmota & ESPurna for it and would let someone dip their toes into cheap home automation with MQTT.

</comment></comment><comment><USER9> Is there an hobby equivalent for Bluetooth Low Energy (BLE)? Wifi tends to be power hungry for battery-operated devices. With BLE, you can get months of lifespan while still being able to connect to it with your phone.

I was looking at the micro:bit, but it's still $15. Anything in the $2 range for BLE?

<comment><USER4> Try the ESP32, it might fit the bill, although I've never worked with its Bluetooth capabilities and don't know much about them.

<comment><USER10> I've experimented with those ESP32 chips from a few sources on a handful of boards (lots of cheapo knockoffs floating around) and haven't been happy with the performance or reliability of any of them for BLE. So far Nordic nRF52 holds the lead in my experience (they do cost a bit more though).

<comment><USER11> Nordic is good, but STM32 is also affordable and quite decent.

</comment></comment></comment></comment><comment><USER12> Can someone ELI5 what can be accomplished with these devices?

I am not familiar with them, and the build looks simple - but what do once created? Is it simply a BLE beacon?

<comment><USER13> The ESP8266 is wifi. The slightly more expensive ESP32 adds Bluetooth and some extra features. You can use them to run mini web server, MQTT, etc. Think of them like a supercharged Arduino with connectivity built in.

<comment><USER12> Ahh - so coupled with whatever sensor you have, you can have a wifi broadcast capability at extreme low cost...

So, ostensibly - if you have these all participate in an SSID of e.g. "sensors", then you can place these all over and have a low-cost mechanism to deliver the reads to your (already) existing wifi infra...

So the key, then, is the family of sensor types you want to place on them. The limitations in the case of this object are power and size....

So given that - whats the minimum size battery req'd to run this little guy?

Then What is the power req of the sensors you attach -- then whats the lifespan of that power budget and then servicability to replace it?

I like this... a lot.

I have a bunch of BLE sensor beacons from china which cost ~8 but they are dumb as rocks.

This provides a heck of a lot more functionality than those...

Unless there are gotcha's which I am naive to?

<comment><USER14> Battery depends more on what you are doing.

Most boards and sensors use either 5 or 3.3 volts DC.

You can put the device in a sleep or hibernate mode and have it only connect to wifi periodically or when triggered.

Also, using encryption, like WPA2 increases battery use.

<comment><USER15> The esp8266 module itself runs at 3.3V but seems happy with a couple of AA batteries. Tried with CR3032 but it can't deliver enough current. After all, it is doing WiFi.

<comment><USER14> Google 'joule thief'.

</comment></comment></comment></comment></comment></comment><comment><USER16> This is interesting. What chip do ESP12F's have for USB?

I did a quick search and nothing came up. Most ESP8266 projects refer to the node mcu board rather than the module. Those boards usually have a USB <-> serial chip.</comment>


Ask HN: How do you conduct code reviews? - <AUTHOR> I have some idle time and have been asked to look into producing a code review checklist. This is quite an interesting matter, as to me, much like programming, code reviewing is a highly idiosyncratic, ineffable, thing, and so I wonder whether the community here has somehow managed to formalize it.
There are obvious things to put in such a checklist (e.g. short and legible methods, check for potential null reference exceptions) but sometimes even glaring bugs can sneak through code review. A recent example: in a PR, I noticed a method call had been deleted and replaced with nothing, and asked the developer about it. The developer assured me the functionality that the method had provided was implemented elsewhere in the PR, and that indeed seemed to be the case.
Turns out, that other implementation did not in fact cover all the functionality the deleted method call had provided, and an entire feature was lost due to that PR. In light of this, something else that could go in a checklist is "when a method call is deleted, verify what the method did". Another is that deleting that method call meant the method had no references (dead code), yet was not deleted, so neither I nor the other reviewers saw the method body in the diff, which would have shown that a feature was being lost. Another item could be "If method calls are deleted, check for dead code".
Do you have a formal method for conducting code reviews? What things do you look for? <comment><USER2> In my experience, code reviews are more about knowledge sharing than correctness checking (unit tests and CI are better direct correctness checks). You prioritize understanding the code that has changed and hope you get correctness as a side-effect of that understanding. If you try to directly construct an exhaustive correctness checklist, you'll end up producing a CR process that's overly burdensome and that no one actually follows. So create a checklist for understanding the code, not checking correctness.

Here's the rough, hierarchical checklist I wrote up for myself at some point: [https://gist.github.com/beyang/b3b494f028996b32ab3dae237bc1c...](https://gist.github.com/beyang/b3b494f028996b32ab3dae237bc1c2eb)

I don't go through this entire checklist for _every_ code review obviously, but whenever there's a diff that's large/complex enough for me to say "hoo- boy", I revisit it to remind myself of what I actually need to check in order to obtain an adequate understanding of the change.

The other thing that matters is tooling. One of the annoying things about most CR interfaces is they lack the capabilities of an IDE that actually let you jump around and make sense of the code in a tractable manner. Shameless plug: I helped build a browser extension that adds these capabilities back into most of the mainstream CR systems: [https://docs.sourcegraph.com/integration/browser_extension](https://docs.sourcegraph.com/integration/browser_extension). People swear by it and I'd highly recommend trying it out.

To get back to your original scenario, it seems like you asked the right initial questions, but stopped short of building a satisfactory understanding of what was going on. You took the author's word for it, when you could've asked a few more probing questions to check your (and their) understanding of the change. At the end of the day, the threshold for "LGTM" is a function of both how well you understand the code and how much you trust your teammates. Better process and better tooling can help out a lot with the former, but the latter is a human element that can't be ignored either.

</comment><comment><USER3> In my previous job we went through the same process. A review involves two parties (the author and the reviewers) with different goals and obligations. Fast forward, we decided that the goal of a reviewer is to check

\- readability/maintainability

\- coding style

All other things (e.g. linting, formatting, simple error checks...) have to be automated, cause this is super anoying.

> As a general rule, keep the process lightweight, it should not be a burden, > make it a fun activity.

Here are some more question that came up:

\- Whats a good size for a review -- something up to 400 LOC, there are papers on that topic

\- How long can the author wait, hence how often to reviewers have to review -- we tried to establish a habbit to do reviews twice a day

\- How many people have to accept? -- this question is interesting, cause there is a correlation of number of reviewers and bad review quality.

\- Who is reviewer -- opt-in, if knowledge sharing is your goal, keep it open. There are companies that mark branches in the source code with OWNER files to make this more explicit

\- Are there mandatory reviewers -- yes, the owner should give his approval, unless he is on holiday

\- How do you resolve discussions (and are they efficient)? -- IMO pairing on non-trivial comments was the most efficient approcah.

\- If you are unhappy, can you decline a review? -- that would be brutal

\- How do you communicate/notify people?

\- How do you handle late comments? if you use pull requests, reviewers could still comment? \- To resolve a comment in the review you changed the code and revoke all approvals?

\- Do you want to enforce behavior -- just make it a fun activity :)

</comment><comment><USER4> Things I look for -

\- Is the commit message coherent ? Can I understand the intent of the CL from the message ?

\- If yes, then is this commit doing much...should it be split ?

\- Is it functionally correct after a brief look at the code ?

Now on to the implementation - \- Are there any big functions ?

\- Are there useless one line functions ?

\- Is there too much nesting with conditionals ? Look for the snake pattern.

Concurrency -

\- make sure that there is no cute "trick" to guarantee safety. Message passing preferred if not possible then basic locking techniques and language primitives. For eg ExecutorService in Java than reinventing your own wheel

</comment><comment><USER5> In 10 years I have found very little value in code reviews. I've seen orgs expend tremendous amounts of time reviewing their code, and ending up with bug ridden spaghetti and missed requirements.

What's more valuable to me is design and implementation reviews, where you can ensure people know about and are using the features provided by their language and framework and not reinventing the wheel, poorly.

</comment><comment><USER6> I'd say that once you're at the point of formalizing reviews, you should have requirements documentation, and then, most of this becomes just an instance of "does the implementation meet the specification?".

When I worked in aerospace, every feature was linked to the requirement line that it implemented. Then it's easy to identify functionality which was removed (or left in) by mistake.

</comment><comment> V-2 This should have been caught out by (failing) tests. Code review is not the right tool for the scenario you describe. There's an item for the checklist: is the new (or refactored) code covered by unit tests that demonstrate its correctness as well as no regressions?

</comment><comment><USER7> Besides code quality and logic checking, I think it's important to also check if all the relevant docs have been updated. This means comments, README files, external wikis...</comment>


Simplest and most flexible employee attendance tracking system? - <AUTHOR> https://clockinstant.com/ <comment><AUTHOR> We argue that ClockInstant is,

More Flexible Than Biometric Systems More Effective Than GPS and Geolocation

Using iBeacons we are uniquely suited for businesses that require off-site, multi-site and long-distance staff control.

</comment><comment><USER2> Trust</comment>


Ask HN: what if the patent system was decentralized? - <AUTHOR>

The typical example in favor of patents is that of drug discovery: it's expensive to conduct but a drug is trivial to copy once approved. Since the FDA is the govt entity mandating the trials (which is a substantial portion of the time and cost), why not let the FDA itself grant exclusive approvals to drugs for n years? E.g. approve only Lipitor (Pfizer's brand) for 7 years, and then approve Atorvastatin (the chemical).<p>Other regulated industries could do the same: the regulatory body offers the temporary monopoly to incentivize innovation. Are there any unregulated industries where patents are critical to innovation? <comment><USER2> I do not understand the use of the word "decentralized" here. Usually it is defined as "withdrawn from a center or place of concentration; especially having power or function dispersed from a central to local authorities". Are you really proposing a new mechanism? Why is it going to be advantageous? How would it interact with the patent system? What leads you to believe that the US FDA could grant "exclusive approvals" on drugs when the drug industry is worldwide?

The quid pro quo for patents is a short term (17 year) monopoly to the inventor in trade for adequate documentation so that the invention can be generally exploited and used after the monopoly period has passed. Your proposal seems to have a different view of what the role of patents is (or should be).</comment>


Customizing the Mac to behave like Xmonad - <AUTHOR> http://blog.liangzan.net/blog/2012/06/03/customizing-the-mac-to-behave-like-xmonad/

<comment><USER2> I see you found SizeUp. That's also my application of choice. But it doesn't look like you did a lot of research into the available choices, or at least didn't bother listing them. Here's but a handful, for others who are interested:

ShiftIt: <https://github.com/fikovnik/ShiftIt>

TileWindows: <http://www.carsten-mielke.com/tilewindows.html>

Mercury Mover: <http://www.heliumfoot.com/mercurymover/>

... Or if you like mouse control of window placement:

MondoMouse: <http://www.atomicbird.com/mondomouse>

Zooom/2: <http://coderage-software.com/zooom/index_green/index.html>

Cinch: <http://www.irradiatedsoftware.com/cinch/>

... Or if you like a bit of both keyboard and mouse:

Optimal Layout: <http://most-advantageous.com/optimal-layout/>

Arrange: <http://www.trifle.pl/arrange.html>

Divvy: <http://mizage.com/divvy/>

BetterTouchTool and BetterSnapTool: <http://blog.boastr.net/>

Flexiglass: <http://www.nulana.com/flexiglass>

Moom: <http://manytricks.com/moom/>

And throwing this one in to just show that it can get exotic:

<http://infinite-labs.net/afloat/>

.... I could go on. OS X does not lack for people who disagree with Apple's idea of window management. There's lots of tools out there, if you just look for them :)

<comment><USER3> I just recently discovered Spectacle and it's really awesome. It's open source and free, doesn't take up a lot of memory.

<http://spectacleapp.com/> <https://github.com/eczarny/spectacle>

<comment><USER4> Great app, however I need to remap some shortcuts, they are not very intuitive though.

</comment></comment></comment><comment><USER5> I use Arch + Xmonad at work and I simply love it as the OP does. Sometimes I need to work from home and I don't want to keep two laptops here, so I need to use my old 2008 unibody Macbook.

Working in OSX with Vim and console is painful after the Linux experience. Installing lots of utilities might help, but I chose to install Ubuntu with Xmonad and after couple of hours I had my favorite environment ready for productive work.

I know that the support for newer Apple technologies is not so good in Linux, so when this old laptop finally dies I need to buy a new one from some other manufacturer.

<comment><USER6> Thinkpad. Great build quality, Linux friendly.

<comment><USER5> I've been watching Thinkpads very closely. I used to own X40 until it broke and before 600x (which never broke, but it's kind of old now).

What model is preferable nowadays? There are not lots of shops to test them at least in Berlin. I want 13" and lightweight, but still powerful enough laptop. Lots of ram, i7 CPU and a SSD disk. The most important thing is an excellent keyboard and touchpad. I heard Lenovo is not using the old and excellent keyboard in their laptops anymore and I haven't tested the new one yet.

<comment><USER7> ThinkPad X1 Carbon (which is their answer to the MacBook Air - similar size to the 13", but 14" with more horizontal resolution), or the 12.5" X230, which is a bit heavier, but has 60WHr+ battery options and IPS display (both missing from the MacBook Air).

<comment><USER8> The guy doing this review was only able to get 3.5 - 4 hours out of the battery. <http://www.nomobile.ru/reviews/162216.html> Mediocre horizontal screen resolution for a 14" too

<comment><USER7> 1600x900 on 14" is mediocre? Bear in mind that it's exactly the same size/weight as the 13" MacBook Air but has larger display (thanks to a narrower bezel on the sides), higher resolution, and an arguably better keyboard. Shame about the battery life, though. Also, considering they're using a carbon fibre shell, they should have been able to get the weight down to considerably less than that of the Aluminium MacBook Air. Sony got that part right with their own carbon fibre VAIO Z (lighter and with better display than either), but it has worse ergonomics than either the ThinkPad or the Air.

No product out there at the moment that gets everything right. The MacBook Air probably comes closest, although the battery life and TN+ display could both be substantially improved.

Note that the ThinkPad X220/X230 has both a better, IPS, display and can run for 12+ hours using a 9-cell battery whilst still weighing less than a 13" MacBook Pro. However, it's heavier than the newer slimmer notebooks and has lower resolution:

[http://blog.laptopmag.com/record-breaker-lenovo- thinkpad-x22...](http://blog.laptopmag.com/record-breaker-lenovo- thinkpad-x220-lasts-over-20-hours)

</comment></comment></comment></comment></comment></comment><comment><USER9> I haven't used XMonad but I've been a heavy ion3 user for many years.

Last I checked none of the available bolt-ons (including Sizeup which the author proposes) would come anywhere near a true tiling WM.

The only candidate that would even try to _automatically_ tile windows was TylerWM - but that was buggy as hell. All the others only act on keyboard- shortcuts, which largely defeats the purpose.

I'd happily pay $200+ for ion3 as a native OSX WM. The OSX window manager is just absurdly terrible.

<comment><USER10> He did seem to imply that his usage of Xmonad was 1 app per workspace, which isn't really 'tiling' per se.

<comment><USER5> One app per workspace is great for a 13" laptop. When having two big screens, it's not enough anymore.

</comment></comment></comment><comment><USER11> A slight tangent, but dmenu-4.5 uses token matching, which allows you to search somewhat fuzzily: "foo rb" will match "foobarbaz". How it looks compared to Alfred and co. is a matter of one's aesthetic...

Disclosure: I'm a dmenu developer.

<comment><USER12> I've always wondered -- is it suckless as in suck less than something else, or as in without suck?

<comment><USER13> It says right on the suckless.org home page, "software that sucks less," so probably the first.

<comment><USER12> I've been saying that wrong in my head for a long time now. Thank you :-).

</comment></comment></comment></comment><comment><USER14> Tyler WM (<http://www.tylerwm.com/>) shows a lot of promise. It's a pretty good 1.0 but there are some edge cases that still prevent me from using it full time.

<comment><USER15> To chime in here, IMO what sets Tyler apart is that it takes control of a window as soon as it is created, whereas AFAIK all other offerings leave the windows alone until you use keyboard commands to resize them.

It is indeed promising, but like you I cannot recommend it to anyone until they have fixed several critical bugs.

<comment><USER16> Could you elaborate on what some of the bugs you ran into were? I came across it the other day and was eager to try it, but reticent to spend the $10 without a demo (currently in between jobs)

<comment><USER15> Oh, stuff like windows becoming unmanaged, Tyler becoming disabled until a restart, windows moving around without you wanting them to. It's pretty much an alpha product - don't spend yet, wait a couple months and see how it goes.

</comment></comment></comment></comment><comment><USER17> What I use (both are free/open source):

Slate for window management: <https://github.com/jigish/slate>

Quicksilver for launching: <http://qsapp.com/>

</comment><comment><USER18> It depends on what mouse or touchpad you have, but I find that I don't even use Command-Tab anymore. It lacks the precision of getting to exactly the right window. Launching Mission Control via touch allows me to switch to the window I need much faster.

I hear you on the maximizing thing; I ended up finding a program called Shift (<http://shift-it.en.softonic.com/mac>) works very well to maximize, snap a window to just the left or right half of the screen, etc. Hope that helps!

<comment><USER19> How do you navigate Mission Control without touching the mouse? Surely it can't be easier than cmd-tab.

<comment><USER20> Going to _System - > Preferences -> Keyboard -> Keyboard Shortcuts_ and looking for _Mission Control_ and _Keyboard & Text Input_ reveal a number of shortcuts which may or may not be enabled (the same way swipe settings are 3f or 4f)

Here you will find the following shortcuts:

        Mission Control
        Application windows
        Move left a space
        Move right a space
        Switch to desktop N (number of entries up to N appearing  varies with current number N of dynamic Spaces)

Also:

        Move focus to active or next window

By default and depending whether you upgraded to Lion and what your previous settings were the base mod key may be Command, Control or Command+Control. If you installed from scratch it's Control.

Then, shortcuts are:

\- Ctrl+Up/Down to enter MC/App Exposé

\- Ctrl+Left/Right/1/2/3/4 to change Spaces (works on the desktop and in MC)

\- Command+` (and Tab/Shift+Tab) cycles apps in App Exposé.

\- Arrows allow one to select a window in App Exposé

On a laptop, the touchpad is right below the keyboard and I usually trigger MC with a 3f swipe, F3 or Control+Down (depends on my zone level) and select the window with index (when swipe-triggered) or thumb (when keyboard triggered). When using a mouse, I'm using a Logitech MediaPlay at home and a Logitech MX900 at work, which have two awesomely placed thumb buttons, which map perfectly to Mission Control and App Exposé (the button choices appear in the rightmost combos in System Settings -> Mission Control if you have a sufficiently buttoned mouse). Using another mouse than Magic Mouse I lose the brilliant touch/inertia scroll, but the two-finger double-tab gesture is completely ridiculous and a total pain.

Comparatively, Command+Tab is only fine when I'm toggling between two apps which have a single window, else the whole target app windows cover the previous one, which defeats my extensive use of Window Magnet. Also I have 1) a high chance of not landing into the proper window this way, and 2) a high chance of toggling between three apps, in which case Command+Tab is inefficient. Also I find it egregious that one keeps open Command+Tab by keeping Command down, then drill down to App Exposé, where you have to release command before moving with arrows and subsequently select a window with Return when it could be Command all the way then release to exit.

Also, when moving between terminal windows and tabs I use the build-in Next Window/Tab shortcut (Command+Left/Right, with Shift for tabs). I bound the same keys in MacVim for consistency.

Besides there's still lack a (non third party) keyboard way to:

\- navigate between window groups/windows in MC

\- add a new space

\- move windows between spaces

<comment><USER19> Ah. I work on a laptop, and I can't stand it when a window isn't using up the entire space, so I just make everything fullscreen and flip between them with cmd-tab (slow) or ctl-left/right (fast). I switch between ~4-5 macs a day and ~30-50 a month, so I can't be bothered to use anything but default keybindings and software.

</comment></comment></comment></comment><comment><USER21> why not just run arch on your mac laptop?

<comment><USER22> No thunderbolt support, for one, so you can't use the beautiful 27" external monitor. The nVidia/ATI drivers on Linux aren't nearly as good, either.

<comment><USER20> I really love Arch, but for me the reason it's segregated to a VM is:

\- power management: Linux does not hold a candle to OSX (which is able to shutdown entire components like soundcard, webcam dynamically when not in use)

\- Lion's external display+lid+sleep behavior: external screen+AC power makes lid-close sleep inoperant, so I can just plug both lid closed and my laptop wakes up to be a desktop (bluetooth input devices help a lot). Conversely unplugging either makes it go to sleep, back in laptop mode.

<comment><USER23> The Linux kernel is capable of commanding individual devices to power off. Run powertop and it will show you what's using power and offer to turn it off. My experience with Thinkpads (from two or three years ago) is that running Windows gives you about 10 hours of battery life while doing essentially nothing, while running Linux gives you 8 hours. Both are so high that it doesn't really matter. My X220 has never run out of battery, and I fly a lot and don't really plug my laptop in at home, so 8 hours is apparently enough.

For your second point, just explicitly command your computer to do what you want. If you want it to go to sleep, type "acpitool -s". If you don't want it to go to sleep, don't type that.

If you like OS X, use it, but if you hate OS X and are only using it because of the two issues you list above, that's crazy :)

<comment><USER20> _> The Linux kernel is capable of commanding individual devices to power off. Run powertop and it will show you what's using power and offer to turn it off_

Oh I perfectly know that, the problem is that it's _manual_. With OSX I play a song, soundcard comes alive from its powered off state and plays sound, song stops, soundcard powers down after a little idle timeout. The same goes for the webcam, ethernet board and various other components. With Linux I have to either write some suboptimal wrappers to programs to kick devices in or out, or do it manually, or sacrifice battery life.

Comparing battery life, Linux is two~three full hours behind OSX out of seven~eight (after thorough analysis involving powertop1/2). That's a 30% drop and brings me to almost a day to a little more than half a day of work per cycle. Well, it was so a year ago, because now my battery has crossed the 600 cycle count bar so it holds an hour less. And don't start telling me "oh that was a year ago, Linux has improved on that front since then", since OSX improved in that area too (I've looked at hard data battery metrics).

 _> For your second point, just explicitly command your computer to do what you want. If you want it to go to sleep, type "acpitool -s". If you don't want it to go to sleep, don't type that._

You're missing the point, I perfectly know that too.

Find me a single PC that can do this:

1) asleep with lid closed, you plug in an external screen and if you're on AC power the computer wakes up and makes the external screen primary, else it does not even wake up and stays asleep.

2) awake with lid closed, AC and screen plugged in, you plug out external screen or AC power and the computer goes to sleep

3) awake with lid closed, AC and screen plugged in, you open the lid and it becomes primary while external screen becomes secondary.

4) awake with lid open, AC doesn't matter but you plug in an external screen and this one becomes secondary, retains its specific configuration including relative position, wallpapers, resolution and color calibration settings from previous times _per external screen device_.

I've written my own extendable acpid handler in Python to achieve various schemes, react to complex events, and take complex actions. I know exactly how to do 2, 3 and 4, and I know exactly how much hackery and time is needed to achieve this, and it's not really reliable in the end. As for 1 it might as well be downright impossible.

 _> My X220 has never run out of battery, and I fly a lot and don't really plug my laptop in at home, so 8 hours is apparently enough._

As I said my battery is getting past middle-aged and the more minutes, the happier. Also you can consider not only "instant" battery life (i.e time it takes to go from full to empty) but long-term battery life (time it takes before the battery is a complete brick): the longer the cycles, the less wear it takes, so the longer it lasts before going to the trash.

 _> If you like OS X_

I do :-)

If only Lion's "full-screen" would really be a chrome-less tiling window manager I'd be completely happy. Things, like Window Magnet, fullscreen Terminal.app and tmux help a lot though.

<comment><USER24> > Find me a single PC that can do this

Every computer can do this, its not a function of hardware. You'll have to write your own scripts to do it but thats just part of the Arch Linux ethos.

To wake and reconfigure displays on in your example (1), you can poll for ACPI events for on:

        /proc/acpi/ibm/video:video_switch

<comment><USER20> > Every computer can do this, its not a function of hardware.

I'm dying to know how a computer in ACPI S3† can execute my ACPI scripts. The only way for it to work is for some hardware to trigger an event that will kick it out of S3, and PCs old and new that do so on external display plug are (if any) apparently rare enough that I _never_ encountered them, so currently I consider them devoid of this feature.

Even if it were so, this would require, as you say, and again as I did already for cases 2) 3) and 4), writing scripts, and such scripts are non-trivial. Calling xrandr (which of course needs DISPLAY and some X magic cookies) from an ACPI handler (which runs as root while the X session runs as you) requires interesting piles of trickery. Then timing issues come in, as drivers take time adjusting themselves and you have no way of knowing when they're ready (in the meantime e.g xrandr redurns/does crap). Also, interestingly enough, all sorts of fun stuff happens on VTs when the primary display vanishes to be thrown into an external one.

I long for the day when KMS supports multiple monitors and I can have VTs left and right, and I can run my favorite phrakture-like no-X setup on bare metal (and my web browser in a lightweight Wayland), but that day is far away so that setup stays in a VM.

 _† i.e CPU off == no power at all, only RAM and components registered for waking like USB controllers have reduced power._

edit: formatting

</comment></comment></comment></comment></comment></comment></comment><comment><USER25> You bought a new computer because of a fan error?! You could have got a new fan with next day delivery (so Tuesday in your case) for a hell of a lot less than a new computer and all the time it took you to get OS X setup how you want.

Or do you earn such crazy amounts of money that you made enough money on that Monday to cover the cost of the new Mac and your time configuring it?

<comment><USER26> I think his Thinkpad died, because of a fan error. Maybe it overheated or something like that.

</comment></comment><comment><USER12> Comment to the author: use cmd-` while you are command tabbing if you go too far! Similarly useful, hold cmd-tab and it will stop at the end. Also, cmd-esc if you decide not to switch.

I used a 15" MBP for a long time without missing a tiling window manager that much... but the problem was exaggerated when I started using a 27" imac. So I looked around and started using spectacle. Great utility. I use Quicksilver's "open application" custom triggers to get the app switching behavior, so I finally have a use for F15-F19 (on the very left side of my keyboard)! It has made a big difference for me.

One problem I would like to solve is switching between multiple emacsen. I have an 8:00-5:00 job and work on my own stuff after that, and I like to keep my buffer lists separate (so I can't just use multiple frames). Therefore, I open emacs again from the terminal and I wish I could switch between them with quicksilver's shortcut. Alas, quicksilver always brings up the first one. Has anyone dealt with this?

</comment><comment><USER27> Is there anything like xmonad for Windows?

Edit: found [some options on wikipedia][1], but maybe you have any other sugestions.

[1]: [http://en.wikipedia.org/wiki/Tiling_window_manager#3rd_party...](http://en.wikipedia.org/wiki/Tiling_window_manager#3rd_party_addons)

<comment><USER28> I've had good success with an open source tiling window manager for Windows called HashTWM [1]. I use it inside my Windows XP virtual machine to manage a bunch of hairy situations with multiple windows. I like that it actually does reposition new windows to fit inside the grid, and that I can easily adjust the middle "split" line so that my main window can become thinner or thicker.

Where it falls down is when you deal with modal dialogue windows, like the "Save File As..." window of Firefox, or the "Find and Replace" window of Excel. I haven't found a good way to overcome the issue of those modal windows being hidden, even with the "-i ConsoleWindowClass -i #32770" ignore options. It seems like Firefox, Excel, and Photoshop implement some non-standard ways of opening smaller windows. In these situations, I quit HashTWM, deal with the modal window, and then start HashTWM again (using quick keyboard shortcuts).

[1] <https://github.com/ZaneA/HashTWM>

</comment></comment><comment><USER29> Spark: <http://www.shadowlab.org/Software/spark.php>

You can create shortcuts for anything.

I have Alt+S for Safari, Cmd+~ for Terminal, Alt+M for TextMate, etc.

</comment><comment><USER30> I'm in a similar situation (hooked on Xmonad, but cannot run Linux). I've tried various solutions over the years, but the only one I've found acceptable so far is a full-screen iTerm2 running tmux.

I use `bind t split-window \; select-layout main-vertical` to emulate Xmonads default layout behaviour.

It works because I spend most of my time in the terminal anyway. I miss having the browser - and the video player when doing repetitive or otherwise boring tasks! - in a pane, but keeping other apps out of the tile-management is fine as I'm, more often than not, switching context anyway.

</comment><comment><USER31> Having made a similar transition a few years ago from a mouseless linux desktop using ruby-wmii on a thinkpad to osx on a macbook, I find ShiftIt works for tiling windows using the keyboard.

</comment><comment><USER32> Or you could install Fedora 17 on your Mac and just run xmonad

</comment><comment><USER33> I haven't used Xmonad myself but with all the talking why hasn't someone ported it to OS X (Cocoa) yet?

<comment><USER34> It's not just a question of porting it to cocoa. To really do its job, it needs to take control of every other window. So you need to hack Apple's existing window manager.

FWIW, you can easily compile and run it on OSX, under X. But of course it can't reach out and control any of the native applications.

</comment></comment><comment><USER35> "Or you could, you know, just use Xmonad" comments considered harmful.

(plus ignorant/simplistic: it's not like everything else related to one's OS use and needs will be the same).

</comment><comment><USER19> TL;DR use SizeUp.</comment>


Why is there not a Square Root button in calc.exe? - <AUTHOR> http://support.microsoft.com/kb/67184 <comment><USER2> Another interesting calc.exe quirk:

On "Standard" view, type:

1 + 2 * 3 =

Answer comes back as 9

Switch to "Scientific" view and type the same,

Answer comes back as 7

The reason (of course) is operator precedence; in standard mode it's interpreted as "1 + 2 =" then "* 3 =", while in scientific view it respects BODMAS.

But to me it's counter-intuitive that changing the View also changes the Mode of operation.

If they'd just named that menu "Mode" instead of "View" I'd be fine with it.

<comment><USER3> I've used cheap scientific calculators that perform operations from left to right. It's awful when you are answering a uni exam and you don't know why the results you get looks fishy.

On computer calculators, I always type "1 + 2 * 3 =" as "2 * 3 =", "+ 1 =" because I learned the hard way that I can't asume that a calculator is going to respect order of precedence or not.

<comment><USER4> I think the first calculator I used was one of those. It took me till college and programming before I really properly learned precedence because I never trusted any calculator I was using, and always used parentheses.

This also kind of influences my programming, probably for the better - I would rather use parens and be clear than be ambiguous and trust that my interpreter and I agree on what has proper precedence.

</comment></comment></comment><comment><USER5> This really gets to usability. Most scientific calculators I have owned have a y^x key AND a √ key. Most have a cube root key as well. √ is a very common operation and with its own key can on many models be applied to a result with a single key press (it often works immediately and the = is not even necessary.) y^x to indicate square root can be applied to a result with ^,0,.,5,= -> 5 key presses, or 4 if continuing without having to finalize the calculation. Given that √ is a common operation, 4 or 5 key presses for it is pretty ineffective compared to 1 key press.

</comment><comment><USER6> For the benefit of those that don't know: raise to the power of 0.5 instead (x^y button, 0.5, enter).

edit: Doh! That's what the linked page says. In my defense I have a horrible connection tonight and it didn't load until just now :)

edit 2: Lol@ the itchy trigger-finger. Isn't that what the downvote karma limit is for? :)

</comment><comment><USER7> I'm running calc.exe on Windows XP, and while it is true that there is no square root button, square roots may be calculated using Inv x^2. The Inv checkbox also enables cube roots (Inv x^3), exponentials (Inv ln and Inv log), and the usual inverse trig functions.

<comment><USER8> You find this out by right-clicking the x^2 button and clicking What's This. The popup explains the Inv^2 trick -- to my recollection it's been like that since Windows 95.

</comment></comment><comment><USER9> I was going to say that this applies only to old versions of calc, but the calc.exe in W7 has a _cube_ root button, and also a generic y root of x button... but no sqrt. O_o

<comment><USER10> There is a sqrt button in calc in Windows 7. It's on the right side, just above the % button.

</comment></comment><comment><USER11> If a person doesn't know that sqrt is 1^(1/2) probably (just probably...) that person would never need to use sqrt...

<comment> s-phi-nl I disagree. One can use square roots to find the roots of quadratic equations (for example the equation for the velocity of a projectile) without needing to know that sqrt(x)=x^1/2.

<comment><USER12> I think you misunderstood

The point he or she was making was that a person that doesn't know that sqrt(x)=x^1/2 probably wouldn't be calculating the for example velocity of a projectile

<comment><USER11> Exactly...</comment></comment></comment></comment>


Introducing Papers 2 for OS X - <AUTHOR> http://mekentosj.com/papers/2.0/

<comment><USER2> papers is going to be killed by mendeley - mendeley works on windows, OSX, linux, AND the cloud, it's free, and everyone in our lab is already using it.</comment>


Looking for a Woz - <AUTHOR> http://www.lindsayrgwatt.com/LookingForAWoz.html <comment><AUTHOR> Hey folks, I'm putting this up as I'm looking for a co-founder for a new venture I'm launching. I've been trying to find a better way to organize and share my information for years and now I think I've got the solution.

If you can relate to this and are interested in trying to solve this problem, read the post and drop me a line.

There's real money committed to building a prototype with more available. Let me know if you're interested and we should talk.

</comment><comment><USER2> Isn't everyone...

</comment><comment><USER3> Doomed. Would the real Steve Jobs would have put that in the Homebrew Computer Club newsletter: "You must have the key tools of today: BASIC, soldering, subtracting chips from designs, Intel 4004, sugar cereal prize whistles, etc..."</comment>


Ask HN: How to infer website quality from HN data? - <AUTHOR> Sentiment analysis, front page appearance to total submission ratio just to name few ideas. <comment><USER2> When you look at points, a site with 20k points and 0 flagkilled stories vs. a site with the same points and 30% flagkilled are going to be very different. I would say flagkills are your best indicator.

Another option would be to check how many different people are posting links to a site. Each person could be given a quality rating based on how many points they have and how many other sites they post from.

Someone who posts _only_ the same site and has low points (and low comments) is probably just the site's owner, for example.

</comment><comment><USER3> Length of time on the front page, that filters out the sites that manipulate a front page presence their content can't sustain.

<comment><AUTHOR> But what about heated discussions that stay on the front page for some time (I suppose they are fueled by the discussion itself, rather than the piece of content, which started it)?</comment></comment>


The Lies Behind The 40% Return Rate Of Android Phones - <AUTHOR> http://digitizor.com/2011/07/26/lies-android-40-return-rate/

<comment><USER2> I think this article really states something that's been bothering me for some time : more and more articles online are being written with unreliable sources or no source at all. Remember when all the online magazines talked about the LulzSec manifesto that wasn't written by LulzSec? It's the same thing over and over again, writers are in a hurry to come up with an article and they grab whatever source they can without validating.</comment>


A Non-Business Case for Supporting Old Browsers - <AUTHOR> https://www.ovl.design/text/a-non-business-case-for-supporting-old-browsers/ <comment><USER2> I think that the best reason for not supporting old browsers is that most developers dislike it enough that it's not worth the drop in moral.

</comment><comment><USER3> Never mind IE11. [http://motherfuckingwebsite.com](http://motherfuckingwebsite.com) still works on IE6, and why shouldn't it? It's plain HTML with no CSS or JS.

There is no reason why any web document should not still be readable in Lynx, Mosaic, or even WorldWideWeb.

Web applications are a bit more complicated, but that complication is self- inflicted. We developers choose to to hijack users' devices for work that should be done on the server in the name of providing a better user experience, and we make our work harder in the process.

Supporting old browsers isn't that hard. Build a solid foundation of HTML, HTTP GET, and HTTP POST, even if it means doing full page refreshes. You can always layer your AJAX calls and such on top. It's called "progressive enhancement", remember?

<comment><USER4> That website doesn't do anything.

<comment><USER5> It doesn't need to. The "everything must be a web app" mindset is completely unnecessary and actively harmful to accessibility. I've seen far too many "redesigns" turn a site of static pages or even forms into a horribly slow and buggy limited-browser-support SPA that excludes access for no real reason.

<comment><USER4> I think you missed the point.

This website doesn't do anything but others do. Browsers have to support both.

</comment></comment></comment></comment><comment><USER6> As with all things it's a cost benefit analysis. It costs money to support old browsers and a lot of money doesn't come from them do do the math.

I was trying to buy movie tickets online the other day.I tried Firefox then Firefox without ad blockers, then ie, then edge, then chrome on two different desk top machines.

Then my gf bought them on her phone browser.

Thanks mobile first development. How much money must you be costing your adherents?

<comment><USER5> _It costs money to support old browsers_

One of the arguments the article makes is that it _doesn 't_ \--- thanks to the backwards-compatible nature of the Web, anything that works on an older browser is likely to continue working on the newer one.

<comment><USER7> So I have to design and build for the older browser then hope that the newer browser handles it properly, whilst also constraining myself from using any newer functionality?

That seems backwards.

<comment><USER5> The article is saying that you don't "build for the older browser" \--- or indeed _any_ browser specifically, but instead start off with basic HTML and adding just enough markup and styling around the content as you desire. Maybe you'll later tweak the site to look exactly the way you want in a specific browser, but this process means that even if it doesn't look _perfect_ , other browsers will likely be able to use the site too.</comment></comment></comment></comment>


Minsky moment - <AUTHOR> https://en.wikipedia.org/wiki/Minsky_moment <comment><USER3> Minksy also "identified three types of borrowers that contribute to the accumulation of insolvent debt: hedge borrowers, speculative borrowers, and Ponzi borrowers." -[https://en.wikipedia.org/wiki/Hyman_Minsky#Minsky's_financia...](https://en.wikipedia.org/wiki/Hyman_Minsky#Minsky's_financial_instability- hypothesis)

As the amount of the third type, the ponzi borrowers, grows it is more and more indicative of an impending Minsky Moment.

[https://www.cnbc.com/2020/02/11/ponzi-schemes-hit-the- highes...](https://www.cnbc.com/2020/02/11/ponzi-schemes-hit-the-highest- level-in-10-years.html)

</comment><comment><USER4> Looks the coming recession the editors at HN have been front paging for the last few years might actually happen.

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

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

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

<comment><USER5> If you predict a recession every year you will eventually be right

<comment><USER6> And on the flip side - just because the bubble doesn't pop this year doesn't mean your assessment of the fundamentals is wrong. The market can stay irrational for a longer time than you can remain solvent.

<comment><USER7> Credit where credit is due:

"Markets can remain irrational a lot longer than you and I can remain solvent."

-A. Gary Shilling

</comment></comment></comment></comment><comment><USER8> Another way to look at the idea is that volatility seems to be ~constant, and any efforts to suppress it (by easing) result in a surge later on (hard landing). What we may see is the unwind of the easy money that has been sucking risk premiums out of the markets. Capitalism cannot work without risk premiums/cost of capital/hurdle rates. It's not capitalism any more because the capital has no decision to make (everything will be funded, no matter how good or dumb).

And as this advances people will be reminded that stocks are not "basically better savings accounts", and that while they thought they're "long term investors" they are in fact not. The price agnostic buyer of ETFs will turn into a price agnostic seller. Happened many times in the past.

<comment><USER9> "Capitalism cannot work without risk premiums/cost of capital/hurdle rates. It's not capitalism any more because the capital has no decision to make (everything will be funded, no matter how good or dumb)"

I think you and a lot of people have lost perspective and are putting the cart before the horse.

The whole point of capitalism, the only justification, is to benefit society by driving profits to zero.

The stock market is not a machine to produce profits, it is a machine to eliminate opportunities for profits.

Profit is an intermediate step to the basic social purpose of moving resources where they are needed. The collapse of interest rates and profits are evidence of success.

<comment><USER8> Risk premiums are something else than profits. They're much more intangible, much more "macro".

If you have three companies, two of which will produce $1M (when discounted with interest rates), and the third one has the prospects of producing $1M but will actually produce $0 due to some fatal flaw in the idea (i.e. will lose everything), but you don't know and can't know which one is the loser - <USER2> much should each stock be worth? Assume there's no debt.

It's pretty obvious that it should be less than $1M per company. That's what the risk premium is - the difference between discount rates used for a risky project vs the discount rate used for a non risk asset (i.e. interest rates).

No risk premium means everything is discounted as a "sure thing", as if it was a government bond. It's inherently anti-capitalistic because it means that the capital doesn't get to decide what's possible, what's probable, and what's likely.

Also, note that risk premiums have, a priori, nothing to do with aggregate returns. Risk premium is what you'd make if everything went well. But it often doesn't go well. In my example if all three companies traded for $666k and you bought all three you'd end up with the same amount of money at the end (once the loser is known).

<comment><USER9> I didn't/don't think that's what the phrase means.

If the expected value is $666,666 then wouldn't be the risk premium be the discount you want for the _risk_ of getting zero, compared to an investment that _definitely_ returns $666,666?

I also feel like I read recently about a study showing that investors are empirically (at least to some extent and at least these days) willing to pay _more_ for more "risk", kind of like lottery players.

I'm a little foggy about why, with the low cost of diversification, investors would demand a risk premium greater than zero, at least.

<comment><USER8> [https://en.m.wikipedia.org/wiki/Risk_premium](https://en.m.wikipedia.org/wiki/Risk_premium)

> If the expected value is $666,666 then wouldn't be the risk premium be the > discount you want for the risk of getting zero, compared to an investment > that definitely returns $666,666?

Risk premium is something that connects future profits to the present, to create an expected value. It is in fact, typically, a yearly rate expressed in percent. Simple example: say the 10 year bond is 2%, you slap 5% risk premium on top of that and you get 7%, with which you discount future profits to the present expected value. Why 5%? Well that's why I'm calling it "intangible". It's risk, it's hard to say what risk is when often you could not have possibly anticipated all the problems. But you know that they're there. All of the recorded history of humanity confirms that trouble is always there.

> I'm a little foggy about why, with the low cost of diversification, > investors would demand a risk premium greater than zero, at least.

Well that's up for everyone to decide [what risk premium do they want]. I'd personally stay on the side that assumes that failure, any level, size and scope of failure, is always possible.

Broad diversification was always possible and executed at the institutional scale. It really doesn't change all that much. All that changed is that the "small guy" can have it. In particular it does not mean that risk was somehow banished from the world by Jack Bogle's work.

<comment><USER9> "It really doesn't change all that much"

In your toy example, it's a huge difference. You have a 1/3 chance of losing all your money without it, but a zero chance if you own all three.

With the stock market, it's not clear exactly what diversification gets you because nobody has the future correlation matrix, but it must be worth something. I think millions of people are implicitly assuming the whole market can't go to zero.

<comment><USER8> Risk premium is not (just) about the risk of total ruin, or ergodicity like Nassim Taleb likes to say. It's a method of computing expected value.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> Permabears and doom and gloom theories always get a higher profile during times of economic insecurity.

<comment> iso-8859-1 True. But what are we to do? How is a casual reader supposed to know who counts as a dismissable permabear? This is just a link to a Wikipedia article, it would be odd to downvote it just because it talks about the top, it is hardly even an implication.

<comment><USER10> If you don't follow the markets and don't know the various commentators record and reputation just buy index funds and focus your attention on something more enjoyable.

</comment></comment></comment><comment><USER11> Treasury yields are way down right now.

I'm not an economic expert and don't really know what to make of that. It seems crazy that people are willing to loan money to the U.S. government for 30 years at a rate of 1.25%.

As a taxpayer I guess I can be cautiously happy that the government will incur less interest on its debt for now.

[https://www.treasury.gov/resource-center/data-chart- center/i...](https://www.treasury.gov/resource-center/data-chart- center/interest-rates/Pages/TextView.aspx?data=yield)

<comment><USER12> In the modern financial system, risk-free debt is basically as good as cash on a balance sheet. If you need to turn it into cash, you just dip into the repo ("repurchase agreement") market.

Over the past few decades the global financial system has steadily become completely unrecognizable from the standpoint of classical economics. Debt is not debt, savings is not savings, and printing money is no big deal (or so they say).

<comment><USER13> > In the modern financial system, risk-free debt is basically as good as cash > on a balance sheet. If you need to turn it into cash, you just dip into the > repo ("repurchase agreement") market.

The global repo market is valued at $12T USD, and only 75% of it is backed by "pristine collateral", such as government bonds. That means that $3T of it is in equities or derivatives. The fed's balance sheet is only $4T USD in comparison. Additionally, $.5T is in private capital groups, which are entirely opaque, have poor lending standards, and there's no visibility into counterparties or volume.

Keep in mind, India's Yes bank that was just nationalized failed due to liquidity problems. There is a theory that global liquidity is being challenged, and central banks may not have the appetite to provide a backstop at the volume required.

</comment></comment></comment><comment><USER14> What is the difference between a Minsky moment and a top?

<comment><USER15> > What is the difference between a Minsky moment and a top?

Casually speaking, it's the difference between a forced sale and profit taking.

<comment><USER16> I think the bigger question is what is the difference between a Minsky moment and an inverse-short squeeze (a long squeeze?)?

<comment><USER15> > I think the bigger question is what is the difference between a Minsky > moment and an inverse-short squeeze (a long squeeze?)?

Casually speaking, it's the difference between a forced sale of an asset in order to repay debt after a long period of growth, and the incented but not mandatory sale of an asset which has increased substantially in price over a brief time, which is now abruptly declining, by owners hoping to salvage some of the gain.

<comment><USER17> They are basically the same, one is a forced sale and the other is a panic sale. You might consider a minsky moment a specific kind of long squeeze.

</comment></comment></comment></comment></comment><comment> caleb-allen Ah darn, I was hoping it was something named after Marvin Minsky

<comment><USER18> The joke's on you! ;)

[https://web.media.mit.edu/~minsky/papers/jokes.cognitive.txt](https://web.media.mit.edu/~minsky/papers/jokes.cognitive.txt)

</comment></comment><comment><USER19> Are we there yet?

<comment><USER20> Personally I don't think so. All the selling so far is first order obvious things... Airlines, travel...

The knock on effects are less predictable and will come later in the crisis. A lot of lower income workers are going to be hit hard as service sector takes a big hit. Those workers tend to spend all their income, so every dollar lost there translates to another dollar the broader economy loses.

That's where the Minsky moment will happen IMO.

<comment><USER21> >All the selling so far is first order obvious things... Airlines, travel...

I'm not an expert, but there's lots of money in index funds too, and those might be getting sold as well. The other first order obvious thing being people will want some cash.

<comment><USER20> I think it's a wait and see on how much the retail index investor will pull out.

A lot of people have been conditioned to "buy and hold"... And the retail brokers have been pushing hard to prevent clients from selling.

My broker (Fidelity) went so far as to change the home page to exclude the very nasty graphs that show huge market declines.

</comment></comment></comment></comment><comment><USER22> Doesn't effect your average investor, who should never ever be gambling with borrowed money. And then also shouldn't be aiming for short term gain.

<comment><USER23> Borrowed money or not, 10+% declines in equity prices absolutely affect "average investors"...

<comment><USER22> Your "average investor" should be in stocks for the long term. Only speculators should be concerned with short term declines.

</comment></comment></comment><comment><USER24> See Also:

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

<comment><USER25> Although, given the 1918 Flupandemic and several other historical precedents, it should not have been a black swan, since it was known to occur. I've heard these referred to as "gray swans"; i.e. things that have the same impact as black swans but even prior to the fact there were people who were predicting it.

For example, the David Quammen book "Spillover" essentially predicts it, and it was published in 2013 (subtitle: "Animal Infections and the Next Human Pandemic").

<comment><USER26> I do think this is appropriate though since a key characteristic of a black swan is that people can look right at it but not see it due to psychological biases.

<comment><USER25> Agreed, but "black swan to most people but white swan to a few" is harder to say than "gray swan".

For that matter, Nassim Taleb himself predicted that the American mortgage industry was, I think he wrote something like "a barrel of dynamite" or some words to that affect. But, for most people, the mortgage crisis was a black swan.

The original metaphor, though, was that no matter how many swans you looked at in Europe, and how carefully, you would have zero data to tell you that black swans were possible, until you went to another country and discovered them.

</comment></comment></comment></comment><comment><USER27> I'm pretty sure all governments will just print some money once COVID19 has worked it's way through the population. Deflation is the enemy.

<comment><USER28> You know, if people are sitting at home not doing anything for an extended period of time, that's actually inflationary whether they print money or not.

<comment><USER27> Can you explain why?

<comment><USER28> Pretty simple: if you're two people locked up in your Kung Flu bunkers; someone has a 50lb sack of rice, and the government keeps sending you both cash, the price for a cup of rice is going to go up.

</comment></comment></comment></comment><comment><USER29> Hah, I love that this is trending now. I highly recommend Minsky's Stabilizing An Unstable Economy.

</comment><comment><USER30> This next recession will be very ugly. I hope everyone on here is prepared. Last time the dollar was a safe haven asset, so those that saved were ok. We will have stagflation and the price of the dollar will collapse.

<comment><USER31> I think we will finally get inflation! Corporations will move productions out of China. I expect at least 20% will come out of China and into higher cost locations. This will drive up costs. We had it too good for too long.

</comment></comment><comment><USER32> "Do not fear! This is a cyclical phenomenon!"

This is caused by coronavirus. This has nothing to do with market patterns.

<comment><USER33> It's like no one in government(or the Fed) has read Antifragile...

<comment><USER34> "As long as the music is playing, you've got to get up and dance." \-- Chuck Prince, Citigroup.</comment></comment></comment>


Sneakernet:  99% offline file sharing network - <AUTHOR> http://github.com/drewcrawford/sneakernet <comment><USER2> "Never underestimate the bandwidth of a station wagon filled with magtape, or a 747 filled with CD-ROMs."

<comment><USER3> Or a shipping container filled with hard drives. Conservatively speaking, you could easily get more than 60 PB in a typical shipping container and have plenty of room left over for padding, using 3.5" 2 TB hard drives. Assume it takes a leisurely week to get from, say, one coast of the US to the other; that's a little over 100 Gbit/s sustained throughput.

I've been rounding down here; the real bandwidth would be quite a bit higher.

<comment><USER4> If you have to copy to the hard drives and copy from the hard drives on the other end, you might be limited to the total IO bandwidth of however many hard drives you can read/write * speed of IO bus.

Not too long ago I had realized that my 1Gbps Ethernet network lets me have a higher sustain data throughput than my 5400 rpm laptop hard drive. You would have the same problem with the crate of hard drives depending how many times you have to copy the data...

<comment><USER5> Yep, in practice your HDs would be in NetApp shelves or equivalent, and you would also need to account for the volume of the NetApp heads. That reduces the density by 5-10x. Then there is also the overhead of RAID-DP.

Still, that's a shitload of bandwidth.

</comment></comment></comment></comment><comment><USER6> I feel like there's a market there in a post network-neutrality world. Backups are a great example of internet traffic that is large but inherently time insensitive so long as its secure. I imagine that a lot of international email might also be similarly time insensitive. If it were just a switch between "picodollars for arrival in three days" to "nanodollars for arrival in 10 seconds" I wonder how often people would leave it on sneakernet.

</comment><comment><USER7> Why would you want to use flashdrives to transport files when you can just use the campus networks? We used DC++ when I was at uni and that worked nicely.

<comment><USER8> Same here story here too... after hearing multiple friends busted for torrenting, I setting up a DC++ server under my dorm desk and the rest is history. With some help with friends in each dorm area on campus, we mapped out the IP address blocks for the residential network and white-listed all traffic to the server to prevent the heat that the UCLA DC++ servers were experiencing (circa 2003-2004).

The topper however is how almost 6 years later I was referred to and hired by a bio tech start up based on the fact that the CEO remembered me as the DC++ admin during his days in the dorms.

<comment><USER9> Kids these days... I remember when DirectConnect was a crappy VB program that crashed continuously, and DC++ was just getting started as a replacement (they didn't even have a server at the time, only a client).

</comment></comment></comment><comment><USER10> This reminded me a little bit of the xbox-based Internet alternative from "Little Brother." Trying to imagine a situation in which this could be useful, I could only think of scenarios involving political oppression.

Nevertheless, good hack.

</comment><comment><USER11> Seriously thought this was a joke at first. I guess it's not.

Installation instruction: 1\. sudo gem install sneakernet 2\. put your movie on a flashdrive and give it to your friend

<comment><USER12> Where did you find the installation instructions and build and install guide? I didn't see them on the github page.

<comment><AUTHOR> They're in the wiki. Maybe I should link to them from the read me...

</comment></comment></comment><comment><USER13> You've got a non-utf-8 wink in there, Drew.

<comment><AUTHOR> Patches accepted ;)

</comment></comment><comment><USER14> USB drives or memory are in the range of 10MB/s write and 15MB/s read.

Since you need to both write & read to transfer a file, you are looking at about 7MB/s file transfer which is about 50Mb/s (wireless order of magnitude).

Combined with the inconvenience, the benefits of this system are questionable.

<comment><USER15> Uhm, modern USB hard drives are much faster.

</comment></comment><comment><USER16> The implementation idea is much like FIDOnet, but with flash drives rather than modems. nice.

</comment><comment><USER17> Sounds inspiring. I'm already thinking of some kind of indexed communications medium via a network of small, cheap and disposable usb sticks. Something in the style of freenet and tor.

</comment><comment><USER18> Reminded me of Paperbak (www.ollydbg.de/Paperbak/) which prints out paper copies of your files that you can later scan back into your computer.

</comment><comment><USER19> For those who don't know, the term sneakernet is actually relatively old. The oldest reference I could find is 20 years ago: <http://www.catb.org/~esr/jargon/oldversions/jarg211.txt>

<comment><USER20> The jargon file's "tape" reference is likely to mean paper-tape than magnetic 9-track, so the term possibly goes back further to card-punch days. (I first heard the term in 1985 at my first job during high school: a PC consulting shop.)

I'd hazard a guess that the term was lifted from Navy or other such source far predating movement of electronic bits.

Anyone?

</comment></comment><comment><USER21> Sounds amusing, but stuff like this used to happen before the event of high bandwidth internet a decade or so ago. In the olden days it was physically swapping cassette tapes, then later posting floppy disks. Flash drives are just the modern floppy disk/CD.

</comment><comment><USER22> Run this over IP/AC to make it even harder to trace (<http://www.faqs.org/rfcs/rfc1149.html>).

<comment><USER23> Nooooo, didn't you read the Discussion portion?

 _Audit trails are automatically generated, and can often be found on logs and cable trays._

It automatically logs everything! You'd also be able to identify people with broadband connections pretty easily.

</comment></comment><comment><USER24> Could expand into wider areas with a daily first-class envelope delivery, containing a usb stick or two..

</comment><comment><USER25> We await silent Tristero's empire.

</comment><comment><USER26> I had this idea in 2005: Sneakershare.com was going to be my domain. Never mind.

<comment><AUTHOR> I can't figure out how to profit from it. Hence, now run your own for free.

<comment><USER26> Just read the article. Looks like a good project.

</comment></comment></comment><comment><USER27> Wouldn't truecrypt + flashdrive do the same thing without all the hassle?

<comment><USER17> You still need to negotiate the swapping of disks and keys, and handle indexing somehow.

<comment><USER28> I don't really understand.

So the goal of this is for the program to tell the person with files to load them up on a hard disk and then give them to the person requesting the files, who then picks them up from the dropbox, loads them on her computer, and then puts the flash drive back into the dropbox?

If so, then I guess all this really does is gives you a nice way of understanding who has which files, right?

If this is how it works, then I don't really understand what the external caches do for anyone.

<comment><AUTHOR> The system you've described doesn't really scale to, say, 1000 people with 10TB of files. Even with a _lot_ of flash drives in that cache.

The sneakernet is engineered basically to let you keep making trips to that cache outside your dorm room and somehow magical files appear from a block or two away. Also, files from you magically appear a block or two away when other people ask for them. The sneakernet takes care of all the routing to make lots of files show up in lots of places geographically close to you without too much overhead.

I've found lots of times I will request a file that the system in its cleverness has already cached locally on my HD. So "getting it off of the sneakernet" is actually instantaneous.

<comment><USER9> > _I've found lots of times I will request a file that the system in its > cleverness has already cached locally on my HD. So "getting it off of the > sneakernet" is actually instantaneous._

Huh? I thought that the point was that request files and then get them. How do you already have a file that you didn't request? Is this distributing files across people (i.e. FreeNet) so you have a bunch of files that are only on your machine for the purpose of being an intermediary to others? Or is this running some sort of predictive algorithm that tries to figure out what you _will_ request before you do?

<comment><AUTHOR> In a very generic answer to your question, suppose you're moving a 1GB file from A to B with an 8GB flash drive. It doesn't cost anyone anything to move an extra 7GB of data that somebody might need later. You can 8x your throughput for free.

But, at the same time, you don't want a flash drive to be in a constant state of being near-full so it can't fit the new StarCraft beta.

So there's some logic that takes files that seem to be spreading around anyway and sort of spreads them around ahead of when they're requested. This both increases redundancy and increases network throughput. It's not exactly machine learning, but it does, in practice, provide decent results.</comment></comment></comment></comment></comment></comment>