Amazon Should Acquire the US Postal Service - <AUTHOR> https://observer.com/2019/06/amazon-us-postal-service-acquisition/ <comment><USER2> 1\. The Post Office is a government sponsored entity mandated by the Constitution —- Amazon cannot "acquire" it.

2\. The lie about the USPS losing money ignores that Congress requires the USPS to pre-pay for 70 years of worker benefits. The truth is that left to manage their own business the USPS would be making huge profits and pouring them both into innovation and services as well as the US Treasury.

3\. The same interests which coerced Congress into making #2 happen will recruit every logistics and retail competitor of Amazon to storm Congress with lobbying and money to make sure Amazon can't make the kind of deal suggested in this article. Amazon is big but they would motivate an army of companies across several industries to oppose them.

It's far more likely that Amazon will start acquiring logistics companies and ramping up their last mile service more aggressively.

<comment><USER3> I was curious about how both of these could be true:

> 2\. The lie about the USPS losing money ignores that Congress requires the > USPS to pre-pay for 70 years of worker benefits. The truth is that left to > manage their own business the USPS would be making huge profits

So I did some quick reading[1] and in 2006, Congress mandated that the USPS pre-pay for 70 years of benefits - but only gave them 10 years to do it (2007-2017.) The payments were $5.6 billion per year. Okay, so that satisfies part of the comment: if it wasn't for this law, the USPS would have a much better cash flow picture.

Why $56 billion? For long term investments to cover the pension, the USPS is only being allowed to invest in bonds, not stocks, real estate, etc. [3] This meant their 2007-2017 payment structure was even higher (since bonds have relatively low yields.) They currently have over $335 billion set aside for future pensions, though, so between this position and the forced conservative investment policy...I gotta say, suddenly the USPS is looking like one heck of a good place to get a line-level job if you're worried about a recession.

So would they be making huge profits? Yes, but...they wouldn't be covering their pension liabilities. What they'd really need to do is walk back some of their pension guarantees (bad idea for employees), segue into employee-funded retirement plans like 401Ks, or ... take the same risks as other big companies did, and simply not pay their retirees their pensions (ouch.)

1: [https://www.govexec.com/management/2017/09/usps-defaults- bil...](https://www.govexec.com/management/2017/09/usps-defaults-billions- mandatory-payments-despite-scheduled-relief/141404/)

2: [https://www.uspsoig.gov/blog/be-careful-what-you- assume](https://www.uspsoig.gov/blog/be-careful-what-you-assume)

3: [https://www.rstreet.org/2019/05/30/usps-pensions-vs-the- worl...](https://www.rstreet.org/2019/05/30/usps-pensions-vs-the-world-more- rules-worse-funding/)

<comment><USER4> >They currently have over $335 billion set aside for future pensions, though, so between this position and the forced conservative investment policy...I gotta say, suddenly the USPS is looking like one heck of a good place to get a line-level job if you're worried about a recession.

Correct. Those who bring this up as proof that "Republicans hate the Post Office" or somesuch don't understand (willfully or not) that the 10 years of pain were always intended to be that, 10 years of pain. It's what any business with pension obligations in a secularly declining market _ought_ to be doing; USPS employees are fortunate in that its government masters forced the USPS to do so.

</comment></comment></comment><comment><USER5> So the company that was bullied away from building an office building in NYC is going to convince the public it should acquire a beloved 250-year-old American institution?

<comment><USER6> Is the post office really beloved? Remember when Kramer wanted to stop getting mail...

</comment></comment><comment><USER7> These types of organizations are nearly impossible to reform quickly. There are so many structures and interest groups.

This is where classic disruption comes in unfortunately. Or alternatively great government leadership that reforms it over a significant period of time.

It would be a a fools errand to try to get Amazon's free market ideas on delivery could easily take root in a large and old government institution. Amazon is actually brutal to it's delivery workforce if you read the articles.

</comment><comment><USER8> USPS employees are unionized. Given their history of treating their employees like disposable units, I'm not sure Amazon would want to deal with that headache.

<comment><USER9> I imagine Amazon would do something like Uber. Pay gig drivers with their own vehicles to deliver.

<comment><USER10> They already do that, it's called Amazon Logistics and it's a horrible service compared to other options here in the UK (Royal Mail, UPS, Hermes, etc.).

</comment></comment></comment><comment><USER11> Just as with Greenland, you can't buy something that isn't for sale

<comment><USER12> Nearly everything is for sale, it is just the matter of the price. If Greenland can't be bought for 250 billion, how about 10 trillion? Or exchanging it for Alaska? Or Hawaii? Granted, these options are not that lucrative, but they establish the price points from which one could negotiate to the mutual benefit.

<comment><USER13> At some point the price is infeasible, and the difference from impossible becomes a futile exercise in hypotheticals.

</comment></comment></comment><comment><USER14> What I was expecting in this article was for Amazon to go big with their own logistics such that Fedex goes bankrupt. Amazon then would pick up Fedex for pennies and round out their logistics ability and totally be in charge of home delivery as they would have an additional advantage over their competitors.

<comment><USER15> FedEx Ground wound be a great candidate since their last mike delivery is already outsourced to 3rd party companies.

Couldn't Amazon just start poaching FedEx's 3rd party companies in large markets?

</comment></comment><comment><USER16> This would essentially be begging for antitrust regulation if for no other reason than the optics.

Never going to happen.

</comment><comment><USER17> Oh hell no. I don't use ground mail anymore unless I have to because my mailbox gets stuffed with advertisements. Amazon takes over and that will be unavoidable.

If the USPS allowed us to accept 1st-class mail only, I might be OK with it. They bullied the mail-filtering services out of existence, so I don't even have any other options.

</comment><comment><USER18> > Amazon is a company of big thinkers.

And yet, they can't seem to avoid being a fence for fake products.

</comment><comment><USER19> What a horrible idea, privatizing USPS, especially if it's sold to Amazon. The stupidity is incredible. We're going to sell this to Amazon and leave it up to them to decide who gets and who doesn't get mail now? We're going to leave it up to them to deliver all our packages when they've proven they are incapable of delivering their own? This would essentially put us, at least some of us, in the pre pony express days. The incredible stupidity of privatizing such essential services is simply unbelievable.

</comment><comment> aero- If amazon was smart they would buy uber or lyft and leverage the last mile free contractor network already in place.

</comment><comment><USER20> Why do people write these sensational low effort pieces?

</comment><comment><USER21> I guess Amazon can close the deal right after Trump finishes buying Greenland.</comment>


Introduction to Parallel Computing - <AUTHOR> https://medium.com/tebs-lab/the-age-of-parallel-computing-b3f4319c97b0 <comment><AUTHOR> Snippet that caught my attention as someone who's mostly been programming in high level languages.

"During the era of Moore's Law a common mantra in the software world has been, "the programmers time is more valuable than the computer's time." This mentality has brought plenty of wonderful things with it including dynamic and expressive languages such as Python and JavaScript. These languages create programs that — compared to their equivalents written in C — are slow and use lots of memory. These trade offs were easy to make when computers would be twice as fast, have more RAM, and larger CPU caches in a year and a half. These advances have also brought down the cost of creating software and made it much easier for beginners to learn how to program. But Moore's Law is dead. CPU speeds have been stagnating for several years now, and experts in the field of computer hardware do not expect them to recover [...]"</comment>


Linux dominates supercomputers as never before - <AUTHOR> http://www.zdnet.com/linux-dominates-supercomputers-as-never-before-7000030890/ <comment><USER2> Another way to put it is that specialized supercomputers no longer exist, and the top500 is now populated with super-branded racks of PCs running Linux with souped up network cards.

For the young ones in the audience, the supercomputer term has historically been used to describe machines with largely custom hardware from the CPUs up - or at least from the CPUs onwards. Cray vector machines are the canonical example. These were shared-memory / single-system-image machines, software really saw it as one computer instead of a networked cluster.

<comment><USER3> I don't think this description is entirely fair. What is expensive with these computers is the fast interconnection buses between processors and modules, which is needed for many scientific problems that can't easily be divided into independent subproblems. Just having a large cluseter of computers connected with normal Ethernet would not cut it. OK, you say souped out network cards, and if you had said souped up switches as well, I could have given you some points, but this is the major cost of modern supercomputers. You can get a non souped-up cluster with the same number of processors for a one digit percentage of the price of the supercomputer.

<comment><USER4> Some hadoop clusters are looking at/using infiniband - cluster network design depends on what sort of problems your dealing with.

<comment><USER5> Pretty sure everything in top500 is using infiniband by now.

I was briefly involved with the supercomputing world about four years ago. "Should we use Infiniband?" was no longer considered a non-rhetorical question even then.

<comment><USER3> Without Infiniband or similar proprietary buses, it is usually not considered a supercomputer at all, but merely a cluster.

<comment><USER6> I think the lines between "Super Computer" and "High Performance Cluster" have become blurred.

</comment></comment></comment></comment></comment></comment><comment><USER6> I really amazes me, that Linux is so darn flexible that it runs on some of the world's largest machines, down to the smallest embedded devices.

After years of being a Windows fanboy -- I look back now and am very glad I made the switch. With Linux -- it's never a case of "you can't do that".

<comment><USER7> It also really amazes me how vendors make crappy drivers for linux compared to windows

<comment><USER6> This is not really true anymore.

About 99% of all devices "just work" out of the box, the other 1% either are very obscure/specialty hardware, or are new hardware. Linux doesn't need a vendor to support Linux like it used to... most generic drivers are built in and work OK (just like the generic drivers built into Windows now-a-days).

<comment><USER8> > About 99% of all devices "just work" out of the box, the other 1% either are > very obscure/specialty hardware, or are new hardware

Well if you count most GPUs under speciality hardware then I guess you're right, but most people don't. And most linux GPU drivers still pale in comparison to their Windows versions.

<comment><USER9> Actually I would think GPUs are one of the biggest counterexamples where driver support has been noticeably improving recently (mostly thanks to Valve and Steam). Even the open source drivers work well enough to let you get work done (although the performance might not be where you want it to be).

Compare that to driver support for things like the fingerprint reader in a Lenovo Thinkpad. I wouldn't want to bet on getting that working at all, unless Lenovo had preinstalled Linux for you. And unlike GPUs, this is likely to be all or nothing, so if you don't get the drivers you can't use that hardware feature at all.

<comment><USER10> Actually, there are both closed and open source drivers for Thinkpad fingerprint readers. The open source ones are even well-maintained:

[https://launchpad.net/~fingerprint/+archive/fingerprint- gui](https://launchpad.net/~fingerprint/+archive/fingerprint-gui)

<comment><USER9> Aha! Good to be proven wrong there.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> It's worth pointing out that this is what most people think of as the traditional "Linux Operating System" but sans the Linux kernel.

Also, there are a few components on these supercomputers that you won't find on a typical workstation or cluster machine.

First, the kernel itself is frequently very small, lightweight, and much closer to what you would find on an embedded system than on a traditional desktop computer. That's because once the program on a supercomputer is loaded, the kernel's job has been mostly to get out of the way. This isn't to say that you don't find the Linux kernel on these supercomputers, it just isn't as common as you would think from reading this piece.

Fear not, many pieces of these operating systems are still open source. Here's IBM's fusedOS prototype:[https://github.com/ibm- research/fusedos](https://github.com/ibm-research/fusedos).

Second, many of these computers primarily only run code in C, C++, Fortran, and Python. These tend to be the only major languages in play on the HPC machines, with acceleration frameworks such as OpenMP, OpenCL, and CUDA playing major roles.

Finally, everything is glued together with MPI, a high-level (at least it was in the 90s) abstraction for scientific programming that maps down to very high-performance networks designed to help scientific codes "scale", that is, run effectively when millions of cores are simultaneously engaged.

These are beautiful machines producing important science, and the GNU/Linux operating system plays an incredibly important role in both their implementation and culture.

<comment><USER12> This is not exactly true, most of the ones I know are running straight up Linux. Titan, for example, runs basically SLES on the login nodes and Compute Node Linux on the compute nodes. CNL is a pared down version of Linux, but it definitely is the "real" Linux kernel with the functionality you'd expect to be there.

Most are just slightly spruced up commodity server hardware running Linux. I'm not sure if this is what you're suggesting, but they don't run C/Fortran/whatever on bare metal. They're run by the OS on the compute node just like a normal OS process, except that tasks are dispatched to compute nodes by a central cluster manager. Processes running in a gang communicate via MPI to share data, though coprocessors are also pretty popular as well so you see a lot of communication between the host processor and a coprocessor too. Titan and Tianhe both actually have most of their compute power in the coprocessors (Xeon Phi and Nvidia Tesla, respectively), but they're still arranged in a master-slave arrangement just like if you bought a Phi or Tesla and stuck it in a spare PCI-E slot. They use plain old PCI-E, too. The Cray XT/XE series (a popular model of which Titan is an example) is basically just really nice blades with integrated cooling and a network backbone in a custom cabinet and possibly coprocessors attached to each blade. You could just as easily run Windows XP and play Minesweeper on each blade if you really wanted to, except maybe for some driver issues. The most foreign thing is probably the network backbones, where fabric architectures like Infiniband are popular.

They're also not limited to specific programming languages. In truth, you can run whatever you want if someone has paid the bill for your resource allocation. I watch people run MATLAB on large clusters all the time, which hurts me because it's so damned inefficient. That said, Fortran and C++ comprise the overwhelming majority of large and computationally taxing codes. Just because all that power is there doesn't mean that all of the users take proper advantage of it. One of the larger calculations run on Titan that I know of (Denovo, a nuclear reactor simulation code) didn't even use the GPUs, only the CPUs. Making codes that can take advantage of GPU processing ergo Titan and its predecessor Jaguar has been a major project at the DOE, with libraries like Trilinos being developed to make it easier on scientists, many of whom are only computer programmers as a secondary concern.

The setup you're describing used to be how it was until up to maybe 10 years ago and there are still systems in the top 500 that work like that. Probably some new ones being built, too. But what I've described is what seems to be in fashion these days mostly and the machines I use are all like that. I've heard mumblings about FPGA coprocessors being the Next Big Thing, but we will see.

<comment><USER11> Yup, thanks for the comment. I think FPGA has interesting potential for sequencing (and we need more sequencing compute), I'm not sure what's ahead for the simulation machines.

<comment><USER12> FPGA has potential for simulation too from what I know, but I honestly don't know enough about them to comment intelligently about them. I expect most people will use them via an intermediate abstraction layer, as from what I know they can be tough to program for.

</comment></comment></comment></comment><comment><USER13> What does Linux not dominate?

I can think of only a few categories: desktops, ATM machines, real time, SCADA.

What are the remaining big sectors Linux doesn't yet dominate?

<comment><USER14> How has no one mentioned _mobile_? Smartphones/tablets? You know, the largest segment of general computation devices?

<comment><USER15> > How has no one mentioned mobile?

Because Linux does dominate mobile? Android is Linux and iOS is a *nux. (iOS is a BSD derivative.)

<comment><USER16> BSD isn't Linux. Android uses the Linux kernel, but not iOS. I'm not sure which dominates, though

<comment><USER17> In numbers, I'm pretty sure Android dominated (can't remember the exact numbers but Google should reveal them for you).

In revenue (app-sales etc) iOS dominates.

<comment><USER18> _> In revenue (app-sales etc) iOS dominates._

Who made such research? I'm not sure if it's even possible to know exactly, unless all vendors who run their own stores publish sales statistics.

<comment><USER19> >unless all vendors who run their own stores publish sales statistics.

They do, thats one of those things that companies that are traded publicly are required to do.

<comment><USER20> That's untrue.

Publicly traded companies are required to disclose revenue, but not required to break it down by source.

Neither Apple or Google break out the revenue from the *Stores (unless they have started doing it very recently). There are third party analytics firms that provide reasonable estimates though[1].

[1] eg [http://techcrunch.com/2014/06/23/google-play-quarterly- app-r...](http://techcrunch.com/2014/06/23/google-play-quarterly-app-revenue- more-than-doubled-over-past-year-thanks-to-games-freemium-apps/)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> I think that I read a long while back that there was a cluster of PlayStation 3's, all running Linux that was pretty fast too.

Edit: Here is one of the articles: [http://phys.org/news/2010-12-air- playstation-3s-supercompute...](http://phys.org/news/2010-12-air- playstation-3s-supercomputer.html)

</comment><comment><USER22> In the article it was mentioned that ECMWF's supercomputer was the fastest one of those running not on Linux. It's worth mentioning that ECMWF is in the process of migrating to an XC30 Cray system which runs on Linux.

</comment><comment><USER23> Um... That graph goes up to 600. Kind of an epic fail when it is an article about the fastest computers in the world.

<comment><USER24> Yes, and also a fairly basic research fail, referring to the ECMWF's _old_ supercomputer at position 60 as the UK's weather predicting system. They have couple of new systems at positions 19 and 20. ECMWF is for Europe, not UK, even if it is based in Reading. The key is in the name.

</comment></comment><comment><USER25> What _are_ examples of HPC installations that *BSD is key? Free, Net, Dragon Fly, Open?

</comment><comment><USER26> What alternatives are there really?</comment>


Show HN: I think I re-imagined IRC on mobile devices - <AUTHOR>

I have hosted my own IRC server, for a small community of coders and friends, since 1999. I never really strayed from using mirc or irssi, when I'm on a desktop or have a keyboard. On my iphone, the options were pretty lacking, though. The best true IRC client for iphone is one called IRC999, in my opinion. These clients all bugged me though because when the phone would go idle or shut off the wifi, the client disconnects.
Sometime in early December, an idea hit me about an IRC client that would function sort of like Twitter's mobile client. It'd defer the task of maintaining the IRC connection off to a server and it'd expose an HTTP-based API for the mobile app to use.
Anyway, so that's what I've done. I wrote a web server / IRC client that logs chat data to a database. Specifically formatted data is exposed via HTTP so that it can be easily consumed by a mobile client. I used node.js and couchdb for these two components. I also have the basics of a iphone app. The app can be configured to point to any URL / port to use as an API.
These components are all open source because I think that's important. Since the server component is just an IRC client, it could be connected to BNCs like ZNC, and should continue to function just the same. Might need some BNC-specific commands, though.
I just wanted to show this and see if others thought it was a neat idea. The project is still hacky but I'm actively building it.
Screenshots: http://imgur.com/a/yMWVs Client source: https://github.com/ryancole/pound-client Server source: https://github.com/ryancole/pound-gateway <comment><AUTHOR> I guess after that wall of text I didn't mention that this is nice because the mobile client maintains no connection. No messages are missed while your phone is sleeping or dead, etc.

Screenshots: <http://imgur.com/a/yMWVs> Client source: <https://github.com/ryancole/pound-client> Server source: <https://github.com/ryancole/pound-gateway>

</comment><comment><USER2> I'm using the irccloud iPhone app for this exact usage right now. The difference is that irccloud itself is a single point of failure that i can't fix if it goes offline.

</comment><comment><USER3> You could combine this with a bitlbee instance as your irc server, and then you could have unified mobile access to all your different chat networks.

</comment><comment><USER4> screen + irssi? http is a less than ideal fit for messaging, especially when you're simply wrapping an existing protocol.

<comment><AUTHOR> I use irssi, as well. The point of my app was probably lost in my wall of text, though. On the iPhone, an SSH client into screen and then irssi is pretty nasty. Now, on an iPad I might be able to put up with a nice, expensive SSH client, like the one from panic. Even then, that's a lot that you have to do just to check IRC. Also, the required overhead of a constant network connection at the mercy of the phone's wifi. I'm not wrapping a protocol or extending IRC in any way. I'm funneling IRC data into a database so that I can use it in a more natural way from a native iOS app. That's what's ideal for IRC, on a phone, in my opinion. Your mileage may very, though, and to each their own. Everybody likes their IRC their own way and I'm not even sure I'm 100% sold on this way yet, but I'm going to try it out. :)

<comment><USER4> right. I'm on android so not too familiar with the iphone's clients. It's just the simplest works-everywhere (mobile, desktop, laptop, etc.) scenario for me, and I'm in the same place, same windows, buffers.

</comment></comment></comment><comment><USER5> Can you indicate how this would be different to ZNC with message replay and push notifications?

<comment><AUTHOR> Push notifications are not necessarily what I'm looking for, as far as I know. I don't want to have to subscribe and be available to receive notifications. The whole point is to ask for X amount of messages since the last message I saw, for example. Now, the server side irc client component could connect to ZNC and function, I think. Although I have not tested that.</comment></comment>


Ask HN: Debugging serverless systems? - <AUTHOR> We switched a number of core processes to AWS Lambda and my team is now spending WAY more time debugging.
Our strategy has been to add more logging and metrics to better find root causes of issues - but that's getting unruly.
How are you debugging? What dev tools are you using understand what's happening within your distributed system? If you're logging...
- Where does your state go?
- Are you tracking startup latency?
- Are you tracking limits in memory, concurrency, execution duration?
Super interested in what others are doing for this, as well as other problems like testing, deployment, discovery. <comment><USER2> A few pointers from our own experience:

\- centralized logs (we tried an ELK stack and have moved to Datadog since they added logging). Using a correlation ID helps tracking the flow as it crosses Lambda / services boundaries

\- using datadog also gives us metrics and dashboards for free, although there's not always the data you'd want

\- we started to experiment with X-Ray to track start-up time and how much time is spent where. I'd definitely advise you to try it if you're tracking down performance issues. It's a bit of a pain to get working though

\- testing : as described in Yubl's road to serverless (link in another comment), we have a switch to call the code locally or remotely through whichever service triggers the Lambda. This usually insures that the logic is sound before deploying and that remote bugs are mostly linked to integration or rights issues

\- deployment : we rolled our own with Ansible and CloudFormation / SAM but if you fit in the Serverless use cases you should probably try that first

\- discovery : we use SSM parameter store as a distributed key/value DB and a poor's man discovery service: if we want to reach a given lambda or service we look up it's name or arn in SSM PS.

I'm in the process of writing a post (or more likely a series) on our experience and will post to HN when ready

Edit: also, decoupling. If your Lambdas are calling each other directly, consider putting a queue or SNS topic in between. Makes it easier to test each unit independently, can manage timeout / retry issues on your behalf, and gives you a convenient observation point for inter-service traffic

<comment><USER3> > Edit: also, decoupling. If your Lambdas are calling each other directly, > consider putting a queue or SNS topic in between. Makes it easier to test > each unit independently, can manage timeout / retry issues on your behalf, > and gives you a convenient observation point for inter-service traffic

i recall someone giving a talk (offline at a functional programming meetup?) about something like this. it wasn't in the context of AWS services, or serverless, and probably wasn't even in the context of a distributed system --- but the crux of the suggestion was that they re-architected some system to jam queues between everything, which gave them great traceability and the ability to do things like capture messages then replay them later or what have you. once they had the queues in place they realised it would be trivial to add a bunch of other features leveraging the queues (such as "undo", clearly this would depend upon what side effects your system has -- this was a functional programming meetup so perhaps their system didnt have many/any). might be good for enabling recording of execution for export and playback in a debugging environment or for construction of automated regression tests.

</comment></comment><comment><USER4> I use SAM CLI so I can run my code locally in a realistic environment. So you can skip the build/zip/upload/deploy process.

[https://github.com/awslabs/aws-sam-cli](https://github.com/awslabs/aws-sam- cli)

<comment><AUTHOR> Thanks, haven't tried this yet.

</comment></comment><comment><USER3> Yubl's road to serverless has a section on testing:

[https://hackernoon.com/yubls-road-to-serverless- part-2-testi...](https://hackernoon.com/yubls-road-to-serverless- part-2-testing-and-ci-cd-72b2e583fe64)

</comment><comment><USER5> Hi feel free to check this product (like you debug lambda in production easily and fast): [https://techcrunch.com/2018/06/04/rookout-releases- serveless...](https://techcrunch.com/2018/06/04/rookout-releases-serveless- debugging-tool-for-aws-lambda/)

full disclosure I work for Rookout - feel free to ask questions

</comment><comment><USER6> We have a similar problem, and I'm really interested in the answer to this question... our solutions so far are Testing and monitoring (doesn't make it any easier)

</comment><comment><USER3> Out of curiosity, what was the driver for switching to serverless in the first place?</comment>


Show HN: αlphaPun.ch - <AUTHOR> http://alphapun.ch

<comment><USER2> Your "no drag and drop" fallback is so utterly useless that I have not the slightest idea what this site is about.

<comment><AUTHOR> As a Safari user, I actually totally agree, and it was a hard choice to leave it out of the first iteration. The reason was that this was made for the 10K Apart contest (10k.aneventapart.com) and I was really, really struggling to get the code in under 10k. Having the extra functionality pushed me over the edge. I will definitely be making it support more browsers over time, and adding more options. Or, you could always fork it on github and add it yourself. (<https://github.com/nwtn/alphapun.ch>) :)

<comment><USER3> That's wonderful. _What does your site do??_ :-/

<comment><USER4> Edit: I am/was wrong, see below. Sorry! :$

Really, people?

From the site: "αlphaPun.ch will trace the opaque part of your PNG or GIF image. It will then punch through the alpha channel (i.e. the transparent bit), so you can click on things behind it."

What are we having trouble understanding here?

EDIT: Here I am, using elinks: <http://i.imgur.com/UaX0M.png> I'll remind you that elinks's support for drag-and-drop is, err- limited. I nonetheless have no trouble understanding what alphapunch does.

<comment><USER5> Nonsense! - the site is a picture of 'Y U NO man', saying "WEB BROWSER - Y U NO DRAGNDROP?!"...

<comment><USER4> oops! My apologies; I tried the site with firefox then with elinks, it wasn't until I tried IE that I hit the sweet spot of too-few-features-but-not-so-few- the-feature-check-doesn't-work. Sorry to3m et al.; you are right that fallback is horrendous and unacceptable, no matter the limitations of the contest.

<comment><AUTHOR> The limitations of the contest were that it must support current versions of Chrome, Firefox, and IE10pp2, which it does in this launch version. Now that it's working in those browsers, further browser support and better fallbacks are my top priority.

Yes, the fallback is not adequate for a general release tool, so maybe I should have waited before posting it here. But, I thought people might still find it interesting, and I wanted some feedback before submitting it for the contest.

Apologies to those that are being frustrated by these limitations at launch.

<comment><USER4> I think the tool is cool, but you could have shown an error message and greyed out/disabled the input elements rather than disable the entire site and block the user from reading anything.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Because I'm at work and can't use my preferred browser (chrome), I am forced to know nothing about the site other than the creator's appreciation for internet memes and the sites apparent need for canvas support. You should really make sure every visitor becomes a fan of your idea even if they can't use it until they upgrade their browser (or get home from work). Now, I may not remember to check this out when I get home because nothing grabbed my attention.

FYI, I'm not trying to be a jerk. I found your no-canvas alternative to be very humerous. But you should really have told me something about your site instead of making me laugh.

<comment><AUTHOR> I don't think you're being a jerk, I think it's great feedback. :) I appreciate your candor about forgetting to revisit.

I'm hoping to add better fallbacks shortly.

</comment></comment><comment><USER7> I have come across a need for this many times, often there's a simple trick you can do to get by it (i.e. setting an image as a background of an input element, rather than overlaying the image on top, or using transparent backgrounds along with z-index fiddling) however, I would definitely consider using this tool for rapidly building a layout. I like your presentation as well, clear layout with a brief to-the-point message.

My only concern would be performance, right off the bat I see a few nested for-loops in the code and am wondering what sort of performance hit you'd be looking at if you use this for several images on a single page. I didn't thoroughly trace through the code or anything, I am just thinking out loud here.

<comment><AUTHOR> Performance is a valid concern, but so far in the tests I've run I haven't hit any real problems. If you encounter any slow downs or real performance issues, I'd love to hear about them (and hopefully eliminate them!)

Thanks!

</comment></comment><comment><USER8> Could be useful for complex cases, but "pointer-events: none" CSS usually does the trick just fine.

<comment><AUTHOR> That's really cool, I didn't know about that. Thanks!

The difference here is that with alphaPun.ch you're only clicking through the transparent parts of the image; the opaque parts still block clicks. If I understand that document correctly, pointer-events would only allow you to click through the _whole_ image. (Except with SVG?) Is that right?

<comment><USER8> Yes, that's right; pointer-events in HTML can only be applied to whole images.

</comment></comment></comment><comment><USER9> It seems as if you've allowed your UI to get in the way of your service, given that you've chosen features that are inavailable on so many web browsers.

Was your intention to provide a service or to push the limits of UI design? I can't tell.

<comment><AUTHOR> For the initial launch, my intention was to build something interesting using new HTML5, CSS3 and JavaScript features and techniques. Now that it is launched and working in the browsers targeted by the contest (current Firefox, Chrome and IE10pp2) my goal will be to expand it to work with browsers that don't support all these features.

</comment></comment><comment><AUTHOR> BTW, I have a write-up about it here: <http://davidnewton.ca/introducing- alphapunch>

</comment><comment><USER10> I had to do something similar once. I ended up using ImageMagick and ptrace get a nice "silhouette" of my image and use the generated data to draw a path using Raphael.

convert IMAGE.png -channel matte -separate +matte -flip ppm:- | potrace -k 0.95 -u 1 -s

<comment><AUTHOR> That's interesting, I'll definitely take a look at Raphael. Did you just need the silhouette, or did Raphael let you do the click through thing too?

<comment><USER10> I was able to do the click through using the invisible path. The project was a kind of weird puzzle, so the click through was a must.

I upped my prototype here: <http://dl.dropbox.com/u/491131/puzzle/puzzle.html> You can only drag the camel.

Eventually I gave up because I wasn't able to drag the piece correctly if it was rotated.

<comment><AUTHOR> That's awesome, thanks for showing me that. It would definitely be cool to implement something similar for browsers with SVG support, then fallback to the generated spans for those without.

<comment><USER10> Raphael is so awesome that it works even on IE, using VML, with the same sane API.

</comment></comment></comment></comment></comment><comment><USER11> Firefox can't find the server at www.αlphapun.ch.

Also, no Swiss puns, I'm disappointed.

<comment><AUTHOR> I don't have it registered with the α unicode character, only the normal roman a -- <http://alphapun.ch> or <http://www.alphapun.ch>.

</comment></comment><comment><USER12> That's a neat idea, but I'm not sure I've ever needed it. :)

<comment><AUTHOR> Thanks! Now if you _do_ need it, you'll have options. :)

</comment></comment><comment><USER13> And here I thought the site was going to be about generating "alpha" puns via artificial intelligence.

</comment><comment><USER14> Redditors will like what happens when they view the page without javascript enabled. It made me laugh.</comment>


James Gosling supports closures in Java - <AUTHOR> http://blogs.sun.com/jag/entry/closures <comment><USER2> Great. According to Neal Gafter's blog <http://gafter.blogspot.com/2006/08/closures-for-java.html> there will be a java.lang.Null class to handle the type of null. Talk about putting the cart before the horse.

...But I guess that's what happens when you have to worry about backward- compatibility.

</comment><comment><USER3> Closures would be nice in Java.

</comment><comment><USER4> It's a big missing feature in Java and Python.

<comment><USER5> You can easily do closures in Python.</comment></comment>


Could Microsoft replace Steve Ballmer with Scott Forstall? - <AUTHOR> http://brooksreview.net/2012/10/forstall-ceo/

<comment><USER2> If Forstall can get the support of the second largest Microsoft shareholder, yes.

There are three methods by which he might do so.

1\. Purchase a few billion dollars worth of Microsoft stock.

2\. Convince someone to purchase a few billion dollars worth of Microsoft stock on his behalf.

3\. Convince Steve Ballmer to support the move.</comment>


Satchel: Make more informed decisions about SaaS - <AUTHOR> https://satchel.com/ <comment><USER2> This will be a success if they can maintain their business model and stay true to it of being impartial. All most all the other "reviews" sites have paid biases and skewed incentive schemes making the results flawed.

<comment><USER3> I agree; the greater challenge isn't whether they can maintain journalistic integrity, but whether they can earn and grow audience's trust.

Consider how much time and energy is spent reviewing SaaS solutions by team leaders in every organization. In parallel, consider that the marketing efforts of SaaS offerings consist primarily of outlining use cases. It seems operating as a neutral middle could build sizable value in time savings for both entities and open the door to many connections.

I speculate if the creator(s) have any plans of direct monetization whatsoever.</comment></comment>


Web ad giant Google to block ad-blockers in Chrome - <AUTHOR> https://www.theregister.co.uk/2019/01/22/google_chrome_browser_ad_content_block_change/ <comment><USER2> Duplicate of [https://news.ycombinator.com/item?id=18973477](https://news.ycombinator.com/item?id=18973477) .

</comment><comment><USER3> This is hyperbole.

They are refactoring an API to improve performance and that might impact some types of adblocker in its current form. The engineer behind the proposal is soliciting ideas how to resolve the issue.

<comment><USER4> Not hyperbole.

"Soliciting ideas" means they're also gauging what the response will be to such a change. _NOW_ (actually 1 year ago) is the best time to freak out.

Ublock Origin is perhaps the best blocker in existence for many people. I am OK if Google wants to change the way the Chrome works for the sake of security and performance, but if they break the functionality of Ublock Origin without the availability of an equivalent or better alternative, that's cause for some alarm.</comment></comment>


3 Computer Programs that have changed the world - <AUTHOR> http://www.easycppcodes.com/article/3-computer-programs-that-have-changed-the-world/ <comment><USER2> I don't want to make a competition or correct the author, but I consider Wikipedia, Facebook and Google computer programs as well* and they had even more direct impact on the society rather than databases to organize information (just as example).

* Programs which are multiuser, distributed and offering a UI offered in the browser.

<comment><USER3> I'd call those things services, since they are a huge collection of programs, data and to some degree human operation and hardware.

</comment></comment><comment><USER4> Haha, when I read the headline, I immediately thought about gcc and apache httpd.

Got at least one right and one close enough ;)

<comment><USER5> Came here thinking about visicalc. Important but quite a smaller impact...

</comment></comment><comment><USER6> The Linux kernel but not UNIX? gcc but not pcc or dmr's cc? That's a pretty bad list I'd say.

</comment><comment><USER7> And 'hello world', the program that made the world much more amicable.

<comment><USER8> That must be named as world's smallest and most famous code.

</comment></comment><comment><USER9> Dang, I was thinking about Microsoft Encarta !

</comment><comment><USER8> I came up with DOS. Sad me</comment>


Ask HN: Good books on societal technological challenges for English majors - <AUTHOR> I've been asked by a friend (a philsophy professor at a small liberal arts school) for recommendations for books on "technology and society" for an undergraduate honors colloquium he is teaching next semester. I'm sort of at a loss, since my favorite technology book is "On Lisp"... which doesn't seem to fit the bill. Any recommendations? <comment><USER2> I think the standard recommendation is _The Structure of Scientific Revolutions_ by Thomas Kuhn

For something a little more current, the movie _The Social Network_ was also pretty good at discussing technological changes. But the focus has to be on how the movie portray social interactions prior to Facebook (LiveJournal, IRL) and the change it has afterwards.

</comment><comment><USER3> [https://en.wikipedia.org/wiki/We_Can_Build_You](https://en.wikipedia.org/wiki/We_Can_Build_You)</comment>


MediaGoblin – Self Hosted, Decentralized Alt to YouTube, Flickr, SoundCloud - <AUTHOR> https://mediagoblin.org <comment><USER2> Curious to see this here, given that I've been trying to set up some of these "decentralized services" at my home servers and figuring out if it is really possible to replace the common mainstream services.

So far, I installed my own Matrix server (synapse), my own XMPP (ejabberd), yesterday I got semi-happy with my mastodon setup, and now I was just finishing some tests with ownCloud to see if I could replace Dropbox.

MediaGoblin is on my list of services to setup. I ran a basic deployment and checked some other instances of it before, but I didn't put it higher on my priority list because to me it looks like it focus too much on being a "community-driven website" instead of providing a solid service as a media- hosting/publishing/catalog system.

To me it looks like they are shooting for the wrong level of "decentralization granularity". Each instance of these services are aiming for a "community", and think that the people use the mainstream tools because they don't want to/won't manage the server.

The point they seem to miss is that this only creates another type of top-down organization. It would be MUCH easier for them to focus on a "single-user" system, and start from the point that the communication will work when the applications talk with each other.

To me this is why Diaspora failed, and Wordpress is still such a big part of the internet.

Another thing I noticed: the projects that really focused on separating client from server produced much better results in terms of UI/UX. With Matrix, I just had to setup the server, and then I could have the riot app just point to my instance. If by any chance a better client comes around, my instance would be untouched.

<comment> mike-cardwell I just had a brief look at Mastodon, and it appears to have the same humongous flaw that Diaspora has. No events management.

What the hell? That is _the_ main feature required in a social network, after the ability to see each others comments. People want to organise their lives using the graph that their social network provides.

Is anyone aware of a distributed or federated open source social network which provides event management functionality? I would love to hear about it if you have... Gallery functionality would come in handy too.

<comment><USER3> I have events on my website [https://jeena.net/events/](https://jeena.net/events/) plain HTML marked up with h-event [http://microformats.org/wiki/h-event](http://microformats.org/wiki/h-event) and I can receive RSVPs with help of [https://www.w3.org/TR/webmention/](https://www.w3.org/TR/webmention/)

It was fairly easy to implement, the only problem is that not many of the people I know have software which lets them RSVP too, therefor I also connected it to Facebook.

<comment><USER4> Nice! what are you using for the Photos page on your site?

<comment><USER3> Basically the same, h-entry and u-photo with microformats and p-author to show that I made the photo.

</comment></comment></comment></comment></comment><comment><USER5> I think to be able to say you're a "decentralized alternative to YouTube, Flickr, SoundCloud", you really need some way to search across all the servers in the network or at least interact with them and as far as I can tell, that doesn't exist. In the tour there's not even any mention of decentralization that I can see.

Is there something I'm missing?

Also in terms of self hosting, something I'd really like is the ability to point it at a pile of files and have it ingest them in place. Any idea whether that's possible?

<comment><USER6> Wrt search, I guess it's seen as an orthogonal problem and meant to be dealt with by indexing / search services..

<comment><USER5> In that case though, why claim to be "decentralized"? That to me means one large, interconnected network, which one can access through any of its members. Mastodon is decentralized; you can make an account on any server and search and follow users on any other server without leaving. Bittorrent is decentralized, you can grab info from the DHT then connect to peers and download stuff.

If it depends on an index/searching service, how is the network itself any more decentralized than say an FTP server? I wouldn't call FTP decentralized.

</comment></comment></comment><comment><USER7> I'm still waiting for an open source self-hosted alternative to Google Drive. Even just the basic functionality of a file browser, image thumbnails, photo gallery, and video player would be fantastic. Many such projects exist, and maybe I'm just lazy, but I really don't want to have to set up a PHP server in order to run such a thing. I would love something like Syncthing where you download a compiled Go binary, start up the service, and configure it through your browser.

I started implementing something like this myself but didn't make it very far. The fear of eventually running out of space or having privacy/security issues on Drive hasn't produced enough pain for me to really do anything yet.

<comment><USER8> I highly recommend Seafile for this purpose. It was far more performant and reliable than ownCloud when I tried it, and more self-contained.

<comment><USER9> I installed Seafile and ran it for a while, but what I didn't like is that in order to get to the file on the server, I had to use fuse and, well, I just didn't want to have to do that. Picky, I get it, but we all have preferences.

I've run ownCloud for some time now and I don't see the reliability issues that some people claim. I am running it on TS140 and not something small like a RPi, so maybe that makes the difference.

<comment><USER10> I've run ownCloud for about half a year to sync my dev files to a hosted server. For a while, everything was great. What happened for me at least was if I was saving a project while ownCloud was syncing, there was a chance of it messing up and then requiring a full resync of my dev folder (a not insignificant amount of data).

The first time it happened I shrugged it off as a fluke. The second time I became gunshy and would disable it any time I was working, then enable it after. Not a big inconvenience but a hassle and something I had to remember. After a while I stopped using it. YMMV, of course.

</comment></comment></comment></comment><comment><USER11> MediaGoblin is available on Sandstorm (eg one click install): [https://apps.sandstorm.io/app/70awyqss6jq2gkz7dwzsnvumzr0725...](https://apps.sandstorm.io/app/70awyqss6jq2gkz7dwzsnvumzr07256pzdt3hda9acfuxwh6uh7h)

<comment><USER12> It is very outdated. [https://wiki.mediagoblin.org/EasyDeployment#Sandstorm](https://wiki.mediagoblin.org/EasyDeployment#Sandstorm)

<comment><USER13> It would certainly be better if the version on Sandstorm was more up to date, but the current version works. If you're just interested in trying it out with minimal hassle.

<comment><USER12> What's the point of that? There is a live demo in the media goblin site if I want to try.

<comment><USER13> The "try a demo right now" link on the MediaGoblin homepage is just a link to Sandstorm.

</comment></comment></comment></comment></comment><comment><USER14> I always seem to remember this project sort of limping along, only to forget it a while after as even though I'm an artist and I could make some use of it, the setup is far too much of a trouble when a Wordpress blog would do the trick for sharing my works just fine. Maybe it needs something akin to what happened with GNU/Social and Mastodon to be thrown into the limelight.

<comment><USER15> I don't have much experience with it but IMO mediagoblin might suit small organizations slightly better than individuals. It's probably best for folks who want their cycling club, makerspace, HOA, scouts troop, university, etc to be able to share media without being subject to content restrictions, silly communities, etc.

<comment><USER16> My question however is whether said people would be technically capable of getting it running. I mean, it's simple for those with experience in running a server or unmanaged VPS, who know how to run Python scripts and setup Docker or what not. But the average person in many of these small organisations (even the tech team) is probably confused by a simple WordPress install or even the process of uploading files to a web hosting account.

I feel these solutions seem like they should be aimed at the people and groups you mention, but end up seeming like they're designed for tech geeks and programmers. They need to be made to work on cheaper hosting accounts and installable by someone whose experience with 'tech' is clicking buttons in a user interface.

<comment><USER13> That sounds like a business opportunity to sell inexpensive hosted instances of Mediagoblin. Or you can volunteer to contribute code and documentation that makes it easier to self-host.

<comment><USER16> That's a good point. Something like WordPress.com for Mediagoblin would be fantastic here, even if it meant paying monthly. Vanilla, GitLab and Discourse have done really well by offering this sort of deal.

</comment></comment></comment></comment></comment><comment><USER17> But where's the alternative Youtube _website_?

Youtube differentiates itself by being a go-to platform, a website that people actually visit to watch videos. Otherwise, call it an alternative to Vimeo, which is de-facto just a video hosting platform.

<comment><USER16> Well, there's always VidMe. That's what they're trying to be, a new YouTube.

But when it comes to decentralised services... I suspect the answer is 'whatever instance connects to most of the others and draws the most traffic'. Which raises its own issues, since [BigVideoSiteInstanceNameHere] basically just ends up with the same problems as YouTube. Being able to control what a large percentage of users watch on a de facto level, even if the actual underlying system is decentralised.

</comment></comment><comment><USER18> Is this project still in active development? The release version has not reached 1.0 but there were only a few commits in the past months:

[http://git.savannah.gnu.org/cgit/mediagoblin.git/log/](http://git.savannah.gnu.org/cgit/mediagoblin.git/log/)

<comment><USER19> Hi, MediaGoblin co-founder and co-maintainer here.

It's still under active development, though I've temporarily handed over the reigns to others while I've been busy getting the federation standard we're going to use nicely shaped up through the W3C spec process [https://www.w3.org/TR/activitypub/](https://www.w3.org/TR/activitypub/)

That's taken up more of my last year (okay, last two years) than I expected. I'll be back in the swing of things within the next few months. We have a federation branch right now, but the standardization process of ActivityPub meant that we're going to have to retool some things before its released in 1.0!

The good news is that ActivityPub is looking to be picked up by projects like NextCloud, Mastodon, Pump.io, and quite possibly GNU Social, Diaspora, postActiv. This means we should be able to have more federation working across the many federated social web projects out there.

If you're interested in ActivityPub and federation generally, I highly recommend checking out the tutorial, which is baked into the spec: [https://www.w3.org/TR/activitypub/#Overview](https://www.w3.org/TR/activitypub/#Overview)

In the meanwhile, Boris Bobrov (breton) has been kindly doing the main work along maintainership while I've been preoccupied. But, I'll be back soon... and it'll be good to be back!

<comment> mike-cardwell I can't figure out what advantages ActivityPub has over email. It seems to just be a way of sending messages to one or more recipients. Email already does this. Couldn't you just stash that blob of JSON in an email body? That way, no new servers would need to be set up; everyone already has an email address.

<comment><USER20> Do you want server-to-server communication to depend on yhe mercy of spam filters?

Or client-server communication ?

<comment> mike-cardwell Are you talking about the spam filters that are required for email, or the spam filters that are required for the exact same reasons with ActivityPub?

[https://www.w3.org/TR/activitypub/#security- spam](https://www.w3.org/TR/activitypub/#security-spam)

"Spam is a problem in any network, perhaps especially so in federated networks. While no specific mechanism for combating spam is provided in ActivityPub, it is recommended that servers filter incoming content both by local untrusted users and any remote users through some sort of spam filter."

</comment></comment></comment></comment></comment><comment><USER21> Mediagoblin is also available as an app on Freedombone ([https://freedombone.net](https://freedombone.net))

</comment><comment><USER22> I found a video on one of the example sites and opened it on mobile, iOS and the Google Search app. The video didn't play. That is why Youtube is so dominant. 12 years later and nobody else has figured out how to make videos that actually play.

<comment><USER23> I figured it out. You need to store several encodings of the same file. One in webm for most cases, and one in mp4 for all other cases. If a platform doesn't support webm or Mp4, it probably couldn't play the video anyway.

<comment><USER24> Then, you have to solve the problem with how to seek in a 2-hour long video.

</comment></comment></comment><comment><USER25> opened the first 3x live instances [1] and all videos required flash...

[1] [https://wiki.mediagoblin.org/Live_instances](https://wiki.mediagoblin.org/Live_instances)

</comment><comment><USER26> This may be off topic, but does anyone think that there is a correlation between pop culture (Silicon Valley's Pied Piper this season) and services like this springing up/getting more attention than normal?

<comment><USER27> I thought about this too, but it could just be something similar to blue car syndrome[1], where I'm just noticing it now because of silicon valley.

[1] [https://english.stackexchange.com/questions/153166/what- is-t...](https://english.stackexchange.com/questions/153166/what-is-the-term- for-when-you-become-more-aware-of-something)

</comment></comment><comment><USER28> I am confusing with decentralized. If there is no central server, how can my node find the first neighbor node? If there is a server maintain a nodes list, it isn't decentralized, right?

<comment><USER29> Just have to find one, right? Then it can clue yours in on the rest. So manually provision any neighbor, once?

</comment></comment><comment><USER30> For anyone interested, I have some notes on how I deploy MediaGoblin here: [https://wiki.realmofespionage.xyz/servers:nginx:gnu_mediagob...](https://wiki.realmofespionage.xyz/servers:nginx:gnu_mediagoblin)

</comment><comment><USER31> Interview from 2013 - they have been around - [http://redecentralize.org/interviews/2013/10/13/06-chris- med...](http://redecentralize.org/interviews/2013/10/13/06-chris- mediagoblin.html)

</comment><comment><USER32> I'm not understanding what is decentralized about it. It just looks like a bunch of Gallery 2 installations. Do the servers interact in some way? Is the content hosted in a decentralized fashion? I can't find anything on the website that clarifies it.

<comment><USER33> Decentralized != distributed.

</comment></comment><comment><USER34> This seems like the kind of thing that should be packaged to be one-click- installed on a NAS box.

<comment><USER35> You mean, like Sandstorm did?

[https://apps.sandstorm.io/app/70awyqss6jq2gkz7dwzsnvumzr0725...](https://apps.sandstorm.io/app/70awyqss6jq2gkz7dwzsnvumzr07256pzdt3hda9acfuxwh6uh7h)

<comment><USER34> Yes. Just like that, except in the format that QNAP, Synology, and other NAS machines use.

Isn't Sandstorm basically dead at this point? I seem to recall them announcing that the commercial side of the project had failed and they were going 100% Open Source.

<comment><USER36> We're still working on Sandstorm.

</comment></comment></comment></comment><comment><USER37> Why use this instead of just putting a directory on public FTP or something?

<comment><USER38> So you can stream videos for the most part. Also you can let others upload, make comments, etc.

</comment></comment><comment><USER39> If you are looking for a self-hosted video site, I can really recommend CumulusClips. It is quite easy to setup and does the job quite well.

</comment><comment><USER40> If you're looking for a more end-to-end solution, suitable for lecture/event recording, processing and distribution with a more permissive license, you might want to checkout [http://www.opencast.org](http://www.opencast.org) as well.

</comment><comment><USER41> Reminds me of the dead gallery project and Piwigo. Any comparison with these?

</comment><comment><USER42> BitChute is another

</comment><comment><USER43> This looks like another way of sharing stuff that big companies don't want you to share. I seem to recall this story not ending well in the past. And AGPL? - such an unappealing license - it's the license for open source extremists.

<comment><USER44> Or just sharing private content you don't want the big companies to have.

<comment><USER45> AGPL is great for letting regular people host stuff without large companies taking over your project and giving it to their 100000000000000000 centralized user base.

<comment><USER46> No it isn't, companies are able to do that if they want. AGPL just makes sure those companies release their modifications to your project.

<comment><USER47> Yes indeed. The implication from the other poster was that companies can't _exploit_ the project and make derivatives without sharing their source code. That doesn't stop them, but it does make it possible for people to get the updates, self-host or create competing instances, which is a major check on the power that proprietary services have.</comment></comment></comment></comment></comment>


Programming AudioVideo on the Raspberry Pi GPU - <AUTHOR> http://jan.newmarch.name/RPi/ <comment><USER2> This looks like an absolutely amazing resource for embedded media development, not just on the RPi. Thanks for posting!</comment>


Seq – A Language for Bioinformatics - <AUTHOR> https://seq-lang.org/ <comment><USER2> As a former bioinformatician (if that's a word), I'm not sure there's much value in this. There's high dispersion in the performance requirements of bioinformatics tools. The processes that need to be fast (alignment, BLAST, whatever, tree creation, etc) are already super fucking optimized (though, unfortunately, still slow). The things that don't need to be fast can use whatever you want (I used Haskell and Racket for my own tools at the time). Python is.. not the greatest. The major value add is the multitude of scientific libraries. If you're gonna throw that all away, why not just use something better? Things like Julia, OCaml, Haskell, etc. I personally think Julia is pretty dope and is what I would use today for bioinformatics research. Or maybe if I was feeling a little subversive, K/Q or J. Q's time- series database KDB+ could probably be used for sequences. And maybe even for great effect. And the performance would be off the charts!

It seems like the purpose of this is Python without the performance penalty, which doesn't make much sense to me. I've found Haskell absolutely perfect for bioinformatics as most operations you are doing are functional data transformations. Moreover, it's pretty damn fast if you need it to be.

I've been out of the field a long time though (Roche-454 was still the main workhorse at the time). But let me tell you, bioinformatics is/was a fucking shit-show. The tools and ecosystem are/were like Linux in the mid 90s: fucking terrible. And another language is just gonna make it worse.

</comment><comment><USER3> Hi guys,

one of the authors (Ibrahim) here! Thanks a lot for the comments--- we definitely appreciate them!

A quick explanation why we built Seq:

\- We were not happy with the existing bioinformatics libraries for various reasons. And honestly, while Julia is amazing project (and we do talk to the Julia team from time to time as they are located two floors above our office at MIT), it never 'clicked' with us or many other people in the field.

\- While the main application domain is bioinformatics (that's where we came from), Seq is pretty much a strongly typed statically compiled Python. One of the main goals we had was to push the boundaries of how much stuff in Python can be deduced by compiler, as we loved the Python's syntax (Seq is to Python as Cystal is to Ruby--- or at least that is what we are aiming for).

\- We do not want people to learn a new language--- Seq should be pretty much a drop-in replacement for Python, at least for most scientific/bioinformatics software. There still remains a small gap, but we are actively working to close it.

\- At some level, Python libraries cannot cut it, especially when dealing with next-gen sequencing data. Also, owning the whole stack gives us the control to perform low-level pipeline optimizations. Chief example is out prefetch statement that is rather hard to implement in other languages.

Also, check out the paper ([https://dl.acm.org/doi/10.1145/3360551](https://dl.acm.org/doi/10.1145/3360551)) for more information. Let me know if you cannot access it for various reasons.

<comment><USER4> What does "first language tailored specifically to bioinformatics" mean?

I ask because I'm pretty sure there have been earlier languages for bioinformatics. Just looking around I see:

\- "Composable languages for bioinformatics: the NYoSh experiment", [https://peerj.com/articles/241/](https://peerj.com/articles/241/)

> In order to evaluate the potential of language workbenches in > bioinformatics, we tested a prominent workbench by developing an alternative > to shell scripting. To illustrate what LWBs and Language Composition can > bring to bioinformatics, we report on our design and development of NYoSh > (Not Your ordinary Shell). NYoSh was implemented as a collection of > languages that can be composed to write programs as expressive and concise > as shell scripts.

\- "Large-scale data integration framework provides a comprehensive view on glioblastoma multiforme", [https://genomemedicine.biomedcentral.com/articles/10.1186/gm...](https://genomemedicine.biomedcentral.com/articles/10.1186/gm186)

> Workflows are constructed using a custom workflow language called > AndurilScript that resembles traditional programming languages and is > designed to enable rapid construction of complex workflows. ... These > characteristics of Anduril facilitate scientists without bioinformatics > training to interpret complex data sets, such as TCGA.

\- "SARVAVID: A Domain Specific Language for DevelopingScalable Computational Genomics Applications", [https://engineering.purdue.edu/dcsl/publications/papers/2016...](https://engineering.purdue.edu/dcsl/publications/papers/2016/final_sarvavid_ics2016_submitted.pdf)

> In this paper, we have presented Sarvavid and showed implementations of five > popular genomics applications, BLAST, MUMmer, E-MEM, SPAdes and SGA in it.

I see the last includes K-merization, like Seq does.

<comment><USER5> Love your bio, and those are some cool links.

To your first question, seeing that in context of their paper abstract, I think the emphasis should be on the last part of the sentence, "...which marries the ease and productivity of Python with C-like performance."

<comment><USER4> There's a comma before that clause, which suggests that it's not meant to be interpreted as "the first bioinformatics-specific programming language to marry C and Python" but rather as "the first bioinformatics-specific programming language (oh, and it marries C and Python)."

Which bio? My most recently updated one is [http://mmpdb.dalkescientific.com/about.html](http://mmpdb.dalkescientific.com/about.html) .

<comment><USER5> [http://www.dalkescientific.com/company.html](http://www.dalkescientific.com/company.html)

Boy, what a body of work. Would love to hear your take on Seq if you get a chance to dig in more. I come from more of a Python background and really like what I see:

      - Python syntax for the most part
      - Mypy style type annotations
      - |> for pipelining and ||> to parallelize
      - match constructs (ML-ish with guards)
      - s'ACGT' and k'ACGT' for sequences and k-mers

It's relatively early in the project but I think the choices they have made give them a chance to continue to build momentum.

<comment><USER4> Thanks for the pointer. And praise. I have several bios out there, for different purposes. I should update that one .... and the web site. Been meaning to do that for a long time. _sigh_

I don't have the interest to evaluate Seq. I only did bioinformatics for a couple of years, and that was almost 20 years ago. I am incapable of giving it a serious look. My cursory look is that it's only really meant for DNA, and highly optimized for the specific k-mer benchmark compared.

My personal opinion is that developing a new programming language is a hard and almost thankless task. Yet they are also so very fun to do.

Back in the 1980s and 1990s, a number of computational life sciences packages (eg, Sybyl Programming Language (SPL) from Tripos, X-PLOR, Scientific Vector Language (SVL) from CCG) developed their own domain specific languages. They were successful (IMO) more because of the tools available through them than the language themselves.

In the early 1990s I started work on VMD. We had a simple scripting language. As one did back then. I found that Tcl was similar, embeddable, more powerful, and cleaner than anything we did, so we switched to that.

As a result, we got a lot of things "for free", like easy access to third- party packages designed for Tcl, and the faster bytecode engine from Tcl 8.

I switched to using Python full-time in the late 1990s, and again saw just how much I got "for free" by using a language designed by people with software language design and implementation expertise, and with the vast set of support packages.

Seq also gets some things "for free" because it builds on LLVM.

But since it's completely independent of the CPython run-time and garbage collection model, it's impossible to build on any of the existing modules.

</comment></comment></comment></comment></comment></comment><comment><USER6> I'm especially interested in how sequence searching and matching work in libraries like this. Seq has a "match" statement for this task, which implements ACGT characters and _ for a single wildcard base and "..." for multiple wildcard bases, and a recursive matching system I haven't quite grokked yet.

Personally I'm more comfortable with a regular expression syntax, so would prefer "." and ".*". Actually, even better than "." is "N" from the IUPAC notation: [https://en.wikipedia.org/wiki/Nucleic_acid_notation](https://en.wikipedia.org/wiki/Nucleic_acid_notation)

The IUPAC notation is nice because it standardises "character classes" for working with nucleic acid sequences. For example, "B" is "[CGT]".

I wrote a module a while ago for searching nucleic acid sequences with regexps: [https://metacpan.org/pod/Bio::Regexp](https://metacpan.org/pod/Bio::Regexp)

When working with sequences there are a bunch of things to think about that aren't really obvious from other types of data (or at least weren't obvious to me!)

Exhaustive search: Often a regexp can match in many ways, and most regexp systems don't provide a way to get a complete list of them all. Fortunately there is the Regexp::Exhaustive perl module which is what I used. The way this module works is pretty awesome. It adds a special "FAIL" directive to the end of a pattern, so that the match can be recorded and artificially failed, triggering the regexp engine's backtracking mechanism to back up and find the next match (if any).

Reverse complements: Because DNA is double-stranded (well, usually... this is biology after all) there is a "complementary" pattern on the first strand that corresponds to the pattern you are interested in on the other strand. You almost always need to search for both. And what's more, DNA is directional so you actually need to search in the reverse direction for this complementary pattern. You can either reverse and complement your sequence (which seq has a special ~ operator for, neat!) and search again, or reverse and complement the search pattern itself, assemble a single combined regexp (Regexp::Assemble module), and do a single scan over the data, which is what Bio::Regexp does.

Circular DNA: Some DNA (plasmids) are actually circular in shape, meaning the start is connected to the end. So a comprehensive search needs to check for cases where the desired patterns span the arbitrary location selected as the "start" in your sequence.

<comment><USER4> "Often a regexp can match in many ways ..."

When I worked in bioinformatics, some 20 years ago, I implemented a SWISS-PROT to regex converter. I ended up having to ask SWISS-PROT was if certain patterns were meant to be greedy or lazy, since the documentation wasn't clear. I've since forgotten the answer, but I have a vague memory that they hadn't really considered that multiple interpretations were possible, so they probably expected greedy matches.

<comment><USER7> Parsing the flatfile of Swiss-Prot in detail is the best way to lose your sanity ;) I know because that is part of my day job.

It's gotten better but I highly recommend you either use the RDF or XML. The flatfile looks easy but is an endless source of bugs and urgent changes.

<comment><USER4> I did say it was 20 years ago. ;) Since then I've been working in cheminformatics. Which has its own forms of insanity.

<comment><USER7> Can I just say that these day's you can search Swiss-Prot with InchiKey's due to our integration with rhea ([https://www.uniprot.org/news/2018/12/05/release](https://www.uniprot.org/news/2018/12/05/release))

</comment></comment></comment></comment></comment><comment><USER8> Fascinating, but there exist already htslib [0] bindings for Python (and many other languages). htslib truly is the standard library with respect to high- throughput sequencing data file access, and with high level bindings, we can already write something like:

``` for seq in bamfile: print(seq.pos) ``` or whatever.

[0] [https://github.com/samtools/htslib](https://github.com/samtools/htslib)

<comment><USER9> To expand on this -- I believe pysam [0] is the official htslib interface for Python.

It's quite good. In addition to providing Python bindings, it also provides extra functionality from within Cython, if you need additional features/speed but don't want to drop all the way down to C.

[0] [https://pysam.readthedocs.io/en/latest/](https://pysam.readthedocs.io/en/latest/)

<comment><USER10> Is the pysam API more stable now? Years ago, I had to stop using it because the API has changed between versions too much.

</comment></comment></comment><comment><USER11> Why not just contribute to BioJulia[1][2] instead? It is a more mainstream language but the one that fits computational tasks better than Python.

[1] [https://biojulia.net/](https://biojulia.net/)

[2] [https://github.com/BioJulia](https://github.com/BioJulia)

<comment><USER12> As a full-time bioinformatician I'm totally excited about Julia for bioinformatics. Currently BioJulia needs some pretty serious work before it can be used for routine bioinformatics tasks, for instance there's no good support for the CRAM format. Nonetheless if some of this basic functionality were implemented I wouldn't be surprised to see much greater adoption

</comment></comment><comment><USER13> Like a few others have mentioned, I do wonder how big the marginal return in baking in these features is.

From a quick look, stuff like FASTA/BAM parsing, translation, etc can be implemented in C-land a la numpy, and called from Python, right?

A language like Swift would also support the addition of powerful user-defined operators, as in the case of Swift for TensorFlow[1].

Language adoption is hard to drive, and I wonder if having domain-specific library calls built-in is worth the added effort for people in the field.

[1] [https://www.tensorflow.org/swift](https://www.tensorflow.org/swift)

<comment><USER14> Nitpick: Swift for TensorFlow currently is a fork of Swift, not a library implemented in Swift. [https://github.com/tensorflow/swift](https://github.com/tensorflow/swift):

 _"Compiler and standard library development happens on the tensorflow branch of the apple /swift repository.

[…]

Swift for TensorFlow is not intended to remain a long-term fork of the official Swift language. Language additions are designed to fit with the direction of Swift and will go through the Swift Evolution process."_

<comment><USER13> That is correct, and I should have made that clearer. However, a lot of it's features are implemented in Swift (via custom operators, overloading etc) in addition to compiler intrinsics.

The point I had in mind was that a language like Swift may allow for both power and DSL-like expressiveness without requiring learning an entirely new language. In fact, standard arrays are implemented in Swift code ([https://github.com/apple/swift/blob/master/stdlib/public/cor...](https://github.com/apple/swift/blob/master/stdlib/public/core/Array.swift)) yet feel closer to say a Python list than a Java ArrayList from the user's perspective.

</comment></comment></comment><comment><USER15> Response from the BioJulia developers: [https://biojulia.net/post/seq- lang/](https://biojulia.net/post/seq-lang/). High-level points:

* they were able reproduce the performance comparison between Seq and BioJulia

* BioJulia spends most of its time on these benchmarks validating and transcoding data into a more compact, efficient representation of gene sequences

* Seq, on the other hand, operates on the raw ASCII input data and does no validation

* BioJulia devs implemented Julia types that representing gene sequences the same way as Seq does in less than 100 lines of Julia code [1]

* when using the same representation in as Seq, BioJulia was significantly faster than Seq

* BioJulia devs were able to further optimize transcoding of gene sequences to get a 10x performance improvement [2]

* with these improvements BioJulia reaches similar performance to Seq while still doing validation and using less memory

The full post is well worth reading. For me the main takeaway is that there's no real need for a domain-specific language at least not based on these results. Julia is already a great language for this kind of work and you get C-like speed and JIT compilation for free.

[1] [https://github.com/jakobnissen/SeqLangBenchmarks/blob/master...](https://github.com/jakobnissen/SeqLangBenchmarks/blob/master/SeqJL.jl)

[2] [https://github.com/BioJulia/BioSequences.jl/issues/86](https://github.com/BioJulia/BioSequences.jl/issues/86)

</comment><comment><USER16> My personal impression isn't that bioinformatics needs a full language, but more tools in popular environments to lower the entry barrier for good software engineering practices.

Every bioinformatics codebase I've looked at has been a downright mess. Basically an ad hoc collection of scripts that transform data this way, maybe rendering some graphs or such, relying on 100 unstated assumptions. Nothing is maintainable, and often rely on messy approaches like loading your entire data set into memory (works fine for your 1-10GB data set, then not so much on a larger one) or what I would gently describe as mainframe compute in place of real software engineering.

<comment><USER17> I'm reminded of this rant from Richard O'Keefe (of Prolog fame). It was a while ago, but little has changed.

"I don't know what art these [bioinformatics] programs are state-of; possibly macrame. They certainly aren't even 1970's state of the programming art."

"Is it reasonable to expect people with a biochemistry or mathematics background to write clean well-engineered code? No. For the importance of the topic, and the sums of money involved, is it reasonable to expect that they'll have their programs cleaned by someone else before release? I think it is. With the pervasive lack of quality I'm seeing, I don't trust _any_ of the results of these programs. I have to wonder how many published results obtained using these programs (and fed back into databases that are used to derive more results which are ...) are actually valid."

[http://catless.ncl.ac.uk/m/risks/21/98#subj8.1](http://catless.ncl.ac.uk/m/risks/21/98#subj8.1)

</comment></comment><comment><USER18> I made a short explainer video on the language here:

[https://youtu.be/5bk4Wc5Op2M](https://youtu.be/5bk4Wc5Op2M)

<comment><USER19> this was great - thank you

</comment></comment><comment><USER20> This should be marketed as a language for _genomics_ not bioinformatics. There is more to bioinformatics than just genomics, but this language (at least the beginning of the docs that I looked at) seems to be marketing exclusively for genomics analysis.

Not a knock on the project at all, but it doesn't seem like someone doing analysis on cell images is going to get much out of this language.

</comment><comment><USER21> As a working biological data scientist... This is useless until a tool I need, which I can't get anywhere else, is written in it.

My suggestion would be to rewrite some of the most popular tools, like bwa, in this language, and show the comparative performance etc.

Then, write a comprehensive open source package with great documentation and maintenance in this language, to demonstrate to others your investment.

Then, maybe, it will get some traction. But honestly, C, R and Java are so embedded it will be a hard road.

<comment><USER5> Traction is incredibly difficult, but there seem to be some good signs. I'm not a working bio data scientist, but I think the project so far has shown good taste on what to recreate vs. what to make easy to interface with. e.g. [https://seq-lang.org/tutorial.html?highlight=bwa#calling-bwa...](https://seq- lang.org/tutorial.html?highlight=bwa#calling-bwa-from-seq)

</comment></comment><comment><USER22> Since in bioinformatics, some processes are vastly more time-consuming than others it is not clear what the benefit of designing a new language is as opposed to adding an optimized, C library into Python itself.

What functionality would not work the same way if this were a python library?

That being said, it is a neat and impressive effort, I do fear though that it will have a whole lot less uptake as now requires bioinformaticians to learn a third language (Python, R and now seq)

Historically I note a similarity to the 'Mothur' and 'Qiime' split.

'Mothur' is a dynamic language similar to 'seq' whereas 'Qiime' is Python glue across many libraries. Frankly, I like 'mothur' better, but 'Qiime' is whole lot more popular.

</comment><comment><USER23> I'm a bit surprised at all the negative comments here. I hope it isn't too discouraging for your team, because as author of a 50K LOC Python app (HashBackup), I could really use this! I love the Python language but sometimes the performance is a drag. For example, to plan a restore when the data isn't local, HashBackup has to traverse every block in every file to be restored and figure out when to load the block and when it can be released from the cache. This isn't particularly difficult, but for very large restores it requires long loops using large lists, arrays, and/or dicts. Parts are coded in Cython, and that works well for easily-isolated functions, but not so great for something like the restore plan that needs database access and is referenced during the restore.

I ran a small 10M entry {int:int} dict benchmark. In Python 2.7, the test used 1.1GB of RAM and about 8 seconds. In D (fully compiled) the same test used 881MB and 7.4 seconds. Here's the D version:

      import std.stdio : writeln;

      int main() {
        int[int] map;

        foreach (i; 0..10_000_000)
          map[i] = i;

        foreach (i; 0..3) {
           foreach (j; 0..10_000_000) {
             map[j] = map[j] + 1;
           }
        }
        return 0;
      }

In Seq it ran in 5 seconds and used 395MB. Here's the test program and Seq run:

      map = dict[int,int]()
      for i in range(0,10000000):
          map[i] = i
      for i in range(3):
        for j in range(10000000):
          map[j] = map[j] + 1
      print map[12345]

      [root@hbseq ~]# /usr/bin/time -v ./map
      12348
        User time (seconds): 4.67
        System time (seconds): 0.55
        Percent of CPU this job got: 97%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:05.36
        Maximum resident set size (kbytes): 395532

Looks pretty great to me, especially if I don't have to do a major rewrite! I guess I could have hit a case where Seq happened to have a higher HT load for 10M entries and D just did a resize, so it would be good to run the same kind of test at a lot of different hash table sizes. But the Python results are pretty terrible space-wise.

</comment><comment><USER24> I don't really understand why to create a new language. But I like the improvements they made for the Python lang

<comment><USER25> Because this is the precise situation for which you'd want a domain specific language. You have a group of people who are not expert programmers, so pure C/C++ is quite annoying to write, and python's performance on the type of datasets used by these researchers is abysmally slow.

</comment></comment><comment><USER26> As someone who noodles around in python, and knows nothing about bioinformatics, this looks very interesting for the 'nice' things it does to basic python like forcing single type of returns, array controls. Its almost like a 'safer-python' set of constructs that would be of great use to the general python programmer. And the pipe operator is very cool.....gotta try that out soon.

</comment><comment><USER27> Hmm, it's interesting that you have DNA base sequences support built in. But (you know someone was going to ask ;-) ) I don't see similar support for Amino Acid sequences, or encoding/decoding between the two. Is this a deliberate design choice?

<comment><USER5> I'm not sure this is what you are looking for but there is an example in their docs of dna-to-protein.

[https://seq-lang.org/cookbook.html?highlight=protein#dna-to-...](https://seq- lang.org/cookbook.html?highlight=protein#dna-to-protein-translation)

<comment><USER7> Yeah, but not all organisms use the same translation. [https://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/inde...](https://www.ncbi.nlm.nih.gov/Taxonomy/taxonomyhome.html/index.cgi?chapter=tgencodes)

So an unnamed function without argument might easily give the wrong thing.

</comment></comment></comment><comment><USER28> It is like a Julia-Nim hybrid.

</comment><comment><USER29> I'm curious how this differentiates from Nim other than the builtin types for bfx stuff. Still cool either way and great to see something else joining this space.

</comment><comment><USER30> How does it compare to Futhark/J? I'm especially curious how it compares to calling Futhark from Python. Are there special data structures?

<comment><USER31> It has a better name.

<comment><USER32> Off-topic, but futhark is such a brilliant and well-executed idea, if only it had a better name.

<comment><USER33> What's wrong with the name?

<comment><USER30> It's hard to google? That has been my complaint.

</comment></comment></comment></comment></comment><comment><USER34> Heterogeneous collections and no inheritance/polymorphism seems like a bad combination.

</comment><comment><USER35> Is it possible to write a python module with seq?

<comment><USER36> If it is possible to write python modules in Seq as easily as writing plain Seq, that would give Seq a great possibility for benefiting from the popularity of Python.

Interoperability would increase adoption. Library writers and maintainers would sooner consider switching to Seq for performance reasons, while still being able to use those libraries from Python.

</comment></comment><comment><USER37> This is similar to Crystal?

</comment><comment><USER38> Obligatory "this name is already in use in this field" post: Seq is the name of a very popular structured logging sink that provides a web app with a query language interface for searching through and graphing log streams, often paired with Serilog when used in the .NET world.</comment>


An unusual hardware architecture: APA (Associative Processing Array) - <AUTHOR> http://www.yosefk.com/blog/an-unusual-hardware-architecture-apa-associative-processing-array.html <comment><USER2> Such minimal computing designs are delightful. Ever since hearing of "reverse subtract and skip if borrow" as a one instruction architecture, I've dabbled in the study, if not progressed to my satisfaction. This is another wonderful addition - if I could get my mind around it, having just suffered the effects of watching "The Omega Man".

Any links to coding examples?

<comment><USER3> Like hugi-compo? The latest competition was in 2009, and the winner generated a random ASCII-art maze with a 122-byte MS-DOS .COM file. <http://www.fysnet.net/hugi/compoold.htm> A 2006 competition was for Sudoku solvers; the winner was 67 bytes. And of course there's a whole demoscene with 32-byte, 64-byte, 128-byte, 256-byte, etc., categories. My dissection of a 16-byte graphics demo (the smallest!) is at <http://www.canonical.org/~kragen/demo/fr-016.html>.

In April some of us were playing with bootstrapping a development environment in MS-DOS from COPY CON: [http://lists.canonical.org/pipermail/kragen- discuss/2011-Apr...](http://lists.canonical.org/pipermail/kragen- discuss/2011-April/thread.html) [http://lists.canonical.org/pipermail/kragen- hacks/2011-April...](http://lists.canonical.org/pipermail/kragen- hacks/2011-April/000519.html) Dave Long put together a version where the machine code was entirely printable ASCII.

Brian Raiter wrote a lovely article a few years back on the smallest possible ELF executable, which turns out to be 45 bytes, which unfortunately has been broken by recent Linuxes: [http://www.muppetlabs.com/~breadbox/software/tiny/teensy.htm...](http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html)

Based on Brian's work, I wrote a self-compiling compiler for a tiny dialect of Forth: <https://github.com/kragen/stoneknifeforth> which is about two pages of code if you remove the comments. I also wrote a PEG compiler-compiler in JavaScript which is one page of code: <https://github.com/kragen/peg- bootstrap/blob/master/peg.md> \--- ultimately I want to make a version that generates StoneKnifeForth code instead of JS, but I haven't gotten around to it.

I also designed a minimal CPU architecture: <https://github.com/kragen/calculusvaporis> but I only have software implementations for it so far, and no interesting code.

And I wrote a metacircular interpreter for Bicicleta in half a page of code, which I guess is some kind of "minimal coding example": [http://lists.canonical.org/pipermail/kragen- hacks/2007-Febru...](http://lists.canonical.org/pipermail/kragen- hacks/2007-February/000450.html)

<https://github.com/kragen/screenfuls> is a collection of tiny, _readable_ programs that do interesting things.

<comment><USER4> Okay, now someone needs to build a Calculus Vaporis CPU in Minecraft.

</comment></comment></comment><comment><USER4> This would be an interesting starting point for a mechanical computer.</comment>


Ask HN: What should I learn to become web developer in 2018? - <AUTHOR> <comment><USER2> HTML, CSS, JavaScript, Vue, and a server-side language such as Python.</comment>


Oil Companies Plan to Blow Past World Carbon Budget - <AUTHOR> https://www.theguardian.com/environment/2019/oct/10/oil-firms-barrels-markets <comment><USER2> About a year ago I read an OPEC publication from 2006 "Oil in the 21st Century". It was filled with optimism about our oil powered future. In one chapter they made surprisingly accurate production/consumption estimates through about 2021 and were only off by a few points because in 08-09 consumption dropped a little. Not once were electric cars mentioned.

What I ultimately absorbed from the book is that oil production and consumption is inextricably tied into the global economy and only aggressive, binding, legislation can separate it. Technology -baring some moonshot energy breakthrough that's absurdly cheap and easy to adopt overnight— will not save us; the oil will keep flowing and more will flow each year.

<comment><USER3> >only aggressive, binding, legislation can separate it

That, or the eventual depletion of oil. My gamble is more on this than politics ever getting it done.

<comment><USER2> > depletion of oil

That's true too, barring some 1970's-like energy crisis also I think. Though, my understanding of peak oil arguments is that as drilling technology improves we can extract deeper oil that is not previously counted as extractable. So peak oil is this constantly shifting target 30-40 years away. We will run out, yes, but no time soon. Oil companies and national economies will continue to drive up production until then.

</comment></comment></comment><comment><USER4> Most oil production goes to transportation. That is why it is absolutely essential that we switch to ev's as quickly as possible.

</comment><comment><USER5> This is madness.</comment>


Android Media Player doubleTwist Hits 1 Million Active Users - <AUTHOR> http://techcrunch.com/2011/02/15/android-media-player-doubletwist-hits-1-million-active-users/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Techcrunch+%28TechCrunch%29 <comment><USER2> Really? I tried DT out not too long ago and found it to be horrendously slow in doing...everything. I have a Galaxy S, which might not be the number one phone in speed at the moment, but it's up there. And even then, videos had some clear framerate issues, and the desktop application took two hours to copy over music, whereas the native OS copy function took about 30 minutes.

Good for them though, I suppose.

I'll stick with Winamp for audio.</comment>


"If you have tourists stay overnight, report this to the government" - <AUTHOR> http://www.deredactie.be/cm/vrtnieuws.english/News/140418_couchsurfing_English <comment><USER2> A fine of 250 euros is actually pretty lacks given that they are unlikely to enforce this heavily.

I would think that I and many other people would be quite happy to risk that. What do other people think?</comment>


My trigger-warning disaster (2015) - <AUTHOR> http://www.salon.com/2015/10/28/i_wanted_to_be_a_supporter_of_survivors_on_campus_and_a_good_teacher_i_didnt_realize_just_how_impossible_this_would_be/ <comment><USER2> If the "survivor" and the "hetrosexual white" student both felt unsafe in the class, the common element is the professor. She seems to have some good points to get across but apparently she's just not very good at conveying them to the students.</comment>


DevCentral Weekly Roundup Episode 81 - X - <AUTHOR> http://devcentral.f5.com/weblogs/dcpodcast/archive/2009/04/09/devcentral-weekly-roundup-episode-81---x.aspx <comment><USER2> Joe Pruitt,

You must LOVE F5 products as the only links you submit are links to the F5 site. Perhaps you can at least try to pretend you're not shilling for F5 and submit at least one tiny little link to a page that doesn't have anything to do with F5 and yet will still appeal to the readers of this site? :-)</comment>


Show HN: Asteria – The next gen interface for your autonomous life - <AUTHOR> http://getasteria.com/?referrer=hn <comment><USER2> I have literally NO idea what this product is about, especially from the website.

Tapping explore shows unrelated projects which is even more confusing.

</comment><comment><AUTHOR> We're looking at bringing some good people on board with the prototyping! :)</comment>