DNS-on-Blockchain is the next step after DNS-over-HTTPS - <AUTHOR> https://diode.io/distributed-infrastructure/Why-DNS-on-Blockchain-is-the-next-step-after-DNS-over-HTTPS-19231/ <comment><USER3> DoB will have to deal with some problems, especially bad actors; people will squat on domains, register typos (fscebook.com) or even bitflips (fabebook.com, b is one bitflip from c). Malware owners will run their C&C servers on domains.

Malicious domains will require someone removing them or blocking them even, unless you want the DoB namespace to turn into a cesspool of malware, phishing and nazis. Not something the average person wants.

<comment> m-p-3 You either have the freedom of decentralization and all the benefits and drawbacks that comes with it, or you have our current system with the ability to centrally manage but then you depend on those large, centralized entities to do an impartial job. And we know that nobody is impartial.

<comment><USER3> Why is it always so black-and-white with blockchain people?

There is no reason we can't deploy something that takes the good parts of decentralized operation without having to commit to a full P2P blockchain IoT buzzword fiasko.

</comment></comment></comment><comment><USER4> Yes, DNS should be like the old phone book — published regularly, pick one up anywhere & everywhere, look things up anonymously (granted, authenticity guarantees were somewhat lacking).

My question - Sure blockchain can do this, but couldn't a simpler DHT-based p2p system would work just as well or better? I like the distributed/anonymity/authenticity, but why is blockchain required?

<comment><USER5> Ipfs.io can solve this easily.

<comment><USER3> Ipfs requires a DNS server to bootstrap the P2P network, not a good idea.

Plus, Ipfs isn't that good when it comes to authentic data, if it's signed, there is only one key, so it's centralized again.

<comment><USER6> There are capabilities to use the existing DNS system (or an EthDNS system in the works) for human readable names with IPFS, but you can also use other channels like pubsub to resolve mutable content like IPNS names quickly - <USER2> IPFS doesn't actually require DNS at all. Multiwriter IPNS records are also a work in progress, though I disagree with your characterization that somehow only allowing one key to edit a particular signed record somehow makes the network itself centralized...

<comment><USER3> This isn'T about the IPFS Application Layer but the Link layer.

Bootstrapping a P2P system efficiently requires known P2P nodes and those will require DNS unless you want to shell out for a static IP permanently (and hope nobody poisons ARP!)

</comment></comment></comment></comment></comment><comment><USER7> Handshake is another DNS on blockchain project that's taking a different approach — it's aiming to decentralize the root zone (TLDs) instead of domains, because the root zone is where the centralization happens.

This MIT Tech Review article gives a good overview of Handshake's goals: [https://www.technologyreview.com/s/613446/the-ambitious- plan...](https://www.technologyreview.com/s/613446/the-ambitious-plan-to-make- the-internets-phone-book-more-trustworthy/)

<comment><USER8> Every time I see an article claiming that someone is building some "decentralized" system to make censorship harder I wonder if anyone of those people even understands how the internet is censored at scale in places like China.

For the censorship we have in the west e.g. blacklisting torrent sites a non- ISP DNS and or CDN already solve that problem, for anything beyond that nothing would help.

<comment><USER9> There's also various kinds of registrar concerns; registrars revoking domains for questionable reasons, the WIPO/UDRP regime, etc.

It all comes down to whether you think the current stewards and legal regimes and ICANN are doing a good job or not. [I'm undecided].

</comment></comment></comment><comment><USER10> You've reinvented the HOSTS file, which used to be manually updated by John Postel or someone and passed around the internet before DNS was invented.

<comment><USER11> But it's on the blockchain! That means it's a billion-dollar idea!

</comment></comment><comment><USER12> So, NameCoin again? I think it was the first ever bitcoin fork.

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

<comment> ur-whale Indeed, this was my first thought when I read the title, and IMO, it still remains the other obious killer app. for blockchain (besides store of value / currency, obviously).

Namecoin is an idea (that failed because IMO it was too early) so old by now that I am truly surprised there hasn't been a full blown distributed DNS solution that works in parallel to the existing one based on blockchain.

</comment></comment><comment><USER13> I don't get why blockchain is any different for the list of complaints the author highlights.

Also, reminds me of the old saying about "now you have two problems"

</comment><comment><USER14> I'll go ahead and note that this doesn't require a blockchain. Each TLD is controlled by a single entity. Anything a site would store on a blockchain, they could easily submit to that single entity to be published.

</comment><comment><USER15> When the DNS blockchain forks, your browser just opens two new tabs instead of one and you get to visit both sites. Simple!

</comment><comment><USER16> What is the proof? That the domain owner signed it with a certain key? Is that key shared out-of-band? If so why do we even need the blockchain?

<comment><USER17> Yes, the proof would be some sort of signature.

No, public key cryptography means that the key doesn't need to be shared.

A blockchain is only needed if parties need to write to the database in a decentralized manner, and the order of the writes is important & can't be tampered with.

<comment><USER18> The public key still needs to be shared.

<comment><USER17> Of course. The OP didn't mention which key, so assumed they are talking about the private key, especially when they mentioned out-of-bound sharing, usually terminology used for asymmetric cryptography. Public keys don't need to be shared out-of-band, in fact they are always published along with the transaction on the blockchain. (well technically, only the curve points and the hash are, but using these, we can re-create the public key)

</comment></comment></comment></comment><comment><USER19> Oh wait, you're serious. Let me laugh even harder.

</comment><comment><USER20> The article explains the censorship resistance aspect but not the security. How does Handshake deal with the things Cloudflare does for me? DDoS and WAF protection, at least?

<comment><USER21> Firewalls and DDOS protection have nothing at all to do with name resolution. These are routing concerns that require taking a deep look into the packets (DPI), while name resolution and key exchange are prior steps.

Also, what does CloudFlare bring to you? 99% of websites don't need DDOS protection or a complex firewall. Using CloudFlare for these websites means:

\- CloudFlare gets to inspect and snoop 100% of your "HTTPS" trafic (because the TLS termination happens on their side)

\- Users without Javascript (command-line browsers or GUI browsers disabling JS for performance/security concerns) cannot access your website

\- Tor users most times cannot access your services at all because CloudFlare and Google work hand-in-hand to prevent them from using the web by serving infinite CAPTCHA loops (see #FuckCloudFlare)

\- CloudFlare becomes a SPOF for much of the web, like other "cloud" providers ; accessing your website depends on the availability and good will of a huge multinational

So if you want to help people access the Internet without censorship and surveillance, please never use CloudFlare or equivalent services. They make everything so much worse through centralization. If we wait too much, it will become a HUGE problem.

</comment></comment><comment><USER22> is this not what [https://www.namecoin.org](https://www.namecoin.org) does..?

<comment><USER23> > Namecoin and the Ethereum Name System were the first attempts at bringing > name resolution to the Blockchain. At Diode we're going the next step and > are moving PKI & DNS into the Blockchain

The article specifically calls out Namecoin, but doesn't say anything about how Namecoin falls short or why it can't be augmented/improved instead of building a whole new thing.

I know I'll sound like a grump here, but why does the bar for HN front page feel so low these days?

</comment></comment><comment><USER24> There's some interesting work on this going on in W3C, in the Verifiable Claims Working Group [1] and in the newly minted Decentralized Identifier Working Group [2]. I'm a member of the W3C Credentials Community Group (CCG) [3], which is where those two WGs started.

There are also a number of other valuable efforts. Both in other Standards Development Organizations (SDOs), such as Decentralized Identity Foundation (DIF) [4], Apache HyperLedger projects like Aries [5], etc. And in working conferences/unconferences like Rebooting Web of Trust (RWOT) [6], and Internet Identity Workshop (IIW) [7]. On a tangential note, Unconferences are an interesting concept [8].

[1] [https://www.w3.org/2017/vc/WG/](https://www.w3.org/2017/vc/WG/) [2] [https://www.w3.org/2019/08/did-wg- charter.html](https://www.w3.org/2019/08/did-wg-charter.html) [3] [https://w3c-ccg.github.io/](https://w3c-ccg.github.io/) [4] [https://identity.foundation/](https://identity.foundation/) [5] [https://www.hyperledger.org/projects/aries](https://www.hyperledger.org/projects/aries) [6] [https://www.weboftrust.info/](https://www.weboftrust.info/) [7] [https://internetidentityworkshop.com/](https://internetidentityworkshop.com/) [8] [http://unconference.net/](http://unconference.net/)

</comment><comment><USER25> So every DNS change is stored into the blockchain, forever? Will you have to download terabytes and terabytes of the blockchain in order to serve as a node? Why is that kind of audit history necessary?

Why is the solution to every problem "blockchain" these days?

<comment><USER26> > Why is the solution to every problem "blockchain" these days?

That is a trope and is no longer true. If you say blockchain is the solution you get laughed at.

<comment><USER3> Being laughed at doesn't seem to stop people from trying to solve problems by throwing more blockchain at it.

</comment></comment></comment><comment><USER27> The wave of "x, but on the blockchain!" Patents is going to be amusing and sad to watch.

</comment><comment><USER28> question—can't a government actor like china just watch the record for where it points to and just filter that address? doesn't that defeat the whole purpose of this uncensorability?

while it may be harder in the US i could legitimately see a mechanism developing to make that a requirement for isps

<comment><USER29> They can, and do, already do this for regular DNS. This would prevent US-style domain name seizures but would do nothing against actual competent censorship.

</comment></comment><comment><USER30> Correct me if I'm wrong, but wouldn't DNS-on-blockchain make lookups orders of magnitude slower than they are now, especially with many DNS services advertising based on speed?

<comment><USER31> Yes, DNS-on-blockchain would likely make lookups orders of magnitude slower than they are now -- it's making a trade-off between security and performance.

</comment></comment><comment><USER32> A lot of blockchain projects coordinate "seed nodes" by storing collections of IP addresses within the DNS records of websites that community members run, because it is an already decentralized enough record

This is going full circle

</comment><comment><USER33> Uh no thank you, I do not wish to synchronise half a terabyte per month to be able to resolve domains.</comment>


Two years of postmarketOS - <AUTHOR> https://postmarketos.org/blog/2019/06/23/two-years/ <comment><USER3> Given the stagnation that's set in the mobile form factor, i think its the perfect time for unwalled FOSS mobile environments to develop.

also, the demo with gesture typing on the console is pretty cool: [https://postmarketos.org/static/video/2019-06/nexus5-shelli-...](https://postmarketos.org/static/video/2019-06/nexus5-shelli- thumb.webm)

<comment><USER4> Yes, it's nice to see that pmOS is already enabling experimentation into such things as graffiti-like gesture input. ISTR that people used to be quite proficient w/ the old graffiti system when it was around, so this might turn out to be the most usable input system on these devices, at least for power- users, and until wholly-open voice-recognition systems become viable.

<comment><USER5> I used this setup daily on a geeksphone keon for about a year. I liked it quite a bit. Sadly the screen got broken and 2G service was getting bad. :) I hope to bring this fun experience to another phone with pmos. After the modem starts working I can pull together what I had before for texting and contacts and push it to the shelli repo.

</comment></comment></comment><comment><USER4> The libhybris support that's mentioned near the end is the most interesting part, IMHO. In principle, that should ultimately be enough to run a postmarketOS-based userspace (and of course, a Debian Mobile based one, or any other distro of your choice) on _any_ device supporting GSI ("Generic System Image")/Project Treble, dispensing with Android or AOSP altogether. Thereafter the only thing that the pmOS project needs to concern itself with is kernel support (bringing the mainline kernel and free driver support to more devices) and older devices that have not been "Treblized" already by the OEM or by the AOSP modding community. It's not as simple as _one single image_ being sufficient for everything, because even GSI's come with a few variations (IIRC, 32- vs. 64-bit, and A+B boot partition scheme vs. A only) but it's very close!

Added: I've noticed that Alpine seems to have dispensed with ARMv6 architecture support altogether in the upstream. Unfortunately, this cuts off a _lot_ of the oldest AOSP devices from support - devices that used to run quite well with CyanogenMod, and that ought to still be usable in some way, if perhaps not in a truly general-purpose sense given how limited some of them are (512MB RAM/512MB "internal" storage, etc.). Is there any hope of pmOS picking up this support?

<comment><USER6> > The libhybris support that's mentioned near the end is the most interesting > part

I'm more interested in having a device that doesn't require proprietary bits to work.

<comment><USER4> You can't achieve this without support from the free, mainline kernel, which I've also addressed in my comment; downstream kernels, by and large, depend on these proprietary blobs. Mainline kernel support is also hard; the LG Nexus 5, which is the "flagship" device for pmOS, still doesn't support mobile calls properly.

It just makes sense to split the job and work on the kernel vs. userspace bits independently. Compare with e.g. cyanogenMod or LineageOS; running a non-AOSP userspace gives you something that will run as smoothly as iOS does today, and that (barring kernel or driver bugs, of course) can be updated indefinitely.

<comment><USER7> Nexus 5 supports calls fine, that's neatly in mainline Linux and in ofono. The issue is that the audio codec in the soc isn't in mainline yet.

The solution for this isn't hybris, it's fixing mainline. Hybris is mainly useful for the impossible stuff like powervr graphics.

<comment><USER8> Is support for that codec in progress though?

<comment><AUTHOR> From what I know, one person planned to look into it, but not much has happened since then.

<comment><USER9> Is there any specific list of things that still has to be done before voice calls are more or less functional for the N900? I looked around the Gitlab but couldn't seem to locate anything. The wiki[0] mentions a requirement of "libcmtspeechdata" but there doesn't seem to be any other information beyond that.

[0] [https://wiki.postmarketos.org/wiki/Nokia_N900#Additional_inf...](https://wiki.postmarketos.org/wiki/Nokia_N900#Additional_info)

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I contributed support for Google Glass nearly two years ago, went on a long hiatus, came back, and reflashed... it still works!

The people in the pmOS community are also amazing, big thanks to them for a wonderful project, hope there are many great years ahead.

<comment><USER11> Wow, I remember booting up your port on my XE to run a Minecraft server on my Google glass during a vacation; thanks for all your hard work making pmOS better!

<comment><USER10> That's awesome! More stuff is in the works too, I plan to start working on a UI for pmOS on Glass. For such an interesting piece of hardware, it's so sad to see it just waste away :)

</comment></comment></comment><comment><USER12> Cool. This is really shaping up nicely. I have to admit that when I first heard of it, I thought it's probably just one of those projects I'll never hear from again. Really happy to be proven wrong!

<comment><USER13> There have been many Linux handheld projects that died. I think PostmarketOS has the right idea with emphasizing mainline Linux (and GNU-ish userspace), and no closed bits, on many popular and affordable devices.

One of the things it needs now is more people to follow through, and spend significant time on getting some of the devices (e.g., Nexus 5) perfect, like how Linux was originally gotten working well with various PC devices.

<comment><USER7> We do spend quite some time on the Nexus 5 because it's quite near being fully functional on pmos. The issue is that the parts that don't work yet are usually the hardest to fix.

Same issue with the Nokia n900 which has very good mainline support but is doomed with powervr graphics

</comment></comment></comment><comment><USER14> According to the list of 139 booting devices, not one is 100% functional.

This is a cool project, but is there any plan to focus on getting even one (hopefully common) device to work as a primary phone?

<comment><USER7> There's a lot of work on the:

      - Nexus 5
      - Galaxy Nexus
      - Nokia N900
      - PinePhone devkit
      - Librem 5 devkit

So it's mostly the devices running on mainline. those all have some issues to work out but are pretty close to functional.

At the same time a lot of work is being done to package desktop environments so you can actually do stuff on the ported phones. due too the way pmos is set up this means that once it works on one device then it works on all of them (except for hardware limitations, or lack of 3d acceleration)

A lot of the devices are devices that only one person is working on which means that not a lot of stuff works mostly but it can be used to develop software on top of postmarketOS.

</comment></comment><comment><USER15> This seems like the type of project I'd actually like to contribute code to.

<comment><AUTHOR> Then we have a match: postmarketOS is the type of project that happily accepts code contributions ;)

Here is the big overview link of all sorts of things where people can contribute to: [https://wiki.postmarketos.org/wiki/Contributing](https://wiki.postmarketos.org/wiki/Contributing)

I suggest to familiarize yourself with the project first. That is, play around with it in qemu, flash it to a device if you have one or start your own port (porting is quite feasible, as one can see from the steadily increasing count of booting devices). Then work on what interests you most, and if you need some inspiration, take a look at the gitlab issues that are tagged with "help wanted". (Some are also tagged with "easy", which is obviously a good start.)

<comment><USER15> I've never contributed to what I consider to be a major FOSS project like this, but you've certainly got me seriously considering it. This is awesome and IMHO a very important project. Stuff like TenFourFox, which, if it wasn't so developed, I'd probably contribute to as well.

Anything that re-invigorates life into old devices like this is not only fun from a tech angle, but also good for the environment.

</comment></comment></comment><comment><USER16> Would it be reasonable for PostmarketOS to support the OLPC XO-1? It has physically robust, capable hardware, and a great deal of technical information is available, but the semi-maintained software stack for it is based on an obsolete Fedora build. Is it too far away from the touch devices PmOS tends to target?

<comment><AUTHOR> It would be very feasible, as long as you know where the kernel sources are (and since there is a Fedora build for it, this should not be a problem). Just follow the porting guide and it will show up as new device in pmbootstrap: [https://wiki.postmarketos.org/wiki/Porting_to_a_new_device](https://wiki.postmarketos.org/wiki/Porting_to_a_new_device)

Regarding touch-friendlieness: users can also pick user interfaces that are not optimized for touch input during the installation, such as xfce4, mate, i3wm.

<comment><USER16> Cool! I'll do some reading. Might make for a good project next time I'm on vacation.

<comment><USER11> FWIW I maintain a port of Debian stable for my XO-1 with IceWM and it's extremely resource-light on the aging OLPC hardware. I'd be happy to throw up the build scripts on GitHub if anyone is interested.

<comment><USER4> Doesn't the XO-1 have only 256MB RAM? That's definitely enough to _boot_ Debian Stretch and get to a desktop, but I'm skeptical that it's useful for any real work.

(Of course, keeping hardware in use even as software requirements increase is kind of a hard problem; Debian itself used to have its own projects - <USER2> 'Grip' and 'Crush' \- to try and address that issue with a broadly Alpine- or pmOS-like approach, but these were abandoned a long time ago unfortunately. The whole "embedded" Linux space is a bit of a mess, and a broad, community- led project like Debian could have a positive impact there.)

<comment><USER7> the N900 is also 256MB ram, it's not ideal but it's usable, just add a lot of swap.

</comment></comment></comment></comment></comment></comment><comment><USER17> Speaking in general about alternative systems for phones and tablets, I have a few obscure tablets I'd like to free of Android and repurpose for more useful tasks, but they're either too old or unknown to be supported. Is there any tool that would help to identify their hardware and possible more famous clones, then suggest the right image to be tested on these devices without bricking them in the process?

<comment><USER7> The only way I know of is checking the info in the about phone/about tablet menu and googleing for the magic strings like the build number and kernel version. also if it happens to be an allwinner tablet then you can just look at pictures of tablets at the sunxi wiki.

</comment></comment><comment><USER18> I'll post the basically the same comment I posted the last three or four times that pmOS made it to the frontpage:

This is insanely cool! But can I make/receive phone calls and browse the internet yet? Is there a reference phone that I can be sure will work?

(btw: I have already played with a Nokia N900 while it definitely works, I wasn't able to make nor receive phone calls).

<comment><AUTHOR> Thank you for the kind words.

Phone calls do not work yet, and since we get asked about this all the time, it is in the header of the homepage now - on every page.

> Is there a reference phone that I can be sure will work?

We have two featured devices on the homepage, the Google (LG) Nexus 5 and the Nokia N900. But even for those two we can't guarantee that they are always working, in fact with the Nexus 5 we have quite a lot of breakage lately with one of the reasons being a mesa update that broke the freedreno driver. For the PinePhone devkit we started publishing reference images, which you can expect to not have major issues such as not being able to boot (as mentioned in the blog post).

EDIT: and of course: contributions welcome! if you are passionate about getting phone calls working with let's say the N900 on postmarketOS and have some time to spare, and you are not afraid of learning something new and having a lot of fun in the process, then have at it. Especially with the N900, there is a lot of groundwork available to build upon.

<comment><USER18> I came back after some hours and realised... postingg a truly open linux distro on mobile phones is basically like using linux on pcs in the later 90s or early 00s...

I appreciate your work, truly.

</comment></comment></comment><comment><USER19> It's off-topic but I just wanted to say that I love that their entire screen header simply states an easy-to-read definition of postmarketOS because I literally read the headline and said "Just what is postmarketOS? I see it come up from time to time."

I wonder if it's annoying to people who are already familiar with the project.

</comment><comment><USER20> I tried pmOS on the Nexus 7 2013 (flo) and it's crashy and glitchy everywhere. I've got a debug port via the headphone jack, but without someone else to assist me I'm not going to get very far.</comment>


Show HN: I built an online service to generate passwords,UUIDs and EFF wordlists - <AUTHOR> https://hipstapas.dev/ <comment><AUTHOR> Hi everyone, Pavel here - the maker. I love to automate repetative tasks and standardise processes with the help of software. I do believe that creation of strong phrases, ids, etc. should be secure, transparent and reliable. That is why I build Hipstapas - to have online single source of strong phrases (which I already do use - dogfooding :-). Use cases that I can think of: \- resetting/rotating passwords \- creating secrets, that only the client should now \- password managers and the like \- adaptation for internal us

The service itself is a REST API build with pure JavaScript (on top of node.js). It concists currently of 3 endpoints (FAAS) hosted on vercel (formerly zeit). There is also an interactive playground build with Bootstrap/HTML/JavaScript (currently only for passwords, uuid and word lists are comming). Custom policy features is also on its way - this could be something that could be probably a paid service if the concept is at all of interest.

Let me know if you have any questions. Any feedback is much appreciated!

</comment><comment><USER2> This may be helpful to those who want online services to do these things, but I prefer to use software on my own computer to generate UUIDs and that other stuff.

Also, I think the Content-type header of the API is set incorrectly; it is set to text/html but probably should be text/plain instead.

<comment><AUTHOR> Thank you for your feedback.

I can understand your point of view and I do believe, that it will take time, to trust online services that deliver such sensitive data as passwords and ids. That is why it is open source - to be transparent from the beginning. Nevertheless it seems to me that more an more (micro) services will emerge and replace a lot of the "classic" software that we are used to and accustomed to have offline.

Regarding the "offline uuid" \- currently working on creating a npm package for offline usage. Will be available soon.

Regarding the Content-Type: it is set currently automatically to "text/html" when generating only one item (no matter if it is password, uuid or word list) and to "application/json" when generating more than one item. The idea was that the default option for each endpoint (one item, default settings) should deliver a result that can be used/copied immediately and not be formatted, if the api was called in the browser. I guess it would be fine to set text/plain when delivering one item. Thanks for the hint.

</comment></comment><comment><USER3> Nice. But how do I know you don't save all the passwords for abuse later? ;)

<comment><AUTHOR> Thank you! A good and understandable question. :-)

The API is deployed from GitHub directly (main branch), so the code in GitHub is what is online. There is no logging, no tracking, nothing at all. The idea is to build trust with the users, because everyone can check that nothing is logged. I hope I can do that! :)

I am also open anytime for security reviews of the vercel project if desired (there are no log sinks configured, not even for statistics).

Last point: even if some web application uses the REST API to generate phrases, IMO it is impossible to correlate web address (ip), username and password/uuid/wordlist, even if something is logged (the only thing that could be logged would be IP address). Even if you could get the address of the service from the ip (for example nslookup reveals, that for service.domain.com the phrase "passWORD1!" was generated on 28. july 2020), you need to know for what purpose and/or functionality (login, log, whatever) the phrase was created. Assumming it was for login, you need to check all username + this password combinations, and username is unknown, or all reset password, or ... The query to generate the password containts only generation parameters and no further details. Hope this answer makes sense and helps :)</comment></comment>


Such and such site is down. - <AUTHOR>

Anyone annoyed about seeing the repetitive posts of the obvious "SuchAndSuchSite.com" is down?  Stuff like that should just be left for Twitter or isitdownrightnow <comment><USER2> [https://news.ycombinator.com/item?id=6165419](https://news.ycombinator.com/item?id=6165419)

</comment><comment><USER3> glad that you dint use "beg HN" :D</comment>


Easy Datetime and Timezone Manipulation Python - <AUTHOR> https://github.com/myusuf3/delorean?ref=twitter <comment><USER2> I would appreciate any thoughts and feedback</comment>


Dmesg: An old, new, cool tool - <AUTHOR> http://inconsolation.wordpress.com/2013/08/11/dmesg-an-old-new-cool-tool/

<comment><USER2> You need to have a recent util-linux for most of these. If you're on Ubuntu, you probably have 2.20.

From the release notes:

2.20: supports new command line options: --clear, --console-on, --console-off, --ctime, --decode, --facility=<list>, --level=<list>, --show-delta, --notime, --kernel and --userspace

2.21: supports new command line options --file to read the log from a file rather than from kernel buffer

2.22:

\- reads kernel messages from /dev/kmsg on kernel 3.5

\- supports new option --follow to wait for new messages (kernel 3.5 required)

\- supports new option --reltime to print human readable deltas

2.23: supports new command line options --color, --human and --nopager, the --human option enables relative times, colors and pager support.

<comment><USER3> I wonder (other than the features requiring kernel 3.5) what dependencies dmesg has - could I just carry a static binary around in my ~/bin for systems that don't have a new util-linux?

<comment><USER4> Check for yourself with `ldd <path/to/dmesg>`

<comment><USER5> Ubuntu 12.04 (32-bit)

       [~]$ ldd /bin/dmesg
       	linux-gate.so.1 =>  (0xb778e000)
       	libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb75c4000)
       	/lib/ld-linux.so.2 (0xb778f000)

CentOS 6.4 (64-bit)

       [~]$ ldd /bin/dmesg
       	linux-vdso.so.1 =>  (0x00007fff115ff000)
       	libc.so.6 => /lib64/libc.so.6 (0x00007ff8077c0000)
       	/lib64/ld-linux-x86-64.so.2 (0x00007ff807b59000)

</comment></comment></comment></comment><comment><USER5> On systems that have been up a long time or that spew lots of kernel messages, running dmesg might not give you everything (i.e. just a buffer of the last X messages), you can typically find a complete dmesg log in /var/log/dmesg, which should have a complete dmesg log from boot. I use dmesg a lot, for debugging issue, check if drivers have been loaded, kernel messages, like ops or oom, etc. Very handy!

</comment><comment><USER6> I was kinda hoping to get a description of what dmesg actually is/does...but it's mostly about customizing the output. I could search for it of course, but it was a bit of a surprise to not see any intro to it.

I've been using dmesg for awhile on Arch to debug USB devices mostly, without any clue to what it actually is.

<comment><USER2> dmesg reads and displays the contents of /proc/kmsg. /proc/kmsg is an interface to a buffer where the output from calls to printk is stored. printk is the linux kernel's equivalent of libc's printf function.

</comment></comment><comment><USER7> First time I learn that dmesg takes arguments!</comment>


FoundationDB Summit Program Announced - <AUTHOR> https://www.foundationdb.org/blog/foundationdb-summit-program-announced/ <comment><USER2> I'm very excited to hear about the new storage engine and Apple's record layer! Additionally, the lightning talk about backwards compatibility for rolling upgrades would be a great addition. Those three would make FoundationDB a much more obvious fit for the average application.

My talk is at 10:40! If anyone is attending and would be interested in meeting up, my email is in my profile and my Twitter handle is the same as my HN username.

</comment><comment><USER3> Apple internally uses Cassandra, HBase, Riak, Hadoop/Impala, Oracle, Siri Search kv store, memcache, redis, MySQL, Postgres etc etc. Each of these handle >100 TB in aggregate.

Considering these applications won't be ported to FDB, why not develop a translation later. This will also drive adoption of FDB.

Having smart people work on cool things is not sufficient, you also need them to be working on solving high impact but boring problems.

<comment><USER4> >Considering these applications won't be ported to FDB, why not develop a translation later. This will also drive adoption of FDB.

Writing a translation layer would be nice, "drop in" replacement can be an overkill to drive growth.

That said the three biggest factors for adoption in my opinion are developer experience, tooling and hosting.

If some FoundationDB enthusiasts made an elastic hosting service and some dedicated tooling it would be help massively to compete with others NoSQL Vendors.

<comment><USER5> What dedicated tooling would you like to see? What would an elastic hosting experience feel like to you?

</comment></comment></comment><comment><USER6> I've been having enormous success using FDB for my POC. It's ability to do atomic mutations is honestly game changing for our use case. Mandatory transactions are also a lifesaver, as our previous implementation required careful OCC.

<comment><USER7> Curious what ur usecase is and what makes foundationDB particularly suited for it.

<comment><USER6> Real-time aggregations over a stream of data where we may have multiple servers writing a partial aggregation to the same row. With FDB I can safely read data, merge it with my in-memory copy, and then write the final result back. That's only for our complex aggregations, such as HyperLogLog and T-Digests. For the easier things like COUNT I can just use the ADD mutation. For SUM of doubles, I can use APPEND_IF_FITS to keep each partial aggregation as a "running log" of partial sums in a single row.

<comment><USER8> That's pretty cool! You implemented HLL and TDigest on top of FDB? Or are you storing some kind of blob and computing server-side? I did something similar for Hadoop and MonetDB a long time ago

<comment><USER6> Both the HLL (Algebird) and TDigest implementations we're using have a simple way to serialize a compressed representation. So basically just reading the row, merging the value currently stored, and writing the merged value back.

Depending on how many times you will write to the row, you could avoid having to do a merge on write by using APPEND_IF_FITS and just merging the byte arrays when you read.

It's nice that FDB gives you so much low level flexibility, you can do whatever you feel fits your use case.

<comment><USER9> Hey man, thats pretty cool and we do exactly the same using Cassandra instead of FDB. Since Cassandra doesnt support transaction at high volume (100K tps) we do a shuffle so that all the same key do read/modify/write from the same machine. It seems like with FDB you can get away with it as it supports transactions? My question to you is what is the volume your system is operating at? Also how does it work for skews? Lets say you need to update HLL for a key that is heavily skewed, does your FDB transaction unwind fast enough not to slow down the whole system?

<comment><USER6> Great questions!

> what is the volume your system is operating at?

This varies, as our workload is dynamic in that anyone at any time can inject a query for the data stream, but for this sake lets say 5k.

> Also how does it work for skews?

Foundation does a magnificent job automatically detecting and physically relocating skew. However, to mitigate write skew, I use time bucketing techniques where party of the key is a MURMUR3 hash of the minute_of_hour so that heavy write loads can only affect a server for one minute. This has helped with certain metrics.

> Lets say you need to update HLL for a key that is heavily skewed, does your > FDB transaction unwind fast enough not to slow down the whole system?

There isn't really a concept of an HLL (or key) being heavily skewed. A key lives on a single sever (or multiple, depending on replication). Essentially, when I want to merge additional HLL content into one already store, I just read it, deserialize it, merge it with the one I have and then write the result back to FDB. Because of transactions I can ensure that nobody else is doing the same exact thing I am doing. If there were...then mine (or their) transaction would fail, and retry. The retry is important because it would reattempt the same logic, except the result I got from the database would be the merged result from somebody else. This allows you to ensure that idempotent / atomic operations happen as you'd expect.

<comment><USER9> Thanks for the reply, got a few more additional questions for you :-)

Lets say you are counting distinct ips used by `users` using HLL. Lets say you start getting DDOSed by certain users since I am assuming you are not doing s shuffle before writing to FDB, you will be locking the user, reading HLL, deserializing, merging and writing back to FDB from multiple machines which will results in a lot of rejected transaction and retries. My question is whether retries unwind fast enough or you will end up dropping data on the floor as you will exhaust the retry count

<comment><USER6> Turns out we are doing a shuffle :) - We're using Apache Flink for the aggregation step (5 second window) which performs a merge on key before writing the value out. So at the end of the day, we would only read/deserialize/merge/write once every 5 seconds, that is of course assuming we received data for the HLL aggregation.

However, due to the need for HA, we might run two or three clusters in different AZs which means we might have a few servers writing a partial aggregation to the same row, thus, the awesomeness of FDB plays a role.

That being said, our P99 latency writing to FDB is typically very low (few ms). We're doing usually 4,000 - 5,000 transactions a second at any given time.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> The program includes talks about other layers that Apple is developing. Does anyone know if they are planning on open sourcing any of those layers in the future?

<comment><USER11> From the description, the "record layer" talk seems like it's about an example POC and not a real project:

> This talk will provide a developer's perspective building a new FoundationDB > layer by describing the design and development of a record store that can > provide semantics similar to a relational database. This example layer will > provide the core functionality of a structured data store such as metadata > management, indexing, and query planning.

The JanusGraph support is a real project, though.

</comment></comment><comment><USER12> Considering one database to rule all is old..where does this stand?

[https://www.allthingsdistributed.com/2018/06/purpose- built-d...](https://www.allthingsdistributed.com/2018/06/purpose-built- databases-in-aws.html)

<comment><USER13> FoundationDB is a key-value store which supports transactions and scans over key ranges. Then on top of that layer, you can add higher level abstractions, like relational, document, graph databases. So it's similar to the storage engine concept many database servers use.

</comment></comment><comment><USER14> Are the talks going to be recorded?

</comment><comment><USER15> Sadly there is no Swift API for FDB.

<comment><USER2> Swift bindings were added recently.

[https://github.com/FoundationDB/fdb-swift- bindings](https://github.com/FoundationDB/fdb-swift-bindings)</comment></comment>


Responsibilities: Port Windows-based games to the Linux platform. (Valve) - <AUTHOR> http://www.valvesoftware.com/job-SenSoftEngineer.html

<comment><USER2> I feel like ive seen job postings for valve like this several times in the last few years. so either, its actually happening or they just like that they get huge numbers of smart interested people looking at thier job postings. my money's on the latter.</comment>


Google Is Tracking People's Movements in Their Communities During Coronavirus - <AUTHOR> https://www.newsweek.com/google-tracking-peoples-movements-their-communities-during-coronavirus-pandemic-1495915 <comment><USER2> I think a more fair assessment would be: "Google is tracking people's movements"

<comment><USER3> Yeah, but it's not clickbait-worthy unless it has "corona virus" in the title these days.

<comment><USER4> Would have been an even better title if they somehow worked Zoom into the title.

"Google Is Tracking People's Movements in Their Communities During Coronavirus although they are mostly working from home using Zoom."

</comment></comment></comment><comment><USER5> This post is describing [https://www.blog.google/technology/health/covid-19-community...](https://www.blog.google/technology/health/covid-19-community- mobility-reports/)

About privacy they say: "For these reports, we use differential privacy, which adds artificial noise to our datasets enabling high quality results without identifying any individual person. The insights are created with aggregated, anonymized sets of data from users who have turned on the Location History setting, which is off by default."

This seems pretty reasonable to me?

(Disclosure: I work for Google)

<comment><USER6> Given a pattern of movement it's trivially easy to identify an individual by cross referencing with other cheaply/freely available data sets.

<comment><USER7> Fortunately this is highly aggregated data without individual movements.

<comment><USER6> This is built on the normal Google location tracking systems. We both know that while they may be providing aggregate stats now they have all the data they need to provide individual location stats. Because the capability exists there is the temptation to use it, especially if the situation worsens more than expected.

</comment></comment></comment></comment><comment><USER7> This is simply an aggregate (on country level) on how many people (as change to baseline) have been at what sort of location at what time (with a granularity of days):

* Retail & recreation

* Grocery & pharmacy

* Parks

* Transit stations

* Workplaces

* Residential

It's quite clear that this can be easily derived from the information they have in maps.google.com plus phone movements. It's unlikely that this data presents any privacy concern.

On the other hand it's probably mainly useless with regards to fighting Covid19. As the data is not detailed enough for such a purpose.

Also I think we should point out that releasing this data in PDF form seems to be deliberate to prevent anyone else from providing meaningful insights by adding infographics of their own.

[Edit: Clarification that does not contain number of people but simply difference to baseline]

</comment><comment><USER8> Why is Google not warning people that they have been in contact with potentially infected individuals? Implementing this would probably be trivial for them.

It almost feels like breaking some higher contract with society by reserving that power for advertising and not using it to tackle the pandemic.

<comment><USER5> How would Google reliably know which people had it, so it could warn people they'd been near?

(Disclosure: I work for Google)

<comment><USER8> They don't go outside anymore and search for "when do I have to go to the hospital if i have coronavirus". Or you can just report it.

(Disclaimer: I work on an app that tries to do that. Ideally privacy preserving. And we implemented it using Google Nearby API to detect whether people are close. But that sends all messages over Google servers and that would be a deal breaker for us, but the tech itself would be really cool to have. Let me know if you can help.)

Also Related Work:

Singapore doing this: [https://www.tracetogether.gov.sg/](https://www.tracetogether.gov.sg/)

This as hardware: [https://estimote.com/wearable/](https://estimote.com/wearable/)

<comment><USER8> (Disclaimer: I work on an app that tries to do that. Ideally privacy preserving. And we implemented it using Google Nearby API to detect whether people are close. But that sends all messages over Google servers and that would be a deal breaker for us, but the tech itself would be really cool to have. Let me know if you can help.)

<comment><USER9> You can just edit your first post. It's inside the two hour window. All these addendums-as-posts clutter things up.

<comment><USER8> good call

</comment></comment></comment></comment></comment></comment><comment><USER10> Isn't it what they already do anyway?</comment>


Why being easily distracted can be a very good thing - <AUTHOR> http://www.bbc.com/capital/story/20180605-why-being-easily-distracted-can-be-a-very-good-thing <comment><USER2> I spent 3 years writing educational apps where interleaved memory was one of the foundational points of learning. Here's a reference [https://www.scientificamerican.com/article/the- interleaving-...](https://www.scientificamerican.com/article/the-interleaving- effect-mixing-it-up-boosts-learning/)

Others include teaching as a way to learn, changing location, spaced repetition. I can provide more references to research if you want.

</comment><comment><USER3> I very much agree on groups. I find myself not even trying to think myself when in groups since everybody is talking and my focus becomes more about being a good listener.

Then I go to my computer and right away has good ideas how to solve something. Just because I got some alone time to focus.</comment>


Show HN: World's Sexiest Video Search Engine Hits the Streets (YC W16) - <AUTHOR> http://www.hoogley.com <comment><AUTHOR> We started indexing gobs of Youtube videos and made the world's most luxurious, diamond encrusted video search engine. The audio is stripped and digested with Deepgram (that's us—hi!). When you search, you're brought right to when people are talking about your precious little search term.

The index is 4 million+ seconds of video and growing.

<comment><USER2> I hope YouTube won't get upset with this and try to stop your project.

</comment></comment><comment><USER3> The search tool worked better than I expected it to. Good job on that. I read on the YC blog[1] that you're using deep learning to index audio - can you explain more about this? Do you have any experiments showing how this is better than generating a transcript of the audio?

[1] [https://blog.ycombinator.com/deepgram-yc-w16-is-building- a-g...](https://blog.ycombinator.com/deepgram-yc-w16-is-building-a-google-for- audio)

<comment><AUTHOR> Yep, we use deep learning to generate an index of audio features and an approximate search to look through it all. We've done lots of testing on both clear and average/noisy audio. With standard transcription matching you get ~alright results (50% retrieval) on clear audio but really terrible results on average/noisy audio (<20% retrieval). With deepgram you get great results on clear audio (90% retrieval) and still really good results (80% retrieval) on noisy/average quality content.

We're always trying to make the indexing and search better/faster. For Hoogley we had to pull some tricks to get the search to be really fast for a lot of users, so it isn't quite as high quality as it can be. Working on it though ;)

<comment><USER3> Cool stuff, good luck guys!

</comment></comment></comment><comment><USER4> I like the idea (and we have the same retarded sense of humor) but it isn't consistently useful. I searched "hilary bosnia sniper fire" and got nothing.

So spend less resources on your design and more on functionality.

EDIT: Additional feedback: Your product doesn't work. If you test it yourself for a few minutes you'll see that. It is your job to test it, not the world's. You're not "getting it out there" so much as turning people away forever because they will think "I've already tried that; it didn't work". This is kinda like when my programmer employees/contractors tell me that they finished a feature but I know they never bothered to try it because it doesn't work at all.

</comment><comment><USER5> I searched for linux and got 13 results. None of them have anything to do with linux. How is this a sexy search engine?

<comment><AUTHOR> The sexy part refers to the looks — sorry if our sense of humor is not translating well :(

</comment></comment><comment><USER6> Not sure why they released, it is not even alpha product. looks like a POC

<comment><AUTHOR> What?! You don't like click bait-y titles that point to POCs?!! You are totally right, it's a POC. <<slink away>> Just a project we put out really, really early but hope it's fun/interesting.

Indexing the entire web's videos and presenting results well is a big computational+UI problem that we are still working on. We mostly help businesses get value out of their audio/video with our API. Full scale search engine is a ways away.

</comment></comment><comment><USER7> It doesn't produce any useful search results for me?

<comment><AUTHOR> Bummer. The index size is pretty small right now but we're working on increasing it right now. What were you searching for?

</comment></comment><comment><USER8> The voice recognition actually works very well. Obviously the results now look completely random.. To the point where it's actually funny to use

<comment><AUTHOR> Glad you are having fun with it! That's why we put this version out. Have fun collecting flair ;P

</comment></comment><comment><USER9> Is Hoogley a cross between Google and Hooli?

</comment><comment><USER10> Glad to see you guys got this on the web! I remember seeing an incarnation of this at your GTC booth.

How long did ingestion take?

<comment><AUTHOR> Thanks! I'm glad we got __something__ to play with. This is about a day of crawling + processing.

</comment></comment><comment><USER7> How is this better than searching youtube auto closed captions?

<comment><AUTHOR> It's about the same in topology — process audio, search through that, get back timestamps — but we don't rely on transcribing the words correctly.</comment></comment>


Leveraging A Poor Memory In Engineering - <AUTHOR> https://senrigan.io/blog/chasing-10x-leveraging-a-poor-memory-in-software-engineering <comment><USER3> I'm about 20 years into my programming career, and have been programming around 30 years total. I am very fast at lots of tasks now, but it has happened in a way that would be totally surprising to my younger self: I don't waste time doing stuff that doesn't matter.

I used to assume that the "10x engineer" was 10x faster at the programming/typing part, but it turns out it's more like identifying the 1/10th of the work that actually matters and just do that efficiently. It is also true that there's a lot of experience in both the identification of that 10%, and the efficient execution of it though.

Side note: I have also met a few flat out amazing, natural programmers. These people can also be 10x as productive, but it's in a pretty specific way that should probably just be considered an outlier. My feeling is that the main way for the rest of us to achieve that level of productivity is gain experience, do things simply and efficiently, and learning how to focus on the things that matter.

<comment><USER4> I believe you and would be interested in your list of things that matter?

<comment><USER5> Not the OP, but my experience matches his and for me the following are particularly important:

\- Getting the requirements right. This by far has the most impact on effectiveness

\- Reducing friction. Simple things like proficiency with high quality tools, smooth and fast builds, clean logs, easy ways to generate and analyze core dumps, accumulate to produce an outsize effect on productivity.

\- Uninterrupted, substantial blocks of focused time. It is staggering how easily chat, email and meetings can destroy productivity.

<comment><USER3> I was attempting to answer this elsewhere in the thread, but I totally forgot about uninterrupted time. This is a huge one, it really matters.

Quick tip: For people who work in a company where they don't necessarily have control over their own time: schedule the living ____out of your calendar. Book endless meetings with other programmers, then just sit there and do work. "Q2 Backend Architecture Review: 4 hrs" can just be a few people sitting in the meeting room programming. It's crazy the power of blocked out time on your calendar to a manager who otherwise sees an empty day.

<comment><AUTHOR> This is a hilarious and amazing tip.

Another way I've tried to tackle this is on day 1 of a job - I've blocked out a huge chunk (4 hours) of my daily calendar of "Coding Time - No Meetings, No Slack, No Email" before anyone could tell me no.

</comment></comment></comment></comment></comment><comment><USER6> To be honest, it sounds like the author's primary productivity issue is not a poor memory for syntax, but a stack of time wasting habits attached to the cue of looking up syntax. This has everything to do with our relationship to attention and focus.

The way the author managed to reduce the impact of this habit was to remove the cue for wasting time by memorizing syntax. Congrats on that! This seems like a pretty demanding solution, though.

Perhaps a very simple way forward would be to employ a site blocker on distracting sites during work hours.

Beyond that the author might regulate their work hours so that they have limited time to get things done and avoid burnout from long days.

They also might consider using a pomodoro technique, so that their brain can alternate between focused and relaxed attention. Setting boundaries around when it's time to focus and introducing a purposeful schedule of relaxing breaks helps keep one from falling victim to bad habits when your brain needs a moment to relax.

<comment> mck- Just what I thought. Sounds like author has awareness of the problem, but decided on a rather difficult solution.

You can still get into flow while looking up syntax you haven't committed to memory, but know how to find in 2 min.

I have a habit not to commit anything to memory that I could Google in 2 min, saving on RAM.

<comment><USER7> Two minutes? If I'm in flow (a very rare occurrence these days, sadly), five _seconds_ is on the cusp of too long. In my editor, spending time looking through the list of autocomplete suggestions is often enough to lose track of some of the things I had mentally stacked up to write. Switching to a browser to find docs risks the whole stack.

One way I've found to mitigate this is to not try to write things that that would definitely work on the first draft. Instead, whenever I need something I don't remember, I just write enough of it to note what I'm trying to do and keep going. The details of whether it would be more convenient to use slice or substring here aren't important when I'm trying to write things down before I forget them.

</comment></comment></comment><comment><USER8> Memorizing APIs is... not how I'd approach productivity, but if it works for you, great.

I'm doing a lot of Kotlin right now, where simple, useful extension functions are an autocomplete away. I don't need to memorize how to get a slice of an array; I know it's going to be named something like .slice(), and I can jump right to the documentation from my IDE.

When I run into something not in the standard library, I write a little extension function of my own. And then I remember it the next time I run into that problem, and get to reuse it, just like it were part of the language.

<comment><USER9> I am a generalist. After programming in A LOT of languages through my 20+ year career, I have given up in memorising any language specific features (APIs, syntax, etc)

Every time I need to write something in a new language, I grok it and write on it with a handy syntax /API/SDK reference.

For me, The things worth remembering are the patterns used to solve stuff, not how the patterns are implemented in a specific language

<comment><USER10> I mostly program in C#, python and JavaScript. By mostly I mean slightly more than half the time. The rest is old C++, old Java, old Perl, BASH, etc. I gave up a long time ago trying to remember the APIs/Libraries for all of those. Most programming is doing something slightly different to some other thing you have done before. I make it a point to remember how I do things, so that no matter the language, I can get it done. This also helps tremendously with estimates.

</comment></comment></comment><comment><USER11> Similar to this post, Jack Kinsella has written how he used Spaced Repetition Software to learn and keep programming knowledge in the following articles:

[http://www.jackkinsella.ie/articles/janki- method](http://www.jackkinsella.ie/articles/janki-method)

[https://www.jackkinsella.ie/articles/janki-method- refined](https://www.jackkinsella.ie/articles/janki-method-refined)

[https://drive.google.com/file/d/1JCHkqVoX598Ob_111khrGoJ5cpe...](https://drive.google.com/file/d/1JCHkqVoX598Ob_111khrGoJ5cpeh_ahU/view?usp=sharing)

Derek Sivers also has written on memorising a programming language using SRS software: [https://sivers.org/srs](https://sivers.org/srs)

One important thing in the original article is about flow, or the feeling of being in the state of flow if you don't need to remove yourself from the task for looking up documentation. I think that is a worthy goal to aim for but I am amazed at the amount of cards he has created, nearly 10,000 over a period of three years. He has put in lot of effort and reaped the reward.

</comment><comment><USER12> I used to think memorising facts was a waste of time.

I'd say things like "why would I spend time memorising facts when computers can do that for me?" I thought there was a stark difference between "memorisation" and "understanding how things work". The former was for people who wanted to pass tests, and the latter was what smart people dedicated their time to.

What using spaced-repetition software has taught me, however, is that memorisation and understanding are tightly coupled. Storing facts in my brain increases the amount of connections I can make, which greatly improves my ability to think.

<comment><USER13> This hit upon a larger issue within the programming community - the idea that the brain's abilities can be reduced into discrete parts (see the comment about how a programmer's CPU is the bottleneck, not I/O). While computers may work this way, humans are a lot messier, and an improvement in I/O may actually lead to better compute, as you allude to. Any form of mental enhancement can improve all functions of the brain - it's a beautiful organ.

</comment></comment><comment><USER14> Wow. This sounds a lot more like grinding than programming. Memorizing APIs? Seriously? What happens when it changes next year?

Echoing another commenter, every line of code you _don 't_ code is coded infinitely-faster, doesn't need testing, and you'll never have to review or maintain it. Programming should be the art of surgically using just the right amount of code in just the right spot to provide lasting value, not filling out forms, wiring interfaces together, or thrashing around online searching for other lost souls. Yes, we all end up doing that kind of work -- but that's a fail, not a win. The more we horse around with our tools, the less we're helping people.

Video games took over the world. That is, everything became a video game, with a sexy UI, enthusiastic community, cheat videos (and classes), and outward signs that you've leveled up.

This makes sense, I guess, if you're goal is to play the game. And whatever you're doing with computers should definitely be fun. But when interacting with the computer is a tool you're using to provide something to somebody else, the longer you spend with the computer providing that value the less efficient you are. The best code is no code.

Somehow this author seems to think that being a great programmer is due to mechanically-interacting with the programming environment. The 10x types faster, remembers more, and has mad skills at the IDE. This would be utterly silly if we were talking about great novelists -- how many words they type per minute, for instance -- but somehow it seems to make sense for coders.

</comment><comment><USER15> If what was holding you back from being a 10x engineer was not remembering syntax, then you're already there.

Myself I wish to not remember things of this nature. My IDE can autocomplete my code with API references. My terminal history is set to infinite so I can grep for whatever command I found useful in the past.

I instead want to spend my time and memory on deepening my understanding of certain topics, or on brushing up on concepts and techniques I've known in the past but have come close to forgetting.

<comment><USER16> The truth is that if you're familiar with a few families of languages - you'll reinvent the syntax on the go: "if I myself wanted to implement a feature I am about to use - which syntax would I converge upon?".

If you're working in an IDE you'll also have a realtime hint on whether your guess was the correct one.

</comment></comment><comment><USER17> Yes! Space Repetition Learning is amazing.

For me its wasn't about becoming a 10X developer but proving that I was already 10X because I was facing a salary cap of 120K CAD where I saw friends working as long as me 180K+ CAD and some 250K+ CAD. The last job I attempted we had a 55 year old developer being paid the same as me doing the same rot work and I said thats not going to happen to me.

I've always been a person that gets things done but when you asked me how I did it I could never regurgitate the factoids.

Interviewers or other developers thought I was stupid/faking because their probing of my knowledge came down to superficial factoids and not evaluating the past work as a whole where I literally have 30+ projects. Hiring is broken and instead of getting upset about it you just have to meet the checklist.

I have Cracking the Coding Interview and I've been through that book 3x and I can not remember the contents of it because that book has been more more useful to me to prompt up my monitor than in my in the day to day work.

I feel when you're a developer 10 years in you'll be forgetting things as quick as you learn them but proving you have in-memory knowledge is super important.

I use Anki and Mnemosyne but found their UIs clunky and so I built my own Space Repetition Learning flash card system. I was studying for AWS Certifications and I wanted a way to tied practice exam questions I wrote to flashcards so when I got questions wrong it would reload my deck, and one I memorized all the factoids via space repetition learning I could go back and attempt a practice exam.

Now when people ask me whats the different between RAID 0 vs RAID 1 I know which is stripping or mirroring.

I got so carried away building my study system it because my own startup called ExamPro: [https://exampro.co](https://exampro.co)

Its really nice to have something you can build where you actually have domain knowledge and its the first time independently where I was successful building a startup that has generated revenue.

I could build anything but without domain knowledge I could never sell what I could build and now I can and its wonderful.

Space Repetition Learning changed my life. Who knew?

<comment><USER18> Is hiring really _that_ broken? Not everyone hires like that and if they do, maybe they're no good to begin with.

I keep hearing how the interviews at Google are really tough, but then a lot of the people who actually get through quit in the first weeks. It can't be _that_ great of a job.

<comment><USER19> Yes, hiring really is that broken. Everyone who is a player who is openly "hiring" is playing that same game. "if they do maybe they're no good to begin with" is sour grapes, and while it may be true, it's also true that almost no company is good. But they have the money and I need the money, so.

Speaking of which, "it can't be that great of a job"...no, of course not, it's a job. But a job is a job (roughly speaking), and a $300k/year job is to many/most people twice as good as a $150k/year job.

</comment></comment></comment><comment><USER20> I've actually recently tried Anki when I was forced to learn Javascript and knew I would be using it so rarely that I knew I'd end up regoogling, re- researching, relearn Ing the same facts/solutions over and over and over again. It was a revelation. Suddenly I could, in a systematic way, codify whatever new thing(s) I learned in a way that I knew I wouldn't forget it again. It was incredibly freeing and I noticed the difference it made day-to- day when I did have to use JS.

The important thing is that these cards aren't static. As your knowledge improves, as you gain practice, you'll notice the cards that aren't written in a way that are conducive to flash card learning and (ideally) you end up pruning and refining the process until it works. This requires a non- insignificant amount of dedication though.

<comment><USER21> I don't understand. Did you have to create the card deck in Anki or was there someone else who created one, which you used?

I just can't imagine using flash cards, or a similar product, to learn anything in-depth about a language. Maybe API specific problems, but nothing more.

<comment><USER20> I made my own. Every time I googled something or learned something new, I added a flash card. It could be anything. I added a _lot_ while reading a book about learning Javascript. It's just something I had to figure out once I decided I wanted to use Anki.

I have cards like asking what a closure is or how to use one, or what an IIFE is or how to use one. Or what IIFE stands for. How to deconstruct an array or an object. What's the scope of a variable defined with "var"? How does it differ from "let"? How do I list all the properties of an object? How do you access the properties of an object? When should you use bracket notation to access a property of an object? I have a bunch of syntax ones or basic ones ones like what's the equivalent of a Python forEach.

Somebody else might decide to have completely different questions. I tried to codify every little thing I learned while using Javascript, where others would consider it overkill. I've already deleted plenty of cards where I I felt I'd internalized the knowledge in a way that I don't need a flash card for it.

</comment></comment></comment><comment><USER22> Doing one's daily work includes a certain amount of repetition, and this can be leveraged into a learning program. When you learn something surprising, or have to look something up, you have a candidate for a flash card. Also, when you fix a bug in your own work or find you have to rewrite some of it, don't just brush it off as an inevitable part of development, or call it refactoring, but ask yourself if there was something that, if you had known or considered it in advance, would have helped getting it right the first time. If there is, it might include something that could be put on a flash card, and even if not, the analysis will help you develop good judgement (10x people do not generally spend a lot of time fixing or reworking their own stuff, because their first passes are often good.)

Another source of flash cards from any books or articles you are reading: any key point that is new to you, or you had forgotten, might go on a flash card. It's more effective than bookmarking or highlighting (when starting on a topic that is completely new, you might want to limit your notes to those points where you had to pause to think about what you just read.)

</comment><comment><USER23> The key with documentation is knowing where to look. If you are Googling for documentation every time you need something, I think you're doing it wrong. I always go straight to the source documentation and often I go to the source code itself if the documentation is ambigous. JS is probably the only language where I don't know a "true source", so I just go to MDN.

<comment><USER20> I'm not sure this is helpful. I know exactly where to look. I still end up having to break my train of thought and the mental model that I'm in by opening the browser and navigating to the precise location where I know the information I need is. Then I need to refocus on the task I was doing before. Multiply this by hundreds of times throughout the day and it seems to me like a huge productivity loss. I used to be against rote learning of any kind, but nowadays I'm not sure. There's too much meaningless minutia that we need to learn or use while programming.

</comment></comment><comment><USER6> To be honest, it sounds like the author's issue was not really forgetting syntax but the stack of procrastination-related habits that were attached to looking up syntax. It sounds, at face value, like what folks describe as ADHD.

</comment><comment><USER24> I use Anki for improving my memory on different topics; philosophy, geography, etc. I'm currently using it to prepare for the french motorcycle exam and that's the first time I had to write my own cards.

I'm a software engineer and I feel like I'm forgetting a lot of things that I learned during university and during my carreer (algorithms, architecture models, design patterns, etc.). This feeling is very frustrating. I never thought about using Anki professionally and I'm gonna start to add some algo- related cards to Anki right now.

Note: I also recommend "learning how to learn", [https://www.coursera.org/learn/learning-how-to- learn/](https://www.coursera.org/learn/learning-how-to-learn/) \- give some simple techniques and tips to be better at learning (spaced repetitions is one of them, learn by chunks, force yourself to recall, etc.).

<comment><USER25> While I can see why you would use flash cards for learning geography (more factual), I'm not sure how you could design a card to explain a data structure. Any idea ?

<comment><USER24> One example I had in mind when I said I was forgetting algorithms and data structures was about Skip List - [https://en.wikipedia.org/wiki/Skip_list](https://en.wikipedia.org/wiki/Skip_list)

I did an implementation of a skip list a long time ago (and I found the algorithms to insert, search, etc. quite simple and elegant). Recently I had a chat with someone and I was struggling to explain them.

I could design a few cards for skip lists:

\- Question "ELI5 skip list" Answer "the actual ELI5"

\- Question "What sort of problems are solved by skip lists?"

\- Question "How to make a skip list indexable"

\- Question "How to insert the element 123 in a 3 levels skip lists [1, 4 - <USER2> - 4, 43, 120, 210 - 210, 302]" <\- make a better ASCII scheme. etc...

Answers can be quite long. For the french motorcycle license, some answers can be very long (2 or 3 pages) and it works pretty well for me (see [https://ankiweb.net/shared/info/1156061502](https://ankiweb.net/shared/info/1156061502)).

When you train: after reading the question try to recall the answer in your head and then read the answer. Then you evaluate how good you were recalling and you pick the Anki "score" (bad, hard, good, too easy).

</comment></comment></comment><comment><USER26> Spaced Repetition has also transformed how I learn. It lets me be decisive with how I understand concepts and lets me focus much more on long-term learning.

However, I agree that it's more useful to memorize/internalize concepts than syntax. One of the limitations with anki/supermemo's flashcard-based design is that it's hard to break down complex ideas because you're limited to the flashcard format. I've built a new tool that lets you generate flashcards right from your notes to make it easier to break down new ideas. It's called RemNote: [https://www.remnote.io/](https://www.remnote.io/).

My memory was pretty terrible before I started using this and that problem is now largely solved :)

</comment><comment><USER27> I'm a good programmer with a bad memory, but I went a completely different route to the guy in the article:

Better Tools

He talks about having to google things all the time, and memorize how to do things in his language. But that's the IDE's job.

Good tooling knows everything about the language you're using, and everything about your codebase and everything about every library you've ever used. If you want to do something with a File, you shouldn't ever need to remember anything more than the word "File". Type that, then ctrl+space, and the IDE will get you to the point where muscle memory can take over.

For other things, I just cheat. I have "\r\n" written in felt marker in the corner of my keyboard, because (since I'm also a bit dyslexic) I can never get the slashes in the right direction first try. This isn't my dev laptop, so I just got them wrong typing them out above, and had to google to verify. Despite having used them on a daily basis for 20 years.

But anyway, back to the point: Tools can and should replace nearly all the memorization that most people in this gig seem so proud to have done. So long as you're good at the problem solving bit, a bad memory won't hold you back.

</comment><comment><USER4> A little equation for you

P = ( U * O / F * C ) + S

P Productivity

U Understanding of the codebase

O Ownership - degree to which you feel you can make significant changes to code with minimal approval

F Fear - degree to which you are concerned about mistakes costing you your job

C Complexity of codebase

S Your actual skill set

Yes I think Skill is not a multiplier in almost all cases

I suspect ownership and fear are actually exponents as well.

</comment><comment><USER28> Anki really is a great tool.

Tip for people looking to use it: you can find premade decks (collections of flashcards) on various topics on the Anki website. For example, here are decks that are available under the 'Programming' topic: [https://ankiweb.net/shared/decks/Programming](https://ankiweb.net/shared/decks/Programming)

Not all of these decks are great, but there's a rating system, and this can sometimes be a helpful starting point for your own decks.

</comment><comment><USER29> Before heading to management, I chased this as well. I found that people who keep a personal wiki and documentation get the same benefit. It's a great way to organize your knowledge, and keep Anki to things like syntax.

However, the next gap is learning to reason about these things from first principles. It's the "10x" commonality and I believe it can be learned, but it takes a different set of tools.

(My book will come out one day. ;)

<comment><USER30> What does reasoning about things from first principles mean?

<comment><USER31> I once worked with someone who didn't understand the program stack whatsoever, leading to code that was (slowly but surely) infinitely recursive. Using flashcards to remember to use .put() versus .append() in some API is not really that person's path to 10x engineer.

</comment></comment></comment><comment><USER32> If you're planning to go down this route to use Anki to sequence your SRS revisions, I recommend checking out this plugin that I created a few years back:

[https://github.com/Ziinc/gsheets_importer](https://github.com/Ziinc/gsheets_importer)

It basically scrapes a published Google sheet that has a list of links. Each link needs to be a Web page with a html table. The plugin then scrapes each link, using the left side of the table as the front of the card, and the right side as the back of the card. All formatting is converted into inline css, so you can write code formatting as well. Though if you were writing actual code, I suggest writing it in markdown and then publishing it then adding it to the sheet, instead of using a published Google doc.

I use it for university and it reduces the time spent formatting each card individually into Anki.

So far it's the most efficient workflow to creating Anki cards that I know of.

</comment><comment><USER33> I really need to do something like this for Rust. Ive been coding it for the past few months and still couldn't tell you off the top of my head what the subtle differences between Rc, Refcell, Cell, Box, RwLock and Mutex are. Now there's another one called Pin and I can't figure out where exactly it applies either.

</comment><comment><USER34> Leveraging doesn't mean what you think it means. You apply some force (e.g. poor memory) to one end of a lever, with the effect that the force is multiplied and turned to an even greater advantage than it was without the leverage effect. This is an article about _overcoming_ poor memory, which is the exact opposite.

</comment><comment><USER35> My more productive 10x days has little to do with programming syntax. These are days when I focus on gaining clarity on the problem/objective and writing the least amount of code to solve the problem.

Writing less code requires extensive knowledge of frameworks, patterns and best practices. Memorizing programming syntaxes and paradigm makes getting in the flow easier because of reduced context switching, makes work more fun and hence greater productivity (10x days). But at the heart of it, being productive requires understanding of the problem domain in depth, knowing what matters and what doesn't (YAGNI and pareto-ing mercilessly).

</comment><comment><USER36> To those questioning the benefit of rote memorization of API signatures and other factoids that are always just a click or hover away: would you say the same about vocabulary words when learning a new human language?

<comment><USER37> I always thought those "factoids" were silly. There's a massive bandwidth difference between a few clicks and instant recollection.

</comment></comment><comment><USER38> > Yes, I tried Dash

I'd be interested to hear what your problems with Dash were.

I also have the problem of an extremely bad memory (and I feel the more time I've spent thinking about abstract concepts the last years, the worse it got), but I've never really felt that this held me back. Looking up API documentation makes up a negligible portion of my time working, and especially with Dash, that has been reduced to a non-issue.

</comment><comment><USER39> I used Anki for years when I started programming 6 years ago. Here are my tech related decks: [https://walkman.cloud/s/58jBymwC6fDmFAC](https://walkman.cloud/s/58jBymwC6fDmFAC)

It helped me a lot! Lot of my co-workers said that I learned faster than others in the same timespan, and I think it was partly because of Anki.

</comment><comment><USER40> Whatever works for you. Reading books in a relaxed environment works best for me.

</comment><comment><USER41> Add ADD related working memory issues to this, life gets really interesting :(

<comment><USER42> If by interesting you mean eternally frustrating... agreed

</comment></comment><comment><USER43> I also have terrible memory. If I'm coding something and forget some pattern (not sybtax, because the IDE handles that...) I just do a quick search of my code within my IDE.

I have a One Note for frequent queries.

</comment><comment><USER44> But how can you write small snippets of code into Anki flashcards, and be able to use it on mobile (no plugins)? Every time i try you need to either write in HTML or lose formatting completely.

</comment><comment><USER18> It's nice for "Kyle" that he has a photographic memory to remember all the API names and incantations. Spaced repetition will not give you that.

If I have to google "how do i amend my git commit" five times every month, that's actually the best use of my time. If I only need it five times a month, spending ten seconds to look it up is more efficient than making it part of some sort of spaced repetition learning scheme.

I would say the same is true for virtually all of programming. If you really need it all the time, you automatically learn it by looking it up all the time. No flashcards required. If not, just look it up. The guy with the photographic memory will always win, he'll remember it the first time. Again, no flash cards required.

<comment><USER45> Actually you just convinced me that the first thing I should try this with is git. I _do_ look up that stuff all the time because none of it makes any sense. Since I will never intuit it, I might as well memorize it. Never had this problem with Mercurial.

</comment></comment><comment><USER46> Not sure how much you care, but your example for .slice() is wrong.

.slice(1,3) will give you elements two and three. You're looking for .slice(0,3)

<comment><USER47> It gives elements one and two. That's one _to_ three, non-inclusive. If we wanted elements one _thru_ three, that's a different matter.

<comment><USER46>
        [1,2,3].slice(1, 3)
        > [2, 3]</comment></comment></comment>


Economy to grow at 5.4%, Atlanta Fed - <AUTHOR> https://www.cnbc.com/2018/02/01/economy-to-grow-at-5-point-4-percent-rate-in-first-quarter-atlanta-fed-tracker-shows.html <comment><USER2> Who would have thunk? A businessman at the helm and the economy grows at its real potential. A stronger economy trickles down everywhere.

<comment><USER3> The economy was already growing strongly under Obama (the end of Obama's term was comparable to the start of Trump's term). The tax cut probably will increase growth, though, similarly to how Obama's stimulus did</comment></comment>


The Hard Truth About Socialism (Stefan Molyneux) - <AUTHOR> https://www.youtube.com/watch?v=9RNZ2LjpEl4 <comment><USER2> Why is this on hacker news?

<comment><AUTHOR> For the same reason any other submissions concerning political philosophy, economics, etc. are.

Quite many of those "off-topic" submissions climbed up to the top; probably because people here were interested enough in them. :)

If anyone is interested, and have any questions regarding the topic, feel free to ask! I am sure many people would love to join and be of help as well.

<comment><USER3> No, this is definitely off topic because it is ideological flamebait and that leads to ideological flamewar, the last thing we want here.

Generic ideological tangents, and generic discussion generally, is off topic on HN. Its signal/noise ratio is too low.</comment></comment></comment>


The Startup War Chest - <AUTHOR> http://www.jordhy.com/startup-war-chest

<comment><USER2> "Entrepreneurship is war."

This is one way of functioning. There is, however, another approach. It's called the Blue Ocean Strategy. Here's an excerpt from the wikipedia page [1]:

 _Unlike the "Red Ocean Strategy", the conventional approach to business of beating competition derived from the military organization, the "Blue Ocean Strategy" tries to align innovation with utility, price and cost positions._

[1]: [http://en.wikipedia.org/wiki/Blue_Ocean_Strategy](http://en.wikipedia.org/wiki/Blue_Ocean_Strategy)

<comment><AUTHOR> Great comment. While Blue Ocean Strategy does away with competition for positioning several battles remain, most notably:

\- The battle for talent \- The battle for capital \- The battle for partnerships \- The battle for distribution, etc

In the context of the article I also make the argument of startups being at war with the government and even customer that are hesitant to adopt new technologies. Take the case of Uber for example. Class act Blue Ocean against the status quo albeit at war against governments, similar rising companies, etc.</comment></comment>


Screen Stabilization on Android - <AUTHOR> https://github.com/ryanchyshyn/aosp_screen_stabilization <comment><AUTHOR> Forgot to add: Original article: [http://blog.lemberg.co.uk/no-shake-screen- stabilization-andr...](http://blog.lemberg.co.uk/no-shake-screen- stabilization-android)</comment>


EU tells Facebook's Nick Clegg to rethink ad rules for elections - <AUTHOR> https://www.theguardian.com/technology/2019/apr/17/eu-tells-facebooks-nick-clegg-to-rethink-ad-funding-rules <comment><USER2> Related from another Guardian journalist [https://news.ycombinator.com/item?id=19717962](https://news.ycombinator.com/item?id=19717962)</comment>


Ask HN: What do designers you work with use to provide assets to you? - <AUTHOR>

I run a small interactive shop in Minneapolis (TEN7.com) and we work with designers all the time. We've required them to provide layered Photoshop files to us so that we can create the designs, both in Desktop and Mobile. It's worked great. We've never encountered a designer for whom this is an issue.
We're now working with someone who has basically accused us of being out of touch, saying that "Most designers I know do not think of Photoshop as a "design" program. A lot that I talk to prefer to do layouts in indesign and then present pdf files with multiple layout versions to clients." Basically, she's designed everything in InDesign, used that to show mocks to our mutual client, and then she recreates them in PSD for "the developers".
As far as I am concerned, this is idiotic. Just use Photoshop to begin with, and you're done.
What I really want to know is whether I'm the crazy one? So, community poll... what do the designers you work with provide to you? Photoshop? InDesign? Fireworks? Illustrator? Something else? HELP! <comment><USER2> Why would you design in InDesign first, then recreate it in Photoshop? That's ridiculous; you're doing twice the work.

I've been moonlighting as a freelance web developer for 8 years now for a guy in Toronto Canada and he always sends me PSD files to slice and dice.

Recently, I've been working with a new designer local to me in NY; fresh out of college. She wanted to know how to send me the designs so I sent her one of the ones I get from my guy in Toronto. She had absolutely no problem following the layout; how the design was broken into groups, labeled, ordered, etc...

PSD or bust. And no, Pixelmator isn't the same.

<comment><AUTHOR> That's exactly what I thought. Complete and utter waste of time. Plus, the designer is charging the client to "convert" it as an additional fee. Just crazy.

</comment></comment><comment><USER3> Most designers I work with 99% use Photoshop.

The best designers I've met, they use Photoshop just for manipulating images, etc. They also use Fireworks ( __adobe is not supporting any longer), etc.

I think who designs for web, could and should know how to create prototypes. I don't think Photoshop is the best tool for design. Principles like Master Page and so on, are non-existent in Photoshop...

Anyway, I hate to open PSD files, photoshop is slow. I usually pick the full merged JPG and work on that. Cut images from that etc (everything not perfect with errors, etc). Then I share the image folder with the designer and he substitutes the images for me etc - this is usually already coded, so as long as he position the images properly etc overwritting it is fine!

</comment><comment><USER4> I do publishing and we go straight Indesign. Covers are made in Photoshop.

<comment><AUTHOR> You cut images and layout from InDesign? What do you mean by Covers?

<comment><USER4> We produce a scientific journal with associated promotional materials, every issue there is one cover which is produced in Photoshop. The advertising materials are made in InDesign (our designer gives us 2 choices for each item) and each issue is programatically layed out in IDML by my software and touched up by a some kid I found at a coffee shop. I do computer work for this group and I wouldn't call us particularly profitable.

</comment></comment></comment><comment><USER5> Photoshop or Illustrator files.

</comment><comment><AUTHOR> Options:

<comment><AUTHOR> InDesign</comment></comment>


Can Tumblr's David Karp Embrace Ads Without Selling Out? - <AUTHOR> https://www.nytimes.com/2012/07/15/magazine/can-tumblrs-david-karp-embrace-ads-without-selling-out.html?pagewanted=all

<comment><USER2> With caveat of getting downvoted, I don't understand why ad supported businesses are derided especially on forums like HN.

1\. Marketing & Visibility: Ads let small businesses (and of course startups) to gain visibility. How many startups don't use Google Adwords? Almost everyone.

2\. Proven Model: Ad supported businesses are proven model of decades. Newspapers, radio, TV, magazines everyone used ads to subsidize "creativity".

3\. Privacy: In digital realm, targeting and cookie dropping leads to privacy concerns. I completely agree. But all the data is mainly collected anonymously. As a young male in twenties, I'd much prefer my ads that are relevant to me. And I'm fine with data collection as long its free.

4\. Democratization: Don't forget ads played critical role in democratization of Internet since everyone could join the party with minimal barriers. Imagine if all the services were paid. Even students from developing countries like India/China couldn't have afforded it due to currency imbalances.

5\. Ads are crappy: Currently banner ads are crappy. I agree. Ads done right are always enjoyable. Who didn't enjoy the old spice "The Man Your Man Could Smell Like" campaign. All of my friends loved it. Remember, it was all digital campaign. Crappy ads lead to frustration. Auto-playing videos, page-takeovers, etc. are ugly, we must change that to make advertising attractive.

<comment><USER3> For web apps, the eCPM can be pretty horrible if you're not in a decent niche. Mobile eCPM is sliding downwards as well. If the ad supported business model is derided, it's because a lot of them treat monetization as an after-thought, rather than something that should be baked in the product. There's also a wishy-washy quality that a lot of people have, about thinking you can get ramen profitable just by slapping on an Adsense banner.

</comment></comment><comment><USER4> Fred Wilson wrote about this today: <http://www.avc.com/a_vc/2012/07/in- defense-of-free.html>

TL;DR : yes

</comment><comment><USER5> Wouldn't the best route to take be making ads an opt in, they broker the ads and content creators get a piece of the action? And be able to blacklist certain ads</comment>


Interviewing programmers - <AUTHOR> http://www.airs.com/blog/archives/509 <comment><USER2> I disagree with this statement"it would in any case be unfair to candidates to ask them to undertake a serious piece of work in order to get a job."</comment>


Kevin Rose to Replace Jay Adelson as Digg CEO - <AUTHOR> http://mashable.com/2010/04/05/digg-ceo-kevin-rose/ <comment><USER2> That's a pretty gutsy move to leave Digg. As far as I can tell Digg is doing pretty well, Jay must have a great idea brewing.</comment>


Yelp Evades Fire but Isn't Bulletproof - <AUTHOR> https://www.wsj.com/articles/yelp-evades-fire-but-isnt-bulletproof-11551983590 <comment><USER2> [https://outline.com/gevTtU](https://outline.com/gevTtU) \- January 22 article linked in the OP with context of SQN Investors' call for a board overhaul, alleging mismanagement.

It's so intriguing how much power a 4% stockholder can have over a public corporation. But I guess that other investors likely don't want to step up to be an activist if someone else with even more exposure is willing to do so, and they'll happily vote alongside the activist who's ideally made themselves closer to the problem, and (those investors would hope) wouldn't have the baggage and misalignment that a founding team might.

</comment><comment><USER3> [https://outline.com/C7BuY4](https://outline.com/C7BuY4)

<comment><USER4> Thank you. Paywalls shouldn't be on the front page.

</comment></comment><comment><USER5> Yelp should be DoorDash. Yelp should let you buy services directly from the platform. Yelp should be Groupon. Yelp should be Medium for small businesses.

<comment><USER6> Yelp bought food delivery service Eat24 for $134 million in 2015 and integrated it. They sold Eat24 to GrubHub in 2017 for $287 million and swapped for a GrubHub integration/partnership. As of 2018, DoorDash was still struggling to turn a profit.</comment></comment>


[tor-dev] Tor in a safer language: Network team update from Amsterdam - <AUTHOR> https://lists.torproject.org/pipermail/tor-dev/2017-March/012088.html <comment><USER2> Just make sure whatever it is allows you to know as much as possible at compile time about memory locations and timing of operations. These are necessary for finding covert channels. One of reasons I told people using Freenet it couldnt be trusted is JVM might allow endless leaks. Also because the JVM. ;)

Main contenders are MISRA-C w/ tons of static analysis, Ada/SPARK, SafeD, and Rust. These are ones with plenty of tooling & libraries. Also double check object code in case compiler screws it up. SPARK Pro has that built-in. CompCert can eliminate need for it usually but expensive. Maybe just eyeball it per file in compiler.</comment>


Show HN: Transducers in Python - <AUTHOR> https://github.com/rcarmo/transducers-py

<comment><AUTHOR> I started porting the Cognitect transducer libraries to Python yesterday, aiming for a purely functional interface (so that I can use them with hylang.org). Pull requests are welcome.

</comment><comment><USER2> What are the advantages of transducers over Python's native generator expressions?</comment>


Ask HN: Have you ever changed your DBMS for a site running in production? - <AUTHOR> I've worked for places that write straight SQL & places that use an ORM for all the things. I know one benefit of using an ORM is being able to switch to a different DBMS, but I'm wondering how often that's happened. I've been writing web apps for almost 20 years, and have yet to see it happen.<p>I'm just wondering if anyone has actually done it, and what the reasons were? <comment><USER2> At my old job we had a lovely django app that acted as the base for multiple e-commerce sites. It's database layer was initially MySQL but due do reliability issues, lack of robust admin tools and poor GIS support we made the move to postgres.

The switch in code was trivial as we were making full use of the Django ORM and the migration script we created was simple as they were both Relational DB's. However most of our time was spend testing and creating fail safes as changing a production DB if done wrong can have dire consequences.

</comment><comment><USER3> In 16 years, this has only happened once. I had an application running on 64-bit MySQL. We had a legacy app running on 32-bit Oracle. New CTO came along and made me switch the new app to Oracle since he didn't want to support two DB platforms. Didn't have ORM or Stored Procs (MySQL didn't support SP at the time). The SQL wasn't that complicated, but it took me a week to convert the whole thing. Downgrading to 32-bit DB slowed it down considerably. I left the company once the update went live.

</comment><comment><USER4> I've worked in places that have switched dbs many times.

That said, the original reason I encountered for a db abstraction layer (orm or otherwise) was if you were selling software to be hosted on a clients stack. The more dbs you could support the better.

</comment><comment><USER5> I've personally migrated projects from MySQL to PostgreSQL and I'm currently working with teams that are moving wholesale from MS SQL Server to MySQL.

I tend to abhor full ORMs that require layering deep knowledge of the ORM's idioms on top of my existing knowledge of SQL and the underlying SQL implementation. An ORM doesn't magically free me from understanding the actual implementation and the additional overhead often isn't worth it.</comment>


Coronavirus: Unexplained West Coast cases raise fears in US - <AUTHOR> https://www.bbc.co.uk/news/world-51685908 <comment><USER2> This isn't surprising. American cities have a significant number of undocumented people residing in them and the US government has done a great deal to discourage those people from cooperating with government authority. And since the disease doesn't have any obvious indicators to distinguish it from a flu in the early stages, people will not risk deportation or separation of their family over the possibility that they're bad cough might be COV. Any attempts to track things like disease pathology through people who don't trust the government is going to be difficult.

<comment><AUTHOR> Why should this have anything to do with people without documentation?

People in general just don't seem to be taking this very seriously, and I've seen plenty of people who cough up a storm on the subway, in libraries, and other places where people gather. People in general just aren't very considerate and tend not to self-isolate.

One doesn't have to lack documentation or fear going to the doctor to act that way.

Also, there just hasn't been a lot of testing for COVID-19 done in the US. So even if you did go to the doctor odds are that you wouldn't get tested for this disease.

<comment><USER2> Undocumented people aren't the only ones who won't work with the government, that is true.

They are a demographic heavily inventivized not to in a way other groups aren't.

</comment></comment></comment><comment><USER3> Number of cases reported is partly function of tests performed.

US has tested something like 500 people and CDC can test only 400-500 samples per day, UK has tested over 7000 people already, Italy almost 10k, South Korea tests 10k per day and plans to increase it to 20k per day.

Nonsymptomatic people or people just mild flu symptoms will go on in the US infecting others.

<comment><USER4> "Nonsymptomatic people or people just mild flu symptoms will go on in the US infecting others."

I believe this is part of why it spreads so swiftly. Even when people get the symptoms under control, some of them seem to continue on as symptom-free carriers for a while afterward. Being symptom-free doesn't equal being bug free. I imagine it gives people a false sense of health, with an immediate impact on those around them.</comment></comment>