Show HN: Build your own Heroku on your own servers - <AUTHOR> http://www.cloud66.com <comment><USER2> I think this targets a real painful need, managing an EC2 app on your own is not lacking frustrations, simple things like creating a rolling backup of instances needs complex shell scripts and cron jobs or 3rd party apps like <http://www.skeddly.com>, you need to be fluent in linux administration if you want to do simple things like increase your boot storage space (actually need to remove it, create a new volume from it, reattach it). Most developers will figure it out, but I would rather focus on development rather than infrastructure if I don't have to.

EC2 has an auto pilot option, but if I remember correctly it's more targeted for multiple instances, no auto scaling up or down only scaling out.

Developers need to focus on developing, it's always nice to have a developer who can also do the ops part, but I think no one will miss doing the plumbing work if they don't have to.

p.s. I would add a tweet button, this is tweet worthy and you should make it easier on people to both follow and spread the word

Few minor glitches:

\- SSL mixed content warning on /how and /about

\- / is different than /home (pricing link)

\- logo redirects to /home instead of /

<comment><USER3> doesn't amazon elastic beanstalk solve the "heroku-ish deploy on EC2" problem?

<comment><AUTHOR> Yes. Elastic Beanstalk is great for deploying your code to EC2.

However Cloud 66 doesn't end at the end of deployment. It actively manages the app by monitoring the processes, making it extremely easy to add load balancers, scale web servers or background processes, add SSL certificates, schedule backups with one click and a lot more.

It is also not limited to AWS and supports Linode, Joyent, Telefonica Cloud with Rackspace and Digital Ocean coming soon.

This is on top of having all this on your own servers if you would like to have dedicated or colocated one in a data centre for whatever reason.

<comment><USER4> Actually attended a local user group presentation on elastic beanstalk last night.

Elastic Beanstalk not only handles auto scaling. You can set limits that enable it to launch a replacement server if your pages start responding slowly.

The new console lets you easily add SSL certificates and schedule backups. I was pleasantly surprised how much Amazon has added to it in the last few years.

<comment><USER5> I confirm all this. Elastic Beanstalk is so good, I don't even touch EC2 anymore. All my webapps are now being deployed through it. It costs more due to fact that each environment needs its own load-balancer even if only one server is involved which is extra $18/month but it is still worth.

If you deploy code that crashes webapp, just revert back to previous version. Problem fixed in a minute on all your servers.

And you don't even need to do that actually, spin new environment with new set of servers. Upload new version to new environment, do the testing, then promote this environment to production status (takes a few seconds), and terminate previous production environment.

Perhaps other companies can offer service like this too, but my platform of choice is ASP.NET which narrows the field quite a bit.

<comment><USER6> I guess where we are attempting to be different is we are providing this functionality in a vendor agnostic way (ie. also for Linode, Joyent, Telefonica - Digital Ocean and Rackspace coming soon, and support for standalone servers in Hetzner, or your private cloud, or even under your desk for example)

As well as just supporting your preferred vendor (based on price, location, guaranteed location, SLA etc) it means that we can offer you a way to switch between vendors if that vendor has some down-time, or doesn't meet your changing requirements as you move forward.

Also, we are really trying to be as application centric as possible - everything stems from your application code - and then provide the ongoing management tools you need on top of that (for easy scaling, backups, scheduled tasks, migrations, reporting etc)

Great feedback from everyone! We didn't get a whole lot of sleep last night!

</comment></comment></comment></comment></comment></comment><comment><USER7> This is a neat solution for a reality those of us who have been building web applications for a decade have faced: If you want your application experience (code + infrastructure) to be stable for a number of years, you have to be more and more responsible for your entire stack.

A reality is what's popular today in how a Cloud, or bare metal is used will be outdated in a few years and it creates technical debt in the future.

It amazes me how developers can obsess over development practices, frameworks, etc and without a thought look at the ugly underbelly of their app that grows as their code and userbase does.

Many developers on HN don't seem to have a relationship with a codebase for more than a few years (I could be completely wrong), but that is the perspective I'm speaking from.

It's great to see this kind of tooling that's focused not on management of infrastructure by abdication, but more of a middle ground.

Juju also has me excited, I think it's part of the future in a way VMware and virtualization first emerged 10-12 years ago.

</comment><comment><USER8> At $9/month I suspect you are drastically under-valuing the service you provide. Sysadmin time is expensive, and your value proposition is the same as Heroku: pay us so you don't waste time sysadmining your boxes. Time is unimaginably precious for small SaaS shops, and if you deliver what you promise, it's worth far more than $9/month.

Not to nay-say, but if you don't price according to value delivered, you don't stay in business long. Your income should grow faster than the infrastructure that you need to run the business.

It's also not clear what company is backing this service and how you're structured. Are you VC-backed? What happens when the money runs out, am I left holding the short end of the stick?

<comment><USER9> Actually no I think $9/month is appropriate. A heroku dyno is about $35 a month, and you have a full on solid highly supported service. Here you pay $9/month + server fees which say with the micro instances comes out to about $14 bucks a month. So by doing it on my own EC2 with this service a small instance comes out to about $24.

Only thing is though, here you have the option of choosing a larger instance type and by percentage the charge may be to low. To combat that I suggest a more tiered pricing.

<comment><AUTHOR> Thanks for the suggestion.

</comment></comment></comment><comment><USER10> I've actually been using this since open beta. This is for those like me, who can do devops when pressed to, but really hate it otherwise. Which is most web devs I know.

The neatest thing is being able to transfer your stuff to another provider within minutes. I haven't tried the manual thingy yet, seemed like too much fiddling, really.

The cost in my case isn't significant, less than an hours worth monthly. I'd have wished for more frameworks as RoR isn't really my weapon of choice.

<comment><AUTHOR> Thanks for being a great user of Cloud 66. Keep the feedback coming!

</comment></comment><comment><USER11> Having a platform to simply deploy code is great, but there seems to be a lot of hate for sysadmins over the past few years.

Heroku and the like are fine for prototyping and small apps, but when you start developing complicated and/or popular apps, at some point you are paying a service tons of money to avoid optimizing at the systems level.

I'm a "devops" sysadmin and sitting with my developer every day makes us both so much more effective. "Hey sysadmin, if 1000 requests to this module in my app happen it breaks, can we figure out why it crashes the server?". To which I reply, "yes developer, after we ran some tests, it looks like your code is so efficient and effective, that there aren't enough available tcp/udp ports to support the number of requests it is able to handle. I can increase them on your default AMI if you like. It will result in a 3000% increase in the number of active users we can sustain on a given instance".

The no-ops position is: Let's just pay for more servers. The DevOps position is: Let's optimize.

The difference may seem small, but if you are paying $20k a MONTH for your Heroku bills, not to mention supporting 3k servers for your app on AWS (or insert provider x), do you still think hiring a $100k/year sysadmin is such a bad decision?

The devs can still develop a method to quickly deploy code... or just use Asgard, and avoid all of the chaos that can happen if something goes wrong. The sysadmins understand your code and how it is interacting with the server. You don't end up paying tons of money to support a very basic application that has simply never been optimized.

Sysadmins in a devops world do not usually have any control over when builds can be pushed - they assist with optimizing. So if something breaks, the blame falls on devs, not ops.

Unoptimized app (rapgenius example): $20k/mo = $240k/year Sysadmin: ~$100k+/year and a minor (given devops mentality) increase in deploy time = priceless

Not all cases are the same, but the start-up mentality doesn't usually work at scale.

<comment><USER12> Where do you find sysadmins for high availability systems willing to work for $100K per year?

<comment><USER11> Depends on where you're living I suppose. In Chicago, a base of $100k/yr for a systems architect seems fair. In the Bay area and other areas that are more expensive, it will probably be more expensive, but I'm not as familiar with those markets. It certainly depends on the complexity of your product too.

<comment><USER12> ha. I was actually thinking of people I know in Chicago who charge huge amounts to admin trading systems.

<comment><USER11> Ah, yes. Did my run in trading. Pay (and experience) is great if you have the stomach for it. I found it soul-sucking and ultimately left. You are correct though, trading is extremely lucrative, not even getting into the other benefits.

</comment></comment></comment></comment></comment><comment><USER13> Can you give a technical explanation of how this actually works? Heroku works by compiling your git repository with a buildpack into a "slug" and then booting that slug on a cookie-cutter LXC image running on an EC2 VM, according to process types you defined in your Procfile and the scaling you set through heroku's API, and then routing web traffic to your web processes. etc etc.

Can you explain with some technical depth how you are actually deploying/configuring the app, what languages/libraries are supported, where/how DBs & external services are run/connected to, how web traffic gets routed/proxied to the apps, etc?

<comment><USER6> Thanks for the question - there is a little more detail here: <https://www.cloud66.com/help/cloud66_stack>

Happy to answer specific questions

<comment><USER14> How does the nginx fit in? Do you install an instance of nginx onto every single box? Or can you elect to use a web server box as your frontend nginx and proxy request back to a set of separate servers running instances of passenger?

<comment><AUTHOR> At the moment nginx sits on every frontend box serving Passenger. Unicorn support is coming soon. Split of front end proxy and backend server is further down the line. Feel free to put it down in the Feedback panel on the site and vote it up! Thanks.

</comment></comment></comment></comment><comment><USER15> I have used this since it's been in beta because I know the guys behind the service. Besides being exceptionally dedicated and cool guys, the service is genuinely good. It definitely solved our problem of going to production with something like Heroku. It's a lot more cost/performance effective and also (as mentioned in one of the comments) you have full access to your box if you need it!

When you know what's in the pipeline, it's even more exciting. Keep up the good stuff guys.

</comment><comment><USER16> Just looking at the stack docs put me more in mind of Engine Yard than Heroku: HAProxy, nginx, passenger, DB options etc.

And that's a good thing. I realise Heroku is devsexy but having compared the two for a serious production app for bigco (a contest that EY won hands down) this architecture is long-term more resilient and adaptable.

So to me it's a sort of Engine Yard, BYO VMs. Ok. What is that, Devops as a Service? Nice look, btw.

<comment><AUTHOR> DevOps as a service, WebOps in the cloud or anything you'd like to call it. We made it because we had the same issues as all other devs with Heroku. I hope we built something useful.

</comment></comment><comment><USER17> Great job, the UI looks really slick, Ubuntu is working on something similar (deploying development stacks to any cloud):

[http://www.jorgecastro.org/2012/11/16/deploying-your- rails-a...](http://www.jorgecastro.org/2012/11/16/deploying-your-rails- application-in-the-cloud-via-juju/)

Do you guys have any plans to support OpenStack clouds?

<comment><AUTHOR> Thanks for the comments. Juju is really cool. We are adding Rackspace support very soon. OpenStack is slightly later.

</comment></comment><comment><USER18> Very impressive. Could you help with the pricing a bit more. The cost is $9 per server per month in addition to costs from the cloud provider with the first server free?

BTW your FAQ still lists $7 <https://www.cloud66.com/help/faq>

<comment><USER19> When I first opened the page about an hour ago they listed $6/month. Then I saw $7/month listed on the FAQ page, and now the home page says $9/month.

<comment><AUTHOR> I know we had an issue with the FAQ page (was stating $7 instead of $9 which is the right one). But never $6! Did you see that on the homepage?

<comment><USER20> For what it's worth, I misread the button at the bottom of the "How it works" page when I first scanned through; I thought it said "Try Cloud $6", but it actually said "Try Cloud 66". Maybe that's what they saw.

</comment></comment></comment></comment><comment><USER19> Are any of the following possible or planned for development?

1\. Hooks in the server configuration process that would allow you to do custom package installation and configuration. I know you can deploy to your own servers, but I'd rather specify configs in my app somewhere and have Cloud66 apply them as needed, a la chef recipes or puppet patterns.

2\. Hooks into the deployment process to perform additional deployment related tasks.

<comment><AUTHOR> Yes and Yes! As a metter of fact deployment hooks (both for packages and scripting like Chef) are available as private beta. Once we are done with the tests they will be released.

As for hooks: We have hooks and API to start a deployment after your git commit or CI gives us a go ahead and are working to add post-deploy hooks so you can chain up the deployment to other systems you have.

</comment></comment><comment><USER21> Just giving the github repo and the place we want to host, everything is taken care of! Pretty cool! Before i deployed my app to amazon ec2, i had pretty bad time with rubber gem, then with chef-solo and then capistrano, i always thought of something like this. So, it should definitely many who want to go with IAAS services but don't want the hassle of deployment.

</comment><comment><USER22> Do you have a better pricing page somewhere? $9 per server per month... what kind of server? Micro instance?

Also, is there any Redis support?

<comment><AUTHOR> That's a valid point. Thank you. Will work on a better pricing page.

For the reference, any server: virtual / physical or any size. Since we don't sell the servers, we only charge for provisioning, deploying and configuring as well as the on-going management (scaling, monitoring, backups, add-ons) per server.

Redis is coming soon (we use it ourselves and deploy our stack with Cloud 66 - so really keen to get it working so we can deploy and managed our own stack fully automated with Cloud 66!)

</comment></comment><comment><USER23> Nice. As a provider of unsupported hardware, I'd be interested in some "how to make it easy for us to support users on your hardware" page.

I really do think that there is a place in the market for something like this, and the more providers you support, the better off both you and your customers are.

<comment><AUTHOR> Thanks! We are seeing a lot of folks using us to run their apps on dedicated on servers on Hetzner or OVH in Europe. If you are interested, drop us a line at firstname.lastname@example.com and we can talk about new providers!

</comment></comment><comment><USER24> This is awesome! I see there's Linode support built in - any plans to do the same with Digital Ocean?

<comment><USER6> Yep! Digital Ocean just released the bit of their API we needed - so yes they'll be supported soon!

<comment><USER18> I will also plan to move some client apps to this if you support digital ocean. Would love notification on that.

<comment><AUTHOR> Thanks! We will announce it shortly. In the meantime you can vote up the feature on our site (Feedback panel) so you'd get immediate notification!

</comment></comment></comment></comment><comment><USER25> Awesome idea solving a real pain. Timely too given recent headaches with AWS sneezes.. Every time AWS has an issue, our site on Heroku is affected. Can you speak to SLA, downtime/uptime of service?

<comment><AUTHOR> We built Cloud 66 to combine the convenience of PaaS with control of having your own servers. Even if we are down, your servers will still be up on your own preferred cloud vendor serving your users! That's a win for everyone!

<comment><USER26> This is very cool stuff. Do you guys support (or do you plan to support) any type of cross-provider failover? I.e. if AWS goes down, auto re-deploy to Linode and handle the DNS re-routing, etc.?

<comment><AUTHOR> Great point! Yes. We already configure DNS records for the stack (load balancers and servers). This allows us to take the same cut of code and build scripts and execute them against another provider like Linode or Joyent when AWS has issues automatically.

<comment><USER26> THAT is awesome. Is that feature live? How is the failover route configured?

</comment></comment></comment></comment></comment><comment><USER27> This is an awesome idea. I've been looking for something with the flexibility of managed infrastructure but the ease of use of Heroku for a while. I'll definitely be trying it out.

</comment><comment><USER28> Heroku does more than rails apps. This seems to only do rails?

<comment><AUTHOR> You are absolutely right. We are trying to start by helping fellow Rails developers first, more frameworks are coming soon.

<comment><USER29> What's your plans for self-hosted realtime support (like Socket.io, which seems to be node-only)?

<comment><AUTHOR> Thanks for your question.

1\. node.js support is coming soon! 2\. We're going to have at least one self- hosted real-time push solution in our app store (think Socket.io or Faye). 3\. The whole reason we started Cloud 66 is to give developers more control over what traditional PaaS doesn't let you do. It's your server, you have full root shell access to it. If we don't do it (yet), you can always do it yourself!

</comment></comment></comment></comment><comment><USER30> No mention of what size instances are being created on aws seems a bit scary. Otherwise cool. I'd use it if it were self hosted and available for node.

<comment><USER6> Actually you get to choose what sizes you want (whichever cloud provider you choose). See here: [http://blog.cloud66.com/post/39922150128/custom-server- sizes...](http://blog.cloud66.com/post/39922150128/custom-server-sizes-are- here)

<comment><USER30> Cool I must have missed that in the video. Thanks!

<comment><USER22> There's a video?

<comment><AUTHOR> yup! <http://vimeo.com/54524424>

</comment></comment></comment></comment></comment><comment><USER31> Are you considering letting developers charge customers a flat or recurring fee for one-click installation of a preconfigured service?

Awesome service.

<comment><AUTHOR> Thanks! Would love to talk to you about this further. Can you drop us a line at firstname.lastname@example.com please?

</comment></comment><comment><USER32> Does this have a comparable add-on or plugin architecture?

One of the main bonuses of Heroku is not necessarily the web/worker process management but the easy ability to manage: email, SSL, nosql, and tons of other misc stuff you need for an app.

With limited dev resources, its way easier to just let Heroku handle all that config. The default app setup and sys admin is not as big a deal.

<comment><AUTHOR> That's a good point. Heroku is great because it takes away the pain through the add-ons.

Cloud 66 however doesn't end at the end of deployment. It actively manages the app by monitoring the processes, making it extremely easy to add load balancers, scale web servers or background processes, add SSL certificates, schedule backups with one click and a lot more.

It also has an app store which is growing. We would love to hear you feedback about those features.

</comment></comment><comment><USER33> Not having looked at this extensively I don't see what about it is more compelling then just using my own servers with git-deploy or a similar infrastructure. If i am going to run Ops i want to run Ops. If I am going to outsource it I want to outsource it. This seems like a middle ground that doesn't add too many compelling features to the party.

</comment><comment><USER34> Any plans to support nginx/unicorn? Love passenger, but I really need the rolling restarts...

<comment><USER6> Yep thats also already on our roadmap!

<comment><USER35> Guys I know it's hard to make estimations, but how soon can we expect nginx/unicorn AND digital ocean support ?

My app won't take the load in my current VM unless we run nginx / unicorn.

</comment></comment></comment><comment><USER36> Whoo, I was expecting a link to OpenRuko, an OpenSource clone of Heroku, working with all technologies supported by heroku, and with the same api. <https://github.com/openruko>

</comment><comment><USER37> How is this different from CloudFoundry? Which does this for more than rails apps?

<comment><AUTHOR> CloudFoundry is great to build a PaaS on your own servers and want to manage it. However if you really don't want to manage and run an infrastructure then you would probably don't want to run a system like CloudFoundry!

<comment><USER38> Why!?

<comment><AUTHOR> I assumed (perhaps wrongly) that if you don't want to deal with infrastructure you'd prefer PaaS solutions like Heroku and therefore you wouldn't want to manage not only a software package like CloudFoundry but also the servers that run it.

<comment><USER39> Well, Cloudfoundry actually offers both:

When you don't want to run the servers yourself, you can use services like appfog and nodejitsu (there may be more like those), which run a CloudFoundry stack.

When you decide "Hey, I want to run it on my server(s)", then you just setup their open source stack (there's even an automatic setup process for this) on your server and you're running on your own machine.

I assume I can't do that with your service, can I?

<comment><USER40> I don't believe nodejitsu runs on CloudFoundry. The other one I know of is Stackato.

<comment><USER39> Sorry, mixed them up: It's Joyent. And yes, the third of them is ActiveState (Stackato)

</comment></comment></comment></comment></comment></comment></comment><comment><USER41> Very cool! Bookmarked! Will definitely be trying this on my EC2 instances.

</comment><comment><USER42> Why does the FAQ say "Yes! You can deploy to one server for free forever"

Yet when I visit my account (signed up a while ago) it's forcing me to a credit card page regardless of which option I choose?

<comment><AUTHOR> For the first 30 days everything is free and no CC is required. After 30 days, you can have one server for free after entering your CC. This will only be charged if you add new servers to your stack.

</comment></comment><comment><USER43> for a still fairly new to intermediate developer like myself, this seems more work than running it on heroku. not a bad concept, but maybe for more advanced developers.

<comment><AUTHOR> Fair point. What can we do to make it easier for you?

</comment></comment><comment><USER44> Any love for python/django?

Or maybe will wok on top of the heroku buildpacks?

<comment><USER6> Yep - we've got Django in our roadmap too!

<comment><USER45> Is Play framework on the roadmap too?

</comment></comment></comment><comment><USER19> I see references to scaling web servers but not for dedicated database servers. Is this possible? I'm thinking specifically of hot standby PostgreSQL servers.

</comment><comment><USER46> 1\. What happens if I need a binary available on the server? (wkhtmltopdf)

2\. Can I choose the linux distribution?

3\. Can cron jobs be set up?

4\. What about stuff like scout/monit etc ?

5\. What about redis/memcaches/mysql/postgres?

<comment><AUTHOR> 1\. We support manifest files (in private beta now) to allow you just that. 2\. Yes. Both on the server (as you would do normally on any linux box) and through our CRON app. 3\. We provide minimal vital signs for all the servers: memory, disk and CPU. 4\. MySql and PostgreSQL are supported. Redis is coming soon. Memcache is after that.

However, it is always good to remember, all the boxes are yours and you have shell root access to them. So if we don't support something right now, you can always jump on the box and do it yourself the the Pro way!

<comment><USER46> Sounds great. The problem with dropping in via shell is that, launching servers become much problematic. I think if you can run custom chef/puppet scripts, that will solve this issue.

</comment></comment></comment><comment><USER47> What about server security updates? How do you handle normal package updates, restarting services after an update, etc?

<comment><AUTHOR> We monitor the software/packages/gem/libraries that _we_ deploy and warn users when there is an update or security issue in the dashboard. For some we take control of the upgrade and for some we don't.

We don't want to push our users to fixed upgrade windows, so we let them choose when it's convenient for their business to have the updates and then act accordingly.

</comment></comment><comment><USER22> I like the notifications when signed in. Is that regular JS or are you using something like Parse?

<comment><AUTHOR> Thanks! It's regular JS with CSS3

</comment></comment><comment><USER48> Is this really just Rails, or any Rack-based application (such as a Ramaze site)?

<comment><AUTHOR> This is Rails only for now. More Rack based frameworks are coming soon alongside node and others.

</comment></comment><comment><USER49> This, but Python hosting.

</comment><comment><USER50> Does it come with its own random load balancing, too?

Sorry, couldn't help it ;)

<comment><AUTHOR> :)

</comment></comment><comment><USER51> What about security? How do you address it?

<comment><AUTHOR> We provision the servers to be as secure as possible at the OS level using open source and industry tested best practices. If you are running on a cloud vendor like AWS you can benefit from added security layer provided by our partners at Dome 9 to provide network level security.

<comment><USER51> Thank you for responding. I'd like to see a page about security in your site. Its important.

<comment><USER52> Agreed. My first thought was: 'what is being done to secure these instances?' Transparency in security policies would be a welcome addition to your site!

</comment></comment></comment></comment><comment><USER53> isn't OpenShift Origin better?

<comment><AUTHOR> OpenShift is a great solution to build your PaaS. Cloud 66 is however provided to you as a service. So if you like PaaS because you don't want to manage or run an infrastructure then you probably wouldn't want to manage and run OpenShift (or CloudFoundry) either.

<comment><USER38> Why!? (Again)</comment></comment></comment>


Add bytecode cache to Ruby - <AUTHOR> https://github.com/github/ruby/pull/27 <comment><USER2> What's the relationship between github/ruby and ruby/ruby? It looks like they've diverged quite a far ways away from each other, but that might just be an artifact of which branches GitHub uses when comparing the two.

<comment><USER3> Seems like this is Github's (the company's) fork of Ruby. ruby/ruby seems like the official ruby.

<comment><USER4> Correct, Github uses their own fork to apply changes for their own needs.

<comment><USER2> Do you know how much they try to push their own changes back upstream?

<comment><USER5> Yes, Aman and Koichi work very closely, the main point of difference at the moment is the method cache patches, Koichi is working on getting something similar implemented in MRI

<comment><AUTHOR> Why something similar but not the same?

<comment><USER6> That is a very good question, and I also I'm curious to find out

<comment><AUTHOR> As if the Ruby Community has more then enough resources to improve on TWO Compiler / Interpreter at the same time. Isn't it better to work together then to reinvent the wheel?

Speaking of compiler, the JIT for Ruby development has been very quiet for months.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I wrote a benchmark that measures the speed of various VM parsers and the speedup that precompiling brings. I found that precompiling was a huge speed benefit: [http://blog.reverberate.org/2014/10/the-speed-of-python- ruby...](http://blog.reverberate.org/2014/10/the-speed-of-python-ruby-and- luas.html)

</comment><comment><USER8> Interesting...

The Lua community has found that bytecode is actually _slower_ to load than it is to generate from source: The extra latency of loading the (larger) bytecode from disk/ssd/flash, exceeds the cpu time to lex/parse.

<comment><USER9> On the other hand, Lua syntax is much simpler

(slightly out of date: [http://programmingisterrible.com/post/42432568185/how- to-par...](http://programmingisterrible.com/post/42432568185/how-to-parse- ruby))

<comment><USER8> > slightly out of date: > [http://programmingisterrible.com/post/42432568185/how-to- > par...](http://programmingisterrible.com/post/42432568185/how-to-parse-ruby)

Ouch.... Perhaps a lesson in making your language's grammar too complex: if you do, you'll eventually have to pre-compile.

<comment><USER10> So has Ruby joined the ranks of languages that formally cannot be parsed due to the halting problem?

I know Perl is in that category.

<comment><USER11> I don't think so. There are a few things that looks distinctly iffy in that respect on the surface, but they are resolved.

e.g. is "foo" a method call or an instance variable? You can't know in isolation, but it doesn't matter at parse time, as if it's part of a larger construct that is only valid as a method call, such as if there's an argument list after "foo", it is parsed as a method call. E.g:

        foo = 1
        foo(42)

will result in:

        test.rb:4:in `<main>': undefined method `foo' for main:Object (NoMethodError)

I think all of the potential cases that might have otherwise made Ruby impossible to formally parse are resolved in similar ways.

Now, there are certainly layering violations. The aforementioned example of "foo" by itself can only be resolved by determining whether or not "foo" is in scope as a local variable at the point it is referenced, for example, but you can opt to defer the decision until after parsing.

</comment></comment></comment></comment></comment><comment><USER12> How significant is the performance impact on a mid-large Ruby on Rails application?

<comment><USER13> It's mostly annoying in development when your mid-large Rails app takes 30s-2m to start-up and/or reload after an edit.

<comment><USER11> Most of the time that is likely due to bundler/rubygems stuffing your load path full and causing thousands of unnecessary stat calls.

The actual time spent loading/parsing files is in most cases a tiny fraction of the startup time of any large project using rubygems and bundler.

I counted several hundred thousand unnecessary stat calls on the biggest app I have, and ended up with a ugly hack where we trimmed the load path around each set of require's to only paths needed by that specific gem.

<comment><USER14> Or, as I've seen a few times, you have circular references in your rails asset includes.

</comment></comment></comment></comment><comment><USER15> Hah. .pyc files are one of the worst part of Python for developers.

export PYTHONDONTWRITEBYTECODE=true is the first thing anyone should be doing.

I guess it figures that we copy each others' mistakes.

<comment><USER16> I've been coding in Python for many years and I can count on one hand the number of times that this has actually caused me any problems.

<comment><USER15> What is the total amount of time you spent during those few times, although including the amount of time to learn what happened, and how many thousands of times larger is that amount than the sum total of the time saved by caching bytecode compilation every single time you loaded a pyc for every file you ever wrote?

<comment><USER16> Probably a few minutes spent. I'm not sure how to quantify the overhead of caching compiled bytecode, but I'm guessing it beats that.

<comment><USER15> It doesn't, which was my point :)

The overhead is _tiny_ , less than milliseconds for sane modules. It's a useless optimization, especially when it can be done at install time only, say, as opposed to for every module import, but even that is somewhat silly.

<comment><USER16> Without seeing any numbers, it doesn't mean much to me. I'm assuming someone much smarter than me has identified the benefit of bytecode caching and unless it really gets in my way, I see no need to do away with it.

</comment></comment></comment></comment></comment></comment><comment><USER17> Does anyone know, offhand (or have a good educated guess), on what the largest monolithic Ruby codebase in existence is? Is it GitHub?

<comment><AUTHOR> Cookpad from Japan?

[https://speakerdeck.com/a_matsuda/the-recipe-for-the- worlds-...](https://speakerdeck.com/a_matsuda/the-recipe-for-the-worlds- largest-rails-monolith)

50 million unique user / month 15,000 Req/Sec

I posted this awhile ago but didn't pulled much attention

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

</comment></comment><comment><USER6> what is the advantages of adding bytecode cache?

<comment><USER18> speculating: it allows you to still be fine with a slower parser. and this means you can theoretically make the parser smarter (like make it do some inference and catch some bugs at parse-time?) without worrying that much about performance. but then again, I can't imagine what kind of bugs could a parser catch for such a dynamic language like Ruby, so they're probably just doing it to shave some milliseconds from program-start-up time...

<comment><USER19> With huge libraries (like SpreeCommerce, for instance), startup time can be seconds or more even on recent hardware, and the vast majority of that code isn't changing between runs. So if every gem was cached, they could see radically faster times to load their test suites across their entire organization. It's well worth it even without a smarter parser.

</comment></comment></comment><comment><USER20> This is the equivalent of APC or OpCache in PHP's world?

<comment><USER21> PHP needs an opcache because its standard behaviour is to discard all state after each request - including all compiled bytecode - kind of emulating the CGI model.

Ruby web apps on the other hand tend to be run in a loop - the script never exits after a request, it just goes back to the top of the loop to accept the next request to serve.

e.g. [https://github.com/rack/rack/blob/master/lib/rack/handler/fa...](https://github.com/rack/rack/blob/master/lib/rack/handler/fastcgi.rb#L27)

            FCGI.each { |request|
              serve request, app
            }

It's nice because it completely decouples your app's startup time from request processing time, so you can do expensive setup stuff up-front without slowing down each request. The disadvantage to that is there's not much pressure to keep startup time low, since it's only happening once.

<comment><USER22> Yeah man, PHP makes scaling easy, it's shared nothing by default, do you even web scale bro? /s</comment></comment></comment>


Ask HN: How can banks use the Internet to better serve their customers? - <AUTHOR>

I work for a bank and recently submitted an idea which landed on the desk of someone fairly high up the organisation. To my surprise he now wants to meet me and discuss how the bank can use the internet in a better way to serve its customers.
I am keen to go to him with some ideas of my own but also would love to hear what the community thinks. I would imagine you all have bank accounts and everyone here is certainly passionate about the internet. How can the two marry in a better way? What would you like to see your bank implement that would be of benefit to you?
Thanks in advance for the comments. <comment><USER2> I may be biased as a designer and front end engineer, but almost every banking website I've seen is designed horribly. Now I know this isn't directly answering your question, although it is addressing how banks can better serve their customers.

Look at Mint. My bank _could_ offer what Mint does, since Mint is pulling in info from my bank– but they dont. A lot of what Mint is doing seems to be making the information easy to understand. Their UI is beautiful and their UX is intuitive. For me its hard to even understand why certain design decisions were made by my bank.

Beyond that, I would say to invest in mobile experiences. A lot of my interaction with my bank happens on the go as well. And while my banks iphone app is a better experience than the website, it is a little bit crippled.

You should checkout companies like Venmo and Square, who are really innovating in the area of mobile payments.

<comment><AUTHOR> Excellent, thanks. I will check out those companies that you mention.

As you say I think all bank website desginers must have gone to the same college and been taught by a flawed professer.

I think the biggest challenge for banks is to provide the enormous amounts of information that they hold on us in a clearer way. People get lost at the moment, as soon as banks can deliver information in a more straight forward way the sooner they will convert the traditionalists who insist on doing things at the branch. I am convinced people still feel they have to bank in a branch because the internet solution that banks have provided is just not good enough.

<comment><USER2> Your last point is interesting and I agree. I wonder when the tipping point for most people will be banking in a browser as opposed to a physical location. I definitely do not envy those who have to design for banks because their work is surely cut out for them. Such a large dataset and support for everything down to IE6 (even futher?) must be a serious challenge.

Also checkout BankSimple, they're gearing up to change online banking as we know it– so says the hype machine.

<comment><AUTHOR> BankSimple's founder has hit it on the head:

"If you log in to say Bank of America or Chase, the application is clunky, it feels very fragile, it breaks all the time, it's hard to find the information, it doesn't work like a machine. If you use Facebook, there's an expected way for things to work. It's a more pleasurable experience"

</comment></comment></comment></comment><comment><USER3> Recently my local bank (Kiwibank in NZ) launched a free online financial management service that I've been very impressed with. It automatically categories all my expenses and makes it easy to see where my money is going and set a budget. It also has an intuitive interface which is rare for a bank.

This page gives an overview of its features: <http://www.heaps.co.nz>

Aside from that banks should be aiming to make as many of their services as possible available online. Little things like setting up a new account should not require me go in to the bank just to fill out a form when the same process could be done online in only a few simple steps.

<comment><USER4> How does the categorisation work? Say I spend 1000 dollars at Walmart on a TV, what category does it show up as?

<comment><USER3> It sets the category based on the name of the company that it recognises. For example if I buy a tv it would recogise the name of the electronics store and put it under the Computers and Electronics category.

It's simple to manually categorise purchases from companies that is doesn't recognise and it remembers the category the next time.

<comment><USER4> So for companies that sell lots of different stuff, like Walmart, the categories are wrong? i.e. it will list my Walmart TV purchase as groceries? or my amazon TV purchase as books?

This seems like something that will break as companies diversify...

<comment><USER3> You can set the categories with the expense manually. It generally works pretty well.

New Zealand doesn't really have a Walmart type company that sells TVs with your groceries.

<comment><USER4> The reason I ask is that a bank in the UK also does this: and you can't do anything useful with the information it produces because you can never be sure if it got the categories right. Amazon is a good example.

</comment></comment></comment></comment></comment></comment><comment><AUTHOR> A really simple thing that banks could add is that in Englan when I login to my banks website and I then have a question, I have to pick up the phone, go through 100s of security questions and then I get to speak to someone and I get to ask my question. For the life of me I don't understand why there is not a live web chat on the page. I have already gone through security, I should be able to ping a question to someone online who then responds instantly. It would save an awful lot of hassle.

<comment><USER4> Some websites give you a security code that is valid for 15 minutes when you want to call them. The code allows you to skip telephone verification.

</comment></comment><comment><USER5> I've lived & worked in Ireland, New Zealand and the UK and I can categorically say that the UK online banking system is by far the worst.

My biggest issue is the time delay between making a purchase and that purchase reflecting on your account. The EFTPOS system in NZ is incredible. Almost all transactions are reflected within an hour on your account.

I think a lot of my issues are probably specific to my current bank so forgive me if this doesn't apply to the company you work for but one thing that really winds me up is that I have to physically attend a branch if I want to print of an official statement. On my online account I can print off a list of transactions but only after the transactions have been exported to an excel worksheet. How hard is it to pop up a PDF document with the banks header & footer and my transactions in between that I can print off on the spot?

/rant

<comment><AUTHOR> It is the same over here - I can print off Statements but they are not 'official' instead they are a list of transactions with the bank logo but they can not be used as a means of identification which is sometimes needed. I used to work in a call centre and this greatly frustrated people.

</comment></comment><comment><USER6> I don't know from where you are typing, but there's an excellent service here in Portugal called mbnet. It allows you to create a "virtual credit card" where you define a limit and the bank generates a credit card number for you with the amount you specify and with the validity of one month. I wouldn't make so much online purchases if it wasn't for this service.

Another service that would be great would be something like mint. I imagine it shouldn't be hard for a bank to at least categorize the expenses so clients could have a better picture on how they spend their money.

</comment><comment><USER7> The things that would get me to switch banks would be:

\- A system that helps me strategically save, pay off debt, etc., all integrated with the bank's online banking system.

\- The ability to deposit checks by submitting a photo of the front of the check via a website or iphone app.

\- No fees. Period.

\- A high interest savings account designed to get me to save more. Perhaps by adding extra interest if I reach a predefined goal and roll some of it into a CD.

\- A built-in line of credit to prevent overdrafts/fees and to encourage a more aggressive savings strategy.

\- Electronic signatures

\- Credit coaching. Help me take steps to get that 800 credit score. I think people value their relationship with a bank very highly, and this sort of thing would build tremendous trust/loyalty.

</comment><comment><USER8> Allow me to transfer money between bank accounts via online banking without crazy fees.

I currently transfer money between bank accounts by _writing myself checks_ , because my bank allows me to do that for free but electronic transfers cost money. This wastes my time and waste my bank's money since it results in needless paper shuffling.

<comment><USER9> A lot of banks (I'm assuming you are in the US) don't charge for initiating pull requests (or receiving them from another institution). While it seems a bit counterintuitive, I've always moved money between banks by setting up the transfer from the receiving end.

<comment><USER8> I'm in Canada. Initiating a pull request is basically what I do (for free) when I deposit a check, but there's no way to do it electronically (at least, not through the online banking website).

</comment></comment></comment><comment><USER10> Easy ways to open and close new accounts using the web interface.

Operations like closing out an old savings account, opening a new one, etc. are simple to describe operationally, but aren't possible/are very hard online.

Also, detailed explanations of bank-initiated charges in the transaction list. I'd like to know why my account has started charging me $4 a month, and "Maintenance Fee" isn't very descriptive. Especially since it seems to be new.

</comment><comment><USER11> \- Send me emails when any amount arrives or is removed from the account

\- Based off my age, give me recommendations on how I could potentially grow the money I have, or what I should stick the money in (medical?)

\- Allow me check my current balance using the *<pin># code of mobile providers

\- Setup one-click transfers to some pre-approved accounts so I don't need to go through the security hassle with those particular accounts

</comment><comment><USER12> I would love some useful charts. Let me see a histogram of how much enters and leaves my account on a particular day of the week or a particular week of the month. Give me a visualization of how much money from my debit card goes where. Line items are not great at giving me a sense of where I could trim my budget.

Give me an interactive budget "wizard" for reaching particular goals and identifying major cost centers. For an example that's almost wholly not applicable to me, "If you cancel cable and bring lunch to work every day, you can pay off your student loans two years sooner." With this sort of thing, it's easier to make the case for thrift to others.

</comment><comment><USER13> there are two things that immediately come to mind:

1\. APIs. 2\. Authorization/Authentication

I should be able to get my data out and do things with it. I should be able to do so without fear.

My current banks online security its mostly theatre and the API is a csv download. Must banks I know just need to catch up.

</comment><comment><USER14> For a long time i've wanted to disrupt[1] the UK banking industry and i even came up with a rough plan on what i'd do. While searching around i came across banksimple.com which are pretty much doing a similar thing but in the US, i know a good few people on HN are aware of them.

Unfortunately its highly unlikely i'll ever get to do what i'd like to because i'm simply not in a position to do it, nor have any experience in the banking industry. It'll have to be one of those dreams that never happens.

To me the number one benefit of internet banking is the convenience and less bureaucracy but even then the actual banking industry itself imposes limits on internet banking because of this and stifles innovation. I'd like to see API's for banks and i believe theres ways to do it safely and securely but i really cant see something like that happening in the next 10 years because of the industry behind the online fascia.

[1] i detest using that word in this context

</comment><comment><USER15> Predict spending. If I pay my rent, student loans, etc. every month I should be able to flag that as an expected expense and see what's left over. Basically show current both the current account balance and how much I can probably spend before I overdraw the account.

Also you are not limited to showing numbers there are plenty of ways to show account information graphically. A line chart of account balance that allows you to hover over and find transactions is innovative (for a bank) if minimally useful. How about a chart of how much money you had in your account on this day over the past year. etc.

PS: The bank may might lose out on fees but they can gain a lot of customer loyalty and some good publicity.

</comment><comment><USER16> The difficult thing that you're going to run into is that most banks (outside of the big guys (Wells Fargo, Citi, BoA, etc) you're going to be utilizing an "off the shelf" system for all of your online banking. There's only a handfull of these vendors out there controlling the market, so little to no incentive for them to innovate and make things easier so requesting new features, updated UI/UX and so on are very slow to be added. In this space "mobile banking" still very much means SMS messages.

Now "in front" of the loggin theres many ways you can utilize the web to make things better. Look at how any receptacle consumer service is using the tools available to market and communicate with their customers, general great customer service through email, twitter and so on are all good options but will require some due-diligence brought on by compliance regulations.

Good luck and let us know how it goes!

</comment><comment><USER17> • I require my bank to be secure, but for the love of god, stop going through ridiculous hoops to convince me that you're secure. Keep reminding me, and I get more convinced that I have something to worry about. Part of the genius of Mint was that they only reminded you about security when you needed to worry about it. • Make transferring, sending, and allotting money easy. It's my money, allow me to do things like set a minimum balance with alerts when I get near it, auto-bill pay should be simple, transferring money to a friend ought to be simpler than writing a check. • Focus on UX and not features. I'd rather have a bank website that simple to use than one that's loaded with features and is unnavigable.

</comment><comment><USER18> For U.S. banks, add better protection for wire transfers. I had to set up a separate account to accept wire transfers from international customers. After the wire transfer is complete, I shift the money to my main account to ensure no unauthorized withdrawals are made.

I would like a provision that all outbound wire transfers must be authorized by the account holder (me). I don't currently do outbound wire transfers, but if I did, the bank could send out an email notification when one was requested. I could then log onto my account and approve/disapprove it.

</comment><comment><USER19> The internet is good for one thing information. Providing tools to make that information available and easy to understand is pretty much the best you can do. There are several businesses in the make sense of my bank's information category aping them might be a first step(mint and the like.) Budgeting and getting alerts when certain budget limits are met say a text when 90% of my monthly entertainment budget is gone, or better yet be able to check my entertainment budget balance by web enabled phone so I can decide if I really need that new gizmo.

<comment><AUTHOR> That's a great idea. My housemates all use a notepad and pen to write their weekly/monthly budget out and like you say they seperate that into different categories. Their bank should provide a form for them to write in their budget and then like you say they should then get alerted when they are about to go over their budget.

This is partiuclarly the case when someone approaches their overdraft limit. In England if you go past this limit you get charged £38 even if you a few pence past the limit. This has been heavily in the news over here and banks should help customers by alerting them when they get near to that limit.

<comment><USER20> Yes, absolutely this.

And add in the ability to add various types of payments, track direct debits and other regular payments.

I just moved into my own place and keeping track of budget/bills is a nightmare :) it would be excellent to replace my current manual spreadsheet with a more automated online system.

</comment></comment></comment><comment><USER21> One more thing: Please make sure that with the websites navigation doesn't have any server side state. To be more precise: After the overhaul of Deutsche Bank's online banking I can no longer, say, review my balances in one window and prepare a transfer in the next, because the bank assumes that I only have one window open and has some awful server side state that pretends to know what I am looking at.

(So I can open two windows, but whatever I navigated to most recently, decides where I can go to from both windows.)

</comment><comment><USER22> I've lost faith in banks. Part of why I'm even here is because I love the internet and how it gives "power to the people"

Me, I want to see modernized banks (inspired by P2P-lending like Prosper and LendingClub) that give people more control and risk/reward. Ideally, a better cut of the profits. In my opinion much of this subprime lending crap could've been avoided if it's people putting their own money at risk vs bankers putting it at risk for us.

Maybe I'm dreaming.

<comment><USER21> Apropos pipedreams: If there was no deposit insurance, people would watch their banks much closer, and banks would be more conserative and open, because they need to convince deposit holders you that they won't go bust.

</comment></comment><comment> mike-cardwell This is almost certainly a pipe dream, but I would love it if my bank started PGP signing (and encrypting if I provide my public key) all of their email correspondance with me.

</comment><comment><USER23> I do work for moneyStrands and we do banking stuff in a similar way Mint does. We also license our technology to banks because they lack a modern and graphical way to digest their customers financial data. eg: how much did I spend on restaurants in the latest 6 months? And if it's too much and I want to save, why not setup a budget that allows me to know when I reached it ? Or setting up alerts depending on configurable parameters in an easy way.

</comment><comment><USER24> It has always bugged me that my world of warcraft account and poker accounts have and encourage the use of a rsa tokens and my bank doesn't even offer it

</comment><comment><USER25> The local bank here has a nifty iPhone/Android app that lets you check all your balances and transfer funds to other people. I have no idea if every country has those.

[http://www.sampopankki.fi/fi- fi/Henkiloasiakkaat/mobiilipalv...](http://www.sampopankki.fi/fi- fi/Henkiloasiakkaat/mobiilipalvelut/iphone/Pages/default.aspx)

</comment><comment><AUTHOR> Could Twitter be of any use to banks? I have noticed that very few, if any, banks use Twitter. If they used it in a Dell like fashion to promote banks products at a reduced price or if they used it in a purely customer help way would this be of benefit?

<comment><USER26> In Australia, the major banks already do, such as Westpac, nab and ANZ.

I'm guessing the potential to provide a public focus point for negative sentiment towards the banks could scare quite a few away from it perhaps?

</comment></comment><comment><USER27> Take a look at <http://www.mint.com> for some ideas about providing useful account use and budgeting information to users.

</comment><comment><USER28> I would like to be able to split my account into virtual ones with set budgets and then issue myself cards (and limits) for each: savings, food, bills, fun etc.

</comment><comment><USER21> Please keep us on informed on HN of how your meeting went.

<comment><AUTHOR> Yes I definitely will. There is so much great stuff here that I can use. The quality of discussion within Hacker News never ceases to amaze me. I don't think big company execs realise this community exists, if they did and they asked the appropriate questions they could really do some great things which would then in turn benefit all it's customers (a lot of us in this community) greatly. Will report back in two weeks on how it went.

Thanks again.

</comment></comment><comment> jgh- Banks seem to encourage people to make really terrible passwords. Why does my password have to be 6 characters and only alphanumeric?</comment>


Any Half-Decent Hacker Could Break into Mar-A-Lago. We Tested It - <AUTHOR> http://gizmodo.com/any-half-decent-hacker-could-break-into-mar-a-lago-we-1795276155 <comment><USER2> I would bet that the Russians have already bugged all of his Club Houses and Mar -A -Lago. They probably already have people on the inside working as staff. That's the problem with the President not using Camp David or other Government facilities for hosting guests or RR. His establishments are a huge security hole.</comment>


Google+ Cheat Sheet - <AUTHOR> https://plus.google.com/photos/108443027359212340995/albums/5625655838907702241/5625655876328285922

<comment><USER2> Great! another Google+ post. I feel so left out.

<comment><USER3> My address is in my profile, if you want an invite, send me an email.

<comment><USER2> done :)

</comment></comment></comment><comment><USER4> Looks awesome. I still wish I had a Google+ invite!</comment>


From Isaac Newton to the Genius Bar - <AUTHOR> http://nautil.us/issue/18/genius/from-isaac-newton-to-the-genius-bar-rd

<comment><USER2> Great article. I am in the process of printing photos of geniuses to hang in my office (so far I just have Knuth and Erdos), but it made me think about the possible absurdity of my worship of genius.</comment>


Williams & Stone: The Twitter Revolution - <AUTHOR> http://online.wsj.com/article/SB124000817787330413.html

<comment><USER2> Ha. What a joke. Ultimate start-up-story? I'm sure the ultimate start-up story would involve monetization.</comment>


How to Tear Apart a Tesla Model S and Kill the Car Mid-Drive - <AUTHOR> http://www.forbes.com/sites/thomasbrewster/2015/08/06/tesla-hacking-at-def-con/ <comment><AUTHOR> "But whilst they had much praise for the luxury vehicle, they were still able to compromise it, cracking open doors, altering the dashboards and even shutting the car off."</comment>


BTC is the price of an Apple share - <AUTHOR> http://bitcoincharts.com/charts/mtgoxUSD#rg60ztgSzm1g10zm2g25zv

<comment><USER2> I feel compelled to point out that comparing share price alone is _terribly, horribly wrong_.

To illustrate, the phrase "BTC is the price of an Apple share" could, by some people, be taken to mean "BitCoin is worth more than Apple". In reality, the BitCoin market cap right now is $6 billion, and Apple's is $472 billion.

Comparing shares (and, by extension, the value of BTC) on price alone is worse than useless. Unfortunately many people insist on doing it, especially (at least it seems to me) in the US (which I guess makes sense, since the Dow Jones is weighted not on market cap, but share price, an equally nonsensical way of doing things).

<comment><AUTHOR> Valid point and agreed but I just wanted to highlight the ridiculous rise in BTC price and been happily cashing in on trades</comment></comment>


Carbon capture system turns CO2 into electricity and hydrogen fuel - <AUTHOR> https://newatlas.com/hybrid-co2-capture-hydrogen-system/58145/ <comment><USER2> From paper - this rechargeable battery uses sodium and co2 during discharge, creating baking soda and releasing hydrogen (which can be used for anything) from water. You can recharge sodium for anode releasing oxygen and chloride (from saltwater). Also cathode is nonconsumable and doesn't clog with reactants or some other elements which could be in solution (typical problem with similar batteries). So it essentially binds CO2 in baking soda on discharge and doesn't release it on recharge. Perfect for carbon capture. Also it can run continuously, just needs changing anodes occasionally. Recharge can be in another cell or even in some factory.

</comment><comment><USER3> "the remaining half of the CO2 was recovered from the electrolyte as plain old baking soda"

This means for every C (carbon) molecule we remove, we need one Na (sodium) molecule right?

<comment><USER4> "A sodium metal anode is placed in an organic electrolyte" \- no - you need metallic sodium. this takes energy. you get some of that energy back as electricity and 'stored' in the hydrogen by letting it turn back into an ion and forming some carbonate.

<comment><USER5> So the key question is what is the energy efficiency, and how does it compare with other carbon capture technologies.

</comment></comment></comment><comment><USER6> You can't _create_ hydrogen from CO2. That's an ugly title.

The model adds an electrolyte solution with hydrogen, and it's that hydrogen that is liberated... but the article doesn't acknowledge the depletion of the electrolyte.</comment>


Show HN: Card Proxy Generator – Generate printable game cards from JSON - <AUTHOR> http://mitchkeenan.com/cardproxy/ <comment><AUTHOR> Just got off work and saw all the comments. I wrote this up a few months ago to make custom cards for a mafia/werewolf type game I've been playing at work (as some guessed). It's 100% client side and uses jsPDF[0]. You can find the (very rough) source on my github[1]. Future plans include better styling and some changes to allow easier clearing of the template. Thanks!

[0]: [https://github.com/MrRio/jsPDF](https://github.com/MrRio/jsPDF)

[1]: [https://github.com/konamacona/cardproxy](https://github.com/konamacona/cardproxy)

</comment><comment><USER2> I like the simplicity of the UX, I would find it much more usable open source so I can adjust the template easily.

I wrote a similar thing for my board game site [0], using yml files as data sources with jekyll includes to generate the html and a html2canvas conversion to make printable images of individual cards that I have to manually put on a print-sheet -- not quite as streamlined as this, and I would love to learn from the rest of this person's flow architecture on how to generate a pdf, make it downloadable, expose the json editor. I know I could learn each of these on my own, but this is so close to my usecase it would be nice.

[0]: [https://gitlab.com/keerthik/dicestorm/](https://gitlab.com/keerthik/dicestorm/)

<comment><USER3> I'm surprised this community is not more adamant about source being shared alongside a "Show HN" post. It seems like a no-brainer to include source when showing a group of software enthusiasts your non-commercial project.

<comment><USER4> [https://github.com/konamacona/cardproxy](https://github.com/konamacona/cardproxy)

</comment></comment></comment><comment><USER5> I'm using Squib ([https://github.com/andymeneely/squib](https://github.com/andymeneely/squib)) for this at the moment.

I have several of my current prototypes in Squib, with CI where it builds the artifacts (PNGs of each card and a PDF).

I'd like to one day set it up so it pushes the artifacts to Tabletopia ([https://tabletopia.com/](https://tabletopia.com/)), but I haven't found the time yet.

</comment><comment><USER6> Nice!

Boardgamegeek has a list of card design resources:

[https://boardgamegeek.com/thread/991506/resources-card- game-...](https://boardgamegeek.com/thread/991506/resources-card-game-makers)

Most are of the painstakingly-click-and-type variety, though. There are a handful based around a more site-generatorish workflow that look pretty sweet:

[https://github.com/vaemendis/hccd/](https://github.com/vaemendis/hccd/)

[https://github.com/ghostsquad/pycard](https://github.com/ghostsquad/pycard)

[http://cardpen.mcdemarco.net/doc/index.html](http://cardpen.mcdemarco.net/doc/index.html)

</comment><comment><USER7> There's a bunch of (usually pretty arcane) software for generating cards. I like this because it takes JSON, as opposed to having to click around a GUI.

The real challenge though is to get a nice design. You should be able to put in some templates/generate some templates, and add image URIs/upload images. That would be truly awesome.

<comment><USER8> Agreed 110% on the ability to include images, maybe a key for an image URL and another key for the location on the card using a simple grid-reference?

Great suggestion, hope OP sees it because I'm already very interested in using this tool.

</comment></comment><comment><USER9> Awesome! Just the tool I needed. I am developing my own board game and the hustle to create the cards to print and test was getting in the way of actually thinking about the game and the rules.

A small suggestion: add a _image-top_ and a _image-bottom_ fields where you put a URL and the PDF includes the image on the card.

<comment><USER10> If you want a more featureful tool, but still data-oriented and built with a programming-slant, I highly recommend Squib[1]. It has tons of rendering and processing options, and fairly thorough documentation (unlike pretty much everything else out there).

[1] - [http://squib.rocks/](http://squib.rocks/)

<comment><USER11> Thanks, this looks like exactly what I need. I hacked together something similar in python a few years back, but it wasn't as elegant and general.

</comment></comment></comment><comment><USER12> I built something quite similar to this for my brother, who plays Magic: The Gathering. He likes to build decks and test them before he commits to buying the cards in it, so he asked if I could help him generate printable decks to test with. Luckily, somebody has already compiled all of the Magic: The Gathering seasons and published it openly here: [https://github.com/mtgjson/mtgjson](https://github.com/mtgjson/mtgjson).

My previous system was a hacky Python-based HTML pre-renderer that was annoying to maintain - I was in the process of rewriting it but have dropped off on development recently. You can see a WIP of it here: [https://curtislusmore.github.io/mtg/](https://curtislusmore.github.io/mtg/)

</comment><comment><USER13> I imagine it'd be pretty straightforward to convert that JSON into a CSV for InDesign's Data Merge feature, once you're past prototyping and ready for product-ready printing. [http://blog.ironmarkgames.com/creating-prototype- cards-using...](http://blog.ironmarkgames.com/creating-prototype-cards-using- adobe-indesign-and-data-merge/)

</comment><comment><USER14> Nice app. I guess this is a perfect match for [https://remotestorage.io/](https://remotestorage.io/) integration. People would be able to save and tweak their card templates without worrying.

</comment><comment><USER15> A while ago I made a "Micropoly" board game about the Microsoft Monopoly, with cards for various dot-com companies (Copyleft (L) 1999 Free Monopoly Foundation), using an xml file to define the cards and board and an ugly Perl script to render them with PostScript!

[http://donhopkins.com/home/Micropoly/](http://donhopkins.com/home/Micropoly/)

>Update: I've written an ugly "openopoly.pl" Perl script, and a "micropoly.xml" data file, that describes the specifics of the game. The Perl script reads in and parses the XML database, and writes out PostScript and HTML to render the graphics and web pages. It embeds EPS files with images and cartoons in the PostScript file, and then runs it all through GhostScript, to render out PDF and JPG files with the printable images of the board. It currently writes out one HTML file with links to the small and large pictures of all the property cards, and soon it will write out a web page for each property, and link them all together, as well as an image map for the entire board. Most of the logos, cartoons, and other graphics haven't been put in yet, but the basic functionality for producing the game is there. This is work in progress, but here's a preview of the automatically generated web page index of properties, the full sized board micropoly-board-whole.pdf [1,672k], the paginated board micropoly-board-split.pdf [10,028k, sorry but I'll optimize the PostScript not to draw clipped images and it will reduce in size], and the printable cards micropoly-cards.pdf [5087k], as well as the micropoly.xml file from which it was all generated.

[http://donhopkins.com/home/Micropoly/micropoly.xml](http://donhopkins.com/home/Micropoly/micropoly.xml)

[http://donhopkins.com/home/Micropoly/micropoly-board- whole.p...](http://donhopkins.com/home/Micropoly/micropoly-board-whole.pdf)

[http://donhopkins.com/home/Micropoly/micropoly- cards.pdf](http://donhopkins.com/home/Micropoly/micropoly-cards.pdf)

The idea (which I never finished but encourage anyone else to pick up and run with) was to develop a fully skinnable parametrizable Monopoly compatible game template (or variants like Anti-Monopoly), that you could print out and glue onto cardboard, or even play online!

[http://donhopkins.com/home/Micropoly/notes.html](http://donhopkins.com/home/Micropoly/notes.html)

Monopoly is essentially the original "Open Source Game" designed by Elizabeth Magie and shared among Atlantic City Quakers. Then it was illegitimately taken over and patented by a giant corporation. Parker Brothers' story about Charles Darrow was marketing bullshit.

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

There's also an interesting story about Ralph Anspach's decade-long "Anti- Monopoly" lawsuit:

[http://www.antimonopoly.com/](http://www.antimonopoly.com/)

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

[https://en.wikipedia.org/wiki/Anti- Monopoly](https://en.wikipedia.org/wiki/Anti-Monopoly)

[https://www.washingtoncitypaper.com/columns/straight- dope/ar...](https://www.washingtoncitypaper.com/columns/straight- dope/article/13040530/straight-dope-monopolys-anti-capitalist-origins)

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

>Also in the 1970s, Professor Ralph Anspach, who had himself published a board game intended to illustrate the principles of both monopolies and trust busting, fought Parker Brothers and its then parent company, General Mills, over the copyright and trademarks of the Monopoly board game. Through the research of Anspach and others, much of the early history of the game was "rediscovered" and entered into official United States court records. Because of the lengthy court process, including appeals, the legal status of Parker Brothers' copyright and trademarks on the game was not settled until 1985. The game's name remains a registered trademark of Parker Brothers, as do its specific design elements; other elements of the game are still protected under copyright law. At the conclusion of the court case, the game's logo and graphic design elements became part of a larger Monopoly brand, licensed by Parker Brothers' parent companies onto a variety of items through the present day. Despite the "rediscovery" of the board game's early history in the 1970s and 1980s, and several books and journal articles on the subject, Hasbro (Parker Brothers' current parent company) did not acknowledge any of the game's history before Charles Darrow on its official Monopoly website as recently as June 2012. Nor did Hasbro acknowledge anyone other than Darrow in materials published or sponsored by them, at least as recently as 2009.

</comment><comment><USER16> Not sure if this supports mobile, but I'm just getting a blank new window when I hit "Save".

<comment><USER17> Expect a pdf file download. Worked on my phone.

("Save" should be "Download" or something else more clear.)

<comment><USER16> Yeah, I wasn't sure what to expect after hitting the button. It does work for me in Mobile Safari, but not Chrome (iOS).

</comment></comment></comment><comment><USER18> This is a super cool idea, I know it would be also be super useful for teachers

</comment><comment><USER19> This is pretty cool!

</comment><comment><USER20> it will be great to have utf8 support.

</comment><comment><USER21> what do you use this for?

<comment><USER22> Seems like it is meant to generate printable pdfs with game gards for RPGs.

When you click save it downloads a pdf that you can print.

<comment><USER21> yeah, I'm just curious what OP uses it for herself...what made him make it in the first place!

<comment><USER8> I was just introduced to the Fluxx card-game system this weekend; it's a system with different variants, Zombies, Monsters, there's even a version for the TV show Firefly.

Looking at the cards generated they seem to resemble the style/format of Fluxx and I wonder if OP plays themselves. I for one find it to be really neat, and may even use it myself for my weekly table-top night.

<comment><USER21> Aha, great point! Fluxx is fantastic...it reminds me a bit of Nomic [1] and 1000 Blank White Cards [2].

Have you tried making your own Fluxx deck?

[1] [http://legacy.earlham.edu/~peters/writing/nomic.htm](http://legacy.earlham.edu/~peters/writing/nomic.htm) [2]

<comment><USER8> Not _yet_ but I very much want to; I'm thinking of doing one for the Star Wars universe :D

</comment></comment></comment></comment></comment></comment><comment><USER23> Okay, not sure why it's on top of HN.

<comment><USER24> Basic programming tasks amaze HN nowadays

<comment><USER25> Just because the task is basic does not make it uninteresting.

People dismiss so much stuff with "I could have done that...". Well, you didn't, and they did. So there.

(In this case, the task is probably more annoying than you think. There's a lot of little details involved in getting the alignment correct, getting the fonts wrapped, generating the PDF, etc.)</comment></comment></comment>


Ask HN: Will a Computer Science degree be worth anything in 15 years? - d-d <comment><AUTHOR> Just because more people want one doesn't change the difficulty of getting one.

So yes, it will still be worth something.

I suspect the question you're asking is really something along the lines of "will a CS degree guarantee a high paying job in 15 years", and that's a bit harder to answer. It really doesn't guarantee anything today, but people who can think logically and do things to create value will generally be able to find employment. I doubt that will change any time in the future.

</comment><comment><USER2> Sure. Why wouldn't it be?

<comment> d-d It's getting very popular, and I'm thinking in terms of supply and demand. Also, the world will be very different.

<comment><USER3> If you can add 15 years of practical experience on top of your education, i fail to see why you should have become obsolete (in 15 years).</comment></comment></comment>


Show HN: Screencast: An Introduction to Rust - <AUTHOR> https://vimeo.com/53397221

<comment><AUTHOR> I am launching my product - <http://askfriendsfb.com> Please consider visiting. Thanks!</comment>


Procella: Unifying serving and analytical data at YouTube - <AUTHOR> https://blog.acolyer.org/2019/09/11/procella/ <comment><USER2> This paper finally get published! This is basically Dremel (or Big Query) capable of handling both real-time and ad-hoc analytic queries. Also, being able to serve the production traffic and do efficient ad-hoc analysis on the same data source has a potential of drastic simplification on infrastructures; sometime a scale of data doesn't allow us to use a single representation for all use cases and this fact brings lots of unnecessary complications. Artus also made interesting design trade-offs on performance. I hope more details on this format could be published later.

</comment><comment><USER3> I'm skeptical of the comparison to Capacitor. Best I can tell from the paper they're using about the same techniques from the seminal Abadi et al's compressed columnar storage paper. As a result I'm having a hard time believing that Artus is several times faster than Capacitor on similar analytical workloads, unless we're seeing the hand picked queries here, where it does really well, or unless the performance difference is attributable to better metadata caching and/or the ability to use inverted indexes on those particular queries (such indexes are usually not much help unless you're running a point query), rather than the lower-level format and runtime itself.

TBH Artus sounds like Capacitor with indexes and a different header format to me. Probably something mmap-able like FlatBuffer if I were to guess, I don't have any direct info

<comment><USER4> Having their own file format could really help them out as it lets them be sole reader and writer of it. File formats for warehouses are generally a little out of date in terms of performance because it requires all the compute engines to be able to read them and some will lag behind others in updating.

The metadata caching helps a ton I'm sure too. When you have to issue the same get file handle on lots of nodes instead of just say one then you lose out a lot on tight latencies and can cause lots of problems for the underlying storage system

<comment><USER3> This isn't actually about "get file handle", although for, say, a million files that could take a while. This is about having metadata (columns, types, ranges for range partitions, etc) already available to be used in query planning.

But these kinds of optimizations only give you dramatic benefits on very specific and relatively small subset of queries rather than on some realistically mixed workload, so to have a fair comparison you'd need to run this realistic workload on a realistic dataset.

</comment></comment></comment><comment><USER5> Seems cool. But a lot of the things this blog gets excited over are better understood as features of Google's platform that are available to and exploited by many of their systems. Eg disaggregated storage with append-only immutable files is just what Colossus does.

<comment><USER4> The benefits of using googles internal tools isn't what this paper is mainly about though. They do benefit from it but much more of the paper is explaining how extremely careful caching and having a deep control over the file format allows them to do things insanely fast.

Reading from colossus is only done if it misses the data cache and the data cache has a 90% hit rate. So in effect they're getting in memory speeds instead of needing to always hit storage.

Otherwise there wouldnt be too much of a difference versus dremel.</comment></comment>


Is Climate Change Behind the Syrian Civil War? - <AUTHOR> http://www.historicalclimatology.com/blog/is-climate-change-behind-the-syrian-civil-war <comment><USER2> Just don't look at the policy behind the curtain!

[https://sites.google.com/site/onedemocraticstatesite/archive...](https://sites.google.com/site/onedemocraticstatesite/archives/what- wikileaks-showed-us-about-u-s-motivations-in-syria)

"This is a key reason that WikiLeaks' publishing of U.S. diplomatic cables was so important."

"A December 13, 2006 cable [1], "Influencing the SARG [Syrian government] in the End of 2006," indicates that _as far back as 2006_ – five years before "Arab Spring" protests in Syria – _destabilizing the Syrian government was a central motivation of U.S. policy._ "

Accidentally, also before the drought.

<comment><USER3> Who _didn 't_ have a policy of destabilizing Syria? Besides the Great and perhaps the Little Satan, many Sunni entities, right? With the Kurds and Turks as an additional wildcard.

At the very least, Assad's only allies right now are Russia and various Shia groups willing to work with the Alawites, specifically Hezbollah, various Iraqi Shia, and Iran....

<comment><USER2> The quote was about "destabilizing Syrian government" not simply "Syria."

And the important point is: five years before the protests.

U.S. happens to be the only remaining superpower, so others aren't that relevant, especially to understand why Obama insisted so long that "Assad must go" and why the "moderates" are "supported" or "trained."

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

</comment></comment></comment><comment><USER4> The original paper [1] is more interesting to read.

"Whether it was a primary or substantial factor is impossible to know, but drought can lead to devastating consequences when coupled with preexisting acute vulnerability, caused by poor policies and unsustainable land use practices in Syria's case and perpetuated by the slow and ineffective response of the Assad regime (13)"

[1] [http://www.pnas.org/content/112/11/3241.full.pdf](http://www.pnas.org/content/112/11/3241.full.pdf)

</comment><comment><USER5> Comic: [http://yearsoflivingdangerously.tumblr.com/post/86898140738/...](http://yearsoflivingdangerously.tumblr.com/post/86898140738/this- comic-was-produced-in-partnership-by-years-of)

<comment><USER6> its like literally peaking into the future

<comment><USER7> May. 26 2014

</comment></comment></comment><comment><USER8> Not like the drought is limited to the Syrian border. Israel is their neighbor and they have been doing fine through the drought (the non-occupied part that is, still sucks to be Palestinian) because they had the foresight to build desalination plants: [http://www.haaretz.com/israel- news/science/.premium-1.659949](http://www.haaretz.com/israel- news/science/.premium-1.659949) Like wine yards in the middle of a freaking desert: [http://www.israel21c.org/winemakers-revive-ancient-negev- win...](http://www.israel21c.org/winemakers-revive-ancient-negev-wine-route/) So maybe it is climate change's fault, maybe it is stupid politicians not investing in the infrastructure their people need...

<comment><USER9> Syria's government is pretty indefensible, but its also worth noting that their GDP was approximately a third of Israel's before the civil war began [1]. In most circumstances, climate change primarily effects the poorest- which is viciously ironic, since they typically had the least to do with bringing it about.

[1] [https://www.google.com/publicdata/explore?ds=d5bncppjof8f9_&...](https://www.google.com/publicdata/explore?ds=d5bncppjof8f9_&ctype=l&strail=false&bcs=d&nselm=h&met_y=ny_gdp_mktp_cd&scale_y=lin&ind_y=false&rdim=region&idim=country:ISR:EGY:SYR&ifdim=region&hl=en&dl=en&ind=false)

</comment></comment><comment><USER3> While I don't remember any serious evidence behind a bit of what you can legitimately call "right wing propaganda": when the Arab "Spring" started it was proposed that one of the causes was how US policy of burning food as fuel (corn ethanol) was driving up world food prices. This was in reference most especially to Egypt, which has to import half its calories.

To the extent there may have been a secular increase in the price of basic grains at the same time all this was happening through Syria, it's worth considering.

</comment><comment><USER10> But in general, we have less war in the world now than 60 or even 30 years ago. So either there is no negative climate change, or this theory is far from perfect.

<comment><USER11> I don't get the connection. Nobody is claiming that all wars in the last 30 to 60 years are due to climate change.

</comment></comment><comment><USER12> There's historical precedent. The reason the American Revolution was in Massachusetts was that Boston was full of apprentices sent in from the countryside. Young men, barely paid, under pressure, and fully aware that of 7-8 apprentices in a house, only one can succeed the master. And at the age when men think with their dongs.

<comment><USER2> I don't see that the article mentions explicitly: the population of Syria was 9 million in 1980, 12 million in 1990 and 20 million in 2010. So there were certainly a lot of young people, including young men.

<comment><USER13> I didn't know Syria's population grew so much in that last 30 years. The effects a nearly completely stagnant economy must have been really compounded by that.

</comment></comment></comment><comment><USER14> From Wikipedia:

Betteridge's law of headlines is an adage that states: "Any headline that ends in a question mark can be answered by the word no."

This idea of climate change causing the Syrian civil war has been making the rounds on various social media sites, and reeks of propaganda. Even the slightest bit of research peeling back the history of events in Syria will show that the war is mainly due to influence by external parties.

<comment><USER15> Syria became seriously unstable after having the largest drought in history. That has obvious political and social consequences.

So no, what climate change does is create the conditions for greater sensibility to the external actors' influence. There's nothing disputable in that assertion.

</comment></comment><comment><USER16> Right, and the Benghazi attacks were the result of a video and if you like your doctor, keep your doctor.</comment>


Room 77 (Personalized Hotel Room Recommendations) - <AUTHOR> http://www.room77.com/

<comment><USER2> Since this title is incredibly uninformative, I'll just point this is personalized hotel room recommendations. Why isn't that in the title?

<comment><AUTHOR> Yeah, what was I thinking. Advice noted and title updated. BTW I'm in the Launch conference and this was the first startup presented and was well liked by everyone.

</comment></comment><comment><USER3> Thanks for posting about us HardyLeung! Swing by our booth if you have time and hope you're enjoying the launch conference.

</comment><comment><USER3> Does anyone have any questions about our technology? Tell me what you guys think of it!

</comment><comment><USER4> Unrelated: <http://www.99rooms.com/> ;-)</comment>


Plink: Collaborative Music Generation - <AUTHOR> https://plink.in/ <comment><USER2> That is quite fun, might be the highlight of my morning!

Thanks for sharing!

</comment><comment><USER3> Wow, this is so good! Loved it.</comment>