Rackspace Cloud switching CDN from Limelight to Akamai - <AUTHOR> http://www.rackspacecloud.com/blog/2011/01/12/big-news-for-cloud-files-users-akamai-is-coming/

<comment><USER2> Is anyone else having the same issue with these services as I am - namely that Rackspace Cloud (and Amazon Cloudfront) do not support gzip compression? That means that any advantage in latency that you gain from serving a file locally is offset by the fact that it must be served uncompressed. It seems like it should be an absolute requirement for any CDN provider (and the smaller ones like SimpleCDN and MaxCDN do support gzip). I've repeatedly asked Rackspace if they plan to support gzip and they haven't given any indication that it's coming; this e-mail confirms it's not even on their roadmap.

<comment><USER3> The CDN should pass through whatever you give it. If your servers return gzip content for a request, the CDN will cache it.

It sounds like you want a configurable distributed web server instead of a CDN proxy cache.

<comment><USER2> That's exactly how MaxCDN and SimpleCDN work, but Cloudfront and Rackspace Cloud don't pass through requests from your own server; rather, they require you to manually upload the files you want to serve via CDN in advance.

<comment><USER4> But Cloudfront now supports custom origins which I believe allows gzip by forwarding the Accept-Encoding header and caching different versions of the file depending on the value of that header.

<comment><USER2> This is great to know, but it seems like a lot of unnecessary work on our part to make it work. That means for each file we have to manually create and upload a compressed version, ensure that the compressed and uncompressed versions are always in sync, and properly set up custom origins for the files.

Instead, Amazon's front end should just check the incoming accept-encoding header and automatically compress as needed.

</comment></comment></comment></comment></comment><comment><USER5> This has been a big issue in the Rackspace Cloud user community. There has been no support for CNAME, SSL, or invalidation, so lots of customers (including me) have looked to other providers. I moved all of my projects to Amazon Cloudfront for this reason. Hopefully with the move to Akamai, Rackspace can play some serious catch-up feature-wise.

<comment><USER6> I agree, this had was showstopper for a previous project. We had briefly looked into a stop gap solution of a SSL proxy but that really negated the CDN features. I'm glad we choose to go with Amazon, because they have continued their lead in the cloud services space.

I am very glad to see Rackspace (and others) continue to expand their offering into this market.

<comment><USER7> Are you guys only delivering VOD content? Any live streaming?

<comment><USER5> Not on any public projects, but I have been experimenting with Cloudfront RMTP streaming. I'm interested to see if there are any big projects using this.

</comment></comment></comment></comment><comment><USER8> If you are interested in CDN performance comparison as seen by end-users take a look at our Charts: [http://cedexis.com/data/charts.html?country=223&provider...](http://cedexis.com/data/charts.html?country=223&providerType=3&chartType=all)

Gabriel (yegg) wrote about our services on his blog -- [http://www.gabrielweinberg.com/blog/2010/12/testing-cdn- perf...](http://www.gabrielweinberg.com/blog/2010/12/testing-cdn-performance- via-cedexis-radar.html)

</comment><comment><USER9> We've got 500K objects on Amazon and any one of them needed to be accessible via SSL. That and the price made Amazon an easy choice from a myriad of competitors.</comment>


Project Pacific - <AUTHOR> https://blogs.vmware.com/vsphere/2019/08/introducing-project-pacific.html <comment><USER2> I'm entertained that it's the same codename that ZFS originally had when it integrated the layers of the filesystem.</comment>


Show HN: Modern Schools – Database of tuition-free, ISA-powered, online schools - <AUTHOR> https://vrtlly.me/modern-schools <comment><USER2> Why don't ISA-powered schools partner with existing social and religious institutions?

Taking a church denomination as an example, if you're a member, the church can subsidize tuition, and then once you graduate, they can hook you up with tech industry workers that are also members of the church. Because the church subsidizes tuition, you give up less of your income once you graduate. This arrangement would reduce the "dead weight loss" of people going through the boot camp and ending up underemployed because of low social capital/discovery. As the alumni network of Lambda + church grows, a larger number of people will want to pay it forward by helping the next generation. The church would facilitate this process formally.

</comment><comment><USER3> Maybe ISAs wouldn't be a bad thing if these "schools" actually provided some value. But they mostly look to me like improvised garage schools providing the same knowledge that could be easily found online for free or for small fixed price + a sloppy support system that doesn't even remotely replicate the educational support system of traditional schools.

If they really want to disrupt education don't start by attempting to create some sort of novel pseudo-loan just to claim that they are tackling the student loans problem.

Start by creating an educational experience that can compete with top established schools by leveraging technology to cut costs and improve the learning of the students. Doing this would actually make the ISAs valuable, but you got to start by providing real quality.

</comment><comment><USER4> I've made a MUCH more comprehensive list [https://docs.google.com/spreadsheets/d/1Wiuf6EXWJrtd9NWF9w7a...](https://docs.google.com/spreadsheets/d/1Wiuf6EXWJrtd9NWF9w7a7O6JJXbDX1qigLl4mJzSUVE/edit?usp=sharing)

<comment><AUTHOR> This is awesome! What inspired you to do this?

<comment><USER4> I'm looking into setting up an ISA fund in South Africa so I was researching the ISA market globally to help me build the business case.

</comment></comment></comment><comment><USER5> The branding of schools using ISA's as "modern" and "tuition-free" (and the implied message of "better") is not going to do any favors to the reputation that these schools get for deceiving their students.

</comment><comment><USER6> ISA == Income Share Agreement.

via [https://lambdaschool.com/isa](https://lambdaschool.com/isa)

<comment><USER7> Indentured Servitude Agreement also works, with how bad some of them are for the students.

</comment></comment><comment><USER8> Strange that App Academy was left out, considering it was one of the earliest (if not the first?) ISA bootcamps. Full disclosure: I attended in 2015, as did multiple friends in a +/\- 1 year window around then. All of us had good experiences and were able to launch our careers as software engineers directly out of App Academy.

<comment><AUTHOR> Adding it now! Thanks for the flag.

</comment></comment><comment><USER9> What did you use to build the site on? Custom HTML/CSS from scratch or something else? Looks nice

<comment><AUTHOR> I live and breathe React.js :)

</comment></comment><comment><USER10> Thanks!

This really helpful for me.

<comment><AUTHOR> Hey of course :) Thanks for checking it out.</comment></comment>


The Psychologist - new magazine in a new online format - <AUTHOR> http://issuu.com/thepsychologist/docs/thepsychologistjan09 <comment><USER2> Hmm, not working on Firefox / Ubuntu 8.10 -- Simply shows a blank content pane (I see the header/footer) and the scroll bar goes kind of whacky -- Any ideas?

</comment><comment><USER3> I wish The New Yorker used a similar interface for their online offering. The current one is unusable.</comment>


Switching to Linux: A Windows developer's view - <AUTHOR> http://anteru.net/2009/09/14/604/

<comment><USER2> This was interesting inside view. One thing that I did notice is the statement that the level of changes on the MSFT side was causing him grief. I'd be curious, as a follow-up, to see if he continues to develop on Linux. It seems like he has generalized the ease of the port into other perceived benefits on Linux (e.g. rate of change, lower need to adapt code) that might not be true in practice, or at least as true as he feels they will be based on the porting experience.

Sounded a little bit like some kind of initial success euphoria bias. Yes, I just made that up. I remember it with Rails too. This isn't a knock on Rails-- just using it as an example--but a lot of people had such a blast porting code (me included) that they assumed everything was peaches and cream until they realized that the big, dirty things in web apps like scaling, localization and the impact of poor planning didn't magically disappear.

<comment><USER3> I think there's a honeymoon period with just about any new technology. It generally starts once you've switched to solve a problem and the new technology solves it well. At this point any faults or frustrations are generally just because you don't know the technology well enough to do it right. It isn't until you become more familiar and try to expand what you're doing that you start to find and explore the limits of the new technology.

All technology has limitations and frustrations. The question is which works best for each person. I think this might work well for him, as it sounds like he is doing some things that do port very easily.

</comment></comment><comment><USER4> Choosing Linux for stable APIs would be rather silly. X11 is evolving rapidly nowadays and audio APIs are in a state of constant flux, where the different APIs often interfere with each other and there's no obvious best solution. Linux changes ABIs all the time and is notorious for C library incompatibilities. This recent mess with filesystem write semantics (<http://lwn.net/Articles/322823/> ) has proven you can't even rely on POSIX.

Meanwhile, Win32 has been far more stable over the years and Microsoft has put a ton of effort into backwards compatibility. Don't get me wrong; I like Linux but API stability is not the reason to choose it over Windows.

<comment><USER5> The X11 protocol was standardized in 1987. Any X application which worked then would work now. There are extensions and new capabilities being added, but every one is backwards-compatible.

Ditto with audio APIs -- the last major change was the changeover from OSS to ALSA, in 2002, and to this day there's an OSS compatibility layer.

I've used Linux since early 2001, and in all that time I've never encountered an incompatibility with libc.

The filesystem semantics issue is due to idiot application developers trying to squeeze out a few msec of performance, at the risk of their user's data. The issue exists on every modern filesystem, no matter which OS is used. Anybody who relies on POSIX -- ie, uses fsync() -- doesn't have to worry about that problem.

<comment><USER4> Yes, X11 is backwards compatible and that's been really great for the Linux desktop. But the article bashes Windows for rapidly introducing new APIs even though the old ones remain compatible; I'm just pointing out that Linux does that too.

As for the audio situation, the problem is sharing between multiple apps. ALSA sucks at it so "sound servers" were invented but they caused more problems than they solved. Now it seems like every distro has a different sound solution, and meanwhile OSS was never removed from the kernel so you can't even rely on ALSA always being there.

The filesystem problem can't be blamed wholly on apps or kernel devs; IMHO the problem really lies in POSIX which doesn't specify a way to achieve what app developers need in a way that can also be easily implemented in the kernel with good performance. I would argue that the behaviors app developers were using became a de facto part of POSIX and the way kernel devs broke them was irresponsible even if it didn't break the letter of the standard. Contrast with Microsoft which goes far, far out of its way to avoid breaking apps even when they flagrantly violate good practices (there are some great examples on The Old New Thing: <http://blogs.msdn.com/oldnewthing/> ).

<comment><USER5> _Yes, X11 is backwards compatible and that's been really great for the Linux desktop. But the article bashes Windows for rapidly introducing new APIs even though the old ones remain compatible; I'm just pointing out that Linux does that too._

Linux's graphics APIs have remained largely static: they are GTK+ and Qt. Nobody writes their own implementations of X11.

Your audio paragraph is completely divorced from reality. Sound servers were originally created to implement software mixing, which is not supported by OSS. When ALSA was imported into the mainline kernel, software mixing became possible without servers and they largely died out.

Now, ALSA is the dominant standard for Linux audio. Recently, the sound server PulseAudio was created, but apps use it through the standard ALSA API. To my knowledge, there is no distribution using a sound server other than Pulse.

You can't rely on sound being enabled, true. But every mainline distribution ships with sound enabled, and that means they support ALSA. If a user disables their sound subsystem and then complains they can no longer hear music, that's their problem.

 _The filesystem problem can't be blamed wholly on apps or kernel devs; IMHO the problem really lies in POSIX which doesn't specify a way to achieve what app developers need in a way that can also be easily implemented in the kernel with good performance._

Sure it does -- fsync(). To my knowledge, the only filesystem which has poor performance when using fsync() is ext3 in data=ordered mode (which is not the default).

<comment><USER4> _When ALSA was imported into the mainline kernel, software mixing became possible without servers and they largely died out._

My experience was completely different. A few years ago, ALSA software mixing was not enabled by default and didn't work well when enabled. When not enabled, apps couldn't share the audio device at all. KDE created aRts to allow sharing at the app level, but aRts sucked, plus it hogged the audio device so non-aRts apps wouldn't work at all. Later aRts added a timeout after which it would release the device but this obviously wasn't a good solution. Gnome had ESD which I didn't use but it conflicted with aRts. JACK came along but was only ever used by high-end audio programs.

ALSA finally did get decent software mixing support, but now people are used to running sound servers. PulseAudio is the newest thing but last I heard a lot of people are still unsatisfied with it (e.g. [http://jeffreystedfast.blogspot.com/2008/06/pulseaudio- solut...](http://jeffreystedfast.blogspot.com/2008/06/pulseaudio-solution-in- search-of.html) ). Furthermore, people who know what they're talking about are recommending a move away from PulseAudio and ALSA and _back_ toward OSS! Personally, I think the case is quite convincing: [http://insanecoding.blogspot.com/2009/06/state-of-sound- in-l...](http://insanecoding.blogspot.com/2009/06/state-of-sound-in-linux-not- so-sorry.html)

 _To my knowledge, the only filesystem which has poor performance when using fsync() is ext3 in data=ordered mode (which is not the default)._

Not according to <http://lwn.net/Articles/351422/>

<comment><USER5> _A few years ago, ALSA software mixing was not enabled by default and didn't work well when enabled. When not enabled, apps couldn't share the audio device at all._

Yes, disabling sound mixing will prevent multiple applications from using the sound card at once, in much the same way as disabling graphics drivers will prevent X11 from working.

 _KDE created aRts to allow sharing at the app level, but aRts sucked, plus it hogged the audio device so non-aRts apps wouldn't work at all._

aRts is for pre-ALSA (ie OSS) applications. It doesn't belong on an ALSA-based system, and will obviously not get along well with a modern stack. I'm not denying there are lots of distributions which are configured poorly, but any decent distribution such as Red Hat or Debian worked well.

I disagree that glitch-free playback and per-application volumes are "solutions in search of problems", but that's personal taste. If somebody wants to run without PulseAudio, they can. Reading the blog post, it seems he was surprised when upgrading to a bleeding-edge development version caused problems.

The last link is written by an OSSv4 developer. OSSv4 is unlikely to ever gain mainstream acceptance because it contains insanity such as performing floating-point math in the kernel. Aside from people are _literally_ hired from the company developing OSSv4, I have heard no good news about it, and there do not appear to be any movements back to an OSS-based stack.

<comment><USER4> _Yes, disabling sound mixing will prevent multiple applications from using the sound card at once, in much the same way as disabling graphics drivers will prevent X11 from working._

X11 never came with graphics drivers disabled by default.

 _aRts is for pre-ALSA (ie OSS) applications._

aRts isn't "for" ALSA or OSS applications; in fact it doesn't play nice with either. aRts is for aRts applications. aRts has backends for both OSS and ALSA.

There's no reason glitch-free playback and per-application volume control can't be done in the kernel. The only feature that makes sense to do in user space is network transparency, which is of limited utility.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Maybe I'm missing something, but who develops on Windows for applications that aren't using the Windows APIs anyway? I mean, the whole point of Windows is it's APIs. If you aren't going to use them, then sure, go and move to a unix system - indeed you should have done so years ago.

On the other hand, if your product is designed for Windows, then you can't really switch, can you? (that's a real question by the way, not rhetorical).

<comment><USER7> The whole point of Windows is that it's an operating system. Depending on your market/skills you either develop for it or not. I prefer to develop for it because when it comes to C++ programming, it's the best out there.

This story made porting look easy, but rest assured it is hard, and he won't be so thrilled when the problems start cropping up.

</comment></comment><comment><USER8> <http://braid-game.com/news/?p=364>

Jonathan Blow, the developer of Braid, has had a thread on his blog (made from last year, when he gave up trying to port Braid on linux, till July of this year) about the (sorry?) state of developer tools on Linux.

An interesting read - given that his primary editor was emacs and he has been using *nixes for 20 years.

Long story short - sorry state of sound on Linux, sorry state of debugging tools on linux, OpenAL+SDL dont cut it.

</comment><comment><USER9> I still use windows mostly because of my primary tools (Maya, Photoshop and Fusion - occasional game), however I have a VM with linux in it and just run a fullscreen putty on a second monitor. For django dev, for example, I have a vertically split screen where bottom is a :resize of 10 lines and running manage.py runserver_plus and top one I run bash or cycle through several (whatever I need). Similar stuff happens when I dev in D or C++.

I edit files via tramp on that VM dev server. Neat combination is that I move VM from workstation to laptop and vice versa, basically having a portable dev server all the time with me. It would be nice though if I could find a binary diff copy for files, since copying VM over network can take some time (luckily I don't do that all the time).

</comment><comment><USER10> I think QT is real gem as far as application frameworks go. It's the easiest C++ framework I've ever worked with.

</comment><comment><USER11> It's not for nothing Google took 8 months to port Chrome to Linux. Porting can't be this simple.

<comment><USER12> Didn't it also take that long to port the OS X version as well? (I seem to remember the 'developer' builds of Chrome for Linux and Chrome for Mac coming out at the same time)

Keep in mind that he seems to be mostly using Python and doing mostly number crunching (which would seem to be rather OS independent) from what I could glean.

</comment></comment><comment><USER13> Smacks of poor engineering to me; switching to another platform instead of finding the cause of the problem.

"I was hitting some issues with either the scheduler or the memory subsystem, as my code didn't have any I/O in it."

<comment><USER14> Developers are responsible for debugging their platform then? He states that he had a significant speedup in Vista too, which is pretty good evidence that he'd isolated the problem to something in XP. So he needs to decide on what to do, and fixing XP retroactively doesn't seem to be an option.

And in any case, the thread scalability of the allocator some of MS's older C runtimes is a known performance issue. I'm not surprised by this at all.

<comment><USER7> What happened to: first check your code, then your compiler and as a last resort your OS? The problem was most likely in his hand-crafted threading code.

</comment></comment></comment><comment><USER15> Looking at what he was doing (Python + C++) it seems that switching was a no brainer. Hell, I'm a MS fanboy (seriously love .NET) and I use Linux for some projects (Java/Tomcat and investigating Mono).

</comment><comment><USER16> I always been a windows developer. 3 mo ago my co-worker suggested I give linux a shot. Fuck it why not.

I realized the following:

1) Linux is more stable. (NEVER have to reboot it, unless I chose to conserve energy at night).

2) Linux boots faster. By the time linux boots, auto launches firefox and eclipse, windows is only reaching the desktop at which point its still 1-2 minutes before it becomes usable.

3) I still use the same tools in linux and windows (I still need a VM to run Toad). (Eclipse, grep, firefox, a linux command prompt (god cygwin is not as good as the real thing). Which is great since toad makes windows 95 appear stable. Putting toad in a vm is the best way to make it work well :). Also I get to test IE6,7,8 without any problems because I already have vms set up.

4) Multiple desktops = easier at times.

5) Windows made me need tools for mounting like sftp -> drive. Linux comes with sftpfs (ok fine u need to apt-get it). Its all free too so cost savings.

Switching to linux only raised one question: Why didn't I do it earlier.

The only problem is KDE fonts suck! Gnome ones are good out-of-the-box. Also KDE apps (like plasma) crashes like a wasted, doped-up, narcoleptic. Sooooo ubuntu, not kubuntu wins for me.

<comment><USER17> If you have to reboot Windows for anything other than updates you should be looking into problems with your hardware and drivers. The "Windows is unstable" meme should really be dead and buried by now.

I can believe Ubuntu is faster than Windows at booting, especially considering they focused on it in their last release, but for me the much bigger issue was flaky Sleep/Suspend-to-RAM and Hibernate/Suspend-to-Disk support. I suspend my laptop several times a day but only reboot on updates.

<comment><USER18> > If you have to reboot Windows for anything other than updates you should be > looking into problems with your hardware and drivers. The "Windows is > unstable" meme should really be dead and buried by now.

It it should be 'dead and buried' by now then why does it persist ?

It seems that there are enough people that share these experiences (not necessarily your own) to stop that from happening.

My own take is that it is getting better, but it isn't there yet.

One thing that I personally don't understand at all is why the industry did not long ago standardize on ECC RAM, the cost would have been marginal (due to the increase in volume) and the potential benefits in perceived stability would be huge.

Servers have it pretty much as a standard, any bit flipped in critical RAM can cause an OS crash (both for Linux and for Windows, RAM failures are OS agnostic).

<comment><USER19> Maybe _Microsoft's_ code doesn't cause crashes any more, but 3rd party drivers and shoddy OEM hardware are definitely still to blame. Users don't care why their stuff crashes, only that it does. And first hand, I see XP-era machines crash less after converting them to Ubuntu. I haven't tested a Vista machine, I've never seen anyone run one.

Re: ECC ram, my non-server, "consumer" linux boxes typically have uptimes of 100,200,300 days. They only go down for hard drive failures and OS upgrades.

<comment><USER20> My copies of XP and Vista were fairly peppy booters when first installed, but adding in assorted services (databases, Web server, VNC) slowed things down, plus I had to install antivirus software, which makes things even slower.

Of more concern to me is shutdown time, as in "eternity", and when I have to just hold the button button to force a machine off. Each time there is a real risk of corrupted drives (I'm recovering data right now from a drive corrupted because something hung Vista and I had to power off the box).

Each time it refuses to cleanly shutdown there is nothing displayed to tell me why.

Is there even an option to have windows show what it's doing when it shuts down instead of the often untruthful 'Windows is shutting down' message?</comment></comment></comment></comment></comment>


Ask HN: Sourdough Beer/Spirits? - <AUTHOR> I have a sourdough starter I've been using once a week for a few years. If I leave the starter too long without re-feeding, then a liquid forms on the top of it. I've read this is the ethanol that is a by-product of the yeast eating the sugars in the flour.
I've read that "you shouldn't drink it, because it can make you blind" (and haven't particularly wanted to test out that theory).
Recently I found this old school web site with a recipe for Sourdough Beer, using the "hooch" as a fermenting agent: https://sites.google.com/site/windintheroses/sourdoughbeer
But I haven't found any other information like this around... is it more/less dangerous than an alcoholic ginger beer? Are there any other methods for distilling or using this by-product? <comment><USER2> When grain is fermented to make spirits you get mostly ethanol but in many cases there is enough methanol produced that can cause blindness or death. The trick for distilling is to throw away the first part that comes out because of the high methanol concentration.</comment>


Ask HN: Are you worried about your government's reaction to pandemic? - <AUTHOR> Firstly, I understand the "Coronavirus CVOID-19" situation is a serious matter. It's just the way governments are reacting, reminds me of their response to a terrorist attack.
Here in Australia we're urged to stay at home and are banned from gatherings of more than 100 people. It seems each week there's more restrictions on personal freedom's like; travel, attending events, what you can buy, even how to greet people...
I feel like the laws imposed on civilians during an event like this are extremely hard to revoke after the fact, kind of like how airport security was permanently increased after 9/11/2001... <comment><USER2> "Emergencies' have always been the pretext on which the safeguards of individual liberty have been eroded." \- FA Hayek.

I am australian and also very concerned. The powers currently granted to the QLD Chief Medical Officer sound like they come straight out of North Korea.</comment>


Major layoffs at yahoo (20%)? - <AUTHOR> http://www.alleyinsider.com/2008/01/tip-yahoo-layoff-list-created-15002500-cuts-possible.html

<comment><USER2> I work at Yahoo!, and I really hope this rumor is true. There is a lot of dead wood, and even more VP level employees that really don't contribute to the bottom line. I know this, others know this, and Jerry knows this. Its just a matter of seeing if he has the intestinal fortitude to do the needful.

<comment><USER3> The article says: The "list" is reportedly the product of a Q4 project in which all group heads were asked to look at redundancies and create their own lists of potential cuts. All the group-level lists have now been turned in to corporate.

 _There is a lot of dead wood, and even more VP level employees that really don't contribute to the bottom line._

It doesn't sound like this is how you get rid of VP-level dead wood, or am I wrong?

</comment></comment><comment><USER4> "CEO Jerry Yang will reportedly make the decision to go forward with these layoffs--or not--next week."

English usage question: could that be reworded as "CEO Jerry Yang will decide whether to make these layoffs next week"?

<comment><USER5> I am not going to answer your English usage question here on the public forum because there is no sense in posting something many people will read for the benefit of a single person, and there is no contact information in your profile.

<comment><USER6> Sheez... I disagree with hollerith too, as it's not really that big a deal to have some off topic conversation like that (that might benefit other non- native speakers), but there's no need to vote people down so much for the occasional sub-par comment, unless it's really beyond the pale or the person is a troll - neither of which is true in this case.

<comment><USER5> Tough crowd.

</comment></comment></comment></comment><comment> daniel-cussen 20% is a lot of layoffs. However, I don't view them with the same stigma of VCs firing founders. Firing is a part of business.

Firing people doesn't necessarily make you evil. Especially if you aim at marketing. If you cut down on the HR when you're done with the layoffs, you get extra points.

<comment><USER7> A few years back I heard from a friend at a dotcom that they had their payroll person work overtime to get the payroll out of the way so that they could lay off most of the people with short notice.

Then after she finished writing everyone else's check she was told to write one for herself. Ouch.

<comment> daniel-cussen That is very Ouch.

</comment></comment></comment><comment><USER8> This is a quick fix to address short term profitability and stock price. If I were a stockholder, I'd be asking the bigger questions like what markets will yahoo be in in 5 years. The battle lines are being drawn now. What will differentiate yahoo from the googles, microsofts, amazons, and ebays of the world? I wish I knew.

<comment><USER9> Your right, it's a quick fix. If they don't raise the value of their stock there will be no difference between them and another company as that company will have bought them ;)

</comment></comment><comment><USER10> It is amazing that Yahoo has yet to copy Adsense, I mean they know is giving billons to Google, and you wait years and have not even complete a decent copy of it???

<comment><USER11> <http://searchmarketing.yahoo.com/>

<http://publisher.yahoo.com/index.php>

<comment><USER10> It is not even international.

<comment><USER11> <http://searchmarketing.yahoo.com/int.php>

<comment><USER12> best two replies ... ever</comment></comment></comment></comment></comment>


10 features in PHP that you really should learn and use - <AUTHOR> http://www.codeaddiction.net/articles/34/10-features-in-php-that-you-really-should-learn-and-use <comment><AUTHOR> Have to skip the php7 ones because of lack of hhvm compatibility for now but they are catching up.

Also, don't directly hash a raw password, ever. It should consist of other data combined with the original password (aka salting) part of username, date registered, etc. Otherwise hash-lookup tables can be used to reverse the hash.</comment>


Seattle Mayor: I have Comcast, and I would like better service - <AUTHOR> http://www.washingtonpost.com/blogs/the-switch/wp/2013/11/01/seattle-mayor-i-have-comcast-and-i-would-like-better-service/ <comment><USER2> For the past year the city of Seattle has been hyping "gigabit seattle" as the solution. The idea is that a private group would get access to city fiber at/near cost and manage the actual service. The private group in this case is Gigabit Squared.

As far as I can tell Gigabit Squared is a sham. They have no previous completed projects. The dates and milestones reported to the press and recorded in the city meetings, like the CTTAB, are woefully different. Event the dates in the press are terribly vauge, and keep slipping anyways. First it was "in 2013", then "late 2013", and now it's "in 2014."

My neighbor has been trying to get implementation details for the past year. The Seattle mayors office said "contact our partner". Emails and phone calls to Gigabit Squared went unanswered. She then went to the mayors office, complaining that the "partner" was unresponsive. The reply? "We cant help you. You have to talk to gigabit squared for any details."

Last I looked they were missing little things like an ASN, network engineers, an operations group, facilities, outside plant techs and trucks. Their jobs page was a generic "ask about exciting opportunities". I find it a bit incredible that they could feasibly be launching a network of this scope inside of a year.

I hope it actually works, I'd love to stop giving money to Comcast. But what I see so far is another Seattle Monorail Project.

<comment><USER3> Thank you for digging into Gigabit Squared. Very interesting. I'll ask McGinn next chance I get. But I'll wait until after Tuesday, in case its moot.

An acquaintance started a group to promote better broadband. [http://uptun.org](http://uptun.org) [https://www.facebook.com/groups/uptun/](https://www.facebook.com/groups/uptun/) Looks like he hasn't gotten past the angry yelling phase of organizing.

The monorail would have succeeded if the Powers That Be wanted it. But none did.

I've heard numerous theories for why the monorail died. (eg Weren't provided an accurate head count, so the projected tax revenue was off, which borked the credit rating, which led to higher cost of capital, which spiked the project. Not that I understand these things.) I'm sure there's some truth to most stories.

The closest I can figure, unlike Sound Transit's light rail and Bezo's fancy new trolley car, the monorail didn't trigger a rezoning, which would have lead to higher property taxes, which is local government's back door way to raise revenue in the face of the anti-tax jihadists. So there was no reason for a sitting politician to put some muscle behind the effort.

A friend from Chicago has joked that the monorail would have happened if Seattle was more corrupt. Big capital expense projects, patronage, pork, jobs for unions, etc.

In that neither the monorail or gigabit have juice behind them, they've very similar.

<comment><USER4> The fact that it didn't happen means that the people it would have been transporting aren't worth the investment from an economic perspective. In the case of corruption, the city would unwittingly be investing in it's poorest citizens at a deficit to itself. -(-1) is 1.

</comment></comment></comment><comment><USER5> You can't intelligently discuss cable monopolies without following the money and reading the franchise agreement. As near as Google and I can figure out, you need to read:

[http://www.seattle.gov/cable/comcast_franchise_06.pdf](http://www.seattle.gov/cable/comcast_franchise_06.pdf)

Is this the most recent revision? Who knows. That would take more effort than I'm willing to expend.

First of all the agreement I linked to at seattle.gov claims to be in effect until 2016. So until 2016 (or so) you can whine all you want but its just posturing until them. I donno enough about Seattle politics to know if the proposed candidate would be in office in 3 years? Also I don't know enough seattle politics to tell if the mayor really has any input. Some localities are more autocratic than other more anarchistic localities. So the mayor may or may not have much impact at all other than pure PR.

Secondly follow the money. Read section 11.1. Basically for CATV in Seattle there is a 5% sales tax on top of any and all other fees gathered by comcast and paid to the city. You can call it a fee or bribe or compensation or whatever but its basically a sales tax. The feds limit this local tax and there's the usual boilerplate about increasing if legally allowed etc.

You can estimate based on subscriber numbers and bills or the other way around as total comcast revenue times percentage of comcast subscribers located in Seattle, well whatever either way its a substantial amount of money. So, follow the money. Where is the candidate proposing to raise rates, implement new taxes, or cut services if they kick out Comcast completely?

<comment><USER6> I'm confused, why wouldn't they just tax whatever replaces Comcast? Maybe your argument is that the government has an overall interest in maintaining a monopoly, since monopolies raise prices, and under a fixed tax rate, that means more revenue for government.

<comment><USER7> I haven't been following this too closely... but a 5% "sales" tax on a free option is $0.

<comment><USER8> I don't see any mention of a free option in this case.

</comment></comment></comment></comment><comment><USER9> I just gave a small donation to his campaign fund. You can donate here: [http://mcginnformayor.com](http://mcginnformayor.com). Wish there was a place on the donation to tell them why you're donating.

I really hope that more mayors (especially NYC where I live) make this a focus of their campaign. So sick of the cable company monopolies.

<comment><USER10> Thanks for the link. Yes I really wish that any of the mayoral candidates in Boston (where I live) would make gigabit Internet a priority rather than just being "tough on crime".

<comment><USER11> While as a Bostonian I would love gigabit, I do think that fighting crime remains a substantial priority in this city. It's not totally backwards, but there's room to improve.

Indeed, I generally think that there are many priorities a mayoral candidate for this city should have, and alas, super-speed internet access is not at the top of that list. Gigabit is a problem ranking far under crime, poverty, and infrastructural issues in Boston.

</comment></comment></comment><comment><USER12> When I moved to Seattle, I was very fortunate in that CondoInternet served my apartment building. They offered gigabit internet for $120 a month and 100mbps for $60. All after taxes, too. Coming from years of dealing with Comcast, this was a welcome change.

Increased availability for this level of quality would be great to see.

<comment><USER13> I pay Time Warner $60 a month for 20mbps....

</comment></comment><comment><USER14> I'm in support of more fiber, I'm actually considering a move to get it at some of the downtown condos that offer it. However, this feels like the promise of a down in the polls incumbent hoping to turn this into a 1 issue race. Why weren't 4 years enough to get it rolling already? (And don't take this wrong, I likely will vote for McGinn, this just seems opportunistic is all).

<comment><USER15> It sounds like it is rolling along, though the details on the "14 neighborhoods" is a bit vague.

<comment><USER16> A quick search of 'gigabit seattle' will make things less vague: [http://gigabitseattle.com/areas/](http://gigabitseattle.com/areas/)

</comment></comment></comment><comment><USER17> McGinn frustrates me. Issues like this are highly popular and resonate with everyone, but I haven't been a fan of several of his policies.

He raised public parking rates to pay for street maintenance upgrades, safety at schools, etc. But, a lot of city streets have yet to be repaired, and safety at our particular local school has slowly been getting worse. He has had to deal with a police force in transition after a DoJ investigation, which he's handled rather gracefully, so he's done some things well. I'd say it's largely been a very mixed bag.

But the biggest frustration for me is that it always seems like he will say whatever is popular based on who is in the room. It's not that he is acting like a politician, but rather someone who doesn't really stand for anything. This issue, while he's raising it now, hasn't been a hallmark of his current tenure, so it seems more opportunistic than anything else.

If it weren't an election cycle, I'm not sure we'd be hearing so much about this right now.

<comment><USER18> > He raised public parking rates to pay for street maintenance upgrades, > safety at schools, etc. But, a lot of city streets have yet to be repaired

And of course, Mercer in Lower Queen Anne is getting every single street corner re-done for...no apparent reason.

<comment><USER17> That's happened in Green Lake and Wallingford as well. And it's really strange, because it doesn't appear to serve any functional purpose. A couple of them now serve to slow down neighborhood traffic (a good thing), but mostly they look like replacements for something that didn't need replaced.

</comment></comment></comment><comment><USER19> I wonder if Google going to contribute to the mayor, since Comcast is funding his opponent.

<comment><USER20> Google typically funds all major contenders in big races.

<comment><USER21> As a corporation, or are you counting their employees?

<comment><USER22> In general, corporations do that more or less to hedge their bets. They want the candidate that they support to win, but if the other candidate wins, they will be able to settle with at least some influence on that other candidate through that funding.

<comment><USER21> Do you have any reliable sources on that? It doesn't make much sense to back both sides in a zero-sum game and both candidates would know that. It seems much more likely that the usual sources who report "Google contributed $X to Candidate A and $Y to Candidate B" are counting employee contributions, either as an honest mistake or as a propaganda tactic to make their point. In reality, Google pays thousands of people a generous salary and each of those people have their own opinions about various issues, and so they're contributing their money, but not on Google's behalf.

In fact, this explains a lot of things. Back in the day when people got long distance telephone service from a different company than their local service, there used to be a pro-life phone company that advertised that all the other long distance companies like AT&T and MCI donated a ton of money to pro-choice organizations so you'd better switch to the pro-life phone company. But why the hell would a phone company care about abortion? They didn't, they just employed a lot of people and some of them happened to make political donations to pro-choice causes.

</comment></comment></comment></comment></comment><comment><USER23> It's not Comcast's service that's the problem anymore--their service has actually improved a lot over the past few years.

It's their prices and the fact that they have no direct competition to force them to charge a rate any closer to what the service actually costs to provide.

It costs hundreds of dollars per user, per month to consume data over cable only because the cable provider has a monopoly.

</comment><comment><USER24> Still waiting for Verizon's FiOS and it takes forever. Does Google plan to expand Google Fiber to more cities? Their pricing is simply the best when it comes to $ per bandwidth metirc.

</comment><comment><USER25> [https://en.wikipedia.org/wiki/Seattle_Internet_Exchange](https://en.wikipedia.org/wiki/Seattle_Internet_Exchange)

</comment><comment><USER26> Take "My Internet is provided by Comcast, and I know my family would like better service. I will speak for my gamer son as well." and insert any major cable company and you will get a true statement.</comment>


How the collaborative Internet shapes technologies of the future (Niklas Zennstroem, Skype) - <AUTHOR> http://news.bbc.co.uk/1/hi/technology/6729509.stm <comment><USER2> Another example of the Joost marketing machine. We can all learn from Nik Z.</comment>


Show HN: EasyRes – a fast OS X screen resolution switcher with animated previews - <AUTHOR> http://easyresapp.com/?rf=hn

<comment><USER2> Bought. Nice. One thing: the icon has ended up as the far-left icon in my menu bar, and vanishes at anything less than full resolution. I might need to get BarTender, to help deal with that, but perhaps you can do something to help. Maybe I just need to learn how to arrange my icons in a particular order.

<comment><AUTHOR> Unfortunately third-party MAS apps can only add items to the menu bar, first come first served. The last item is added on the left. You have to run EasyRes before the other apps to get its menu bar item to appear first. Apple's system menu bar items appear on the right-hand side, and can be moved around using command-drag. We don't get access to that, unless we use private APIs (like iStat Menus does) but then we cannot distribute via the Mac App Store.

</comment></comment><comment><USER3> Very interested as several apps I use regularly - screenshots (⌘-Shift-4), webex single-app sharing, screen flows, where this tool would be much much improved over SetResX + Display prefs.

$8 seems like a quite a bit, but is actually not that bad for the convenience. Love the preview, just not the bouncing zoom animation.

<comment><AUTHOR> A few people have asked if they can switch off the continuous bouncing zoom animation. I might be able to add that option in an update.

</comment></comment><comment><USER4> This is cool man. I use an MBPR and never knew how to get back down to 1x resolutions. Just saved me a couple of steps in my workflow. Wasn't sure how useful the animations were going to be, but turns out very much so. Solid tool; much obliged.

</comment><comment><USER5> Are mac monitors more allowable for different resolutions? I've always thought that a resolution is fixed for a monitor, or am I wrong?

<comment><AUTHOR> Retina screens in particular are usable at various resolutions. I find myself often switching resolutions on my Retina MacBook Pro, depending on how much screen real estate I need. Which was what inspired me to build the app.

<comment><USER5> Oh awesome!

Great app and execution!</comment></comment></comment>


Let the Type System do the Work - <AUTHOR> http://javadocmd.com/blog/let-the-type-system-do-the-work/ <comment><USER2> The following is based on conjecture, as I'm not old or well-read enough to be sure of this, but it seems to me that the original purpose of type systems got muddled up by the tremendous popularity, mostly in Windows systems, of "hungarian" variable naming style. When your "type system" consists of adding three letters to the beginning of a variable name, you don't have a way to make descriptive types. Java, in most of the ways I've seen it used, is essentially hungarian notation enforced as a language feature.

I realize that variable naming and type systems are two different things, but it seems many programmers never realized the point of type systems (expressing the type for the _programmers_ sake) because they only ever saw it used to distinguish abstract primitives. For a long time, I had trouble understanding that hungarian notation wasn't a type system, because they seemed to do precisely the same thing - that's how limited my understanding of types was. The kind of style seen in this article was alien to me for a long time, but it was enlightening to realize that the type system is there to _help me out_ , not just make me type a bunch of unnecessary crap.

tl;dr: I really need to learn Haskell.

<comment><USER3> I think what you're getting at is the distinction between this:

      float x;

and this:

      kilogram x;

The former, as you say, only tells you about the underlying representation. It says "this is a float, so the computer should store it in such and such a way." That's fine, but it doesn't tell us enough.

The latter example is far more useful. In my imaginary language, the declaration implicitly tells the computer to store the value as a float, because the kilogram type has been defined as such elsewhere. But that's not all it does! It tells us and the compiler that this float _represents a real- world quantity measured in kilograms._ It prevents us from mistakenly passing kilograms where a pounds were expected, or seconds where kilograms were expected.

On the Haskell front, you might be interested in the Dimensional library, which does just that. It also works elegantly with multiplying and dividing units. E.g. if you have a miles value and an hours value, you can divide to get a miles per hour value.

<comment><USER4> You can even take this a step further: using `float` instead of `kilogram` is leaking an implementation detail. It's (probably) too low-level of information to actually be useful.

Luckily, more and more programming languages are making creating these simple types easier. Haskell:

        newtype Kilogram = Integer

Rust:

        struct Kilogram(int);

In fact, this blog post, while a bit outdated, shows an application of this idea, to solve string encoding issues for HTML templating: [http://bluishcoder.co.nz/2013/08/15/phantom_types_in_rust.ht...](http://bluishcoder.co.nz/2013/08/15/phantom_types_in_rust.html)

<comment><USER5> nitpick - the haskell version should be

        newtype Kilogram = Kilogram integer

The issue with doing this of course, is that it's mostly useless to computation. You lose the ability to use mathematical operators because you're no longer an instance of Num, and even if you create the Num instance, or use -XGeneralizedNewtypeDeriving, you can't multiply a Kilogram by a Meter/Second for example, since the arguments to (*) must be of the same type. One would need to use a generic "Measure" type instead, where the unit is some metadata attached to it, and the Num instance implements the typechecking on units.

<comment><USER3> You're quite right about the limitations imposed when you make your own dimensional types like that. It turns out the problem isn't trivial. Which is why I prefer to use a library like Dimensional. With Dimensional, you get plenty of units out-of-the-box, you can define your own if needed, and you can perform arithmetic in a fairly natural way.

</comment></comment></comment></comment></comment><comment><USER6> The type system is what the compiler (or interpreter) knows about your program. Sophisticated type systems know a lot, and can tell you a lot. Sophisticated does not mean typing a lot.

When building code for the long term, you really want to focus on techniques that make it _impossible_ to misuse an API, whenever it's possible to do that. This article nicely calls out one such technique.

Generic typing can be used to (try to) force the consumer of an API into correct usage. Judicious use of _final_ and _abstract_ in the land of Java can be used force/guide eventual overriders of an abstract class down the right path -- they'll get compilation errors if they don't at least implement the right methods.

Whenever you find yourself writing an assert method, take a beat and figure out if the type system could have turned that into a compilation error instead.

<comment><USER7> _" The type system is what the compiler (or interpreter) knows about your program."_

Compilers know a lot more than just what is represented in "the type system" (as it's typically thought of, anyway). Control flow (basic block analysis, &c) for instance. Which isn't really taking away from your larger point - certainly, things represented in the type system are things the compiler _will_ know about.

 _" Whenever you find yourself writing an assert method, take a beat and figure out if the type system could have turned that into a compilation error instead."_

Possibly with a _Static_assert (or static_assert) as if C11 (/C++11)! Obviously there are substantial limitations still, but it's great to be able to pull more to compile time cleanly.

</comment></comment><comment><USER8> This discussion reminds me of a 2005 article from Joel Spolsky called "Making Wrong Code Look Wrong". It has a similar point to this article: there are things we can do as programmers to make our code less error prone. It's definitely worth a read if you're interested in this topic and haven't read Joel's article before.

[http://www.joelonsoftware.com/articles/Wrong.html](http://www.joelonsoftware.com/articles/Wrong.html)

</comment><comment><USER9> Type systems in languages make me less productive.

Unless I have to provide support, add features, scale my application, write bug free code, hire additional developers, or explain my thought process to anyone else.

<comment><USER10> Right, it's well known that type systems are essentially useless, except when you need to write high quality code, and do all those things you mentioned. Basically they're unnecessary (but only if you use the term unnecessary very literally).

</comment></comment><comment><USER11> > val player = new Player(new Vector2(100, 100), new Vector2(50, 50))

> No problems here. The first noticible crack in the system comes after a few > weeks vacation away from this code. You come back, and you want to change > the starting point of the player. Will you remember which Vector2 to change?

        player = Player(position=Vector2(100, 100), size=Vector2(50, 50))

The problem is not typing here, it's lack of named arguments.

<comment><USER12> I'd disagree with you: named arguments are good, but they don't save you in a lot of cases.

For example when you have one function returning (pos, size) and another function expecting (size, pos).

<comment><USER11> Named arguments is syntatic sugar for packing/unpacking data structures in some languages, so you can leverage that. In Python:

        >>> from collections import namedtuple
        >>> Vector2 = namedtuple('Vector2', ('x', 'y'))
        >>> PlayerOptions = namedtuple('PlayerOptions', ('position', 'size'))
        >>> opt = PlayerOptions(position=Vector2(100, 100), size=Vector2(50, 50))
        >>> Player(**opt._asdict())

The order arguments are passed doesn't matter anymore. You can also enforce this calling convention with a constructor signature like this (in 3):

        >>> class Player(object):
        >>>     def __init__(self, *, size, position):

<comment><USER13> i agree that in languages without compiler defined types, but with other tools such as named arguments, the class of errors described here can be to some extent avoided by making good use of named arguments. I'm gonna do this more often in my python code!

</comment></comment></comment></comment><comment><USER14> Yus.

Dynamically typed languages are expressive, quick and fun.

But strict static typing is like a seat belt, it's annoying, but it just might save your life.

Also ceremony code is there for a reason; that reason is not to annoy you, it is to make sure that those who come after you know what it is that you have done and why.

Also: comments.

Also: documentation.

Also: UML.

<comment><USER15> > But strict static typing is like a seat belt, it's annoying, but it just > might save your life.

The problem with saying "static typing" without further precision is on one axis it ranges from C where the steatbelt is made of paper to ATS or Idris where the "steabelt" is a zero-zero ejection seat, and on an other axis it ranges from Java where you have to braid the steatbelt from raw fibers any time you sit down to MLs or Haskell where the seatbelt magically appears around you.

<comment><USER16> > MLs or Haskell where the seatbelt magically appears around you.

Well, only if you don't need nominal subtypes.

<comment><USER17> Honest question; Could you give an example where you need nominal subtypes?

<comment><USER16> If you like doing real object-oriented programming, then nominal subtypes are mighty useful.

<comment><USER18> Well here's another honest question: what's real object-oriented programming and where can I learn more about it?

<comment><USER16> There is an entire lineage of real object-oriented languages with nominal types starting from the dynamically typed smalltalk (research on which where we learned H&M was horribly ill suited to OOP in the first place). Or if you prefer, just look at how you use your natural language to name things and reason about the world.

<comment><USER19> On the other hand, so many people have abandoned the most common forms of OOP. See for example the story from yesterday [1]. Many writers have written about how brittle object hierarchies are in anything nontrivial, [2] for example.

I will say though that newer models of OOP, focusing on interfaces and composability of behavior, seem to have quite a bit of steam left in them.

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

[2] [http://raganwald.com/2014/03/31/class-hierarchies-dont-do- th...](http://raganwald.com/2014/03/31/class-hierarchies-dont-do-that.html)

<comment><USER16> Don't count OOP as being dead yet, the FP stuff is useful (I use it myself), but we have our own better abstractions coming out, like having more fun with mixin-style inheritance. The FP + OOP crowd is pretty vocal, I'll give you that.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER20> One language that enforces strong typing is Ada. It has compiler-time and run- time type checking. It also had many other features to make the code less error-prone and maintainable. It was used by the DoD and also used in critical applications, such as nuclear power plants. The early versions of Java reminded me very much of Ada.

<comment><USER10> As far as I know, there's no runtime type checking of Ada, but there is runtime value checking to ensure values are within the specified ranges/adhere to the specified predicates (a very cool feature; you can specify that a type is always even, and encountering an odd value will cause an exception).

<comment><USER21> Oh, there is runtime type checking, though usually it is optimized out at compile time: it is for subtypes (which is mostly range checks) and checks of tags for tagged types (usually in class wide subprograms). Though both of them are often optimized out.

</comment></comment></comment><comment><USER22> From a performance point of view, is there a significant penalty associated with these "small types"?

For example, kilogram as wrapper around float?

<comment><USER23> The way these are implemented, the short answer is yes. There will be more memory pressure on the garbage collector in Scala. The long answer is, "mmmm maybe, you should test it" because due to escape analysis, eden generation collecting speed, JIT, etc. It can get very complicated very fast. It can also be very dependent on what you mean by "significant penalty" and "performance".

As an aside, Scala does allow for compile time only small types in the form of AnyVal's. They won't help in the examples in the article, but in the simpler kilogram wrapper around float it will and there will be no performance penalty as it will be elided by the compiler.

<comment><USER24> Or to reuse an adage: "It's easier to optimize correct code than to correct optimized code."

You can always find the slow part and change it to use raw floats/ints/etc.

</comment></comment></comment><comment><USER25> See also this blog post about using using single-member structs in C to achieve similar goals: [http://spin.atomicobject.com/2014/03/25/c-single- member-stru...](http://spin.atomicobject.com/2014/03/25/c-single-member- structs/)

<comment><USER26> I came across this a few weeks ago, I think the first example is to do with arrays being second class.

On the other hand, if you give data to a C-programmer, they can locate its position in RAM. Give an assembly-programmer a simple data-type, they can point to a specific register(s) in the processor.

</comment></comment><comment><USER27> The general principal makes a ton of sense: let each line of your code express as much of your intent as possible. That way, when you have a _huge_ codebase, there are all these useful little "hooks" throughout it that will be useful when you need to refactor.

Your codebase will "say" more, and therefore your tools will "know" more, and therefore your tools can _do_ more for you.

<comment><USER27> Oh, but one more thing. It's very nice if the abstractions you use to do this are resolved down to nothing at runtime. So there's no penalty at runtime for the precision you added to the code. Let the compiler do the hard work so that you can say "Position", but at runtime, the code is as if you had written "Float".

</comment></comment><comment><USER28> F# allows you to do these 'small types' in a few different ways, including unit annotations... [http://fsharpforfunandprofit.com/posts/units-of- measure/](http://fsharpforfunandprofit.com/posts/units-of-measure/)

</comment><comment><USER29> I've seen this paradigm called "Tiny Types" before: [http://darrenhobbs.com/2007/04/11/tiny- types/](http://darrenhobbs.com/2007/04/11/tiny-types/)

<comment><USER21> I'm actually surprised that people learn about this only now... It is quite standard (and very common) thing to do in Ada. But then we can "subtype Strength is Natural range Natural'First .. 32;" since 80s (numeric type with all operators defined with permitted range of values from 0 to 32; range checks are performed at runtime by compiler - but most of them are optimized out anyway so penalty for them is in single digit percents of performance). Or if you prefer example from that site: "type First_Name is new String;"

</comment></comment><comment><USER30> While I agree with the idea of the article, what's the logic for not using "small types" for all parameters? Or, to put it another way, how do you decide a given method should have "small types" used for parameters?

Also, although it makes the code much more verbose, named parameters (as used in, for example, Objective-C) fix any eventual bug with refactoring methods' signatures, right?

<comment><USER24> > Or, to put it another way, how do you decide a given method should have > "small types" used for parameters?

I think a good rule of thumb is to ask yourself what the "dimension" or "unit" the parameter has. (See also: Dimensional Analysis.) You never want to pass 4.33f radians into a function expecting 4.33f newtons!

A few more examples:

Distance in meters, Distance in feet, Speed in m/s, speed in yards/minute, Acceleration in m/s^2, Acceleration in cm/s^2, Mass in grams, Weight in pounds, Force in newtons, Force in dynes, Temperature in Celsius, Temperature in Fahrenheit, Angles in radians, Angles in degrees....

"But I don't do physics programming!", you say? Well, there's plenty more:

Time in seconds, Time in milliseconds, Distance in pixels, Distance in inches, Numeric ID of a Foo, Numeric ID of a Bar, Bytes in UTF8, Bytes in ASCII, US currency in dollars, US currency in cents, Euros, interest rate (yearly), interest rate (monthly)...

And that's not even getting into industry-specific dimensions that might exist.

<comment><USER31> > Distance in meters, Distance in feet

That brings up an interesting issue -- is the "right way" to do that to have different types for these, or one type for distance with different factory function/methods for different units. E.g.: should "meters" and "feet" be different types, or should the "measurement" module have both a "meters" and "feet" method that return the same ("distance") type.

It seems to me the latter is more conceptually clean.

OTOH, math might be easier to express with the former (particularly in a language that allows you to define implicit type conversions, so that if you pass an "inch" value to a function expecting a "cm" parameter, it gets automatically converted to the appropriate "cm" value.)

<comment><USER24> Well, there are really three different kinds of information involved. For example, the variable "target_resist" might have: Computational type (float), Dimension (resistance), and Unit (milliohms).

Most built-in type-systems (sensibly!) only try to tackle the broadly- applicable computational-type, since the rest is context-specific.

However, in a contractual sense, all of those are important, if _any_ are not as expected, you'll get bugs.

</comment></comment></comment></comment><comment><USER32> According to Curry-Howard correspondence, types are conclusions and programs are proofs of the conclusion. Any program is corresponded to a deduction procedure, such as a Hilbert-style proof or natural deduction proof.

</comment><comment><USER33> some of the best pieces in type systems (and model theory too!) were from benjamin pierce and his book on type-systems.</comment>


Gmail's got a beautiful new look and you can try it now - <AUTHOR> http://thenextweb.com/google/2011/07/01/gmails-got-a-brand-new-look-and-you-can-try-it-now/ <comment><USER2> The new Gmail Preview(dense) Theme is just too light for my eyes. On my 27" screens I have to squint to see which mails are read vs unread.

<comment><USER3> Something is also off with the typography; the line height (leading) makes it very difficult to scan your messages for some reason.

<comment><USER2> The contrast between the grey and white in such a small space makes it so the eyes can immediate tell the difference between the two.

</comment></comment></comment><comment><USER4> If by beautiful you mean terrible, then yes. :)</comment>


Verification of Neural Networks via Linear Programming - <AUTHOR> https://github.com/dfava/readingclub/wiki/Verification-of-Neural-Networks-via-Linear-Programming <comment><USER2> Couldn't this be done at scale to create more and more samples to make the system more robust to noise?

<comment><AUTHOR> You are right. We can use it to create more samples and feed them back to the network. I am interested in analyzing whether this feedback loop terminates.</comment></comment>


How John Perry Barlow gained enlightenment and lost his mind on acid - <AUTHOR> http://www.synergeticpress.com/JPBForward.pdf <comment><USER2> There's so much more to our world than meets the eye. It's a shame we allow those in authoritative positions to tell us how we're allowed to live our lives and how we're allowed to explore the universe, both inner and outer. We are all born into the world as naive, ignorant and clueless as all those before us, and NONE of us has the inherent right or wisdom to tell the other what to do. We should each have real free will...it's unfortunate that no such thing actually exists.

<comment><USER3> Sorry but you are not exploring anything. You are just experiencing hallucinations, paranoias and what have you due to the drugs changing the chemical composition of your brain. That's it, nothing more.

There may be more to the world that meets the eye. You may be right about that. I personally believe in God, so I do believe there is more to the world that meets the eye. But the implied message of your post, that we can reach that world by taking drugs makes nosense. Why would drugs make you capable of perceiving something that you are unable to perceive otherwise. You still have the same physical brain and sensing organs. Drugs are just a physical thing acting chemically on the same physical brain and the same physical eyes and ears. Why would drugs make your physical eyes and ears perceive the metaphisical all of sudden? It makes no sense. I mean I would understand if drugs made your hearing or eyesight better, or if they made you see things in wavelengths not visible when you are not on drugs. But to make you see something that cannot be detected on any wavelength even with the best instruments? Why? It makes no sense.

And if you believe in God, as I do, why in the world would God choose to reveal himself to only those that take illegal, dangerous and usually expensive drugs? Does God only like the idle rich? Nope that makes no sense either.

So, sorry again, but you are living a dangerous fantasy. What you are exploring with hallucinogens are just hallucinations somehow created in the pathways of your brain as a result of the chemical disruptions caused by the drugs. Nothing more. Nothing that actually exists in any way. And as the drugs damage your brain, your hallucinations will get darker and more paranoid and if you do not stop you may go mad.

About people telling other people what to do, I do not know about that. If you see a thousand people lose their minds doing LSD and become sad wrecks that can barely do anything with their lives between the acid flashbacks, wouldn't you want to stop number 1001?

<comment><USER4> Hallucinations here are not "really" hallucinations in a sense you rarely actually see things that are not there (for that, google deliriants). It's more like, everyone is acting out a certain role or a set of role in lives, and have been doing it for so long that they have forgotten they are just acting.

LSD and such smash the fourth wall of human theater, allowing actors to realize they are actors. Once they have realized this they have several options:

1) Continue playing the role they were playing after coming down, if they like it.

2) Change the role -- hence why a lot of people change their lives after dropping psychedelics.

3) Leave the play for a while -- this is possibly why some people commit suicide after psychedelics.

It's like, imagine you're coding.. and you're just so in flow that you forget you can do anything but code: you don't go to the bathroom, forget about food, in the zone. Now somebody snaps the chair out of you, and you realize you can do more things than just code. Now imagine you've been coding for 10-20 years straight.

Well, acid is like that guy who snaps the chair out of you.

Society considers it dangerous because it has spend so much time making you exactly what it wants, training you, brainwashing you with random shit that it doesn't want you to actually gain control of who you want to be.

You wouldn't want a dog you trained for years to bring sticks and shit on the toilet to realize all of a sudden it doesn't have to follow your commands all the time.

I suppose, and I just realized this now, that psychedelics are a way of chemically disabling social conditioning for a while. Perhaps marijuana is associated with lack of motivation not because it makes you unable to do things, but because it makes you realize some things are not worth giving a fuck about.

</comment></comment></comment><comment><USER5> _One can make a non-ludicrous case that the most important event in the cultural history of America since the 18'60s was the introduction of L S D. Before acid hit American culture, even the rebels believed, as Thoreau, Emerson and Whitman implicitly did, in something like God given authority. Authority, all agreed, derived from a system wherein God or Dad ( or, more often, both ) was on top and you were on the bottom._

Does this passage strike anyone else as over stating LSD's impact?

I wasn't there, hell my parents weren't out of their teens in the 60s but from my perspective it doesn't seem to me like a considerable portion of the population took LSD. Granted the cultural impact of the drug spread further than just the people who imbued it but the 60s had so many other factors at work.

I think the social revolution of the 60s allowed LSD and the culture it created to flourish and not the other way round as seems to be being argued here.

<comment><AUTHOR> "Does this passage strike anyone else as over stating LSD's impact?"

It's necessarily true, but it's not a stretch either. LSD was arguably the key driver behind the creation of the Internet, silicon valley, the environmental movement, the civil rights movement, etc. It was also the reason why psychiatry adopted the position that mental illnesses were caused by chemical imbalances in the brain.

"I think the social revolution of the 60s allowed LSD and the culture it created to flourish and not the other way round as seems to be being argued here."

So I think the key to understanding the 60s, the hippies, and LSD is the atomic bomb. Nick Sand and many of the other high level manufacturers and distributors of LSD were the children of high level figures in the manhattan project. Nick Sand's dad was one of the key chemists that developed the bomb. And supposedly the dad of one of the other key acid manufacturers was the co- pilot of the Enola Gray, one of the planes that dropped the atomic bomb on Japan.

Most of the energy (and bullshit) behind the counterculture in general was a reaction against atomic energy and the culture of the 50s. Clearly the angst would have been there without LSD, but I think that acid became sort of the banner that everyone rallied behind and that united everyone. This is especially true since it's such a prosocial drug; one of its main effects is that it basically makes you care more about other people. (And engage with and collaborate with them, as the case may be.)

Of course the reason it became such a part of the culture is that it fundamentally changed a lot of people, especially a lot of people who later went on to contribute enormous amounts to society, on a deeply personal level. You can already read a lot about this and you'll be able to read increasingly more about as that generation gets older and starts retiring and writing memoirs. In general the ways that any drug impacts culture are really subtle, but definitely there. IIRC Terence McKenna talks a bunch about it in this podcast: <http://www.matrixmasters.net/salon/?p=153>

For what it's worth, I also have a collection of a couple dozen or so links to people talking about psychedelics have changed their lives here:

<http://bit.ly/qkvs3q>

<comment><USER6> Key word in your story: 'arguably', 'supposedly', 'I think'. You're telling a story, that may well be completely fictional. Not a shred of evidence for the key assertions is offered.

I have found this to be typical of stories touting the awesomeness of LSD. It's inferring causation from the most likely (in the absence of any evidence, coincidence is most likely) incidental fact that LSD also happened around then.

<comment><AUTHOR> "Key word in your story: 'arguably', 'supposedly', 'I think'. You're telling a story, that may well be completely fictional. Not a shred of evidence for the key assertions is offered."

The bit about the atomic bomb actually comes from this about 32 minutes in: <http://www.matrixmasters.net/salon/?p=75>

My understanding is that the relationship between LSD and the environmental movement and civil rights movement is discussed in Jay Stevens book Storming Heaven:

[http://psypressuk.com/2010/06/09/literary- review-%E2%80%98st...](http://psypressuk.com/2010/06/09/literary- review-%E2%80%98storming-heaven%E2%80%99-by-jay-stevens/)

And possibly also in the book Acid Dreams. (Haven't read either, so I'm not sure.)

Anyway the link is obviously somewhat tenuous at this point, though as I said I do suspect we'll learn more in the future.

</comment></comment></comment></comment><comment><USER7> This is only a 11-page (draft version?) forward to the book titled Birth of a Psychedelic Culture [1].

1\. [http://www.amazon.com/Birth-Psychedelic-Culture- Conversation...](http://www.amazon.com/Birth-Psychedelic-Culture- Conversations-Experiments/dp/0907791387)

</comment><comment><USER8> a) I didn't know this guy was both involved with the Dead AND the EFF! Fascinating.

b) I didn't know that such interesting business happened in Millbrook. Millbrook! Man that is like twenty minutes away.

<comment><USER9> Bruce Sterling's "The Hacker Crackdown" is a really interesting book that goes into detail about his involvement with the EFF and how it came about in the first place. It's a great read and available online at <http://www.mit.edu/hacker/hacker.html>

</comment></comment><comment><USER10> I really feel like programmers could be pushing this individualist freedom/collective, memetic will forward in such a more interesting way than is happening now. I feel like we can look at the world, think about how it could be better, or what kind of system we could use to manifest our collective will, think about how we could interact in order to bring that about, and code it. I see way too many groupon clones and not enough ontological/metaphysical systems/games on the web. Maybe once thre is an established framework of federated networks that don't create massive cost when people visit it there will be more fascinating content/systems/structures on the net.

There is so much possibility for using the net as a way to dissect the structures we surrender ourselves to live within and then to use their necessary atoms to create new, more beautiful systems. We just need to get money out of the equation (I think).

The net is an amazing tool for deconstructing power systems, I would love to see (and am working towards) a net that creates the systems for building a new, flexible, federated set of linguistic/metaphysical system, or at least a marketplace where numerous possible ideas can compete and be spun as memes into the ideasphere.

</comment><comment><USER11> The comments here are mostly supportive, but did you read as far as where he admitted to desiring suicide/terrorism and wound up on thorazine? Maybe he was being figurative, not really sure, but that throws into question any of the positive effects of such habits. Moreso, it throws into question the self- analysis required to judge the effects of them. "Yeah, I wanted to kill myself and others, but it's cool bro."

</comment><comment><USER12> Well-written.

I'm not sure if I would like the book, but I know I'd read a book Barlow wrote. :-)</comment>


Google OAuth Is Failing with 500 Error Code - <AUTHOR> https://status.cloud.google.com/incident/developers-console/19008 <comment><USER2> Disclosure: Former Googler

I didn't think I would laugh that hard coming in here and reading these comments, but here we are. I can virtually guarantee that the following things are not the root of the problem:

* Lack of compute/networking/storage

* Incompetence of employees

* Back to school traffic spikes

* Just about anything else here

My $0.02. these are almost always due to bad roll outs, usually configuration changes. But I've been wrong countless times before!

<comment><USER3> "these are almost always due to bad roll outs, usually configuration changes." Some would consider that falling under #2. (Not me though)

<comment><USER4> Given that "87.623% of all outages are caused by changes" is generally accepted wisdom of running large scale services, I would tend to disagree with those people. Incompetence: no. Opportunity for improvement: yes.

Edit: made-up number has large margin of error

</comment></comment></comment><comment><USER5> Google often has a outage or two around this time of the year when all the US schools come back and millions of students log in at the same time.

<comment><USER6> Sounds pretty anecdotal. Can you back up this claim?

<comment><USER5> We run a app making millions of API calls to Google every day, so they show up in our monitoring, even if they don't make the status page. It's a pattern I've noticed from getting paged at 3am (NZ time) this time of year going back the last 4 years, I don't have hard data at hand for it though. It's not the same thing every year either - this time OAuth got hit hard, previously we've mostly seen slowdowns and higher error rates on the Drive APIs.

</comment></comment></comment><comment><USER7> Just as I was implementing and testing high-priority Google SSO changes at work... it goes down :-)

<comment><USER8> You broke Google. I hope you feel good about yourself.

<comment><USER9> Better now when you can test your error handling then at 3:30am when your high priority service goes down :)

</comment></comment></comment><comment><USER10> It sure feels like there have been quite a few big outages this summer (Google in particular). I wonder if they are getting sloppy or this is just bad luck?

<comment><USER11> My gut reaction is that many companies make the majority of their income/deals during the fall/winter/spring (think back to school shopping, Christmas, re- signing contracts for the next year, tax season, etc.) Thus, many companies try to make major infrastructure changes during the summer, when there will be a slightly smaller negative impact on the business's bottom line in case something does go wrong.

<comment><USER12> My take is that many people are out on vacation during the summer months and sometimes things break (or break harder than usual) when certain knowledgeable people aren't available.

<comment><USER13> Also, summer interns. A friend who worked at FB said outages there go up markedly when interns start pushing to prod.

<comment><USER14> > interns start pushing to prod

hey everybody, I spotted the problem! I'll keep an eye on my mailbox for the giant consulting fee that I assume is enroute.

</comment></comment></comment></comment></comment><comment><USER15> I can't login to my business gmail account using Google Chrome, but I can login successfully using Internet Explorer and Firefox. Duh. :-)

<comment><USER16> Chrome in incognito mode seems to work as well.

</comment></comment><comment><USER17> I like the majority of GCP products I work with, but judging by the amount of issues in the past year, GCP feels amateurish compared to AWS, which we continue to user in order to host most mission critical operations.

I cant access any of my Airflow clusters atm. :/

<comment><USER17> To whoever downvoted me. Censoring the fact customers have issues, doesn't make the product better.

</comment></comment><comment><USER18> Login from incognito works for me so I assumed one of my extensions was causing an issue somehow and started disabling them. I'm sorry I doubted you, extensions.

</comment><comment><USER19> Link to incident on Google Cloud status:

[https://status.cloud.google.com/incident/developers- console/...](https://status.cloud.google.com/incident/developers- console/19008)

</comment><comment><USER20> My users are reporting that it's back up, or at least intermittently working now.

</comment><comment><USER21> When you use Google OAuth, you give Google the power to turn you off. Think about it.

<comment><USER22> Unless you own the complete path from server to user (and no one does) there is always someone who can "turn you off".

<comment><USER21> Remember when you could route around failures? Have connections to two different backbone providers? Does anyone still do that?

</comment></comment></comment><comment><USER23> Googler not on Cloud team, but using Google Cloud Platform for an internal project. I've encountered my share of bugs and other flaws while using this platform. I think all these platforms are just too damn complex and brittle. It's easy for even a smart SWE or SRE to overlook one little thing that will bring down a bigger part of system.

</comment><comment><USER24> Is this just my perception or is GCP really down a lot this year?

</comment><comment><USER25> *Again

<comment><USER25> Eh, I was stating a fact, don't understand why it got down voted.</comment></comment>


Enhanced IP: IPv4 on steroids, allowing for 2^56 addresses - <AUTHOR> http://online.qmags.com/CMG0214/Default.aspx?pg=65

<comment><USER2> Yes IPv4 on steroids. Providing artificial enhancement by placing the burden on edge routers. So if you've got to replace the edge routers you might as well replace them with IPv6 compatible kit and be done with it.

Oh look this EnIP breaks IPSec because its fudging the source and destination addresses.

This should be a research project and not billed as a solution.

</comment><comment><USER3> Why, oh why? I can't think of one good reason the effort put into this shouldn't have gone instead into raising IPv6 adoption.</comment>


How to think about password managers - <AUTHOR> https://klue.github.io/blog/2017/03/password_manager/ <comment><USER2> Wow what an insightful article. I will definitely keep an eye out for more of your blog posts!</comment>


You are the product - <AUTHOR> https://www.lrb.co.uk/v39/n16/john-lanchester/you-are-the-product <comment><AUTHOR> > The reason Thiel latched onto Facebook with such alacrity was that he saw in > it for the first time a business that was Girardian to its core: built on > people's deep need to copy. 'Facebook first spread by word of mouth, and > it's about word of mouth, so it's doubly mimetic,' Thiel said. 'Social media > proved to be more important than it looked, because it's about our natures.' > We are keen to be seen as we want to be seen, and Facebook is the most > popular tool humanity has ever had with which to do that.</comment>


A free-pass for skilled migrants to live and work in selected countries - <AUTHOR> http://hackmove.com/ <comment><USER2> I'm an immigrant myself and I'm not sure how exactly software is going to help with this process. It's true that there is a lot of paperwork involved and that could potentially be easier using more integrated software (that keeps your information and plugs it through all systems as opposed to you writing your info 10+ times). However, the main problem with immigration is not the paperwork but the bureaucratic regulations and emotional aspects.

</comment><comment><USER3> Best-case, this is misleading advertising. Worst case, it's some kind of scam.

They show a picture of Sydney Opera House. This implies they will help you to get a visa to Australia. As someone who has an Australian work visa, this is most likely false. First, you need to be sponsored by a company. Second, the process is rather involved. The company that sponsored me hired an attorney to handle it. In the USA, I hear it's a very similar process.

</comment><comment><USER4> When the old valley idea of putting up a launchrock vapor page runs headlong into the reality of international immigration law...

</comment><comment><USER5> As an immigrant to Canada I'm quite familiar with the process. The government department responsible is overloaded and takes months to progress applications. Often having to contact an applicant for more info moves you back in the queue. Regulations change rarely. In general the whole system feels sluggish and resistant to change. The idea that a software company could convince every nation to fit a foreign globally recognized automated back door into their processes seems very ambitious to say the least.

</comment><comment><AUTHOR> Hi guys, author here. The initial interest is being used to start conversations with immigration departments from small states around the world. Australia, Canada, New Zealand and the Netherlands already use a points-based system to grant visas for skilled workers. The idea is to create a standard international certification that would allow skilled migrants to move freely around countries that accept it, just like they do with TOEFL for the English language requirement.

<comment><USER6> I'd recommend you make your intentions a lot clearer. A simple front page with no explanation of what to expect combined with a single link to a cryptic manifesto page [1] isn't what I'd engage with.

[1]: [http://blog.hackmove.com/manifesto](http://blog.hackmove.com/manifesto)

</comment></comment><comment><USER7> Sounds like a good & scammy way to associate email addresses with LinkedIn profiles.

</comment><comment><USER8> Awesome initiative, however I would suggest to avoid presenting this as an early application to something.

PS: Specially for the US, as you are presenting SF as a potential destination, I don't think that will make USCIS happy.

</comment><comment><USER9> be reminded that for the US at least, if you show any official attempt at permanent immigration you could get banned from any temporary entry for fear of overstaying.

</comment><comment><USER10> What the heck? Is this a scam?

Sorry, but this looks like a splash sign up page for services for immigration attorneys.

The immigration process, even for "special" people, is not that simple.

We really need some details on who is "special" and what "selected" countries are available.

A free pass to hack PERL in the Comoros Islands ain't that great a thing.

</comment><comment><USER11> This is almost as vague as Mars One program. How specifically is it going to work for which specific countries?

</comment><comment><USER12> So you will get me a working visa in the US? I doubt it.

</comment><comment><USER13> Hey,

skilled immigrant here. I live in Stockholm.

I think that US immigration system is broken. They have to fix h1b a.k.a slavery visa thingy. That is the primary reason why I am not moving to US. I am not sure how you guys provide that free-pass.

<comment><USER14> Care to expand? I know absolutely nothing about the subject, but I've heard the same before.

<comment><USER15> Your legality is tied to your job. So if you want to stay in the country, you have to basically be a "slave" to your workplace and meet their demands, etc.

<comment><USER16> Not completely true. If you get fired, you have a month to find a different job. Of course, the issue is with finding a different job that is willing to jump through the hoops involved in letting immigration know that you are now working with them, but there are plenty. Problem is, of course, that knowing that you are dependent on them, some companies will give you worse conditions than a resident/citizen with the same skills would have, especially as far as the salary is concerned.

<comment><USER17> >Not completely true. If you get fired, you have a month to find a different job.

Not true. You're accumulating illegal stay from the moment you're fired.

</comment></comment></comment></comment></comment><comment><USER18> Relevant information: The person behind this (and the submitter) runs wannamigrate.com

</comment><comment><USER19> What if I'm pretty skilled but don't have a LinkedIn?</comment>


Ask HN: Best visualization course in Python? - <AUTHOR> <comment><USER2> Might be a little biased, but I did find this two-part series helpful. [https://www.dataquest.io/course/exploratory-data- visualizati...](https://www.dataquest.io/course/exploratory-data- visualization)

<comment><AUTHOR> You work at DataQuest? Thanks for sharing this!

<comment><USER2> yup! happy to.

</comment></comment></comment><comment><USER3> DataCamp has many useful courses, including an Introduction to Data Visualization with Python:

[https://www.datacamp.com/courses/introduction-to-data- visual...](https://www.datacamp.com/courses/introduction-to-data- visualization-with-python)

<comment><AUTHOR> Have you tried it? I am trying to go beyond an introductory course.

<comment><USER3> Yes, I have completed around ten DataCamp courses. They do go beyond the basics, as can be seen in their skills tracks:

[https://www.datacamp.com/tracks/data-scientist-with- python](https://www.datacamp.com/tracks/data-scientist-with-python)</comment></comment></comment>


Flutter Development on a Pixelbook - <AUTHOR> https://medium.com/@timsneath/flutter-development-on-a-pixelbook-dde984a3fc1e <comment><USER2> I'm really enjoying the PixelBook now as a replacement for my Macbook Pro. It has a great keyboard, everything web works super fast, and it now can run a proper terminal and other Linux utilities.

I have a Ubuntu dev server that I've added docker and lxd too. I run services via docker, and I make dev environments via lxd. That way I can 'mosh ${project}` and I'll end up the perfect environment for that project. The PixelBook then is just a terminal to that and the web, which it excels in being.</comment>