Physicists demonstrate how time can seem to run backwards - <AUTHOR> http://www.dailymail.co.uk/sciencetech/article-3116792/Does-future-affect-PAST-Physicists-demonstrate-time-run-backwards.html

<comment><USER3> A) there are much better sources for science news than the daily fail - <USER2> the paper - [http://www.nature.com/nphys/journal/vaop/ncurrent/full/nphys...](http://www.nature.com/nphys/journal/vaop/ncurrent/full/nphys3343.html)

B) this isn't necessarily retrocausality. Could equally be evidence in favour of the pilot wave formulation of QM. No spooky time travel, just a standing wave that guides the particles.

<comment><USER4> Unfortunately, the letter published by Nature is paywalled after the first page. Science Daily has a write-up at [1] which is also probably more accessible to non-specialists.

Agree with you on the daily mail. A really _terrible_ source, and I have it null routed on my machine. Any chance of the mods changing the link and title?

[1] [http://www.sciencedaily.com/releases/2015/05/150527103110.ht...](http://www.sciencedaily.com/releases/2015/05/150527103110.htm)

</comment></comment><comment><USER5> One of the many "benefits" of reading daily mail articles is you can go to the comments section and be utterly confused.

>Time travels like a tube returning inside itself. It can do this as many times as the space between the tube wall allows. Like when you take a rubber glove off.

What?

<comment><USER6> [http://timecube.com/](http://timecube.com/)

</comment></comment><comment><USER7> I know this article is a bad source, but why do scientists and the press continue to use the provocative explanation of QM: "things don't exist unless you look at them at the quantum level."

According to QM, things don't exist until they are _measured_ which is quite different (unless you are tied to an anthropomorphic interpretation of 'observer').

Since there is no formal definition of observer that in any way limits such to humans, an observer/measurer can in essence be any interacting particle in physics-- measurement is an interaction.

This specialist notion is so far removed from the lay-person's interpretation of an anthropomorphic observer creating reality wherever they look as to be nonsense. Especially since the intuition is likely to be applied at the non- quantum scale.

Systems of interacting particles are the _norm_ , _not_ the exception as our careful laboratory experiments are crafted to be.

<comment><USER8> > things don't exist unless you look at them at the quantum level

But looking IS measuring.

<comment><USER7> Sure. But either term is usually passive in classical contexts and always destructive in QM contexts. You can't uncollapse a wave function!

Consider a twist on Schrödinger's cat experiment: there are two scientists, A and B. The box can only be opened by one scientist at a time... the other scientist must wait outside the room. Scientist A looks in the box and collapses the wave function and sees that the cat is dead.

What is the probability that scientist B will see a dead cat when she opens the box afterwards? 50%? 100%?

</comment></comment></comment><comment><USER9> Ah, the Daily Hate, well-respected bastion of the truth...

<comment><USER10> Thank you for that very helpful comment.

</comment></comment><comment><USER11> These results only imply time travel if you insist that something must either be a wave or a particle in the first place, and that 'therefore' the particle must be communicating with itself back through time somehow. Funny that a thought experiment originally designed to challenge the notion of wave- particle duality would instead be used to suggest _time travel_.

(Note that I don't think the researchers are doing this, but the Daily Mail certainly is.)</comment>


Thank You, Y Combinator - <AUTHOR> https://medium.com/@Torbahax/thank-you-y-combinator-8520c0cb24f3

<comment><USER2> As a Techstars graduate, to say "the 2nd best accelerator might as well be the worse" is an inconsiderate hyperbole. Especially if your only perspective is Y Combinator.

Relocating to SF is awesome if that fits your bill or your originating city has no idea what technology means. But for others, SF is not everything. That was the primary reason we opted for Techstars. We like Austin's cost of living, quality of life, seasonal climate, no state income tax, family & friends, and the list goes on.

<comment><AUTHOR> ¯\\_(ツ)_/¯ It's a bold statement, but it's my personal opinion and I stand by it. You're free to disagree, but we would have never even considered another accelerator in our position.

<comment><USER3> > we would have never even considered another accelerator in our position.

Judging by your blog entry your resources were extremely strained; are you saying if YCombinator wouldn't have accepted you that you wouldn't have pursued any other accelerators even if it would have helped or possibly saved your business if it got bad enough? Seems like a short-sighted statement in my opinion.

What if you want to start another company in 3 years, don't get accepted to YCombinator and decide to apply elsewhere? They may read this and use it as a deciding factor.

<comment><AUTHOR> 1\. No I would have delivered pizzas, done consulting, or tried to raise money from individual angels. I would have done whatever it took to keep the company alive, but I can promise we would have never even considered another accelerator.

2\. I will never apply to another accelerator.

<comment><USER3> Fair enough

</comment></comment></comment></comment></comment><comment><USER4> Wow, I see someone who might be my age.

</comment><comment><USER5> Off topic, but since I tried to subscribe for your product after reading this article... This message should not exist in 2015: [http://i.imgur.com/NioopWo.png](http://i.imgur.com/NioopWo.png) ("The Password Can Only Contain Letters And Numbers!")

Now most of your users are maybe not going to care, but what's the reason behind this? It means I can't use my Dashlane auto-generated password on your platform, which in the end means I didn't subscribe...

<comment><AUTHOR> Happy to explain, please shoot me an email: email@example.com thanks!

<comment><USER6> Why explain if you can just accept arbitrary passwords, pass them through a hash function and feed its output (in hex format) into your exisitng password handling blackbox, whatever that wonder may be.

<comment><AUTHOR> I'm just the lowly CEO, I'll see if I can get our CTO to jump in and explain later. :)</comment></comment></comment></comment>


Tesla Model S Crushes Large Luxury Car Competition in USA - <AUTHOR> https://cleantechnica.com/2018/04/22/tesla-model-s-crushes-luxury-car-competition-in-usa/ <comment><USER2> No competition. Tesla's wont be sold that much as soon a all the subsidies disappear.</comment>


Stripe gave us a $20k advance - <AUTHOR> https://www.indiehackers.com/forum/stripe-gave-us-a-20k-advance-eabfac448d <comment><USER2> The word is "loan", they gave you a loan for which you are expected to pay interest.

Also if you're aware that comparable bank loans can be cheaper why not investigate that?

Lastly, if you don't need the money, all you did was agree to pay Stripe $2000 to hold theirs. :(

<comment><USER3> Just because you don't need money, it doesn't mean you cannot use it. Hopefully they will be able to use that money to speed up their revenue growth and quickly pay back stripe and be left at a higher revenue point than they started. But just because you are in a position where money helps you (pretty much everyone?) it doesn't mean you "need" the money as in you are searching for loans or investments or have some desperate need right here and now.

Edit to add: It's not a loan, they aren't accruing interest and the cost is fixed. This would be a weird type of deal if not for the 5% revenue fixed at paying back the advance and fixed cost. If not for that, they would essentially be getting a better and better loan the furter they waited it out, as the effective annual rate goes down as time passes. It's still true that the deal is better the longer you take to pay it back though, but the revenue payback means that you have incentive to pay it back fast, because that means you are making money. It's an interesting deal.

<comment><USER2> Just because the interest structure is different doesn't make it any less of a loan.

If you don't need the money, and don't even have a visible source of revenue or business plan, throwing away $2k USD + 5% revenue on the chance you might need credit someday is not the wisest of decisions.

</comment></comment></comment><comment><USER4> I've always wondered why there is not a lender that comes in significantly below market rates (say 8%) and only lends to high quality companies with consistent MRR. Go for volume lending route instead of earning higher rates.

What percentage of companies default on their loans to justify rates upwards of 20+%?

<comment><USER5> The irony of bank lending is that the companies that are safe to lend to, do not need the money. The ones that really need a loan are the ones that might not pay it back. When you do not need to borrow, your bank is constantly trying to encourage you to borrow money. When you really need money, the bank is not interested or wants a very high interest rate to compensate for the risk.

In this case Stripe has the most important information about you, your revenue numbers. So they can judge if you are a good risk or not, plus they spread the risk over many companies. Finally, they avoid the biggest cost on small loans, which is all the paperwork/admin on the backend.

<comment><USER4> Makes sense. I wonder if they also offered no fees (6,12,24 months) as a form of loan as well if that would be appealing to their customers. At the end of the term, you'd be responsible for paying back all the fees during the term plus interest.</comment></comment></comment>


You're only 23, stop rushing your life - <AUTHOR> https://medium.com/@susieshier/you-re-only-23-stop-rushing-life-d6ce19ee673c#.3cb5vndi6 <comment><USER2> I had just joined Amazon at 21 and felt the same anxiety. I was with another new hire in the kitchen when our principal engineer came in. We both asked him for some advice, as newly minted engineers, on what we could do to become most effective. His reply, "Go find a woman, get married and build something that matters- a family. You have 30 more years to get better at software engineering, you'll be fine."

<comment><USER3> That's actually terrible advice, in my opinion. Raising a family is REALLY hard work that requires a lot of time and dedication out of you. It also restricts what you can and can't do; quitting jobs that you hate or moving somewhere to seize an opportunity become astronomically difficult with a family.

Families are important, but why limit your potential early?

<comment><USER2> I think the take away was to avoid optimizing 'potential' and stop focusing on anything really. He meant go do something else with your free time, like meet people and experience new things.

</comment></comment></comment><comment><USER4> Oh, I can definitely sympathise with this article and it's message. I mean, I feel pretty much the same thing, and not just in a startup/work sense either. I simply cannot enjoy doing anything unless it's A: completely revolutionising some field or another, or B: better than just about everyone's work in the field. Which has led to some pretty miserable times these last few years, since there's always someone or some group that's absolutely amazing at anything and can seemingly do really well at it even if they put in less 'effort'.

Maybe I'll calm down a bit now and stop being obsessive over every little thing.

</comment><comment><AUTHOR> After having worked as a developer through my university years I partly regret it now because there was not much reason to start working at 18 and I missed all the university experience and lifestyle.

Lately my struggle to always do better than everyone is slightly smaller and I enjoy my life much more.

</comment><comment><USER5> Thanks for sharing my article. Glad to see people relate. I think it's still all part of the learning/growing up process.</comment>


AMD and Samsung Announce Strategic Partnership - <AUTHOR> https://news.samsung.com/global/amd-and-samsung-announce-strategic-partnership-in-ultra-low-power-high-performance-graphics-technologies <comment><USER2> So AMD licenses their RDNA stuff and Samsung pays royalties and licensing fees. Looks pretty run of the mill.</comment>


MicroPython - <AUTHOR> https://micropython.org/ <comment><AUTHOR> MicroPython is stellar. If you're building an embedded system for people to hack and customize, make the highest level abstraction of the embedded system in MicroPython so that users can easily modify/patch/contribute/hack your system with ease.

This is what Arduino and Arduino IDE did for millions of hobbyist, but it is time to ditch C/C++ for MicroPython.

In this [1] PyCon talk by Matt Trentini, a demo of QR code generation proves that with plain C and with MicroPython bindings, the performance is identical - 11.5ms. MicroPython _is_ slow, and if the QR code library was written in pure MicroPython, it would take 1500ms. Therefore, it is critical to put performance demanding code in C/C++ modules and compile a MicroPython bindings.

I think this is one of the best things that's happened to embedded development in a long time. Lua is nice but IMO Python is even better :)

There is also Async IO library support for MicroPython. So ISRs can trigger coroutines!

[1] [https://www.youtube.com/watch?v=437CZBnK8vI](https://www.youtube.com/watch?v=437CZBnK8vI)

<comment><USER2> The one big issue I've had with MicroPython is that it's a PITA to manage files on it. I use this hacky tool called "ampy" to do it, and wish that the device could just be mounted as a media device. CircuitPython, however, does accomplish this, with the microcontroller showing up just like a USB drive.

<comment><USER3> Bit of shameless plug, but I put this [0] together to make it easy to build a simple, flashable MicroPython image with your code included.

[0] - [https://github.com/dcmorton/esp32-micropython-image- builder](https://github.com/dcmorton/esp32-micropython-image-builder)

</comment></comment></comment><comment><USER4> If curious see also

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

also 2014 [https://news.ycombinator.com/item?id=6996692](https://news.ycombinator.com/item?id=6996692)

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

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

Many submissions but those seem to be the interesting threads.

<comment><USER5> There was also the submission about Pycopy recently, a fork of MicroPython: [https://news.ycombinator.com/item?id=23446721](https://news.ycombinator.com/item?id=23446721)

</comment></comment><comment><USER6> MicroPython seems to be heavily focused on embedded _systems_.

Is there any support for embedding it within an _application_ , i.e. as a replacement for Lua? Or is there another lightweight Python implementation (or Python-like language) that supports this?

<comment><USER7> Why would you want to replace Lua in this space? At least why replace with another dynamically typed, imperative scripting language, but without tail- call optimization? What would be the gain?

<comment><USER8> I was wondering the same as the parent, and in my case it's library support (e.g. NumPy) and compatibility/familiarity in the space (VFX) where Python is everywhere and Lua is unheard of.

<comment><USER9> If you want NumPy support in particular you basically have to use CPython.

The only other implementation that really supports it is PyPy which is not in any sense more lightweight.

<comment><USER10> Although much smaller in scope than NumPy, MicroPython (and CircuitPython) now have the ulab library which provides similar fast array manipulations:

[https://github.com/v923z/micropython- ulab](https://github.com/v923z/micropython-ulab)

</comment></comment></comment></comment></comment><comment><USER11> There also exists a Python-like language for when you only have a few kb of memory, and can't even run MicroPython. It's called "Snek":

[https://sneklang.org/](https://sneklang.org/)

<comment><USER12> That's cool. Hadn't seen that one.

What is a "few kb"? Because last I looked Micropython was like 256kB and the smallest JS interpreter that had foreign function interface was 53kB.

<comment><USER11> > _What is a "few kb"?_

From the manual:

> […] _could fit on our existing Arduino Duemilanove compatible hardware. This > machine has:_

> _32kB of Flash_

> _2kB of RAM_

[…]

</comment></comment></comment><comment><USER13> MaixPy ported Micropython to K210 (a 64-bit dual-core RISC-V CPU with hardware FPU, FFT, sha256 and convolution accelerator). It includes a general-purpose neural network processor, which can do convolutional neural network calculation at low power consumption, for example obtain the size, coordinates and types of detected objects or detect and classify faces and objects. It can load TensorFlow Light Neural Nets.

[https://maixpy.sipeed.com/en/](https://maixpy.sipeed.com/en/)

<comment><USER14> That is awesome! Unfortunately the K210 link on the site is giving me a certificate error so I'm a bit afraid clicking into it. Do you know if the library will work with ([https://www.seeedstudio.com/Sipeed-Maix- Cube-p-4553.html](https://www.seeedstudio.com/Sipeed-Maix-Cube-p-4553.html))?

<comment><USER13> I think it should. I have the Maix-Go ([https://www.seeedstudio.com/Sipeed- MAix-GO-Suit-for-RISC-V-A...](https://www.seeedstudio.com/Sipeed-MAix-GO-Suit- for-RISC-V-AI-IoT-p-2874.html)) and it works pretty well. I also own the m5stick-v which has the K210 builtin ([https://m5stack.com/collections/m5-core/products/stickv](https://m5stack.com/collections/m5-core/products/stickv)). I connect to them via screen on linux and get a micropython prompt in an xterm and can use it interactively. There is also an IDE available. See also the docs at M5Stack: ([https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_...](https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start))

</comment></comment></comment><comment><USER15> I once built a METAR light map like this - [https://slingtsi.rueker.com/making-a-led-powered-metar- map-f...](https://slingtsi.rueker.com/making-a-led-powered-metar-map-for-your- wall/)

However, I did it with an ESP8266 running MicroPython; I was impressed that such a small, cheap little computer was able to connect to the internet, retrieve XML, parse it (this step in particular), and update the state of each of the WS8211 lights with ease, all with some quick, easy-to-write Python.

<comment><USER16> I have an ESP8266 wired into my intercom buzzer for opening the door remotely[0]. It has been unreasonably stable and reliable. Many months, possibly into years, of consecutive uptime. I used the arduino IDE and modified demo code for a web server. The cheapo dev board had it's blue LED die (mercifully) but is still chugging along. It's crazy what these things can do.

[0] [https://jeremypoole.ca/posts/put-your-door-on-the- internet/](https://jeremypoole.ca/posts/put-your-door-on-the-internet/)

</comment></comment><comment><USER17> I think this is good for someone getting started with microcontrollers(similar to the Arduino)

However, one should not be disillusioned — I doubt this can be used to deploy a mass market product.

However, I can see micro-python's value in rapid-prototyping to some extent for someone who is not into embedded/firmware as much.

<comment><USER18> In my view, _nothing_ can be used to deploy a product, without further consideration.

My rationale for saying this is that in addition to programming in any language, you need to understand hardware, including safety. And I think that by the time a person reaches that level of knowledge, they have probably familiarized themselves with programming at a variety of levels from bare- metal C up to desktop software.

Now, I've only been playing with MicroPython (actually the CircuitPython fork) for a few months, and at this point haven't come up with a "scale" of project that needs more than bare metal C but less than a full blown operating system. But then again I haven't come up with _any_ good product ideas in that time period.

As I mentioned to a friend of mine: "Hi, we're programmers, and we're here to burn your house down."

Between the two real projects that I'm nursing along right now, one uses a FFT and the other an interrupt running at 170 kHz, so neither of those can be pure Python projects yet.

<comment><USER10> > one uses a FFT and the other an interrupt running at 170 kHz

Neither of those rule out using MicroPython. Though you are likely to have to do _some_ C work to achieve higher performance.

<comment><USER18> Yes, definitely. Any application that I can think of off the top of my head involves adding C code. This is not a hurdle, but would be for someone who is using Python to get into embedded programming at a beginner level. From the MicroPython documentation:

>>>Compiling the cmodule into MicroPython

>>>To build such a module, compile MicroPython (see getting started) with an extra make flag named USER_C_MODULES set to the directory containing all modules you want included (not to the module itself). For example: ...

This is not precisely for the faint of heart, but should not be prohibitive for a seasoned embedded developer. ;-)

</comment></comment></comment></comment><comment><USER19> MicroPython is amazing, it runs on very tiny microcontrollers not much else runs on, and makes development of hobbyist embedded projects orders of magnitude easier than C.

I backed it way back when, I think for the ESP8266 support, and have loved it ever since.

<comment><USER20> I wouldn't say "very tiny". For example, does it run (and can do something useful) on a 8 KB cortex M0 with 24 KB of flash?

<comment><USER21> For that, maybe snek[1] would be more suited.

[1] [https://sneklang.org/](https://sneklang.org/)

<comment><USER22> Snek's documentation has errors.

> _Like Python, Snek doesn't have an explicit Boolean type._

</comment></comment></comment></comment><comment><USER23> Does anyone have any experience beyond short programs/sketches with micropython? The most I've used it for is playing around with a microbit. How does it hold up?

<comment><USER24> Had it manage an Ethernet Phy IC via an MDIO interface, and an FPGA over SPI. The MDIO was bit-banged from micropython, and SPI is a built in feature. This was running on an ESP32 creating a WiFi to Gigabit Fiber bridge (obviously not at gigabit speeds).

I never thought it would be that easy, but it converted the task of writing something that does MDIO, SPI, and WiFi (with a webserver) in C, to basically a day of work.

Also the "feel" of running an interactive python shell on a tiny 1x3cm board as part of the initial bring-up process after manufacturing is just awesome. Controlling every IO "manually" via the interactive shell is so much better than seeing your prepared C code crash and burn, and only then start debugging it.

</comment></comment><comment><USER25> Neat, but not very practical. To be of any use you still need board support to drive the I2C, SPI, etc which means you have to use C anyhow.

You can buy one of their boards with the BSP but that's over $40, yikes.

To use micropython you need at least an M4 class micro-controller so that a $5 or greater part.

Or you could just stick with C and use a M0 class micro that costs < $1.

A difference of $40 in BOM cost makes it only applicable to the hobbyist. Which is fine, but its just a toy.

<comment><USER26> Going to disagree here, i2c and spi work fine in micropython.

Is it as fast as C? No. Does that mean it's useless? No.

The absolute coolest thing is to take a $2 Wemos D1 clone, put micropython on it, hook it to a sensor (I've been using temp and humidity sensors lately) and have it periodically fetch "[http://webserver- ip/temp?t=<value>&p=<value>"](http://webserver-ip/temp?t=<value>&p=<value>") every 10 seconds and have a little python webserver sitting on an machine on your network that is stuffing the values into influx or some other DB.

This is trivial to do, and takes little to no embedded coding experience on the ESP8266. That's a win as far as I am concerned.

<comment><USER3> I've done something pretty similar that with my project here [0]. Instead of using MQTT the ESP32 feeds directly to an InfluxDB database.

[0] - [https://github.com/dcmorton/esp32-dht22-upython](https://github.com/dcmorton/esp32-dht22-upython)

</comment></comment></comment><comment><USER6> > _MicroPython implements the entire Python 3.4 syntax_

Python 3.4 is now over 6 years old. Are there plans to add features from newer Python releases? Or perhaps the developers feel that Python's newer features wouldn't "pull their weight"?

<comment><USER18> I'd be interested in knowing how much bigger Python has gotten since 3.4 time frame. If course it's not unthinkable that it could always get smaller if there's a lot of refactoring going on, but that might be wishful thinking.

<comment><USER10> Resource usage is carefully considered when introducing new features; but there are cases where it has becomes smaller. The recent addition of LittleFS meant that a couple of KB more RAM was available at boot for example.

</comment></comment></comment><comment><USER27> In my experience, one should understand the c dependencies to use micro/circuit python for most of desired uses. Still great stuff. The mere decrease in linecount for simple algs has real value.

<comment><USER28> For plumbing stuff together it's probably great. Anything lower level that requires performance or real time constraints will probably not do.

<comment><USER29> Micropython can do some real-time stuff. It's limited, but a bit easier in my experience than getting a Preempt-RT running on a Raspberry Pi.

</comment></comment></comment><comment><USER30> The coolest application of Python on uCs that I've seen recently is in the custom mechanical keyboard space:

[https://github.com/makerdiary/python- keyboard](https://github.com/makerdiary/python-keyboard)

I'm loving the thought of being able to customize my keyboard's functions by just dropping python files onto its USB drive. Looking forward to using this on my Dactyl-CC build.

</comment><comment><USER13> Check out uiflow from M5Stack. It is a web-IDE which uses micropython for ESP32. You can use the M5stack grove sensors. The IDE generates python code which can be used on any MicroPython Implementation (ESP8266, EPS32, Raspi, CircuitPython, Micro:Bit, you name it) and the python libs are all open source.

[https://flow.m5stack.com/](https://flow.m5stack.com/)

</comment><comment><USER31> I'm more familiar with CircuitPython because I've bought a few boards that could run it, though I've stuck with Arduino so far. It seems to be a fork started by AdaFruit, but it looks like there are other vendor boards it works on like SparkFun, Teensy, and Arduino.

What boards work with MicroPython? On their website, they only list their own?

<comment><USER32> You have to find the version of MicroPython that has specifically been ported to your board. In addition to the PyBoard (STM32), there is ESP8266, ESP32, BBC Micro Bit (ARM Cortex-M0), and WiPy (CC3200)

</comment></comment><comment><USER33> Remarkably, it has recently gained (still not mainlined) 68000 support: [https://twitter.com/micko_mame/status/1256221039308267520](https://twitter.com/micko_mame/status/1256221039308267520)

</comment><comment><USER34> I've done quite a few firmware development projects (they're commercial type and deployed in fitness industry, police vehicles, etc). They type of thing they do, I have a hard time imagining doing it in Python.

</comment><comment><USER35> For rapid GUI application prototyping LVGL has micropython bindings: [https://github.com/lvgl/lv_micropython](https://github.com/lvgl/lv_micropython) .

</comment><comment><USER36> I've been doing microprocessor stuff since the basic stamp 2 came out. (not that I'm an expert, I've just been fiddling over a long amount of time)

I know that previous me was very scornful of micropython (the original boards were pretty expensive and power hungry)

However, the ESP* and SAM21 microprocessors have changed my opinion. Yes python is still wasteful. _but_ I can now operate in the microamps, and for less than £7

Not only that, these micro controllers has a wealth of documentation and addons.

I feel like I've discovered the arduino all over again.

</comment><comment><USER37> LEGO ist using it for SPIKE Prime and their related upcoming 51515 robotics set. There is even an inofficial firmware for their regular Powered UP electronics enabling MicroPython.

</comment><comment><USER29> They really push the pyboard which is cool and all, but imho, the killer application for Micropython has been the ESP8266 port and now the ESP32.

The original pyboard can be had for around $20 and used to be closer to $30. The ESP8266 is a couple dollars, and the ESP32 is just north of $5.

Obviously, we're only talking about a handful of dollars, but for embedded systems, it matters.

</comment><comment><USER13> Seeedstudio provides ArduPy for their Wio Terminal which can generate micropython libs from Arduino C Libs. So you can script Arduino Code with micropython on the device. As IDE they provide plugins for MS VisualStudo Code.

[https://wiki.seeedstudio.com/ArduPy/](https://wiki.seeedstudio.com/ArduPy/)

</comment><comment><USER38> Another great resource for micropython tutorials is Miguel Grinberg's blog [0]. In fact his blog is a gold mine for Flask development as well.

[0] [https://blog.miguelgrinberg.com/category/MicroPython](https://blog.miguelgrinberg.com/category/MicroPython)

</comment><comment><USER39> Fpga version so cover the really open issue?

Single global thread issue still around?

And whilst I like ulisp it is tie down with arduino and hope this will go out. Trying the js microprocessor implementation and let these two compete at least.

</comment><comment><USER40> Can someone help demystify this for me?

If I got out a microscope and looked at cross sections of a pyboard, could an expert point out the sections of physical gates and other parts that implement each python bytecode?

<comment><USER41> No - this is implemented in software on a general-purpose processor. You can't read flash contents optically with a microscope, so the software part is invisible. You can certainly identify the bits of the general-purpose processor though.

</comment></comment><comment><USER42> I think Lua is also and already great at embedded usage? Of course the more the merrier.

tinygo, micropytho, lua, there were a few mini javascripts but I lost track any of them

</comment><comment><USER43> Has anybody got requests and/or full HTTPS protection working?

</comment><comment><USER44> Can anyone comment on what parts of Python are not in MicroPython?

<comment><USER10> The language is surprisingly complete; bigger differences are found in library support, even standard library support. Libraries that are memory efficient are easy to port but many Python libraries assume vast amounts of memory so it can require significant effort to modify them to use few resources.

</comment></comment><comment><USER45> Perhaps it would be useful to package it for mobile phones.

</comment><comment><USER46> Have a few M5's, they're great little gadgets.

</comment><comment><USER47> anyway to get wifi?

<comment><USER48> Ive used the nodeMCU (ESP8266). Its arduino compatible, costs around $3 and has WiFi</comment></comment>


"Microsoft has changed as a company and is becoming more open" - <AUTHOR> https://github.com/microsoft

<comment><USER2> [https://news.ycombinator.com/item?id=8078355](https://news.ycombinator.com/item?id=8078355)

Also, it used to say this:

        Microsoft has changed as a company
        and is becoming more open in the way
        that we collaborate with others.

Will it change?

</comment><comment><AUTHOR> Is this really their org description??

"Microsoft has changed as a company and is becoming more open in the way that we collaborate with others."

</comment><comment><USER3> Any news on when one will be able to install Windows on a machine with an existing Linux partition and not have the installer overwrite it?</comment>


Ask HN: Are there any free leal texts available for entrepreneurs - <AUTHOR> I am looking forward to learn basic law including criminal law just because it might be helpful. Are free texts available online for the same? <comment><USER2> You have a typo in your title. "leal" should be "legal".</comment>


Ask HN: Why doesn't Google use affiliate links in Amazon search results? - <AUTHOR>

<comment><USER2> Whose affiliate link?

A Google specific one? If that's your question then the answer is trust.</comment>


A Tale of Do-It-Yourself Gene Therapy - <AUTHOR> http://www.technologyreview.com/news/542371/a-tale-of-do-it-yourself-gene-therapy/ <comment><AUTHOR> Regardless of whether this particular instance turns out to be legit or fake, I think we're at the beginning of the "garage startup" era for this stuff, with all that implies.

</comment><comment><USER2> Disruption at work. The cost of gene therapy is plummeting, and the existing establishment wants you to do things the slow expensive way when it is becoming cheap and fast. When people try the cheap and fast way, much pearl- clutching results.

Here is a Reddit AMA with Liz Parrish that provides details on the gene therapies used:

[https://www.reddit.com/r/Futurology/comments/3ocsbi/ama_my_n...](https://www.reddit.com/r/Futurology/comments/3ocsbi/ama_my_name_is_liz_parrish_ceo_of_bioviva_the/)

Some of my earlier comments on the BioViva announcement:

\----

BioViva is one of the small groups interested in bringing telomerase therapies to humans sooner rather than later. It seems they have started in on their small long-term trial of human gene therapy for telomerase activation, and have treated the first volunteer.

I should say that at any given time there is a fairly large gap between what can be done in human medicine, the technology that actually exists and works, and what is being done in trials. Most of this gap is due to regulation, and the rest of it because development groups want to have a reasonable certain that what they are doing actually works, does more good than harm, and so forth. The regulatory process might last a decade, while the actually useful part of that testing (does it basically work, and is the risk profile sufficiently defined and acceptable to patients) is only a few years. As the cost of research and development in the life sciences falls, it will become increasingly untenable that a huge ball and chain slows progress thanks to regulatory risk aversion, and a growing number of initiatives will forge ahead and build anyway. Some years ago I proposed the Vegas Group fable on the growth of DIYbio into action based on the falling cost of that action, something that I think will happen in the fullness of time: alternative roads that bypass official regulation in favor of faster progress, an inevitability in an environment of low-cost research. Also, I think, a necessity.

What about the science here? I've never been a big fan of telomere lengthening approaches, as average telomere length as it is measured today in immune cells looks very much like a marker of the progress of aging, an end stage consequence far removed from root causes. Telomeres shorten with cell division and new long-telomere cells are delivered into tissues by stem cell populations. Thus average telomere length in immune cells reflects some combination of immune health and stem cell activity, both of which are known to decline with age. You can't argue with the fact that telomerase gene therapy has been shown to extend life in mice, however, though you can certainly note that the size of the effect has been getting smaller as the research groups have refined their data and approaches.

How does this work to slow aging in mice? At this point I lump enhanced telomerase activity into the general category of approaches that either probably work or intend to work by boosting the activation of old stem cell populations, resulting in increased repair and tissue maintenance and thus a slower decline into frailty and organ failure. More telomerase doesn't seem to raise cancer risk in mice, but mice have very different telomere dynamics and cancer risk profiles than we humans. The fastest way to figure out what is going to happen in humans is of course to try it, and kudos to anyone volunteering at this stage, but I'd be waiting for a few more years of testing first in animal or tissue models closer to human telomere dynamics. In part that decision would be driven by the fact that I don't think that this is the best approach to move ahead with practical applications, to push ahead and get things done. I absolutely agree that pushing ahead to get things done needs to happen, but I'd rather see this sort of boldness for SENS treatments like senescent cell clearance.</comment>


Ask HN: How Important is HN cred? - <AUTHOR>

In a recent thread HN I criticized a guy for being a user who had never done anything on the sight except submit his own article.  Then another user here, lliiffee, called me on it saying...
I think you are wrong to criticize him for submitting his own post. This is the only thing he has submitted, so it isn't like he is spamming the new page. It would be trivial to make a sockpuppet before submitting, so I think we should applaud the honesty.
Now to be honest I don't know if I'm right or wrong here.  I understand people with a blog are going to mostly post to that blog and if they happen to think the audience here might enjoy one of their posts I have no problem with them putting it up.  My issue with the guy in question was that he'd signed up 3 hours prior meaning he hadn't even been a member before submitting.
That bothers me.  If you have a blog than you need to go looking for links to comment on or at least stories to inspire posts.  So why not use HN to do that and give the posts an up/down vote while you're at it.  HN has the lowest threshold for signing up that I have ever seen.  So it just seems like at least signing up and participating in some way should be a pre-requisite to submitting your own stories.
Anyway, any thoughts on the issue are appreciated
(Disclaimer: I'm in no way involved in the management of HN and my power here is limited to acts of virtually no consequence.  I'm just curious from a "what the community thinks" view) <comment><USER2> If the article was good, I don't mind. Now, if he continues to only post links to his stuff, that's another story.

</comment><comment><USER3> i'll give people one free pass on creating a new account and then submitting their own stuff. but after that, i expect participation and/or non-self- serving submissions. multiple submissions without contribution is where i start to criticize.

<comment><USER4> I agree with this - I think a lot of people lurk on HN (like me) and only join when they've got something worthwhile to say. It's when it's all take and no give that it becomes a problem.

<comment><AUTHOR> The only question I have with this is that I don't see why you wouldn't just register. I think most people contribute to HN simply by voting things up or down. I don't have the actual figures but I strongly suspect those people rarely if ever post. I don't have a problem with that.

But those people are "giving" with their vote and the people who don't register are "taking" albeit taking something pg is clearly willing to give (bandwidth). So when all you have to do to give back to the community is create a password and click the mouse on a few arrows why wouldn't you.

</comment></comment></comment><comment><USER5> I was looking at a user account just this morning. Only 30 days or so old, and everything he submitted was from the same commercial site. There were a dozen or so submissions, and no comments from him at all.

Something funny about that.

I'd rather have people post their own stuff than having people peddle commerce sites. After all, I think the point of the board is to form a community of hackers, not just sit around talking about the latest PR event by Microsoft or Google or whatever.

<comment><USER6> You're on to something there Daniel, I would say that it's fine to submit articles from your own blog, I do it, and you do it. But we don't do it for commercial gain, we do it because we know the community and think they might appreciate the posts. And probably a wee bit of vanity.</comment></comment>


Forced Apple ID Security Questions - Choice of 3 - <AUTHOR> https://discussions.apple.com/thread/4052317

<comment><USER2> I'm confused why one of my Apple IDs has one security question/answer, and the other has 3. One is iCloud, the other is iTunes/developer. (both are long random strings as answers, though)

The whole Apple ID thing is pretty obnoxiously structured. Merging MobileMe (then iCloud) and non-iCloud accounts isn't possible, so you need to maintain two.

</comment><comment><USER3> Can't these folks login to their iTunes account in a browser, even the iPod browser, and set the final question there?</comment>


Which milk alternative should we be drinking? - <AUTHOR> https://www.bbc.com/future/article/20200207-which-milk-alternative-should-we-be-drinking <comment><USER2> Fortunately, if you're not lactose-intolerant, you can just drink real milk, which is highly nutritious and considerably less processed than any alternative.

Best if you drink whole milk, because 2 grams more fat in a glass isn't going to hurt you, and actually makes it taste good.

<comment><USER3> Milk is so heavily processed you wouldn't recognize it if you were drinking it right off the cow's utter.

<comment><USER2> In fact, I think I would. Sure, the butterfat floats on top when you've squeezed it from the teat into a pail, but it's not like it's some bizarre engineered substitute.

</comment></comment></comment><comment><USER4> It's been well known for some time that dairy has a lot of problems, everything from Puss, to being linked to prostate cancer in men, and it's even been linked to type 1 diabetes, and numerous other health concerns. And, it's not like you can just drink the fat-free variety and be okay. It's the actual dairy proteins that are problematic, not that the fat doesn't have problems either.

Oat milk tastes great and it's good for you, for the most part. The problem with oat milk is, they add a bunch of oil to it. they say it's just 2%, but I think thats by volume or mass. if they go by it's actual proportion (by calories), its nearly 25%!

Almond milk is great for you, but it doesn't taste as good as real almonds, so why drink it?

Soymilk is the one I really like but they add a bunch of stuff to it like calcium carbonate, which really didn't need in the first place. you can find soymilk with nothing added to it, but you really got a go to one of those specialty shops.

Personally, I like to make homemade quinoa milk, it's pretty good and you can adjust how much thickness you want based on the ratio of water. it's easy to make.

<comment><USER5> > Almond milk is great for you, but it doesn't taste as good as real almonds, > so why drink it?

Because there are some foods that only make sense with a milk substance added (eg cereal). Almond milk, alone, isn't very ... tasty. Usually there are variants (sweetened, vanilla, chocolate) because it's not great. Almonds are also terrible for the environment, vis a vis water conservation, given what it takes to grow them.

I currently prefer Flaxseed milk.

<comment><USER6> > Almonds are also terrible for the environment, vis a vis water conservation, > given what it takes to grow them.

From the article:

> Even almond milk, a notorious water-hogger, takes less water to produce than > dairy – needing on average 371 litres of water per litre of milk produced, > compared to dairy milk's 628 litres. Rice milk follows shortly behind, > needing 270 litres of water per litre of milk. Soy and oat, on the other > hand, need just 28 and 48 respectively.

</comment></comment></comment><comment><USER7> Unpopular opinion: If you can digest milk in your adulthood, then drink a glass of whole fat milk everyday. The nutrition and fat in it is wonderful for you.

<comment><USER3> That's A. not true as many studies have shown and B. very bad for the environment and for the cow and the calf that were required (to be killed) to get that glass of milk.

<comment><USER7> Human existence is bad for the environment. Not every comment has to take a turn into a social or political issue though right?

Milk is nice. If you can drink and enjoy it, enjoy it. Sounds simple.

<comment><USER8> You're really not thinking this through. There's an entire supply chain of suffering behind that milk. If you don't know what I'm talking about, consider looking at any footage from the inside of a dairy farm. It's not pretty.

<comment><USER9> In an ecosystem, all supply chains are built on suffering. Ecosystems do not evolve to decrease suffering.

<comment><USER8> But we can make individual choices to decrease overall suffering. You have that power.

</comment></comment></comment></comment></comment></comment><comment><USER10> How about diy Rice milk. The recipe below is by Scott Jurek:

Rice Milk 1 cup cooked brown or white rice 4 cups water ⅛ teaspoon sea salt 1 tablespoon sunflower oil (optional)

Combine the rice, water, and salt in a blender. If you want a creamier milk, add the oil. Blend on high for 1 to 2 minutes, until smooth. Pour into a container, cover, and refrigerate. Rice milk will keep for 4 to 5 days.

Makes 5 cups

</comment><comment><USER11> Plain water. Adults don't need to drink milk.

<comment><USER12> "don't need to" is a weird metric. You "don't need to" very many things.

<comment><USER4> Perhaps what he meant is: you don't need to drink milk to get the following nutrients: Protein, Calcium and Vitamin D. These are often endlessly touted as the reasons why people need Milk (in milk ads and marketing), to the point of where people are now repeating it in health blogs. Even health professionals are repeating it as well (for a long time now).

</comment></comment></comment><comment><USER13> Milk was one of the last animal products besides eggs in my diet — mainly in ice cream, and lattes. Not a fan of almond milk with espresso drinks. Too rancid or bitter to my taste. Oat milk did the trick with the coffees. It froths well, and can make nice latte art.

Oatly now makes ice cream, which I love. They make a plain oat flavor one that's really delicate and nice.

Bringing it back to the subject of the article, organic can really make a difference with tree crops - less pesticides wreaking havoc with pollinators, etc. If you really don't want to give up dairy, pasture raised can be a part of regenerative agriculture, if done at a sustainable scale.

</comment><comment><USER14> 'should'? It'll be a cold day in hell before I take any advice whatsoever from the BBC.

</comment><comment><USER15> We should be drinking water. If you have to drink a milk, then do a variety in moderation.

<comment><USER16> Well yeah, everything should be in moderation. Figure out what macros your body needs, and get as much variety in filling those out as is reasonable.

I drink mostly water, but I probably have ~1 cup of milk on average each day (e.g. no milk one day, 2-3 cups another day, etc). I go for whole milk because the higher fat content means I'm having less sugar per calorie, and it makes me feel more full than other kinds of milk. If you like milk, consider increasing the fat content and decreasing the total amount you drink so you're more satisfied when you do have milk.

If you're having multiple coffees everyday with tons of sugar, switching from dairy to non-dairy creamer isn't the right optimization...

<comment><USER17> A shot of half-and-half in your coffee is only around 45 calories. You'll burn that off if you take a fifteen minute walk while having your coffee.

Optimizing the dairy while loading in the sugar is completely wrong from a health perspective.</comment></comment></comment>


An Intuitive Guide to Linear Algebra - <AUTHOR> http://betterexplained.com/articles/linear-algebra-guide/ <comment><USER2> As an electrical-engineer turned machine-learning-grad-student, linear transformations have been involved in most everything I do since my first year of undergrad. But all this time, I've done matrix multiplication the way I was taught in high school: "The (i,j) element of AB is what you get by walking right across the i'th row of A while you walk down the j'th column of B, taking the sum of products as you go."

It works, but there's no connection between that process and the intuition of a linear transformation; it's just a rote computation. And checking a long string of matrix multiplications to see if they intuitively make sense (shouldn't everything intuitively make sense?) is especially aggravating when you constantly have to interrupt your intuition to switch to a rote calculation.

I never thought to think of the columns of B as vectors that physically travel through A; to think of a dataflow or pipeline from right to left on the page. Sure, it's not a cure-all, but it'll be a useful mental tool to have.

Oh, and it's also an excellent introduction to the subject, although the Linear Operations section gets a bit muddled... first something's not a linear operation, and then it is, wat? Still, an excellent post.

<comment><USER3> You might get some mileage out of thinking of a row in the matrix product as a dot product, with the intuition that goes along with that. The dot product is perhaps easier to tie into the geometric intuition you have for linear transformations.

</comment></comment><comment><USER4> Strang from MIT has an extraordinary set of lectures (his textbook is even better): [http://ocw.mit.edu/courses/mathematics/18-06-linear- algebra-...](http://ocw.mit.edu/courses/mathematics/18-06-linear-algebra- spring-2010/video-lectures/)

<comment><USER5> Can't say enough good things about Prof. Gilbert Strang <http://www- math.mit.edu/~gs/> He is one of my heros, and yeah, I have copied his Linear Algebra lectures to CD so I can speed them up, stop them, and in case they ever disappear from the net. Not to take away from the OP, who I think has some good ideas for making this stuff intuitive.

</comment></comment><comment><USER6> > Linear algebra gives you mini-spreadsheets for your math equations.

Okay, that lets you visualize it (in the finite case) but it's a terrible way to sell it. Spreadsheets are booooring. Did you know that functions are vectors? Okay, better. Did you know that quantum mechanics is all about linear algebra? Okay, sold!

1\. Almost any time you work in more than one dimension you will want linear algebra in your toolbox. There are a zillion methods for solving (non-linear) equations out there, and in more than one dimension, they use linear algebra. Newton's method? Incredibly useful in practice due (quadratic convergence rocks!), and with some linear algebra sauce BOOM you have Newton's method in as many dimensions as you can sneeze at.

2\. Oh, by the way... did you know that the Fourier transform is linear?

3\. Back to quantum mechanics... there's a thing you can do with a linear operator (a matrix is a kind of linear operator) where you get the "spectrum" of the linear operator. It's useful for making sense of big matrices. But in QM, the wavefunctions for electrons are described as eigenfunctions of a linear operator, and taking the "spectrum" of the linear operator gives you the actual spectrum of light that the chemical under study emits. Hence the name, "spectral theorem". It may be linear algebra on paper, but it's laser beams and semiconductors in the real world.

4\. Oh hey, want to learn about infinite-dimensional vector spaces? Maybe some other time..

5\. It's hella useful for modeling. Any model is wrong, but Markov processes are useful. Say you run an agency that rents out moving vans, and you have facilities in 30 cities. Vans rented in city A have a 10% chance of being dropped off in city B, 7% in city C, 9.2% in city D, etc. At this rate, how long till you run out of vans in city F? It's a differential equations problem with like 30 different equations! Or you could rewrite it as a single equation with matrices. You'll end up with weird things like 'e^(A*t)' where A is a matrix, and you thought "no way I can exponentiate to the power of a matrix" but spectral decomposition is like "yes way!" and you can solve the equation by diagonalization. Radical! (Basically, linear algebra rescues differential equations from the pits of intractability. I'm using rental vans as an example, but it could be a chemical reaction or a nuclear reaction or a million subway riders or whatever you want.)

So the question is:

Do you find economics, quantum physics, chemistry, engineering, classical mechanics, machine learning, statistics, etc. useful?

Then get some linear algebra in you!

<comment><USER7> Hate to do this (but will have to anyway because you're misrepresenting that authors article),

\- you've mixed in with nonlinear phenomena (most physical processes) with linear, and there's less and less reason to pretend linearity with increasing computer speeds (although in fairness you alluded to models being wrong)

\- poo pooed spreadsheets without explaining why (you alluded to QM etc. but they don't care about useless proofs in linear algebra unless they're pencil pushing time wasters)

\- implied infinite-dimensions is practically useful when it isn't (unless you're a mathematician/theoretical-somethingist seeking to extract tax-payer money)

There's little need to get linear algebra in you unless you want to waste time.

<comment><USER6> Hate to do this, but it seems you just don't understand jack about linear algebra. I'm not even sure you read what I wrote.

1\. Yes, I mixed in linear and non-linear processes. My point is that you use linear algebra even when working with non-linear processes.

2\. Yes, I poo-pooed spreadsheets as a bad way to market linear algebra (I thought that was clear?)

3\. Yes, I implied infinite dimensions is useful. Linear algebra in QM tends to be infinite-dimensional.

I'm reading a lot of hostility towards mathematics in general and linear algebra specifically (you've put a bunch of toxic comments all over this thread), and I'm not really sure why.

<comment><USER8> > Yes, I implied infinite dimensions is useful. Linear algebra in QM tends to > be infinite-dimensional.

You don't have to appeal to QM for their usefulness. Function spaces are important in applied and computational mathematics because of their use in understanding integral equations (the theory of integral equations before Hilbert spaces was a giant mess), partial differential equations, calculus of variations, approximation theory, etc. No doubt marshallp will respond that this is all bullshit because it ultimately boils to finite processes running on finite state machines, where there are no infinite sets in sight, let alone infinite dimensions. The equivalent approach to physics would be an extreme form of empiricism, banning the use of concepts like electrons (as some logical positivists actually proposed to do in the early twentieth century) and requiring all physical laws to be stated in terms of directly observable phenomena, whatever that means.

<comment><USER6> Or put another way, I think infinity is a good approximation to "very large", and big things are everywhere.

<comment><USER9> Not only very large, but also to: Made of many small components.

</comment></comment></comment></comment></comment></comment><comment><USER10> I hope that this matches how some people think enough to help them.

For me it is too computational. I prefer understanding the topic from first principles as described at <http://news.ycombinator.com/item?id=4086325>. (Then again I don't particularly like spreadsheets either.)

</comment><comment><USER11> I found "Linear Algebra Done Right" to be a much more intuitive introduction to the subject. It doesn't get to determinants until the end.

<http://linear.axler.net/>

After going through that course I finally understood things like eigenvectors, null spaces, and projections. Now I see them everywhere (unless you think that's a curse)

</comment><comment><USER12> Funny, I'm actually working on a game that intends to teach some of this stuff to a non-mathematical audience.

Linear algebra is so far-reaching, I find it surprising that other branches of mathematics often seem to get preferential treatment (usually normal algebra and geometry), in spite of the fact that linear algebra is both:

a) fairly advanced (i.e. not often taught in school, at least not the deeper stuff)

b) not very difficult to learn (unlike lots of other 'introductory' topics in mathematics).

Perhaps there is something about matrices (being mere tables of numbers for most folks) that people find unattractive, almost statistics-like.

(On the other hand, it could be a simple extension of the symbol barrier [1], given those long vertical brackets.)

[1] Prof Keith Devlin introduces this concept here: [http://profkeithdevlin.org/2012/02/22/how-to-design-video- ga...](http://profkeithdevlin.org/2012/02/22/how-to-design-video-games-that- support-good-math-learning-level-3/)

</comment><comment><USER13> "The eigenvectors are the axes of the transformation" = mind blown. After several engineering courses, studying eigenvectors in an advanced math class and still _no one_ could put it this simple. This guy is amazing.

<comment><USER14> His description of the determinant, too. I hadn't heard that explanation until a second semester of real analysis, when learning the proof of the Inverse Function Theorem (an amazing thing to study, by the way, connects many the dots between linear algebra and calculus).

Even then, it was a question I had to ask my brilliant, constantly-pissed looking young professor. "Hey, uh, the Jacobian... what does the determinant mean, uh, geometrically?". He looked at me like a slug, before explaining it was the measure of the newly mapped unit square. Fireworks went off in my head. Two linear algebra classes before only ever explained it by its algorithm or its usefulness (e.g., ∃ A^(-1) for A \in R^{n,n} iff det(A) != 0)

Side note: that professor had the most effective teaching style for pure math I've ever seen. Besides lectures that expanded on the contents of Rudin and interesting problem sets, he gave us a list of a hundred theorems, propositions, and exercises. Told us the final exam would be six problems, four of which would come from that list, another of which would be a clever new one, the last something truly hard.

Never learned analysis better than when sitting down and working through (not memorizing) each of those proofs and theorems for possible later recapitulation.

<comment><USER15> Determinant as volume of the transformation is cool, but I still don't "get" the determinant intuitively despite many years of math. In particular, why does the determinant work to solve linear equations (i.e. Cramer's rule)? And what's the motivation behind the formula for the determinant? (I realize these questions are a bit vague, but I'm hoping for a more intuitive answer than "that's just the way the math works out".)

<comment><USER16> One approach to this is geometric algebra. I couldn't find a good reference that explains it intuitively, but there's this: [http://en.wikipedia.org/wiki/Comparison_of_vector_algebra_an...](http://en.wikipedia.org/wiki/Comparison_of_vector_algebra_and_geometric_algebra#Matrix_Related)

</comment></comment></comment></comment><comment><USER9> What the author uses as his strawman is a linear algebra course for engineers.

As mathematicians, we didn't do any of this matrix and vector stuff with numbers when introducing linear algebra in university. There were a bunch of axioms, and you proved things. That's how you know.

What the author sees as abstract "(2d vectors! 3d vectors!)" was way more applied than the stuff we dealt in.

But, granted, the purpose wasn't learning about how to get mini-spreadsheets for equations. It was about how to rigorously navigate a useful axiomatic setting.

(Later on, we proved that you can find a base, and write down your linear transformation as a bunch of numbers and call that a matrix; same for points and vectors. But we always saw that as somewhat ugly, and anyway limited to the finite dimensional case.)

<comment><USER7> Are there practical applications for proving theorems? It seems like it's the full employment act for pencil pushers.

edit: downvoters downvote instead of providing refutation. A lot in common with fundamental religionists.

<comment><USER6> If you can't prove a theorem, then it's not a theorem, it's a conjecture. Conjectures are not as useful. For example, the Shannon-Hartley theorem tells us under what circumstances it is _possible_ to decode a radio signal. That theorem lets us design, e.g., cell phone networks.

Theorems are useful in all sorts of unexpected ways. At the turn of the 20th century group theory was considered a worthless corner of mathematics, but understanding group theory allows modern chemical instrumentation to work.

edit:

> It seems like it's the full employment act for pencil pushers

> downvoters downvote instead of providing refutation. A lot in common with > fundamental religionists

You've proven the downvoters right by piling one ad hominem attack upon another.

<comment><USER7> The example you've described (radio signals) is just a method of winning an argument. It doesn't actually help you, you practically do it by writing a computer program that tries out different parameters to get the right one.

<comment><USER6> I'll explain in more detail.

Let's say you need a communications channel with a 300 Mbit/s capacity. Shannon's theorem lets you know what kind of parameters make that possible -- namely, bandwidth and signal-to-noise ratio. From there, I can make an informed decision about the entire signal chain. Once I choose the bandwidth, the theorem tells me the SNR so I can assign a noise budget to each of the components. If we assume that the noise is Gaussian, we can calculate total noise level as the root sum of squares of the noise levels of the individual components (don't forget to multiply by the gain). I can look at an amplifier IC's spec sheet and immediately say, "that's too noisy" or "that's overdesigned, I think I can get something cheaper".

And thanks to theorems we got from the field of real analysis and statistics, we know that the sum of Gaussians is itself Gaussian. So rather than sticking two components together and measuring the noise, or running a computer simulation, I can simply square, sum, and square root.

Each of these theorems reduces the amount of work necessary -- whether by pen and paper or by computer -- by an enormous factor. But if you can describe in similar detail how the computer program would work, I'll acknowledge your greatness.

<comment><USER7> That's just a few parameters that you avoided having to tune, a few milliseconds of computer time. I'm not great, just questioning basic assumptions that have been handed down from a time before computers were around.

<comment><USER6> You keep on asserting that the task -- without domain knowledge of Shannon's theorem -- is solvable by computer. Can you describe how such a computer program would work? I'm unconvinced that the computer program would get a reasonable result before you run out of money paying for it.

<comment><USER7> The Shannon theorem is basically voided by compressive sensing. But all of this (shannon+compressive) was a waste of practical people's time anyway. It's justification for pencil pushers who don't want to do real work.

<comment><USER17> [http://www.youtube.com/watch?v=1orMXD_Ijbs&feature=relat...](http://www.youtube.com/watch?v=1orMXD_Ijbs&feature=related)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> Terry Tao has a great set of lecture notes available online, too. <http://www.math.ucla.edu/~tao/resource/general/115a.3.02f/>

<comment><USER19> This should be at the top of this HN thread. A shame that it's buried down here--these look extremely valuable.

Thanks for the link!

</comment></comment><comment><USER20> These're good too

[http://linear.ups.edu/xml/latest/fcla-xml-latest.xml#fcla- xm...](http://linear.ups.edu/xml/latest/fcla-xml-latest.xml#fcla-xml- latestli14.xml)

<http://joshua.smcvt.edu/linearalgebra/book.pdf>

Also, the common 1st year texts (Anton, Lang, Hoffman/Kunze and Friedberg/insel/Spence) can be found easily for cheap, used. The old edition of Strang I used to have was good too, but some people react really strongly when you bring it up. There's lots of ways ot sequence LA and the needs of EE's, econometrics/game theory, prob/stats and applied mathies are different from physics/math majors. Look at ToC's and read the Holyoke prof's writeup:

[http://www.amazon.com/Introduction-Linear-Algebra-Fourth- Gil...](http://www.amazon.com/Introduction-Linear-Algebra-Fourth- Gilbert/product-reviews/0980232716/)

(i _think_ they're 1st year texts, my Dad's a physics prof and he started talking about determinants around 7th grade)

</comment><comment><USER21> Nice work. It's a richly geometric area.

Other things that might be nice to include are dot products (projecting one vector onto another as a measure of co-linearity) and rotation matrices (you could keep it to 3x3).

</comment><comment><USER22> I think it's much clearer to define everything in terms of vector spaces and linear operators.

<comment><USER23> I entirely agree. People tend to run away from abstract math, with the impression that it's difficult. But the whole point is that a more abstract view of these things makes them easier to understand, not harder.

<comment><USER24> The problem is that abstractions are designed to make hard problems harder. Someone who has never seen the type of problem that would make a given abstraction useful would not be able to understand it easily. If you work you're way up, then it becomes obvious.

<comment><USER25> > Someone who has never seen the type of problem that would make a given > abstraction useful would not be able to understand it easily.

Whether or not someone is sufficiently motivated to study something should not affect their ability to understand it. Vector spaces and linear maps are actually much easier to understand, and I think that at some point in mathematics (probably your first analysis course) your motivation has to come from the beauty of the theory itself rather than some real-world application.

<comment><USER7> So mathematicians seek beauty instead of utility.

Should they deserve to starve like artists then?

Should taxpayers fund disciples (students) for them?

If yes, than should taxpayers be forced to fund students for any cult anyone wishes to start?

<comment><USER26> There is nothing quite like trolling a bunch of nerds with the opinion that the entire study of pure mathematics has been a wasted endeavor for mankind...

You deserve a round of applause!

(Also, mods, where are you?)

<comment><USER7> Newborns don't come out with all knowledge in their heads already. I'm simply alerting younger people to facts, there's absolutely no reason to get mods involved. Otherwise most of HN should be banned (since a lot of it is not completely fresh news). Why alert the mods, are you a scared pure mathematician?

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Great post. A suggested follow-up: "Banach Spaces, The Spectral Theorem, and Your Changing Body: A Personal Introduction."

</comment><comment><USER27> I think an intuitive guide should have more diagrams of affine transformations. Don't just visualize the matrix, visualize the transformation.

</comment><comment><USER28> Eero Simoncelli's guide to linear algebra is very good too and likely more concise, although it doesn't cover eigenvectors and eigenvalues.

<http://www.cns.nyu.edu/~eero/NOTES/geomLinAlg.pdf>

</comment><comment><USER29> For the mathematicians here. I am taking Linear Algebra classes as a CS undergrad. Can someone recommend a very good book?

I am looking for the kind of book that will make you fell in love with Linear Algebra. For Calculus, I used Piskunovs Differential and Integral Calculus which was miles away from what my classmates were using. That along with Maple help to double check that my stuff was correct proved a good combo. My current Linear Algebra book is an honest book but it is a boring book, it fails to entertain or to amaze or to give you those moments of insight that puts a grin in your face.

I think I just wish I had better books as an undergrad :-(

</comment><comment><USER30> OK can you explain kernels and their role in transformations (f.e. the dimension formula)? No you can't this way. And it truly has an INTUITIVE explanation (so much more than the intuitive ess of a spreadsheet!).

<comment><USER7> What's the practical use for understanding that intuitively (for the 1000s of people who have to go through it every year)? Genuinely curious.

<comment><USER30> Why there are things that, for example, block other things when watching TV (2d TV) and where they are. Why they are all "in the same direction"...

This is the first, simplest, off-hand example I can come up with.

Things are blocked "in parallel" (assuming the camera is far away from the objects) because that projection is a linear map (I repeat, assuming "far away focus") and has a one dimensional kernel: 2d + 1d = 3d, which means (flat TV + orthogonal lines = 3d world), that is the dimension formula.

</comment></comment></comment><comment><USER31> Obligatory plug for the _Manga Guide to Linear Algebra_ :

<http://nostarch.com/linearalgebra>

:D

</comment><comment><USER32> Interestingly this is more or less like the way I was taught linear algebra in high school.

</comment><comment><USER33> Every now and again I think my highfalutin college courses were an overpriced waste, and then a conversation like this comes along and I see that the fundamentals of my courses are apparently radical and unheard of most other places.

Do schools really not teach the underlying concepts of math, or do people just fail to understand them the first time through and then blame their teachers?

/took linear algebra in the math department, then TAed it.

<comment><USER34> >Do schools really not teach the underlying concepts of math, or do people just fail to understand them the first time through and then blame their teachers?

It is absolutely the case that a great many students will not remember seeing material that they definitely were exposed to. As someone who's TA'd physics classes for a few years, I'd often ask a recitation whether they'd covered some particular subject yet in lecture, and they'd often say (as a class) no.

I'd ask the professor later, and of course they had -- but students rarely go into lecture having done the reading or prep work, and so have a piss-poor retention rate.

<comment><USER35> > _students rarely go into lecture having done the reading or prep work, and > so have a piss-poor retention rate._

I've found that even if _do_ the reading, my brain is often, well, a bit leaky... TT

</comment></comment></comment><comment><USER7> I might be missing something big, but it seems like linear algebra is then just an overly complicated way of describing what should be a simple toolbox of spreadsheet manipulation functions, kind of like an extra module for python. Why is it given such special emphasis then, it would be like teaching the datetime or sched modules.

<comment><USER36> The other way around -- Linear Algebra is a (computationally) simple way to describe a (computationally) complicated toolbox of manipulation functions across a huge data set/space.

<comment><USER7> Learning a few functions that deal with spreadsheets is a lot more simpler and faster (and hence useful to a lot more people) then doing linear algebra courses complete with proofs and 18th century symbols.

What will have more societal impact? Should anyone wishing to use a wordprocessor be required to understand turing machines and computer architecture?

<comment><USER37> I hope the author is reading your comments, because they make it clear that at least one of his readers is coming away with seriously incorrect ideas about linear algebra!

The thing that you are missing is that linear algebra is about much more than matrix multiplication. It is about the properties of linear transformations in general. While matrix multiplication may have simple implementations in spreadsheets, many other concepts in linear algebra _don't_ , for example calculations of and properties of eigenvectors and the corresponding eigenvalues, or the various matrix decompositions (themselves closely related to eigenvalues and eigenvectors). The matrix decompositions in particular give results that not only are mathematically interesting, but are enormously important computationally.

In terms of societal impact, other than calculus, no field of mathematics has had a greater impact than linear algebra. From quantum mechanics to the google search engine to machine learning, linear algebra is fundamental. Spreadsheets are awesome and a brilliant idea, but they are aimed at solving a different set of problems. Important though they may be, they pale in comparison to linear algebra.

<comment><USER7> My point isn't that it lacks utility, it's that the proofs are not relevant (maybe they are to the teeniest tiniest number of people but I'm not sure of even that - most research is about speeding up calculations on computers). It's that practically it amounts to a library of computer functions. I can type the date function on the command line, how it works behind the scenes is not relevant.

<comment><USER37> The details of the proofs are perhaps not relevant to a practitioner. Although I trust you would agree that the _existence_ of the theorems are very useful?

You seem to have the idea that the only useful thing to come out of linear algebra are a set of algorithms, and that as long as you have computer routines implementing those algorithms, the proofs that those algorithms work don't matter. There is a grain of truth in this, but the _concepts_ that you learn in a linear algebra course - particularly around eigenvalues and eigenvectors - are very important in providing you the knowledge to choose those algorithms well. And the process of working hard to understand proofs is a great way (perhaps the best way) to make sure that you really understand those concepts. It's also a great way to make sure that you really understand what a theorem means / why a particular algorithm works.

 _most research is about speeding up calculations on computers_

A a large amount of progress in "speeding up calculations" comes from algorithmic advances. These advances aren't being made by people who view linear algebra as nothing more than a set of library routines. They come from people who deeply understand the concepts and proofs behind the important theorems of linear algebra.</comment></comment></comment></comment></comment></comment>


Introducing Zaius, Google and Rackspace's Open Server Running IBM POWER9 - <AUTHOR> https://cloudplatform.googleblog.com/2016/10/introducing-Zaius-Google-and-Rackspaces-open-server-running-IBM-POWER9.html <comment><USER2> More discussion on the resubmission: [https://news.ycombinator.com/item?id=12712611](https://news.ycombinator.com/item?id=12712611)</comment>


Spoken languages versus programming - <AUTHOR>

I excelled at learning a 2nd and 3rd language at a university level. Do you think this skill could translate to learning the languages of programming? Why/why not? <comment><USER2> Programming feels more like playing minefield than reading a book or communicating with somebody. You are constantly wondering "this and this implies that this would be true always, except if this won't be true, but this won't happen because of something, so i can safely change this to that, and nothing would break".

You should make comments and try to convey what are you doing to future human readers of your programs, and for this good communication skills are important, but the core of the program - the code - is pure logic and adhering to strict protocols, and without this you won't program at all.

So language skills won't automaticaly make you good programmer. Just try, it's addicting, you'll know if you want to do it :)

<comment><USER3> I'm just teaching myself how to program as a hobby (makes no sense to do it professionally at this point in my life) and I think this is one of the best descriptions of programming I've read.

This description also highlights why it's fun. It's like doing a brainteaser except you're actually producing something that is useful.

</comment></comment><comment><USER4> If you already know how to program, then maybe. Why don't you find out?

If you don't already know how to program, then no. Programming languages are precise and unforgiving of "obvious" errors in ways that human languages aren't.

</comment><comment><USER5> yes and no. I'm also multilingual, which is nice for being able to switch gears and learn languages faster. But it won't help you past the initial hump of learning all the logic, data structures and mathy stuff behind it. For that reason, I don't think it will help initially, but once you know one language it'll make it easier to learn more.

</comment><comment><USER6> I once heard someone say programming is more like contracts/legal stuff than spoken languages. Dunno how true it is.</comment>


Ask HN: Why Facebook's blog hasn't been updated since February? - <AUTHOR>

https://blog.facebook.com<p>One could imagine they don't care? <comment><USER2> The use: <http://newsroom.fb.com> & <http://investor.fb.com/>

</comment><comment><USER3> I think they use <http://www.fb.com> now.</comment>


Nearly Every USGS Topo Map Ever Made (2014) - <AUTHOR> http://equipped.outdoors.org/2014/10/nearly-every-usgs-topo-map-ever-made.html?v=1 <comment><USER2> I have mixed feelings about USGS topo maps these days. On the positive side, they are producing revisions much more frequently than in the past and they have made available high quality digital images of these maps for free.

The availability of high resolution image files is really nice if you have a big screen and a powerful computer handy, but not so nice if you are scouting for berries on logging roads in a pickup and need something that you can stuff in your pocket. The USGS stopped doing big lithographic print runs of their maps, and the new inkjet prints are garbage in comparison. Whenever I find a lithographic print of a quadrangle I am interested in, I buy two or three because I know I may not be able to find them in the future.

Also, the newer revisions (the ones including satellite images) seem like they get much less individual attention from the cartographers. Labels and symbols are less intuitively laid out. The difference between the new and old map styles is similar to the difference between musical scores generated by a computer and lightly edited by a copyist, and scores created by a master plate engraver.

I vastly prefer the maps from the 80's and early 90's.

<comment><USER3> > Whenever I find a lithographic print of a quadrangle I am interested in, I > buy two or three because I know I may not be able to find them in the > future.

An opportunity for someone?

<comment><USER4> When NatGeo was still making their Topo software, you could go to REI and printout fairly high-quality quadrangles of a region you were interested in for a few bucks. Not sure if they still do that.

</comment></comment></comment><comment><USER5> Went hunting for topo maps again recently, and found an interface called TopoView which is so much better than the USGS store and anything else I've seen that it's dumbfounding:

[http://ngmdb.usgs.gov/maps/TopoView/viewer/](http://ngmdb.usgs.gov/maps/TopoView/viewer/)

It has historical & regional maps as well as the topographical maps. It's easy to browse. It has built-in support for pinning maps on Pinterest. Really.

Huge props to whatever unsung team at USGS pulled this together.

</comment><comment><USER6> This is interesting, now if only they had 3d topography maps.

I'm building a GPS tracker that I can take on hikes and will store coordinates and altitude to an SD card so I can generate 3d models of the path I take or overlay with 3d maps.

<comment><USER7> USGS offers digital elevation maps as rasters [1]. There is also the 10-meter SRTM data from shuttle SAR [2]. Combining elevation with the USGS topo maps visually for 3D is an interesting image processing task.

What hardware are you using in your tracker?

[1] [http://nationalmap.gov/elevation.html](http://nationalmap.gov/elevation.html)

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

</comment></comment><comment><USER8> The National Library of Scotland has a great online collection of old maps as well: [http://maps.nls.uk/](http://maps.nls.uk/) \- going back to 1500, with slippy maps, side by side views, all sorts. It's not just Scotland, but the whole of the UK. A lot of them are georeferenced so you can easily flip through time and see how your local area changed.

Licensing isn't as simple as USGS's though.

</comment><comment><USER3> The amount of map data available for free these days is amazing. I remember saving up to buy those maps in high school.

</comment><comment><USER9> Can I import a US Topo map into my geographic information system (GIS)? [http://www.usgs.gov/faq/categories/9797/3590](http://www.usgs.gov/faq/categories/9797/3590)

</comment><comment><USER10> As a history buff (mostly civil engineering based, roads, bridges, tunnels, railroads, etc.) I find these historic maps extremely useful.

<comment><USER11> [http://historical.northavenue.net/](http://historical.northavenue.net/)

</comment></comment><comment><USER12> I don't know about you guys, but I find that old maps are just fascinating in terms of the history they represent. Perusing old maps and seeing how names of places have changed over time is something that always intrigues me.

Here's an example: The closest intersection to where I grew up was the corner of Civietown Road, Shellpoint Road and Holden Beach Road. As long as I can remember, the whole area was always referred to as "Civietown" and there are a couple of stores right on the corner, and the fire station for Civietown Volunteer Fire Department. OK, boring enough, except I always wondered WTF "civietown" meant.

Then, one day, I got hold of some WWII era USGS maps and started poking around and noticed that in the 1940's things were subtly different. The intersection we call "Civietown" now was called "Fulford" back then. Now that's very common family name in the area, so that part isn't terribly surprising. But curiously, "Civietown" was about two miles further away, at the intersection of Mt. Pisgah Road and Empire Road, and was spelled "Sivey Town". Huh, what? And the area near the end of Shellpoint Road was named "Monogram" for no apparent reason.[1]

This stuff fascinates me. My grandmother can remember the Monogram business, but has no idea when exactly, or why, the name went away. And I haven't found a good explanation yet for why "Sivey Town" became "Civietown" and relocated itself by two miles. I also still don't know exactly what either "Sivey Town" or "Civietown" actually means. An older relative told me it has something to do with a kind of bean called a "Seve bean" that was farmed in the area, but I can't really find much to back that up.[2]

So yeah... browse around old maps, who knows what kind of mystery you might stumble upon.

[1]: this post actually inspired me to take the time to download a "historical survey of unincorporated communities" that was put together a while back. There's no definitive answer on how "Monogram" got its name, but there is some interesting history associated with it. [http://www.brunswickcountync.gov/planning/files/2015/04/plan...](http://www.brunswickcountync.gov/planning/files/2015/04/plan_Final_Report_- _Brunswick_County_Unincorporated_Communities_and_Cemetery_Survey.pdf)

[2]: To the extent that it's been researched, the "Seve Bean" story is widely acknowledged as a popular local legend, but that's about the extent of it as far as I know. [http://www.myreporter.com/2013/01/is-it-spelled-civietown- an...](http://www.myreporter.com/2013/01/is-it-spelled-civietown-and-where- did-the-brunswick-county-communitys-name-come-from/)</comment>


High Fidelity Music Streaming by Jay Z - <AUTHOR> http://tidal.com/

<comment><USER2> I've used the "Pre-Jay Z" version of this service, and it's disingenuous to call this "by Jay Z"

Tidal has issues with gapless playback, like seriously big ones, with up to 5 seconds between songs.

They also have an issue where if you pause a song (for say a bathroom break) and then come back later, the song will play for an additional 20 seconds past unpause, then stop and play the next song.

Then there's the issue where people can't discern 320 VBR from lossless due to our primitive hearing.

They do have some harder-to-find albums, and even some stuff missing from google's play catalog, so they're good for interesting variety, especially in the indie space.

But as is often the case of smaller providers, they don't support Chromecast so I didn't really use them at home. I've since canceled my account, as I didn't see the value in the service.

If I get word they finally fixed gapless and the pause=stop bug, I'd give them another shot.

</comment><comment><USER3> Here's a Verge article on Tidal to give it some context. [http://www.theverge.com/2015/3/30/8314833/tidal-jay-z- stream...](http://www.theverge.com/2015/3/30/8314833/tidal-jay-z-streaming- music)

</comment><comment><USER4> Lossless audio streaming appeals to me but I'm not sure I'm willing to pay twice as much for it. I think that the artist exclusives would have to be very compelling for me to switch to Tidal.

</comment><comment><USER5> Signed up (and provided payment information), but it wouldn't let me log in. Reset my password, but when I tried to use Safari's auto-generated password it gave me a generic error. Reset my password to an easily-type-able one several times but still can't log in.

Logged into paypal just fine and cancelled their preauthorized billing. Maybe I'll come back to them some other time.</comment>


How SQLite is tested - <AUTHOR> http://www.sqlite.org/testing.html

<comment><USER2> One of my proudest moments was finding a bug in SQLite where a corrupted index caused a select statement to segfault Firefox.

I jumped through a _lot_ of hoops to get to the point where I got a backtrace that showed me the SQL statement of a corrupted places.sqlite. I then loaded SQLite on the data file, ran the statement and reproduced the segfault. One of their lead devs then got in contact with me, grabbed the data file and fixed the issue.

I suspect that not only did my diagnosis lead to a fix for a LOT of Firefox crashes, but it stopped a lot of frustrating crashes on things like iPhones, etc :-)

I may not have done the fix, but I took the time to reproduce the problem. It felt damn good :-)

P.S. in case anyone is interested, the bug is <https://bugzilla.mozilla.org/show_bug.cgi?id=581946> on Mozilla, and at SQLite it's at <http://www.sqlite.org/src/ci/83395a3d24>

<comment><USER3> congrats on catching that bug. I use sqlite for a ton of stuff. I just used it at work a few days ago. It has so many use cases where you need a lite query language and not an rdbms.

<comment><USER4> I agree with your sentiment, but SQLite is a RDBMS. It's just very lightweight.

</comment></comment></comment><comment><USER5> Unfortunately, 100% testing is only effective if you can detect 100% of the errors generated. The only bug I found in sqlite was an off by one in the btree code that was mostly harmless, unless your memory allocator was particularly fussy.

I only found the bug, never quite understood it, and after seeing how disturbing the fix was decided some things were best left unlearned. [http://www2.sqlite.org/cgi/src/fdiff?v1=fa113d624d38bcb36700...](http://www2.sqlite.org/cgi/src/fdiff?v1=fa113d624d38bcb36700a0244b47f39d57d34efb&v2=8cab7c66c822ae9c37c59a923ffec81927583ee2)

That said, sqlite is one of the most reliable and better designed libraries I've used. Software is hard.

<comment><USER6> 100% testing is effective, just not 100% effective. And 100% testing is strictly better than 99% testing is strictly better than 50% testing (when considering only its bug detecting capabilities).

<comment><USER7> I'm glad you appended "when considering only its bug detecting capabilities". Something like SQLite, whose functionality is largely static, definitely benefits from the additional test coverage, but the majority of code out there --code that's constantly evolving, code to which functionality is frequently added and removed--is too often prematurely cast in stone by overzealous testers, making maintenance and evolution significantly more difficult than it ought to be. In a lot of cases, too much test coverage actually _reduces_ the value of the code.

<comment><USER8> There is a strong case that more tests allow you to make changes to the code with some confidence that there won't be unintended side effects. Now maybe SQLite's level isn't appropriate in most cases but that doesn't mean high levels of code coverage are bad. It can also give confidence to upgrade underlying frameworks or libraries

</comment></comment></comment></comment><comment><USER8> Is there any more widely deployed software in the world than SQLite? Multiple copies (browsers, language runtimes, embedded in other software) on many computers and built into most smartphones and its probably in quite a few TVs and other devices too.

Very successful invisible (to non-developers) software.

<comment><USER9> > Is there any more widely deployed software in the world than SQLite?

zlib or libjepg, maybe.

<comment><USER10> libc (both GNU and BSD)

<comment><USER11> A funny thing here... If you count the number of active copies, this may not be true. Usually you don't see ten apps in one system coming with their own version of libc. This may pretty well be true for sqlite.

</comment></comment></comment></comment><comment><USER11> You should definitely see drh present it in person. He's giving a talk about it in universities around the world, seen it a couple years back, in Poland. It's incredible what effort goes into reliability of what seems such a small thing.

Btw, the very same day he persuaded me to move to Fossil.

Edit: just to be clear, you should see it for all the good ideas he's explaining. Not for some marketing of a piece o of software.

<comment><USER12> link?

<comment><USER11> Hmmm, despite what uni authorities said, there is no recording of that particular talk available. So I have no specific advice, apart from bland "search YouTube" or "ask by email".

<comment><USER13> Here is an old one (2006) at Google: <http://www.youtube.com/watch?v=jN_YdMdjVpU>

</comment></comment></comment></comment><comment><USER7> What I'm more interested in is _how_ SQLite reached such substantial test coverage. What techniques or tools were used to generate the tests? Did someone (drh?) actually sit down, read through the code, and construct a test case for every branch, or did they use tools to facilitate test case construction? How can I apply the same effort to my own software (once it's ready) to improve its reliability?

<comment><AUTHOR> Probably a combination of the above. They are also writing tests for each successfully crushed bug:

 _Whenever a bug is reported against SQLite, that bug is not considered fixed until new test cases have been added to the TCL test suite which would exhibit the bug in an unpatched version of SQLite. Over the years, this has resulted in thousands and thousands of new tests being added to the TCL test suite. These regression tests ensure that bugs that have been fixed in the past are not reintroduced into future versions of SQLite._

<comment><USER14> This is _precisely_ how regression tests are _supposed_ to be built; to wit:

1\. Find/identify/isolate the bug;

2\. Create a test that fails if the bug is not fixed;

3\. Run the test to make sure it detects the bug;

4\. Fix the bug;

5\. Run the test to make sure it passes now that the bug is fixed;

6\. Add the test to the test suite and checkin/push the bugfix.

I don't always get to do this on my projects, but it's a good habit to get into. Having a good/easy to use test framework already setup can help a lot with this (if tests are hard to write/take too much time, they won't be written).

<comment><USER15> I do it differently.

1\. Find/identify/isolate the bug;

2\. Fix the bug;

3\. Create a test that fails if the bug is not fixed;

4\. Run the test to make sure it passes now that the bug is fixed;

5\. Revert the fix and run the test to make sure it detects the bug;

6\. Add the test to the test suite and checkin/push the bugfix.

I prefer this order because if I make a mistake in step 1 I usually realize it in step 2, where I feel like you might not realize it until step 4. I'd be curious to know if there are advantages you know of to the order in which you do it.

<comment><USER16> I work in the same order as npsimons. It's a similar philosophy to the red- green-refactor strategy (<http://bit.ly/OazqR8>).

The advantage, to me, is that you focus on the behavior of the application rather than the code. I have a tendency to get off-track when I'm coding and I'll start on refactors that, in hindsight, were a terrible idea.

By forcing myself to be sure that the feature/bug is something I really want, I stay on-track because that damned test keeps failing and I just want to make it go green! By writing the test beforehand, I can be sure that it's what I really want and not just what's easy to code.

That said, both ways work and I sometimes switch to an approach like yours.

<comment><USER14> _The advantage, to me, is that you focus on the behavior of the application rather than the code. I have a tendency to get off-track when I'm coding and I'll start on refactors that, in hindsight, were a terrible idea._

Very much the same for me; I'm much like Lenny from "Memento" at times ("now what was I doing?"); add to this that reproducing the bug is essentially what you are doing by writing a regression test for it. Also it falls in line with TDD as applied to maintenance (keep coding until all the tests pass). One last thing: it's kind of a wash with VC these days (and reverting, as the GP said), but if you fix the bug first, are you certain your test is catching it? I like to have a piece of code that I can say "yes, when I do this, my code fails; now to fix it."

</comment></comment></comment></comment></comment></comment><comment><USER17> Can anyone please comment on the humans involved in running some of this stuff? What are their roles, occupations? Infrastructure? Who owns that?

</comment><comment><USER18> Well, I told the author of SQLite that a double inner join took forever to complete. He just told me I was wrong, but this inner join worked fine on PostGres, MySql and so on.

It annoys me, because neither PostGres not MySql are a binary file you can just run with a query, unlike SQLite which is very convenient for embedding in a desktop app.

<comment><USER19> SQLite does not have very many execution methods or a very intelligent optimizer, and every database has different access methods available to it to some extent. For example, Postgres lacks skip scan, which Oracle has. MySQL lacks bitmap index scans to combine indexes, which Postgres and Oracle have. Postgres (until the recently released 9.2) lacked index-only scan, which MySQL and Oracle (and DB2, and Informix, and SQL server...that was a feature long in coming) have. MySQL of many versions lacked hash joins (which blows my mind), it may have it now (depends how you count the forks).

So, all in all...somewhat expected. I have a number of queries that simply cannot run in their most naive rendering on Postgres due to lack of skip scan.

<comment><USER20> In case anyone wants to read more about skip scans, here's the link: [http://docs.oracle.com/cd/B10501_01/server.920/a96533/optimo...](http://docs.oracle.com/cd/B10501_01/server.920/a96533/optimops.htm#51553)

</comment></comment></comment><comment><USER21> My takeaway from this is high-quality software needs several robust test suites, each written with a different testing methodology.

A presentation from the Opus audio codec developers ( <http://www.ietf.org/proceedings/82/slides/codec-4.pdf> ) opened my eyes to just how many overlapping approaches you can use. In addition to listing a dizzying array of software tests (similar to the SQLite article), the Opus presentation summarizes the strengths and weaknesses of each approach, which is great for understanding when each approach is appropriate to use.

</comment><comment><USER22> Does anyone know the real reason SQLite was removed form HTML5 specs?

I known official Mozilla arguments. Which are quite week IMHO.

Is this was MS job? They where afraid that browser apps will make desktop apps obsolete?

<comment><USER23> Yes was a Microsoft Hand , they killend it and went to more complex indexed db that no one loves

[http://h30499.www3.hp.com/t5/Following-the-Wh1t3-Rabbit- Down...](http://h30499.www3.hp.com/t5/Following-the-Wh1t3-Rabbit- Down/W3C-Buries-quot-Web-SQL-Database-Standard-quot/ba-p/2407945#.UHBiwlU-on8)

</comment></comment><comment><USER24> This Google Talk starting about 32:35 the author talks a little about SQLite testing: <http://www.youtube.com/watch?v=f428dSRkTs4>

</comment><comment><USER25> Anyone have any thoughts on how they might be doing 'automatic' memory/resource leak detection (Section 6.0)? Seems to me it would be hard to do without generating lots of false positive failures.</comment>


Purchasing Bitcoins in Norway just got 10 times harder - <AUTHOR> https://www.reddit.com/r/Bitcoin/comments/5fovhp/purchasing_bitcoins_in_norway_just_got_10_times/ <comment><USER2> Is it just me who left the Bitcoin train? Those of you who are still on it what do you it for?</comment>