Cockpit – Administer Linux servers via a web browser - <AUTHOR> http://cockpit-project.org/ <comment><USER2> Personally I'd much rather see a GUI that can help string together snippets of Terraform/CFN and Ansible/Chef/Puppet/Salt/whathaveyou. A visual IDE for infrastructure automation, if you will.

<comment><USER3> So the idea is that you would choose your changes in the GUI, but instead of actually changing the target, it spits out the required code to do it for you in a repeatable way?

I would definitely find that useful for Terraform and Cloudformation. Searching for it, I see that AWS has a tool targeted at that: Cloudformation Designer.

[https://aws.amazon.com/blogs/aws/new-aws-cloudformation- desi...](https://aws.amazon.com/blogs/aws/new-aws-cloudformation-designer- support-for-more-services/)

[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGui...](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working- with-templates-cfn-designer.html)

<comment><USER4> A better idea would be to spit out a spec that tools could use to perform the thing, and get tools to follow the spec. Unfortunately, even though most tools do virtually the exact same thing, they all use their own incompatible ways to describe it in a config. I'm not sure why devs enjoy reinventing the wheel in incompatible ways all the time.

For example: you have Puppet, Chef, Ansible, Salt, etc. They can all make a directory. They do _exactly the same thing_ on almost all systems they support, because _POSIX_.

They literally all just run this syscall: _int mkdir(const char pathname, mode_t mode);_.

But each tool has their own goofy way of being _told_ to make the directory. Why can't I just pass "{'mkdir': [ '/the/path/name', '0700' ]}" to all of them? This is literally all they will be doing, and all they need to know. Just make this path with this permission. This is declarative programming, without a custom language!

Anything else, like directory ownership, should be an extra object, like "{'chown': [ '/the/path/name', '1000', '1000' ] }". Again, this is literally called the same way everywhere: _int chown(const char pathname, uid_t owner, gid_t group);_.

You can combine the two into one JSON blob in the output of this config management tool (that's what this GUI really is - a GUI CM with a dashboard). You can have sets of blobs with tags that are discrete reusable pieces of configuration. And every tool can just read them, _follow a spec based on POSIX_ , and execute them.

<comment><USER5> Sure, you picked the simplest possible case for a configuration management system. Now, in this very simple case:

\- What happens when "/the/path" changes depending on the distribution? How do you specify that?

\- What should happen if the "/the/path/name" already exists? Should the system touch it or something?

\- What if it exists but is _not_ a directory? Should it delete whatever exists and create a directory instead?

There is no way to define that stuff using POSIX semantics, because POSIX is inherently imperative. "mkdir" means "make a directory", not "on this path there must be a directory".

That mismatch in semantics is real, and each configuration management system tries to close that gap in the simplest, most user-friendly way they can figure out. Most have flocked towards defining their own, as declarative as possible, API. For instance, ansible defines this as:

      - name: Ensure name's base folder exists
        file:
          path: /the/path/name
          state: directory
          recurse: no
          owner: pid/name
          group: gid/name

I do think that, like that snippet above demonstrates, none of them do an astounding job at defining that API. However, I blame their failure to the hardness of the task, not to the incompetence of the developers of ansible/salt/puppet/etc.

<comment><USER4> Well let's be clear: a lot of tasks people try to accomplish are just bad ideas. Config management is not about having a magical tool that does everything you want exactly how you want on 50 platforms using one config file. Config management is just managing complexity. It works better the less complex it is.

The example above is two basic operations: mkdir and chown. On top of those operations are _policies_ , rules which need to be applied. And then there are _transforms_ , where the arguments or policies may change depending on some variables.

These are all different things that the above rule is mixing together, and we're supposed to think this is a good thing. We pretend it's less complex, but it's not, it's just obscured. And the end result is a lot of wasted effort to redo the same thing.

The GUI is useful because it can craft the operations, policies, and transforms for you, and output instructions to be interpreted and executed by an agent. You could keep all the complexity, but make it standard among a set of common tools. They really all do the same things - they just don't speak the same language.

Another way to think about this is from an app's perspective. It just wants to write to a log file in a directory, it does not care where. That's somebody else's job to figure out - just tell me where the file is! Wouldn't it be handy if the app had a language to _tell_ a CM tool what it needed? It wouldn't have to say "make me file X in Y dir", it would say "give me a writeable file that I will call 'log_fd'".

Then we wouldn't need to craft an environment for it like parents assembling a nursery. The apps could be more self-sufficient, and the CM tools would just do their bidding. Using a standard language.

<comment><USER6> > a lot of tasks people try to accomplish are just bad ideas.

For most people, the point of config management tooling is to turn all their manual, bus-factor-of-one crufty legacy processes into _automated, documented, centralized_ crufty legacy processes.

Ops people don't want a system that is opinionated or that pushes back to force them to change their process. They want a Turing-complete system, and maybe macros as well, so that they can quickly encode their hairy manual process into a hairy automated process, and get back to all the other firefighting they have to do as ops people.

<comment><USER4> In theory, with unlimited resources and fully automated systems, there should be no infrastructure problems to firefight. But probably even with limited resources we shouldn't need to firefight so much if it was engineered correctly.

I think about cars and planes, and wonder what life would be like if we needed a team of engineers sitting on the wing of a plane to keep it in the sky when the pilot moves the flaps.

<comment><USER6> > what life would be like if we needed a team of engineers sitting on the wing > of a plane to keep it in the sky

It's the world we'd be in if new planes were in such high demand that the number of startups building them totally outstripped the supply of aeronautical engineers, to the point that most new designs only had ~5 man- years of effort invested in them on release, rather than the thousands they get today.

Software is really a different world, economically.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> I watched this year's Fosdem talk on Cockpit[0] and was seriously impressed. It looks like there is a contender for an easy-to-use Linux web admin.

[0] [https://www.youtube.com/watch?v=Oq6Vbwl- HqM](https://www.youtube.com/watch?v=Oq6Vbwl-HqM)

<comment><USER8> There is also this talk from All Systems Go! [0] that goes in details about the architecture of cockpit :) .

[0] [https://media.ccc.de/v/ASG2017-99-cockpit_a_linux_sysadmin_s...](https://media.ccc.de/v/ASG2017-99-cockpit_a_linux_sysadmin_session_in_your_browser)

</comment></comment><comment><USER9> Why does it require that the server has password logins enabled? This seems contrary to every "secure your server" guide I've seen and opens your server up to the password guessing game. It seems like a cool product, but that's a huge non-starter.

        The target server will need to have password based authentication enabled in sshd. When this is setup for the first time, Cockpit will ensure that the user connected to primary server has the same password on the secondary server.

<comment><USER10> Probably because these "security guides" just repeat what others said without any real consideration?

In fact, using key-based authentication just shifts the weak point from one server to another, and, if implemented incorrectly (let's login without passwords to several servers - how convenient!), it's a security disaster. People need to think rather than follow recommendations blindly.

<comment><USER11> "Common knowledge" is a big problem in the security industry, like you mentioned. It's common knowledge that you need a 32 character randomly generated password with special characters and numbers and mixed case, right? But actually that's less secure, and now security folks have to work overtime to convince people otherwise.

And it's common knowledge that passwords are super insecure and should be replaced, but oftentimes the people replacing them don't understand that it's possible to replace passwords with a less secure system, and don't have the skills necessary to judge that risk.

Key-based systems do have their risks. If I compromise your dev machine (probably using a simple password), I now have free access to all the machines your key unlocks.

Defense-in-depth is important, as well as a strong IAM system. You need physical security to protect your dev workstation, coupled with a strong login system to your machine, hopefully a VPN (locked with a physical token) or local network requirement to get onto your production servers, and then break- the-glass methods to check out permission to escalate your privileges when needed, followed with a keylogger for your admin session and attestation that your break-the-glass in production was necessary.

That being said, if you're looking for a replacement for logging into your production machines over the Internet with a simple password... key-based authentication is lightyears ahead of what you're doing. Passwords are far too easy to guess or brute force.

<comment><USER12> the part that gets me is that key based authentication is much, much more secure, as long as you have a passphrase. How many 'howtos' and other sites on the internet say to just create a key with no passphrase? Its right up there with the number of guides I see for deploying things on Redhat, that first have you disable selinux.

<comment><USER11> Yeah as someone who works in the security industry, the ubiquity of security awareness targeted at end users is both a blessing and a curse. It's a blessing because now many more people know what key-based authentication is. It's a curse because now people get mad when my report has a finding that their no-passcode single key authentication system is worse than the "use your RSA token to check out the constantly-revolving root password" system they just replaced.

Like when people use the phrase "two-factor authentication" without knowing what the three factors actually are and why they matter.

</comment></comment></comment></comment></comment><comment><USER13> Does it work on non fedora/redhat? Does it need an agent on managed systems?

I'm developing a somewhat similar system[1], based purely on very easy to develop plugins, agentless, and integration with third parties where needed (Prometheus, for example).But without big corporate backup it is being difficult to keep the development pace.

[1] [https://github.com/serverboards/serverboards/](https://github.com/serverboards/serverboards/)

<comment><USER14> I've used it before on Ubuntu and it worked just fine. As far as I understand, Cockpit deals directly with Systemd and Docker, so any system based on Systemd should just work.

<comment><USER15> Again, Cockpit does not explicitly deal with systemd.

Cockpit deals with dbus, and systemd is conveniently available there (hostnamectl, etc). storaged, networkmanager, and other functionality is not dependent on systemd, so it's really just the system journal, changing the hostname, and checking service status which would fail without systemd.

Docker is not required at all either, though it's an option.

<comment><USER16> That is directly contradicted by Cockpit's own doco, which explicitly states that Cockpit uses the systemd APIs and that "use of alternate system APIs are not currently implemented".

* [http://cockpit-project.org/guide/latest/feature-systemd.html](http://cockpit-project.org/guide/latest/feature-systemd.html)

It should of course be obvious that Cockpit _does_ explicitly deal with systemd. Desktop Bus is a _transport layer_ , and the important thing about it is _what DBus servers are on the other side_ of the broker are being talked to. In the case of Cockpit they are things like systemd's own idiosyncratic API for process #1 ...

* [https://github.com/cockpit-project/cockpit/blob/0dd4ee7bac14...](https://github.com/cockpit-project/cockpit/blob/0dd4ee7bac14300c39278fd60872bf406887723a/pkg/lib/service.js#L97)

... systemd's hostnamed server ...

* [https://github.com/cockpit-project/cockpit/blob/0dd4ee7bac14...](https://github.com/cockpit-project/cockpit/blob/0dd4ee7bac14300c39278fd60872bf406887723a/pkg/lib/machines.js#L275)

* [https://www.freedesktop.org/wiki/Software/systemd/hostnamed/](https://www.freedesktop.org/wiki/Software/systemd/hostnamed/)

... and systemd's timedated server.

* [https://github.com/cockpit-project/cockpit/blob/dbd7f3a8487a...](https://github.com/cockpit-project/cockpit/blob/dbd7f3a8487a229ff8ba0ff9189c2feab6285d1c/pkg/systemd/host.js#L68)

* [https://www.freedesktop.org/wiki/Software/systemd/timedated/](https://www.freedesktop.org/wiki/Software/systemd/timedated/)

Cockpit also hardwires use of systemd's journalctl program.

* [http://cockpit-project.org/guide/latest/feature-journal.html](http://cockpit-project.org/guide/latest/feature-journal.html)

* [https://github.com/cockpit-project/cockpit/blob/0dd4ee7bac14...](https://github.com/cockpit-project/cockpit/blob/0dd4ee7bac14300c39278fd60872bf406887723a/pkg/lib/journal.js#L101)

<comment><USER15> Yes, cockpit uses hostnamed and timedated. Plus journalctl, which I noted. I'm perfectly aware of how dbus works, and if you think that hostnamed or timedated have 'idiosyncractic' APIs, I'd challenge you to look at the API for glib.

But it uses these because they are readily available over dbus. Not because cockpit has a hard dependency on systemd.

While that functionality wouldn't work, it would be really trivial to write your own using cockpit.spawn() to call `date`... or `hostname ...` instead of hostnamed or timedated. The truth is that hostnamed and timedated are simply better than the CLI tools.

However, I'm sure the Cockpit team would welcome a patch.

More to the point, there is absolutely nothing in Cockpit which is explicitly using systemd APIs outside of dbus, and this would not be hard to work around.

I know it's cool on HN to hate on systemd, but this is dumb. Cockpit already uses bare `hostname`: [https://github.com/cockpit- project/cockpit/blob/dbd7f3a8487a...](https://github.com/cockpit- project/cockpit/blob/dbd7f3a8487a229ff8ba0ff9189c2feab6285d1c/pkg/systemd/host.js#L555)

It would be a 20 line patch to break the systemd "dependency" on hostnamed. This is not a project intrinsically linked to systemd.

Even your hardwired "example" of journalctl is literally calling a process, which could just as easily be "cat /var/log/messages". It's 'hardwired' because systemd is the standard these days, whether you like it or not. However, extending the promise to simply do that if journalctl fails is trivial.

Maybe your idea of 'hard' dependencies and mine are very different. To me, a 'dependency' on, say, Python, means that there are Python calls all over the place which a reliance on specific semantics. That means that stubbing it out for Ruby or Lua or whatever would be hard. It is not "we wrote our application with this in mind, but we could patch it into stubbable modules in 3 minutes".

<comment><USER17> I think you just proved my original point[1]: As shipped, Cockpit will not function as intended on any OS that doesn't use _systemd_. If it requires patching and legwork the maintainers have not and do not yet plan to implement, it's up to the server maintainer to shoehorn it into their system. That would probably be more work than it's worth just to try out something that may still end up broken with each future update.

Again, no hate for _systemd_ here, I was just pointing out what I had read in the documentation and making it known. FYI my laptop runs Elementary OS which fully depends on _systemd_ and I have no issues with that situation, nor do I "hate" it. If I did I would run a different OS on it. _systemd_ is part of Linux for the majority of distros, it's likely here to stay, and these days it's stable enough for daily use.

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

</comment></comment></comment></comment></comment></comment><comment><USER18> What's different between this and Webmin?

<comment><USER19> This one seems to be tied to systemd...

<comment><USER20> Only for the journal and hostname functionalities, it should work fine for everything else without systemd.

<comment><USER16> ... and systemd timedated and systemd's idiosyncratic process #1 API. Its own doco also states that it targets systemd and does not implement use of other APIs.

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

<comment><USER20> Thank you for the correction!

</comment></comment></comment></comment></comment><comment><USER21> How much of an added security risk does adding a web-based admin interface (to the usual ssh tunnel) represent?

<comment><USER22> SSH has a lot of neat features that mitigate MITM, Eavesdropping, Bruteforcing etc.

Where a Web-based Admin Interface should have SSL and maybe some protection against bruteforcing.

Plus, you get all the vulns that come with the modern web

<comment><USER23> Add nginx/apache with client certificate authentication in front of this and most of those concerns go away. Plus this way you don't have to worry about exposing the port but you need to distribute your client keys before hand.

</comment></comment></comment><comment><USER24> Does it have an SSH terminal built right in the browser? Not clear from the screenshots or documentation.

If not you could also use Gate One[1].

[1] [http://liftoffsoftware.com/Products/GateOne](http://liftoffsoftware.com/Products/GateOne)

<comment><USER25> Yes it does.

<comment><USER26> I wonder what library they use for it. The one used by VS Code seems to be nice and its developers active.

Ah, found it: [https://github.com/xtermjs/xterm.js](https://github.com/xtermjs/xterm.js)

</comment></comment></comment><comment><USER27> This looks really awesome but the thing that i feel is missing from the website is simply what is it capable of doing? Like I want a list of features that it is capable of so I can evaluate whether or not I may have use for it.

</comment><comment><USER28> @authors The "Try it out" page shows nothing about where to get Cockpit or how to configure and run it. #plsfix

<comment><USER29> It could definitely be clearer, but if you click on the name of the operating systems on that page, they'll produce a little dialog that tells you how to run Cockpit.

</comment></comment><comment><USER30> I've just watched a presentation [0] linked by someone else in this thread and am quite impressed by the architecture and UX shown.

But it seems to me that Cockpit is more about monitoring and doing ad-hoc changes and not permanent configuration. I base that assumption on the fact that for example there are multiple places where one can configure network interfaces in debian and there is no cli tool or api to persist network configuration created with ip (at least to my knowledge). I can imagine parsing and editing fstab automatically and 100% correctly to be tricky too.

On the other hand enabling or disabling systemd services is permanent by default and there are probably more cli tools that automatically persist changes done through them.

Can anybody more familiar to Cockpit shed some light on the persistence of most of the configuration options?

[0] [https://media.ccc.de/v/ASG2017-99-cockpit_a_linux_sysadmin_s...](https://media.ccc.de/v/ASG2017-99-cockpit_a_linux_sysadmin_session_in_your_browser)

<comment><USER15> Cockpit uses hostnamed, networkmanager, and other services for configuration, not 'ip' or 'hostname'.

Everything you can see is persistent.

<comment><USER30> Thank you very much for clearing this up.

Since I'm not familiar with networkmanager in combination with other config: what happens if I configure some network interface using Cockpit that is already defined in /etc/network/interfaces.d/*? Will it just throw an error or could it bring my system into a broken/undefined state so that it wouldn't be reachable after the next reboot?

If the latter is the case it would probably be unwise to install/use Cockpit on an already configured system.

<comment><USER15> NetworkManager handles the config file management on its own.

Debian appears to require a flag to enable this on its own: [https://wiki.debian.org/NetworkManager#Enabling_Interface_Ma...](https://wiki.debian.org/NetworkManager#Enabling_Interface_Management)

If it's enabled, networkmanager will parse out the files and present them over dbus, nmcli, etc. Changes with nmcli, gnome-network (which also uses NM), or other tooling will update the config files. The same ones in /etc/network/interfaces.d/

So, hypothetically:

        auto eth0
        iface eth0 inet static
            address 192.168.40.112
            netmask 255.255.255.0
            gateway 192.168.40.1
            dns-nameservers 126.96.36.199

NM/Cockpit will show all of this information. If you change the address to 192.168.40.113, the config file will be updated (but otherwise unchanged), and the address will change on the running interface.

If it's not enabled, Cockpit will not see the interfaces at all.

</comment></comment></comment></comment><comment><USER31> what was wrong with webmin?

(ducks)

<comment><USER32> How to get recommendations for a software solution on HN: 1\. Submit an Ask HN thread, and ask for advice. 2\. Watch your thread get no response or interest from anybody. 3\. Give up on HN and go build your own solution. 4\. When it's ready, submit it to HN to help others in your situation. 5\. The recommendations you were looking for will appear in the comments.

<comment><USER33> Haha, now I'm worried that this is going to happen to me. I'm looking for a production-ready Terraform/CloudWatch project for Rails + Sidekiq: [https://news.ycombinator.com/item?id=16447092](https://news.ycombinator.com/item?id=16447092)

If I can't find anything, I'm going to build it myself. (And I'm going to add Cockpit to my servers.)

</comment></comment></comment><comment><USER34> Its pretty, usable, friendly, however No one is going to use this to manage more then a few systems.

<comment><USER35> If you need to manage a large and diverse infrastructure you should also consider Mist.io: [https://github.com/mistio/mist.io](https://github.com/mistio/mist.io)

Disclaimer: I'm one of the founders

<comment><USER36> How's the open source version of mist.io these days? I remember evaluating it (and cockpit, among others) for managing a small isolated network of about two dozen machines in early 2017 and it seemed that the open source release had been somewhat ignored and wasn't really working at that point.

Note that all of my work is on networks that are disconnected from the internet, so I ignore SaaS offerings or versions completely.

<comment><USER35> I think it's worth a second try. We've been updating it quite regularly lately and we're about to release version 3.0.0 of the Community Edition, most likely next week. It introduces support for monitoring and alerting w/ Telegraf & InfluxDB, among other things. If you're anxious ( and somewhat brave ;) you can try installing it from the staging branch today.

Also, there's a Mist.io Enteprise Edition nowadays that you can install on- premises. There's more info about that at [https://mist.io](https://mist.io)

</comment></comment></comment></comment><comment><USER37> Cockpit looks cool, but I'm using the new Jupyter Lab as a pretty awesome Python remote web shell. Access to a terminal, file explorer, and editor covers most everything I need and being able to run Python/Shell code in cells has covered most everything else.

</comment><comment><USER38> This is cool, but there's no information on how to set it up. Am I missing something?

<comment><USER39> I recently spun up a Debian 18.04 server to play with the beta. Installing it on that system was as easy as:

sudo apt install cockpit

<comment><USER38> ah, thanks (that should probably be in the documentation somewhere)

</comment></comment></comment><comment><USER40> Maybe I'm just missing something but where is the name of the package? How do I install this? Is it an `apt-get install cockpit`? I don't see that written anywhere obvious.

<comment><USER41> click your distribution (I assume Ubuntu?) here to reveal the way to install it [http://cockpit-project.org/running.html](http://cockpit- project.org/running.html).

if you are running Ubuntu seems to require backports for anything below 17.04 though.

<comment><USER42> I also had this question and it took me about 5 minutes to figure out that you needed to click to reveal. It's fancy, but not at all practical. Hopefully someone updates it to just a flat list.

</comment></comment></comment><comment><USER43> Linuxconf for Web anyone?

</comment><comment><USER44> I just want to consolidate journald entries across multiple boxes with a nice wen based UI. Anyone used cockpit for this? Or another solution?

<comment><USER45> Splunk?

<comment><USER44> Seems like too much code. Like I just want journald, consolidation and search.

</comment></comment></comment><comment><USER46> How would Cockpit compare with [http://vestacp.com/](http://vestacp.com/) ?

</comment><comment><USER47> Would be nice if this was in a docker container I could just run.

<comment><USER15> It is: [https://hub.docker.com/r/cockpit/ws/](https://hub.docker.com/r/cockpit/ws/)

<comment><USER47> It mentions atomic though. And nothing about docker on the install guide.

<comment><USER15> 'atomic' is a wrapper. Just look at the dockerfile.

Given how much cockpit wants to, y'know, manage the real system, running it in docker is senseless, and there's no reason to have it in the install guide. If you want it to actually manage your host, use the dockerfile.

</comment></comment></comment></comment><comment><USER17> For those who may wonder, it looks like this is GNU/Linux only, no support for BSD or any Linux distro that doesn't use _systemd_. That means no Alpine Linux and no OpenBSD/FreeBSD.

<comment><USER15> cockpit is not dependent on systemd. They don't ship sysvinit scripts, but there's no hard dependencies on systemd anywhere. I'd expect that the system logging may not be very nice without journald, but the vast majority of the interface runs over dbus or spawns processes on the server.

It _is_ dependent on dbus.

<comment><USER17> From their documentation, it certainly sounds like it is:

> _Cockpit uses systemd and the DBus APIs it provides to configure and monitor > core aspects of the system. Use of alternate system APIs are not currently > implemented._

and

> _Cockpit configures the system time and time zone via the_ timedated > _daemon. To perform similar tasks from the command line use the_ timedatectl > _command_

That's a _systemd_ specific daemon.

[http://cockpit-project.org/guide/latest/feature-systemd.html](http://cockpit- project.org/guide/latest/feature-systemd.html)

Edit: Also please note that I'm not disparaging Cockpit nor _systemd_ , just pointing out that (according to their documentation linked above) it is tied to _systemd_ which may be an issue for some.

<comment><USER16> See [https://news.ycombinator.com/item?id=16448768](https://news.ycombinator.com/item?id=16448768) and [https://news.ycombinator.com/item?id=16451862](https://news.ycombinator.com/item?id=16451862) .

</comment></comment></comment></comment><comment><USER48> This is great!

I've noticed you're using jquery (and that's fine) so what is YOUR opinion about current state of js? Are you considering any js framework? And if so, which one would it be and why?

</comment><comment><USER49> it is possible to make cockpit loosely coupling with dbus? so that you can add bsd, non-dbus-Linux-devices(e.g. openwrt) to it?

</comment><comment><USER19> 1\. Anyone remember Webmin?

2\. Seems to rely heavily on Systemd being present...

</comment><comment><USER50> I tried it on my fedora 26 last year and my impression is that it has a far way to go and a lot of problems to resolve on the way.

It's nowhere near a complete server administration product that will let you avoid the terminal.

Perhaps for simple tasks but I fail to see the purpose.

<comment><USER51> Cockpit itself is trying to be a "platform of sorts for modules to hook into. oVirt, for example, will install a cockpit plugin during installation of a hypervisor node allowing you to manage the local host or global cluster maintenance state and see how many VM's are running on the system (I would argue this is of limited benefit since you could just login to the oVirt Admin portal to do the same thing, but hey).

So, yes, you're right - a lot of work still needs to be done, but Cockpit itself seems to be an adequate base, just need to add support for managing commonly needed services at least at a rudimentary level though (MySQL/PostgreSQL, Apache/Nginx/lighttpd, Postfix/Dovecot/exim/cyrus, etc).

<comment><USER15> I'm the maintainer of the oVirt plugin.

The real advantage of it is that it allows installation of hosted engine easily, and a 'single pane' overview of a host (oVirt Node status without using nodectl, etc)

Since Cockpit wants to deal with dbus, the push is for other utilities (postfix, snmpd, etc) to publish relevant information over dbus, rather than teaching Cockpit the format of each and every configuration file on the system.

I wrote the Tuned plugin for Cockpit, and I maintain the oVirt plugin. I gave a talk at Devconf about plugin development, which is extremely easy, but the Cockpit team is small. It's very easy to write plugins for it, but even easier if they expose dbus.

That said, the cockpit API ([http://cockpit-project.org/guide/latest/api- base1](http://cockpit-project.org/guide/latest/api-base1)) makes handling files/processes from client-side Javascript in plugins simple. It's just that you'd need yet another config file parser...

<comment><USER51> Never realized it was even possible to do a hosted engine deployment via Cockpit, that's certainly useful (I've always just used hosted-engine --deploy from the command line because that's how I've done it since the 3.x days).

Do you have a link to a video of the presentation?

<comment><USER15> It was a workshop, but no videos that I'm aware of.

It was essentially "here's how to use React to build a cockpit plugin from the ground up -- it's easy"

I'm a Python/Go backend developer, mostly, but Cockpit is easy enough that even I can write plugins for it. The workshop basically walked through the git tags in [https://github.com/evol262/cockpit- boilerplate](https://github.com/evol262/cockpit-boilerplate)

cockpit-ovirt has a "Hosted Engine" tab which is an otopi parser. You'd find it to present exactly the same questions/options as "hosted-engine --deploy" in 4.0/4.1, with ansible and otopi deployments and a new UX in 4.2 which isn't a 1:1 representation of the questions asked.

Once Hosted Engine is deployed, the oVirt cockpit plugin can show the complete status of the HE cluster, put nodes into local maintenance, the whole cluster into maintenance, etc.</comment></comment></comment></comment></comment>


Show HN: Product Analytics Implementation Course - <AUTHOR> https://metricsacademy.com/ <comment><AUTHOR> Hi there, a friend and I are very excited to release a new education course we've created for instrumenting product analytics. We've both been building digital products for some time, and have been involved in the setup and management of product analytics. We've learned a lot about what not to do (the hard way), and about what sorts of strategies help make product analytics setup easier and more effective.

We created this course to help people understand how to do it right, so they can start to have more confidence in their data and leverage it more often when making product and business decisions.

We'd love to answer any questions and hear any feedback, including what you've found to be the hardest part of instrumenting product analytics on your team.

Thanks so much!</comment>


Howto Design with a Simulator - <AUTHOR> http://dev.emcelettronica.com/howto-design-simulator <comment><AUTHOR> Usually a traditional control system requires a regulated power supply (5V/3.3V), controlling the lighting loads via an opto-coupler. Another approach is interfacing the microcontroller directly to the main supply. Philips Semiconductors/NXP released several application notes for the latter approach, which was named as easytriac. It allows a low-end microcontroller to be embedded into the casing of each incandescent, CFL or LED lamps.</comment>


Ask HN:I started(&sold) FounderMatchup, now looking for my next big opportunity. - <AUTHOR>

I just finished freshmen year of college. I had co-founded FounderMatchup which ran successful events in Boston and NYC to help entrepreneurs find co-founders. We got acquired a few days ago.
I am either looking to start something interesting with a great team or join a growing early stage startup. A fellow hackernews friend described me as "bold and ambitious, and when you want something you go after it. You're pretty much made for marketing or founding."
What are your thoughts folks? Any interesting opportunities for me or some you know of? I live in Boston but open to SF as well. My email is smit at smitpatel dot com. <comment><USER2> You should become really good at biology and computer science and go work for something epic like Halcyon molecular! Or Robotex!

Check out some of the founders fund companies, <http://www.foundersfund.com/>, a lot are doing some super cutting edge stuff (and some are doing consumer internet too)

<comment><AUTHOR> Haha I wish. I've always hated bio. I am into technology but not bio-tech. Robots are cool but something I don't know much about.

</comment></comment><comment><USER3> Sounds like the world is your oyster. I'll throw my hat in. Recommend you add something about yourself to the public part of your HN profile to make it easier to gauge the fit.

Staying in college or dropping out?

<comment><AUTHOR> Thank for the recc buddy. While I add stuff, feel free to check out my blog: smitpatel.posterous.com, twitter.com/smit1293 and my linkedin.com/in/smitkpatel. Dropping out or not is based on what happens over the summer. So far I've learnt a lot more outside school haha.

</comment></comment><comment><USER4> May you provide an email address?

<comment><AUTHOR> smit at smitpatel dot com

</comment></comment><comment><USER5> Did you help with the M&A of FounderMatchup? What type of startups are you interested in?

<comment><USER6> I am interested in anything that solves a problem. I am mostly into consumer facing products in web and mobile. I honestly havent figured out what exact areas I like so am open to everything. I do spend a substantial amount of time on social media. Hope this answers your question? If not lets chat over email :)</comment></comment>


Google and Diversity - <AUTHOR> https://www.recode.net/2017/8/5/16102476/google-diversity-vp-employee-memo <comment><USER2> These responses confirm the articles premise.</comment>


Show HN: Searchable Who is Hiring? - <AUTHOR>

My friend Angus (angusiguess) & I became annoyed trying to parse through the wonderful 'Who is Hiring?' threads looking for internships this summer, so we made a searchable version.
It's just the first roll out, we have some other stuff planned. It's important to note that this was all done programatically, so there is no possibility for 100% accuracy with most fields.
We would love to hear your feedback! If you have any more personal issues (ie, want your post removed), contact info is available in our profiles.
URL: http://supzu.cc
Github: https://github.com/ianbishop/whoishiring <comment><USER2> Great job! I would change the cursor to a pointer when I hover over jobs so that I know each job is 'clickable'.

EDIT: The filter doesn't work :(

<comment><USER3> Hey, in what case is the filter not working?

<comment><USER2> I typed in 'django' under technology. None of the links I clicked contained that word.

<comment><USER3> Thanks, I've tracked it down and we'll get a fix in shortly. Sorry about that!

</comment></comment></comment></comment><comment><USER4> I was in the process of building something just like this, for the very same reason. :)

Great job! Looks very useful. One comment: it isn't immediately obvious that clicking the table row opens the link. Maybe make it more obvious by using the mouse-over-link cursor change?

<comment><USER3> Mouse overs should be better now, thanks.

</comment></comment><comment><USER5> Very useful, thanks. It would be quicker (and a bit less jarring) if instead of going to a new page with the listing details, the row you clicked on just expanded with the details inline.

</comment><comment><USER6> Clicked on "remote" then clicked the submit button and got "Mongo::OperationFailure in Posts#index "

<comment><AUTHOR> Sorry, this is now fixed!</comment></comment>


Mmhmm turns your boring Zoom call into a Weekend Update-style TV show - <AUTHOR> https://www.theverge.com/2020/7/7/21314035/mmhmm-personal-video-presence-beta-phil-libin-sequoia-app <comment><USER2> If you're looking to do this without OS X, or you want to do something like this in an existing Video conference app like Zoom or Jitsi (I have no idea if Mmhmm does or not, they give few details and I can't download it), this is pretty easy to do in OBS Studio. You can do video capture of your presentation, yourself, have background images, and arrange things however you'd like. Here's a Youtube tutorial [1] with some examples. You'd then need a virtual webcam plugin to use your OBS Studio stream in other software. On Windows you can use OBS Virtual Cam[2], on Linux you can use obs-v4l2sink[3]. On OS X I think there's still an open bounty for a OBS Studio webcam solution, so since Mmmhmm is only available on OS X anyway that might be a better solution for you.

It certainly seems like Mmmhmm makes this easier, and allows you to smoothly transition from one format to another, but OBS Studio is very workable as well, and works on more platforms.

1\. [https://www.youtube.com/watch?v=hk7W9ECtpZE](https://www.youtube.com/watch?v=hk7W9ECtpZE) 2\. [https://obsproject.com/forum/resources/obs- virtualcam.949/](https://obsproject.com/forum/resources/obs-virtualcam.949/) 3\. [https://github.com/CatxFish/obs-v4l2sink](https://github.com/CatxFish/obs-v4l2sink)

</comment><comment><USER3> The demo video is brilliant. Love it

</comment><comment><USER4> This sounds pretty amazing. Will totally help with random COVID zoom calls and my virtual college where I have to present something!</comment>


Predicting March Madness: On Tournament Structure and Bracket Scoring Rules - <AUTHOR> http://blog.smellthedata.com/2011/03/predicting-march-madness-tournament.html

<comment><USER2> The bit about choosing good loss functions is a nice general point that I find is ignored in many machine learning set ups: if you're going to work so hard making a model optimize some objective, make sure it's the right objective!

<comment><AUTHOR> Thanks. I (obviously) agree. The only problem is that it's not always computationally easy to optimize the thing you really care about.

<comment><USER3> Totally. It often becomes a trade-off of doing an alright job, e.g. approximately, optimizing the loss you're really interested in vs. doing a great job optimizing a tangentially related but much less appropriate loss.</comment></comment></comment>


Tech companies pay poor Kenyans to produce training data for AI - <AUTHOR> https://www.bbc.co.uk/news/technology-46055595? <comment><USER2> I think it's underappreciated just how much human labour goes into annotating data fro autonomous vehicles. Scale is a fast growing start-up, with 35 employees and around 10,000 contractors, many based out of India and Africa, who do data annotation for Cruise, Zoox, Lyft, and Nutonomy among others.

[https://techcrunch.com/2018/08/07/scale-whose-army-of- humans...](https://techcrunch.com/2018/08/07/scale-whose-army-of-humans- annotate-raw-data-to-train-self-driving-and-other-ai-systems-nabs-18m/)

<comment><USER3> Given that this training data basically gets loaded into neural nets, etc., can it be said that in some indirect sense these data labelers are actually driving these cars? Are we still just building the mechanical turk?

To be it shows how far we still are from biological intelligent systems. I don't recall having to point out what an apple is to my daughter more than a few times. Watching children learn is breathtaking. Even much simpler brains like those of rodents or cats are far beyond anything built so far in silico.

<comment> david-gpu Generally, neural networks do not memorize their training data. If they worked that way, they would not do well with samples they've never seen before.

So no, I would not say that the labellers are driving the cars. They do play an important role in the process of building these systems, though.

</comment></comment></comment><comment><USER4> "Brenda trains data used for artificial intelligence"

I like how the writer always mentions that they are training the data used for AI, when they are in fact tagging data, not training anything...

<comment><USER5> That's a curious slip, well spotted. I wonder if the caption-writer heard about "training data" and misunderstood that it's an adjective?

</comment></comment><comment><USER6> I just find the mental gymnastics fascinating that they are talking about how these people are living in abject poverty, and yet in the same article have the gall to highlight how people in the US are losing their jerbs. Which is it? Are we helping people in poor countries have a slightly better quality of life by working in an air conditioned office vs agriculture, or are we taking US jobs? It's one or the other.

<comment><USER7> Why can't it be both?

<comment><USER8> You obviously can't save the jobs in one country and also create _those same jobs_ in another country.

The only way for both sides to profit (over the long run) is for either country to do the job it can do the most efficiently, i.e. comparative advantage. In practice, that's a real tough concept for people to come to terms with. People want to have their cake and eat it too.

<comment><USER9> There are enough non-zero-sum effects in economics that this isn't plainly apparent to me. It seems like quite a claim, really. For instance, I find it plausible that cheap labor from overseas may actually help subsidize the creation of an industry, which might grow enough to need more employees in the US for related work.

<comment><USER10> It's actually a pretty reasonable and logical claim, supported by 20 years of globalism that gutted American employment.

</comment></comment></comment></comment></comment><comment><USER11> is there an opensource product to manage this kind of labeling ? features should include double entry, statistical error checking , etc

<comment><USER12> Its not open source but this tool helps in managing labeling by your in-house team or contractual workers. It also provides you annotation software for most of image and text usecases. Here is link to the same.

[http://dataturks.com](http://dataturks.com)

<comment><USER11> thanks ! but we would prefer something that had open source availability (the gitlab model) as a fallback measure.

im seeing labelbox and i think they follow that - [https://www.labelbox.com/](https://www.labelbox.com/)

</comment></comment></comment><comment><USER13> That's closer to human captcha solving business. I wonder, if Google's most recent captcha is actually being human generated?

<comment><USER14> I think it's the other way around. Users solving the captcha are helping classify training data

<comment><USER15> I'm surprised that not everyone has figured this out. You're doing free labor for Google's Waymo. Why else would Google's re-captcha have all of the photos include cars, bridges, and traffic signs and lights?

<comment><USER16> 1\. This really has been obvious since the start.

2\. After Google acquired the Captcha service they initially used it for Google Maps where you was always asked to pick street numbers and store names. Only recently has it pivoted to Waymo use cases.

</comment></comment></comment></comment><comment><USER17> Working conditions aside, this is ironic: AI development would supposedly get rid of boring jobs, instead it's creating exactly that.

</comment><comment><USER18> This is wonderful news !!

\- By sending dollars to Kenya it's helping reduce inflation for the Kenyan govt. The biggest problem for many developing countries is finding a way to get their hands on the global reserve currency.

\- Its allowing private wealth to be created (by women !!), empowering women have very positive cascading effects in a country (fertility rate drops, women have personal freedom to do other things ). Private wealth directly in the pocket of Kenyans is one the most efficient ways the developed world can help the developing world.

Normally giving cash to the govt results in looting of public coffers.

\- Teaching useful computer skills to the average kenyan.

<comment><USER19> I don't follow the "very positive cascading effects" line. How is low fertility rate and women being free to do other things a positive cascading effect? Historically, it makes families more unstable.

Edit: I'm not saying women working is a bad thing. It's good on many fronts. But I feel the ripple effects are not positive.

<comment><USER20> It's not only developing countries that benefit from increased female participation in the labour force. For Western nations, the increased proportion of women in the labour force was a core component of the rapid increased economic growth between the 1940's and today.

Low fertility is an interesting thing where it comes to development; for most countries it has quite dramatically declined as incomes have increased. The effects are likely bidirectional (increased economic growth -> lower fertility rate; lower fertility rate -> increased per capita income).

The drivers are complex and interrelated: high child mortality rates, low life expectancy, and high poverty are associated with high fertility. It's an unjust comparison to make, however leading theories share common features with K-r reproduction strategies in ecology (with increased survival / longevity, investing in a few highly educated/skilled children becomes feasible). Similarly, increased education / maternal health is highly correlated with economic development and child wellbeing. These are often highly compounding effects over time - a virtuous cycle in which increased economic freedoms, health, education, and opportunities (male and female - often females are relatively impoverished, so there's the potential for bigger immediate benefits) can lead to rapid development with the right institutional conditions.

</comment></comment></comment><comment><USER21> They are not 'programme'-ing anything. They are tagging images and labeling objects in those same images.

They 'sweatshopped' the whole image tagging industry to 3rd world countries.

<comment><USER22> Yes, that title was baity and misleading, so we've changed it to a more representative phrase from the article. A photo caption, actually; it's surprising how often those make better titles.

</comment></comment><comment><USER23> >> "But one thing that's critical in our line of work is to not pay wages that would distort local labour markets. If we were to pay people substantially more than that, we would throw everything off. That would have a potentially negative impact on the cost of housing, the cost of food in the communities in which our workers thrive."

What a joke! We don't to pay them more because they will be able to buy decent house/invest in infrastructure or god forbid even start a small business...that would totally distort local labour markets, right?

<comment><USER24> Or become target for local mob that did not get the job. Become target for police which might also be corrupt.

In some places you can get badly beaten up, robbed and whatever else for having only a bit more than others.

I am not saying they are entirely right with what they do, but there _are_ legitimate reasons for that kind of approach.

<comment><USER25> Exactly if you're disrupting existing power structures either by "overpaying" employees (see recent PSG football leaks) or unfairly cutting costs (Uber/Taxis or Airbnb/Hotels), you're going to make enemies of a lot of angry people.

I'm not saying Samasource does not profit from this situation, they clearly do, but Silicon Valley taught me that money spent paying developers through the nose ends up mainly in the landlord's pocket.

<comment><USER23> >> Exactly if you're disrupting existing power structures either by "overpaying" employees (see recent PSG football leaks) or unfairly cutting costs (Uber/Taxis or Airbnb/Hotels), you're going to make enemies of a lot of angry people.

This is pure BS. What "power structures" are you talking about? Well paid jobs bring money which is spent in the local economy. I doubt the nearby shop owner will be angry because now you can buy food instead to beg for it.

The Uber/Airbnb model is a totally different issue because they compete with the local market and enjoy unfair advantages which is not the case here.

</comment></comment></comment></comment><comment><USER26> To be clear (and to no one's surprise): No one is paying poor Kenyans to program self-driving cars.

They are being paid to label data.

<comment><USER27> While the main stream media is eager to portray fakenews as the gravest threat to free society, this type of clickbait headline writing essentially exposes their duplicity. So while the press like to pontificate from their ivory towers on their unalloyed noble purpose, they are ultimately human institutions, with all its ensuing fallibility, all its flaws.

<comment><USER28> It's more complicated than that.

Matt Taibbi -

"As it turns out, there is a utility in keeping us divided. As people, the more separate we are, the more politically impotent we become. This is the second stage of the mass media deception originally described in Manufacturing Consent. First, we're taught to stay within certain bounds, intellectually. Then, we're all herded into separate demographic pens, located along different patches of real estate on the spectrum of permissible thought. Once safely captured, we're trained to consume the news the way sports fans do. We root for our team, and hate all the rest. Hatred is the partner of ignorance, and we in the media have become experts in selling both."

[https://taibbi.substack.com/p/introduction-the- fairway](https://taibbi.substack.com/p/introduction-the-fairway)

</comment></comment></comment><comment><USER29> Click bait title

<comment><USER30> You can give the BBC feedback on it here: [https://www.bbc.co.uk/news/20039682](https://www.bbc.co.uk/news/20039682)

I did - I like the idea they cover this, I just don't want it to be misleading

</comment></comment><comment><USER31> Off-topic, but does anyone have more info on the "call through encrypted line on Signal" bit at the bottom of the article.

Seems like signal is catch up, I'm gonna get on it too.

<comment><USER32> I have no inside info, but presumably it's a call-out to potential journalistic sources. The call-out emphasizes secrecy to assuage fears of retaliation by third parties not happy to see the news spread.

The reporters Edward Snowden reached out to almost missed out on the story because it seemed too much work to install and learn to use the secure communication tools Snowden asked for before saying what it was all about.

</comment></comment><comment><USER33> So these are the white collar knowledge jobs of the future?

<comment><USER34> These are the blue collar jobs.The white collar jobs are about designing the network architectures and training them.

</comment></comment><comment><USER35> Click bait article like these are the reasons that Trumps branding of prestigious media houses as "Fake news" found resonance among the masses. Kenyans are not being paid to program driverless cars but to label data. There is a Himalayan difference in skillsets required for programming driverless cars and labelling data. BBC should no better. But why would they care? They got me to to click the article and increase their visitor count.</comment>


Abraham Lincoln Filed a Patent for Facebook in 1845 - <AUTHOR> http://natestpierre.me/2012/05/08/abraham-lincoln-patent-facebook/

<comment><USER2> Submitted and killed earlier as blog-spam:

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

Significant discussion there, including the fact that it's a hoax: <http://news.ycombinator.com/item?id=3945848>

Quoting that link:

        I contacted the curator at the Lincoln Museum by email.
        His reponse:

            This is entirely a hoax. Clever, too. We have an official
            statement to that effect due within the hour. -James

            James M. Cornelius, Ph.D. Curator,
            Lincoln Collection Abraham
            Lincoln Presidential Library & Museum
            112 N. Sixth St. Springfield,
            IL 62701-1310 217.785.7954
            http://www.alplm.org</comment>


Thinking Functionally in Ruby [video] - <AUTHOR> http://skillsmatter.com/podcast/ajax-ria/enumerators

<comment><AUTHOR> Slides are at [http://experthuman.com/files/thinking-functionally-in- ruby.p...](http://experthuman.com/files/thinking-functionally-in-ruby.pdf) if you'd prefer.

Apologies for the point in the video where I answer in the affirmative a question about whether foldr is "the same as" foldl over the reversed list. In the context of the example that's correct, but of course in general it's only true when the function is commutative.</comment>


Please review my part time project - Twitter meets wikipedia - <AUTHOR> http://twitterex.com

<comment><USER2> Well, interesting idea, and I admit I couldn't find a decent place on twitter itself to browse lists.

That said, your UI is well...non-existent. I know it's just a part-time project, but just a little bit of UI work could make this look a lot more fantastic.

<comment><AUTHOR> thank you! am on it. done the header already. do let me know what you think.

<comment><USER2> Awesome that is about 20 times better. Now, just working some more on the fonts and the presentation and it's become pretty interesting. Currently, what I need from it is some feature that will pull me. For instance, have a "login using twitter" option.

</comment></comment></comment><comment><AUTHOR> ok, now some ui is done. do review twitterex.com !</comment>


How to convince anyone (of anything) - <AUTHOR> https://medium.com/@asharfin/how-to-convince-anyone-of-anything-4775de0e51a1#.kpn39jz7d <comment><USER2> I think the takeaway from this is that the way to convince anyone of anything is to 1) have a track record of being right and 2) be nice.

<comment><AUTHOR> Track record helps. But anyone can make an argument based on evidence.

Argument based on evidence + person I like = persuasion.</comment></comment>


Faster-than-light neutrino experiment to be run again - <AUTHOR> http://www.bbc.co.uk/news/mobile/science-environment-15471118

<comment><USER2> Previously: <http://news.ycombinator.com/item?id=3167475></comment>


Bezos Discounts Kindle-Tablet Competition - <AUTHOR> http://blogs.wsj.com/digits/2010/12/27/bezos-discounts-kindle-tablet-competition/ <comment><USER2> The "LCD tablet" market has a lot of space to play in, in terms of price point. I picked up a Cruz Reader from Borders at deep discount for Christmas; its been an awesome eReader / micro-tablet / news reader. The iPad's not necessarily king of that form factor any more and becomes less so as more Android devices roll out at much deeper price points.

That space is only going to get tighter in the next few years.

</comment><comment><USER3> At the very least the competition will not be yanking your books off your e-reader without even letting you know.

[http://arstechnica.com/media/news/2010/12/amazons-latest- kin...](http://arstechnica.com/media/news/2010/12/amazons-latest-kindle- deletion-erotic-incest-themed-fiction.ars)</comment>


On Wikipedia: In Defense of Inclusionism - <AUTHOR> https://www.gwern.net/In-Defense-Of-Inclusionism <comment><USER2> Maybe Wikipedia don't scale as gwern assumes.

You would think that editing work related to the number of pages is sublinear or linear, but maybe that's not true.

When the organization grows in numbers number of management positions grows logarithmically, but the amount of communication may grow much faster. Wikipedia has a editing hierarchy and process that is much more complicated than just a simple tree hierarchy for a good reason.

The culture of the organization may also put limits to the growth and is related to communication. You can't just assume that the organizational culture can be maintained without increasing efforts to maintain it. Large companies and organizations always struggle with this. The mission is lost.

I really hope that genuinely meritocratic pedias like [http://www.scholarpedia.org/](http://www.scholarpedia.org/) , [https://plato.stanford.edu/](https://plato.stanford.edu/), [https://www.iep.utm.edu/](https://www.iep.utm.edu/) will continue to grow as alternative to Wikipedia.</comment>


Why you "CONNECT" on Twitter and Quora and "DIS-CONNECT" on Facebook - <AUTHOR> http://realmccoy2k.tumblr.com/post/13970428700/why-you-connect-on-twitter-and-quora-and

<comment><USER2> This is a long (and slightly imprecise) way of saying you meet new people then connect with them on Twitter, while on Facebook you connect with people you've already met in real life.</comment>


A self-publishing platform for spoken audio - <AUTHOR> http://tapewrite.com <comment><AUTHOR> This platform allows you to publish an mp3, complement it with show notes in the form of cards, and people can listen to it and be social. Think Medium for your ears.

We are bootstrapping this so far, and want to build a netflix for your ears out of it. Any suggestions, feedback?

<comment><USER2> From a feature standpoint, what does this provide that Google Hangouts (with publishing to Youtube) doesn't?</comment></comment>


Common Lisp Koans - <AUTHOR> https://github.com/google/lisp-koans <comment><USER2> I'm surprised to see that this is on Google's Github page. Do they have any projects (besides this) that use Common Lisp?

<comment><USER3> They bought ITA Software a few years ago, which largely used Common Lisp.

<comment><USER4> And additionally employ Peter Norvig[0].

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

</comment></comment></comment><comment><USER5> Is there any reason today to study Common Lisp instead of a more popular and evolving Lisp, like Clojure or Racket?

<comment><USER6> btw, your question assumes that Common Lisp is not evolving. This is not correct at all. Which improvements Clojure evolving consists of? Transducers? Cl got them too: [https://github.com/aamedina/transducers](https://github.com/aamedina/transducers) Transactional memory? [http://stmx.org/](http://stmx.org/) ClojureScript? [http://davazp.net/jscl/jscl.html](http://davazp.net/jscl/jscl.html)

These are only infrastructure things, Common Lisp has language features which are just impossible in Clojure while it based on JVM.

<comment><USER7> > _btw, your question assumes that Common Lisp is not evolving. This is not > correct at all. Which improvements Clojure evolving consists of?_

Traction for one.

> _Transducers? Cl got them too_

Pointing to some random libs that implement the same concept doesn't mean it's part of a languages culture/ecosystem/common practice as transducers are to closure.

E.g. I could say "Rails? Well, language X has a rails like framework too", but that wouldn't mean you get the same benefits of using that framework over rails, when you include language adoption, community vibrancy, availability of programmers to hire, tooling, books, etc.

<comment><USER6> They should not be a part of language, what for?

Everything else you mentioned is about community only, and doesn't apply directly to the language.

E.g. if you have a good language without a community, community can eventually grow, but you can use the language anyway.

If you have a bad language with great community - it doesn't reduce your suffering from the language itself.

<comment><USER7> > _E.g. if you have a good language without a community, community can > eventually grow, but you can use the language anyway. If you have a bad > language with great community - it doesn 't reduce your suffering from the > language itself._

My experience has been the inverse.

I'd rather use a bad, or usually mediocre language WITH community, tooling, libs, books, programmers etc, than a better one where I'll be burdened by the lack of all of these.

So, in a sense, community tramps inherent language qualities.

After all that's the very basic message from Lisp and Smalltalk.</comment></comment></comment></comment></comment>


Ask HN: RapGenius for code? - <AUTHOR> I think RapGenius (i.e. Genius) is a really powerful way to arrive at a crowdsourced understanding of what content is. This works well for static content like lyrics of a song, text in some literature etc. I got curious what something like this might look like for code and after a cursory google, I stumbled upon Omniref, which looks like they're targeting this exact problem. Of course, they're aiming to provide a very comprehensive solution that scours and indexes the web to surface code that can be annotated. AFAIK, their solution works for Ruby and more recently Javascript.
I'm curious if this could be packaged as some github plugin that is language agnostic. Think of it as a persistent Q&A that holds a "conversation/discussion" on specific lines of code. Naturally, this feature is available when you send a PR to start a discussion, but once the PR is closed that's the end of the discussion. One problem code presents that other literature doesn't is the fact that it tends to be less static (i.e. code keeps changing over time whereas lyrics to a song may not.) If there were an elegant workaround to this problem (where prior versions of a line of code and its Q&A is cached so that an interested user could view what the past conversations were) I'm tempted to say that this could really streamline the learning and collaboration process when it comes to using/writing code.
Anyone here play around with this idea in the past? If so, I'd love to hear your stories. If not, anybody interested in joining me on hacking some POC up to see what this could end up looking like? <comment><USER2> You can annotate code with the new Genius beta!

For example: [http://genius.com/5077469/gist.github.com/RogerPodacter/3e8a...](http://genius.com/5077469/gist.github.com/RogerPodacter/3e8adbfa9cfd06d239a2)

And actually you can put "genius.com/" in front of ANY url to annotate that page. For example: [http://genius.com/5077492/www.paulgraham.com/yahoo.html](http://genius.com/5077492/www.paulgraham.com/yahoo.html)

There's also a chrome extension: [https://chrome.google.com/webstore/detail/genius- beta/ccaokn...](https://chrome.google.com/webstore/detail/genius- beta/ccaokncpmmjiakalbcfdbfmpcaiddjdn?hl=en-US)

You can sign up for the beta at [http://genius.com/beta](http://genius.com/beta).

(Questions / feedback welcome – email@example.com)

<comment><USER3> But that code is just a html page you are annotating. What happens on a new commit. The annotations should persist somehow across code changes. That would require specialised solution for code annotation I suppose.

<comment><USER2> Well take this for example: [http://genius.com/5079163/github.com/rails/rails/blob/master...](http://genius.com/5079163/github.com/rails/rails/blob/master/activemodel/lib/active_model.rb)

This annotation will always be on the version of active_model.rb at master, even if it changes.

And we try pretty hard to anchor annotations even when the underlying text changes. Here's a talk I did explaining our approach to "fuzzy annotation anchoring" if you're super interested: [https://www.youtube.com/watch?v=FJyqfRcyYIQ](https://www.youtube.com/watch?v=FJyqfRcyYIQ)

But it's definitely not perfect! Hit me up with suggestions: email@example.com

</comment></comment></comment><comment><USER4> Check out Sourcegraph: [https://sourcegraph.com](https://sourcegraph.com). It semantically analyzes code, makes it searchable, and lets you find usage examples of how others use it. One of the features we're planning to ship soon is commenting on pieces of code.

Because Sourcegraph understands the code at a semantic level, we can tie comments to a specific function/class/module and show the discussion history even as the specific lines of code change over time. Right now, we do comments for code reviews, but want to add this for any existing version of the code. I'm one of the creators of Sourcegraph and would love to hear any feedback/suggestions the HN community has to offer!

<comment><AUTHOR> Hey, sourcegraph looks really neat! Another commenter provided the following example: [https://sourcegraph.com/github.com/golang/go@ac452349e4f40c3...](https://sourcegraph.com/github.com/golang/go@ac452349e4f40c30d50f9922bf2c4592e748ce5e/.tree/src/bytes/bytes.go#selected=3)

I love the fact that I can hover over anything (primtive, function etc) which surfaces a blurb on what its accomplishing .

>> Right now, we do comments for code reviews, but want to add this for any existing version of the code

Any idea on when you may roll such a feature out? I'd be hugely interested in using something like this for my team.

<comment><USER4> We're shooting for sometime soon; it's high on our priorities list, and we'd love to find partners to help test out the feature. Want to shoot me an email at email@example.com?

</comment></comment></comment><comment><USER5> "Omniref (YC W15) Is Rap Genius for Code":

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

</comment><comment><USER6> Genius already does code: [http://genius.com/James-somers-using-diff-match- patch-to-cap...](http://genius.com/James-somers-using-diff-match-patch-to- capture-revision-history-annotated)

<comment><AUTHOR> I wasn't able to locate an example (weak google foo i guess), so thanks for providing it. My only mild gripe with this is that the "code" is actually "static" on which the comments are being applied.

For most code bases, the code is bound to evolve and change, so I wonder what the version reconciliation model would look like if there has to be constant syncing between what's on GitHub and what's hosted on genius (how would we capture multiple versions for example). Moreover, it appears that genius is great for annotating lines, but doesn't have the same Q&A feel that Omniref does[1]. I think what would be of real value is having the Q&A hosted "closest" to the codebase which is why I was thinking about a GitHub plugin. This in turn automatically has the ability to reconcile any old/deprecated questions that were relevant when the code was old.

[1] [https://tctechcrunch2011.files.wordpress.com/2014/12/screen-...](https://tctechcrunch2011.files.wordpress.com/2014/12/screen- shot-2014-12-31-at-9-42-32-am.png?w=1360&h=452)

<comment><USER7> >weak google foo

At risk of being pedantic, it's "fu" as in "Kung fu", which loosely translates to English as something like "work and effort".

<comment><AUTHOR> Duly noted.

</comment></comment></comment></comment><comment><USER8> Think the chaps at Sourcegraph are already on it. Here's an example:

[https://sourcegraph.com/github.com/golang/go@ac452349e4f40c3...](https://sourcegraph.com/github.com/golang/go@ac452349e4f40c30d50f9922bf2c4592e748ce5e/.tree/src/bytes/bytes.go#selected=3)

</comment><comment><USER9> This would be an awesome pedagogical tool.

I'm a student and often find myself struggling with pseudocode to the point that I end up writing it out by hand and annotating it in a similar fashion on paper.

<comment><AUTHOR> I agree. Answer-hubs like stackoverflow have their own place, as do Git discussions for PR's. But I'm tempted to say that there's a gap for more effective collaboration in the "in-between parts" you know, where some new contributor takes a look at the codebase and says "Huh, why is this written like this?". Instead of chat/email, the entire conversation history can be preserved adjacent to the codebase itself without being intrusive.

</comment></comment><comment><USER10> Partially related: [https://en.wikipedia.org/wiki/Literate_programming](https://en.wikipedia.org/wiki/Literate_programming) [https://fogus.github.io/marginalia/](https://fogus.github.io/marginalia/)

<comment><USER11> And partially related to the task of understanding/navigating a code-base:

[https://github.com/OpenGrok/OpenGrok](https://github.com/OpenGrok/OpenGrok)

</comment></comment><comment><USER12> In an ideal world, this would be pointless because if the code requires "annotations", it should be rewritten, or annotations may be just a specific kind of comments in the code itself rendered in a specific way.

But in the real world, I think, the use case for annotations is when _one group of people_ writes code, and _another group of people_ annotates it because authors and collaborators can be opinionated, stubborn, lazy, or too busy, or there may be too much bureaucracy on the project, so it is much more realistic to just put annotations on some third-party website than to try to collaborate with the authors to add comments in the code or refactor it.

</comment><comment><USER13> Something like Google Docs comments hanging off the side of the document? It fits less for the Rap Genius example since the annotations explain the line, and in code if the line needs explaining then it should have a comment within the code itself.

I like the idea for discussions, but does the discussion stay there? Would an individual line get bogged down in "stupid questions" that someone has to trawl through to find what they want? If it's on by default, would it just be annoying to those trying to read the code, and if it's off how many people would go out of their way to turn it on?

It's certainly interesting, anyway.

<comment><AUTHOR> This is what I had in mind (lifted off of the techcrunch article on Omniref): [https://tctechcrunch2011.files.wordpress.com/2014/12/screen-...](https://tctechcrunch2011.files.wordpress.com/2014/12/screen- shot-2014-12-31-at-9-42-32-am.png?w=1360&h=452)

It's available if the person browsing the code is actually "interested" in looking at the conversations around a particular part of the code.

</comment></comment><comment><USER14> There are a lot of code review tools that might be suitably repurposed for this sort of thing. Lots of quality/community issue I expect though.

</comment><comment><USER15> So I reached out to them about this a few months back - some of their engineers have pitched it and done it internally.

Check this out: [http://genius.com/3410852/Genius-engineering-jobs-at- genius/...](http://genius.com/3410852/Genius-engineering-jobs-at- genius/Introducing-code-genius)

</comment><comment> vezzy-fnord So this would be something like "Literate Programming as a Service", then?

<comment><AUTHOR> I'd never heard of that before, but just checked it[1] out and it looks pretty cool. I guess the only distinction I'd make is for cases where people have a bunch of code already written out, and someone comes in and says "Hmm, why was this written like this?" and the original dev (or some other contributor) can respond with answers that have votes and the possibility of follow ups. Basically like an HN discussion board where the highest rated/popular answers are up top and each comment can have its own children.

[1] [https://en.wikipedia.org/wiki/Literate_programming#Example](https://en.wikipedia.org/wiki/Literate_programming#Example)

</comment></comment><comment><USER16> I think it is a good idea - one piece of advice, do not make your UI black :)

</comment><comment><USER17> How about [https://notedcode.com](https://notedcode.com)

</comment><comment><USER18> i don't wana;turn.to look at yo face.man look atchyo mama man look at the phaze.

                                                   by:kole

</comment><comment><USER19> StackOverflow?

</comment><comment><USER20> > I think RapGenius (i.e. Genius) is a really powerful way to arrive at a > crowdsourced understanding of what content is.

I dunno if I agree with that.</comment>


Dreamhost's core network goes down at 2:20AM. - <AUTHOR>

It went down early this morning and has been struggling to get back up in fits and starts ever since. (Access to dreamhoststatus.com is even spotty. It's hosted off-network, I'm sure that's just because of the pounding of traffic it's getting as America wakes up and goes online.)<p>For a bit of schadenfreude, do a Titter search for Dreamhost right now. It's a fire hose of complaints. <comment><USER2> Their status page contradicts itself... the notice at the top of the most recent post says the network is down...

 _We apologize for the downtime as our core network is offline at the moment._

...but the latest timestamped update says it's not:

 _Update: 7:28pm (Pacific):The network is confirmedly looking much better, but we continue keeping an eye on it. If you're still having any issues, please submit a ticket with as much details as you can provide, so we can use that to evaluate if your case is unrelated or if there is still something else lurking around waiting to be fixed. We'll update again as the evening progresses, but so far so good. We very much appreciate your patience and understanding regarding this outage._

</comment><comment><USER3> Middle of the night is middle of the day for some :)

Some of my sites are offline (now I know that pingdom really is active at least!). Luckily they are personal, non-critical sites. It's the first serious outage I've had since joining 8 months ago.</comment>


Static Signing: An Alternative to SSL - <AUTHOR> http://jonmah.tumblr.com/post/18281110021/static-signing

<comment><USER2> This looks nice, but it has a few problems:

-first, relying on DNS for certificate distribution might not be a good idea. It adds complexity, would not be secure without stuff like DNSSEC, and places too much responsibility on DNS.

-second, you could have gained a lot of CPU time in 1995 when static pages were the norm, but right now, for apps using AJAX heavily, you will not gain much.

-third, it does not prevent MITM. I can mount a server between you and the website, and keep serving you outdated content with its valid signature. Or serve you prepared content that I received earlier.

-last but not least, TLS certificates are cheaper and cheaper these days (not necessarily a good thing, though), and encryption doesn't cost much anymore.

Apart from that, I agree that would have been a cool idea :)

</comment><comment><USER3> Very similar to a proposal I made a few years ago for signing of SCRIPT tags: [http://blog.jgc.org/2009/09/solving-xss-problem-by- signing-t...](http://blog.jgc.org/2009/09/solving-xss-problem-by-signing- tags.html)

<comment><AUTHOR> Indeed, looks like an extension of that to HTML and images. With the HTML is signed, then scripts just need to be hashed, not signed with your key.

</comment></comment><comment><USER4> It's an interesting idea. I'm curious about the point (²) about cache hits where there are currently misses. What scenario would this happen in? If you're pointing to the same cachable resource on different pages, it should be cached anyway.</comment>


The SWYM programming language (has an "etc" keyword) - <AUTHOR> http://www.chalicegames.com/swym/SwymWebIntro.html

<comment><USER2> I like that he's going to introduce quantifiers into his language (e.g. some(X) > every(Y)). What I'm concerned about tho is that this will have some very peculiar "errors" for some people. It seems like he's using what we linguists would call de re scope, which is to say the first quantifier has higher scope than the second one.

For example, using English, and translating into first order logic with restricted quantifiers, as well as Ruby:

      Some dog chased every cat
      ∃x:dog(x)[ ∀y:cat(y) [chased(x,y) ]]
      dogs.some? { |x| cats.all? { |y| chased x, y }}

Unfortunately, the English sentence is known to have another reading, one where each cat is chased by some or other dog, maybe not the same one for each cat:

      ∀y:cat(y)[ ∃x:dog(x)[ chased(x,y) ]]
      cats.all? { |y| dogs.some? { |x| chased x, y }}

Which means some poor coder might end up typing some(dog).chased(every(cat)) in his language, thinking he's getting the ∀ > ∃ reading (the second one above) and bamph, weird behavior. Even if you're familiar with how quantifiers work in this language, the similarity to english in this regard might easily lead someone to absentmindedly make this error.

That's not to say that he shouldn't have quantifiers -- I think we need some interesting natural-language like things like quantifiers in experimental languages -- but it's definitely something he should watch out for.

</comment><comment><USER3> I always liked the fact that in Knuth's MMIX, the antipodal opcode to SYNC is SWYM.

</comment><comment><USER4> This is the coolest looking new language I've heard about in a long time. So many new things that I don't even know how I would start programming in it. I love seeing that. The focus on readability is also awesome. This will definitely be a source of inspiration for the language I'm working on.</comment>


Scientists Design Bacteria to Reflect "Sonar" Signals for Ultrasound Imaging - <AUTHOR> http://www.caltech.edu/news/scientists-design-bacteria-reflect-sonar-signals-ultrasound-imaging-80803 <comment><USER2> > In the 1966 science fiction film Fantastic Voyage, a submarine is shrunken > down and injected into a scientist's body to repair a blood clot in his > brain. While the movie may be still be fiction, researchers at Caltech are > making strides in this direction: they have, for the first time, created > bacterial cells with the ability to reflect sound waves from inside bodies, > reminiscent of how submarines reflect sonar to reveal their locations.

I think this wins the Biggest Reach To Connect Science News With Pop-Cultural Touchstones prize.

I distinctly remember reading about synthetic biology ~10 years ago, when it was just emerging as a concept, and thinking "this sounds like a fun toy, but it's not practical or useful- cells are too complex to engineer with such simple 'modules,' and what can you do with a bunch of switches to control fluorescent protein, anyway?" But the concept still exists, and advances like this one march steadily on...

In a way, this kind of medical-synthetic-microbe could be thought of as a "soft genetic therapy." You could reprogram your own cells to manufacture some missing enzyme, or eat cancer cells, or whatever, but as yet (even with CRISPR and co.) we don't have a _really_ safe way to do that in humans. But if you can find some bacteria which would get along fine in your body anyway, and modify _them_ to fulfil your whims, that's much easier- and if things turn sour, you can just take some antibiotics.</comment>


A Visual Guide to the Financial Crisis: The Bailout - <AUTHOR> http://blog.mint.com/blog/finance-core/a-visual-guide-to-the-financial-crisisthe-bailout/

<comment><USER2> I was hoping for something interesting, but it's just a graphically prettied- up version of something that could have been thrown together in 2006. Or 1996. Or 1826.

* The rich didn't get that way 'manipulating capital markets'. The biggest investors in hedge funds tend to be pension funds and college endowments, both of which provide big benefits mostly to the middle class.

* The 'unregulated bubble economy' is a funny phrase for an economy fueled by mortgages. Either mortgages are more regulated than, say, stocks, or I didn't hear about: a law making dividends completely tax free; a law making capital gains tax-free if you worked for the company in question; two giant federal agencies that bought hundreds of billions of dollars worth of stocks, and wrote put options on many more, with the express purpose of inflating their price; a strong lobbying effort to get broader stock ownership, including getting members of low-income, low-credit minorities to speculate in dodgy stocks. The mortgage market looks really weird if you imagine its rules being applied to any other market.

* It's funny to compared taxes for 'the wealthy' and 'the working' -- the rich people I know work a whole lot harder than the poor ones. And since capital gains and dividends are paid out of profits taxed at the corporate level, even reducing the capital gains tax to zero would put the rich at about the same level as everyone else; as it is, income earned by a corporation you own part of is taxed more highly than income you earn directly.

* The headline about two thirds of corporations paying no taxes was highly inaccurate. It referred to a study claiming that during a multi-year period, at least two thirds of corporations paid no taxes in at least one year. In other words, if you surveyed ten people about their eating habits and found that five of them skipped breakfast once a week, this headline's standard of proof would allow you to argue that half of them were starving.

I don't want to cover the rest, but those were the most egregious points.

</comment><comment><USER3> The very bottom should show a massive meteor on a crash course with Earth.

</comment><comment><USER4> Why no mention of Rep. Gohmert's proposal to make Jan and Feb 2009 a tax holiday? IMO it's a brilliant way to allow the free market to choose the winners and losers instead of putting that decision in the hands of the government.

(more about Gohmert's proposal: [http://www.tampabays10.com/news/local/story.aspx?storyid=953...](http://www.tampabays10.com/news/local/story.aspx?storyid=95307&catid=8))

</comment><comment><USER5> Flag this trash.

<comment><USER6> What does the parent comment contribute to a civil discussion?

<comment><USER5> It contributes that this is trash and I have flagged it because it doesn't belong on HN. It has nothing to do with hackers, we've really had enough bailout-spam lately, and this is one of the least well thought through (although very reddit- and digg-friendly because oh-my-god-look-it's-a-nice- picture), and I hope never to have to rest my weary eyes on this stupid headline again.</comment></comment></comment>


Vast methane 'plumes' seen in Arctic ocean as sea ice retreats - <AUTHOR> http://www.independent.co.uk/news/science/vast-methane-plumes-seen-in-arctic-ocean-as-sea-ice-retreats-6276278.html

<comment><USER2> Dateline is December 2011. Why are you posting it now?</comment>


Video Shows Every Flight on Earth in 72 Seconds - <AUTHOR> http://blog.wired.com/cars/2008/12/earlier-this-ye.html

<comment><USER2> I want to make a screensaver out of this. I just Googled for youtube screensaver. I'll do that later =)</comment>


Ask HN: How do I find remote contractors for my startup? - <AUTHOR> Any recommended jobs boards etc? <comment><USER2> There is a monthly "seeking freelancer" topic here on HN. No experience with it.

</comment><comment><USER2> There is a monthly "seeking freelancer" topic here on HN.

</comment><comment><USER3> Upwork is pretty decent for dev freelancers.</comment>