Show HN: VirtKick – Self-hosted Digital Ocean - <AUTHOR> https://www.virtkick.io/ <comment><USER2> This is an awesome project! Thanks for choosing the AGPLv3!

I tried to create a VM on the demo site, and got a nice Ruby error message next to the VM's name on the 'Machines' page: undefined method `+' for nil:NilClass

Still, I'm very excited about this!

If anyone from the project reads this: Where is the appropriate place to request support for an additional GNU/Linux distribution? I would love to get GNU Guix running on this.

Edit: It seems that I have jumped the gun with my enthusiasm for this project. They will be selling proprietary re-licensed versions as a reward and require copyright assignment for contributions.

VirtKick, please reconsider your decision to require copyright assignment. I want my contributions to the free software community to remain free.

<comment><USER3> > I want my contributions to the free software community to remain free.

And you don't feel that the AGPLv3 ensures that...? Or you mean "I don't want my contributions to be distributed under any other license"?

<comment><USER4> If you have a contributor assignment, the assignee can choose to release the changes under a proprietary license.

<comment><USER3> > If you have a contributor assignment, the assignee can choose to release the > changes under a proprietary license.

Exactly! Hence my request for clarification (see above).

If more explanation is necessary: What davexunit is saying is that he wants his contributions to remain free. The AGPLv3 ensures that, even with copyright assignment. But what I guess davexunit really means is that he wants to be sure that all contributors, present and future, are locked into the AGPLv3 forever. I'm not saying the latter is wrong, I'm just saying you should call a spade a spade.

<comment><USER4> It doesn't ensure they remain free - a copyright assignment allows the contributions to be used as part of a proprietary release.

</comment></comment></comment></comment></comment><comment><USER5> This looks cool, but I can't see why contributors should assign you copyright so you can sell proprietary versions of VirtKick. Very few free software projects have copyright assignment requirements (GNU being a notable exception).

<comment><USER6> CLA's are both good and bad. The good thing is that the software project has more flexibility when it comes to licenses, but the bad is that they have more flexibility when it comes to licenses...

</comment></comment><comment><USER7> So what exactly is the advantage of using this layer over the existing libvirt ecosystem? If this is supposed to manage your VMs for you instead of you using the existing libvirt tools, I can see a number of disadvantages.

* No virt-manager with SPICE, networking configuration, and other features

* No virt-install for very easy creation of VMs, even straight from distro repository URLs

* No virsh for command-line management

* In general, no seamless use of any of the vast ecosystem of tools around libvirt

Is the only advantage that it supports Docker? In that case, why not just add support for Docker into libvirt, and Docker images into virt-install? Is the advantage that it's a web UI for libvirt? There are certainly plenty of those already, but I guess creating another one is fine. I really don't see the use- case.

<comment><AUTHOR> What one regards as a feature, other regard as misfeatures. If you like virt- manager, then VirtKick isn't really for you. We value a simple UI more than virt-manager, and REST API more than virsh. We don't say your way is wrong. It's just more difficult.

Existing libvirt clients, at least those that we know of, aren't super reliable though. libvirt stucks when there's too much happening on the HV, or denies jobs without even trying (e.g. when a pool has async jobs). A backend that schedules tasks for background execution is needed for that (and we have it), so even now we're not "just" a frontend for libvirt.

The use case is a very simple panel with zero virt knowledge needed to start.

Thanks for your comment.

<comment><USER7> > so even now we're not "just" a frontend for libvirt.

I would certainly prefer that virtkick was 'just a frontend' for libvirt. Then the people who are making use of virtkick can seamlessly rely on the huge amount of existing software that supports libvirt. You can provide a REST API that is translated to the existing libvirt API rather than replacing it.

If you have task-scheduling improvements for libvirt, they should be upstreamed rather than only exist in your software, so everyone can benefit from them.

</comment></comment></comment><comment><USER8> So just for clarity. I'll be able to download your source/package, install, go to the web interface and start spinning up VM instances on the same machine?

Are the extras like monitoring 3rd party integrations that I'll have to pay for, or actual features of VirtKick?

<comment><AUTHOR> Excactly right - plus on remote hypervisors too.

External monitoring integration, and off-site status page, will be actual features of VirtKick. Think of VirtKick is a 1-click installable panel that you can use both on your desktop and as a VPS provider. Instead of paid features, we want it to be forever free - instead, we aim to be crowdfunded. [https://www.indiegogo.com/projects/virtkick-take-cloud- back](https://www.indiegogo.com/projects/virtkick-take-cloud-back)

<comment><USER9> > Excactly right - plus on remote hypervisors too.

Things get crazy here (in a good way). You could create federation where you allow remote hypervisor management from a central authority (your app). #ArchiveTeam needs their VM running for the latest web property shutdown? Here, have access to my overpowered home router to run a few tiny VMs to help the cause.

Knocked it out of the park here guys (and/or gals)! Awesome job.

<comment><USER10> (co-founder here) we try to not get ahead of ourselves, working on the basics first but it's sometimes nice to think big as well and you have some interesting ideas sir, thanks!

</comment></comment></comment></comment><comment><USER11> This looks interesting: I've often wanted something with more features than just kvm+libvirt but less complexity than OpenStack or other "private cloud" projects. The one thing that worries me about the pitch is the emphasis on the management panel. I don't want to create a VM in 5 clicks, I want to create it in one API call.

<comment><AUTHOR> Thanks for your comment. UI comes first as every user will hit it. API comes next. We planned DigitalOcean-compatible API altogether with a CLI. Looks like we removed this from our website by mistake (will get it back real quick), but it's listed in our IGG campaign: [https://www.indiegogo.com/projects/virtkick- take-cloud-back](https://www.indiegogo.com/projects/virtkick-take-cloud-back)

<comment><USER11> That sounds like a good approach; reimplementing an existing API like EC2 or DO makes it easier to integrate your software with tools like Vagrant and Terraform.

<comment><AUTHOR> Exactly right, we value existing tools - that's what makes DO so strong. :)

</comment></comment></comment></comment><comment><USER12> I feel as though this is one step above just a web page with an email box. Aside from listing a suite of popular OSS, you haven't explained what this app does. Is it similar to Panamax in that it offers you a UI, but only for one box / Flynn or Deis which is trying to create an open source Heroku / something completely different?

<comment><AUTHOR> Flynn, Deis, Heroku are PaaS - they are focused on applications.

VirtKick is like DigitalOcean or Linode - they are focused on machines (and containers, that you think of as machines). You install it on your Linux desktop (for localhost hacking), or home or dedicated server (for something more).

Will try to express it a little bit better. Thanks for your feedback.

</comment></comment><comment><USER13> This is a great project. However, given the nature of the project and the license, would this then require any software hosted with it to be AGPLv3? Could I run software that is a mix of Apache, MIT, and Erlang Public License in a VirtKick container without violating AGPLv3?

<comment><USER14> All infra code needs to carry the MIT license or similar, IMHO. It's infrastructure.

<comment><USER2> Virtkick has a web application component, which makes the AGPL a great choice. Without the 'Affero' component, anyone could host a version of VirtKick with proprietary modifications.

<comment><USER15> What's wrong with that? Don't we want to encourage proprietary companies to host using open software?

<comment><USER16> The point would be to enforce the openness of changes to the source. If you go in and add some things, change the design etc. and pass it off as your own, someone can take the changes you've made and do the same. Not only that, but you're required, not just encouraged, to make public any changes, which may or may not be improvements.

<comment><USER15> So if I'm trying to use this in my proprietary product, I can either a) use it and open up all my code, or b) use a better-licensed, MIT/BSD/APSL2-compatible code.

I also might point out, as a person working on a proprietary service, it's in our interest to contribute upstream. Who wants to maintain compatibility patches? It's in EVERYONE's best interest to have solid, open infrastructure used by everyone (yes, even evil closed companies like google)

</comment></comment></comment></comment></comment></comment><comment><USER17> Trying this, seeing a LOT of '[virtm] libvirt: XML-RPC error : Cannot recv data: ssh: connect to host localhost port 22: Connection refused: Connection reset by peer'

This is because I don't use port 22 for SSH. Can I fix this easily?

<comment><AUTHOR> I'm sorry but we missed your comment. Just created an issue to track this problem: [https://github.com/virtkick/virtkick/issues/65](https://github.com/virtkick/virtkick/issues/65) Please subscribe to the issue so you'll get the updates.

</comment></comment><comment><USER18> It seems we have HN'ed the service; after creating a Debian image: "internal error: pool 'HDD' has asynchronous jobs running."

<comment><AUTHOR> Yep. Our 128 GB hypervisor wasn't enough. We redirected traffic to a static HTML prototype, so - at least - you guys have a chance to see the design and planned features. [https://demo.virtkick.io/](https://demo.virtkick.io/)

<comment><USER18> another thing: all the add-on links redirect to the same DNS add-on

<comment><AUTHOR> Oh, forgot to actually add something there. To give you a better understanding, it'll work the same way as on Heroku.

<comment><USER18> thanks, I'll be checking the project out for sure

</comment></comment></comment></comment></comment><comment><USER19> So what is this? A project based off of openstack, a complete re-working of an openstack-like environment or something different?

<comment><AUTHOR> A complete re-working - as OpenStack is too big if you're not a corporation with a very big infrastructure.

<comment><USER20> I disagree - OpenStack scales down perfectly to two-machine or even (one- machine) deployments (if you don't want HA).

It is a pain to configure, but that's the price you pay for flexibility, future-proofing (scalability) and its' true community development model.

<comment><AUTHOR> "Pain to configure" is a blocker here, though. That's why we sacrifice flexibility for simplicity. OpenStack is great for environments that need it - VirtKick won't fit them.

</comment></comment></comment></comment><comment><USER21> seems the backend is python, and the web app is ruby. Curious as to why you decided to use 2 different languages.

<comment><USER10> (co-founder here) The backend will be ruby as well, we used webvirtmgr only as a means to kickstart the project and have something usable quickly. :) On a general note though we aren't afraid to mix languages. For example node.js is used to handle web sockets for the VNC console as well as for the starter application.

</comment></comment><comment><USER22> I would not consider nor call this "Self-hosted DigitalOcean" \- Interesting project never the less.

</comment><comment><USER23> So excited to see this! Great job guys!

</comment><comment><USER24> I've been following this for a while, and it looks like an awesome way to roll your own cloud!

</comment><comment><USER25> I actually wanted to create something like this. Does it do ssh key injection when VMS are created?

<comment><AUTHOR> Not at this point (we mount an ISO as CD), but we've got it planned: [https://github.com/virtkick/virtkick/issues/6](https://github.com/virtkick/virtkick/issues/6)

<comment><USER25> Perfect! I wanted to host my own DO type thing for personal projects and I tried "webvirtmgr" which has a nice control panel for libvirt, but the creator insists that ssh key injection is out of the scope of his project. I'm glad to see this happening!

<comment><AUTHOR> You may be surprised that VirtKick wraps WebVirtMgr and uses it as a JSON API for libvirt. :-) This is a temporary solution but does the job - it allowed us to start real quick with features that users care about, instead of harnessing libvirt. (Of course, SSH key injection is in a scope of our project! [https://github.com/virtkick/virtkick/issues/6](https://github.com/virtkick/virtkick/issues/6))

<comment><USER25> Ah, I didn't see that before. So without SSH key injection, what's the current primary method of gaining access to VMS created from cloud images that have no password & ssh key? I'm eager to start using it to host a throwaway jenkins server locally. Do you manually edit in ssh key/password or is there some tool to use?

</comment></comment></comment></comment></comment><comment><USER26> Looking forward to it, you'll see my contribution!

<comment><AUTHOR> Thanks, can't wait!

</comment></comment><comment><USER27> How does this compare to something like Cloud Foundry?

<comment><AUTHOR> Cloud Foundry is a self-hosted Heroku. Both are PaaS (but it's you who provide the "P" with the former).

VirtKick is a self-hosted DigitalOcean. Both are very simple IaaS (but it's you who provide the "I" with the former)

Does it explain?

<comment><USER27> Yes. Quite clear actually too.

My follow-up then would be how would this compare to OpenStack? If they serve the same purpose, where do you want to differentiate from OpenStack?

</comment></comment></comment><comment><USER28> Without any judgement over the project and its quality, I would not call it "Self-hosted DO".

Because DigitalOcean, basically, is a way to get VMs without self-hosting them!

<comment><USER10> (co-founder here) Of course your perspective on DigigalOcean is valid but we think of it simply as a good philosophy to deliver a VM to a user in a seamless, straightforward way - that's the part that we want achieve and let users to self-host. Essentially, you could build your own DigitalOcean using VirtKick. Does it make sense for you? Doesn't mean you should rush and start your own business .. you can run it privately for your own needs or for your company's needs.

<comment><USER28> Got downvoted for this...

I honestly value DO for the service of providing VMs, and I don't care to run my private VMs. We also have dedicated servers, which run docker directly.

</comment></comment></comment><comment><USER29> Website offline, github page - [https://github.com/virtkick/virtkick](https://github.com/virtkick/virtkick)

<comment><AUTHOR> [https://www.virtkick.io/](https://www.virtkick.io/) works OK, but it seems you killed [https://alpha.virtkick.io/](https://alpha.virtkick.io/) (our 128 GB hypervisor wasn't enough to handle load). [https://demo.virtkick.io/](https://demo.virtkick.io/) is a static HTML prototype to get familiar with planned features.

</comment></comment><comment><USER30> No LXC on the map? :(

<comment><USER31> Docker works with LXC

<comment><USER32> Docker moved out of lxc long time ago

<comment><USER33> Docker by default uses their own libcontainer now but you can change that. In fact last time I checked it supported quite a few via execution drivers like OpenVZ, systemd-nspawn, libvirt-lxc, libvirt-sandbox, qemu/kvm, BSD Jails, Solaris Zones, chroot

<comment><USER34> actually it only does two, lxc and libcontainer (aka native) [https://github.com/docker/docker/blob/master/daemon/execdriv...](https://github.com/docker/docker/blob/master/daemon/execdriver/execdrivers/execdrivers.go)

</comment></comment></comment></comment></comment><comment><USER35> some documentation...?

<comment><AUTHOR> Not at this point. We're focusing on features now. However, installing an alpha is a matter of 4 commands, give it a try: [https://github.com/virtkick/virtkick-starter#virtkick- take-c...](https://github.com/virtkick/virtkick-starter#virtkick-take-cloud- back)</comment></comment>


Our classic electronics surplus stores are disappearing. Can they be saved? - <AUTHOR> https://www.sparkfun.com/news/2691 <comment><AUTHOR> HN discussion on the recent closure of Weird Stuff : [https://news.ycombinator.com/item?id=16797286](https://news.ycombinator.com/item?id=16797286)

To me there's a disconnect here: On the one hand one can argue we're leaving in a golden age of democratization of making, with so many people interested in it, esp. young ones. OTOH, this. Any thoughts?

I've always looked similar stores in Chicago, any recommendations?</comment>


Ask HN: How does your site income break down? - <AUTHOR>

Percentage wise, I'm looking for something like this:

  premium subscriptions - 15%
  adsense - 20%
  adbrite - 10%
  t-shirts - 11%
  direct sales advertising - 5%
  eBay affiliate program  - 3%
  Amazon affiliate program - 1%
  CJ affiliate programs - 1%
 <comment><USER2> 100%: Selling things to people for money.

<comment><USER3> Are the people upvoting this also selling directly to end users? Or just upvoting to agree that it is a good revenue model :/

<comment><USER4> Both: I am licensing to companies myself, and yeah, it's also a damn good revenue model.

</comment></comment></comment><comment><USER5> A few different sites w/ diff models:

      Consumer facing listings site
      90% advertising (prem ad partners + adsense)
      10% affiliate

      Consumer facing subscription
      98% subscriptions
      1% advertising
      1% affiliate

      Consumer facing pay per use
      100% customer payments

<comment> a-priori Just curious: on the second one, serving ads doesn't bring in much income, and it might even drive people away. Have you considered removing them? If so, what was the result?

<comment><USER5> The percentage is so low because it's not shown on much of the site. Paying subscribers don't ever see ads. It only shows for the free account and for some long tail SEO pages we have. We probably should remove them and just put up-sell copy there though...

</comment></comment></comment><comment><USER6> 90% subscriptions (monthly renewals, $19.95)

10% advertising (adsense)

The sample you provide leaves a rather large hole to be explained.

<comment><AUTHOR> oh those aren't real numbers, I just gave examples of some options, since I want it a little bit more detailed than "advertising"

<comment><USER6> Ok, so, since you're asking us, what are your numbers ?

<comment><AUTHOR> august:

adsense - 37%

tribal fusion - 26%

direct ad sales - 17%

CJ affiliate ads - 16%

donations - 4%

<comment><USER6> Thank you!

Interesting the 'donations' column. And tribal fusion looks like a pretty serious contender for adsense wrt to income.

That's a nice datapoint to have.

If you want to trade 'absolutes' drop me a line.

<comment><AUTHOR> Tribal fusion is good if you have a lot of page views but few clicks(they just do CPM ads, but are pretty much top dog in the space, so they can get better rates), but you need a lot of traffic to get in.

You need about 5K uniques per day to get in, although that number varies by category...for example I hear that if you have a game website, you'll need 20K uniques per day to get in.

I just needed CPM since I get a lot of page views per user, average is only ~6 pages, but that number is distorted by all the one page wonders from when the site hits some social network. The actual users who come to the site from niche specific sources, do about 20 pages per hit.

<comment><USER6> Lots of pageviews/uniques is not my problem, getting enough people to click the ads is. Adsense scores horrible on one site we run because of that.

I will definitely sign up and let you know how it worked out.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> 100% Adsense: $1.50 Adsense revenue from 10,000 unique visitors so far.

<comment><USER8> AdSense is such a rude awakening.

</comment></comment><comment><USER9> 1\. Sponsorships

2\. Direct advertising

3\. Adsense

1 + 2 are sometimes blurred

2 + 3 are sometimes reversed

...as the other guy said your own numbers don't add up. And furthermore they are out of order.

...and we try not to just break even

</comment><comment><USER10> Income breakdown:

100% projectwonderful. Advertising space.

However, my site is not a web application or anything. It is just an encyclopedia on purely all things open source gaming, and the only one in the universe. As a result, I doubt there are many ways to monentize the traffic.

It gave me nice money to booststrap my game development site, although I still need to make it "real serious as in not-just-for-fun" startup firm.

<comment><USER11> What's the url of your site?

<comment><USER10> Since you asked, <http://libregamewiki.org>

</comment></comment></comment><comment><USER12> We're the platform provider in a two-sided genealogy market (genealogy document clients on one side, genealogy lookup providers on the other.) We take a commission from providers (15% of their selling price) and a processing charge from clients (10% of the provider's selling price.)

So our income breaks down as:

client processing charge: 40%

provider commission: 60%

</comment><comment><USER13> Ours breaks down something like this:

One-time fees: 30% Subscriptions: 60% Transaction fees: 8% Service/consulting: 2%

</comment><comment><USER14> 100% no income, I run my site because I love to (no linky).

</comment><comment><USER15> 100% from donations, 0% from AdSense. Donations facilitated by <http://pledgie.com/> .

</comment><comment><USER16> 100% premium subscriptions (monthly)

</comment><comment><USER17> 100% Monthly subscriptions.

</comment><comment><USER18> premium subscriptions - 99.9999% Adsense - 0.0001%

(Sorry, just had to say it out - Adsense just hasn't worked for me)

</comment><comment><USER19> Adsense: 99% Donations: 1%

</comment><comment><USER3> adsense: 90%+</comment>


Steve Jobs to Valleywag at 2:20 AM: "Why are you so bitter?" - <AUTHOR> http://venturebeat.com/2010/05/15/steve-jobs-to-valleywag-why-are-you-so-bitter/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Venturebeat+(VentureBeat)

<comment><USER2> It's a great question. Why are people so bitter? We have several really good SmartPhone platforms to choose from today. Looks like the tablet market will be as competitive. So if we're not being forced into one platform and have the freedom to simply buy another product that suits our needs what's the real issue here? The post-PC era is going to be about making technology accessible to everyone. Is this bitterness maybe from the old guard who _likes_ a world where they get to be the tech savvy computer genius their friends & family rely on? Or have they built their identity around being one of the privileged elite who are educated enough to do complex and interesting things with technology? Are they offended by the idea a company might choose not to design products specifically for their needs? There's definitely some deeper issues here. Also if Dylan was 20 today he would probably be more concerned about real world issues like climate change, human rights, the corporate take over of America, the ever growing inequality between the rich and poor, etc. I gotta believe his choice of which telephone to buy might be kinda far down the list of concerns.

</comment><comment><USER3> "By the way, what have you done that's so great? Do you create anything, or just criticise others work and belittle their motivations?"

Burn.

<comment><USER4> Upvoted for hilarity factor. But from a logical standpoint this is really a bad argument. Writing often has a destructive purpose; what the person has "created" has very little to do with whether his criticism is valid or not.

<comment><USER5> Yeah, it's also a pretty weird attitude. Certainly not one that scientifically or engineering-minded people should have. If someone alleges that your physics experiment has a problem, the proper answer isn't: "Oh yeah? Well I've got tenure and recently won a major award in my field. What kind of physics discoveries have _you_ made lately?" Scientists actually lose a lot of reputation if they start getting that sort of attitude--- it's been the sad fate of some late-career scientists.

<comment><USER6> But unlike a physics experiment, the decisions about open or closed platforms are moral. It's the equivalent of criticizing Gandhi for some minor detail of his fasting, to which he says "no, this is how I will fast, because this is my fasting and my movement". "Oh, and when have you ever started a movement? Or do you just criticize others?"

<comment><USER7> Btw, it's this type of close-mindedness and insularity that leads to tremendous abuses in society. Witness the Catholic abuse scandals. Can one criticize the Church without being a member or part of its leadership structure or even without believing in God? I hope so.

<comment><USER6> Did you seriously just equate curating the App Store with raping children? And get 5 points for it?

</comment></comment></comment></comment></comment></comment><comment><USER8> Internet drama really has come a long way, hasn't it?

<comment><USER9> Indeed. Instead of arguing with Apple fanbois on your favorite forum, you can have the exact same inane and irrelevant argument with one of Apple's co- founders! And it even ends with namecalling and a personal attacks! I love it.

</comment></comment><comment><USER10> It's good to be reminded that Jobs really does think he's doing the right thing. He's wrong, but he does seem to genuinely believe it.

<comment><USER11> No, he is right. If you don't want to make great apps, you are free not to make them, or to make that what you think would be great with Flash for another platforms (but note that evan Adobe can't make the demo which doesn't crash on these other platforms(!)).

Exactly the selection of what makes his platform is what makes it unique and, to people who buy the product, better than other offerings.

</comment></comment><comment><USER12> As a programmer I thought that preventing the use of some language on a platform by contract really sucked, but I've seen applications written in flash on the IPhone since and they are painfully slow.

I don't have an IPhone but I can understand that having lots of applications in the store and not knowing whether an application you try would be slow or fast would really feel like a lottery. It's sad because the adobe flash tool are great animation tools, and I don't know of anything coming close on the Iphone.

The impact on the battery would be unsolvable too. Sometimes it's better to avoid issues.

<comment><USER13> "The impact on the battery would be unsolvable too."

That simply is not true. Flash on Android does not destroy the battery, going off of what testers, developers have reported as well as the video demo that plays video in Flash for a while and shows the impact on the battery life.

Also, your comment does not speak to the fact that Apple is banning the Flash- to-native iPhone app compiler. That does not fall victim to the Flash-is-slow scenario you're offering.

Also, poorly written Flash apps _can_ be slow. Poorly written iOS apps _can_ be slow as well.

<comment><USER12> Yes the impact of the battery would be unsolvable. Even if it isn't very bad, just a bit bad, the issue is that you have all that extra layer, consuming battery life. And battery life is probably the biggest issue in portable devices these days. There is no way to put a bigger one to solve the problem. There is no bigger one, and there won't be one in the next years probably.

Yes, the flash to native ban suck but it's probably not the way the flash works on the iphone with cs5 given the performance I've seen. As a programmer, it has no sense to vorbid a language, as every language are sort of equivalent in the end.

I would like to see flash works on iphone, and androids but the current port is slow for even the simplest thing. Even a single movie clip was slow on what I've seen. It's not possible to write a responsive flash app if even that is slow. There is no code, it can't be poorly written...

</comment></comment></comment><comment><USER14> I love that there is no reply after Steve's final question. What DOES this guy make?

<comment><USER9> I don't think that really matters. Imagine someone _makes_ a disease, and starts infecting people with it. Should you really dismiss the guy who says, "hey, this disease is bad, stop infecting people with it" simply because he doesn't make a vaccine?

If anything, not making anything means you are less likely to be biased. Steve likes the iPad because he made it, not because it's intrinsically good. This biases his views on how it affects the software world.

Anyway, making something is good, but not making doesn't mean that your commentary on other people's products is not useful.

<comment><USER15> _Anyway, making something is good, but not making something doesn't mean you lose any credibility._

It means you don't have credibility to start with.

<comment><USER7> and what has Steve Jobs literally _made_ himself as opposed to telling others what to make? Jobs has _made_ less than probably most people on HN. Let's hear it for the countless thousands of engineers and designers who break their backs for Steve so he can be literally lord it over those who obviously aren't the great "maker" that he is.

<comment><USER16> For one, Apple Computers.

<comment><USER7> sorry, most of that early work was done by Woz. please demonstrate any significant code written or schematics created by Jobs.

<comment><USER16> My apologies, I wasn't clear. I was speaking specifically about the company itself.

</comment></comment></comment></comment></comment></comment></comment><comment><USER17> Except for that ridiculous moralizing about porn (firstly, the platform should not be designed to censor content and secondly, stopping porn by not having Flash seems stupidly inefficient), Jobs is perfectly right. It's their platform and they can choose what to offer. While not an Apple user, I am nevertheless thoroughly enjoying Adobe's problems - been burned by crappy Flash plugins on Linux and I feel a sane and open wrapper for video is long overdue. Go suck a bag of dicks, Adobe. Your indispensible Flash is getting less so with every effort such as this one.

<comment><USER18> And another one that didn't get it. The mails are not about Flash videos on the web. They are about writing cross platform programs that are not running on a flash plugin on the iPhone but are cross compiled to ObjC.

The "but developers can choose whether they want to write their programm for iPhone OS or for other platforms"-argument is so ridiculous, it makes me cry. In practice people have no choice but to develop for iPhone OS (because it's the biggest app platform) and then, if money/time/effort allows, write a second app for the rest of the world. And i think, as a developer i can complain and bitch all day about it, even if it won't change something. Of course, Steve can do whatever he likes with the platform. If developers like that is another question.

</comment></comment><comment><USER19> It looks like some commenters here and on the linked site actually believe this is a genuine email exchange with the real Steve Jobs... Why?

<comment><USER20> It looks like you don't believe that it's even possible. Why?

<comment><USER19> It feels like it is more likely that this is made up than Jobs actually replying to some random dudes email.

</comment></comment></comment><comment><USER21> Heh, I chuckled pretty hard at the Skunkworks joke.

</comment><comment><USER22> I think Steve Jobs has hired Dan Lyons as an email assistant!</comment>


Finding Your "First Business Hire" - <AUTHOR> http://vcmike.wordpress.com/2008/10/01/finding-your-first-business-hire/ <comment><USER2> Interesting post, but he seems to stop halfway through -- he never answers the question implied in the title.</comment>


Why being invited to try Circle made me think about a whole load of other stuff - <AUTHOR> https://gist.github.com/robert-b-clarke/7872713

<comment><USER2> I think the biggest problem I am reading here is the author making a bunch of assumptions about what the app does or doesn't do without even trying it out at all.

<comment><USER3> This morning I spoke to someone who had installed it; it had SMSd everyone in her contacts, and she was understandably not too happy. It's not just an assumption that they're misusing permissions.

You are asking the author to assume that apps that ask for broad permissions are trustworthy. There have been far too many counterexamples for that position to be tenable.

</comment></comment><comment><USER4> Funny, I've actually installed Circle the other day, after receiving multiple requests from friends over facebook - and hated it. Initial problem was, the options of logging in where through Facebook, twitter, or email - but the email option said it would take up to 24 hours to approve... really? and it didn't seem functional - so i had to choose between twitter or Facebook. The user interface kept jumping from one style to another between login options, making it look non-legitimate. It also got my location wrong, with no option to change it (I'm on the border between two cities) showing me events that where too far. I was so frustrated with it, I un-installed it within 10 minutes - so I still think theres a market for an app like this, Circle is doing it wrong.

</comment><comment><USER5> Really interesting read, it's a weird feeling to 1) to see a very similar startup in the same space make "evil" choices you turned down and 2) frustratingly see them be more successful than you. I'm working on a startup in Vermont, which has a similar amount of startup acclaim as Huddersfield, competing in a space where there's about 2 million Y-Combinator-backed, ex- Googler, triple Stanford-Harvard-MIT dropout founded Silicon Valley startups with tons of money that want to build something viral that at least pulls a ton of user's data.

I would be interested to hear more of your takeaways, like what you would do differently and if you think you do have a shot at going against those well- funded giants.

<comment><AUTHOR> Things I would do differently... I think my product is too clearly the work of an idealistic technical person, and is slightly dated in the way it just expects people to join in because it will be useful if everyone used it. It's completely different from Circle in every way, not just when it comes to things that can be considered "evil". For example I've purposefully made choices like "it shouldn't need a dedicated mobile app", or "users shouldn't have to register to see content" from a purely functional perspective.

I did always view the idea as quite risky and I probably wouldn't have gone for it as a "pure startup". In this case I felt it was ok to do it as it could bump start my web dev business.

Good luck with your venture. I don't think being in Huddersfield is ultimately the reason why people haven't taken to LampNote. It was just difficult to get any local hype initially, and that certainly slowed me down

<comment><USER5> Thanks for the reply. I think that all makes sense and it sounds like you've gained some great perspective from the experience. Good luck on your next venture, and definitely stay idealistic.

</comment></comment></comment><comment><USER6> First of all, unless you are in SF or another tech city, I wouldn't even try relying on your local city in order to build your company. You have to think about the internet as your startup scene, and focus on having a good presence there (twitter, etc.). I think trying to be too local with an internet product is a mistake for most companies.

To some extent the social space is riddled with a lack of ethics, mainly because it's effective and users are fickle. But there are a lot of other spaces where you don't have to make such tradeoffs and can still build a business. Maybe those would be a better fit for how you want to run your company?

Unfortunately, ethics kind of go out the door when you've got major investors that you want to provide a positive return to. Imagine the pressure for Circle to provide a return, and then imagine whether you'd even want to have that kind of pressure on you every day (and they've been around for a while and aren't huge yet, so I'm guessing it's by no means an easy ride for them either).

<comment><AUTHOR> Some fair points. I didn't necessarily feel that I was dependent on the local media and tech scene, it was a more the case that they I felt they weren't doing their job. Even if they just wrote a blog post saying "this guy's an idiot, what he's doing will never work" it would have got a few people talking and generated a decent inbound link. Also "hyperlocal" (yuk - the H word) stuff is easier to grow if you can get a concentration of users close to each other.

</comment></comment><comment><USER7> Am the only one who always confuses this with Circle ([http://www.circle.com/](http://www.circle.com/)), a bitcoin-based competitor to Square (presumably).

</comment><comment><USER8> Also see the "The Circle", a recently-published dystopian novel by Dave Eggers about a social network of the same name.

The story/plot/characters are meh, but I give it 5 stars for provoking thoughts about hyper-connectedness, net neutrality, surveillance, over-sharing on social networks, the ubiquity of technology, etc.

[http://www.amazon.com/The-Circle-Dave- Eggers/dp/0385351399](http://www.amazon.com/The-Circle-Dave- Eggers/dp/0385351399)

</comment><comment><USER9> Why did you decide to call it LampNote? Seems pretty hard for someone to guess what the app is about with that name.

<comment><AUTHOR> Yes, it's a reference to notices posted onto lampposts. A lot of people said they loved the name.

I did wonder how well it would travel, whether or not people from outside the UK stuck notices on lampposts, if they called them lampposts etc.

<comment><USER10> Here in North America, these sorts of signs are attached to any pole that can handle them, but powerline poles are favourites because they're wood (and therefore staple-friendly). Toronto has community posting boards that have started going up (put up by our beneficent advertisers, Astral Media, who would love to get out of that obligation and just advertise more).

<comment><AUTHOR> Thanks for the info</comment></comment></comment></comment>


Apache Arrow 1.0 - <AUTHOR> https://arrow.apache.org/blog/2020/07/24/1.0.0-release/ <comment><USER3> Parquet/arrow is a great format for Pandas - fast and nicely compact in terms of file size for those of us who don't have the luxury of directly attached NVMe SSDs and where I/O bottlenecks are a consideration.

Even after issues with its inability to map datetime64 values properly, I was reasonably happy with my design choice.

I became less happy on discovering that it's very weak as an interchange format for cross-language work.

In my case I wanted to use some existing JVM-based tooling. This caused huge pain. The Jvm/Java library/API is a complete mess, sorry, and if people are complaining about the Python/C++ documentation, there's basically nothing for the Java library. It's barely useable and the dependencies are horrific - <USER2> whole thing is mingled with hadoop dependencies - even the API itself.

And the API is barely above exposing the file-format. Nothing like "load this parquet file" into some object which you can then query for it's contents - you're dealing with blocks and sections and other file-format level entities.

The other issue is caused its flexibility - for example Panda's dataframes are written with what's effectively a bunch of "extension metadata" which means it works great for reading and writing pandas from Python but don't expect anything to be able to work with the files out-of-the-box in other languages.

In the end, the only way I could get reliable reading and writing from the JVM was to only store numeric and string data from the Python side. Even then it feels flakey - with a bunch of hadoop warnings and deprecation warnings. I know the JVM has little appreciation in the data science world which is maybe a reason for the sorry state of the Java library.

Edit: to be specific, I am talking about my experiences with Arrow/Parquet.

<comment><USER4> What you've written sounds like a criticism of the JVM data analytics ecosystem (the Java Parquet library in particular) and not Apache Arrow itself. Parquet for Java is an independent open source project and developer community. For example, you said

> It's barely useable and the dependencies are horrific - the whole thing is > mingled with hadoop dependencies - even the API itself.

These are comments about [http://github.com/apache/parquet- mr](http://github.com/apache/parquet-mr) which is a different open source project.

For C++ / Python / R many of the developers for both Apache Arrow and Apache Parquet are the same and we currently develop the Parquet codebase out of the Arrow source tree.

So, I'm not sure what to tell you, we Arrow developers cannot take it upon ourselves to fix up the whole JVM data ecosystem.

<comment><USER3> I'm not expecting anything really and I do appreciate your work and effort. And it's a specific use case for arrow, I guess.

But at your landing page, it's claimed "Apache Arrow defines a language- independent columnar memory format for flat and hierarchical data, organized for efficient analytic operations on modern hardware like CPUs and GPUs. " and that "Libraries are available for C, C++, C#, Go, Java, JavaScript, MATLAB, Python, R, Ruby, and Rust.". This certainly gave me the impression that more than just Python, C++ and R would be well supported.

The JVM isn't complete irrelevant in data-science given the position of Spark/Scala. This also raised my expectations of arrow/parquet because it seems to be the de-facto standard for table storage for this JVM platform. And I experienced no issues on that platform.

To be clear, I'm not blaming you for my design decision (I'm a software engineer not a data-scientist btw), and I still think parquet/arrow rocks for Python but in my experience it doesn't really deliver a useable "cross- language" file format at the moment.

<comment><USER5> FWIW, while the JVM isn't completely irrelevant in data, I will say, even as a big user of Spark via Scala, that JVM languages are quickly becoming irrelevant in data. Spark's Scala API is simultaneously the core of the platform, and also very much a second-class citizen that lacks a lot of important features that the Python API has. Easy interop with a good math library, for example.

Similarly, the reference implementation of Parquet may be in Java, but consuming it from a Java language, outside of a Spark cluster, is still a royal pain. Whereas doing it from Python isn't too bad.

Long story short, I think that expecting a project that's just trying to implement a columnar memory format to also muck out the world's filthiest elephant pen is perhaps asking too much. Though perhaps a project like Arrow could serve as the cornerstone of an effort to douse it all with kerosene and make a fresh start.

<comment><USER6> I spent a couple of years doing consultancy for life sciences research labs, most people were just using Excel and Tableau, plugged into OLAP, SQL servers, alongside Java and .NET based stores.

Stuff like Arrow doesn't come even into the radar of IT.

</comment></comment></comment></comment></comment><comment><USER4> hi, Wes (Apache Arrow co-creator and Python pandas creator) here! If you're wondering what this project is all about, my JupyterCon keynote (18 min long) from 3 years ago is a good summary and the vision / scope for what we've been doing since 2016 has been pretty consistent

[https://www.youtube.com/watch?v=wdmf1msbtVs](https://www.youtube.com/watch?v=wdmf1msbtVs)

<comment><USER7> Thanks Wes, pandas and Arrow are great projects. Is Feather now ready for long-term storage with the V2 release? And now that it's just a renaming of the Arrow IPC format, what's its future?

<comment><USER8> I'm also very confused about the relationship of Arrow's stability guarantees and that of the on-disk feather. Can we safely switch from parquet to feather for long-term data storage?

<comment><USER9> same question here - why Feather and why is it named differently ?

Also is Parquet and Arrow the same ? df.to_parquet('df.parquet.gzip', compression='gzip') will not use arrow i presume ? i have to use a separate library to save to parquet using arrow. a bit confused.

<comment><USER10> Graphistry uses parquet as a more stable and thus persistent storage format when folks save data, and arrow for ephemeral internal data where we're ok (and somewhat enjoy) version changes, as that just means code version upgrades. There are performance differences in practice such as parquet having more per-column compression modes built in, making it attractive for colder storage, and arrow for in-memory/rpc/streaming/etc for similar reasons.

RE:Feather -- Arrow itself isn't necessarily a full file format -- you can imagine memory buffers being all over the heap with giant gaps inbetween b/c diff cols generated at diff times -- but in practice folks will indeed serialize to disk consolidated buffers (pa.Table -> write stream -> file). If we couldn't do that, RPC wouldn't work ;-) My understanding of Feather is it standardizes ideas around this consolidation, but we are able save to disk (within versions) without it. We found it more predictable to stick to ~Parquet for storage and Arrow buffer passing for streaming, but now that Feather networking APIs for accelerated bulk transfers may be stablizing, there may be speed advantages to using it over manual buffer streaming (and still stick w/ Parquet for persistent files).

Arrow<>Parquet conversion is super fast b/c of the co-design around similar concepts: both using record batches of dense binary column buffers means implementations can pointer-copy, memory map, use bulk copy primitives, etc. for zero-copy or at least highly accelerated interop. Python RAPIDS GPU kernels can therefore selectively stream in a few parquet columns across many parquet files through a single 900GB/s GPU, compute over them, and write back out to arrow or a new parquet.

</comment></comment></comment></comment></comment><comment><USER10> Congrats! And a big thank you to Wes for being such a devoted community leader!

We've been on quite the journey here: [https://www.graphistry.com/blog/graphistry-2-29-5-upload-100...](https://www.graphistry.com/blog/graphistry-2-29-5-upload-100x-more- rapids-0-13-learnrapids-com-and-more) . Think json -> protobuf -> arrow, and paralleled in our work on parallel js -> opencl+js -> python rapids/cuda for accelerated native compute over it. The blogpost demos the ~100X bigger & faster dataset result of supporting Arrow for our uploader & RAPIDS for our parser when you can't and want us to convert for you.

Something folks miss with Arrow, IMO, is it is like google protobufs for everyone else. Arrow is not just having a nice binary format, but is also ready out-of-the-box for streaming, rich datatypes, and for larger/longer-term projects, standardized & auto self-describing schemas. If you've had to manually decipher, maintain, and update generated protobuf schemas (because you aren't google with all the internal ~protobuf tooling / integrations / infra / etc.), that should sound pretty good ;-) A lot more to do, but already way ahead of most other things, esp. in aggregate.

</comment><comment><USER11> given the sheer number and scope of Apache projects, it would be nice to have the title mention what it is (eg, "Apache Arrow - in memory analytics - 1.0.0") esp when the linked page doesn't directly say.

<comment><USER12> Normally I would agree but Apache Arrow already has significant name- recognition to people who are likely to use it -- data engineers/scientists etc. It's a library that provides an in-memory columnar format, and supplies a data engine currently used in Apache Spark, Pandas, and libraries like turbodbc, which helps these tools achieve high performance on operations on tabular data.

Having a single high-performance in-memory format means different programs can read/write from the same source without serializing/copying/deserializing. For instance, if you wanted to pass a huge table of data from R to Java to Python (because your tools span different languages), normally you'd have to copy and serde (Protobuf? JSON?) to pass the data, which equals huge overheads. With Arrow, each of those languages can directly interact with the same copy of in- memory data, in-process -- with the highest possible performance.

You also get the performance of columnar databases without implementing your own columnar data structure.

But of course, no harm adding a short description to the title to broaden its audience. Arrow is truly something amazing and the more people know about it the better.[1] Folks who program against traditional databases might not know about it, and I think they should, especially if they need to generate analytics (i.e. fast filtering/aggregation for dashboarding or for data pipeline tasks).

[1] Overview: [https://arrow.apache.org/overview/](https://arrow.apache.org/overview/)

<comment><USER13> where is it used in production?

<comment><USER12> Here's a list (and as mentioned in my comment, Apache Spark, Pandas, turbodbc)

[https://arrow.apache.org/powered_by/](https://arrow.apache.org/powered_by/)

</comment></comment></comment></comment><comment><USER14> I checked recently, and the Rust implementation of arrow — parquet as well — is sadly still not usable on projects using a stable version of the compiler because it relies on specialization.

There are some Jira issues on this, but there doesn't seem to be a consensus on the way forward. Does someone have more information, is the general idea to wait for specialization to stabilise, or is there a plan, or even an intention, to stop relying on it?

<comment><USER15> Last I checked when I tried to the library last the blocker on stable was packed_simd, which provides vector instructions in Rust. I can imagine the arrow/datafusion-guy isn't too keen on dropping vectorized instructions as that would be letting up a huge advantage and I'm imagine it's used liberally throughout the code.

As for stablizing packed_simd, It's completely unclear to me when that will land in stable rust. I recently had a project where I just ended up calling out to C code to handle vectorization.

EDIT: According to, [https://github.com/rust-lang/lang- team/issues/29](https://github.com/rust-lang/lang-team/issues/29), the effort looks abandonded/deprioritized, so it may be a long time before it sees stable rust

<comment><USER16> The main blocker is specialization as it's being used in several places including parquet and arrow crate. As this feature is unlikely to be stabilized, we'll need to replace it with something else but so far it is challenging.

<comment><USER14> Thanks for clarifying that the plan is to stop relying on it :) Is there a specific place/issue/ticket to discuss this? If time allows, I would be interested in helping out.

<comment><USER16> There is [https://issues.apache.org/jira/browse/ARROW-6717](https://issues.apache.org/jira/browse/ARROW-6717) tracking moving to stable Rust, and [https://issues.apache.org/jira/browse/ARROW-4678](https://issues.apache.org/jira/browse/ARROW-4678) is also relevant. Feel free to create a sub-task under the former to remove specialization :)

</comment></comment></comment></comment></comment><comment><USER17> Congrats on the 1.0 release!

We've been using Arrow for a few years in our startup (link in profile) - it's been great as a common format for passing tabular data between Python and Javascript.

Haven't used the in-memory/zero-copy features as much, but as a binary, high- performance, typed format for the data analytics world it can't be beat. And now that the Feather format is basically the Arrow format, I expect to see it really take off as a common interchange and even storage format for medium- to even long-term projects.

(Also nice to see the reduced Python wheel size - a little bonus for the 1.0 release :) )

</comment><comment><USER18> We extensively use Apache Arrow to store data files as parquet files on S3. This is a cheap way to store data that doesn't require the query speed of a relational (or non relational database). The main advantage of Arrow is that is a columnar database, and loses no information in transit unlike the nightmare of CSV files.

<comment><USER19> Have you benchmarked this against pickling those data files? In our experience, parquet's overhead isn't worth it for smaller data files.

<comment><USER20> I just did some benchmarks and it's pretty similar for small files. The difference would only be noticeable if you're serializing a ton of small files.

<comment><USER19> Huh, makes a pretty big difference for us. We were using pandas' built-in to_parquet though, which seems to suffer from some overhead.

</comment></comment></comment></comment><comment><USER21> Wes McKinney (Pandas creator and Arrow co-creator) will be giving an Arrow talk live this Thursday for those who want to learn more -> [https://subsurfaceconf.com/summer2020](https://subsurfaceconf.com/summer2020)

</comment><comment><USER22> Apache Arrow is a nice in-memory data structure finding its usage in wide variety of projects; especially in data science due to its feather format which can be used to save data frame from memory to the disk.

This can particularly be useful for low memory systems like ARM SBC when conducting long duration research. If you want to build Apache Arrow from source for ARM, I've written a How-To here[1].

[1][https://gist.github.com/heavyinfo/04e1326bb9bed9cecb19c2d603...](https://gist.github.com/heavyinfo/04e1326bb9bed9cecb19c2d603c8d521)

</comment><comment><USER23> Glad to see the 1.0.0 release. I'm hoping that it will help reduce resistance when I nudge people toward it. It also good to see progress in the documentation. For a long time its been very hard to dig into anything but the C++ or Python libraries.

As I try to move to Arrow/Flight over using JSON or binary formats like Protobuf, one thing I see missing is tooling or schema -> code generation. It would be nice to see some progress or roadmap in that direction as well.

</comment><comment><USER24> Polyglot, zero-copy serialization protocols (arrow, flatbuffer, capn proto) is a trend I really appreciate.

I like to imagine a future where data is freed from the languages/tools used to operate on them. In-memory objects would then be views into data stored in shared memory (or disk), with the data easily read/manipulated from multiple languages.

</comment><comment><USER25> I said this before but:

Oh look, yet another Apache real time/batch/big data/stream processing/ingestion/workflow/whatever product.

      Apache Druid
      Apache Spark
      Apache Storm
      Apache Flink
      Apache Beam
      Apache Apex
      Apache Airavata
      Apache Samza
      Apache TEZ
      Apache Hama

It's basically a terrible joke at this point. There's no single Apache page helping you to decide which one you want, and they all seem to have such large overlap. Most of them seem to have bad documentation, and give the appearence of not really being maintained. This puts me off even trying to use them. If there's this much scope creep/NIH/reinventing the wheel happening across the board, I can't imagine how bad each product is individually.

Apache Kafka seems to be the only exception...

<comment><USER26> Apache Pulsar?

</comment></comment><comment><USER27> When I first saw Arrow I thought the biggest benefit was a good file format. (Feather I think is the format. ) However it seems to be designed for passing tables between languages in the same process.

If I never use multiple languages in the same process can I safely ignore it or are there other benefits?

<comment><USER10> In Python, we use Arrow a lot for going between diff frameworks: file -> ( pandas <> cudf <> cugraph ). When we work with DB vendors, we now push them to provide Arrow instead of whatever proprietary in-house thing they've been pushing for the same, e.g., slow JSON / ODBC, untyped CSV, or some ad-hoc wire protocol. Also, we use for going between our services within a server + across.

On the nodejs services + frontend JS side, there was no real equiv tool for interop -- traditional soln is slowly round-tripping through SQL/ORM or manually doing protobuf through some sort of pubsub -- so Arrow is part of how we have been taming that mess too. It'll be a longer journey for Arrow or something like it to get adopted in JS land, but I can see folks doing TypeScript and serverless wanting it for a cleaner solution to typed data, faster serialization & streaming, etc. (There is no true JS equiv of pandas nor a typed variant.) We were a bit early here b/c we wanted streaming through WebGL + OpenCL/CUDA, and while we are fans of typed data, found protobuf tooling to be too unintegrated and manual in practice.

<comment><USER28> How successful have you been in pushing database vendors to use arrow on the wire? We've started using turbodbc (to connect to SQL Server), but as I understand it the data on the wire is still in odbc's row-oriented wire format, and turbodbc is responsible for packing into arrow column oriented buffers.

As you mention in your second paragraph, arrow is perfect for getting typed query results from a database server directly to a web frontend with minimal overhead. With the Transferable interface, it's even possible to zero-copy transfer the arrow data from the network buffer to a webworker.

</comment></comment></comment><comment><USER29> I wish Excel / Google Sheets supported Parquet export. I've worked with CSV files and Parquet files and found the latter a vast improvement. Chunking data is trivial, you have fixed-size data types, and existing types are well- supported across a multitude of frameworks.

In comparison, CSVs are pretty much unstructured text files with added suggestions.

More pipelines should natively support Parquet files, or something like it, and have a thin CSV to Parquet conversion layer on top.

P.S. I'd love to create a Parquet file visualization tool (something like [https://github.com/in3rsha/sha256-animation](https://github.com/in3rsha/sha256-animation)) in the near future.

</comment><comment><USER30> Nice. Is it just me, or is Julia notably missing an up to date arrow implementation?

</comment><comment><USER31> Yay! Apache Arrow is great project. Whenever I use is, people think I'm some kind of genius.

It should get a lot more press.

<comment><USER32> The docs are dire. Lots and lots about internals and how it works, and after a few minutes of searching, I've yet to see what it actually does or what I'd want to use it for. The "use cases" are even overly technical things that are building blocks for ... something. What is that something?

<comment><USER33> Judging from the faq ([https://arrow.apache.org/faq/](https://arrow.apache.org/faq/)), it seems like it's a storage format for large structured datasets, designed specifically for use in-memory and for serialization across the network. It provides a spec for the data format, as well as implementations for several programming languages.

That seems pretty straightforward, what part was confusing for you?

<comment><USER32> > what part was confusing for you?

The passive aggressive isn't necessary.

<comment><USER33> His snark isn't necessary; the docs are fine.

</comment></comment></comment></comment></comment><comment><USER34> Big fan of Arrow (and Parquet) and we use it at UrbanLogiq extensively. It's a wonderful toolset and great for data interop across multiple languages and environments!

</comment><comment><USER35> I used Apache Arrow to store and process a relatively large amount of data, 2-3B records with ~10 fields each (still fits on one machine, but it's large enough that I have to think about it a little bit).

I was originally using a simple binary format for fast decoding, and switched to Arrow to be able to select only a few columns at a time. I was impressed by the speed gains, and the size benefits of storing data in column order.

The one thing I wish Arrow had was a way to attach some metadata to its files (if there is, I haven't found it). I originally tried to write a small header before starting to write the Arrow data, but that made it impossible to read back the data: as far as I can tell Arrow looks at the whole file and stores its column definition at the end of the file and computes data offsets based on the start of the file, meaning that there's nowhere left for me to store anything.

It's still a very promising library and I'll definitely be checking out the 1.0 release.

<comment><USER10> pyarrow.metadata in the header is for stuffing in uninterpreted bytes, so we put in semantic stringified json data there for version numbers etc. that are beyond the data rep typing . Super useful when maturing from localized notebook code to software services standardized on arrow interop.

<comment><USER35> Oh cool thanks! I'll check it out.

</comment></comment></comment><comment><USER36> How does this format compare to HDF5, which is common amount scientific developers? Are they meant for a similar use case or not?

<comment><USER8> HDF5 has no support for dataframes/tables, although projects have been built ontop of it like PyTables, but these are non-standard and don't work across languages.

</comment></comment><comment><USER37> So, maybe I'm stupid and never faced enough big data, but what's the advantage of this versus a custom script that queries A and inserts into B?

I do that kind of stuff all the time with Go and it's pretty fast with 20~40 million records, averaging 100 KB each. Are those tools oriented to billions, instead of millions? What are the benefits?

<comment><USER4> Arrow:

* Standardizes binary interop and "serialization" of large structured data, removing all conversions / serialization at ingest and export boundaries. This alone can mean > 2-100x performance improvement in an application that processes a lot of data

* The Arrow in-memory format is an ideal data structure to code analytical algorithms against.

Check out my 18min talk from a few years ago about the vision for the project [https://www.youtube.com/watch?v=wdmf1msbtVs](https://www.youtube.com/watch?v=wdmf1msbtVs)

<comment><USER38> This is a great talk and should be a top-level comment explaining this release.

</comment></comment></comment><comment><USER39> Now Arrow already stable hopefully TileDB can properly support it since they really complement each other [1].

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

</comment><comment><USER40> What data types are available in Arrow?

Avro and Parquet can't really do timestamp with timezone, which is a major pain when processing data from geographically distributed locations.

But if Arrow can do it, then maybe there's hope for Parquet as well.

<comment><USER41> You should be able to find this info in the specification: [https://arrow.apache.org/docs/format/Columnar.html](https://arrow.apache.org/docs/format/Columnar.html)

</comment></comment><comment><USER42> Congrats to the team for the 1.0 release.

</comment><comment><USER43> "Columnar Memory Formats"

Maybe I'm just getting old, but back when we had to melt our own sand to build a computer, we called these things arrays.

<comment><USER44> Arrays of structs fit pretty naturally into many languages, but structs of arrays (and keeping corresponding values in order) are unusual enough to need plumbing that probably isn't there.

</comment></comment><comment><USER45> Say I have a 50GB (bigger than RAM) CSV file I want to analyse locally with R. Can I somehow use Apache arrow for that?

</comment><comment><USER46> Now that is has a 1.0 release, it might finally be allowed to have a Wikipedia page.

</comment><comment><USER47> Is this format good for also CRUD-like/mixed workloads?

</comment><comment><USER48> noob question -- what are some of the fundamental differences (may or may not help performance) between thrift and apache arrow?

<comment><USER41> Thrift is a serialization format. Arrow is a memory format.

</comment></comment><comment><USER49> Is this like Memsql back in the day?</comment>


Anti-texting laws seem to cause an increase in accidents - <AUTHOR> http://www.ksl.com/?nid=148&sid=22657873

<comment><USER3> There are tons of distractions within the car - changing the radio, changing the song on your ipod, looking through your purse, eating some food - <USER2> is only adding to the list. THe problem is there is too much for us to do and until all of those things get taken away accidents will continue to happen. Obviously texting is extremely bad because of the length it takes to read/write a message - but other than cars and phones having a sync to shut down phones within the car - there really isn't an alternative that will be able to stop this problem.

<comment><AUTHOR> Doubt it would have much impact. People will simply find new ways to distract themselves.</comment></comment>


Ask HN: Sales advice for a bootstrapping founder needed - <AUTHOR> I am a solo founder bootstrapping (as a side-project) a SaaS web app for team managers at mid-sized companies.
It is a note-taking app exclusively for 1:1 meetings [0]. It allows to better register meeting notes, long-term goals and short-term commitments (the last two are shareable with the team members for better accountability).
I have a fundamental doubt in my sales strategy: should I target the individual managers that would use my product themselves or should I target HR executives that could buy my product and implement it to all managers at the company at once?
I am at a very early stage, with 2 paying customers that hired it themselves for individual use; and 5 colleagues at my day-job employer on a free-trial before I try to sell it to our HR director for the whole company.
The pros for individual managers: shorter sales cycles; direct feedback on the product; easier to find the contacts; more people to contact (guessing here).
The pros for HR executives: more revenue per sale; if successful - I assume - more retention.
[0] https://www.oneonemeeting.com <comment><USER2> I bootstrapped my current company to several million in revenue. Both are valid strategies, but require very different skills and tactics. If you have another source of income right now, I would implement a product driven growth strategy [0].

Give your product away for free for individuals. You'll remove all barriers to adoption and be able to grow your user base quickly. If your product is valuable, your product will grow virally inside a company as managers see other managers using it. Once you have a few managers at Company X using your product, that's when you call up the HR department and offer them a paid company subscription for features like teams/user management, single sign on, sharing one on one results up the chain, whatever. Your users at the company become your champions. You can also provide an upgrade path in app if companies decide they want access to those features before you realize it.

Use a tool like Intercom to track how many users you have within a company.

It will delay revenue for a while, but give you a chance to refine the product from user feedback. It's also a much more scalable sales/marketing strategy for solo founders.

[0] [https://expand.openviewpartners.com/your-product-is-your- go-...](https://expand.openviewpartners.com/your-product-is-your-go-to-market- strategy-heres-why-b1881c0c521) [https://mattermark.com/product-led-approach- sales/](https://mattermark.com/product-led-approach-sales/)

<comment><AUTHOR> Wow, that's gold, thanks a lot!!

I have thought about this _" individual managers as user/champions in company"_ before, but the path was not very clear in my head. Thanks for laying it out for me.

I do have a day-job, so this is a totally valid strategy for me.

</comment></comment><comment><USER3> Snap up oneononemeeting.com and redirect it (or redirect your current to that one). I couldn't get your name right and I'd probably be typical.

Firm up the pricing a little better. I get that "enterprise" would want to negotiate a deal, but nothing gives a prospective customer the middle finger like "call for price". If you know what your product is worth, tell me.

Anchor with an overpriced/not-much-nicer top selection, because that'll draw people to your ideal mid offering and away from the free.

To answer your doubt, make both pricing options.

<comment><AUTHOR> Snapping _oneononemeeting.com_ will be hard I think. I am considering renaming my project. My main driver for that name was SEO, but today I do not consider SEO my major growth channel anymore.

I give the price for individual accounts, I will just reuse that price with a _" per user"_ for enterprise and disclaim that are possible discounts for large accounts.

Thanks for your comments!

<comment><USER3> For the record, oneononemeeting.com is still available, and probably only another $10.98 on namecheap.

Forget SEO, try word of mouth. When 99% of people hear about your website and mistype it in, they'll fail to convert into paying customers.

This doesn't just apply to you, but it always amazes me how hard people will work to justify tanking their own marketing effort.

<comment><AUTHOR> Nice! It wasn't available when I first registered it (a year ago). At least I think it wasn't, as it was my first choice, as it is exactly the term that people search.

Already bought it cheap on Namecheap :)

Thanks a lot for taking the time to research it after my reply!

<comment><USER4> I'd also suggest buying similar names like 1on1meeting.com, etc. I have no idea if that specific url is available. But buying related urls is helpful for people that forget how to spell the original (especially if they hear the name from a friend orally)

</comment></comment></comment></comment></comment><comment><USER5> I think @rsweeney nailed it. Your product is one that _should_ sell itself.

You only needs a complicated sales cycle if you're selling deep infrastructure or where high degrees of trust are required. But in your case, users can look at your website and immediately determine if they need your product and how much they're willing to trust you.

Re: your product --- It looks super cool. It's not something I need at this point in my career, but maybe down the road. Good luck!

<comment><AUTHOR> thanks!

</comment></comment><comment><USER6> Target the end users with cheap/free/trials to gain significant traction then make your pitch to executives. By then, you already have all the evidence you need to make the sell.

</comment><comment><USER7> Something like this? [https://amazemeet.com/](https://amazemeet.com/)</comment>


Standing Desk Do It Yourself (DIY) - <AUTHOR> http://williamdurand.fr/2014/03/17/standing-desk-do-it-yourself/

<comment><USER2> The "Standdesk 2200" [1] is similar and seems easier to make, if you have access to an IKEA.

[1] [http://iamnotaprogrammer.com/Ikea-Standing-desk- for-22-dolla...](http://iamnotaprogrammer.com/Ikea-Standing-desk- for-22-dollars.html)

<comment> a-priori This is the setup I have -- specifically the wider setup shown in the bottom row of pictures. Works great, been using it for about 8 months now full time.

But if you're going to try standing, please save your body and use an anti- fatigue mat. It makes all the difference. I use two stacked on top of each other.

</comment></comment><comment><USER3> I use a standing desk at work, but one that can be raised/lowered, which I think is superior to a fixed one, since it is easy to adjust to a good height, and also makes it easy to switch between sitting and standing. Yes, they cost a bit, but not as much as some people think. Also, how much is your health worth?

I had severe RSI problems several years ago, but managed to get it under control, and I am now completely recovered. The most important step I took was to start using a break program. I also switched to an ergonomic keyboard (Goldtouch) and a pen-like mouse. Using a standing desk is also part of the solution.

I've described my problems, and the solutions, in a blog post: "How I Beat Repetitive Stress Injury" [http://henrikwarne.com/2012/02/18/how-i-beat- rsi/](http://henrikwarne.com/2012/02/18/how-i-beat-rsi/)

<comment><USER4> For my own RSI mitigation, I switched to a Magic Track Pad which I've found to be far and way the best mouse substitute. I think this is just because your hand doesn't have to grip anything and clicks don't have to depress a mechanical switch (reducing the forces involved).

I mention this you said in your article you had switched to a Mac and I thought you might want to give it a try.

<comment><USER3> Thanks for the tip! I have tried one briefly, but it felt a little weird for me, but that's probably because it was new to me. But the Penclic is working really well for me - the key thing for me is that I don't have to turn the hand so the palm is down (at least not as much as with a regular mouse).

</comment></comment></comment><comment><USER5> Use image thumbnails please! You're serving 22MB on every page load. On my dsl connection, it took 110 seconds to load!

<comment><USER6> I had the same problem, but it took 4.2 seconds for me to close the window. I'll read about it here.

</comment></comment><comment><USER7> My DIY standing desk is an 18" wooden coffee table with a plastic storage container, the box my speakers came in, and the box my external monitor came in. The storage container and one of the boxes act as a pedestal for my laptop (which I removed the broken screen from a few months ago) and my speakers and the other box hold up the external monitor. A spare t-shirt is placed under the front or back of the base of the monitor depending on whether I want it tilted up or down, and to what degree.

It's hardly stylish but functionally I couldn't ask for more.

Standing is nice precisely because it's slightly uncomfortable to do for longer periods of time. It forces you to stretch, move around, and take periodic breaks from staring into the screen.

</comment><comment><USER8> I tried a standing desk for a while and I loved it, however I had a fairly major problem that I couldn't find a way around: I need to sit sometimes.

I was unable to find a stool that would allow me to continue using the standing desk since I am 6'6". That means that in order to continue using the desk on a stool, I need a stool that is ~6" taller than the best I could find.

Due to the fact that I do a heavy amount of audio work, I require some equipment in front of my keyboard/mouse and the height and position of the sets of speakers that I use is fairly important.

Does anyone have any ideas to deal with this?

edit: I love the solutions being suggested, but I don't have that much money to spend on it unfortunately.

<comment><USER9> Expensive but, motorized GeekDesk?

<comment><USER8> That is quite cool, but you weren't joking about expensive!

</comment></comment></comment><comment><USER10> An overbed/hospital bedside table works wonderfully for that. I use a straight one: [http://www.amazon.com/Invacare-Over-Bed- Table/dp/B000QA0EHI](http://www.amazon.com/Invacare-Over-Bed- Table/dp/B000QA0EHI) but there's also tilted ones: [http://www.amazon.com/Hospital-Overbed-Over-Table- Computer/d...](http://www.amazon.com/Hospital-Overbed-Over-Table- Computer/dp/B000JWO7JE)

For $50/$60, you get an adjustable, rolling table. It's not the sturdiest ever (e.g., I wouldn't put a monitor on it without gluing it somehow), but if you're using a laptop, this thing is perfect.

<comment><AUTHOR> Thanks for the hint!

</comment></comment><comment><USER11> I love the standing desk I installed in my home office. I got a corner desk top from Ikea for ~$70, went to my local hardware store and talked to some wall mounting experts, and a few drill holes later I have the best standing desk ever.

Picture of full desk after initial install: [https://www.dropbox.com/s/kr9wu01xshbjyku/2013-10-20%2010.04...](https://www.dropbox.com/s/kr9wu01xshbjyku/2013-10-20%2010.04.11.jpg)

Picture of typical setup during the day: [https://www.dropbox.com/s/s5f1v18jet2blbu/2013-11-14%2010.10...](https://www.dropbox.com/s/s5f1v18jet2blbu/2013-11-14%2010.10.35.jpg)

<comment><USER11> I should give my feedback too that after standing regularly, my back hurts a lot if I sit more than a couple of hours.

</comment></comment><comment><USER12> I Just had my 1 year anniversary of standing desk. It is great, although I do sometimes get tired but I have a stool for that.

You can see my desk design here. It was acquired for very cheap: $1 counter top from thrift store, $10 in 2x4's from lowes. and only 1 strategically placed screw in the wall. I also have an anti-fatigue mat and a foot stool that helps a lot.

pic: [https://www.dropbox.com/s/e3zl8jxk7xeazsr/Screenshot%202014-...](https://www.dropbox.com/s/e3zl8jxk7xeazsr/Screenshot%202014-03-17%2009.53.34.png)

</comment><comment><USER13> Standing desks are pretty easy: you just need a shelf for the monitor and one for the keyboard/mouse. But if you need to sit for some reason, it's a hassle.

I did a desk that can convert between sitting and standing for less than $200 and am satisfied with the results: [http://planiverse.wordpress.com/2014/01/10/building-a-sit- st...](http://planiverse.wordpress.com/2014/01/10/building-a-sit-stand-desk- for-less-than-200/)

<comment><USER14> In your video, it looked like when you raised it, the monitor's rotation was a little off - was that just an illusion?

<comment><USER13> Yes, the monitor is rotation locked with a set screw and there are no other components in the Ergotron arm that rotate.

</comment></comment></comment><comment><USER15> "Several reports have come out pointing out the dangers of sitting too long (e.g. risk of obesity, diabetes, heart disease, a variety of cancers, and an early death)."

That's such enormous BS. It's "lack of physical exercise", not "sitting". Standing up and still all day long is NOT going to make you healthier.

Ask any hairdresser how their legs feel at the end of the day.

Sit. Just don't sit _all day long_.

</comment><comment><USER16> I have had good success following this: [http://blog.stackpop.com/post/47149734131/our-50-adjustable-...](http://blog.stackpop.com/post/47149734131/our-50-adjustable- ikea-standing-desk)

Here's my desk: [https://twitter.com/udaykverma/status/386164901929959424](https://twitter.com/udaykverma/status/386164901929959424)

<comment><AUTHOR> Nice!

</comment></comment><comment><USER17> For those of you looking for a quick fix - I've got a Furinno standing desk - sturdy, ultra compact, super light and inexpensive. [http://www.amazon.com/Furinno-Adjustable-Laptop-Desk- Multifu...](http://www.amazon.com/Furinno-Adjustable-Laptop-Desk- Multifuctional/dp/B004QXIFCC/ref=sr_1_1?ie=UTF8&qid=1395066973&sr=8-1&keywords=furinno+standing+desk)

</comment><comment><USER18> It's an ergonomic disaster to use a laptop keyboard and laptop monitor like that. Use a proper keyboard and a proper monitor at eye level.

<comment><AUTHOR> I know, I ordered a keyboard :-)

</comment></comment><comment><USER19> I tried standing up to work for a few weeks once and found I just got a _different_ kink in my back. I would still tend to slouch sideways when standing, keeping most of my weight on one leg (almost like sitting on a stool) and using the other as balance. I'm not sure what the solution is, except maybe a treadmill desk, but that seems a little crazy.

<comment><USER20> Have you ever had your legs measured by a physical therapist or equivalent? I used to do the same thing. The problem is that resting on one leg tends to push the hips out of alignment (it's easy to see in the mirror; the hipbones won't make a line parallel to the ground).

For me, I would always get pain/numbness in my lower back on the side of my taller leg. Putting a lift in the other shoe and being mindful to keep straight helped to fix it. I had to be mindful (at least at first) because my body was so used to slouching sideways that it would still try to default in one way or another. I think that it's gotten better as the muscles re-learn the necessary patterns to keep straight.

EDIT: BTW, I don't use a standing desk- I prefer to walk around a lot. Before my PT visit, I would get pain within 15 minutes of standing!

</comment></comment><comment><USER21> See also this Grip Desk setup : [https://www.youtube.com/watch?v=ySEBqNAnyjk](https://www.youtube.com/watch?v=ySEBqNAnyjk) (video is by Solarized's theme author, Ethan Schoonover).

</comment><comment><USER22> I love the idea of a standing desk, but this design probably would cause my neck and back to hurt. Since the monitor is so far back, I would be constantly learning forward and tilting my neck down.

<comment><USER23> A standing desk should be built to match the height of the user. The top monitor must be at eye level.

<comment><AUTHOR> Exactly, and that is why I first used cardboard to find the best dimensions.

</comment></comment></comment><comment><USER24> Warning for all of those who are a little overweight and older. I forced myself to use a standing desk after reading all the health benefits. The end result was plantar fasciatis.

<comment><USER25> Were you using a good anti-fatigue mat?

</comment></comment><comment><USER26> I've been looking for the perfect standing desk for years now. These are great examples, thank you!

</comment><comment><USER27> Cool, and great idea. The tables look a lot like LACK from IKEA. I might try this, too.

<comment><AUTHOR> Yep, they are pretty much the same. I just don't have an IKEA close to my place (yet)...

</comment></comment><comment><USER28> Jesus those images are massive

<comment><USER28> hope he's not paying for that bandwidth [http://cl.ly/image/3h1T1u3l0p39](http://cl.ly/image/3h1T1u3l0p39)

<comment><AUTHOR> Yeah... I reduced the image sizes..

</comment></comment></comment><comment><USER23> I did this a couple of years ago. I would not suggest jumping 100% into using a standing desk, but have a stool handy and it can be a great experience. I've since moved out of the coworking space I was in and have everything home, so I'm back to sitting, but I'd prefer to have a standing desk again. Just been too lazy to build one.

I was pretty skeptical of standing desks when they first became all the rage on LifeHacker, et. al. But these hipsters kept harping on dubious health benefits and were missing the best part of the standing desk: it multiplies your storage space on your desk! For a coworking space, this is a major win. I ended up kicking off a "build vertical" craze in the space.

[http://moron4hire.tumblr.com/post/58110389840/last-year-i- ha...](http://moron4hire.tumblr.com/post/58110389840/last-year-i-had-been- using-a-standing-desk-this)

It took me just as long to draw everything as to build the standing desk. In terms of a carpentry project, it's about as simple as they come; bird houses are harder. Also, you kind of have to "figure it out as you go", because the desk needs to be custom built to your measurements. As you can see in my drawings, everything was designed around my eye-level height and my arm length. This is a must, or you're just trading one posture problem for another.

I eventually (not pictured) also built a "draft table" feature into the lower desk top: removing the laptop, the desktop could be rotated into a slanted position to have an ergonomic writing surface.

One thing to realize is that most people's shoes (even running sneakers) have a significant heel-rise that will really screw up your standing posture and is not conducive to standing all day. I had very significant lower back pain until I started standing barefoot, wearing slippers, or standing on a slanted platform I built to counter the heel-rise of my sneakers. I liked barefoot the best, but the room I was in had a lot of sharps on the floor.

You won't be able to work all day. I could only get about 6 hours a day in until I was just too exhausted to be able to think. However, I also found that during that 6 hours I was incredibly energized and laser focused on work. I never goofed off when I used my desk. I don't know why. But 6 hours was enough to get work done.

After the first month of non-stop standing, it wasn't getting any easier. I switched between standing and sitting on a stool (which I also built, which my fellow coworkers have declared the most dangerous thing ever built in the space, but has survived longer than many store-bought chairs) all day. I still mostly stood, and only sat in the stool near the end of the day. It was also useful for getting over that 6 hour hump so I could play LAN games with the other people in the space at night.

I'm considering doing it again. Perhaps I'll get pre-fab foot stools or a step ladder. Our condo is pretty small and I've spilt out over everywhere. Having a standing desk would go a long way to keeping the peace with my wife in regards to clutter :)

<comment><AUTHOR> Thank you for your precious feedback! I'll try to work standing up ~4/5 hours a day, for a month. I'll see if it makes me either more productive or feel better.</comment></comment>


Patent on linked lists - <AUTHOR> http://www.google.com/patents/US7028023?dq=7028023

<comment><USER2> Previous HN discussion at [https://news.ycombinator.com/item?id=2873795](https://news.ycombinator.com/item?id=2873795) . See also [http://patents.stackexchange.com/questions/738/prior-art- for...](http://patents.stackexchange.com/questions/738/prior-art-for-linked- list-secondary-and-tertiary-traversal) .</comment>


The Colour Clock - <AUTHOR> http://thecolourclock.co.uk/

<comment><USER2> Awesome idea. I took some time to rewrite in HTML5: <http://brisy.info/colors/>

Though the colours I'm getting are different. I wonder why.

<comment><USER3> Haha, I just did the same thing: <http://nerdlife.net/colorclock.html>

<comment><USER4> Guys, get these on github. That way we can fork it & make it awesome as a team faster and better.

<comment><USER2> Here: <https://github.com/briancollins/color-clock>

</comment></comment></comment></comment><comment><USER5> Simple & beautiful.

Small criticism: Why Flash?

<comment><USER6> That "full screen" button in the top-right.

Or, at least, that's the only thing I see there that you can't do with HTML/JS.

<comment><USER7> You can actually, F11

<comment><USER6> Well, yeah, but you can't have a handy button for it on the page.

</comment></comment></comment></comment><comment><USER8> Jim Blandy wrote a similar program for X Windows around 1992: a beautiful color clock that would sit on your desktop's root windown and slowly cycle through the colors over the course of an hour. It didn't even show digits -- you just had to learn the colors :-). I think it depended on X supporting writeable color cells, though, so it would need to be rewritten to work on most modern systems (which generally seem to not be set up that way).

      http://svn.red-bean.com/repos/circles/trunk/

Hmm, but that's after I started making some mods. For best results, try an earlier rev (this was converted from CVS, hence the weird log message):

      http://viewvc.red-bean.com/circles/trunk/?pathrev=3

</comment><comment><USER9> The state of the art for custom geek clocks is in hardware AFAIC.

RGB LED color clock: [http://www.youtube.com/watch?v=BKT-0qB9l8A&feature=relat...](http://www.youtube.com/watch?v=BKT-0qB9l8A&feature=related)

I also enjoy the classic 'pong clocks' [http://www.youtube.com/watch?v=PHxbknBYYAQ&feature=playe...](http://www.youtube.com/watch?v=PHxbknBYYAQ&feature=player_embedded)

Clocks are a common beginner project in DIY hardware, they are both simple to make and have good potential for adding stuff like RSS readers and so on when you want to branch out.

<http://hackaday.com/?s=clock>

</comment><comment><USER10> It would be nice if the colour was meaningful, i.e. if one could, at least roughly, guess the time based on the colour. Say, that the brightness would reflect time of day (brightest at noon, darkest at midnight) and the hue the time within the hour.

<comment><USER11> HSL might work better for that, though I'd cycle it around the spectrum, with the seconds value being the saturation percentage.

</comment></comment><comment><USER12> I feel like this would make an awesome desk or wall clock.

<comment><USER13> Maybe load it up on a Chumby? <http://chumby.com>

</comment></comment><comment><USER14> It's also on the iPhone app store (for £0.59), but it might be a different author.

Associating time with colour has been tried many times - eg the Chromachron watch was briefly famous:

[http://www.ubergizmo.com/2006/11/chromachron-too-advanced- fo...](http://www.ubergizmo.com/2006/11/chromachron-too-advanced-for-70s/)

</comment><comment><USER15> I had done something similar around 2000 though I wasn't very sophisticated at programming so I think it's off...

<http://minus20.e-2.org/artists_projects_chriso.html>

Last year I re-made it as a free iOS app which takes the time and converts it using a RGB>HEX function I found that I think is correct:

[http://itunes.apple.com/us/app/time-as- color/id335133255?mt=...](http://itunes.apple.com/us/app/time-as- color/id335133255?mt=8&ls=1)

I also made one that sets Hour, Minute to latitude,longitude in Google maps which I like looking at: [http://itunes.apple.com/us/app/time-as- place/id336539483?mt=...](http://itunes.apple.com/us/app/time-as- place/id336539483?mt=8&ls=1)

(edited second link)

</comment><comment><USER16> This is pretty impressive. Would you consider porting to other OS'? I.e., Linux.

I know I'd be happy to run this on my monitors!

Regardless, great job!

</comment><comment><USER17> Very similar to the Chromo <http://prote.in/chromo> colour clock, which has been around for a few years.

</comment><comment><USER18> This is cool, but does the screensaver also have to be in Flash? I'd prefer my fans to not spin up when my screensaver kicks in.

</comment><comment><USER19> A shame that the fastest-moving value is placed in the portion of the spectrum where we have the least colour sensitivity. I'd have put hours in blue, myself. If I'd thought of it.

<comment><USER6> <http://davidlynch.org/toys/colorclock/#hms> <http://davidlynch.org/toys/colorclock/#smh> <http://davidlynch.org/toys/colorclock/#mhs>

Or any other order, really.

<comment><USER20> Any order, yes, but things like <http://davidlynch.org/toys/colorclock/#hsh> do not work yet.

<comment><USER6> Yeah, okay, they'll work now.

</comment></comment></comment></comment><comment><USER21> I wonder how well the color blind can detect second to second changes in hue? Not a complaint, just a genuine curiosity.

Any color blind out there care to comment?

<comment><USER22> I'm red-green colour blind but have difficulty in describing colours in general (I see them and know what they are but sometimes (and especially if they're under a coloured light) I can't specifically say what colour a wall is, for example).

This is quite interesting as I can't really see second-by-second changes; at most I can see small jumps (not the radically large ones) you get every few seconds.

<comment><USER23> I'm not color blind, yet that is what I see, too. Makes me wonder about the brain's color-processing. My guess is small variations are ignored by the brain because slightly changing light conditions can cause all colors to vary slightly over time. Your brain filters them out so you can only tell when something really is changing.

</comment></comment></comment><comment><USER24> I still like the Polar Clock best... <http://blog.pixelbreaker.com/polarclock>

<comment><USER25> My favorite clock remains the Uniqlock: <http://www.uniqlo.jp/uniqlock/>

<comment><USER26> That's hilarious!

</comment></comment></comment><comment><USER27> The switch from 22:59 to 23:00 was stunning.

I can't wait for the switch at midnight (#FFFFFF -> #000000).

<comment><USER28> I missed it. It basically goes from white (well, very pale cyan) to bright red, right?

<comment><USER29> #FFFFFF to #000000 would be white to black.

<comment><USER28> I made my comment at about 23:05 last night, my local time; I was talking about 22:59:59 to 23:00:00, or (approximately) #F5FFFF to #FF0000.

</comment></comment></comment></comment><comment><USER28> It would be interesting to see what would happen if the colors were given by following a space-filling curve in three dimensions, like the last figure at <http://mathworld.wolfram.com/HilbertCurve.html>

</comment><comment><USER30> The hex clock seems to jump every once in a while, probably compensating for the large difference in the number of hexadecimal color values and seconds in a 24 hour day.

How are the color values related to the seconds here?

<comment><USER31> As I understand: hours are red, minutes are green, seconds are blue. Simply formulated as HTML color #HHMMSS (and with each component scaled appropriately to 00..FF so that 00:00:00 is #000000, 23:59:59 is #FFFFFF)

</comment></comment><comment><USER31> I'd like one that doesn't show the seconds (but does change the color every second). This is too distracting for me to really use.

Funny and original idea though!

</comment><comment><USER32> Nice job, but why screensaver only for MacOS?

</comment><comment><USER33> I've turned off sleep mode so I can actually see this as my screensaver now.

</comment><comment><USER34> that's quite beautiful

</comment><comment><USER35> iPhone app?

<comment><USER36> done</comment></comment>