Show HN: Free and beautiful Vue.js admin template - <AUTHOR> https://github.com/epicmaxco/vuestic-admin <comment><AUTHOR> Hi Open Source lovers!

We've released this redesign of our template, I hope you'll like it :)</comment>


Don't Set the Bar Too Low - <AUTHOR> http://www.businessweek.com/innovate/content/dec2009/id20091211_287802.htm

<comment><USER2> Ives' _Unanswered Question_

<http://www.youtube.com/watch?v=trkFgIMC-Ks>

</comment><comment><USER3> This is BusinessWeek? I'm impressed.

</comment><comment><USER4> Bill Buxton used to have an outstanding hour+ video called _What if Leopold Didn't Have a Piano?_ online. Sadly, it's gone. There is still a short PDF that outlines a few of the same ideas, though:

<http://www.billbuxton.com/leopold.pdf>

</comment><comment><USER5> Charles Ives: the Sonic Youth of the early 20th century.

<comment><USER6> Which would you consider the Sonic Youth of today: Philip Glass or Lady Gaga?</comment></comment>


Biggest Businesses Run by College Dropouts - <AUTHOR> http://www.cnbc.com/id/43974865

<comment><AUTHOR> If you don't feel like clicking a lot:

Taubman Centers ($3.3B), Alfred Taubman

Best Buy ($10.1B), Richard Schultz

Polo Ralph Lauren ($11.9B), Ralph Lauren

Virgin Group ($18B), Richard Branson

Carnival ($19.6B), Micky Arison

Dell ($30B), Michael Dell

Facebook ($100B est.), Mark Zuckerberg

Microsoft ($226B), Paul Allen & Bill Gates

Apple ($362B), Steve Jobs & Steve Wozniak

<comment><USER2> Thanks, I started going through them and then gave up. There should be laws against article layouts like this.

<comment><USER3> Even more than that, there should be laws against contentless articles like this.

Making a list of the 10 largest corporations run by college drop-outs is like making a list of the 10 largest corporations run by men over six feet tall.

<comment><USER4> Sounds like a Cracked "article" to me

</comment></comment></comment></comment><comment><USER5> Which is why everyone should just drop out of college.

That's the point of the article, right? Oh, it's linkbait? Gotcha.

<comment><USER6> Yeah, I always hate to see titles like these. I'm part of the generation that got their start during the dot-com boom of the late nineties. I graduated high school in 1995 and after a year and a half of college, I left for a job offer that I thought was going to land me in a home on the beach. When things are booming, and you have a talent that is in demand, it's easy to make a go at it without a degree. A lot of the promises turn out to be empty though.

Fortunately, I really enjoy being an entrepreneur, which is one of the few careers in which you don't "interview for jobs" all that often. As an entrepreneur, your resume is your ability to create successful outcomes. Starting your career during the dot-com boom-bust is kind of like a free pass. You get to talk about it like it made sense. Most people accept at face value that in 1997, quitting college and working for a dot-com made perfect sense. Almost 15 years later, everyone focuses on the fact that you've been in the industry for 15 years. You end up with plenty of stories to tell that mask the fact that you never got to study subjects like computational complexity and big O notation in college.

Like most, I wouldn't change anything about the path I've taken, because I love where I'm at, but if I were starting today, dropping out of college isn't even something I'd consider. I'm not suggesting anyone should rack up $100k in student debt, but I do think sticking it out is worth the trip.

</comment></comment><comment><USER7> So a handful, now who's gonna do a list with the biggest businesses run by college graduates. I think that would be interesting to see.

<comment><USER8> Or how about the employment rates and mean income of both drop outs and graduates since "running a company" isn't something that is on everyone's todo list. I'm positive that study has been done.

</comment></comment><comment><USER9> Disclaimer: I didn't read the article.

Bet: I bet they didn't mention that most of these people were "too smart" for college (even ivy league ones).

</comment><comment><USER10> I can't speak for these guys, but I can tell you my experience. I dropped out after 1.5 years since my career got started way early. Without a degree you lack security. In every sense of the word. Getting a job means I have to go the extra mile to prove my capabilities. I don't expect that my career will last forever (the supply and demand of programmers is in my advantage right now, but that could change tomorrow). Additionally, and especially here on the east coast people judge you by two things. Your title, and where you got your degree. Not having a degree becomes an extremely sensitive subject, and the source of a great quantity of insecurity. The combination of personal insecurity, and career insecurity leads one to strive.</comment>


Ask HN: How do I make a shell? - <AUTHOR> Does anyone have any links to tutorials or whatever, on how to go about creating a shell from scratch? I'd like to have a hand at creating something like Bash. <comment><USER2> The first thing to recognise is that is shell is not a special kind of program. It's just a normal executable like everything else.

Next, recognise that a shell is a language, so you're basically building a commandline programming language interpreter (like python and ruby offer). The difference compared to a general-purpose language is that a shell language traditionally has super-lightweight syntax for operations related to processes and files.

The first step of building a language interpreter is being able to lex (tokenize) and parse a stream of characters.

<comment><USER3> > The first thing to recognise is that is shell is not a special kind of > program. It's just a normal executable like everything else.

Except it works with several OS interfaces touched by very little other programs (terminal mode, terminal's controlling process, process groups, job control), so one has to learn those _somehow_.

> Next, recognise that a shell is a language, so you're basically building a > commandline programming language interpreter

No, not really. You can have something that just splits line on spaces and executes that as a program and arguments. Calling that a "language" is a quite far stretch.

What misled you is that most (all?) of the _useful_ shells are programming languages at the same time as command editors and code executors (in other words, REPL). You just don't see what I described above, because it's awful to work with.

<comment><USER2> I appreciate the elaboration but don't think you've infact refuted anything I said.

I originally put "user-mode executable" but edited it to "normal executable" to be more understandable.

I don't think it would be a stretch to call space-separated opaque values a language. A very simple one, mind.

My answer was directed at someone dipping their toe in who explicitly mentionined that they wanted to make a bash-esque (i.e. non-trivial language) shell.

</comment></comment></comment><comment><USER4> Having written a number of shells, I can confidentally say that the actual heart of one is the ability to execute a series of commands.

Doing this in a very high level language like Ruby is trivial; it does all the work for you.

Doing this in C, as Bash does, requires learning some systems programming. Under Unix/Linux that means using fork() to create a child process and then having that child call exec() to run some specified command.

If not run "in the background", then the parent process needs to call some variant of wait() to idle until the child is done.

If it is desired to have input and/or output different than the parent, say for redirection of stdin/stdout/stderr, then one has to fiddle with variants of dup() to arrange this.

In some sense, all of the features mentioned in the other comments are optional, and the number of features in a sophisticated shell like Bash is mindboggling, so it would be a good idea to figure out a "minimum viable product" so that you can get your minimal desired feature set working before the end of time.

<comment><USER5> When you say trivial, do you mean (roughly)?:

\- get input from the user

\- pipe it to a subprocess [1] -- ex. subprocess.call("somecmd", shell=True)

\- show output to the user

\- run this all inside a while true loop

Is it "cheating" to do it this way? Should the shell be responsible for parsing a language, generating an underlying representation like an abstract syntax tree, etc?

I'm speaking from the Python perspective but of course this idea is about the same in any very high level language.

[1]: [https://docs.python.org/2/library/subprocess.html#using- the-...](https://docs.python.org/2/library/subprocess.html#using-the- subprocess-module)

<comment><USER4> Yes, that is precisely what I mean by trivial; the things needed are builtin to the Ruby/Python/Perl languages + standard class library, which makes it very easy.

> Is it "cheating" to do it this way? Should the shell be responsible for ...

Depends on your goals. There is no absolute answer.

If you just want to get things done fast, use Ruby. If you want to understand what Bash does, and learn more about systems programming, then do it the long way.

</comment></comment></comment><comment><USER6> One step at a time. Some of the things people expect of a shell:

\- can search $PATH for things to run (traversing $PATH),

\- ?must check 'executable' bit?

\- ?must discriminate scripts from binaries?

\- must exec things to be run

\- must intercept stdin, stdout, and stderr of things being run

\- pass arguments to programs

\- expand wild card characters (for UNIX shells. A in some sense more reasonable alternative is to put wildcard expansion in a separate library and let executables do wildcard expansion. That would prevent problems with expanded command lines becoming too long)

\- allow for back tick substitutions

\- evaluate environment variables when interpreting arguments (again, this _could_ be something left to programs to do. For this, I don't see a benefit, though)

\- allow multiple commands on a line

\- allow redirection from and to files

\- build pipelines and execute them

\- has some builtins (mostly optional, to speed up things)

\- reading and interpreting .shellrc

\- control structures (if, for, etc.)

You can implement them in whatever order you want.

I would probably start like this:

\- a program that starts a single executable.

\- starting an executable and intercepting its output.

\- also sending it input

\- accept the name of the command to run on the command line, search for it, and execute it.

\- allow sending arguments to the program to run

\- loop infinitely, running the executables whose names the user types in (this is where your program becomes shell-like)

You will likely encounter many things I let out above (do you need to interact with the terminal? How to handle Control-C, for example to nicely kill all commands in a pipeline) or do not even know about, but I would tackle them when I met them.

</comment><comment><USER7> Hope this can help [1]. Otherwise, if you just want an API wrapped up with python [2].

[1] [http://brennan.io/2015/01/16/write-a-shell- in-c/](http://brennan.io/2015/01/16/write-a-shell-in-c/)

[2] [http://www.ibm.com/developerworks/aix/library/au- pythocli/](http://www.ibm.com/developerworks/aix/library/au-pythocli/)

</comment><comment><USER8> I actually just saw this post on Wednesday: "Writing a Shell in 25 Lines of Ruby Code"[1].

[1] [http://www.blackbytes.info/2016/07/writing-a-shell-in- ruby/](http://www.blackbytes.info/2016/07/writing-a-shell-in-ruby/)</comment>


HBO's 'Watchmen' Misses the Point of Watchmen - <AUTHOR> https://www.wired.co.uk/article/watchmen-sky-atlantic-hbo <comment><USER2> I just wish they would keep the politics out of it. It's a thinly veiled attempt to shit on the right and compare it to modern times. It's even mentioned in the first episode.

The irony is that I only see the left regularly going after people with extreme violence in an organized group(like Antifa).</comment>


Programming Control Flow Style Survey - <AUTHOR> https://www.surveymonkey.com/s/MSDK23W

<comment><AUTHOR> I created this survey after realizing that I had no quantitative way to validate or invalidate a statement like "Most programmers use multiple points of exit in functions."

Feedback on the question design is welcome. Feel free to repost to other programming communities.</comment>


Amazon was down - <AUTHOR> http://amazon.com Amazon is down 11:49 AM west coast <comment><USER2> AWS seems to be okay via this status dashboard. Nothing on the Amazon twitter feed either [2].

[1] [http://status.aws.amazon.com/](http://status.aws.amazon.com/)

[2] [https://twitter.com/amazon](https://twitter.com/amazon)

UPDATE: Site appears to be responding now, but there is a maintenance message. AWS dashboard also shows the following updates:

       AWS Management Console: 12:14 PM PDT We are currently experiencing
       elevated error rates for the AWS Management Console

       Amazon Elastic Compute Cloud (N. Virginia): 12:11 PM PDT We are
       investigating increased API error rates and latencies for tagging
       related API calls in the US-EAST-1 region.

<comment><USER3> I've been getting _454 Temporary authentication failure_ errors from the SES SMTP gateway, which is in US-EAST-1.

Edit: back up for me; SMTP gateway is authenticating and emails are sending out again.

<comment><USER4> Same here, I don't believe emails are getting sent using SES.

</comment></comment></comment><comment><USER5> Funny how there is a widely reported problem and everything is green on AWS health check site [http://status.aws.amazon.com/](http://status.aws.amazon.com/)

<comment><USER6> Just reported: Amazon Elastic Compute Cloud (N. Virginia) Increased API Error Rates

Update: AWS Management Console: Elevated error rates as of 2:15 CST

<comment><USER5> Console is not the only thing faltering. Our system is not able to send any emails using SES

<comment><USER4> Same here, can't send SES emails via the API (altho SMTP works for us)

</comment></comment></comment></comment><comment><USER7> Sheesh. This makes what, the fourth or fifth time this year so far.. and for an extended period of time to boot. I wonder if this is linked to how they do their deployments, or something else (Everyone has access to deploy to the live site last I heard).

<comment><USER8> Every developer does have the ability to deploy to production and roughly 0.001% of deployments cause an outage, but this is a company where the mean time between deployments on an average weekday is 11.6 seconds. Source: [http://www.youtube.com/watch?v=dxk8b9rSKOo](http://www.youtube.com/watch?v=dxk8b9rSKOo)

</comment></comment><comment><USER9> I've been struggling to light up new ec2 instances via the API:

<?xml version="1.0" encoding="UTF-8"?> <Response><Errors><Error>Unavailable<Message>The service is unavailable. Please try again shortly.</Message></Error></Errors><RequestID>d063a1f7-9fa9-41bb-8792-xxxxxxxxxxxxxx</RequestID></Response>

</comment><comment><USER10> If one looks at the intra-day chart of AMZN, you could see the market adjust the pricing of the stock relative to the revenue lost every second due to site down.

[https://www.google.com/finance?q=amzn&ei=JWwSUuCkE8Lp0QGC5QE...](https://www.google.com/finance?q=amzn&ei=JWwSUuCkE8Lp0QGC5QE;) compare to SPY, the overall market trend.

<comment><USER11> The interesting thing is that amazon doesn't typically lose orders when the site goes down for a short period, it often just causes people to delay their orders a little.

</comment></comment><comment><USER12> Appears to all be back online. \- amazon.com = back \- aws console = can login and work \- SES = queue's have cleared

</comment><comment><USER13> Their indian sites [http://junglee.com](http://junglee.com) and [https://www.amazon.in/](https://www.amazon.in/) looks perfectly fine.

</comment><comment><USER12> AWS console is also down. We can't login and others are reporting the same issue. Our hosted instances and infrastructure however is online and functioning.

</comment><comment><USER14> Everything back to normal now, so far as I can tell.

</comment><comment><USER15> Amazon.com is still down for me, but [http://www.amazon.de](http://www.amazon.de) is running fine.

</comment><comment><USER16> My EC2 instances are still running fortunately.

</comment><comment><AUTHOR> [http://isup.me/amazon.com](http://isup.me/amazon.com)

<comment><USER17> AWS console is up for me -- very fast access.

<comment><USER18> Try logging out and logging back in. The log-in process goes through amazon.com .

<comment><USER19> Or don't...... Assuming he needs AWS :)

</comment></comment></comment></comment><comment> martin-adams Well, AWS console being down is certainly more of an impact to me than amazon.com.

<comment><USER20> The console is working if you are already logged in. Although loggin requires going through www.amazon.com.

</comment></comment><comment><USER21> It's back: 3:33 EST.

</comment><comment><USER22> Now the server is returning a 500, which is a slight bit of progress.

</comment><comment><USER23> I was just able to log in to the console, looks like it's back

<comment><USER24> Back up for me as well. ~45 minutes down?

</comment></comment><comment><USER5> EC2 is ok for me SES has gone to the shitter

</comment><comment><USER25> Amazon and AWS Console are back online :)

</comment><comment><USER16> Amazon site seems to be up now.

</comment><comment><USER26> Amazon.com is back up for me.</comment>


FFTs and Optical Lenses - <AUTHOR> http://scottsievert.github.io/blog/2014/05/27/fourier-transforms-and-optical-lenses/

<comment><USER2> Interesting topic, but one thing should be made clear for people without an engineering/applied mathematics background.

The FFT is not the same as the fourier transform. Most of the time the distinction is irrelevant, but in this case it truly does matter. The transformed signal measured with the lens is the result of a sampled continuous space fourier transform (CSFT). The FFT computed is the discrete space fourier transform. The two are not always equivalent.

I bring this up because the author uses the terms "fourier transform" and "FFT" interchangeably.

<comment><AUTHOR> You are correct; the FFT or DFT is not the same thing as the continuous-time Fourier transform (CFT).

This technical report[1] examining the relation between the DFT and CFT shows in eq. 20 that the DFT is just the CFT evaluated at w=k _2_ pi/(N*T). As N becomes large (number of pixels is large), this approaches the CFT.

I left this detail out; I wanted to put this in terms the reader knew.

[1]:[http://bsp.pdx.edu/Reports/BSP- TR0201.pdf](http://bsp.pdx.edu/Reports/BSP-TR0201.pdf)

<comment><USER3> If you just left out one "F" from "FFT" it would be more precise and less confusing. Is there any reason to bring the Fast Fourier Transform algorithm up at all?

</comment></comment></comment><comment><USER4> I work with optics, there is a lot wrong in this article. I would hold the upvotes until these problems are fixed.

#1. This relationship only holds at focal points

#2. Nothing to do with Fast Fourier Transform

#3. No mention of complex part of FT

#4. No derivation of why this is the case

<comment><USER5> Also, ignores that Fourier optics only holds for the paraxial approximation (i.e. the small angle approximation). I'd put the rule of thumb somewhere around a numerical aperture of 0.3 [0] -- beyond that, polarization effects start to come into play, and beyond 0.5-0.6, it becomes an issue in, for example, microscopy.

[0] [http://en.wikipedia.org/wiki/Numerical_aperture](http://en.wikipedia.org/wiki/Numerical_aperture) \-- Similar to f-number from photography, and describes how big the aperture of the lens is in relation to its focal length. Specifically, it's the sine of the angle from the optical axis to the ray extending from the focal point to the edge of the lens, for a single lens system.

<comment><USER4> >>around a numerical aperture of 0.3

From experience you are being overly conservative. Foremost polarization effects depend on the rigidity of your surface and the bandwidth of your light source. The correction is minimal. Most importantly oil immersion 1.4 NA is common and nobody complains.

>>Also, ignores that Fourier optics

Although there is another good point. After making the born approximation you get this kind of dish shape in the Fourier transform, but on the other hand the dish is compensated on both sides of the lense

<comment><USER5> Ah yeah, to be fair it's not a _huge_ correction, but in what I do (single- mode confocal microscopy) it definitely becomes an issue around NA=0.3 when trying to characterize spot sizes and collection efficiency functions. Namely, the overlap integrals can change significantly if your source is also polarized. Also, I'm probably more sensitive to these things than most since I'm at the single-photon level usually.

</comment></comment></comment></comment><comment><USER6> Wow this brings back some memories! I spent a long time doing research in this area. You can do very cool stuff by realizing that spatial light pattern propagates as Fourier transform with a "spherical" term in the integral (having a perfect convex lens at the focal point cancels this term, hence Fourier transform. Also if laser propagates to sufficient large distance, the term vanishes. A lensless, diffractive projector will always be in focused).

Note that you need a coherent, planar light source like an expanded laser beam.

</comment><comment><USER7> One interesting point is why is the far-field amplitude of light diffracted by the lens a spatial Fourier transform? The best explanation I know of is in Chapter 21 of the Feynman Lectures on Physics (vol 2), accessible online (thanks to CalTech) at [http://www.feynmanlectures.caltech.edu/II_21.html#Ch21-S3](http://www.feynmanlectures.caltech.edu/II_21.html#Ch21-S3)

In short: Moving charges create electromagnetic radiation (light). Since light travels at non-infinite speed, when a wiggle of light reaches us, we're actually seeing the imprint of the motion of the source charges at an earlier point in time. This earlier time is clearly related to how far the observer is from the source. Hence, if the distance is r then at time t we would be seeing the wiggle of the source charge at an earlier time = t - r/c. For a collection of source charges we need to integrate the delayed source potential over the volume of the source, so it's intuitively clear why that would be a Fourier transform.

There's technicalities of far-field and 1/r fall-off, which I've glossed over, you can find full details in Chapter 21. The final line is a gem: 'You will not, then, be surprised to find that the laws of electricity and magnetism are already correct for Einstein's relativity. We will not have to "fix them up," as we had to do for Newton's laws of mechanics.'

</comment><comment><USER8> My favorite example of using a lens for a FT is creating a dark field image. You just put a small beam block in the center of a pupil plane and block all of the low frequency components. You end up with bright lines only at the edges of things which are the high frequency components of the image.

Also "google images" isn't an image source, and just because you found something on the internet doesn't mean it is free to use.

</comment><comment><USER9> There are already several comments here from people who are knowledgeable on the topic, so I might not be fully correct in the following:

I think x-ray crystallography applies similar techniques to try to work backwards from an image of diffracted light to the crystallized molecular structure that would have created the (transform) of light to yield the image. For example, you have some compound, say DNA, and want to know its molecular shape. I think one of the methods that Rosalind Franklin and company used was to take crystallized DNA, shoot x-rays at it, and study the resulting diffraction pattern(s) to determine that DNA had to be a helical structure with atoms bonding at such and such angles. And if that's not clear enough I hope it doesn't escape you to note that it immediately suggests a mechanism for DNA replication hah.

That's hastily written and just tying random facts from undergrad so feel free to correct/add/disprove at will I am sure there are some commenters who know way more in much more detail. I do miss the full time learning days!

<comment><USER10> The took the photos but Francis Crick used LSD to help him imagine what the shadow was they were looking at.

</comment></comment><comment><USER11> Yes, FFT is an algorithm, a computer-optimized implementation of the Fourier transform.

Speaking of optics, the famous slit-experiment, where you can see the diffraction patterns of light passing through one or more slits, is the fraunhoffer-pattern, the 2D fourier transform of the slit: [http://physics.stackexchange.com/questions/94852/why-is- the-...](http://physics.stackexchange.com/questions/94852/why-is-the- fraunhoffer-pattern-the-fourier-transform-of-the-slit)

</comment><comment><USER12> I think the most memorable thing I learned in quantum mechanics is that quantum mechanical scattering is also exactly the fourier transform. Suddenly braggs law became much more sensible.

<comment><USER4> >>is also exactly the fourier transform

No, this is only under the 1st born approximation, in the far-field and without the 'dish' shape intrinsic to propagation. A lot of times this model doesn't work. Also now you are in the momentum space which doesn't map immediately to the x,y,z coordinates you might have started with. Also the evanescent fields that the Ewald sphere didn't include...

<comment><USER12> Hehe, well, thanks for the correction. Yes on all of these things, I'm sure.

I should have said "the exact solution for the most basic justifiable approximation". Honestly, it's been 9 years since I last did quantum seriously, so that was the extent that I remembered.

Deriving Bragg's law in front of my quals committee and refusing to use "mirror planes" despite it being a Materials Science Ph.D. was just viscerally satisfying. It may not have been absolutely correct math, but at least it was way more justifiable than the typical accepted "solution" in my field =)

</comment></comment></comment><comment><USER13> Ben Krasnow also did a good piece on this, showing a system that he built with a 4F correlator. Of course, his piece is full of things that look like things you could build at home if you had infinite resources on hand ... but it really does drive home just how possible it is to build this system, and provides a very intuitive view of how it works.

His piece is: [https://www.youtube.com/watch?v=wcRB3TWIAXE](https://www.youtube.com/watch?v=wcRB3TWIAXE)

</comment><comment><USER14> A very interesting application of this point of view was a proposed projector of Light Blue Optics. The projector would have the property that it was near 100% efficient: it would essentially steer the light to the desired locations (rather than blocking it out where it was not desired).

The idea is outlined briefly here: [http://redfrontdoor.org/blog/?p=409](http://redfrontdoor.org/blog/?p=409)

<comment><USER15> (Mathematician at Light Blue Optics here.)

Unfortunately that near-100%-efficiency wasn't quite realised in practice, for several reasons. I think I can describe some of them without giving away anything commercially sensitive:

1\. The spatial light modulator we used didn't give anything like the 180 degrees of phase rotation outlined there, which means that a large fraction of the light landing on it passed straight through.

2\. Having only two phase states leads, as mentioned in that page, to a conjugate image with as much light in it as the one we actually want.

3\. All that random noise does indeed average out nicely when you have many "subframes". But since there's no such thing as negative light, parts of the image that are meant to be black will inevitably end up something other than black. So there's a loss of contrast, which means that some of the light in the image isn't really doing you much good.

4\. The optical design has a bunch of lenses and mirrors and things in it, and every surface is an opportunity to lose a little bit of light.

The actual optical efficiency figure was, let's say, somewhat less than 100%. (Also, for every frame we displayed we had to compute a lot of Fourier transforms, and the compute hardware takes power too. Which wouldn't matter for large mains-powered projectors, but is more of an issue when you're trying to make a small low-power device for mobile use.)

We had some next-generation technology in the works that would (if brought to completion) have fixed most of these issues and produced better efficiency along with better image quality -- but then we made the (very sensible) decision to get out of the picoprojection market completely.

<comment><USER14> Fascinating, I've wondered a few times over the past year or so why the ideas were shelved.

Each of your points is very illuminating. It's such a nice idea that it's a shame it turned out not to be worth pursuing from a business point of view.

Perhaps some day somebody will take up those next-generation ideas!

</comment></comment></comment><comment> Ono-Sendai We use the FFT to simulate aperture diffraction in our computer-generated images. Example: [http://www.indigorenderer.com/sites/default/files/features_a...](http://www.indigorenderer.com/sites/default/files/features_aperture_diffraction.jpg)</comment>


Homer Simpson 100% in CSS :) - <AUTHOR> http://www.romancortes.com/blog/homer-css/

<comment><USER2> General translation of the post by me

"...I had the idea of making a more complete drawing using the Verdana font and 'absolute positions' in CSS, generating a vector drawing that is directly embedded in the HTML.

I chose Homer Simpson because he is sufficiently popular and recognizable. It is working in the following browsers:

• Internet Explorer 5.5, 6 y 7

• Opera 9

• Firefox 2

• Safari 3

How does it look in other operating systems and browsers?

Note: for it to look right, you must have the Verdana font."

</comment><comment><USER3> Most regular people would say this guy has too much time on his hands. I say (and I'm sure all of you too) that he is AWESOME.

</comment><comment><USER4> That's pretty funky. Turn of author style sheets in your browser and see a lot of O's, parentheses and bullets. Nice.

</comment><comment><AUTHOR> Yep, the replacement for ASCII art...

</comment><comment><USER5> Terrifying. And the source is only marginally larger than the same image in PNG (15k vs. 13k).

</comment><comment><USER6> site down, heres a cache [http://184.108.40.206/search?hl=en&q=cache%3Ahttp%3A%2F%...](http://22.214.171.124/search?hl=en&q=cache%3Ahttp%3A%2F%2Fwww.romancortes.com%2Fblog%2Fhomer- css%2F&btnG=Google+Search&aq=f)</comment>


The Earliest Unix Code: An Anniversary Source Code Release - <AUTHOR> https://computerhistory.org/blog/the-earliest-unix-code-an-anniversary-source-code-release/ <comment><USER3> I've been reading up lately on the earlier OS's that influenced Unix - <USER2> Compatible Time-Sharing System, the Berkeley Time-Sharing System (Project Genie), and Multics. Bitsavers.org and Multicians.org both have a lot of information on that early era (and Bitsavers has a whole lot more).

Lots of the ideas in Unix came from those earlier systems. What Thompson and Ritchie contributed was synthesizing these ideas into a more coherent whole, and demonstrating that they could be made a whole lot smaller. (Both in terms of the PDP-7 and 11/20 being smaller computers than the mainframes previous systems were written for, and in that descriptive command names were reduced to cryptic abbreviations. CTSS's LISTF was shortened to ls, ARCHIV to ar, RUNOFF to roff and then nroff/troff...) And of course Unix ran on the most popular computer of the 1970s and got rewritten in a portable language to let it run on every popular computer since then, while just about every other OS was tied to its specific hardware platform and died off as the hardware did.

All really fascinating stuff.

<comment><USER4> Having used Multics and a farrago of other OSes (not CTSS or the Berkeley timesharing system) as part of my retrocomputing hobby, I think the single biggest thing Unix brought to the day-to-day experience of using an OS was the pipe, and the concomitant transformation of the command line from just being a way to enter program names with command line options (on OSes which even have command line options as we know them, of course) to being a programming language in its own right suitable for rapid prototyping and the creation of glue code.

Glue code isn't glamorous. It isn't something which seems to get a lot of research put into it. It is, however, important to get right, and part of getting it right is foregrounding the right thing: The stuff you're gluing together, as opposed to the glue itself. This is something the "replace shell with a Real Programming Language" projects get wrong, in that the Unix shell defaults to treating unknown barewords as external programs as opposed to syntax errors. This plays Hell with any kind of automated analysis, but it's essential for a language primarily intended to glue those external programs together. Typing isn't just about the type system, after all.

TL;DR: OSes prior to Unix had surprisingly weak scripting facilities, and attempts to "improve" scripting tend to miss the point.

</comment></comment><comment><USER5> People are working on transcribing it: [https://minnie.tuhs.org/pipermail/pdp7-unix/2019-October/000...](https://minnie.tuhs.org/pipermail/pdp7-unix/2019-October/000480.html)

Incidentally, wkt confirmed that's one of the two artifacts[1] which he [teased a while ago[2].

[1] [https://minnie.tuhs.org//pipermail/tuhs/2019-October/019106....](https://minnie.tuhs.org//pipermail/tuhs/2019-October/019106.html)

[2] [https://minnie.tuhs.org//pipermail/tuhs/2019-September/01868...](https://minnie.tuhs.org//pipermail/tuhs/2019-September/018685.html)

</comment><comment><USER6> > PDP-7 assembly listing for "pd"

> Unidentified program.

> Might "pd" stand for "previous directory"?

I know approximately zero PDP-7 assembly, but this looks like it might be "print directory", equivalent to pwd today? It seems to open its parent "dotdot" directory and write it out.

<comment><USER7> It only opens dotdot once at the start, though, and calls creat(dotdot) later.

<comment><USER8> If dotdot can't be opened it fails. So I don't think creat was the same as what we now know.

It looks like the code opens dotdot, and then scans through it for something (match for dir?).

The creat call might mean "open for writing", and possibly the flags mean append. It appears dir is appended to the dotdot directory file.

So maybe, add this "dir" entry to dotdot if it isn't there already?

I can't guess what initializes dir; maybe it somehow comes as an argument from the command line or whatever.

<comment><USER9> dir appears to be copied into from tbuf at some point. It puts dir-1 into memory location 8 at the start, and then the code around the 2: section I'm pretty sure is a memcpy-ish loop like:

        c1 = -8;
        *9 = tbuf - 1;
        do {
            *(++(*8)) = *(++(*9));
        } while(++c1 != 0);
        goto 1b; // b for backwards?

It seems that memory locations 8-15 are auto-indexing[0], so the lac/dac i increments the pointed-at location before use, and isz is "increment and skip next instruction if zero".

[0] PDP7 manual, big PDF: [http://bitsavers.trailing- edge.com/pdf/dec/pdp7/F-75P_PDP7pr...](http://bitsavers.trailing- edge.com/pdf/dec/pdp7/F-75P_PDP7prelimUM_Dec64.pdf)

</comment></comment></comment></comment><comment><USER10> Who owns the copyright? Novell?

<comment><USER11> Nobody! There were no copyright notices, and this is a work made before the US adopted the BERN convention. Prior copyright law required copyright notices.

We learned from the ATT vs Regents case that a judge ruled there was a large likelihood that AT&T couldn't establish it had a valid copyright on V32 because they never marked it properly.

<comment><USER5> > Nobody! There were no copyright notices, and this is a work made before the > US adopted the BERN convention. Prior copyright law required copyright > notices.

...in the U.S.

This does _not_ apply to other countries, especially continental European ones. They'll happily retroactively apply copyright for software, even when it wasn't explicitly protected by means of their jurisdiction claiming that software has is categorized as a work even before the convention. No license, no luck over there.

cf. [https://virtuallyfun.com/wordpress/2018/11/26/why-bsd-os- is-...](https://virtuallyfun.com/wordpress/2018/11/26/why-bsd-os-is-the-best- candidate-for-being-the-only-tested-legally-open-unix/)

If it's not deemed a work for hire (and given UNIX was a rogue operation at the time, that's not entirely unreasonable to question), then the copyright probably remains with Thompson and Ritchie themselves, or rather Thompson and Ritchie's family (or whichever way the inheritance process went). If it is, then probably Micro Focus via Attachmate via Novell via USL. Special considerations may also apply because it wasn't "published" in any sense of the world until past Ritchie's death.

</comment></comment></comment><comment><USER12> 45 pages in before I saw the first comment. whoever wrote section 8, "what may be a simulation or game for billiards or pool", put actual one-line descriptions before each section. Later on he gets real chatty, e.g.

        fsin: 0203 " sine of the fine rotation angle
        mfsin: -0203 " negative of fsin

Seriously, I bet there is a lot to be learned figuring out how he was approximating trigonometry using 12-bit int constants.

<comment><USER13> It looks like there are symbols named "sin" and "cos" not declared in the program. These are possibly system provided tables.

Accesses to "sin" and "cos" are preceded by what looks like a self modifying store ("dac .+3", interpreted to mean "deposit accumulator at current program counter + 3"), possibly to modify the "lac sin" and "lac cos" instructions to index the tables, but I'm not familiar with the instruction encoding.

If so, this is a relatively straight forward, non-magic way of implementing trigonometric functions.

</comment></comment><comment><USER3> >pp. 145−169 >PDP-7 assembly listings for "t1," "t2," "t3," "t4," "t5," "t6," "t7," and "t8"

>Unidentified program.

>Perhaps an interpreter for a programming language? B?

Could be TMG, the language that B was originally written in. See [https://www.bell-labs.com/usr/dmr/www/chist.html](https://www.bell- labs.com/usr/dmr/www/chist.html)

</comment><comment><USER11> SIMH now has a reason to upgrade to support Graphics2: Looks like the spacewar source uses it!

<comment><USER14> I'm doing this.

</comment></comment><comment><USER15> Is this written in assembly? I thought Unix was written in C and you had to only write a C compiler to port it to other platforms. I remember that was the story I was told.

<comment><USER5> UNIX was written in assembly at first. By the Fourth Edition, the kernel was rewritten to be in a version of C (that won't go through a modern C compiler anymore), both 1973. The C compiler itself was introduced in the Third Edition. Parts of userland would still be in assembly even until the 7th Edition (1979), such as roff(1) (nroff/troff were in C), parts of as(1) or chess(6).</comment></comment>


Are You A Founder, CEO, or Entrepreneur? (2009) - <AUTHOR> http://larrycheng.com/2009/11/06/are-you-a-founder-ceo-or-entrepreneur/

<comment><AUTHOR> I'm curious to see what the Hacker news community thinks about this. I'm in the process of designing my business cards and am wondering what title to give myself.</comment>


Silicon Valley's Year of Reckoning - <AUTHOR> https://techcrunch.com/2018/12/24/silicon-valleys-reckoning/ <comment><AUTHOR> One of the money quotes for me (emphasis added):

"The tech industry was collectively upset by its proximity to a government and funding source that blatantly misused its power. Silicon Valley gets most of its money through SoftBank's Vision Fund and by proxy the Saudi kingd... the total invested by the kingdom alone into U.S. startups is far greater than the total raised by any single VC fund.

 _Did we see a single example of a startup that refused to work with SoftBank in the aftermath? No. Will we? Probably not. Because Silicon Valley players are mostly only political and activist when it's convenient for them_ "</comment>


$17 smartwatch sends something to random Chinese IP address - <AUTHOR> http://www.theregister.co.uk/2016/03/02/chinese_backdoor_found_in_ebays_popular_cheap_smart_watch/ <comment><USER3> No different than sending data to a random us-east-1 IP address.

In this case there just aren't any English speakers to show up in the press and spit sophistry about how a stopwatch app needs to exfiltrate your entire contacts book for business reasons and "you clicked OK so fuck you."

<comment><USER4> Don't forget that the Chinese (or any other country) are terrorists.

<comment><USER3> You're right. Even though I aimed my criticism at a market that is unreasonably trusting of locals, I think the reason this is news is fueled by distrust of the Chinese in specific and foreigners in general.

Dunno why you're so downvoted. Is the HN audience too thick to see your point, or was it using language too close to IRL politics?

</comment></comment></comment><comment><USER5> Had a scare in a data centre once when the UPS started trying to connect to an IP hosted somewhere in China. Turned out when it did a DNS lookup for the SNMP server (or something - sorry about hand-waviness) the first response it got back was an IPV6 address (DNS AAAA record). And since the crappy TCP stack on the device had no IPV6 support, it was just interpreting the first four bytes of the AAAA record as an IPV4 address. One of our super smart sysadmins worked out what was going on and tweaked the DNS to return A record first - <USER2> solved.

<comment><USER6> And that should give you great confidence in the quality of the code in that UPS and the likeliness that a random IP packet will crash it...

</comment></comment><comment><USER7> This strikes me as scaremongering: yes, it's possible that this is some soft of malicious behaviour, but the article provides no evidence of that beyond "China." It's far more likely that the cheap Chinese smartwatch manufacturer simply uses servers in China (imagine that!) for collecting diagnostic data or to provide benign functionality.

<comment><USER8> Yes. Like ntp.

</comment></comment><comment><USER9> I'm suspicious that that IP address isn't random at all!

<comment><USER10> Agreed: to me the word _" random"_ makes it seem like the IP address was randomly generated.

Interestingly enough, the author himself uses the word _" random"_ to describe the address, but then implies it is indeed unique: _" it didn't resolve to anything"_.

I believe he really meant "unknown" there, but he is a professional researcher, so what do I know? I guess we will have to wait for the paper he mentioned he was writing on the subject.

<comment><USER11> English use of random to mean "a bit unusual".

[http://www.thefreedictionary.com/random](http://www.thefreedictionary.com/random)

> 3\. informal (of a person) unknown: some random guy waiting for a bus.

It's not great journalism, but this is the register.

<comment><USER12> That usually makes sense when the object in question is fungible -- whether the person waiting for the bus was Joe or John or Jeff makes no difference.

But it's needlessly confusing to use "random" to describe something that's represented numerically unless it's mathematically random. "Arbitrary" or "unknown" is better.

<comment><USER13> Agreed that it's a bit ambiguous, but in modern British English this usage of "random" is _really_ common. I didn't even think about the headline until people started discussing it.

</comment></comment></comment></comment></comment><comment><USER14> From recent KrebsonSecurity article: _This is Why People Fear the Internet of Things_ [1]

Replace "camera" with "watch":

"The details about how P2P feature works which will be helpful for you understand why the camera need communicate with P2P servers," Qu explained. "Our company deploy many servers in some regions of global world." Qu further explained:

1\. When the camera is powered on and connected to the internet, the camera will log in our main P2P server with fastest response and get the IP address of other server with low load and log in it. Then the camera will not connect the main P2P server.

2\. When log in the camera via P2P with Foscam App, the app will also log in our main P2P server with fastest response and get the IP address of the server the camera connect to.

3\. The App will ask the server create an independent tunnel between the app and the camera. The data and video will transfers directly between them and will not pass through the server. If the server fail to create the tunnel, the data and video will be forwarded by the server and all of them are encrypted.

4\. Finally the camera will keep hearbeat connection with our P2P server in order to check the connection status with the servers so that the app can visit the camera directly via the server. Only when the camera power off/on or change another network, it will replicate the steps above."

Nothing inherently malicious about this, unless the vendor is irresponsible with user data, or collects data it should not be collecting in the first place.

[1] [http://krebsonsecurity.com/2016/02/this-is-why-people- fear-t...](http://krebsonsecurity.com/2016/02/this-is-why-people-fear-the- internet-of-things/)

</comment><comment><USER15> Back in the early 2000's, I bought an off brand broadband router on sale that turned out to be sending my DNS requests to a server in China.

<comment><USER16> One of the reasons that I don't trust anything I can't put my own firmware on. Security problems, redirecting traffic (I think there was one that would filter NXDOMAINs to their own search page), playing with DNS, and god knows what else just make me way too paranoid about it if I can't either examine the firmware myself or replace it with something I can (openwrt, tomato, ddwrt, etc.)

<comment><USER17> Surely this doesn't protect you if there is hidden code on the chip?

<comment><USER16> Of course it doesn't. But that's also detectable by watching traffic on both sides of the device (with another device entirely). It's also something that's less likely to happen en-mass in my opinion. Once found it'd completely tank whatever chip manufacturer that was, as nobody would be able to trust anything they made anymore. So I'd consider that to be in the realm of protecting against governmental sized entities instead of the more likely rogue developers/manufacturers that want to sell ads or botnet time.

</comment></comment></comment></comment><comment><USER18> > Raggo said buyers download the pairing app from an IP address scrawled on a > piece of paper that comes with the u8 watch.

Sounds legit. Does that not raise any red flags?

<comment><USER10> In the video, the audience laughs at that line. But maybe many buyers would not.

<comment><USER19> If I have purchased this model (and I can't say I haven't thought about it because this model is super popular in my country as I have stated in my previous comment), even if it costs just $17 (which is not as cheap here as it is in the US), without being aware that this is needed before buying it, I would be a bit more open about installing that thing on my phone since I have already bought it.

Even if it requests a bunch of permissions, I believe that it needs access to your call logs, SMS etc. as its core functionality since it is, after all, a smart watch that wants to display to you your notifications and allow you to react on them.

I would be much more open then if I just stumbled on the app on Google Play that requires the exact same permissions.

</comment></comment></comment><comment><USER20> Beat-up. This is 100% more likely to be just dodgy code than bad intentions: the article states clearly that their idea of a pairing solution for customers opening the product box is downloading an app from an IP address without a domain name. Conclusion: It's just another small hardware operation. If they wanted to do corporate espionage, they'd make it shiny and iPhone compatible.

<comment><USER21> I believe that I own this watch and it didn't ask me to sideload an APK. Rather, the watch displayed a QR code that pointed me to an app the Google Play store. There may be something shady going on but the evidence here is not clear cut.

<comment><USER22> So the question is, how's the watch otherwise? :-)

</comment></comment></comment><comment><USER23> The article is a little weak on the details. The talk is available on youtube: [https://www.youtube.com/watch?v=mHQP8mrAYOQ](https://www.youtube.com/watch?v=mHQP8mrAYOQ)

</comment><comment><USER8> Have they thought it's for syncing the time with NTP? You know, being a watch and all.

</comment><comment><USER19> This thing is _incredibly_ popular in my country. I've started looking at smart watches half a month ago on the most popular online shopping service in my country, and most of the results I got were exactly this one (judging from the screenshot, since most of those selling it don't include no brand info, no model info, no OS info).

<comment><USER24> if you don't mind; which country & what value do people see in them? I'm new to all the smart-this smart-that, but know there are likely useful features.

<comment><USER19> I, personally, have thought about buying this exact same model, because having a thing on my wrist that I can use to quickly see my notifications and respond to them seems appealing to me. Plus, it is fairly cheap, so in my head while I was considering this, I had nothing to lose (notice that I was not aware of it requesting the installation of an app over HTTP etc.).

Resellers here (Bosnia & Herzegovina) are selling it for a slightly higher price (~19.5 USD, which I would accept because it does not require me waiting for the thing to be delivered across the world).

I'm in the same situation as you, never had a smart-thing in my life (unless you count Raspberry Pi and Google Cardboard, which I personally don't). I have never realized the appeal of a smart watch until a colleague of mine just clicked on its iWatch once, said something like "remind me that I have a meeting tonight at 8 PM with XX at YY", and had the event created for him on his iPhone. Seems way more convenient than actually getting my phone out of my pocket, unlocking it, finding the app, and inputing the event details.

</comment></comment></comment><comment><USER25> Random? I think it means the back-door owner owns several IP addresses and the data are just "randomly" sent to those IP.

</comment><comment><USER26> LOL. Sending data to any IP is dangerous!</comment>


Even Limited Nuclear War Could Cause 90M Casualties in a Few Hours - <AUTHOR> https://www.vice.com/en_us/article/bjwv3z/even-limited-nuclear-war-could-cause-90-million-casualties-in-a-few-hours <comment><AUTHOR> Link to the Princeton page where most of the details for the article originated from [https://sgs.princeton.edu/the- lab/plan-a](https://sgs.princeton.edu/the-lab/plan-a)</comment>


Mathigon.org: "The Math Book of the Future" - <AUTHOR> http://www.mathigon.org/ <comment><USER2> The title got me excited ... but it is misleading. The math book of the future will be available under a Creative Commons licence and will be set up so as to be easily translatable into other languages. This is just setting up a future money grab ... which, I understand, may fall squarely within the philosophy of HN and startups. One more resource I will unfortunately not be able to use and incorporate in my teaching (which is done in French).

<comment><USER3> Is there a good list of CC textbooks? So far the only organized move like that is Wikibooks.

It's kind of sad that the Gates foundation will probably never support a movement like that.

<comment><USER4> Khan Academy releases open source teaching material and is funded by Gates foundation. Probably some day they may support textbooks too... Any reason why not?

<comment><USER3> I was just under the impression that Gates wouldn't support open source/cc stuff. The Feynman Silverlight thing made me pretty cynical.

</comment></comment></comment></comment><comment><USER5> The site is visually compelling--I have been unable to locate much mathematics, however. There are a few exceptions within the World of Mathematics. The top three entries under Symmetry and Space and the panel on sequences under Numbers and Patterns contain some content. Nevertheless, the little content available and the classroom activities PDFs display a transcendent level of professionalism, a superior technical mastery of apparently every aspect of digital publication and an infallible mathematical aesthetic sensibility. The placeholders look promising.

What would be most useful to me is know-how: I would like to know how to produce impressive graphics and video presentations at this level.

Oops: typo in the sequences panel.

" _Nowbody_ knows whether 3003 appears more than eight times, or whether there are any other numbers appearing eight or more times. This is known as Singmaster's conjecture, named after the American mathematician David Singmaster (1939)."

Rewrite the last sentence, given the audience. State the corect conjecture in full--don't say 'this', especially when the preceding sentence is a disjunction, no disjunct of which is a conjecture. The conjecture isn't _whether_ 3003 appears eight or more times. If this is intended as "3003 occurs eight or more times" then it is not Signmaster's conjecture. The reader would not know that the conjecture is the existence of a uniform bound on all the occurrences of numbers in Pascal's triangle other than 1. The statement as it stands contains misleading extraneous cognitive load and must be corrected --there is too much to learn. Give the reader good examples to build upon. The reader can supply his or her own conceptual ambiguities while attempting to manage the cognitive load of the subject.

The success of the site will largely depend on how well it manages extraneous, intrinsic and germane cognitive load.

<comment><USER5> I made two typos of my own: 'corect' should be 'correct' and 'Signmaster' (obviously an improvement on the original) should be 'Singmaster'. In general it is difficult to write even one page of correct mathematics, and this is a preview. I don't know how well soliciting content will work, given the copyright.

</comment></comment><comment><USER6> Awesome! It would be really cool to see an overhaul of current research papers to be more suited in digital form. A static PDF with words just doesn't do justice when you can enrich research and content with animations and interactivity. Heres an excellent example: [http://worrydream.com/ScientificCommunicationAsSequentialArt...](http://worrydream.com/ScientificCommunicationAsSequentialArt/)

<comment><USER7> While the graphic format you link to might be ok for novices who are reading a seminal paper on graph theory but supposedly need an illustration to explain "linear" and "all pairs" (really?). As someone familiar with the jargon I find it increadibly frustrating. I image it would take 10x longer at least to create such a document than writing the prose - not a great use of researcher's time.

In particular the lack of a solid left margin makes it hard to read. Really it's not a paper anymore, it's an infographic.

It seems considerably more wise to educate novices in the jargon, than to re- write every research paper in a novice-friendly over-illustrated manner. After all, how many graphs of "linear" do our novices really need to look at?

<comment><USER8> Hyper linking content (with a clean visual pesentation for links and displaying linked content)is the answer to the question of how much introductory/background content to put into a document. Cf wiki, especially the kind that auto-link known terms.

</comment></comment></comment><comment><AUTHOR> Really excited to see this - some higher math here and what looks like the seed of some good concepts.

<comment><USER9> Would you mind to link to any of it. After only seeing 'coming soon' windows, without any content, for a a dozen tries I gave up.

</comment></comment><comment><USER10> Very nice visually, but it doesn't look like it's accessible (#a11y).

And, this makes accessibility even harder, but I'd like to see more interactive simulations and tools rather than passive animations, like at <http://www.socr.ucla.edu/> and <http://phet.colorado.edu/>

</comment><comment><USER11> The front page slider timeout neglects to take into account the loading time of the first slide. So the first slide seems to only appear for a second and then the second slide comes in. I never really thought about that before, but if we make autoscroll timeouts then the first slide should probably have a longer delay.

</comment><comment><USER12> Looks really interesting, the Internet has a huge potential for making maths more entertaining. Cannot wait to see more content (especially dynamic one).

There is a bit of frustration when every time you close an article, you land on the first page instead of the page you were currently viewing (on Firefox 15).

</comment><comment><USER13> Great stuff - I'm suitably impressed and that's no mean feat. I look forward to more content.

There's a lot of exciting and interesting stuff happening at the moment and a lot of it is coming out of Cambridge. So much to absorb - so little time.

Congratulations at treating IE as a first class citizen as well.

</comment><comment><USER14> exciting indeed! the beta version of the web/e-book was impressive content- wise; I'm looking forward to the free apps out this fall to see more interactive iterations. I'm intrigued by the creator/author behind the project; it seems to be just one, a recent Cambridge math grads with some technical chops in web design and graphics. inspiring to see someone build such a rich digital product with such a well-defined and arguably socially important purpose; re-framing maths education as colorful, interactive, and multi-dimensional exploration, rather than just tedious algebraic manipulations and word problems, could broaden the aspirations of many students.

<comment><USER15> The design is gorgeous, I absolutely love it. Can you learn to design sites that beautiful or is innate artistic ability a pre-requisite. If the former can someone point to some good resources/courses.

<comment><USER16> I too would like to know about such resources.

</comment></comment></comment><comment><USER17> Wouldn't it be nicer if you could double-click anything, see how it was done (formulae/code), change them, add on to them and share them. I think that's how this math book could work for a very broad age spectrum.</comment>


Assembly listing of the Sinclair Spectrum ROM - <AUTHOR> http://www.wearmouth.demon.co.uk/zx82.htm

<comment><USER2> There's also a number of disassembled ZX Spectrum games on the Internet, e.g., <http://www.icemark.com/dataformats/hobbit/index.html></comment>


We try so hard to be mediocre - <AUTHOR> http://howtosplitanatom.com/news/we-try-so-hard-to-be-medicore/

<comment><USER2> That was... self-contradictory in many places.</comment>


Ask HN: Want to Join Our Cryptocurrency Startup? - <AUTHOR> The cryptocurrency landscape is rapidly expanding and it's hard to keep up. Information and community sentiment about different coins is fragmented across various forums such a reddit, bitcointalk, and telegraph.
We hope to solve this problem by building a platform that allows users to communicate and share their ideas about their favorite coins. We are currently a team of two developers, trying to find others interested in working on this amazing project!
Our stack is a ReactJS frontend and NodeJS/MongoDB backend. We also use Webpack and Babel. We are focused on keeping best practices, a well maintained codebase and a clean development process.
We are almost ready to release our alpha, and are now looking to expand our team. After we have developed a viable product, we plan to seek investments. Once funded, we will scale our startup by hiring more developers, hiring community managers, and marketing the application.
If you are interested in becoming a co-founder, and working on a very challenging and interesting website, email us your resume at contact at satisoftware dot com. We will respond asap.
We are an international company operating out of both Los Angeles and Switzerland. This is an co-founder/equity position. <comment><USER2> In order to solve the problem of fragmented forums you are building another forum?

<comment><AUTHOR> The problem we wanted to address was, lets say a new coin is released, typically I find myself looking through various threads on bitcointalk or reddit to find information about it. Our site will be something more twitter- like, where each coin will have its own feed that is constantly being updated with other user's ideas and sentiments. It will also allow users to manage their portfolios and see other's users portfolios. We are emphasizing the social aspect, so you can follow others and gain followers. There are many more features, but this is the core of the site. We want to build the go-to source for coin-specific information and crypto-related social interaction, kind of like the Trollbox but much more advanced and involved.

</comment></comment><comment><USER3> link to your site!

<comment><AUTHOR> We are still under development but if you are interested we can give you private access to the site, just email us at contact at satisoftware dot com.</comment></comment>


Anything could happen (on Ev Williams) - <AUTHOR> http://www.inc.com/magazine/20080301/anything-could-happen_pagen_2.html

<comment><USER2> The first paragraph nails it -- Google did less than Yahoo, and wins because of it. Twitter, likewise. Also: See Flip video camera.

Brilliant.

</comment><comment><USER3> I admit, I was surprised Ev didn't keep plugging on Odeo and try to innovate beyond iTunes. Especially when I had the "that's it?!" reaction to Twitter that makes me look like a doofus now. Props to Ev, that goes down as one of the all time brilliant moves.</comment>


The RF Telecommunications System for the New Horizons Mission to Pluto [pdf] - <AUTHOR> http://www.boulder.swri.edu/%7Etcase/NH%20RF%20Telecom%20Sys%20ID1369%20FINAL_Deboy.pdf

<comment><USER2> Interesting that they use rate 1/6 Turbo Codes for communication with the probe, i.e. for any given data block, 1/6 is the data and 5/6 is error- correction information.

This might seem inefficient, but it allows for reliable communication even in cases when the SNR is low, i.e. when the signal is faint compared to the noise, and multiple bits in the packet are inverted.

<comment><AUTHOR> The signal is indeed faint [1]. With their 70m dish in Australia, they are getting a received power of 400 zW [2], or in dBm units -154 dBm. Note that this the power they are getting _after_ the gain from a freaking 70m dish.

[1] [https://www.reddit.com/r/amateurradio/comments/3d93en/the_ra...](https://www.reddit.com/r/amateurradio/comments/3d93en/the_radio_signal_from_the_new_horizons_spacecraft/)

[2] z is for zepto, the SI prefix for 10^-21.</comment></comment>


Pre-roll joint machine – Hottest cannabis accessory to purchase - <AUTHOR> https://steemit.com/pre/@ericdesuza/pre-roll-joint-machine-hottest-cannabis-accessory-to-purchase <comment><AUTHOR> Say goodbye to the traditional cigarette rollers, and meet the latest requisites of modern cannabis practice with raw pre-rolled cones and machines.</comment>


How to use "Web 2.0" in your company (features Inkling, a YC startup) - <AUTHOR> http://www.bnet.com/2403-13241_23-66093.html <comment><USER2> Interesting to see how various people chose to define "Web 2.0".</comment>


Show HN: A Wiki written in 80 lines of JavaScript - <AUTHOR> http://wiki.pageforest.com/#mckoss-3535

<comment><USER3> 80 lines, huh? I guess that's cool.

        #!/usr/bin/ruby -rcgi
        H,B=%w'HomePage w7.cgi?n=%s';c=CGI.new'html4';n,d=c['n']!=''?c['n']:H,c['d'];t=`xx
        cat #{n}`;d!=''&&`echo #{t=CGI.escapeHTML(d)} >#{n}`;c.instance_eval{out{h1{n}+
        a(B%H){H}+pre{t.gsub(/([A-Z]\w+){2}/){a(B%$&){$&}}}+form("get"){textarea('d'){t
        }+hidden('n',n)+submit}}}

[http://www.joe- bowers.com/static/mirror/thisHackWasNotProper...](http://www.joe- bowers.com/static/mirror/thisHackWasNotProperlyPlanned.html#b)

<comment><USER4> IF OP had removed all whitespace and used since letter variables he could have squeezed the javascript down to almost nothing too. Personally, I think it's a bigger achievement to write something that other people can look at and actually understand what is going on.

<comment><USER5> _I think it's a bigger achievement to write something that other people can look at and actually understand what is going on._

Then you probably wouldn't title your article, "in XXX lines of code". But the author of this particular author did, so it's assumed that he considers this to be a big achievement. technomancy merely points out that this is not really an amazing achievement.

</comment></comment></comment><comment><USER6> Hate to nitpick, but blatant linkbait headline. It's not 80 lines of JavaScript. It's 80 lines of javascript + thousands more lines of JavaScript in the form of libraries.

<comment><USER7> _\+ thousands more lines of JavaScript in the form of libraries._

And let's not forget the _millions_ of lines for the browser and the underlying operating system!

<comment><USER6> My point, is that "80 lines of javascript" is technically incorrect.

There's no point to mention how many lines of code it is, unless it's actually true.

</comment></comment></comment><comment><AUTHOR> The point of this share was to show how Pageforest (my project) can be used to create a full web-app with very little code.

Pageforest is still a work in progress, but I'd love to get more feedback on it if you'd like to try building your own apps on the platform.

<comment><USER8> It's a great concept. Question - why not just use CouchDB? We've been doing similar app platform stuff with it for years. Check out this wiki that is hosted directly out of CouchDB, with no other server side component: <http://couchapp.org>

<comment><AUTHOR> I must admit that I'm not very familiar with CouchDB. From what I have read think there are a lot of similarities - and with the same goal of building complete web apps using only client-side JavaScript.

Pageforest has a focus on building a multi-tenant application hub. I think of it as kind of distributed Google Docs infrastructure:

\- Users' data is stored in a unified document store that is owned by the user. They can view and manage all their "documents" created from applications from one place. \- They can use their Pageforest account to grant permissions to each application they want to use to write into their document store.

BTW - Pageforest is currently hosted as a Google AppEngine app - so it picks up the scalability benefits of BigTable with a datacenter managed by Google.

<comment><USER9> I'm surprised to see a suggestion of CouchDB - with the deep integration of BigTable with App Engine, I think it'd be unnecessarily hard to use anything else.

<comment><USER8> PageForest uses App Engine to provide a key value storage API with user authentication. CouchDB has these out-of-the-box, so a CouchDB version should be much less code than this version. Not to mention all the things Couch supports that would be a major challenge to implement within App Engine.

</comment></comment></comment></comment></comment><comment><USER10> You could build a nicer WYSIWYG Wiki interface with one line: contenteditable="on" without any libraries.

Here's my take. WYSIWYG, AJAX, and no libraries in two lines:

        <button onclick="var x=new XMLHttpRequest;x.open('POST','/update',1);x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(frames[0].innerHTML)">Save</button>

On JSBin: <http://jsbin.com/ebiju3> (don't try saving, there's no server part here!)

<comment><USER11> Have you actually tried using ContentEditable in a production system? If so, I think you'd withdraw your comment.

It's hairball.

</comment></comment><comment><AUTHOR> One benefit of having this based on AppEngine is that Google auto-scales the servers. While I normally have just one server active, Google has stood up 7 front-ends now to handle the Hacker News traffic.

[http://www.aviary.com/viewfull?fguid=b6286c3c-228d-11e0-81ea...](http://www.aviary.com/viewfull?fguid=b6286c3c-228d-11e0-81ea-1231390ec091)

</comment><comment><USER12> I love the idea of developing in the cloud with only js and a db api. The option to "view page source" makes each js app kind of "open" and more trustable. Thanks for sharing pageforest.

<comment><AUTHOR> Thanks! I really like this model too.

</comment></comment><comment><USER13> How is this a wiki? Does it only have the one page?

<comment><AUTHOR> Good catch - the app is one page for now ... but you can embed links from one wiki page to another.

I'm planning to extend this app (no longer just 80 lines), so it supports multiple pages PER WIKI. This will use the "Blob" storage feature of Pageforest. Each document has a top level JSON object intrinsic to it - <USER2> can have any number of child Blobs stored beneath it.

I'll also have to extend Showdown to enable auto-linking via CamelCase references.

</comment></comment><comment><USER5> Not a fan of s that I'm supposed to click. If it's a link, make it an , please.

<comment><USER14> Assuming you are actually referring to buttons or JavaScript triggers instead of honest hypertext references, it doesn't matter a lick what element you're using, as long as CSS styles apply `cursor: pointer;` to it (and possibly consider ensuring it has a tab index). I don't see why you need to make needless criticisms.

<comment><USER5> Because random spans don't get hinted, and to click the link, I have to actually reach for my mouse. a and form elements are clickable. Everything else is just plain text.

In this case, the "edit" link looks exactly like a link (inline element with underlining and a different color when you hover over it), but it's a span instead. Why invent your own tags when they already exist? All you do is break things for people that aren't you. Follow the standards and everything will work for everyone. Make up your own, and you can only ensure that what you test works.

</comment></comment></comment><comment><USER15> Looks like building a wiki is becoming the modern "hello world!"

<comment><USER16> Well, I sincerely hope no "hello world!" ever needs to pull libraries.

<comment><USER17>
      #include <stdio.h>

<comment><USER18> In fairness, that's just including the function prototypes. You don't need to explicitly link in libc most of the time.

<comment><USER5> But it's being implicitly linked in, so what's your point?

<comment><USER18> The point is that it's already included unless you specifically exclude it. If we take "pull" as a volitional action rather than a passive allowance, then we don't need to "pull" any libraries.

I'm really just playing devil's advocate here (which is why I prefaced it with "To be fair…"). From the considerable amount of hate (rather than calm dismissal) the comment seemed to be getting, I felt that people weren't bothering to think it through. joshwa's response seemed to indicate that "#include <stdio.h>" was pulling in a library, which is at least as wrong.</comment></comment></comment></comment></comment></comment>


The picture that makes you feel as if you're on Mars - <AUTHOR> http://www.dailymail.co.uk/sciencetech/article-2301619/Amazing-FOUR-BILLION-PIXEL-interactive-panorama-gives-360-degree-view-Mars-standing-Curiosity-rover.html

<comment><USER2> Not only does it provide impressive Martian panoramas, this is also a good way to get a close-up look at the Rover itself. I didn't know, for example, that it has its own sundial: [http://www.washington.edu/news/2012/08/29/from-uw-to- mars-su...](http://www.washington.edu/news/2012/08/29/from-uw-to-mars-sundial- has-an-important-role/)</comment>


#talkpay - <AUTHOR> https://mobile.twitter.com/hashtag/talkpay

<comment><USER2> > _My salary went from $32,000 to $1XX,000 (sorry will not disclosing exact > number) but technology is the key._

more like #talkpaypartially</comment>


Introducing Cloud Functions for Firebase - <AUTHOR> https://firebase.googleblog.com/2017/03/introducing-cloud-functions-for-firebase.html <comment><USER3> This looks like a worthy competitor to AWS Lambda, but I'm disappointed by the unalterable limit of 400 concurrent invocations of a function. (The "Quotas" page says "Max concurrent functions" is 400, with "Can be increased" as "No." [https://cloud.google.com/functions/quotas](https://cloud.google.com/functions/quotas))

One of the cool things about AWS Lambda is that you can use it as a short-term supercomputer with thousands of threads. We (Stanford/UCSD ExCamera) are using AWS Lambda to do massively parallel low-latency video encoding with 4,000+ concurrent threads. Our colleagues at U.C. Berkeley who built PyWren are doing machine learning on Lambda with similar numbers of threads. AWS has been encouraging to us for these kind of workloads, even if they aren't what Amazon initially envisioned.

So a hard limit of 400 (that can't be increased) would be a real bummer. I wonder if we can get around this by defining 20 identical functions and then invoking each one 400 times in parallel...

<comment><USER4> Another disappointing limitation is being restricted to Node.js. AWS Lambda lets you write your code in Node.js, Python, Java, or C#. This is particularly useful for tuning your Lambdas based on their expected usage. If you have a Lambda that is being constantly invoked, it might be better to write it in Java. It has a longer start up time but has better performance after the initial startup. However, if your Lambda is invoked infrequently (and thus is frequently shutdown from inactivity), it would better to write it in Node.js or Python to take advantage of the snappier start up time.

<comment><USER5> Firebase engineer here.

Additional languages will come, but we're starting with Node.js. We'd rather take the approach of doing one language really well than a bunch of languages with a poor developer experience.

<comment><USER6> How does Cloud Functions for Firebase handle node modules with native code add-ons?

<comment><USER7> Image magick's binaries are already installed on the image. Any native binary node module that has a preinstall script should work too. If you hit an unsupported syscall error, contact firebase support at firebase.google.com/contact/troubleshooting and we'll triage.

<comment><USER8> 404\. That's an error.

The requested URL was not found on this server. That's all we know.

<comment><USER9> [https://firebase.google.com/support/contact/troubleshooting/](https://firebase.google.com/support/contact/troubleshooting/)

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> (Cloud Functions for Firebase PM here)

We've been developing this product for years, and we've had it in private alpha testing for well over a year, so we're incredibly excited to finally take the wrappings off and let all of you try it.

Firebase has always focused on empowering you all to build extraordinary experiences for your users, without needing to worry about building common infrastructure. While we've made big strides towards this vision in the past, we always had one big hole: trusted code execution. Today, we're completing the story with Cloud Functions for Firebase so that you can easily run server- side code in response to events from your Firebase app.

We think you're going to love it, and we can't wait to see what you build with it!

<comment><USER11> From an onboarding and testing perspective, it would be nice to be able to integrate other services ("Outbound networking"?) in the free tier. Maybe limit to one connection?

<comment><USER7> There's a bit of a nuance here. Even if you join the Blaze plan (pay as you go) there's still a large free quota. The quota is actually much larger than you get with Spark as well. We just can't allow arbitrary REST calls without a credit card. This helps avoid Cloud Functions being used for abuse/malware.

</comment></comment></comment><comment><AUTHOR> Thanks to the mods for un-duping this and linking to the blog post, which went live like 7 minutes after I hit submit, haha.

Anyways, this was the last piece of the Firebase puzzle for me. Between this, Authentication, Analytics, the DB (obviously) and Storage, Firebase has been indispensable in getting my side project app up and running -- and most importantly, feeling "real."

My only request at this point would be a bit more TLC given to how Firebase integrates with React Native. I'm sure it's coming as it's likely a "still- small-but-growing" subset of use cases. As an example, there's not an obvious way to say, get Twitter auth working in a React Native app (last I checked a few weeks ago.) There are workarounds, of course.

PS- The Firebase console and docs are some of the most slick and well-designed examples of what they do I've seen. I really enjoy the web console and the CLI tool. Just a real joy to use, and I'm not being sarcastic. :)

<comment><USER12> +1 For React native support! In fact emailed tech support about just yesterday. Got a really quick response in which they essentially said -- "....We're exploring potential solutions, but I can't share any details or timelines at this time."

I'm optimistic. :)

<comment><AUTHOR> That's awesome! I might do the same thing in a bit. It's neat we can use the Web SDK with RN (in a limited capacity), but an official (or even semi- official) library would be the best.

</comment></comment></comment><comment><USER13> This was a long time coming, so congrats first.

I also recently read this from an experienced Firebase developer: [https://medium.freecodecamp.com/firebase-the-great-the- meh-a...](https://medium.freecodecamp.com/firebase-the-great-the-meh-and-the- ugly-a07252fbcf15#.7duy5djwl)

Interestingly, he lists several things that he things Firebase needs in order to be awesome, and server-functions is last on the list:

> 1\. Real querying capabilities. Search, joins, the whole enchilada.

> 2\. Some sort of references likes MongoDB or RethinkDB.

> 3\. Real offline persistence with Javascript.

> 4\. Give me moar analytics.

> 5\. A cache API.

> 6\. Some way of adding server side code without needing to resort to a VPS.

<comment><USER14> The extremely poor JOIN functionality is what turned me away from Firebase a couple of years ago.

I come from 25+ years of SQL, and Firebase was my choice for essentially my first 'real world' NoSQL project. I was enjoying it right up to the bit where I had to extract data from 2, and 3 data tables at the same time in a single query. Couldn't believe how verbose and painful it was and it made me drop NoSQL for a while before more recently going back to it (with RethinkDB).

<comment><USER15> A lot of the join functionality can now be simulated by using functions to effectively create views or map reduce data to distilled output. We've got a lot more to come on this front. Functions was just first on the list.

<comment><USER16> Do you think there will ever be some kind of materialized views / declarative data denormalization?

</comment></comment></comment></comment><comment><USER17> As a 2+ year user of Firebase, this is long overdue. I built my own cloud function infrastructure using their Java SDK and Digital Ocean and I couldn't have built my app (ProBooks.com) without it. It's good to see Cloud Functions moving from Alpha to Beta!

<comment><USER18> Just out of curiosity, what kind of functionality were you only able to build this way?

<comment><USER17> One feature of my app is the PDF creation of invoices and estimates. I use a Java library to make these PDFs. Developing an iOS, web, and Android app that syncs in real-time is much easier (or even possible) when your PDFs are made on the backend.

</comment></comment></comment><comment><USER19> Like many of you, I'm incredibly happy about how this:

> This has been the most requested feature since Firebase launched

is finally in place. Firebase is a great option for quickly getting something together, and now that you can extend it with little compute, this really is a massive expansion of what you can achieve.

Disclosure: I work on Google Cloud (and sit near the Firebase folks!).

</comment><comment><USER20> Quite exciting. I just recently used Firebase for the first time in years and I was absolutely amazed at the level of productivity. The best part is how seamless and brain-dead everything is compared to AWS. Also the client side JS library for database storage makes handling application state a dream. Auth and static hosting require almost no configuration, and the only thing I couldn't use firebase for was server side compute based tasks.

This is the final missing piece will allow me to develop an entire app on the google cloud with no more server admin. Can't wait.

</comment><comment><USER11> Oh man. This is great. Firebase is now a one-stop shop for the majority of app infrastructure needs, and really is the closest thing to a "serverless" infrastructure. Vendor lock-in aside, I can't think of a reason not to use it, at the MVP level at least.

<comment><USER13> Firebase offers a lot, but it's no longer the only game in town that offers a sorta-serverless baas. Here are some compelling alternatives (I'd love to see a complete list of the best Firebase alternatives):

\- [https://www.syncano.io](https://www.syncano.io)

\- [https://www.graph.cool](https://www.graph.cool)

\- [https://www.backand.com](https://www.backand.com)

I'm omitting things like feathers.js b/c the most attractive feature of Firebase-like tools is not having to manage your own server/database.

<comment><USER21> We are moving from Firebase to Feathers js + PostgreSQL running on Heroku. Zero server/database configuration or managing needed.

Being able to have data relationships and real querying is a big plus over Firebase.

</comment></comment></comment><comment><USER22> This is a major coup against AWS. I might actually use Firebase now. If they keep this up, they can put pressure on AWS.

</comment><comment><USER23> I don't really understand how to use this to build a real backend. Everything seem to be revolving around reactions (new thing happening in the DB, file uploaded etc) but isn't the more common use case that you actually want to call the function directly?

I'm building a simple React Native/Expo app where I want users to join random chat rooms so I obviously need some logic to delegate this process. Is Firebase/Cloud Functions something I can consider?

My first thought was "oh, maybe I can let my app call the function directly to add the user to a random chat room" but I don't see how that is possible.

<comment><USER5> You can definitely do this! There are two ways that readily come to mind:

1\. Use the Realtime Database as a communication channel to trigger a Cloud Function that then sets up the thing you need.

2\. Create an HTTPS function and call it directly from your app, then do the work you need.

<comment><USER7> When it hits YouTube, check out our talk "Cloud Functions and Firebase". We have a much more complex chat room example than has been possible in the past

<comment><USER7> [https://youtu.be/GNR9El3XWYo](https://youtu.be/GNR9El3XWYo)

</comment></comment></comment></comment><comment><USER24> So it looks like very roughly AWS Lambda in JS only for Firebase with nice user event hooks and Firebase Cloud Messaging.

I'm wondering how they handle:

1 - <USER2>

2 - support for long-running tasks (where Lambda does not)

3 - official tooling for packaging and deployment (perhaps the biggest critique of Lambda)

It sounds like one could build an entire real app in this, which is quite cool.

<comment><USER25> You can see pricing details here: [https://firebase.google.com/pricing/](https://firebase.google.com/pricing/)

It's based on invocations, GB-seconds, CPU-seconds, and network egress. And there's a free tier, so you should be able to try with your use case and estimate your total future cost.

<comment><USER24> Ah, sadly no outbound networking requests on the free tier. In my opinion that is a critical use case for a tool like this.

This could be a non-starter if there's really no way try it for outbound requests without paying $25 / month. Hopefully I'm misunderstanding the pricing page.

Edit: The fine print for the custom plan:

> 3 The Spark plan only allows outbound network requests to Google owned > services. On the Blaze plan, Cloud Functions provides a perpetual free tier. > The first 2,000,000 invocations, 400,000 GB-sec, 200,000 CPU-sec, and 5GB of > Internet egress traffic is provided for free each month. You are only > charged on usage past this free allotment. Pricing is based on total number > of invocations, and compute time. Compute time is variable based on the > amount of memory and CPU provisioned for a function. For more information, > see Cloud Functions Pricing.

<comment><USER26> To clear things up: You Can use the Blaze plan which is pay-as-you-go and starts at 0$ and has a large free tier. External requests are disabled on projects that do not have billing enabled but you can have billing enabled and still be within the free tier of usage. The Flame plan is the "fixed cost" plan starting at 25$ and also includes external requests.

<comment><USER27> Oh, so if my app is currently under all the Free tier quotas for DB/Hosting/Storage/transfer, I could sign up for Blaze and my cost would be $0? I didn't realize that, the pricing page doesn't seem to make that clear to me.

Edit: Actually, if I'm exploring this price calculator right, it appears that there is no free tier for DB if you are on Blaze, only a free tier for Functions. Which suggests I should leave my Free tier plan as is, set up a second project that only has Functions that make external calls in it, sign that up for Blaze, and call those functions from my free tier functions... Convoluted, but hey, it'd be free.

</comment></comment></comment></comment></comment><comment><USER28> I'm surprised by the progress and uptake of the node vm lib; it's really found a ton of cool business models. From powering the Screeps game world, enabling smart message routing for PubNub BLOCKS, to stuff like this. I'm excited to see more advances with time.

</comment><comment><USER29> I plan on doing a benchmark and blog post of a simple node http function that just returns 200 and using Blitz.io to benchmark average startup latency of Google Functions. Curious to see how it scales as the number of concurrent requests increases and what the variance is.

<comment><USER7> Let us know what you find. Be keep an eye on your usage and quotas in the Google Cloud console if you hit any limits.

</comment></comment><comment><USER30> I have been waiting for this feature for a long time. This was the final missing piece for building an entire software product entirely on Firebase. Right now, I'm running servers on Google Cloud that use firebase-queue to handle server-side requests like payments and restricted actions. Google Cloud Functions would have been overkill because it would involve setting up a whole new workflow for the team. This is perfect because it is integrated to the CLI and easy for anyone to use.

All they need to work out now is educating their customers on the benefits of using Firebase over building a backend from scratch, especially in the trade- off between developer productivity and not owning your data.

</comment><comment><USER31> We've been using this product in production for about 6 months now and it's been great once we've figured out best implementations (for us) like database structures.

</comment><comment><USER32> Is there any protection for not spending fortune if your cloud function endpoint is DDoS attacked?

</comment><comment><USER33> No native python, java support like aws lambda. Are AWS 128MB instances constrained to 200MHz cpus ?

<comment><USER7> One of Cloud Functions unique offerings is the ability to scale CPU and memory separately.

</comment></comment><comment><USER34> Finally! This was the feature that made me go with parse.com when I started making backend-less apps. For Firebase apps I have to spin-up tiny node.js bots to capture events and do some cloud code magic.

Will start testing now!

</comment><comment><USER35> Built our app, Wander, an IRC-like chat app, 100% with Firebase. We've been using Firebase Queue to get server scripting abilities. Can't wait to migrate to using Cloud Functions instead, just waiting for the (awesome) team at Firebase to iron out any teething beta-related issues.

If only Realm made their server-side scripting available for free (or much less than the $1.5k/mo they're asking for Enterprise). That would give Firebase a run for their money.

</comment><comment><USER36> This is just great, the two things missing from Firebase that we kept hacking around were its very limited database querying abilities, and simple hooks around database events. Now one is part of Firebase and the other is more easily hackable than before, closing that little gap would make this the ultimate platform tool.

</comment><comment><USER37> How does this compare to App Engine? The most obvious difference I see is that App Engine lets you handle HTTP requests using a variety of languages, not just JavaScript.

<comment><USER25> It's a pretty different model, so not really an apples-to-apples comparison. Cloud Functions are bits of code that run in response to events, whether those are events from Google Cloud / Firebase or HTTP triggers. These functions scale up and down as the event load changes.

App Engine is a more traditional PaaS offering where you upload and entire web app, something you might otherwise run on your own server or a bare VM.

<comment><USER38> Both can be used as a swarm of workers, that's basically what "functions as a service" are.

The difference is usually in the pricing strategy. with "FAAS", you pay only when the worker works, you're not paying when the server running them is idle, as opposed to classic server instances.

App Engine standard has a few nice ideas in the way it implements push and pull worker queues, but given its limitations it was never going to be a huge success.

But "FAAS" is obviously not suitable to serve a "user facing" website, and rely heavily on vendor locked in API that cannot be transferred to another vendor.

Containerized worker jobs make more sense than "FAAS" IMHO. SAAS like iron.io provide that.

<comment><USER15> I'd argue there's a maintenance cost to consider as well. Functions are "serverless" from the dev point of view, where the dev needs to maintain App Engine services, scaling strategies, and so on. It's basically the next step up in the abstraction chain: On prem (you build) > Compute > App Engine > Functions.

</comment></comment></comment></comment><comment><USER39> After spending weeks getting to grip with AWS lambda I think I will try build something with firebase to see how it compares.

</comment><comment><USER40> What version of Node.js is currently running in Cloud Functions for Firebase? I assume it's LTS?

<comment><USER5> v6.9.1

</comment></comment><comment><USER41> Very cool - congrats on the launch!

Is there any ability to set reoccurring functions or anything like a cron job?

<comment><USER42> Not a built-in way per-se, but you do have a handful of options. You can use a third party scheduling service like [https://cron-job.org/](https://cron- job.org/). You could also use something like [https://cloud.google.com/solutions/reliable-task- scheduling-...](https://cloud.google.com/solutions/reliable-task-scheduling- compute-engine) which uses Google App Engine and Cloud Pub/Sub. We actually have a sample that shows just this (HTTPS function using an external cron job service): [https://github.com/firebase/functions- samples/tree/master/de...](https://github.com/firebase/functions- samples/tree/master/delete-unused-accounts-cron)

<comment><USER41> cool - thanks for the tip!

</comment></comment></comment><comment><USER43> Wow! Great to see GCloud going the serverless way.

CloudFunctions vs Lambda would not be quite a clash now!

</comment><comment><USER44> Is it possible to setup a Stripe server side .js code on this?

</comment><comment><USER45> is the cloud notifications something I could use for push Notifications in Android and iOS app?

</comment><comment><USER46> Look, I'm going to be honest - this is exciting, and Firebase is one of the best. But Google pushing this feature spells even more vendor-lock-in doom.

My disclosure is obvious, I'm an Open Source competitor, switch to us ( [https://github.com/amark/gun](https://github.com/amark/gun) ) and get "cloud functions" for free which can deploy to any services ( Docker enabled, Heroku 1 click install, run on GCS, AWS, etc.).

And don't worry, we just load tested the system doing a sustained almost 2K throughput messages/second across a distributed system on low end hardware. We plan on getting this up to 10K inserts/second on a free Heroku box.</comment>


Power Twitter: Inline Media, Integrated Search And A Lot More - <AUTHOR> http://www.techcrunch.com/2009/01/03/power-twitter-for-firefox-inline-media-integrated-search-and-a-lot-more/ <comment><USER2> I've been using power twitter for a while and it was great, showing images and videos inline. The 1.0 release however is terrible with on hover overlays, inserting its own branding and obtrusive javascript which breaks middle clicking for example. Find an old 0.93 version if you can.</comment>


Wallabag it. Save web articles. Read them later. Read them anywhere - <AUTHOR> https://www.wallabag.it/en <comment><USER2> If someone needs to auromatically grab articles from rss feeds i made specifically this [https://github.com/foxmask/th2w](https://github.com/foxmask/th2w)</comment>