Ask HN: Node stack for production web app in 2018 - <AUTHOR> Hi folks,
Having played for long with Node on toy projects (mainly web targeted as the question suggests) I have always enjoyed the freedom of composing packages for everything, in a light Flaskish way and it turned out to always be sufficient for my needs.
Today, however, I am considering launching a more ambitious app, and I am feeling doubtful about my koa + sequelize + passport traditionnal backend setup for this use case.
Still, if React and Vue owns all the attention on the web right now, I haven't managed to find out a thread on the usual/accepted Node stack for backend, currently in use on production web app, as the prod and cons associated.
Are Frameworks like Meteor the usual way of going as in other languages like Python or Ruby, is MEAN still a/THE thing for Node considering the drawbacks associated with NoSQL, do you rather externalize services to PAAS like Firebase ?
Having, again, no experience with Node business apps, I would be eagerly curious and thankful for you to share your stack and opinion :)
Thanks ! <comment><USER2> These days you shouldn't use a monolithic architecture IMHO, you should consider creating services or microservices with Node.js to provide API's to a "headless" frontend.

Depending on your "workloads" you can start simple with just API's to support your frontends, and then expand your architecture to include services for other services. You would need to consider whether you need caches (redis) or databases (postgresql, mongodb, etc). All these can be containerised as well.

There are also frameworks such as next.js and nuxt.js which can ease the server side rendering side of things, depending on your choice of frontend view library (React/Vue).

In terms of orchestration and deployment, consider building your services with a Dockerfile.

I've had some success for personal projects using something like Rancher (1.x) for easier orchestration and scaling of containers. But at some stage you might want to learn how to use Kubernetes, since it seems to be the in thing now for container orchestration, scheduling, etc. Rancher allowed me to manage hosts and clusters on multiple cloud providers once I had the Rancher manager node setup.

So it can vary from case to case, depending on what your app actually does, you could still use koa+sequelize + passport for your API's. The above are just my own suggestions.

If you choose to go down the serverless road I would recommend checking out the Serverless framework, which can help you with deving as well as deploying to your cloud provider of choice.

Good luck!

Micro Node.js microservice library: [https://www.npmjs.com/package/micro](https://www.npmjs.com/package/micro)

React SSR framework: [https://nextjs.org/](https://nextjs.org/)

Vue SSR framework: [https://nuxtjs.org/](https://nuxtjs.org/)

Rancher for Docker things: [https://rancher.com/docs/rancher/v1.6/en/](https://rancher.com/docs/rancher/v1.6/en/)

Serverless: [https://serverless.com/](https://serverless.com/)

<comment><AUTHOR> Thanks a lot for the reply ! Indeed, I was lurking on micro services with go, but never considered applying that to node jsesque apis (feels silly now actually). Your approach seems fair and the way to go. Thanks a lot for the links, will definitely check it out, rancher particularly if it can make the eventual switch to kubernetes easier.

</comment></comment><comment><USER3> If you're looking for a full-stack approach, you could check out the Meteor/React/GraphQL framework I've been developing: [http://vulcanjs.org/](http://vulcanjs.org/)

<comment><AUTHOR> Nice, did not know of vulcanjs, will have a look for sure ! Thanks !</comment></comment>


Show HN: Dropanon - <AUTHOR> Written in React Native and available on the App Store. An anonymous, geofenced messaging application.
Medium article: https://medium.com/@pmargaritoff/dropanon-e6429e8ead5b
App Store: https://itunes.apple.com/us/app/dropanon/id1142800386
Dropanon: https://dropanon.com <comment><USER2> This looks interesting - nice work. Nice job with the UI, although I could imagine a map looking pretty cluttered with circles after a bit of use.

What do you do to mitigate location spoofing, if anything?

<comment><AUTHOR> Thanks! The map will actually not display all drops, they are limited to ~50 or so and are meant to just indicate that there is _something_ around.

Nothing in place to actively mitigate location spoofing though you do need to be using the iOS client in order to get something pushed to the Firebase store (you could run it in a simulator I guess and fake locations). You can actually see some test drops I made in the middle of the atlantic here: [https://dropanon.com/map](https://dropanon.com/map)</comment></comment>


Tell HN: Hurricane Irma and impact - <AUTHOR> All, I just thought that other than staying safe which is highest priority for the upcomign Hurricane Irma (for those around Florida), please also double check if you run any servers in that region and be ready for disaster recovery. Double check your backups and process if you haven't. Better to be safe.<p>Most importantly though, get out of the danger if you can and don't try to ride it out. It is going to destroy whatever comes in its path. This is a big one. <comment><USER2> I'm located in the USVI. It hit St John and St Thomas very badly.

Please take it seriously.</comment>


GNU Guix and GuixSD 0.13.0 released - <AUTHOR> https://www.gnu.org/software/guix/news/gnu-guix-and-guixsd-0.13.0-released.html <comment><USER2> I've had good fun learning to program with Guix lately. It's easy to start packaging software and get contributions into a real project, But it's also a large system, with complex internals that I'm gradually learning more about, like G-Expressions[1]. I'm also studing SICP on the side, so it's nice that they use essentially the same language.

I have high hopes for Guix. I conjecture that GuixSD can become the distro- makers goto basis for creating new systems. Other distros have simpler sh-like languages for building packages, which creates a system which is very much a house of cards. Every time I look at debian package definitions for help, I come out with one extra grey hair. I think Guix can build a much taller house of cards than other packaging systems. For example, suppose you want to build a Audio focused distro, and you'd like a PREEMPT_RT patched kernel, I haven't bothered making this myself but it basically just requires `inherit'-ing the linux-libre package definition, and then adding the PREEMPT_RT patch to the list of patches to be applied. Whenever linux-libre is updated, your linux- libre-lts will automatically include those changes too and be updated. Naturally, incompatible updates can happen that break things, but that is unavoidable. Then, you would create in your git repo all the package definitions and customisations needed, and then finally a file containing the system definition that is the actual distro. Other GuixSD users can try out your distro by running sh $(guix system vm my-super-distro.scm --fallback) to boot up a virtual machine running your system. Or guix system reconfigure my- super-distro.scm will install it on the system in a non destructive way than can be rolled back or reconfigured back to the previous system definition. What's else? Scientific Guix? Educational Guix? One can share git repos including .scm file that can easily be launched to show of their riced desktop without borking other peoples systems? I admit I haven't looked at how debian based distros are made, but I imagine it's not so simple to convert one dpkg based distro into another one and then back again without any destructive changes.

[1] [https://www.gnu.org/software/guix/manual/html_node/G_002dExp...](https://www.gnu.org/software/guix/manual/html_node/G_002dExpressions.html)

</comment><comment><USER3> Any experiences with using GuixSD as a main distribution for a standard laptop working environment? I have been using Debian Sid for more than a decade but the idea of having a system fully configured via reproducible pure Scheme functions is tempting for sure...

<comment><USER4> I just installed GuixSD 0.12 last week on a Dell 13 7000. Went mostly smoothly (had to use Grub BIOS instead of UEFI, that's been fixed in 0.13) after I replaced the Intel WiFi card with an Atheros based one.

My needs are simple: emacs, Clojure (with Icedtea), Icecat and StumpWM. Plus all the guile goodness!

Just realized I'm living in a system with four Lisps front and center (guile, Common Lisp, elisp, and Clojure)

<comment><USER5> That sounds pretty awesome. :)

I'm just here with two NixOS machines playing with ML languages.

Have you tried NixOS & do you have an opinion regarding it? Or was it just straight to GuixSD?

</comment></comment></comment><comment><USER6> What is the current position of guix Vs mix? Is one clearly more popular? Is one "winning" or is this more of a Debian Vs redhat, where both can continue to exist?

<comment><AUTHOR> Disclaimer: I have been working on Guix since 2014 and use it in production.

Guix and Nix are both implementations of the functional package management idea. Nix has been around for quite a few more years than Guix.

In Guix package expressions are first-class and the DSL is embedded in Guile, a general purpose language, so packaging has a very different feel to it. It also allows for fun tools like "guix graph".

Guix is used in scientific environments (e.g. where I work); I don't know if there are deployments of Nix in HPC environments. I do think that there are more bioinformatics tools packaged for Guix.

Another difference is in how the two projects approach certain problems, such as bootstrapping from binaries. (Guix just got a new Java bootstrap from C.)

There is no rivalry between these projects and members of both projects cooperate in the reproducible builds efforts.

<comment><USER7> How easy (or even possible) is it to use proprietary libraries such as MKL or CUDA or GPU drivers with Guix/GuixSD?

<comment><USER8> It's all possible to do, but the Guix developers do not provide assistance. From a purely technical perspective, software provided in binary form only impedes one of the main goals of Guix, 100% reproducible builds, because there is no source code.

<comment><USER9> But would they provide resistance? As nice as the idea of a fully-free distro is, I have the impression that free distros have a minuscule userbase compared to their non-free counterparts. For an already niche distro, this sounds like a significant handicap.

If someone came along and offered a hardware-compatibility repo or redistribution, would the Guix community work with them, or would the relationship be more distant, or even adversarial?

I'm personally very interested in the project, and have no desire to poison the pure core of Guix, but I need my hardware to work.

<comment><AUTHOR> We don't want to have discussions about non-free software on the project channels, because they really are off-topic. We won't do anything to _sabotage_ third-party repositories (no matter what they might contain); in fact, we're working on implementing mechanisms to make it _easier_ to load software from third-party channels.

But as a project following the Free System Distribution Guidelines (GNU FSDG) we will not recommend third-party channels providing proprietory software, nor would we want our project's communication channels (mailing list, IRC, etc) to be used to steer users to channels that provide non-free software.

</comment></comment></comment></comment></comment></comment><comment><USER10> Congrats on the release. I use GNU Guix ontop of Fedora to use some extra packages as well as commands like `guix environment` to set up a dev environment to work on projects.

<comment><USER11> How easy/hard is it to manage? Does it conflict with Yum?

<comment><USER8> It is completely isolated from other package managers. So you can use them in harmony, and if you decide that you don't like Guix there's like 2 directories to delete.

<comment><USER12> I assume unless you use software which installs it's cache/other stuff into the user home directory, right? Then you would also need to delete these dirs as well?

<comment><AUTHOR> Software like that exists (e.g. ibus, which creates a database and cache in the home directory), but generally I haven't had any problems with Guix on other distributions.

<comment><USER12> Ah, good to know. Just tried sbt (build tool for scala) with Nix (have no experience with Guix, but like that everything is in the same language) and it indeed creates .ivy and .sbt caches in the home directory. Everything else goes into the store like it should.

</comment></comment></comment></comment></comment></comment><comment><USER13> I don't have any use for Guix, but as language geek it is nice to see Guile being used in production.

</comment><comment><USER14> How does Guix relate to Flatpak?

<comment><AUTHOR> Guix is a functional package manager, Flatpak is not. Flatpak is based on the idea of runtimes (a collection of libraries and toolchains). There is no dependency bundling with Guix and there are no "runtimes" against which binaries are deployed.

Guix provides the tools for bit-reproducible builds, which is why it's used in some HPC environments (including the institute where I work).

<comment><USER14> I read up a little on Guix, but I can't reconcile what I read with what you wrote.

Guix clearly does track and even bundle dependencies.

The part I'm missing is how different packages can rely on different dependencies without stepping on each others' toes. And if a certain package relies on a dependency with known vulnerabilities, do I have to wait for the package to change its dependency, or can I upgrade the dependency as soon as it issues a fix?

<comment><AUTHOR> > Guix clearly does track and even bundle dependencies.

No, it really does not. What part of the documentation made you come to this conclusion?

Each package is installed into its very own prefix. The prefix is derived from the hash of _all_ of the package's inputs. Inputs mean: the package description itself (including configure flags and the like), the package sources, and all packages it depends on, recursively. This means that every package closes over the complete directed acyclic graph of its dependencies.

Change any of the inputs and the output prefix will change, i.e. the package will end up in a different, separate directory.

Packages keep references to other packages. Instead of bundling all dependencies under the package's prefix, packages can reference other packages directly. We use the RUNPATH feature to embed absolute file names of e.g. libraries.

A big part of Guix itself is a collection of package definitions. These definitions are just Scheme values. Taken together, these Scheme values describe a lazy graph of dependencies. Guix instantiates parts of this lazy graph when installing packages.

As I wrote above, any change to a node in the graph affects all other nodes upstream of it. If there's a security fix that needs to be applied to, say, the glibc it will cause a rebuild of all packages that depend on it. (There is an optimisation called grafts, which allows us to deliver security fixes without actually rebuilding the world.) Packages that have been installed already, however, will remain untouched. To benefit from a security fix these packages have to be upgraded.

Guix makes it trivial to find the users of any given package in the store, so it's easy for example to figure out if you have software that uses a vulnerable library.

</comment></comment></comment></comment><comment><USER15> Im gunna give guixsd a go (i run Ubuntu now). I do almost everything in emacs, and I have all my configs/elsip (and plenty of scripts and other stuff) in a big git repo. Setting up a new box is as simple as installing emacs and checking out my repo. I look forward to rolling package installs and init scripts etc into my repo (its init system is scheme based, no systemd).

Funny thing about guixsd, intel wifi chips wont work out of the box. Even if you provide the firmware, the kernel wont load blobs. Im sure you could install a new kernel... But it just feels dishonest. I bought a $10 usb atheros card.</comment>


What percentage of your traffic is from screen readers? - <AUTHOR>

What percentage of your traffic is from screen readers? People talk about the absolute importance of accessibility a lot these days and I'm wondering if adding all this extra markup is worth the time. Most of the sites I work on are so image/media-heavy that I can't imagine anybody using a screen reader would get much use out of them anyway. Thoughts, numbers? <comment><USER2> It depends on what you mean by "image/media-heavy". If you have a website that is basically made of image galleries, you can still make it accessible for blind people by giving descriptions of each picture. The problem is that describing a picture is hard: if you have a picture of a generic tree, you can give it the caption "A tree", but what if you want to give details of your hypothetical tree? To continue the tree metaphor, you shouldn't miss the forest for the trees: a blind visitor may want to know each detail in the tree, but most blind visitors just want to know that the picture has a generic tree so they can move on to find the information they actually need.

With videos, subtitles/captions are useful for deaf users, and useful for blind people when a video has no narration, just a soundtrack.

I say the reason screen readers are given a higher importance than unusual or outdated browsers is a matter of being able to choose. When you use an old browser, you can choose to upgrade. When you have a disability, you can't choose to not have that disability: you're stuck with screen readers until a better way to browse the web with your physical constraints is found.

</comment><comment><USER3> If you make content accessible for screen readers, you are effectively making content more accessible for search engines as well [0].

high accessibility overlaps heavily with effective white hat SEO. The goal of accessibility is to make web content accessible to as many people as possible, including those who experience that content under technical, physical, or other constraints. It may be useful to think of search engines as users with substantial constraints: they can't read text in images, can't interpret JavaScript or applets, and can't "view" many other kinds of multimedia content. These are the types of problems that accessibility is supposed to solve in the first place.

[0] [http://alistapart.com/article/accessibilityseo](http://alistapart.com/article/accessibilityseo)

</comment><comment><USER4> You should make your website accessible not because the number of users with a screen reader is ever going to be higher than some arbitrary number, but because content should be available to everyone, not just the sighted or those with color vision or those who can navigate with a mouse. The precise threshold at which "don't be a dick" comes into play is up to you, but I would not like to be on the wrong side of that line.

/college roommate was legally blind; husband's grandparents met in a high school for the blind</comment>


Herb Sutter confirms no more support for C beyond C90 in Visual C++ - <AUTHOR> http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99

<comment><USER2> Should have been titled" Herb Sutter confirms that Microsoft's compiler group management doesn't get it"

Even the IE team has learned the importance of implementing standards support. Way to go guys; you've only had what, 12 years to get this right?

And one of your "solutions" to _your own_ organizational issues is to "pressure your standards committee representatives to have ISO C++ include more of the C standard (longer-term)."

Awesome! No wonder so many game developers prefer Intel's compilers.

I like the Visual Studio IDE, but this makes life so incredibly difficult for cross-platform developers.

<comment><USER3> They are going to conform to a standard. The C++11 standard. Conforming to the later C standards and the C++11 standard would be incompatible goals.

<comment><USER4> How would supporting both C++ and C standards be incompatible ? Every other major C/C++ compiler can do it (intel, clang, gcc, sun studio, etc…). Implementing most of the C99 features is ridiculously easy compared to C++11 (C-compatible complex numbers, C99 semantics for inline, etc…).

The sheer amount of code that can be compiled on every platform but VS because of this is very significant, especially open source ones. I have a hard time buying the resource reason to be honest.

<comment><USER5> GCC and Sun Studio offer different compilers for C and C++. You _can_ compile C code with Sun Studio's CC, but normally you would use cc for C code.

<comment><USER6> The others, too. llvm, gcc, and icc all support both C and C++. But they also support Fortran using the same technique: A separate compiler front-end for each language.

For VC++ to add support for C as easily as many compiler collections do would require VC++ having a modular architecture like that of the other compiler collections. Considering VC++ only supports one language, that seems doubtful.

<comment> someone-else It already supports C. They're just not updating the version, leaving it stuck in C89 mode.

<comment><USER6> Touche.

Perhaps I should have said "Supporting versions of C past the point where one could plausibly just pipe the C code through a C++ compiler."

<comment><USER7> > Perhaps I should have said "Supporting versions of C past the point where > one could plausibly just pipe the C code through a C++ compiler."

Like supporting for-loop variable declarations, which MSVC's C++ compilation mode (/TP) supports, but MSVC's C compilation mode (/TC) does not?

Oh - and what about declaring a variable anywhere other than the start of a scope? Allowed in C++, not in C. Cute.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I'm seeing a lot of negativity here that I don't understand. The post seemed fairly well-reasoned and reasonable; the objections seem to assume that the content of the objection should be obvious. It's not obvious to me---C++ is not a superset of C, and hasn't been for some time now, although there remains a lot of overlap and cross-pollination. So why _shouldn't_ a C++ compiler decide to just be a C++ compiler?

<comment><USER9> I don't think there's anything wrong with having a dedicated C++ compiler. But it seems fairly crazy to me for Microsoft not to have a C compiler that's even remotely up to date. C is still an important language, and "just compile it as C++" is _not_ a good answer.

<comment><USER6> C is a very important language, but not so much among Visual Studio's target market. Windows developers tend to be rather C++-centric, and I'm guessing the biggest reason why the compiler team hasn't bothered is because there just isn't sufficient demand to justify the diversion of resources.

I'm also guessing a lot of the world's C99 code has dependencies beyond the just the compiler that Visual Studio won't support without some effort. "Just compile it as C++" is not a good answer, but I wouldn't be surprised if "just install Cygwin" often is.

<comment><USER10> There's still a ton of C legacy code running on windows machines out there.

<comment><USER11> You say that like they are removing all C support. Unless that "legacy" code suddenly mutates to use C99 features that aren't in C++, it'll still compile in the future.

<comment><USER10> But will never be updated to include C99 features. Exactly.

<comment><USER11> Exactly what? C99 doesn't have any killer features that legacy code would need to "update" to. If a C89 program is working, adding unique-to-C99 features isn't going to magically make it better.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Wow, they go so far as to recommend gcc if you want "new" features. ~"We won't support those features, if you want them go use a more full featured product". Kind of makes it hard to keep peddling their product in the long term if they plan to lag behind no?

<comment><USER13> Depends. From the article it seems they position their product as a C++ compiler. You don't expect your Haskell compiler to also do OCaml.

<comment><USER14> No, but I do expect my OCaml compiler to also do Caml.

</comment></comment></comment><comment><USER15> Focus means saying no? Still laser focused twelve years after the fact?

Sorry, but it has always been clear that they just didn't want to invest any kind of resources at all. Not even a few days of developer time for shipping a freaking stdint.

</comment><comment><USER16> For me, it'd be fine if MSC (Microsoft's C/C++ compiler) supported a good chunk the following features:

* 'restrict' keyword * C99 inline semantics * snprintf * flexible array members * designated initializers * UTF-8 string literals without using escape sequences * compound literals

Now I understand wanting to "focus" on C++, but some of the above are very easy. For example, you can write snprintf as a three line wrapper around _snprintf, and change the parser to accept restrict (it already accepts __restrict). One would hope that since MSC already accepts wide characters, adding UTF-8 support would be fairly trivial. (Right now, you can only put UTF-8 in string literals either by tricking the compiler into thinking that you're using an encoding OTHER than UTF-8, or by using escape sequences). I would also hope that C99 inline semantics are easy to implement.

If we had those easy things, the bigger items (designated initializers, flexible array members, and compound literals) would seem less.

</comment><comment><USER17> From the Dr Dobb's link:

> The C99 standard is interesting because it was created at a time when a lot > of people on the previous committee went away and did other things. And it > was a smaller group that came over who were interested in a special-purpose > area, and so it ended up having a lot of things that were not of general- > purpose interest.

Sutter's comment seems spot on about the apparent departure of a lot of the original authors. C99 seems to have been designed by a group of people who's overriding motivation was FORTRAN envy.

Really, how many people were screaming for built-in complex types, type- generic math, or variable-length arrays? noalias even made it's way back into the language.

Take the Good Parts of C99: BCPL comments, long long, and <stdint.h>, and you've basically got MSVC's C compiler.

Good Parts of C11? Anonymous structs and unions. Plan 9 FTW.

</comment><comment><USER18> There must be a strategical reason behind this, I can't believe they'd make such a huge mistake.

One possibility is that they're trying to corner the native languages so developers start migrating more and more into managed runtimes. This gives Microsoft more power and control over what the programers are doing on their OS. Removing C++ would be too big a hit, so killing off C is the compromise they found.

The fact that they recommend GCC is intriguing though, I can't quite make sense of that.

<comment><AUTHOR> While I could agree with you, the fact is that all other compiler vendors, that are also os vendors, are able to support both languages.

So why not Microsoft?

Their only excuse is that Windows developers don't care about C99, according to their surveys.

Yet, this is one of the most requested features in Microsoft Connect.

</comment></comment><comment><USER19> I'm unsurprised, but still, goddamnit guys.

As one of the comments in the linked page points out, the problem with more modern C code is that it tends to be covered in GCC gunk. Without Microsoft implementing support, well, that won't get better.

Maybe one day Clang on Windows will be far enough along that Microsoft will let you use it as a VS backend.

<comment><USER20> That would not solve that problem. <http://clang.llvm.org/docs/LanguageExtensions.html>:

 _"Clang aims to support a broad range of GCC extensions."_

<comment><USER19> Well shit. :(

<comment><USER21> There's always

      -ansi -pedantic -std=c99

I actually find some of the GCC extensions quite nice for correctness. I assume #defines that expand to nothing on other compilers still class as "GCC gunk" though. :-)

<comment><USER22> Drop the -ansi flag, which enables C90 mode...

</comment></comment></comment></comment></comment><comment><USER22> Thankfully, MSVC is not the only game in town.

I'm using GCC and Clang right now, but I'm also itching to try out Pelles C, which comes with C11 support...

<comment><USER23> But neither GCC nor Clang support Microsoft's debug symbols as far as I'm aware. If you're writing libraries for Win32, your users are likely using Visual Studio and they're going to get unhelpful stack traces without those debug symbol files.

<comment><USER22> Mixing MinGW and MSVC object files is indeed a problem as neither toolchain understands the other's debugging information.

If you can get away with it, just don't support MSVC. If that's not an option, your best bet is probably restricting yourself to the common subset of C and C++...</comment></comment></comment>


How I Explained REST to My Wife - <AUTHOR> http://tomayko.com/writings/rest-to-my-wife <comment><USER2> The sexism comments bother me. They reveal a level of sensitivity to possible stereotypes that itself indicates the power these stereotypes still have. In a way, the comments are a self fulfilling prophecy. If the wife had been portrayed as being ditsy, that would be worse, though I'm not even sure that's necessarily wrong. In any case, I thought that the woman was portrayed as an inquisitive layperson able to absorb new ideas.

Reminds me of this Richard Feynman story:

A few diehard protesters stayed till the end of Feynman's talk, and complained that they still didn't like that woman-driver story:

        "Why did it have to be a woman driver?" they said.
        "You are implying that all women are bad drivers."

        "But the woman makes the cop look bad," I said.
        "Why aren't you concerned about the cop?"

        "That's what you expect from cops!" one of the
        protesters said. "They're all pigs!"

        "But you should be concerned," I said.
        "I forgot to say in the story that the cop was a woman!"

<comment><USER3> I didn't see any sexism, either, and I'm extremely sensitive to such things.

</comment></comment><comment><USER4> This is pretty old, but is an important piece of the "What/Why REST" discussion we seem to be having here on HN.

<comment><USER5> I agree. My understanding of REST has became a little more clear after reading the article. Glad it was posted here.

<comment><USER6> Seconded. The whole verb/noun discussion played into my Linguistics background nicely. Now I... get it.

</comment></comment></comment><comment> captain-m "She gets me going on purpose just so she can see my arms waving and the vein pop out of my head while I'm trying to describe this stuff. I don't think she really pays all that much attention to what I'm actually saying."

My friends do this to me all the time. I know they don't really care but they keep asking questions until I can't resist explaining stuff to them.

</comment><comment><USER7> Dude, you're a geek and you married a non-techie? I'm sorry :(

</comment><comment><USER8> Does anyone else find it hard to care when CS types start talking about nouns, verbs & grammars?

<comment><USER9> I didn't find it hard to care, nor did I find it hard to downmod your worthless comment.

<comment><USER8> as a fellow nerd, you should have some idea how much I care about your downmod</comment></comment></comment>


Harvard Scientists' Discovery Opens Door to Synthetic Life  - <AUTHOR> http://www.bloomberg.com/apps/news?pid=20601124&sid=aWNwdtOMONZ8&refer=home

<comment><USER2> I can see the advantage to expanding the pool of potential building blocks with which we can make biomolecules. I can see how this would enable novel biomolecules to be made. I can see why you would need custom ribosomes to build these new biomolecules.

I can't see why you need to do this in artificial lifeforms rather than E.coli.

If it is possible to do this in E.coli then the hard task, modifying the ribosomes to support manufacturing these novel biomolecules, is still to come.

</comment><comment><USER3> "It might sound scary initially, but it would _almost_ be on life support," he said. "It would _probably_ be highly dependent on someone feeding it 30 or more small molecules. It _wouldn't be likely_ to escape into the environment and run amok."

"almost," "probably," "wouldn't be likely" -- those words don't exactly inspire confidence.

Amazing breakthrough though.

<comment><USER2> I think he could definitely have picked his phrases a little bit more carefully.

"It might sound scary initially, but it would be on life support, entirely dependent on us for survival" he said. "It would be highly dependent on someone feeding it a variety, probably 30 or more, small molecules. It wouldn't be likely to escape into the environment and even if it did it would be ill equipped to survive."</comment></comment>


Open Source Time-of-Flight DIY Lidar - <AUTHOR> https://github.com/iliasam/OpenTOFLidar <comment><USER2> This is a very neat project, I really wish I could read Russian to understand some of the details in his writeup. The overall architecture is pretty standard for a LIDAR setup.

For the source they are using an osram SPL PL90_3 laser diode which provides 75W peak output at 900nm, with pulse duration roughly 10ns and costs $10.

For the detector they are using a MTAPD-07-013 avalanche photodiode, which has a quantum efficiency of about 80% and an internal avalanche gain of 100 and 0.6ns rise time. Also costs about $10.

For the time measurement they are using a TDC-GP21 time to digital converter with 22ps resolution, although the author has it configured for 90ps counts. Costs a bit over $5.

It is really a testament to the amount of development work that has gone into the lidar and related field, that for under $100 you can build a full lidar system out of parts from digikey including custom pcb's and scan mirror. When I was in grad school we paid $7500 for our avalanche photodiode, $25k for our pulsed laser, and used a $50k oscilloscope to read it out.

<comment><AUTHOR> Here is a link to the video: [https://youtu.be/lTPH_Xa9yCk](https://youtu.be/lTPH_Xa9yCk) with short Lidar description. What kind of details do you want to know?

Why did you write "they are using"? Thre was no team, it's my own project.

<comment><USER3> "They" can be singular.

<comment><USER4> Is it common? I have never seen it in singular context in English grammar textbooks.

<comment><USER5> Actually incorrect in textbook sense, but widely accepted in recent years to avoid specifying gender.

<comment><USER6> Also in less recent years. They has always been used in the singular in cases where gender is not apparent (e.g. with babies)

<comment><USER3> And also where it is:

        There's not a man I meet but doth salute me
        As if I were their well-acquainted friend

\- A Comedy of Errors, Act IV, Scene 3

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> The original article (in Russian) is very well written. And the author feels like a true "full stack" engineer: high frequency and power electronics, optics, mechanical engineering, micro-controller software development, real time, simultaneous localization and mapping, visualization.

<comment><USER8> These are the folks that give me impostor syndrome. Given enough time and a project like this, I _think_ I can learn all of that stuff.

<comment><USER9> The thing is, with Google at your fingertips, you can build almost anything. You don't need to deep dive on all these technologies, but you can probably gather just enough information in a short time.

However it still takes a lot of effort and most of your free time. You have to be extremely driven to complete such a complex project.

<comment><USER10> Free time in large chunks, was the revelation for me.

I took a serious "staycation" back in December, and wrote about it here: [https://www.reddit.com/r/Coronavirus/comments/fgvbsv/staythe...](https://www.reddit.com/r/Coronavirus/comments/fgvbsv/staythefuckhome_a_movement_to_stop_the_covid19/fk8xemy/)

During those few weeks, I made what seems like a year worth of progress on several projects. Being able to dive in and focus, for hours at a time without worrying that I had other stuff I should be doing, made all the difference in the world.

Rearranging your week to have one "no-chores no-email" evening, when you just use a single large block of time to immerse yourself in a leisure activity, is worth a try.

</comment></comment></comment></comment><comment><USER11> Actually I do have a question - how safe is this for eyes (human or animal?) and what changes are needed to make it safer?

How about measuring through translucent or transparent surfaces? Should work as is if there is no reflection (e.g. measurement at Brewster's angle for this wavelength) but is it possible to TOF multiple reflections from? Or multiple depth slices (e.g. by gating TOF to specific depth ranges? 1ns=~1ft=~30cm

<comment><AUTHOR> As it was answered, you could read about safety here: [https://github.com/iliasam/OpenTOFLidar/wiki/Laser- Safety](https://github.com/iliasam/OpenTOFLidar/wiki/Laser-Safety)

Measuring through translucent or transparent surfaces is theoretically possible (TDC is supporting multiple measurements), but received pulse width is too high now - it could be > 30ns after amplifier.

<comment><USER11> Thanks! Really an awesome project and great documentation.

</comment></comment></comment><comment><AUTHOR> I'm surprised that there is absolutely no comments. Does that mean that this project is really not interesting?

<comment><USER11> I think it's very interesting, but I suspect too few people have anything to contribute.

I know I don't have anything smart to say about this specific subject, and I usually try to follow the old german saying "Selig sind die, sie nicht zu sagen haben und trotzdem schweigen" (hope I got it right - I don't actually speak german), which means "Blessed be those, who have nothing to say and nevertheless remain silent..."

<comment><AUTHOR> Discussion about my previous project: [https://news.ycombinator.com/item?id=16756901](https://news.ycombinator.com/item?id=16756901) was much bigger in comparison with this project - this is surprising me.

<comment><USER12> Probably just timing. I find it pretty cool, but I have nothing to say. I'm impressed with the work and would like to do the same myself, but I'm not sure immediately where I'd use this and when I'll have time. I've put it in the section of my brain where I keep things for "when I'll need it, go look this crazy ambitious project".

If I can provide more feedback, while looking at your project, I had the following thoughts:

      - This is super impressive.
      - I'm thankful that people spend time making technology
      opensource.
      - I'm sure this will grow over time and more "complex"
      technology will become open this way.
      - I'm curious in which context the author decided to
      dedicate that much time to this cause (probably in
      academia? or someone with access to a lab and a lot of
      experience in all the fields involved in this project).

<comment><AUTHOR> Thank you for reply!

</comment></comment></comment></comment></comment><comment><USER13> This is fantastic! I want to make one. Is it possible to get a cheap polygonal mirror? Then you can get more scans per revolution.

<comment><AUTHOR> I think that it is possible to make own polygonal mirror (cut polygonal mirror holder at CNC, attach flat mirrors and balance it). Also it may be found in stationary barcode reader. But you will lose field of view with polygonal mirror.</comment></comment>


Why won't anyone hire middle-aged geeks? - <AUTHOR> http://www.itworld.com/career/136164/why-wont-anyone-hire-middle-aged-geeks <comment><USER2> Because middle aged geeks have lives, a mortgage, etc., and have progressed to the point that they can command higher pay.

People hiring would much rather roll the dice on a PFY that doesn't have a clue but has a lot of enthusiasm, and will work for peanuts.

Fundamentally the problem is that salaries are low, because there are very very lax professional standards in IT work compared to other disciplines (engineering, law, medicine, etc.), mainly because training is task focused, not concept focused. (Thus why we end up with legislation driven requirements like SOX and HIPPA, which exists because too many incompetent people were trying to do jobs they were never properly trained for)

<comment><USER3> Personally i'm relying on those falling educational standards we keep hearing about.

I may be >40 but I can actually read and write, something which seems challenging for new graduates.

<comment><USER4> Just wait until "standard" English becomes text speak. When that happens the advantage evaporates. The plus side is that the vowels on our keyboards will get a rest.

</comment></comment></comment><comment><USER5> I had an interesting conversation with a friend about this the other day:

Friend: Dude, check out this guys code, I haven't met him yet, but like him already, identified the problem as NP complete

Friend: (code link)

Me: yeah that looks good

Friend: too bad, I don't like hiring people older than me

Me: too bad that's illegal

Friend: yeah

Friend: I definitely do and have, I just prefer younger people in general, they're less likely to be stuck in their ways or not take direction

Friend: Or think, I know better than this guy

Me: but he might know better than you

Me: well meet the guy first

Friend: he's coming in today

Friend: I am open to that, I like to hire people smarter than me, as long as they know that I make the decisions and sometimes I will not agree

<comment><USER6> I would guess your friend has worked his way up in a large bureaucracy. From his quote: "as long as they know that I make the decisions" he is more concerned with people knowing he is in charge than in reaching the best solution.

<comment><USER7> I wouldn't guess that. My company is four people, and it's my first full time job. When I hired a contractor for a few weeks, who I'd guess is in his mid 30's (I'm 24), he couldn't handle it when I made a decision he didn't agree with. Totally destroyed the relationship.

<comment><USER6> Maybe you could have communicated why you made the decision you did and not had the relationship go south. Or you could have said something like, "You obviously feel strongly about this, I don't have time to discuss it right now but lets make some time before or after work in the next couple of days."

People have different motivations; often they just want to be heard but some times they need to be "right." Sometimes you can make a meaningless concession so that they are "right" and have them full speed on your side again instead of fighting you.

<comment><USER7> I did that, several times, and I wasn't blunt or aggressive (which made one of us) - I'm not totally socially inept. I "lost" more of those arguments than I won. I genuinely think it would have been okay if I weren't fresh out of grad school - the guy in question was often condescending when trying to make a point.

Maybe he's an exception, I don't know, but I definitely think the age difference made things worse.

<comment><USER5> Please don't take offense to this, but if you're fresh out of grad school you probably don't know as much as you think you do. Not to say that automatically makes you wrong, but you should definitely be more prepared to justify your decisions, even to people who work under you.

<comment><USER7> No offense taken. I think I recognize my own limits (Stanford's a good place to learn them), but I also know our customer base better than a contractor, and at the end of the day I'm the one who has to maintain the code. There were certainly situations where I went with what the contractor said rather than what I preferred because he made reasonable points (e.g. "this would add a dependency to the project") or just general software engineering stuff where I deferred to his experience. I also think I was more than fair about discussing and justifying my decisions when I did have to make the one he didn't like, but it didn't seem to mollify him.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> There is a stigma attached to middle-aged job hunters. Why hasn't he found his dream job by now--is he fickle and hard to please? Why isn't he already rich? Why does he need to work for me, the youngish owner/manager, instead of me working for him? Why can't I find any significant contribution to computer science in his background? How many sick days is this old dude going to take? Why doesn't he add /her after every him? How old IS that cell phone he's wearing in a belt holster? Is he sitting there thinking in COBOL while writing PHP for me? Will he infect my codebase with some alien thoughts from 1975? Why hasn't he affected a clipped accent so he can talk more quickly and hiply? Why is his irony hidden whereas ours is not? That's a lot of stigma to wade through on the way to finding out he's probably pretty good.

<comment><USER9> "There is a stigma attached to middle-aged job hunters. Why hasn't he found his dream job by now--is he fickle and hard to please? Why isn't he already rich? "

It's funny you mention this. An unmarried (and has never been married) friend of mine who is in his 40s says he has the same problem with dating. Women wonder: why isn't he married? is he afraid of commitment?

</comment></comment><comment><USER10> Because we have the "benefit" of experience and thus, generally higher salaries.

Many companies treat coders/developers as 100% fungible; any of them can do anything any other can. It's just code, right? So get the cheap one instead of the expensive(r) one. It's the same mindset that thinks offshoring is a slam dunk, based solely on the cost.

<comment><USER11> I'm sure that's definitely a factor, but I think there are a number of other variables in play (perceived or real). I think there's a tendency to think that in a younger developer you might find more passion, optimism (or at least lack of cynicism), open-minded approaches to problem solving, etc. than in an older one. I think also compared to a number of other industries, the premium put on experience isn't always valued very highly. I think it's increasingly easy to look at successes from little companies full of scrappy recent graduates and wonder why you need someone with 10+ years on your team... For the record I've got 11+ or so years of experience and am rapidly approaching 'middle aged' :|

<comment><USER12> An important point to note here is that especially when it comes to programming, a recent grad != zero experience.

Personally I'm not even a graduate yet (1.5 years to go -ish), but I can already cite 5 to 7 years of experience in the industry depending on how stringent you want to be and at least 12 years of general coding experience.

I would wager a lot of those "scrappy young companies chock full of enthusiastic fresh graduates" were in a similar position with people who actually had a lot of experience despite being fresh grads.

<comment><USER11> Oh, totally agree. Didn't mean to suggest that grads have no experience. Plenty of them have loads of great work under their belts by the time they leave school.

</comment></comment></comment></comment><comment><USER13> Startups would be wise to consider 'middle-aged', 'experienced', or 'old man' developers when forming their team. Sure, they may cost more than a couple of college kids, but you are basically getting 4 employees in one:

1) A normal application developer who can code to whatever stack you are using.

2) A system level developer who can push aside whatever application stack you are using when that stack becomes problematic. She can do this because she has been building these applications before the stacks existed.

3) A process consultant.

4) A business consultant.

Numbers three and four are the keys here. I typically turn over 5-6 mid-sized projects a year. Even if the 'old-man' developer you are looking has only worked on large projects chances are they have completed at least half a dozen in their career. This right here is what you are paying for. The ability to pick their brains about what processes and practices were successfully internally and why. What clients were successful and weren't and why. What kind of long term problems you are going to run into based on your short term decisions.

</comment><comment><USER14> Because we are social animals who automatically situate ourselves in hierarchies with those around us, and non-managers with grey in their hair create instant conflicts for many young adults' social-hierarchy construction reactions. We have an animal urge to defer to people who look like our parents, and another animal urge to be deferred to by our subordinates. Ironically, by the time our own hair has some grey in it most of us have gotten pretty good at understanding and resolving these conflicts, but for a 27 year old semi-alpha, the presence of an older person (especially man) in a nominally beta role can instantly raise their blood pressure.

</comment><comment><USER15> So, based on what's being said on this thread, you better move out of programming/IT by the time you're 40, otherwise you're screwed (or on the way to be screwed)?

<comment><USER12> Quite the opposite. All you have to do is be better than the young whippersnappers.

<comment><USER15> What's being said in this thread is that many (most?) companies don't want to pay for that.

<comment><USER12> No, what's being said (imho) is that most companies don't want to pay an automatic experience premium unless you can prove you are worth the premium.

</comment></comment></comment></comment><comment><USER16> Be aware they say middle-aged (usually 40-60 years of age) when the stats actually say that unemployment rose in those 55+ and actually dropped in the 25-54 range. I don't think the facts completely align with the title. I know many folks who are 40+ who will think this was about them when it's about people 15 years older.

<comment><USER17> 25-54 is a huge range. These days, 25-35 or 40 could very well mean no family obligations (and thus greater flexibility wrt pay, location, travel). 35-54 likely means family. The splits there would be interesting to see (not having looked at the article yet).

</comment></comment><comment><USER18> Other than starting your own business so you don't have to worry about someone making biased hiring decisions, and staying on top of skills, how do you mitigate this?

I actually like coding and making things, so I don't necessarily see the executive suite somewhere I want to be when I'm 50.

<comment><USER19> Consulting and freelance, as well there is not as much bias in enterprise software development. As well one that many people do not think about is end of life technologies, COBOL, visual basic and other older technologies can be a bastion for those who want to do them. They pay well due to the lack of interest by the majority of technical personnel and owners of the technology are happy to just get someone who will support something that is not the latest and greatest.

</comment></comment><comment><USER20> Old guys rant about things. And drone on about the old days. And often propose "old-fashioned" solutions. Which confuse and worry young hiring managers.

Yes, I'm an old guy.

<comment><USER20> Admit it, cultural considerations will have their effect. And no culture moves faster than IT.

<comment><USER21> Considering we are rediscovering things like RISC, Lisp and noSQL, I say it moves very fast, but in circles ;-)

<comment><USER22> Don't forget the cyclical centralisation / decentralisation of infrastructures. "Cloud" is the new old Mainframe.

<comment><USER21> Actually, "cloud" is the new VAXCluster.

<comment><USER22> Ha! My Dad was a VAX programmer... it all comes full circle :)

</comment></comment></comment></comment></comment></comment><comment><USER23> As an independent consultant for decades, I've found the opposite to be true. Clients don't care about my age since I'm just passing through. I've never taken a programming course, but a Mathematics education has really helped. It also helps that today's programmers are often semi-literate, so I look positively Shakespearan by comparison.

</comment><comment><USER24> "Middle Aged" Geeks generally have other commitments.

Judging by my dad's experience in the IT industry. He's just too savvy. Younger employees are seen to be easier to manipulate and more like to fall for the tricks that big employers like to use.

Fundamentally. Young geeks are massively cheaper and eager to work for less.

</comment><comment><USER11> Eh. Apologies for snarkiness, but I think reading IT World may be worse for your career than aging.

</comment><comment><USER25> Entrepreneurs. There is a profit opportunity, soon.

If there is no demand for middle-aged geeks, their salaries are going to drop eventually. And, if their productivity is at least as good as young-aged geeks, it means that there is an obvious arbitrage opportunity.

</comment><comment><USER26> The article does not deal with 'how' an employee gets hired. In my experience, HR is an almost airtight barrier against age while direct communication with the individual or team that you might work with is usually fair and quite open. You may fail, but mostly for good reasons; don't fit in with the team, horn locking with the current alpha etc. It is a humorous fact that I learned (at a late age) to refrain from commenting on the 'quality' of hard and software before learning what was favored in the direct interview process. (Never disparage Microsoft until you learn what products are in the dev chain--- or for that matter what database is being used! :) )

</comment><comment><USER27> Its a common dilemma. Generally I find it relates to pay and skills rather than age. In that for a given skill there is a market rate. If you're an engineer and you've been in the industry for long enough you may find that annual adjustments moved your salary above the market price.

If you're middle age, and you've kept up with the latest technologies, and you're adding to your skills basket, generally it seems you're still employed. If you 'retired in grade' at some point and thought you would work until you could collect social security doing the same thing you've always done, well that hasn't worked out in practice.

</comment><comment><USER20> ...or minorities, or women

</comment><comment><USER28> I doubt it's a major component, but at least in Canada, there's a program that subsidizes workers under 30 [1] with degrees for their first year. Cash flow is king, so you'd have a strong bias for a 29 year old over a 39 year old.

[1] <http://www.youth.gc.ca/eng/common/yes.shtml>

</comment><comment><USER29> Damn, 55-years-old is middle-aged now?

</comment><comment><USER30> the really good ones aren't looking for jobs, and the mediocre ones aren't worth the salary they seek.

good ones, we're hiring full stack web engineers in Blue Bell, PA: email@example.com

<comment><USER31> You are inconsiderate and dismissive.

I don't want to work for you.</comment></comment>


Is it possible to quit a startup with a friend and maintain a friendship? - <AUTHOR>

A little over a year ago, I started a company with a friend.  He'd do CEO/sales/biz dev (and has a large network) and I would build the product, leading a small team (elance type stuff) as necessary.  He quit his job and put in about $75k.  I put in sweat and money for incidentals.
I built a quick and shoddy prototype in about a month of evenings and weekends, and we figured it would take about six months to flesh out, QA, beta, and market prior to "launch."
Not all of the money was used wisely.  He opened an office in his home country (Romania) because "I can get developers who will work for $2/hr part time!"  However, the cost of running the office is now about $15k/month.  At this point, I'll need to invest to keep the company going in its current form.
He's moved more into a "product manager" mode, and driven the Romanian team to pivot and add functionality that various VCs, angels, or CIOs told him "would really make this sell."  We're now building four products in a suite and we no longer have a "vision".
We're good friends, and have worked together before in an enterprise environment.  He's still stuck in that mindset, and I never really absorbed that mindset.  My wife has not been very supportive of the endeavor, and even less so now that money is coming into the picture with no product launch in the near term.
A "come to Jesus" meeting is my next step.  If that fails, I'm tired and want to walk away.  I'll have some equity (about 15% of the company vested so far), but that's not really a big concern for me.  I'd be happy to sell them back to him at a reasonable valuation.
Have any of you "thrown away" a year of work with a friend on a startup, and were you able to maintain an amicable relationship thereafter?  If so, any tips? <comment><USER2> First, don't think about it as "throwing away" a year of work. Think about it as a comparatively modest annual tuition fee at the most effective learning institution you will ever have the privilege of attending, a.k.a. the School of Hard Knocks. Which is to say, some of the most valuable education you will ever get... provided you don't repeat the same experience.

As to the friendship, don't worry about it. As long as you act in a fair, principled, and (importantly) clear-headed and non-impulsive manner, a (true) friendship can easily survive an experience like this. They may even thank you (much later) for having seen the harsh light of reality far sooner than they did.

If in fact they're a true friend. If they're not.. it can certainly feel very painful at first, when a supposed friend "de-friends" you, or acts in a destructive manner such that you feel forced to separate yourself from them.

But what it comes down to is that true friends just _won't_ do this to you, or put you through dilemmas like this (not intentionally, or in any vindictive way, at least).

As to those turn out to be not such true friends, you were bound to find this out eventually (albeit perhaps through less cathartic means). Think of it as not a loss, but an opening, a chance to regenerate and find newer and even better friends, and have much better experiences.

Lastly: one thing I learned from having gone through an experience like this is that when going into business with "friends" we tend to let our defenses down, and expose ourselves to far greater financial (or emotional) harm than we do in regular business contexts, wherein even when we end up dealing with people really are basically out to screw us, we at least know how to cut our losses and not let it damage us so much, psychologically. While your "friends" can actually end up damaging you much, much more even though you're supposedly all on the same, happy team.

It's kind of a simple thing, really... but knowing this going into your next "friend"-based opportunity might help make for a much safer (and less soul- wrenching) ride.

</comment><comment><USER3> "At this point, I'll need to invest to keep the company going in its current form."

I don't get that... You aren't the only investor in the world... Why not pitch to these people: various VCs, angels, or CIOs told him "would really make this sell."

<comment><AUTHOR> He has pitched but been unsuccessful. The output from all of them is that we have to change our vision, sometimes dramatically, sometimes slightly. The problem is the vision is now "build something huge" instead of "get something out the door and iterate."

There was some interest, but the current pre-money valuation they've been talking about (~USD5m) is not enough to get anyone other than small angels involved, or we give away too much of the company.

</comment></comment><comment><USER3> if you don't want to invest your money... don't do it. be assertive. 2 pieces of advice on being assertive...

1) if he tries to criticize you for not investing... agree with him. example: "you aren't committed to this company." Don't start criticizing him... just say something like "I guess that's one way to look at it."

2) you have to detach yourself from the outcome. you might not be friends, but as long as you don't criticize him... he won't have any real grounds. no one that is a real friend will be mad at you for doing what you want. you haven't made a commitment to fund the company.

<comment><AUTHOR> Thanks for the advice. My problem is usually being especially assertive, but a simple,"I will be prioritizing other things above participation in the company," definitely sets the right tone.

<comment><USER3> that's exactly right... agree with criticism and reassert what you want...

when i first started my own consulting company, i had read several books about assertiveness and that's the advice. agree with criticism and re-assert what you want. I was trying to collect a bill and the guy that controlled the money ripped into me saying i did a bad job, there had been bugs... I said "I agree, I think we all wish things had gone smoother, but I think the bill is fair and I expect to get paid." He cut me a check shortly afterwards. The guy was hoping for me to start defending my work and get into an argument. I really don't think I would have made it in business without reading that advice and following it. sometimes it's hard to swallow your pride, but when people are trying to manipulate you.. they play on that.

agree with criticism/reassert your position.

</comment></comment></comment><comment><USER4> That's a good question... I can definitely see where your coming from and the position you in. I don't have any great advice except for LOOK OUT FOR NUMBER 1 lol</comment>


Ask HN: Sugesst me some pet projects - <AUTHOR> I am learning a new language (Go) for my work and I liked in the first week I was given to make a chat server to get familiar with it. I enjoyed working on that.
I am looking for similar projects which are not too easy but not too challenging either (like making a text editor). And I also want to work on something I would use rather than just build it and park it.
Looking for some ideas from the community or I want to know what are you working on. <comment><USER2> So you've made a chat server, that's great. I think you could take it farther and still have it be functional for you for casual use. Make a small bookmarking site or a site for tagging elements. What are some things you want to keep track of in your life? Dreams? My friend made his own dream journaling software, that's an idea.

In general, since you've made something 'realtime' and 'bidirectional' (like chat) then you may want to branch into making annotations (like tagging and tag suggestions) for elements {links, notes, sound files, photos you took, whatever}

Mull it over some :)

</comment><comment><USER3> What about a simple game clone, add multiplayer for added complexity. Forget about Performance at first ;)

<comment><USER4> Multiplayer flappy bird would be great imo</comment></comment>


America has a secret weapon called the H-1B (visa) - <AUTHOR> http://www.reddit.com/r/videos/comments/oi4nf/america_has_a_secret_weapon_called_the_h1b/

<comment><AUTHOR> Linking to Reddit page as an already smart discussion is going on. No, it's not my post :)</comment>


Tech vs. Media: We Need a New Model of Truth - <AUTHOR> https://www.mehdiyacoubi.com/post/iterative-model-of-truth <comment><USER2> What about situations where people can agree on ground facts yet differ about their interpretation?

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

[https://en.wikipedia.org/wiki/Rabbit–duck_illusion](https://en.wikipedia.org/wiki/Rabbit–duck_illusion)

[https://mathworld.wolfram.com/YoungGirl- OldWomanIllusion.htm...](https://mathworld.wolfram.com/YoungGirl- OldWomanIllusion.html)

(Maybe even being able to agree on ground facts would be distinct progress over 2020!)</comment>


Show HN: CPLY v0.2: Search and copy lyrics from your terminal - <AUTHOR> https://github.com/asvvvad/cply/ <comment><USER2> Nice. Can you please copy the output in the Usage video to the README as plaintext? I don't want to watch a video to see what it can do exactly. Cheers!</comment>


The Sexiest Pitch Decks from 2017(500 startups) that investors are talking about - <AUTHOR> https://www.konsus.com/blog/35-best-pitch-deck-examples-2017/ <comment><AUTHOR> Would be great to listen to first-hand insights directly from entrepreneurs on what works best with pitch decks?</comment>


Subdownloader: Free tool for automatic download/upload subtitles for videofiles - <AUTHOR> http://code.google.com/p/subdownloader/ <comment><USER2> I would pay happily even $5 per file for a web service that would just translate subtitle files from english to japanese, even poorly. So many films arrive late in Japan, and many classics are simply unavailable on DVD.</comment>


Serial to Network Proxy (ser2net) - <AUTHOR> http://ser2net.sourceforge.net/

<comment><USER2> If you've already got Lua aboard like most of my servers, here's a clever way to do it in 47 lines of lua.

<http://lua-users.org/wiki/SerialCommunication>

(look at the bottom of the page). I spin it up to automatically talk to UPS's.

<comment><AUTHOR> interesting, thanks!</comment></comment>


Amazon Alexa Can Now Detect Smoke Alarms Or Glass Shattering and Notify You - <AUTHOR> https://www.cnet.com/news/alexa-guard-goes-live-lets-your-echo-listen-for-trouble-amazon-home-security <comment><USER2> I was mildly OK with Alexa as it uses keyword watching to only stream phrases to the server which it recognizes (correctly or incorrectly) as commands.

Does putting it in Guard Mode ("Alexa, I'm going away") stream audio constantly, or have they integrated the new detection triggers locally on the device?

Any simple to use services or router mods for monitoring traffic sent to proprietary services like this and catching unusual activity patterns/spikes? (eg. like that encountered by the guy whose Google Home had a hardware bug making it stream all audio 24/7)?</comment>


LinuxKit: A Toolkit for Building Secure, Lean and Portable Linux Subsystems - <AUTHOR> https://blog.docker.com/2017/04/introducing-linuxkit-container-os-toolkit/ <comment><USER2> To filter out some of the buzz words: It's a new minimal Linux distro designed to run containers, with a build system that supports various image outputs (VMDK, ISO, cloud images, etc). The "packages" are Docker images. It's pretty easy to configure and build your own images with… you guessed it… YAML.

Very much in the same ball park as Rancher, CoreOS, Atomic, etc.

(It's essentially a rebrand, rethink, and projectisation of "Moby", the distro that ships with Docker for Mac/Windows. Meanwhile, Moby has become the open source project around Docker or something... like Fedora / Red Hat.)

<comment><USER3> As the name suggests LinuxKit is more of a developer kit than an end-user product like CoreOS Container Linux, Rancher or Atomic.

Importantly updates are not handled by LinuxKit itself[1] but the concept is that that a higher level system or packager might take care of via CloudFormation and an out-of-band re-provisioning method.

It is obviously early days for the LinuxKit project and we will see how it goes. Overall, though I think there is a lot of interest in packaging up system level services inside of containers and I applaud the effort to keep exploring these ideas.

\- CoreOS Container Linux has been continually pushing as many services into docker image containers including etcd, kubelet, etc. [https://coreos.com/blog/introducing-the-kubelet-in- coreos.ht...](https://coreos.com/blog/introducing-the-kubelet-in-coreos.html)

\- Systemd community has been exploring portable services [https://lwn.net/Articles/706025/](https://lwn.net/Articles/706025/)

\- RancherOS runs as much as possible underneath the Docker Engine and packages up services in docker images

\- The Linux Desktop folks at Red Hat have been exploring ideas like [http://flatpak.org/](http://flatpak.org/)

[1] [https://github.com/linuxkit/linuxkit/blob/master/docs/faq.md...](https://github.com/linuxkit/linuxkit/blob/master/docs/faq.md#how- do-updates-work)

<comment><USER4> _Importantly updates are not handled by LinuxKit itself[1] but the concept is that that a higher level system or packager might take care of via CloudFormation and an out-of-band re-provisioning method._

This was an explicit omission, at least for now. We left update out of scope because it's better handled by the infrastructure provisioning system (in our case, infrakit). We'll use infrakit to supply updates (and the dm-verity hash, for that matter). Thus we treat infrastructure provisioning system as the trusted 'bootloader' for a cluster of machines. Most datacenter clusters end up having an infrastructure provisioning system, so it makes more sense for those systems to have the OS update responsibility. This ends up meaning less attack surface on the host itself, and serves as a good separation of concerns and least privilege design.

</comment></comment></comment><comment><USER4> For those interested in security in particular, we've outlined the opinions and design decisions here: [https://github.com/linuxkit/linuxkit/blob/master/docs/securi...](https://github.com/linuxkit/linuxkit/blob/master/docs/security.md)

In short:

 _Kernel Security Incubator_ \- We want to push linux kernel security as much as possible. In service of that, we want linuxkit to be a place where leading- edge linux kernel security patches can land and incubate. Feature examples are Landlock, Wiregurd, okernel, etc. We'll also incubate KSPP and container hardening improvements, like hardening the kernel eBPF JIT and namespacing the IMA subsystem.

 _Modern and Securely Configured Kernels_ \- Latest kernel, following all KSPP recommendations.

 _Minimal Base_ \- No extra dependences, just what's needed to run containerd. Absolutely no package manager.

 _Type Safe, Containerized System Daemons_ \- many linux privescs happen due to escalations using root system daemons. These daemons should be written in typesafe language like OCaml and Rust. We have an Ocaml dchpcd and look to invite more. If you're convinced by [https://tonyarcieri.com/it-s-time-for-a- memory-safety-interv...](https://tonyarcieri.com/it-s-time-for-a-memory- safety- intervention?utm_content=bufferfe480&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer), linuxkit is a place to contribute to the solution.

 _Built With Hardened Toolchains and Containers_ \- uses notary signing for all dependencies and intermediate builds, uses musl libc for hardened libc implementation + hardened compiler options for building system packages.

 _Immutable Infrastructure_ \- Linuxkit follows the principle of immutable infrasructure. The filesystem contains a read-only root FS and boots with dm- verity. Trusted boot via infrakit + notary hash lookup is a next step.

All in all, this multi-pronged approach should lead to a much more secure linux base. As is our tradition, we will track progress here: [https://github.com/linuxkit/linuxkit/blob/master/docs/securi...](https://github.com/linuxkit/linuxkit/blob/master/docs/security- events.md), where we'll catalog Linux CVEs and how LinuxKit holds up.

<comment><USER5> This sounds just like RancherOS with strong security and focus on immutability. Are Linux kit truly and completely immutable? That means it's not good fit for a database host OS?

<comment><USER6> A database should not affect the OS in any way.

To run a database, attach non-ephemeral storage and write data there.

</comment></comment></comment><comment><USER7> tl;dr they made a 35MB busybox initrd for containers.

Basically they wanted to ship containers everywhere in a "lightweight" way, so they threw away the OS. They use multiple justifications for this. Using containers means "you don't need packages anymore". Using immutable servers means "you don't need configuration management anymore". Using an initrd and containers means "you don't need an operating system anymore". Spoiler alert: systemd is gone. Oh, and they use both YAML and JSON for different things.

They say that for security reasons, you can't upgrade the live initrd, you have to boot a brand new initrd. They don't mention how they're going to stop memory-resident attacks, so basically this is just an annoying way to avoid having to provide a way for the user to upgrade their initrd in real time.

 _" It is encouraged to consider the notion of "reverse uptime" when deploying LinuxKit - because LinuxKit is immutable, it should be acceptable and encouraged to frequently redeploy LinuxKit nodes."_

Expect your nodes to go down all the time. Got it.

They talk up kernel security a lot but I don't see anything about live patching (but that's not immutable, so I guess it's bad by default). Oh, and they want to rewrite the initrd daemons in Go and Rust, because dhcp gets owned all the time, and buffer overflows are the only exploits that ever happen, and C is, like, really hard, man. Spoiler alert: expect your system apps to be buggy.

<comment><USER8> I agree this seems overly complicated, however I am for anything that helps get away from systemd.

> Expect your nodes to go down all the time. Got it.

When I deploy containers, our system (marathon on DCOS) does rolling updates where it scheduled new nodes and then gets rid of the old ones in a rolling/rotating fashion. That's how high availability works. If your nodes go down in a controlled fashion for updates, it shouldn't be a problem.

<comment><USER7> HA was never about replacing whole nodes just to make minor changes. Rolling updates, sure, when the system isn't complex enough to do updates in place.

The thing is, initrd's are always read-only anyway. But i'm annoyed that they're trying to justify this by saying it's good for security or more reliable, etc. It's just a legacy of the old design. And they have tools built into it to let it be managed remotely - but refuse to let this configure it live? So it can still be owned, but just not in a persistent state (unless you find persistent storage).

<comment><USER9> Rolling updates of immutable artifacts is, on balance, vastly preferable to updating software in-place with e.g. patches.

<comment><USER7> And is there some evidence-based research or white paper that justifies that claim? Because it sounds like the cargo cult of Google container networks.

</comment></comment></comment></comment></comment><comment><USER10> If I understood this right, it's playing in the same area as RancherOS, Container Linux, Project Atomic, etc, but with a even smaller footprint and more customizable. I like it.

As an end user, I would like to understand what are the incentives to keep this going in the long term (basically a community around it and security updates).

</comment><comment><USER11> If I understand correctly, this is very similar to [https://gokrazy.org/](https://gokrazy.org/), except for a different unit of granularity and scope: gokrazy packages up Go packages into a bootable image for the Raspberry Pi 3, whereas linuxkit uses containers and targets anything that can boot it.

(disclaimer: I wrote gokrazy)

<comment><USER12> out of topic: do you know if gocrazy works well on the Raspberry Zero?

<comment><USER13> The site says Pi 3 only.

<comment><USER11> That's correct. See also [https://www.reddit.com/r/golang/comments/5xgf8u/gokrazy_a_pu...](https://www.reddit.com/r/golang/comments/5xgf8u/gokrazy_a_purego_userland_for_your_raspberry_pi_3/dei7b2m/)

Notably, the Raspberry Pi Zero W has a different CPU (BCM2835, like the original Raspberry Pi) and hence architecture than the Raspberry Pi 3. See [https://www.raspberrypi.org/magpi/pi- zero-w/](https://www.raspberrypi.org/magpi/pi-zero-w/) and [https://en.wikipedia.org/wiki/ARM11](https://en.wikipedia.org/wiki/ARM11)

</comment></comment></comment></comment><comment><USER14> I am not sure if it's apt to compare this to a distro. Isn't this more like the yocto project[0] or buildroot[1]? Can someone familiar with those two projects compare them with this one?

[0][https://www.yoctoproject.org/](https://www.yoctoproject.org/) [1][https://buildroot.org/](https://buildroot.org/)

</comment><comment><USER15> If I am understanding this right, this could be one of the most exciting developments for Linux in a very long time! The closest comparison I can draw is with one of my favourite OS's Genode, except this could be even better!:

[https://genode.org/about/index](https://genode.org/about/index)

</comment><comment><USER16> So will this replace alpine which is for some reason much loved in docker world?

<comment><USER17> It is also loved in the security world, and in the systemd-free world.

<comment><USER8> I switched to Void Linux to get back into the systemd free world. So far I'm pretty happy with it.

</comment></comment></comment><comment><USER18> Just went to try it and was somewhat disappointed that it requires docker installed locally in order to run moby (I do not have it on my Win10 due to HyperV). Is that just for pulling the containers from the docker registry?

<comment><USER19> Yes, the build currently requires Docker. We will remove the requirement for building the container root filesystems soon, by using the libraries for containerd. Some but not all of the output formats also need Docker at present, for example for building filesystem images.

<comment><USER18> Makes sense, thanks!

</comment></comment></comment><comment><USER20> Is there a list of CPU architectures / SoCs supported?

</comment><comment><USER21> Getting tired of this shit.

"Secure", as a word, does not make things secure. "Container", as a word, also does not make things secure.

Sandboxes come in two flavors: Correct by construction, and exploitable. Which flavor is this system?

What makes this better than NixOS? Than Genode? Than Qubes? Where is the actual security writeup? Where's the explanation of the security model for the system? How would I write code which takes advantage of structural security in the system?

Edit: There's a writeup here: [https://github.com/linuxkit/linuxkit/blob/master/docs/securi...](https://github.com/linuxkit/linuxkit/blob/master/docs/security.md) And the Mirage design is here: [https://github.com/linuxkit/linuxkit/blob/master/projects/mi...](https://github.com/linuxkit/linuxkit/blob/master/projects/miragesdk/roadmap.md)

In short, to answer my earlier questions, the sandboxing is undocumented, comparisons to other security-oriented setups are omitted, the limit of structural security is OCaml's type system... This seems like an interesting effort but I am disappointed that it seems more like lip service than an attempt to actually improve on the state of security design.

</comment><comment><USER22> I really thought of this before, we package apps to our customers with a USB because they work on the intranet. I always thought make something easy ISO installable without using Ubuntu Kickstart/Preseed nightmare. It would really solve many hours for us.</comment>


Complete AR Fundamental Course with Vuforia and Unity (COMPLETELY FREE) - <AUTHOR> Hello everyone,
I started this youtube channel one month ago, till now published 8 videos on Augmented Reality with Vuforia and Unity (Also, tutorials on AR Core and AR kit is coming soon). I am trying to make this tutorials different from the typical drag and drop tutorials available on YouTube. I will make 3 complete games in the last three tutorials of this series.
It is going to be the first free and complete AR course which will give you an in depth idea of vuforia and you can easily create your own AR apps and games.
Take a look on the tutorials and I can say you will definitely find some difference. If you like the contents then like share and subscribe to my channel. It will really inspire me to make new video series on more advance topics. <comment><USER2> Hey the link to the youtube channel seems to be missing.</comment>


Leaderless, Blockchain-Based VC Fund Raises $100M and Counting - <AUTHOR> http://fortune.com/2016/05/15/leaderless-blockchain-vc-fund/ <comment><AUTHOR> Tried to get a thread going a week or so ago when this was at $30M (!). Paste of my original comment there:

\---

The DAO is a decentralized "venture" fund based on the Ethereum blockchain. It is meant to invest in projects and collect rewards for investors.

The amount raised 9 days into the fundraiser already makes it the #2 largest crowdfunded project. [https://en.wikipedia.org/wiki/List_of_highest_funded_crowdfu...](https://en.wikipedia.org/wiki/List_of_highest_funded_crowdfu..).

More on DAOs: [https://www.ethereum.org/dao](https://www.ethereum.org/dao)

<comment><AUTHOR> It's at 110M now, and will very likely take the #1 spot for largest crowdfunding within a few hours.

</comment></comment><comment><AUTHOR> WSJ is running a story as well: [http://www.wsj.com/articles/chiefless- company-rakes-in-more-...](http://www.wsj.com/articles/chiefless-company- rakes-in-more-than-100-million-1463399393)</comment>


Finland extends coronavirus emergency measures to mid-May - <AUTHOR> https://yle.fi/uutiset/osasto/news/finland_extends_coronavirus_emergency_measures_to_mid-may/11283446 <comment><AUTHOR> "The government is also planning to close all restaurants and bars until 31 May."</comment>


Epic Games launches Unreal development grants - <AUTHOR> https://www.unrealengine.com/blog/epic-launches-unreal-dev-grants

<comment><USER2> Unreal is really winning a lot of points in my book. First with the engine pricing and now this. If I ever step up my mobile game making to 3D I'd definitely use them over Unity.

<comment><USER3> Nevermind that their offering is superior in terms of long-term product maintenance and potential platform offerings since you get complete source access.

Unity's advantage remains in the asset area with its pipeline and arguably easier to approach editor, but source code access is a huge win for any developer that has the skills needed to maintain a product long-term.

<comment><USER4> Having worked in games for 13 years, at studios large and small and projects of the same variety, source code access has almost never blipped on the radar. The few times when we had issues with various engines for which we didn't have source, our support contracts gave us the changes we needed to ship on time. On occasion we modified the engine, only to be hit by tricky merges with subsequent releases. In general, I've found that modifying an engine should be done by engine programmers (and if a game company does enough engine development to have such specialists, it's probably not licensing any of these options).

The latest Unreal is a wonderful piece of engine software. Their blueprint system as well as their material editor and best-in-class renderer really are something to talk about. They also have a gigantic learning community. And I think their licensing terms are a good approach.

However, Unity has blazing fast compilation time on the order of seconds, a properly built play-in-editor mode, large asset and plugin ecosystem, seamless asset pipeline, and support for a modern programming language in C#. Each of these could arguably be considered a game changer in isolation, but in aggregate they are an efficiency avalanche. Nothing makes a better game, faster, than being able to go from idea to prototype in five minutes rather than two hours. It's possible to try more things, to discard ten or even fifty bad ideas for every good one, and still come out ahead. This is what it all comes down to, in my experience. And when you're done, you can port your game to over a dozen platforms (in some edge cases by simply changing a dropdown value).

That said, I'm happy that both engines are so good, because it means neither will rest on its laurels. Unreal's marketplace and Unity 5's renderer are no accidents.

<comment><USER3> I understand what you're saying, but as someone that has followed various game developers closely, especially those that do porting work, source access is a huge win in many cases.

Imagine your game shipped on a version of Unity that's no longer supported but you want to continue using it for projects or bring back an old game to a new OS platform. Without the source, your only option is to port the game to a new version of Unity. That's not so great.

But again, I'll readily admit that all of this is only a win if you have the right team with the right skillset. There are definitely tradeoffs involved.

<comment><USER5> I think at scale, that's true. But what if you're a small team, or a solo developer? Let's face it: there's no way you'll be able to port Unity or Unreal to a new platform by yourself, so that might as well not even factor into it.

<comment><USER3> I think Ryan Gordon (aka 'icculus') is proof that the right solo person can do such a port :-) Nevermind Casey Muratori or others I could name...

There are many small, talented indie developers that definitely have the right set of skills to bring an engine to a new platform, or to one that's just slightly different.

For example, porting an engine from Linux to FreeBSD or some other UNIX should be trivial, but impossible without source code access.

Now I doubt many games are going to be ported to those platforms, but imagine a 3D walkthrough program for an architectural client or manufacturing facilities where UNIX is still found.

</comment></comment></comment></comment></comment></comment><comment><USER5> Anyone have experience working with UE4 on older iOS devices, such as the iPad 3? Specifically, can you make a game that still runs at 60fps on that device? I'm thinking mostly 2D, but with polygon-based meshes instead of sprites for my graphics.

</comment><comment><USER6> I'm very excited about this. I have been keeping my project under wraps and hope that I can get the prototype ironed out a bit more before I try for this. Just a few thousand dollars to pay for licensing fees of software and maybe a dev machine or two and some marketing.

</comment><comment><USER7> WOW. I wonder how frequently the grants will be awarded.

</comment><comment><USER8> Unity3d is eating it alive starting with legs :).</comment>


Blocking protein curbs memory loss in old mice - <AUTHOR> https://neurosciencenews.com/protein-block-memory-loss-13087/ <comment><USER2> Link to source: [1]

[1] - [https://med.stanford.edu/news/all-news/2019/05/blocking- prot...](https://med.stanford.edu/news/all-news/2019/05/blocking-protein- curbs-memory-loss-in-old-mice.html)</comment>


Chrome: Better battery life for your laptop - <AUTHOR> http://chrome.blogspot.com/2015/06/better-battery-life-for-your-laptop.html

<comment><USER2> I've had plugins (ie: flash) disabled on Chrome for the last couple of years. Chrome still destroys my battery life.

In so far as I can tell, the act of scrolling in Chrome is either deeply CPU or GPU intensive, IIRC because of some optimizations they made for pages with excessively long content.

Using Safari rather than Chrome improves my battery life by anywhere from 2 - 4 hours on average. With no flash ever involved.

</comment><comment><USER3> Yea.... Flash I don't think is the problem with Chrome.</comment>