Idea: An Android Tablet "Shell" - <AUTHOR> http://jcs.org/notaweblog/2010/10/31/idea_an_android_tablet_shell/

<comment><USER2> Unfortunately, phone+shell will not be significantly cheaper than phone+tablet.

Taking out the CPU from the shell and replacing it with a connector sounds like a good idea, but what if the connector costs more than the CPU? The CPU is just one small portion of a single chip in a phone, and high density high speed connectors that can also carry significant power are really quite expensive. You do save some money by not needing as much flash & RAM, but the cost savings are far less than you'd expect.

What you're really doing is making your phone more expensive: adding that expensive connector and the need to drive an external screen. Making everybody's phone $20 more expensive is only worthwhile if a significant fraction of the your buyers will also buy the "shell".

<comment><USER3> Phone+shell would always be in sync. Two devices means constantly looking for apps, books, media, etc. and realizing, "Crap, that's on the _other_ device. Gotta download it/sync it." For the same price, I'd rather have a phone with a tablet "dock" than have two different devices. Sounds like a great product to me!

<comment><USER4> Why should we require a clumsy physical connection to keep individual devices in sync when all of them have internet connectivity? I have an Android phone and I never copy data over a cable, everything is synchronized wirelessly. (Large content like videocasts only over WiFi.)

I claim that every mobile device should be completely independent and it's surprising to me that iPhones are still tied so closely to iTunes.

<comment><USER3> I don't mean the shell will sync with the phone -- I mean the shell will be an alternative display/control peripheral for the phone. One computer, two ways of using it.

Trying to keep two computers in sync is a pain in the ass whether there are wires or not.

<comment><USER5> > Trying to keep two computers in sync is a pain in the ass whether there are > wires or not.

True, _but you need to do it anyway_ regardless of this particular instance. I want my phone and my ipod and my gmail account and my GPS device to have the same address book without requiring supervision.

</comment></comment></comment></comment></comment><comment><USER6> _The tablet would essentially be a big screen with no guts._

This is a pretty interesting idea because it speaks to the tight integration within a Android or iOS system. For example:

* The shell tablet would also need a way to pipe multi-touch input back into the core system/phone.

* The core system/phone would need to support an entirely different screen size/resolution.

</comment><comment><USER7> You can connect some Nokia devices on any screen with HDMI with full UI replication on both devices. There is also a quite interesting demo using the camera to track gestures and control the TV at <http://www.youtube.com/watch?v=fA4uBPn7Czw>

<comment><USER8> Indeed. Many high-end Android phones have HDMI too, but the interface is not replicated on big screen AFAIK.

</comment></comment><comment><USER9> How about just a regular docking station for my phone?

We already have phones with 1Ghz processors, and web apps that are reducing the need for big local resources. How soon before I can just have one single device and nothing to sync?

</comment><comment><USER10> I keep coming up with this idea once every month or so, and I always get stuck on the problem of compatibility. What would be great, is if there did not need to be a physical connection between the tablet and phone. I'm thinking of a protocol (using Bluetooth 3.0?) that essentially lets the tablet ssh into your phone and forwards keystrokes/audio/video across. The protocol, or course, would be open source allowing your tablet to connect to any brand of {phone,computer,home automation system}.

</comment><comment><USER11> What would I do with the screen when my I change my phone? I'd have to take my phone out of the case. Anyone who has a G1 knows this is a pain the ass.

</comment><comment><USER12> These sorts of things are a bad idea for a number of reasons, but one that's often forgotten: touch/tablet interfaces generally aren't great for multitasking. And that's not an OS-level problem, it's just a weakness of a platform that doesn't have a windowing GUI. I often use my iPad and my phone simultaneously.

<comment><USER13> I can find you hundreds of people in short order who multitask on their Windows PCs entirely in full screen. There's nothing about a tablet that precludes multitasking. I bet lots of people multitask on their Android or iOS 4 devices.

<comment><USER12> It's certainly not impossible, and I do it all the time, too. (I'm running 4.2 on my iPad.)

But, still, I often find using the two together to be advantageous and wouldn't want to not have that option.

</comment></comment></comment><comment><USER14> similar existing product: redfly, a netbook interface for your windows mobile or blackberry phone <http://www.celiocorp.com/></comment>


Celebrating Betrand Serlet and Craig Federighi - <AUTHOR> http://blog.wilshipley.com/2011/03/celebrating-betrand-serlet-and-craig.html

<comment><USER2> Like Wil I know both since the NeXT/NeXTStep days and what his blog post describe is quite accurate for Bertrand and Craig. He is slightly incorrect on the reasons/timing of Craig leaving Apple since WebObjects Java was just at a really early stage at the time he left and the offer from Ariba was a good one.

Loosing Bertrand in the Mac OS world is quite a news by itself but at the same time getting Craig is quite a news too.</comment>


China is installing surveillance cameras outside people's front doors - <AUTHOR> https://www.cnn.com/2020/04/27/asia/cctv-cameras-china-hnk-intl/index.html <comment><USER2> And outside China, millions of people are willingly installing Ring doorbells and others that effectively do the same thing.

<comment><AUTHOR> Good point</comment></comment>


Appoint Susan Crawford as FCC Chairman - <AUTHOR> https://petitions.whitehouse.gov/petition/appoint-susan-crawford-fcc-chairman/73mtqt0q

<comment><USER2> About this petition:

America is ranked #16 in the world for broadband penetration, speed and price. Where high-speed service is available, it is often expensive and unreliable — and frequently there is only one monopoly service provider.

The United States needs new leadership at the Federal Communications Commission to help establish a competitive regulatory climate and to encourage new entrants into the market. Susan Crawford has spent her career studying the global telecommunications industry and has a keen sense of the history that brought us to this point.

Ms. Crawford would facilitate changes at the Federal level which could help America become the leader in global telecommunications innovation again. President Obama, please appoint her as FCC Chairman in 2013.

About Susan Crawford: <http://ti.me/WWIMhU>

</comment><comment><USER3> the recent Bill Moyers interview of Susan Crawford(for those who didn't catch it yet): [http://billmoyers.com/segment/susan-crawford-on-why-u-s- inte...](http://billmoyers.com/segment/susan-crawford-on-why-u-s-internet- access-is-slow-costly-and-unfair/)

<comment><USER4> Hadn't realized before, they also offer an audio podcast of the show:

<http://billmoyers.com/podcasts/>

And there is a full transcript, although I didn't enable JS to see/read it.</comment></comment>


Ask HN: Who do you follow on Twitter? - <AUTHOR> I just got Twitter and thought this community would have a great selection of people who make great things or say great things. <comment><USER2> I don't.</comment>


Ask YC: What Non Web Application Startups have been picked? - <AUTHOR>

I've seen a lot of YC Web App startups, but I can't recall one that wasn't (given I don't keep close track). Can anyone tell me one? Non IT? or even just systems programming. I'm referring to the entire history of YC, not just this round. <comment><USER2> * loopt

* xobni

* zecter

* heroku

* wundrbar

* <http://www.picwing.com/frame>

</comment><comment><USER3> Picwing does some hardware:

<http://www.picwing.com/frame>

<http://news.ycombinator.com/item?id=277258>

</comment><comment><USER4> Just scrolling through the wikipedia page, it looks like there are a number of them. Xobni, for instance.

</comment><comment><USER5> Just hold on for a few few days? No one has been picked yet. Patience :)

<comment><AUTHOR> I'm talking all time, not just this time.

</comment></comment><comment><USER6> Propable.

<comment><AUTHOR> <http://www.propable.com/> < these guys? (who have no index page at the moment, epic fail on the web server)</comment></comment>


How to use math input in GIMP - <AUTHOR> http://libregraphicsworld.org/blog/entry/how-to-use-math-input-in-gimp <comment><USER2> After some trial and error, I was able to make the following bash script, which will take the X clipboard selection (containing math operations you want to perform), run it through bc (to do the math), replace the X clipboard with the result, and paste it, overwriting the previous result:

        output=$(echo "$(xclip -o)" | bc) # take the X clipboard and run it through bc
        sleep 0.2s # wait before continuing or else this won't work
        xdotool key BackSpace # clear the selection
        printf $output | xclip -i # write the output to the X clipboard
        xdotool click 2 # paste the result by clicking the middle button

I set this as Super-E on my computer and probably will use it every once in a while for programs which don't implement math input.

In other words, with this you can select text containing mathematical operations, press a key combination, and the selected text will be replaced by the result of the math.

Improvements welcome. There probably are better ways to do this.

<comment><USER2> One disadvantage of this approach is that the mouse needs to be over the text area that's being pasted in to.

</comment></comment><comment><USER3> > GIMP even respects the order of operations, so if you go for something like > 600 - 2 * 5, the answer will be 590.

I mean, _what else_ could it do? That this needs to be said makes me strangely sad :(

<comment><USER4> Many older languages evaluated expressions left to right. For assemblers this saves you from managing intermediate values and you can spit out ALU instructions in order without need for register assignment magic.

<comment><USER5> VisiCalc [1], the first spreadsheet program and the "killer app" for business on the Apple II, also used left-to-right evaluation. Dan Bricklin said he needed people to be able to quickly enter equations as they did on a cheap (non-RPN) calculator [2, at around 35:10].

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

[2] [https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=...](https://scs.hosted.panopto.com/Panopto/Pages/Viewer.aspx?id=d129250d-7c28-45f5-874b-a9fa01542afb)

</comment></comment></comment><comment><USER6> I believe there is a lot of software that can do math on input. Holding and moving up/down to increase or decrease is also supported in a lot of software.

<comment><USER7> Most spinboxes also let you use the scrollwheel on them.

<comment><USER8> That seems to work for all GTK+ spinboxes. I wish math input was built into GTK+ and worked for them all too.

</comment></comment></comment><comment><USER9> The first program I used with math on input was alphacam, it was mind blowing to me when I discovered it. Any time I use a program with out it now it feels lacking. The Godot editor has this feature too, just to drop another great piece of open source software with it.

</comment><comment><USER10> Pretty handy, particularly ratios.

I was hoping I would learn that you could do parametric formulas to define curves, and maybe even Taylor series for curves too hard to define in closed form. Someday.

</comment><comment><USER11> If you want a feature like this in elixir, I've made a library for that: [https://github.com/narrowtux/abacus](https://github.com/narrowtux/abacus)

</comment><comment><USER12> Would love it if more software and websites did this. Banking, online stores, etc. could benefit a lot. Even some CAD software doesn't have this functionality.

In YNAB, it's essential, so I'm glad they have it.

</comment><comment><USER13> Several programs support this, including Inkscape.

</comment><comment><USER14> That's actually a neat idea.</comment>


Nazis in our classes: The 50-year-old lesson about fascism still terrifying us - <AUTHOR> https://medium.com/lucid-nightmare/nazis-in-our-classes-the-50-year-old-lesson-about-fascism-still-terrifying-us-today-839c3222dc23 <comment><USER2> Here is the Wikipedia article on this experiment: [https://en.wikipedia.org/wiki/The_Third_Wave_(experiment)](https://en.wikipedia.org/wiki/The_Third_Wave_\(experiment\))

The Wikipedia article states:

> "The Pride of Lakewood", a 2010 episode of children's animated series > Arthur, was loosely based on the Third Wave experiment. In it, students who > form a community pride group become fascistic.

I watched Arthur when I was in elementary school, and when I searched up this episode, I think actually remember it! Wow, back then, I totally missed the allegorical message... Possibly because I hadn't learned about fascism yet.</comment>


The Meteoric Rise of DigitalOcean - <AUTHOR> http://news.netcraft.com/archives/2013/06/13/the-meteoric-rise-of-digitalocean.html?lucy=true <comment><USER2> To people wondering if this is a temporary thing, or what Digital Ocean's competitive advantage is (since someone else can come along with the same price point):

It's that the web interface, and process for starting a "droplet", is dead- simple and super-elegant, their support docs are comprehensive and easy to use, and they even do things like let you manage your own DNS records. And it all just works.

Digital Ocean is 100x easier and quicker to use than AWS, without exaggeration. It's easy to start a hosting provider -- it's _really hard_ to make one that is also really high quality, intuitive and easy to use, and then cheap on top of it.

I've used Digital Ocean for a couple of years for small personal things, I'm actually currently in the process of moving a bigger site from AWS to Digital Ocean, at this point it's turning into a no-brainer.

<comment><USER3> I've been using DO for a few months. I recently set up an AWS instance to use as a proxy, as I wanted something cheap in East Asia temporarily, and AWS's Tokyo region fit the bill.

Holy _crap_ is AWS bizarre to set up. I got it done without too much trouble in the end, but man, the UI is just atrocious. It took way too long just to find the right place to go to get started with the process.

<comment><USER4> I felt the same way for a while, but eventually, while working on a large cloud-based project, I had an epiphany: _the GUI is basically the phpMyAdmin interface of AWS._

phpMyAdmin is great when you're first learning to work with the LAMP stack; it lets you fiddle with values, manually create databases, munge columns, etc.

But.

If there are multiple instances of your system running "in the wild" (even just within your own company), and their versions will ever have even the slightest chance of getting out-of-sync? You _really_ want the entire change- history of your modifications to the database checked into git. You want to be able to take any previous sorta-known database state, and move it toward the current well-known database state. To do that, you need programmatic migrations.

And as soon as your software ships a "db/migrate" folder, (non-readonly) phpMyAdmin access becomes anathema to proper configuration management.

AWS can be thought of as a big database that contains your EC2 instances and snapshots, your S3 buckets, etc. At scale, you only want to interact with this database programmatically.

So: if this was the correct hypothesis for why the GUI sucks, what would be an expected prediction? That the programmatic APIs for manipulating AWS would be great.

And they are! All the HTTP APIs for AWS--the ones you would use in any automated provisioning script--are simple, clear, and pain-free. They're definitely the "first-class" road to AWS, documented to heck, and it's clear that Amazon itself dogfoods them directly.

<comment><USER5> I would suspect AWS makes most of their money from clients that manage instances that are in the mid to high double digits and beyond. For these clients its likely that at some point automation has kicked in and the APIs get the job done much better versus having someone spend time clicking away in a browser.

<comment><USER6> Most of their revenue, probably.

But I think there are plenty of mid-sized comapnies with multiple AWS accounts, with many machines in each one where no one is quite sure what they do or if they can be switched off.

<comment><USER7> Sounds like they need to hire someone to take care of that then.

Disclaimer: Sysadmin/Devops

</comment></comment></comment></comment></comment></comment><comment><USER8> I currently use digitalocean for my blog, but I was recently pointed towards this article which concerns me greatly: [https://vpsexperience.wordpress.com/2014/01/05/digital- ocean...](https://vpsexperience.wordpress.com/2014/01/05/digital-ocean- threatened-to-shut-down-my-blog-if-i-didnt-remove-or-edit-a-blog-post/)

If I cannot have freedom of speech on my blog, I will have to find a new provider that respects my freedom.

<comment><USER9> That's a bit of a stretch, even for equivocation.

Did you read the article in question? [http://vpsexperience.wordpress.com/2014/01/05/googler- speaks...](http://vpsexperience.wordpress.com/2014/01/05/googler-speaks-out- on-manny-cardenas-and-second-class-citizens-at-the-plex/)

It took four comments, out of context, and made it into a slam. Bias of the rant aside, DO says that it was because of a TOS violation on privacy and defamation. It comes pretty close to outing where the person lives, what websites they run, and certainly makes plenty of assumptions about the four comments.

It reads like someone bitter lost an internet argument when they couldn't bait the employee into saying something incriminating, and they wanted revenge.

<comment><USER10> > It reads like someone bitter lost an internet argument when they couldn't > bait the employee into saying something incriminating, and they wanted > revenge.

Exactly this. This guy baited someone to say something about his employer, posted quotes out of context and with obvious bias. The guy seems like an asshole.

<comment><USER11> So what? The beauty of the internet is that it lets everyone make themselves look like an asshole if they want. If every service provider took down content from assholes we'd lose 3/4 of the internet.

<comment><USER12> But just think about how pleasant an internet that would be... _daydreaming_

</comment></comment></comment></comment></comment><comment><USER13> Seems no one here so far has mentioned Rackspace.

Let's start by saying that DO has fewer features for a complex deployment:

No load balancing,

no private subnets,

(IIRC) no IPv6 at the moment.

No "cloud files" or S3 equivalent,

the scaling isn't as automatic as RAX or AWS can provide.

DO can't host Windows (which still matters for many existing operations, don't fool yourself).

RAX gives more information and granularity on its VM levels.

Finally, support. RAX can do managed services, dedicated advisors, IT support and servers for sensitive data. DO has none of this.

\---

There are two things DO does that I appreciate (though neither concept is new):

* $5 hosting. RAX is a minimum of $16/mo now, for the same VM strength.

* Application deployments. The ability to one-click deploy Wordpress/Gitlab/etc. is pretty damned awesome.

DO is great for technically competent people who don't need a lot of infrastructure, or otherwise have a consistent level of server/bandwidth requirements for their servers.

<comment><USER14> Agreed, all of these features prevent me from using DO beyond weekend projects. But these features are all on their to-do list. They are tackling them with the most requested features first. BTW, they just added Private Networking in NY2 (maybe more by now).

<comment><USER15> It is in all of their new data centers (NY2, AMS2, Singapore 1).

</comment></comment></comment><comment><USER16> I tried them out a few months ago looking to move my infrastructure from AWS to DO. I was experiencing terrible IO performance on a fairly expensive instance. Submitted a support ticket about it. Their response was 'this is normal'. Killed all my droplets and canceled my account the next day.

To me they are running a pretty transparent pump and dump scheme. Promise a great service, sell it at a loss, get a ton of users, do a shit job of supporting it, take on investment money, cash out early, profit.

<comment><USER14> They were having SERIOUS issues a few months ago. I had been scaling up to around $600/month in droplets, and almost canceled and walked away. The IO was horrible, packet loss was massive and droplets were crashing all the time. Fortunately, they've gotten much better again and I haven't had a single issue in 3 months.

I think they got really popular suddenly and couldn't handle the explosive growth.

<comment><USER17> I created a droplet that I was going to use for the production site. It is currently sitting in a totally crashed state. I have no idea when it crashed, or why, I just know it happened some time in the past month.

I am now nervous about moving to them.

<comment><USER18> Any server you have running in any kind of environment where reliability is a factor should have some kind of monitoring system. Maybe DO should offer this feature like others do, but it's not out of the question to have another droplet running a heartbeat monitor. That'd be akin to them charging another $5/mo for the same service.

<comment><USER17> I would of course do that before I migrated. I did have munin running, but without alerts. The problem is that is crashed at all. My production server has been up for 668 days, and the temporary DO server didn't last 30.

On the production server, I do ping the server every five minutes, but the customer complaints always reach me before that system.

<comment><USER19> You can do what nagios does: ping more frequently, but not send an alert until several pings have failed. It guards against a packet lost to the ethers, but still picks up a failed service. Maybe ping every 30 secs, four missed pings = raise alert?

</comment></comment></comment></comment></comment></comment><comment><USER20> As the article is from Jun 2013 I should point out the following link (also linked at top of article):

[http://trends.netcraft.com/www.digitalocean.com](http://trends.netcraft.com/www.digitalocean.com)

We have been publicly tracking DO at that address on a monthly basis (I work for Netcraft).

<comment><USER21> Wow, you guys actually redesigned your website!

(University of Bath CS grad here.)

</comment></comment><comment><USER22> I'd be very interested to know if DO make a positive margin on their $5 droplets. I feel like I push a fair amount of data through mine, and plan to push more in the future using a bunch of $5 droplets and round-robin DNS. I'd feel better if I knew I was still a +EV customer.

<comment><USER17> The hardware cost is the same. 128 * $5 == $640, they charge a fixed $10/GB RAM.

They do have higher support costs, credit card transaction fees, and ip address costs. They would probably lose money if the primary users of the $5/month plans were doing punishing things like video encoding, but my guess is the vast majority are no load users.

I once read someone that was doing hosting, said the larger plans were actually more challenging. 4 high volume forum sites on the same host would cause IO contention. Digital Ocean has SSDs and they mix and match sizes on the physical host, so it should be less of a problem for them.

</comment></comment><comment><USER23> I'm trying to find a VPS provider that can do IPv6 and multiple IPv4. Digital Ocean really surprised me in having no IPv6 offering. What really surprised me is that you can't get IPv6 on Amazon's EC2. You can get a v6 address for a load balancer, but that's surely not the same thing.

Linode does actually almost fit the bill, except that they require manual authorization for an additional IPv4 addresses. So there's no way to script deployment of such a system.

I have gone through about 10 VPS providers and the message is clear: IPv4 is fast running out. So it's especially frustrating when we can't even get v6 addresses yet.

(To pre-empt, no, it's not ssl web hosting in which I require an extra address.)

<comment><USER24> I've used Ramnode to good effect, so far.

You get 16 IPv6 addresses by default, without even having to ask for 'em.

<comment><USER25> 16 addresses? Or 16 /64's?

<comment><USER24> 16 addresses total. I suspect they've got loads of addresses available if you ask.

</comment></comment></comment></comment><comment><USER26> Is "meteoric rise" really an expression? Meteors generally go _down_ with tremendous speed...

<comment><USER27> Meteoric: similar to a meteor in speed, brilliance, or brevity: a meteoric rise to fame

I think the phrase exists in a quantum state of dumb and not-dumb.

</comment></comment><comment><USER28> My FOSS app [0] lets you easily configure a full stack LAMP (and other configurations) server using Vagrant/Puppet, which you can then use to easily deploy locally or Digital Ocean (and Rackspace, and AWS, and coming soon Azure).

PRs welcome :)

[0] [https://puphpet.com](https://puphpet.com)

</comment><comment><USER29> It would be interesting to see how many of those customers come and go.

I have and know people who use DO but it's mostly for early stage development prior to moving to a dedicated/customers infrastructure.

</comment><comment><USER30> Serious question: is it really worth it for a company like DO to support Windows? It seems like they maintain their edge by avoiding the kind of complexity that Windows would entail.

<comment><USER31> It's a significant market, not just in size, but in willingness to spend money.

I didn't find Windows complex -- One nice thing about the MS world is the homogeneity of the stack, which makes a lot of things easier if it works for you. If you want to run something else, you probably don't want to run it on Windows anyway.

<comment><USER32> _One nice thing about the MS world is the homogeneity of the stack, which makes a lot of things easier if it works for you._

Yeah, one of things I miss about the MS stack. The whole freedom is slavery thing. If the MS stack has what you need it usually has a 'this is how to do X' and it works well together.

</comment></comment></comment><comment><USER33> Meteors don't rise.

</comment><comment><USER34> If you are writing a Python, PHP, Go, or Java web app, I think using Google App Engine is the easiest way to get your app live. DigitalOcean is easy, but it still requires you to know a bare minimum of Linux-Fu. App Engine is just brain-dead easy. You literally execute a deploy script locally. And as an added bonus, if you use the Google datastore instead of their RDBS it should scale smoothly too.

<comment><USER35> It works until you want to use PIL or LXML and need to compile a python library with native extensions, or if you want to use a datastore other than google's.

At least, you couldn't do those things a few years ago.

<comment><USER36> Your point about compiled python libraries is correct in principle, but it's worth pointing out the GAE python comes with PIL and LXML (and a bunch of other libraries) pre-installed these days:

See [https://developers.google.com/appengine/docs/python/tools/li...](https://developers.google.com/appengine/docs/python/tools/libraries27) for a complete list.

But,yea if you need a library that's not on that list and uses native extensions, then you're kind of screwed.

<comment><USER35> Oh, that's cool. It makes GAE a lot more appealing.

</comment></comment></comment></comment><comment><USER37> DigitalOcean need to get their technical side up to scratch. Still not having IPv6 at this point makes them a total joke, and the security issues around host keys and VM deletion seem amateurish. My main issue with them, and a reason I wouldn't use them even with the IPv6 issue fixed, however, is the censorship on-demand for the owners' friends.

</comment><comment><USER38> I feel like DO has no competitive advantage. They sell servers but then anyone with a reasonable infrastructure and programmers on payroll can scale the way they have. So while it's an impressive rise, it can't be taken for granted. Because all could falter over night. That's just the nature of the business and industry.

<comment><USER39> There are 4 avenues I think you can take in this market -

1) Price

2) Scalability/API (As in AWS style of instant spinup/spindown)

3) User experience for the dashboard and creation process

4) Configurability of your instances

DO is currently fighting on 1 and 3 with a dash of two, which I think is very smart. They're not fighting with lowendbox providers for the lowest possible price, but they're competing with linode and AWS for relatively low cost, but with good stability and ease of use. You can't spin up/down quite as easily as amazon, but they're not targeting that exact use case anyway.

I've moved a few things over to DO from linode and will continue to, because although performance is a bit less, the price points are far cheaper. I think there are a lot of people who use Linode/AWS for boxes that just hum along doing some simple server task(s) that would gladly move to DO for 1/4 of the price, as long as the stability/customer service is there.

I read a rumor on a previous post that they were working on a way to customize an instances storage & RAM but at the current low price points, which I think would be huge.

<comment><USER13> You hit the nail on the head in a way I didn't regarding the core competencies in the market.

I think RAX and Amazon kick ass at 2 and 4, and DO is working on 1 and 3.

<comment><USER40> I think #2 is a strong advantage of digital ocean.

curl [https://api.digitalocean.com/droplets/new?client_id=$DO_CLIE...](https://api.digitalocean.com/droplets/new?client_id=$DO_CLIENT_ID&api_key=$DO_API_KEY)

I didn't need to look that up. It's a pretty standard REST API, with a bit of overuse of GET to make it even simpler. AWS's API is a lot harder to use.

</comment></comment></comment></comment><comment><USER41> I just setup a webserver and it literally took 3 minutes and one piece of documentation reading. Very, very impressive. I remember doing this for the first time on AWS, and it took a while!

[http://126.96.36.199/](http://18.104.22.168/)

</comment><comment><USER42> I have used AWS, DO, Linode.

If you don't need the advanced functionalities that are only available on AWS infrastructure, go with DO. DO beats the price performance compared to Linode while the API, documentation, and support are comparable.

</comment><comment><USER43> Article is from November 2013.

</comment><comment><USER44> To be fair, linode has better documents, the library, DO is getting better and better meanwhile linode's documents grow slowly, partly because they already have a large volume, I have VPSs at both of them.

</comment><comment><USER45> Can we please stop using "headline grabbing math?" You know what would be a more impressive growth percentage? Starting at when they had 1 server. If you look at the chart, every other competitor save linode had faster growth by the unit (as opposed to percentage).

However, with that said, my complaint is just regarding the article and not with Digital Ocean themselves. I think they're pretty kick ass...

</comment><comment><USER46> Until Digital Ocean came around, I'd always thought it bizzare that there weren't more serious competitors to AWS.

Under the 'competitive advantage' model, it is somewhat unusual that a diversified company like Amazon could be the most efficient vendor at providing a 'commodified', targeted offering like cloud hosting.

<comment><USER47> I dunno... it seems like the likely winner in a commoditized market would be the one with the greatest economies of scale, since that would drive down their costs and allow them to underprice their competitors. (If a product is truly commoditized, then price is the only thing vendors have to compete on.) And few companies have economies of scale to the degree that Amazon does.

This also provides a classic "moat" \-- the more sophisticated AWS' offerings become, the more it would cost potential competitors to even attempt to compete with them.

</comment></comment><comment><USER48> Uhm.. yes.. So to read those numbers correctly:

"Amazon, Alibaba and Hetzner each get more NEW servers online in 6 months, then what DigitalOcean created in its entire lifetime".

It's all about the wording.. Not to downplay DigitalOceans achievement, though. But people should look at those statistics in another way...

</comment><comment><USER49> No cheap VPS in latin america, unfortunately... at least we have AWS in SP.

</comment><comment><USER50> Have you taken a look at www.bluemix.net ? The beta version of IBMs new open cloud platform for developers that includes access to Watson - the cognitive computing platform that won Jeopardy

</comment><comment><USER51> The growth chart is missing "IPv6 Addresses".

<comment><USER15> Based on your comment, I'm not sure if you know this, but DigitalOcean doesn't offer Ipv6 at any of their data centers right now, so it'd just be a flat line at 0.

<comment><USER29> I think he means that the statistics do not include IPV6 space other providers use.

</comment></comment></comment><comment> 0- yeah they are growing, we noticed: my "ids" sensors grab malicious traffic originating from their ranges more frequently, compared to those originating from aws (which are plenty as well).

</comment><comment><USER50> have you taken a look at www.bluemix.net the new beta platform from IBM for developers ? It includes access to Watson - the cognitive computing capability</comment>


Developing Games in Elm - <AUTHOR> http://gelatindesign.co.uk/developing-games-in-elm/functional-programming/ <comment><USER2> There is nothing about developing games in this article! I do not understand why they put such title at all.

<comment><USER3> Hi, author here. The reason is because I am using elm to develop games and this is the first in a series I'll be writing as I learn about doing that. It's largely just me collecting my thoughts as I learn.

</comment></comment><comment><USER4> The title should be "Useful Elm code which could be useful if you decide to code a game in Elm", not "Developing Games in Elm".

<comment><USER5> This is typical for functional languages:

1) build a functional language with lots of features but having a really weird ML-style syntax (because 'succinct' and "you don't need those braces")

2) create a try[lang name].com website

3) ?

4) Profit!

[http://en.wikipedia.org/wiki/Gnomes_(South_Park)](http://en.wikipedia.org/wiki/Gnomes_\(South_Park\))

<comment><USER6> ML syntax is only weird if you consider C/ALGOL style the one true normal. if nothing else, the fact that so many languages use it should remove it from the "weird" category; it's simply the style that matches ML-style programming most pleasantly.

<comment><USER5> "most pleasantly" \- that is also very subjective.

</comment></comment></comment></comment><comment><USER7> I'd love to see an actual game code using FP. Like a snake or something. Is there any performance advantage?

<comment><USER8> Check "Nikki and the Robots".

It was done in Haskell and available on Steam.

John Carmack also did a port of Wolf3D to Haskell, during his FP experiments.

[https://twitter.com/id_aa_carmack/status/331918309916295168](https://twitter.com/id_aa_carmack/status/331918309916295168)

</comment></comment><comment><USER9> Stupidly enough, right before clicking on the article I thought that Elm ([http://en.wikipedia.org/wiki/Elm_%28email_client%29](http://en.wikipedia.org/wiki/Elm_%28email_client%29)) had somehow reached a level of complexity comparable to EMACS...

</comment><comment><USER10> Loved the explanation of Composition.

<comment><USER11> Same, but I feel like I'm missing something with one of the examples.

squareIsOdd = square >> isEven >> not -- `not` is a built-in function that inverts booleans

squareIsOdd 3 == True squareIsOdd 7 == False <\-- huh?

<comment><USER12> Yeah I didn't get that either, shouldn't that be False both times? 3^2 = 9 and 7^2 = 49, both odd.

<comment><USER3> Hah, woops. Author here, I switched between odd and even and forgot to update the numbers... I'll fix it.</comment></comment></comment></comment>


Ask HN: Your experience with Pinax - <AUTHOR>

I have just recently learnt Django and found Pinax to be a great source for creating websites quite rapidly. I was toying with the social project on Pinax 0.9a1 and realized I could make something quite easily by removing the excess apps in it.<p>I checked the last serious Pinax discussion on HN (http://news.ycombinator.com/item?id=764566) which was almost an year ago and most of the people here were rather apprehensive about using it. I was wondering if things have indeed changed for good in favor of Pinax now that it's closer to its first stable release. <comment><AUTHOR> I might just add what I have learnt from Pinax google group. Some of the people are actively using the development 0.9 version which is still in alpha.

My thoughts after toying with pinax in last day or two:

1\. I got it installed on my Ubuntu 10.04 flawlessly. The Pinax documentation is up to mark.

2\. The inbuilt projects are more than enough and provide great foundation for most projects.

3\. I personally didn't encounter any problem whatsoever with the Pinax itself. I just installed it and was all set to hack it to make what I wanted.

Just my two cents.</comment>


Show HN: WordPress Product Demos SaaS - <AUTHOR> https://wpdemo.cloud/ <comment><AUTHOR> We use docker and create a new copy for each demo request. This way there are no collisions between the demo users.

<comment><USER2> Can you explain more ? I am interested in something like this for a WP product I run:

1\. Client clicks on "Try our Demo"

2\. A stripped version of the entire product is uniquely genereated only for that customer (we will take their email first etc)

3\. They try the demo which has no collision with another potential lead who may have clicked on "Try demo" as well

4\. The unique demo site is destroyed automatically after a certain number of hours/days

Is this what you are offering ? How would you setup the environment ? I am not familiar with Docker at all so any details are appreciated. Will you create a separate WP codebase and mysql db for each demo ? Do we have access to restrict things like file uploads, admin capabilities etc ?

<comment><AUTHOR> All the 4 points are covered by our service.

The workflow looks as follows:

You login at wpdemo.cloud, create a template, customize it as you wish (install your product etc.), click 'Update Template' button.

Now you can either directly redirect your customers to the demo link or ping our API from your site to request a demo.

And yes, there are no collisions. Each demo request gets a fresh install of your template and each demo instance has its own codebase and database.

Unused demos are also garbage collected.

Again yes, you have access to file uploads, admin capabilities etc. You can basically have root access to the WP installation, since it runs inside a docker container. Let me know if you still have questions.

<comment><USER2> What exactly is a "template" ? Is it about setting up configurations in Docker etc ?

<comment><AUTHOR> A template is a WordPress installation, so you do not have to touch low level stuff like docker configs. You will basically get a freshly installed WordPress site (the template). Then you do all your WordPress settings as admin and save the state of the template. The demos will inherit this state, but still be completely separated.

You can test it for free, go to wpdemo.cloud and check it out. Feedback is highly appreciated!</comment></comment></comment></comment></comment>


Discovering places to play your favorite sports and finding fitness center - <AUTHOR> https://play.google.com/store/apps/details?id=com.stone.playnlive&ref=producthunt

<comment><AUTHOR> Stay fit with playnlive.Excellent app for Sports Lovers.</comment>


Why good UX design is product design - <AUTHOR> http://ehab.tumblr.com/post/3635879596/why-good-ux-design-is-product-design

<comment><USER2> There is always conflict between UX designers and Product managers. Always find out your roles and responsibilities as a UX designer when taking a job. They might actually just want you to be a tactical design resource.</comment>


Go Proposal: first-class support for sorting slices - <AUTHOR> https://github.com/golang/go/issues/16721 <comment><USER2> So the current approach is providing some popular functions which would normally require generics to implement as built-ins?

<comment><USER3> I was just ranting about this approach elsewhere. Go and QBasic are broken in the same way: both lack power in the core language and have special syntax for facilities that really ought to be normal calls into the standard library. In Go's case, we have goroutines, error flag omission, maps, and so on; in QBasic, we have LINE.

A language's core syntax should not privilege its standard library above other libraries.

<comment><USER4> _A language 's core syntax should not privilege its standard library above other libraries._

I'm not so sure. Smalltalk had this in spades. There is a downside to this. Giving a bunch of 20-somethings the full power to basically change everything can result in code-bases which suffer from the chaos of over exuberant hubris. Go is deliberately favoring a certain set of _conventions_. To do this, they are also deliberately making it harder to change the language from within itself.

<comment><USER5> It's not about changing everything, it's about being able to make abstractions that aren't second class citizens. By giving this power, you also increase the consistency of the language.

<comment><USER4> _By giving this power, you also increase the consistency of the language._

Maybe. That's like the apocryphal story about the student asking a question if a particular proof step is really obvious, so the professor goes across the hall, derives stuff on the other blackboard for the next 30 minutes, then comes back into the lecture hall saying, "Yes, it's obvious."

Maybe you increase the consistency of the language from one point of view, but what happens from the perspective of each individual project? What if this leads to projects where templates have been used to create 3 different template based "little languages" to make X, Y, and Z easier? You had 3 problems, but now you have 6. The oft written reply to that in these debates, is to limit the power of the template system -- but is that a robust goal under the group dynamics of the language community? I think not.

One subliminal goal in the design of Go seems to be about privileging certain _conventions_ to avoid a babel of roll-your-own conventions in large projects. This is all across the language and even in the toolchain.

<comment><USER6> The problem with templates is that they're ad-hoc: they can be specialized, and they're only checked at instantiation time. C++'s type level is literally a dynamic language, and template errors are literally stack traces, only made worse by backtracking, due to the deepest unification rule and SFINAE.

But bona fide parametric polymorphism doesn't have this problem. ML's design is a constructive proof that you can have a reasonable degree of abstraction without compromising usability.

</comment></comment></comment></comment></comment></comment><comment><USER7> It seems like due to lack of generics I see more and more interface{} and reflection stuff in code bases. This is getting ridiculous.

I've written a lot of Go. Tried my best to stick to what language provides but at some point you say "screw it" and start fighting with the language. That is never a good sign.

<comment><USER8> Why hasn't it happened to me? I've been writing Go for over 3 years, and I prefer the language stay as is. I'm more concerned about porting it to more platforms. Perhaps that's a reason I'm motivated to desire less language changes.

<comment><USER9> > _Why hasn 't it happened to me?_

Well, don't know about your case, but I've seen e.g. people who are religious about being DRY and dislike any kind of useless boilerplate, and others just copy paste code with wild abandon and couldn't care at all.

<comment><USER7> Also, I'm generally fine with language tradeoffs, If there is a good reason that I need to copy paste something, so be it. I'll do it.

Go and Generics issue on the other hand, feels a little different to me. It is a solved problem. Go does not have an inherent show stopper for generics. It's just not there because of.. What? Stubbornness? I'm not sure. But then it irritates me to copy paste stuff.

<comment><USER8> > It is a solved problem.

This is debatable. Is it a problem that's solved well? Is it solved in the best way possible and there could never be a better way to do generics?

I think not. I think it's solved adequately, but not great. Compared to the other facilities that Go offers, generics are typically pretty messy and add significant complexity to the language, tools, parsing, reasoning, compilation times, etc.

> It's just not there because of.. What? Stubbornness? I'm not sure. But then > it irritates me to copy paste stuff.

This statement is ill-informed. Have you seen [https://github.com/golang/go/issues/15292](https://github.com/golang/go/issues/15292) and [https://github.com/golang/proposal/blob/master/design/15292-...](https://github.com/golang/proposal/blob/master/design/15292-generics.md)? Have you considered all the ways in which it will affect the language and the trade-offs?

Once generics are added to Go, they will forever be there, together with all the disadvantages and missed opportunities, and we'll have to live with them. That's not a thing to be taken lightly.

In comparison, maybe copying a little here and there isn't all that bad.

</comment></comment></comment></comment></comment><comment><USER10> Another approach to this (this is used to good effect in LINQ) is to skip the `Less(i,j)` and just provide a value extractor, except golang makes that super verbose because you'd have to do `func(v interface{}) interface{}`

The idea would be if you have `type foo struct { ID int, Rank int }` you could provide `func(v interface{}) interface{} { return v.(foo).Rank }` and it would sort by rank.

Some level of late binding / genericity would be necessary to make this approach not as verbose.

<comment><USER11> > Another approach to this (this is used to good effect in LINQ)

Also in Python, it's called "key functions". Of course since Go doesn't have tuples and/or user-defined ordering, it either only works for simple comparisons (e.g. by rank but not by rank and name) or you have to hand-roll some weird-ass coercion into whatever key type the language uses.

> you'd have to do `func(v interface{}) interface{}`

And that doesn't actually work, interface{} is not orderable. Only integers, floats and strings are "naturally" orderable.

<comment><USER10> Also time.Time (which could be thought of as two int64s)

Even string ordering there is a lot left up to the implementation as far as how it is done. Do capitals come first? Does capitalization not matter? etc.

For non-intrinsic types you would provide the equivalent `less` function, but in my own programming the bulk of the things I order by are intrinsic.

</comment></comment></comment><comment> ainar-g I may be an outlier here, but I'm not bothered at all by the way sorting is currently done. It's good enough. The "tedious" type names are mostly unexported anyway, and Len and Swap methods are just a bit of copy-paste.

I don't really think we should tweak it, it's not broken. A code-generation tool would be nice instead.

<comment><USER9> > _I may be an outlier here, but I 'm not bothered at all by the way sorting > is currently done. It's good enough._

I fear that's also the motto for a lot of Go's design choices.

<comment><USER4> Don't fear. Be assured!

</comment></comment></comment><comment><USER12> That interface{} parameter makes me cringe, but it makes sense.

<comment><USER13> Go needs functions that support parametric types for collections. I'm not even talking about generics here as user defined types. Let's forget about generics or "the ability for developers to implement their own type safe containers".

Let's talk about the fact that functions in Go could support type parameters in signatures , something like :

       func Map<V,W>(slice []V,func(element V)W)[]W {
          // ...
       }

What we have here is a guarantee that at compile time, this code is safe. We didn't introduce generics, slice is a Go slice of V and the result is a go slice of W.

The code should then be used this way :

        result := Map<string,string>([]string{"a","b"},
            func(e string)string{ return e+"foo" } )

This is completely type safe, no reflection is used, the compiler knows all the types at compile time and no generic type was introduced. This is a good trade off and merely syntactic sugar that would enable developers to get rid of interface {} parameter + type assertions.

<comment><USER6> This is nice, but generic functions are still generics.

<comment><USER13> Go already has generic functions : append, copy ... that are type safe at compile time, how do you think they are implemented in the source code of Go's compiler?

Just like I said. Go compiler finds "append" token, and go look up if both arguments and the return type match, not at run time, at compile time.

<comment><USER6> No disagreement. I was just pointing out that what you were asking for is in fact user-defined generics.

<comment><USER14> In fact, if I understand spriggan3's proposal correctly, that's how Java's generics work. The approach is usually called type-erasure. ([https://docs.oracle.com/javase/tutorial/java/generics/erasur...](https://docs.oracle.com/javase/tutorial/java/generics/erasure.html))

</comment></comment></comment></comment></comment></comment><comment><USER15> > naming a new type (e.g. "widgetsByName") is tedious to many

More than tedium, it's a bit sinister because the convention of creating 'parallel' slice types with names like that blurs the line between what's a noun and what's a verb. With a type name like that, one would expect a value of that type to always be sorted, right? Nope! A "widgetsByName" is just a flower in the breeze hoping that the sort.Sort bumble-bee makes contact.

</comment><comment><USER16> Yes.

Brad is correct, the current approach is tedious.

</comment><comment><USER17> <off-topic>Since when did Go use Github for official proposals? Does it also use the Github repo for official development or is it still just a mirror?</div>

<comment><AUTHOR> The new proposal process is documented here, and goes through opening a GitHub issue: [https://github.com/golang/proposal](https://github.com/golang/proposal)

Go "partly" uses GitHub. The git repo is a mirror, and code review / pull requests is done through Gerrit, but the issue repo is the official one.</comment></comment>


Lxml: an underappreciated web scraping library - <AUTHOR> http://blog.ianbicking.org/2008/12/10/lxml-an-underappreciated-web-scraping-library/

<comment><USER2> _When people think about web scraping in Python, they usually think BeautifulSoup._

When I think about web scraping in Python, I think Mechanize. BeautifulSoup is great for parsing already downloaded HTML files, but it doesn't have the same web-navigating features Mechanize does such as stateful web browsing and easy form filling (unless I'm missing something).

<comment><USER3> +1 for mechanize, been doin alot of scraping in Ruby lately and the ruby mechanize ( i'm assuming its a port ? ) is quite nice

<comment><USER4> Perl's Mechanize was probably the basis for both.

</comment></comment></comment><comment><USER5> Love HN! I've been trying to accomplish "Cleaning up HTML" for some time now and Lxml seems to have the exact functionality I was looking for :)

</comment><comment><USER6> We use it extensively in what we do and its also incredibly fast (which is why we started using it)</comment>


Ask HN: I'll build any web app - <AUTHOR>

Over the past few weeks I've been having this sort of burn out in motivation for work. I'm a web developer, and I like creating web apps that people will find some use for. I am overwhelmed by the ideas that pop into my head, but I can't seem to be motivated enough to actually work on something. I write some code, but when I discuss these ideas with friends and family they are all like "hmmm, yeah that's nice...", totally killing my initial enthusiasm.<p>So in an attempt to get my enthusiasm back and kill my burn out, I ask you, what simple yet cool webapp that doesn't yet exist (or isn't good enough) do you want me to create, that you'll find some use for? It can be anything really. Advice is welcome also. <comment><USER2> Share your ideas. Writing them down in a blog post in a way that tries to sell them is a very helpful way of deciding what's actually useful or not. It can also rekindle enthusiasm for old ideas.

For inspiration, see this post about ten web app ideas: <http://www.puremango.co.uk/2010/10/ten-ideas/>

<comment><AUTHOR> I'm not really good at writing blog posts but I'll try it, thank you.

</comment></comment><comment><USER3> I don't get this "ask friends and family" approach. Unless your friends and family are on the bleeding edge of tech I fail to see how much understanding and enthusiasm they could give you. Friends will often be supportive no matter the idea. Family will often shrug and say "interesting" without having any idea what you're talking about. Not every idea has mass appeal. You likely got the same kind of answers when explaining any number of successful start-ups. Imagine if the Farmville folk had "tested" their idea on friends and family. Yeah! A virtual farm! Forget about FPS or puzzle games... now you can virtually plant peas! (My mum would say "why don't people go plant real peas or have a real farm?").

What it really sounds like is that you have too many ideas and not enough focus. Sounds like you need to pick one and stick to it. Even a failure is a completion and that is a success.

</comment><comment><USER4> Instead of telling your ideas to friend and family, ask for theirs. Go to the mall or other public place and ask people. Want to go all out? Take a cooler of ice cold beer and a big sign saying you'll give out beer for great web app ideas. If you do it on a slow news day, some tv reporter might put you on the news. Someone watching might call you with the best idea ever. Embrace serendipity and seek out new sources of ideas.

<comment><AUTHOR> I ask for theirs and it's mainly Facebook-for-that with 'that' being a random value, or it's impossible / huge for me. No, my problem isn't ideas, I have plenty of them myself. My problem is motivation. I usually give up after building a working prototype because I lose interest and enthusiasm, because I was the only one who cared. I was hoping that by posting this issue here, I see it as a commitment. When someone expects something from me I would put more effort in, rather than building something that I came up with and perhaps noone really cares. +1 for original advice though :)

</comment></comment><comment><USER5> Might want to check this out...plenty of ideas there.

[https://spreadsheets.google.com/ccc?key=0Ag- R_ZlGO21NdE9HSWR...](https://spreadsheets.google.com/ccc?key=0Ag- R_ZlGO21NdE9HSWRkbjNyUGRxS2JIV3NxYVdiaXc&hl=en_GB#gid=2)

EDIT - the original post: <http://news.ycombinator.com/item?id=1190974>

<comment><AUTHOR> This is very interesting, thank you for pointing out this. But still I'm not looking for a startup, I just want to escape burn out, and build something cool in the process that people would like to use. I have no interest in making money out of it, and money is no motivator for intellectual processes. People's enthusiasm and feedback, though, are great motivators, that's why I'm asking this here.

Sure there are a lot of good ideas in that document, but they're all business ideas, there is no passion or enthusiasm around them. But thanks again, it still is helpful.

</comment></comment><comment><USER6> Hello stagas. What is your technical skill with javascript. I have a idea that needs more polish, but I think it would make a great open source library and I could use it in my job. It's a visualization tool that I saw a Google tech talk about a few months ago. I have not had time to sit down and code for it, but if it was available, I would sure use it.

<comment><AUTHOR> Hello EastCoastLA. I would say I am advanced in Javascript. Please email me with the details so I can check it out.

<comment><USER6>
      I am interested in use of data visualization of information that has an endpoint of simple dynamic well known picture/image.  Every item in the picture is linked to the data.

      Imagine a picture of a harbor with boats, calm water, clear sky,etc..  (Still looking for the specific tech talk)
     Every distinct visual category in the picture should have a distinct data link.

I would model it in the same way as Protovis <http://vis.stanford.edu/protovis/> But with pictures linked to the data.

Some links: Hans Rosling shows the best stats you've ever seen [http://www.ted.com/talks/hans_rosling_shows_the_best_stats_y...](http://www.ted.com/talks/hans_rosling_shows_the_best_stats_you_ve_ever_seen.html)

Digital Arts@Google: W. Bradford Paley, Martin Wattenberg, and Fernanda Viegas [http://www.youtube.com/watch?v=xRrmE7BFdJs&feature=playe...](http://www.youtube.com/watch?v=xRrmE7BFdJs&feature=player_embedded)

[http://www.slideshare.net/fichter/data-20-harnessing-new- dat...](http://www.slideshare.net/fichter/data-20-harnessing-new-data- visualization-tools-343275)

<comment><AUTHOR> Protovis pretty much covers everything, from what I can see. What you're looking for (I think) is an implementation on some specific data you have, mapped to hyperlinks from Wikipedia or similar? Please correct me if I didn't understand correctly or elaborate a bit.

<comment><USER6> Protovis is very close, but imagine one of the digital frames you put pictures in. The date dynamically creates the one image. Each element of the picture might represent a data element I feel is important. The javascript API will allow me to select the picture which could be a landscape or water-scape or mountain scape. The data can be encoded in JSON. The user could look at the image and have a visual representation of the data in a familiar format.

</comment></comment></comment></comment></comment><comment><USER7> Don't ask your friends and family. most of them, I assume, don't understand the field. Ask people who understand. Go to an entrepreneurship meetup, such as the HN meetups in various cities, and talk to those people. They'll understand what you're saying, and challenge your business/tech assumptions and decisions.

<comment><AUTHOR> I understand your point here, but it's really hard where I live to even reach those. I live in an island in the mediterranean, called Crete, and travelling by airplane to go to such meetups isn't something I can afford, and developers living here don't really care more than doing a website in Joomla for a hotel or so. I've tried talking to them also but in vain. So the Internet is my only real connection at the moment with these kinds of things. I feel like I have so much creativity and really want to build things, but I'm alone here and feel like nobody understands me in real life.

</comment></comment><comment><USER8> Have a look at Jacques' list of ideas: [http://jacquesmattheij.com/My+list+of+ideas+for+when+you+are...](http://jacquesmattheij.com/My+list+of+ideas+for+when+you+are+looking+for+inspiration)

Many of them!

<comment><AUTHOR> Thanks! Looks interesting.

</comment></comment><comment><USER9> Hey, this is one of the founders of Ready for Zero (recently featured on HN). We have a simple webapp idea that might be fun to do on the side. If you're interested, mail me at nacho _at_ readyforzero _dot_com.</comment>


Running Lisp in Production - <AUTHOR> http://tech.grammarly.com/blog/posts/Running-Lisp-in-Production.html <comment> white-flame We deploy distributed, multi-language, centrally Lisp/SBCL servers as well. A few specifics that I'd point out:

Many of SBCL's optimizations are fine grained selectable, using internal SB-* declarations. I know I was at least able to turn off all optimizations for debug/disasm clarity, while specifically enabling tail recursion so that our main loop wouldn't blow up the stack in that build configuration. These aren't in the main documentation; I asked in the #sbcl IRC channel on FreeNode.

You can directly set the size of the nursery with sb-ext:bytes-consed-between- gcs, as opposed to overprovisioning the heap to influence the nursery size. While we've run in the 8-24GB heap ranges depending on deployment, a minimum nursery size of 1GB seems to give us the best performance as well. We're looking at much larger heap sizes now, so who knows what will work best.

While we haven't hit heap exhaustion conditions during compilation, we did hit multi-minute compilation lags for large macros (18,000 LoC from a first-level expansion). That was a reported performance bug in SBCL and has been fixed a while back. Since the Debian upstream for SBCL lags the official releases quite a bit, it's always a manual job to fetch the latest versions, but quite worth it.

Great read, and really familiar. :-)

<comment><USER2> We played with sb-ext:bytes-consed-between-gcs, but couldn't find the right balance. That's why we were surprised with the result of the oversized heap experiment

<comment> white-flame You might want to do some googling about it, but I also seem to remember that SBCL might decide to use large or small MMU page granularity depending on the size of the heap. That might be the watershed trigger for performance. (or just some random mis-remembered nonsense)

</comment></comment></comment><comment><USER3> Common Lisp's macros and grammar go together like bread and butter. A grammar module in the app I built [1] uses macros to generate huge amounts of repetitive code.

[1] [https://github.com/tshatrov/ichiran/blob/master/dict- grammar...](https://github.com/tshatrov/ichiran/blob/master/dict-grammar.lisp)

I wonder if they're still hiring Lispers. I once passed on the opportunity to work in their Kiev office, but I might give it a shot again.

<comment><USER4> Wow, I checked out your ichi.moe app. It's awesome! I'm definitely going to use this as I work on re-learning the Japanese I've forgotten over the years. I've done some Racket and Clojure but never done CL... I'll have to check it out.

<comment><USER5> Thanks for pointing this out. I'm learning Japanese now and this will be massively helpful.

</comment></comment></comment><comment><USER6> Great article, and good reminder on using trace. Every time I rediscover trace, I can't remember how I ever forgot to use it in the first place for most of my problems.

I used CL in a production environment a while back for a threaded queue worker and nowadays as the app server for my turtl project, and I still have yet to run into problems. It seems like you guys managed to push the boundaries and find workable solutions, which is really great.

Thanks for the writeup!

</comment><comment><USER7> Slightly off-topic, but does anybody know of a kind of "LISP Challange" set? I recently started the Matasano challenges[0] and I found them really well- suited to my style of learning (learning by doing and expanding by reading relevant material, enabled by my own internal motivation). Is there anything like that that has a relatively small set of condensed yet rich challenges that demonstrate key elements from LISPy functional programming? I read some of SICP but reading long form really puts a damper on my motivation/excitement. Also there were a lot of exercises (with a lot of overlap in concepts) so I didn't know what to do and what not to do, since I wasn't about to do every single one. Any pointers would be much appreciated!

[0] [http://cryptopals.com](http://cryptopals.com)

<comment><USER8> From the top of my head..:

The Praetorian Bootcamp challenges are similar to the Matasano ones: [https://www.praetorian.com/challenges/](https://www.praetorian.com/challenges/)

Lisp Koans: [https://github.com/google/lisp- koans](https://github.com/google/lisp-koans)

Project Euler: [https://projecteuler.net/](https://projecteuler.net/)

Exercism: [http://exercism.io/](http://exercism.io/)

99 Lisp Problems: [http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/func...](http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety- Nine_Lisp_Problems.html)

<comment><USER9> I've been using python-koans to teach Python, but the thought of looking for lisp-koans from Github didn't even cross my mind now as I personally started learning CL. Thanks for these excellent links!

</comment></comment></comment><comment><USER10> Awesome stuff. Articles like this are what we Lispers/Schemers need to show that our languages can be used for "real work"(tm).

</comment><comment><USER11> One of the things I would have liked to see on the article is how do they handle the deployment itself. Do they build an executable with build app? To they used sb-daemon? An home-grown solution using sb-posix:fork?

<comment><USER12> I don't know how they do it, but I have run several Lisp production systems. I use CCL, which has a really fast compiler. So I just load the code from source. The deployment process then becomes: git pull, quit and restart Lisp. (The ccl-init file loads the code.)

<comment><USER11> And in that case how do you handle the monitoring of the system?

<comment><USER12> I don't understand the question. Once it's running, it's like any other server, and you monitor it like you would any other server written in any other language.

<comment><USER13> Speculation here, but based on the context, I think the question is: Some daemon-izer solutions will monitor the daemon and e.g. restart it if it's unresponsive. How do you handle this slash how is this handled in the Common Lisp world?

<comment><USER12> As a last resort, if Lisp becomes totally unresponsive, you kill the process and restart, same as any other language. But it's pretty rare to lose the REPL, so usually you can fix any unexpected problems through that.

</comment></comment></comment></comment></comment></comment><comment><USER14> Is it worthwhile to explore Clojure for web-dev seriously or more as a toy?

<comment><USER15> I vote that it's worthwhile as well. We've been using Clojure full-time at ReadyForZero for over 3 years now (for web-dev as well as other tasks), and are very happy with our choice.

<comment><USER16> Is it better than plain Java? I mean, if you have the entire Java ecosystem, is it worth it to go upstream just to work in a Lisp-like language?

<comment><USER15> IMHO, absolutely. There are many wins, but the 2 biggest for us have been:

1\. Clojure's tools for making abstractions are orders of magnitude better than Java's, so our codebase is significantly smaller and simpler than what it'd look like in Java.

2\. Clojure lends itself very well to a REPL-oriented kind of iterative development that speeds up writing and testing code tremendously, compared to the typical Java workflow.

</comment></comment></comment></comment><comment> jon-wood Apparently they use "JVM languages", JavaScript, Python, Go, Lisp and Erlang in production.

I may be in the minority, but that would drive me mad. I assume they're not routinely jumping between those stacks multiple times a day, but even so is there really that much benefit that it's worth keeping track of how to do things in that many different environments?

<comment><USER17> Since "proper service encapsulation" is mentioned, it may be that each team uses whatever they like, and as long as your component speaks http you don't have to look at what other components are doing.

<comment><USER18> This is exactly how it is (except sometimes it is not HTTP but message queuing etc)

</comment></comment></comment><comment><USER19> Very informative. Thank you.

Anyone here has any experience with the GCs of Allegro or LispWorks or any other commercial Lisp implementations?

<comment><USER20> LispWorks has a lot of features in its GC. Years ago it was used in a demanding telco application, an ATM switch. It was also used on a space mission experiment. Generally the runtime is very very nice.

Franz Inc uses Allegro CL in a large database. They tuned the GC quite a bit for that. But there were also other GC demanding applications on Allegro CL, for example in CAD and 3D design. They are now working on a concurrent GC, something which is still rare in the Lisp world.

<comment><USER21> Why are concurrent GCs rare?

<comment><USER2> are there many platforms, besides JVM and .Net, that have good-quality concurrent GCs?

<comment><USER22> The Erlang Vm (BEAM), is another one at least.

<comment><USER23> It doesn't actually implement concurrent GC, although what it does implement is far simpler and has a similar effect (low latencies) as concurrent GC.

Each Erlang process has a separate heap that is collected independently; because the process heap is usually small a stop-the-process collection does not take much time.

The downside is that sending messages between processes requires copying all the data that is sent between process heaps.

</comment></comment></comment></comment></comment></comment><comment><USER24> Aw, now they have disclosed their secret weapon! [1]

[[http://www.paulgraham.com/avg.html](http://www.paulgraham.com/avg.html)]

</comment><comment><USER25> > but we value choice and freedom over rules and processes.

Which I exactly why I feel Lisp doesn't see much use elsewhere :(

</comment><comment><USER26> Good lord, I would go insane if I ran into a bug like this:

"We've built an esoteric application (even by Lisp standards), and in the process have hit some limits of our platform. One unexpected thing was heap exhaustion during compilation. We rely heavily on macros, and some of the largest ones expand into thousands of lines of low-level code. It turned out that SBCL compiler implements a lot of optimizations that allow us to enjoy quite fast generated code, but some of which require exponential time and memory resources. "

<comment><USER27> I dont really understand the downvotes... I agree with you would go nuts.

My two cents, if your macro is expanding to thousands of lines of code, your doing something wrong I think. I would expect Macros to expand out to a few lines of code which might have function calls that themselves may contain however many lines of code... but expanding to thousands of lines INLINE via macros seems wrong.

<comment><USER28> Some macros expand to a _lot_ of code, especially when doing more in-depth transformations such as those performed by core.async in Clojure where they transform standard sequential code into a state machine with exactly the same semantic but with the added ability to execute, yield and resume like a coroutine.

</comment></comment></comment><comment><USER29> I love it :0) I tried grammarly, and typed in a remembered poem. It informed me that it had detected significant plagiarism.

Edit: It's still not advice I would pay for, though.

</comment><comment><USER30> Thanks, great post and lot of useful references.

</comment><comment><USER31> This was fantastic. Thank you.

</comment><comment><USER32> Wow. I can't ever remember reading about a consumer-facing app using Common Lisp. Ever.

<comment> jon-wood You're using one ;)

<comment><USER33> Nope, HN is written in Arc (which runs on top of Racket) :-p

</comment></comment></comment><comment><USER34> Once you go deep enough you are fucked no matter what language you choose. Might as well pick one that doesn't beat you up too much.

</comment><comment><USER35> Why not racket?

<comment><USER36> I was thinking the same question and the reply would probably be "performance". I don't think untyped Racket can currently compete with SBCL and I'm not sure they'd be interested in Typed Racket. But I'd love to be proven wrong on both of those things ;)

<comment><USER35> Ok that makes sense.

<comment><USER2> But that's not the reason. Personally I find Lisp superior in most respects, but I don't think it's a good place and time to argue on Lisp vs Racket and similar topics.</comment></comment></comment></comment>


Jeff Vogel on changes in your products - <AUTHOR> http://jeff-vogel.blogspot.com/2009/04/why-nobody-should-ever-change-anything.html

<comment><USER2> There seems to be no essential difference between users of Jeff Vogel's games and users who are petroleum products traders and schedulers. They complain and insult you for trying your best to make improvements. Then they praise you for putting in something mindless like a "Refresh" button.

I think it's because the users have minimal control in the development process.

</comment><comment><USER3> He describes the opposite of "trying to be everything for everyone", namely finding your niche (where nobody can yank you out) by constant iteration of product. The point to keep in mind: you will loose customers during the process and you will win new ones. The important thing is to make sure the new customers are a better fit.

<comment><USER4> Focusing on the differentiation. This theory is expressed well in Dealing With Darwin by Geoffrey Moore.</comment></comment>


Google Acquires Makani Power And Its Airborne Wind Turbines - <AUTHOR> http://techcrunch.com/2013/05/22/google-x-acquires-makani-power-and-its-airborne-wind-turbines/ <comment><USER2> I work for one of the biggest global wind turbine manufacturers. On one hand I recognize that this is exactly how disruption happens- small player with a tremendous idea and the opportunity to utilize wind resources in areas where traditional turbine designs can't be sited.

On the other, I don't envy the engineering team their road ahead- I see firsthand how many challenges we face every day with "ground-based" turbines, and have an inkling of how difficult an engineering challenge this will be. Best of luck to them- anything that pushes renewables forward in a meaningful way is a win for everybody.

<comment> mc-lovin While I'm sure they will face many challenges, what they are doing is not the equivalent of putting a ground based turbine in the air.

Their "wing" is the equivalent to a part of a turbine blade, and it moves in circles like a turbine blade would. The propellors in the wing are what extract the energy, but they would not be nearly as big as the blades on a conventional wind turbine.

</comment></comment><comment><USER3> Great news for the folks working at Makani! I hope Google continues to develop the product. Every time I've spoken to anyone at Makani, about tether materials, motor design, carbon fiber manufacturing, whatever, they've known their shit very deeply. They've really beaten a path through a lot of untrodden ground to get to where they are, I hope the product gets off the ground (literally!)

</comment><comment><USER4> For those that have a subscription, The New Yorker did an interesting profile of Makani in the 5/20 issue:

[http://www.newyorker.com/reporting/2013/05/20/130520fa_fact_...](http://www.newyorker.com/reporting/2013/05/20/130520fa_fact_specter)

Apparently Montague was actually seeking funding to create a kite-boat (he had previously help establish kite-boarding), but it was Larry and Sergey's idea to go down the wind energy route.

<comment><USER5> Tangential: Larry is an avid kiteboarder.

<comment><USER6> So is Sergey.

</comment></comment></comment><comment><USER7> reminds me of a passage from In The Plex

 _Over the years Winograd had become an expert at figuring out where students stood on the spectrum of brainiacs who found their way into the department. Some were kids whose undergrad record was straight A pluses, GRE scores scraping perfection, who would come in and say,"What thesis should I work on?" On the other end of the spectrum were kids like Larry Page, who would come in and say, "Here's what I think I can do." And his proposals were crazy. He'd come into the office and talk about doing something with space tethers or solar kites._

</comment><comment><USER8> Saul Griffith (co-founder of Makani) is a far more valuable asset than just the tech/product here. He's very active, collaborative, & well respected in the Maker community.

<comment><USER9> Is Saul still involved at Makani? I haven't seen him mentioned in the news stories about the purchase and Makani is listed as one of the things he's done in the past on his website. The awesome things he could do at Google is one of the first things I thought of but haven't gotten any confirmation that he's going with the company.

<comment><USER6> Nope, Saul has his own ideas lab called otherlab. He hasn't been involved in Makani for several years.

</comment></comment></comment><comment><USER10> As a kitesurfer and investor in renewable energy (solar) I really love this company. The founder is one of the pioneers of kitesurfing and was the chief designer for Naish kites when the industry was just starting out. He realized that you didn't need a tower and giant blades to generate power from wind. Neat. Would be great if someday they have a system that can propel boats.

<comment><USER11> > Would be great if someday they have a system that can propel boats.

There's a company in Germany that is building power kite -style sail systems for cargo ships. They have been running some prototypes successfully.

<http://www.skysails.info/english/>

</comment></comment><comment><USER12> Makani is looking to hire a few people: <http://www.makanipower.com/careers/current-job-openings/>

</comment><comment><USER13> Wow. I used to hang out on the kitesurf email lists on yahoo back in the day, Saul used to post open source kitesurf patterns, I made a few kites (of my own design.)

Then he went on to start Monkey Kites, which I think he lets his sister run (it's now called <http://www.griffinkites.com.au> )

Don Montague used to come on the forums talking about giant ship kites that would tow a oil tanker across the ocean saving fuel.

It's interesting to see that they're working together on a non-kite idea.

Also, I bet that spinning wing chops birds and bats up with 100% efficiency. Maybe they plan on sending it much much higher in the atmosphere (you could tether lots to an airship which in turn was teathered to the ground)

</comment><comment><USER14> Congrats to those at Makani. Also, RIP Corwin[1].. I didn't know him personally but it's clear from the responses after his passing how important he was to the company and to those around him. It's a shame he didn't get to see Makani get this wonderful bit of validation.

[1] - <http://www.makanipower.com/corwin/>

</comment><comment><USER15> Does anyone know how effective high-altitude wind energy might be for producing energy at scale?

<comment> mc-lovin My understanding based on reading their materials, is that it is very similar to conventional wind power. "High altitude" here refers to around 600m, which disappointed me because I thought it would be an army of devices flying autonomously in the stratosphere, (I kept reading to figure out how they got the power back to earth, at which point I found out they were tethered, and not flying in the stratosphere).

So they should be very similar to wind power, except that they are tethered, rather than a turbine on a tower.

I think the main issue is how much space they use on the ground, i.e. how much space around the tether point needs to be kept clear.

EDIT: apparently even wind at 600m is better at ground level.

Furthermore, the system is not really a "turbine sitting on a wing". The wing _is_ the turbine blade. It moves in a circle, and the propellers on the wing draw the power from it's motion. It's really an amazing idea that, the kind of thing I wish I had thought of. I think this page has the most interesting information.

<http://www.makanipower.com/why-airborne-wind/>

</comment></comment><comment><USER16> This is great for the owners of Makani but what does Google honestly know about running an energy company?

With all of the side projects that Google has shuttered lately, I am disappointed more than anything by this acquisition.

<comment><USER14> This is GoogleX though.. What do they know about running a self-driving car company? Or about running an augmented reality eyewear company?

This is their moon-shot division, run by Brin to work on crazy ideas. Makani seems right up their alley.

<comment><USER16> Renewable enegery is presumably a semi-established market.

Augmented-reality-eyewear and self-driving-cars are not.

</comment></comment></comment><comment><USER17> maybe a dumb question but how did they solve the issue of coiling? if my Q isn't clear, I mean the twisting of the tether as the airborne vehicle circles the sky

<comment> mc-lovin can't they just turn whatever is holding the tether in place on the ground?

<comment><USER17> sure, but you can't turn the actual wire itself indefinitely or it will shear eventually

</comment></comment></comment><comment><USER18> Hey, I know someone who works there. Congrats, Erik!

</comment><comment><USER19> Somebody please, please tell me this isn't a 'talent acquisition' that's going to show up on gwern's list in a week.

</comment><comment><USER20> One of the links says that each device outputs 30kW. That seems way too low to be cost effective.

<comment><USER21> Yet.

</comment></comment><comment><USER22> What happens to the kite when the wind stops blowing?

<comment><USER11> The demo video shows the kite autonomously landing to a rig next to the ground station. It uses the engine/turbine propellers to launch and land using electrical power.

Their material says that they launch at wind speeds of 3.5 m/s, which is a light summer day breeze that is hardly noticeable.

It is a common misconception that kites need high winds to fly, the optimal wind speed for most kites is 3-6 m/s.

</comment></comment><comment><USER23> > Great news for the folks working at Makani!

In the short term, yes. Given the history of Google and its diversification efforts, not so much.</comment>


What's New in Python 2.7 - <AUTHOR> http://docs.python.org/whatsnew/2.7.html

<comment><AUTHOR> There's a lot I'm excited about in this release. Many convenience methods and classes have been backported from py3k and some really useful new modules, too (argparse stands out). There are also a few notable bug fixes and enhancements to existing modules ("maxtasksperchild" in multiprocessing Pools is awesome!)

<comment><USER2> Glad your excited - and kudos to the user who submitted the multiprocessing patch to me, I would not have thought of it on my own probably!

</comment></comment><comment><USER3> Here's an earlier thread on the topic: <http://news.ycombinator.com/item?id=1485947></comment>