Build Your First Meteor App And Discover Your Inner Artist - <AUTHOR> http://www.ripariandata.com/blog/real-time-multiuser-drawing-with-meteor

<comment><USER2> First of all, really like the tutorial, gave me a great sense of what a Meteor app would look like and how it would work!

As an extension though, I was wondering if this tutorial could incorporate a discussion on how to secure a Meteor app. It seems to me that in the "Client" code section, we get a reference to a Mongo collection without any explicit permission required from the server. Is the security model that we can get access to any collection created with the "new Meteor.collection" command on the server side? How would we go about validating new inputs and removals from clients modifying the points collection? I think examples and a discussion of these questions would really help this tutorial and help to assage any concerns that people like me get from exposing a raw DB collection to the client.

I also was wondering if Meteor had any easy built-in provisions for offline/unreliable connection modes when you wouldn't be able to rely on a "points.insert({})" call on the client side until connectivity returned?

(apologies if these are super basic Meteor questions - I haven't done anything with the framework, so I don't have much experience with it, but I really liked the straight-forwardness of this tutorial, and these were my natural next questions after reading the tutorial).

<comment><USER3> I'm not the OP, but I did write the article. I'm probably going to write a follow up addressing getting started with security. Meteor's security is pretty good now, but it was a little too verbose for a short demo. Basically, on the server side, you publish exactly the set of documents a specific client/user will receive. You can also whitelist/blacklist specific behaviors with allow/deny.

<comment><USER4> I followed your tutorial and got briefly hung up by an error saying that Canvas wasn't defined. Turns out I was running it on the newest version of Meteor, and in 0.6 they started putting local variables at the top level in an IIFE. Functions declared using the named function syntax (function name() { ... }) are locally scoped, as far as I know. I fixed it by changing it to Canvas = function() { ... }.

Other than that small problem, cool article, thanks!

<comment><USER3> Hey, nice catch! I've updated the code for 0.6.0. I'll update the readme later, as meteor now includes better package management.</comment></comment></comment></comment>


In Death, Nexus One Does What It Couldn't Do In Life: Sell - <AUTHOR> http://techcrunch.com/2010/08/19/nexus-one-sales/

<comment><USER2> Too bad most folks prefer subsidized phones, and Google's experiment with the N1 didn't work out.

After initially falling in love with the iPhone, I bought an N1 since it supports T-Mobile's US 3G frequency. The N1 is a great phone, and I'm sending this comment over it's mobile hotspot through my ancient $6/month T-Mobile unlimited data plan.

Where there is coverage, T-Mobile's 3G network rocks. The latency and download speeds are comparable to a good DSL connection. I've made Skype video calls with a MBP via the N1 that were absolutely perfect. But then I might have been the only user in that cell ;)

A little known advantage of T-Mob's 3G network is that it's purely for data, while voice is carried over other frequencies. They have fiber to their towers, with HSPA+ already deployed in many metro areas.

Another advantage of the N1 are the unbridled access to the latest and greatest firmware and app updates.

Downsides are the plastic touch screen that scratches easily, and the OLED display which is almost impossible to read in sunlight.

<comment><USER3> Plastic touch screen? Did they change them half-way thru production? Mine is made of glass (it feels like glass, at least) and doesn't have a _single_ scratch on it. It still looks new, and I ordered it on launch day.

<comment><USER2> Hah, also ordered on launch day :) And I'm glad I got the desk and car docks, as they seem to be sold out as well.

Initially I also thought that the N1 touch screen was glass, but then I managed to put a couple of ugly scratches into it when the N1 was in the same pocket as my keys for a minute.

When I complained about this to someone who works for the maker of the worlds most popular phone ( _cough_ ), I was told that the N1 screen is made from a very hard resin, but plastic nonetheless. They had done some competitive analysis.

</comment></comment></comment><comment><USER4> I still hold to the theory that Google didn't cancel the N1 because it wasn't selling well enough - rather they cancelled it because they worried it would sell _too_ well. In other words, they only wanted to sell it as a flagship device and as insurance in case they couldn't get wide adoption of Android. It was a backup plan. Once they had a whole array of carriers on side they no longer saw it as in their interest to have a huge market of N1s out there (which they have to support). With so many carriers embracing Android, the danger for Google now is doing anything that interferes with that.

<comment><USER5> Indeed, how would low sales have been a reason to cancel the phone? How much overhead can there be selling one item through a website, with virtually no marketing or customer service?

And now they're going to keep selling them anyway, so they have to keep the whole pipeline running, but they still won't sell them to consumers.

Either they are not making a profit on the phone or there are hidden motives at work here.

</comment></comment><comment><USER6> I was surprised to hear him say that the N1 was better than the EVO, until I remembered that I replaced the stock software with what is essentially the N1 build. HTC Sense is absolutely awful compared to AOSP, and it's nice to know that I'm not the only one that thinks so. It's amazing how random tweaks to the software can make it so unusable.

(Also, the default build on my EVO ate battery like crazy, the number one complaint by reviewers. Install CM, the battery lasts all day, even with heavy Kindle and Browser use.)

It's a shame that "normal users" don't get to decide whether or not they want Sense.

<comment><USER7> I don't know about the EVO, but Sense on my Incredible is pretty slick and I haven't had any battery problems (although I just got it Tuesday).

<comment><USER6> Have you ever used stock Android?

The thing that nails Sense for me is that the calendar app requires you to spin digits around (11:01, 11:02, 11:03, ... for your 11:45 appointment), whereas the stock Android app lets you just type them in or press a button. Not as OMG AWESOME, but much easier to actually _use_.

Anyway, Sense only lasted a few days on my phone, so I am not experienced. I just know that the stock AOSP lock screen, dialer, calendar, and browser all work better.

<comment><USER8> Even easier would be something that recognized that 00, 15, 30, 45 are going to cover most uses and thus made it a single tap to select which one of those you want (with the "more general please" option if you need it).

<comment><USER6> Excellent idea. What's great about Android is that I can clone the git repo, add this feature, and see if I like it. Much better than waiting for some "expert" to "decide" that this is best and then waiting for the next OS upgrade!

</comment></comment></comment></comment></comment><comment><USER9> I was torn between an iPhone 4 and N1. In the end I chose Android because I wanted an experience more akin to a minuscule laptop than an appliance. Unsubsidized $30/month unlimited data and free tethering/wifi hotspot doesn't hurt.

My daughter has a current-gen (3GS hardware) iPod Touch that I love to borrow for gaming and exploring apps, so I'm familiar with iOS4. I've also spent plenty of time with co-workers' iPhone 4s.

I'm happy with the N1 so far, but the screen isn't as pretty as the iPhone 4. Better than the 3GS and more neutral than the Vibrant's SAMOLED, but still a close second to the iPhone 4.

But the biggest issue I have is the app marketplace. I have serious iPhone game envy. And to a lesser extent, app envy. I've seen many cross-platform apps (Gowalla included) that feel aesthetically half-baked compared to their iPhone counterparts. I'm happy to see Unity 3D, PopCap and Angry Birds on board, but I really wish developers/designers/publishers could put a little more effort into their Android ports. On the other hand, I suppose well- designed Android apps and games are somewhat of an untapped market.

</comment><comment><USER10> I believe it. We have a couple kicking around the office and they're fantastic tools. You won't get my HTC Incredible away from me (Vz > AT&T, optical sensor > trackball), but the extra effort required to root and NAND-unlock it is a downside over the Nexus One. Part of me does wish I waited for the Droid 2, as I like the form factor much better, but with Motorola's anti-hacking efforts lately, I probably wouldn't be as happy with it.

<comment><USER11> Does anyone actually use that trackball for anything other than text selection, though?

Going from an iPhone to a Nexus One for about six months, I mostly wished that it wasn't there (except when I wanted to select and copy text, at which point I wished I was back on my iPhone).

<comment><USER12> You can use it as a physical camera buuton.

<comment><USER13> I have a whole new respect for the ball now! One of my major complaints with the N1 was the awkwardness of taking photos with the screen facing away from me (e.g. self portrait). This tip pretty much addresses that.

</comment></comment></comment></comment><comment><USER14> Has anyone tried using a Nexus One with a TMobile data plan only ($40 unlimited) as their sole communication device?

Id love to save $40 money off cost of iPhone; been eagerly awaiting the day to use data plans only. Maybe we are almost there with Tmobile unlimited and NExus One?

<comment><USER15> where are you seeing the $30 unlimited data plan?

<comment><USER9> I was under the impression that the "Even More Plus Smartphone" plan was $39.99, but when I brought my new N1 into the store, I was quoted $30/month unlimited, no contract. I've been a customer since 2002 and have a family plan (voice and text) that expires in November. Maybe it's for existing customers?

</comment></comment></comment><comment><USER16> I was going to buy one after my t-mobile contract ran out. They just didn't give me enough time :-/

<comment><USER17> Anyone can register as a developer and purchase one today (or when the stock is replenished).

<comment><USER18> But you can no longer buy one subsidized via a T-Mobile contract for something like $189. Unsubsidized phones are a tough sell in the US and really don't make sense on most carriers. Only T-Mobile gives you a discount on service for skipping out on subsidies.

<comment><USER16> I didn't want a subsidized one, since part of the attraction was that it would work with any GSM carrier.

</comment></comment></comment></comment><comment><USER19> A failed Google product is a lot like a cancelled TV show. Only a few million people liked it.

</comment><comment><USER20> I think they were little too focused on the US market. Here (in Costa Rica) almost everyone I know with a smartphone has a N1. There is a monopoly carrier here and no phone+service package, so N1 makes perfect sense - just plug the chip in and go - no unlocking or rooting required. I bet there are a lot of other international markets where the N1 would do just as well.

<comment><USER21> Sadly the new dev phones won't work with ICE's 3g network,now a tico's Nexus is literally irreplaceable.

</comment></comment><comment><USER22> I have played with the Nexus One and Samsung Galaxy S (Vibrant) and I have to say the Galaxy S is a much smoother experience. The tactile feel of the Galaxy S is just awesome.

</comment><comment> contol-m I got my Nexus One just after they stopped selling it. (bought a new one off eBay) and couldn't be happier with it.

</comment><comment><USER23> So, aside from possible DeLorean effect, any idea why?

<comment><USER24> The Nexus One is the only modern Android phone (besides the original Motorola Droid) that runs pure Android- it doesn't have any of the additional software like HTC Sense or Motorola Blur.

It's also usually the first to receive updates, it got Froyo way before any other device.

<comment><USER25> Pardon my ignorance, but is it possible for someone with a Sense phone, say, to install pure android on it and get all the advantages of the Nexus One, with the updates and all? Or do you need drivers or something?

<comment><USER26> It requires rooting/jailbreaking your phone and unlocking the bootloader, if you consider that an option. Otherwise, American carriers (except for T-Mobile) will freak out if you even mention running something other than what they put on the phone.

<comment><USER25> Ah, sure, that's fine (I ran Android on my iPhone once). Does it work perfectly otherwise, or are there any incompatibilities?

</comment></comment></comment></comment></comment><comment><USER27> _I understand._

In death, a member of Project Mayhem has a name. _His name_ is Robert Paulson.

</comment><comment><USER28> They announced the death of the nexus one?

If i remember they announced the death of the web store and said that they will bend over to sell in the operator's stores.

<comment><USER29> There's nowhere that a non-developer can buy a Nexus One in the US. They aren't for sale. They aren't coming soon. People know a dead phone when they see one.

<comment><USER30> I think they were very stupid to not push the thing more in Europe, where people are quite used to buying unlocked phones for their full price.

</comment></comment></comment><comment><USER31> Sounds like Michael Jackson lol</comment>


Misophonia: Scientists crack why eating sounds can make people angry - <AUTHOR> http://www.bbc.com/news/health-38842561 <comment><USER2> How is this an "explanation" or "cracking" the problem? They showed that an emotional response was correlated with neural behavior... what else could it have been?

More broadly, it's frustrating that neuroscientists reframe genuinely interesting questions ("Why do I get angry when people eat apples beside me?") into boring questions ("What does my brain look like when I'm angry about someone eating an apple?").

<comment><USER3> > _How is this an "explanation" or "cracking" the problem? They showed that an > emotional response was correlated with neural behavior... what else could it > have been?_

There are Facebook support groups, and a subreddit, for people suffering form this disorder, and it's not uncommon that family members, spouses and friends think they are just being obnoxious, and advise them to "just shrug it off".

If it's a measurable neurophysiological condition, this gives some support that those people just cannot shrug it off, whatever they try. It can also help the sufferers to know that they are not being just crazy, but something really is different in the way their brain is wired.

<comment><USER2> To your first point, I'm not sure how this helps the sufferers. What they have shown is that there is a different neural signature correlating with a different emotional response. There's no causal link here, meaning that I might _still_ tell someone to just shrug it off. Maybe they can control their neural activity, just like I can control my neural activity related to thinking about elephants by not thinking about elephants.

To your second point, I would offer two responses. First, while being able to measure something is a win in itself, we need to be clear about what they're measuring. They have shown that suffering ailment X increases the probability that they find neural signature X. They do not know the reverse, meaning this isn't going to unlock early diagnostics or anything. It is unclear how discriminating this response is. Second, it's not clear that this is the product/effect of the way their "brain is wired". Perhaps changes in neural activity caused the observations of different neural connectivity. Perhaps some other factor of their experience or biology caused this sensitivity and the visible differences in connectivity, neural activity, etc. We just don't know.

(P.S. Listening to people eat drives me insane. I'm not going to self- diagnose, but I just want to be clear that I'm not criticizing the finding/report because of a lack of empathy for the sufferers.)

(P.P.S. I'm a recovering cognitive scientist who had to hear about a lot of neuropsych findings that all boiled down to, "This part of the brain lights up when we hear/see/do this! Give me another $5mm grant!").

<comment><USER4> >To your first point, I'm not sure how this helps the sufferers. What they have shown is that there is a different neural signature correlating with a different emotional response. There's no causal link here, meaning that I might still tell someone to just shrug it off. Maybe they can control their neural activity, just like I can control my neural activity related to thinking about elephants by not thinking about elephants.

>To your second point, I would offer two responses. First, while being able to measure something is a win in itself, we need to be clear about what they're measuring. They have shown that suffering ailment X increases the probability that they find neural signature X. They do not know the reverse, meaning this isn't going to unlock early diagnostics or anything. It is unclear how discriminating this response is. Second, it's not clear that this is the product/effect of the way their "brain is wired". Perhaps changes in neural activity caused the observations of different neural connectivity. __Perhaps some other factor of their experience or biology caused this sensitivity and the visible differences in connectivity, neural activity, etc. We just don 't know. __

That 's a very good point, to expand, it appears the implicit conclusion at the intersection of biology and psychology that sufferers 'have a genetic predisposition to be upset' might possibly be taken as sufferers 'have an inherited _right_ to be upset,' which is something I've been seeing more of in the world, and something that I am reading between the lines in the article-- and even in the diagnoses itself, Misophonia.

We know no one is perfect, and most of us are far from it, but are we headed to a future where we are all walking baskets of 'scientifically-diagnosed' defects that we must tolerate (that we really don't fully understand if we're honest about it--the brain is still, for the most part, an unsolved mystery)? I think it's important to be respectfully tolerant of genetic defects, i.e. mistreating a deaf person would _really_ upset me, because we know a deaf person cannot 'get over it;' but can we really know the same about the plethora of new neurological conditions such as this one? It's possible there might be something about scientific journalism that is selling itself for more than its worth here, but maybe that's not true, it just doesn't appear there is enough to know right now but I see that admission nowhere in these kind of articles.

<comment><USER3> > _I think it 's important to be respectfully tolerant of genetic defects, > i.e. mistreating a deaf person would really upset me, because we know a deaf > person cannot 'get over it_

There have been attempts, though, to make deaf people "get over it" by trying to teach them lip reading, and speaking word even though they cannot hear themselves what they are saying. They have not been very successful.

"In 1980, a vocational school for deaf adolescents was opened in the area of Managua called Villa Libertad. By 1983 there were over 400 deaf students enrolled in the two schools. Initially, the language program emphasized spoken Spanish and lipreading, and the use of signs by teachers was limited to fingerspelling (using simple signs to sign the alphabet)."

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

<comment><USER5> Since only a small fraction of people are unable to hear at all to the point where ASL not a hearing aid would be beneficial wouldn't it be easier and more practical to teach them both ASL and lip reading and speaking to the degree that is feasible.

In theory it would be fantastic to get the 95% to all learn ASL to better communicate it doesn't seem likely to happen. ASL for example isn't on my personal to do list not because I don't care but because I have other things higher on the list.

</comment></comment></comment></comment></comment></comment><comment><USER6> As a self-diagnosed misophonic, working in an open office has always been a struggle. A great pair of noise-canceling earbuds is an absolute must (the Bose QC20 are fantastic).

I wonder if misophonia is correlated with awareness. I'm maddeningly hyperaware of my surroundings, and have difficulty getting into "the zone" if there's too much auditory and visual stimuli. For example, if someone is talking in the same room, it's almost impossible for me _not_ to follow what that person is saying; I can't tune it out unless there's something else that drowns it out. (Radios are incredibly annoying for the same reason. I can't sleep if I can hear people talking in another room; even music with vocals have the same effect.)

Being hyperaware has its benefits, of course, but it's mostly a curse.

<comment><USER7> I see this recommendation often (using noise-cancelling headphones in an open- office) but I'm confused by it.

The headphones will actively remove (a little bit of) white noise from your environment (air conditioners, server fans, etc) which in practice actually makes 'signal' type noises _more_ audible. I've noticed, for example, that I can hear the flight attendants on the intercom much better with my noise cancelling headphones on than without because the noise from the engine is partially cancelled.

I can see how heavy over-the-ear headphones would help in that they will dampen all noise, especially if you add in some white noise on top of that.

<comment><USER8> > I see this recommendation often (using noise-cancelling headphones in an > open-office) but I'm confused by it.

Me too, and I hope someone will chime in and mention a variety of noise canceling headphones that block out voices. I'm in an open office space for the first time in a while, and finding it extremely stressful and distracting to hear other people talking constantly when I'm trying to focus.

<comment><USER9> Look into proper IEMs, they're generally made for wearing on stage and tend to do a great job blocking out external noises.

I've got Shure SE535s for flying, they do a better job passively cancelling noise than any active "noise cancelling" headphones I've ever tried.

<comment><USER8> Do you have any experience with/thoughts on the SE215-K? The SE535s are a bit out of my "give it a try" budget range.

<comment><USER9> Not really, but they appear pretty similar to mine (perhaps you even get the same tips?) and other people seem to be very satisfied with the isolation [http://www.head-fi.org/products/shure-se215](http://www.head- fi.org/products/shure-se215)

</comment></comment></comment></comment></comment></comment><comment><USER10> I suggest we take the discussion of _misphonia_ with a grain of salt.

It seems to be ignoring the very large cultural factor. As an American who has lived around Europe, Asia, and the Middle East, I've observed a great variation in what counts as acceptable table manners. East Asian culture in particular seems to accept a lot more chomping and smacking at the table, and this seems to be a general complaint among Westerners, not just a few individuals.

Secondly, as with anything else psychological, there will be individual variation. I feel there is too much eagerness to isolate some end of a continuum and label it as a syndrome. For example, I've always found notable the fact that some people can't comprehend why neighbors would be bothered by a loud stereo and others can't comprehend how anyone could not be bothered. Though there is a significant psychological variation there, I would not label either group as suffering from a _syndrome_.

As for dealing with irritating background sounds, in addition to white noise, I've found earplugs very helpful in some situations. The best ones I know of are Hearos Xtreme Protection.

[https://www.amazon.com/Hearos-Plugs-Xtreme-Protection- pairs/...](https://www.amazon.com/Hearos-Plugs-Xtreme-Protection- pairs/dp/B001EPQ86A)

<comment><USER11> The attitude you express towards Misophonia is one of the reasons why having this disorder is such a burden. It has nothing to do with table manners. There is nothing rational, or for that matter culturally relevant, about the emotional reaction I have to someone eating an apple next to me. The visceral, angry emotional response I feel to that sound has nothing to do with culture.

<comment><USER12> >The visceral, angry emotional response I feel to that sound has nothing to do with culture.

So, you can't be wrong about this?

<comment><USER11> That sound is not the only one that triggers my response, but I chose it because of this argument: I don't think anyone would argue that there is something culturally wrong (at least in western culture) with eating apples around other people. And there isn't really a way to eat a whole apple without making a sound that makes me irrationally furious.

<comment><USER13> I can't stand others eating an apple, but I can eat one without and issues. The same behavior holds true for playing with loose coins or cellophane wrappers.

How do you react to eating an apple yourself?

<comment><USER14> That's right - I don't feel anything when I am eating myself, or even when I am at a lunch table with others munching with me. It's only when I am not the one eating. I also get irritated when I am on the phone and the person at the other end is chewing or lapping.

Also, I don't think it's cultural and I suspect it might be hereditary.

<comment><USER15> I think I suffer from the same symptoms, but weirdly enough, if I'm at table and I got food, there is no problem.

Even if I finish first and the other are still eating, it's really only when I didn't eat / not eating that it infuriate me.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> _> it's the fight or flight response_

One time I was watching TV, a nature documentary, with my pet rabbit hopping around nearby. You should have seen her reaction when they played the sound of a rattlesnake on TV! Poor bunny was out of the room in no time and stayed quivering and stamping for quite a while.

So when I read about things like misphonia or even food aversion, my first thought is that these people may be showing the rough outline of genetic variants that may, in the right circumstances, be advantageous. (Of course most times it's maladaptive, but you _need_ that initial variance for evolution to act on).

Lo and behold: [https://blog.23andme.com/23andme-research/something-to- chew-...](https://blog.23andme.com/23andme-research/something-to-chew-on/)

</comment><comment><USER17> Just because I may have "misophonia" doesn't mean that it's necessarily my problem if I'm distracted in an open office plan by colleagues who like to talk loudly to themselves, play drum solos on Tupperware containers, or move a pound of gelatinous substances via air pressure from one sinus cavity to another all effing day long.

<comment><USER18> >or move a pound of gelatinous substances via air pressure from one sinus cavity to another all effing day long.

Well, they chose oxygen instead of making you happy...

</comment></comment><comment><USER19> For myself I thought it bothered me because of how I was raised (not to chew with mouth open, smacking sounds, eat quietly, etc)

<comment><USER11> Same here. I think this is evidence of genetic factors - i.e. my dad has a mild case and it manifested in him being very emphatic about training us not to make sounds while eating.

<comment><USER20> There _are_ genetic factors!

</comment></comment></comment><comment><USER21> As someone who physically lashed out on human beings making annoying sounds, regretting it and apologizing immediately after each time, I've developed only single coping mechanism for it that doesn't at the same time destroy my productivity and concentration (like most music that'd wash over such noise does) - rain sounds.

</comment><comment><USER22> This is very interesting. I think I have a mild version of this. Since I was a young (6 or 7) kid I remember how it pissed me off when someone would make noises while I was watching TV. It used to be enough for me to storm out of the room.

Nowadays, I have more control, but it still bothers me when my office mate munches on chips or an apple at work. I usually put on my noise cancelling headphones and listen to death metal, and that takes care of the problem.

<comment><USER23> Cannibal Corpse - Hammer Smashed Face?

<comment><USER3> That kind of brutal metal usually has several small pauses and other almost quiet moments in the songs, so outside noise can be heard during those moments. More melodic subgenres of metal usually have more continuous song structures. Melodic metal fills in also in the higher frequency bands better than brutal metal.

<comment><USER23> Quite interesting approach. You might like Meshuggah then. Catch 33 fits what you describe.

<comment><USER22> The Duskfall, Mors Principium Est or Kataklysm are my faves. Melodic but not too melodic like Dark Tranquility.

</comment></comment></comment></comment></comment><comment><USER24> I only recently discovered there was a name for what I experience. I was surprised to find it's pretty rare, but it helped me at least feel a lot more empathy towards people who make chewing noises!

</comment><comment><USER13> Eating sounds combined with an open office plan is enough to make my head explode.

</comment><comment><USER25> What about countries where making sounds while eating is the norm? When I lived in China the majority of people made sounds while eating and I never met someone who was annoyed by it. This fact, while anecdotal, seems to suggest that misophonia is learned or cultural.

<comment><USER3> According to this article, misophonia occurs in China, too. There is even a support group in Baidu.

[http://www.globaltimes.cn/content/1030060.shtml](http://www.globaltimes.cn/content/1030060.shtml)

</comment></comment><comment><USER26> I know someone who smacks their lips loudly when eating. Although noises in general don't irritate me as per the article, this person's eating noise riles me. Like another commentor, i think it's just a manners thing.

</comment><comment><USER27> Some cultures are less sensitive to these noises than others --in some places, people chew open-mouthed normally, which can get some getting used to as someone used to chewing mouth closed.

</comment><comment><USER28> I don't know if I have misophonia but please tell me I'm not the only one who finds it incredibly annoying when people suck their teeth in public.

</comment><comment><USER20> there's also a genetic link to misophonia: [https://blog.23andme.com/23andme- research/something-to-chew-...](https://blog.23andme.com/23andme- research/something-to-chew-on/)

</comment><comment><USER29> I think there's another way to attack the problem. I assume that the anger is arising for good reason, that it is (or at least was) helpful to human creatures. So it may be really difficult or impossible to prevent the anger from arising.

But when you meditate, one thing you slowly but deeply learn is that your thoughts are not you. Thoughts that bring you happiness arise even when you didn't ask them to, and you want them to stay forever, but they don't. Thoughts that make you feel bad arise even though you obviously didn't want them to, and you try to make them go away, but they stay as long as they want. But they eventually go.

So over time, as meditation practice develops, it can be as if you build a second mind behind the first mind, and you live in that more quiet mind, watching the first mind, seeing, e.g., wow, OK, there is anger in the mind. But there's a distance because you know it's not you. It's there but it doesn't move you so much.

<comment><USER30> That is quite eloquently put. I am reminded of Minsky and his color to this. It is a useful view. To characterize emotions and feelings as subroutines that input to your higher consciousness. Having that distance to say "ok, anger is activating, what is it trying to tell "me"?"

Happy and sad are the same. These feelings arent "you". They are inputs to your "you". When you can observe these feeling you can at times become powerfully separated. But I also like to embrace the holistic integration at times. To be "human" and let it all jumble together. It is quite beautiful and tragic at times.

(Minsky, society of the mind).

</comment></comment><comment><USER31> My explanation was "we find the other's enjoyment intolerable", but I guess this one is better.</comment>


Magnetic Generator – Infinite Energy - <AUTHOR> https://infinitysav.com/magneticgenerator/ <comment><USER2> Do they have a working prototype, or they are just collecting preorders?

> _The technology described Free energy device a hypothetical perpetual motion > device that creates energy, thereby contradicting the laws of thermodynamics > or a device which collects energy at zero cost._

I guess only preorders ...

<comment><USER3> Two constants with every "free energy" garbage:

1) It's not ready _juuuust_ yet

and

2) We need more money plz.</comment></comment>


Cahokia's rise parallels onset of corn agriculture - <AUTHOR> https://news.illinois.edu/view/6367/808689 <comment><USER3> I always have to force myself to remember that North Americ pre-Columbus was not a bunch of plain dwelling nomads hunting buffalo - that was the post- apocalyptic survivors. I have never heard of a city state in illinois that lasted from before William the conqueror to after William wallace. And I am glad it's in my vague history of the world now. Especially as I also have to remember this is the "other" kind of corn (Us vs UK)!

But that post 1492 pandemic must have been terrifying beyond anything we can imagine now. Imagine not just coronavirus but basically _every virus_ hitting you all at once.

<comment><USER4> To be fair, Cahokia was (if I remember right) the only large city for literally 1000 miles. If anything that impresses me all the more - <USER2> people may have spontaneously invented the idea of urbanism. I believe there were widespread trade networks, I'm not clear how many ideas were transmitted from mesoamerica to the mississippian culture

<comment><USER5> Also, Cahokia was abandoned hundreds of years prior to European contact.

</comment></comment></comment><comment><USER6> Ha!, I drank my coffee out of a "Cahokia cup" that I bought the second time I visited.

If you are in Central Illinois, definitely visit Cahokia (and the Lincoln memorial, of course).

When I was in high school my older brother and I took a 3000 mile train ride from the California border, through Mexico to near the Guatemala border to see Mayan ruin complexes. The vibe is different at Cahokia, more peaceful.

A few years ago I visited a ruin site in Northern Mexico that was a major trading center, goods from Central and South America, and virtually all of North America flowed through there.

I think that life was mostly very good (except for medical problems/life expectancy) until the population grew to strain natural resources and incentivised violence.

<comment><USER7> If you do decide to venture out to Cahokia Mounds it is not in the town of Cahokia but Collinsville, IL.

Cahokia, IL is a town you probably don't to wander around in.

<comment><USER6> We would just look for the signs to Cahokia Mounds when going to St Louis from Urbana/Champaign. Well marked.

</comment></comment></comment><comment><USER8> > There was a massive growth of population and a dramatic shift in ideology > with the appearance of fertility iconography.

Interesting! Does anyone know if these two tend to go together often?

<comment><USER9> Pretty much: [https://en.m.wikipedia.org/wiki/List_of_fertility_deities](https://en.m.wikipedia.org/wiki/List_of_fertility_deities)

<comment><USER8> Sorry, I don't see anything about population growth in there?

(Wow, the Romans had 25 different fertility gods...)

<comment><USER10> Off topic, but your parenthetical has me curious: Did the Romans of antiquity generally agree on a single pantheon of Gods, or would it be more accurate to say that across the Roman population, there were 25 fertility gods represented?

Would love to hear from a history enthusiast!

<comment><USER11> The Romans pre Christianity pretty much adopted any God they liked. There people who worshipped gods from the Greek, Egyptian, and many other pantheons as well as weirder sects and cults. With a few exceptions like the Jews, most people didn't see it a contradictions for multiple sets of dieties to exist and influence the world.

</comment></comment></comment></comment></comment><comment><USER12> It suggests corn cultivation was a sort of positive shock to the society's population level (as opposed to the more common negative shock of invasion, plague, etc). I wonder how many examples we have in (pre)history of relatively abrupt positive shocks to a human population? Aside from the Baby Boom, of course.

<comment><USER13> > I wonder how many examples we have in (pre)history of relatively abrupt > positive shocks to a human population? Aside from the Baby Boom, of course.

You're joking right? TLDR: shitloads.

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

<comment><USER12> No, honestly wondering. Most positive changes, significant enough to increase population carrying capacity, happen gradually. Shocks are more often negative (at least in the near term).

</comment></comment></comment><comment><USER14> I grew up in St. Louis County and Cahokia mounds was a favorite field trip in school.

If you have the opportunity it's a really cool place.</comment>


Ask HN: Are you satisfied with your project? - <AUTHOR> For many of us, it's always exciting to get started into a new project. We wanted to do the best as possible every time in every domain of our conception. Was it really possible ?<p>Finally, are you really satisfied of the result ?
What are the points you had overlooked ? What did you learn from that to avoid it in your next project ? <comment><USER2> finding a repeatable way to generate new business has always been the hard part.</comment>


How We Built Uber Engineering's Highest Query per Second Service (2016) - <AUTHOR> http://eng.uber.com/go-geofence/ <comment><USER2> A must-read followup that explores other data structures for geofencing:

[https://medium.com/@buckhx/unwinding-uber-s-most- efficient-s...](https://medium.com/@buckhx/unwinding-uber-s-most-efficient- service-406413c5871d)

<comment><USER3> Great write up! I cringe whenever I see that blog post; other spatial indexing systems at Uber were and are designed more thoughtfully, and with better performance characteristics.

<comment><USER4> The article didn't really go into detail about how this works within each city.

I am surprised they're scanning each city linearly, even a crude index (such as boxing), or a binary search would greatly improve the lookup time. I guess if the data fits into the cpu cache the order these are scanned doesn't matter so much?

</comment></comment></comment><comment><USER5> 2 years after the initial blog post, and we get this submitted twice in two days?

See [https://news.ycombinator.com/item?id=16084090](https://news.ycombinator.com/item?id=16084090) for the brief discussion yesterday.

</comment><comment><USER6> "Complicated S2?" That's surprising, the S2 library ([https://github.com/google/s2geometry](https://github.com/google/s2geometry)) seems really clean and fairly intuitive to me.

<comment><USER7> Seriously. S2 is just quadtrees over a cubemap, with a nice mapping from integers to cells.

So, instead of using a quadtree (because it's "complicated"), they chose to make their own two-level tree requiring O(N) linear scans at both levels, as opposed to O(1) with a simple trick.

</comment></comment><comment><USER8> 4500 queries per second per node doesn't sound like much.

"100s" of linear polygon scans could likely turn into a few, plus a quad tree or spatial grid hash lookup. I don't quite understand why those approaches are considered "complex?" Every simplistic game engine does this as soon as it implements collision.

Finally, choosing languages for workloads is fine. Python and JavaScript are famously non-threaded. But what about Java, C#, or C++? And why is the index updated in process, instead of a new process spinning up with the new index, and then switching over who takes requests?

Not saying what they built doesn't work, just curious about options.

<comment><USER9> > Finally, choosing languages for workloads is fine. Python and JavaScript are > famously non-threaded.

Python has famously misunderstood threading support. It is certainly single threaded sometimes (or rather multi threaded but only one can run at a time even on a multi core machine). But it can be usefully multithreaded if most of your computation is done with a C extension module that releases the GIL while it's being called e.g. numpy. If such a wrapper for the C++ S3 library exists (I haven't checked) it would be viable for this task.

I agree that choosing languages for work loads is fine though, and admittedly even in the best case Python would still not be as efficient as Go.

</comment></comment><comment><USER10> The last time this was posted a few commenters mentioned using PostGIS instead of Uber rolling this themselves.

If anyone's used PostGIS with a similar level of traffic/latency requirements could you comment on your experience?

<comment><USER11> I am learning PostGIS and PgRouting but there is not many tutorials/resources out there. Do you have any recommendations?

<comment><USER12> Search Anita Graser, she has some good introductory materials.

<comment><USER11> Thanks!

</comment></comment></comment></comment><comment><USER13> I imagine this is the service they used to implement greyballing. [https://www.nytimes.com/2017/03/03/technology/uber- greyball-...](https://www.nytimes.com/2017/03/03/technology/uber-greyball- program-evade-authorities.html)

</comment><comment><USER14> I know it's fun to hate on Uber here, and there are plenty of reasons to do so. But this is surprising to me. I was at one of the Uber tech meetups in NYC last year or maybe a year and a half ago, and it seemed like a total circus. The guy who was championing golang was up there talking about how cool go is and that they were rewriting all their microservices in it just because go is cool.

He also talked about how many problems it had caused them and all that fun stuff. I left that meetup thinking two things: 1. Who the fuck breaks stuff just to use a cool new language? 2. Good lord, I really don't ever want to work on this team. It's chaos.

</comment><comment><USER15> _Instead of indexing the geofences using R-tree or the complicated S2, we chose a simpler route based on the observation that Uber's business model is city-centric; the business rules and the geofences used to define them are typically associated with a city. This allows us to organize the geofences into a two-level hierarchy where the first level is the city geofences (geofences defining city boundaries), and the second level is the geofences within each city._

What about Uber's business model impacted this choice of algorithm?

Edit: left only the unanswered question

<comment><USER16> I'm not quite sure what you are referring to by strict background checks. But here's I think the service is used. A user initiates a call to the service requesting a ride. The service takes in the user's location and first finds the city (first tier), then the service searches and returns the georeferences in that city for ones that contain that user location. These georeferences might attached to drivers, and those drivers might be analyzed to find good drivers to send that ride request to, or they could be something like neighborhoods, where Uber would search that neighborhood for drivers. I'd guess that city specific requirements could be associated with georeferences in either tier.

</comment></comment><comment><USER17> From early 2016.

</comment><comment><USER18> Excellent article! I love to see go more and more in big enterprise companies.

Have you guys looked at moving to rust for any services?

</comment><comment><USER19> Why do you need 50ms for 99th percentile for such a simple and stateless service?

</comment><comment><USER20> Hey, really cool tech, good work. How's building a profitable business going?

<comment><USER21> A shame this comment was voted down. It is a pertinent question.

<comment><USER22> Disagree. It's _im_ pertinent, both in the sense of its being off-topic for the _technical_ achievement in The Fine Article, and that of its being ill- mannered.

I say that as someone who assiduously avoids using Uber's services, who finds what I know of their culture to be odious, and who has strongly criticized some of their other technical decisions, so please don't construe my comment as fanboy defensiveness.

</comment></comment></comment><comment><USER23> Could we ban Uber from HN? There really needs to be consequences.

</comment><comment><USER24> Sounds legit. I heard Uber does lots of queryable stuff per second.</comment>


Study Links Rise of SUVs to the Pedestrian Safety Crisis - <AUTHOR> https://usa.streetsblog.org/2018/05/09/study-links-rise-of-suvs-to-the-pedestrian-safety-crisis/ <comment><USER2>
      (They) did not specifically examine the effects of driver or pedestrian distraction on pedestrian deaths

So, the biggest factor during the study period -- the advent of smartphones and their resulting distraction -- went completely ignored.</comment>


Ask HN: Why don't banks take your photograph? - <AUTHOR>

Simple really - I can pretend to be my friend at the bank to withdraw cash at the counter with his card. I can't sneak into the gym with his card for there. And they are still MASSIVELY reliant on signatures.<p>Seems like it would be so simple to just take a photo of customers when they join. <comment><USER2> There are camera all over banks. (Not just to watch for bank robbers, but to watch for tellers and other bank officers committing embezzlement.) Engaging in a fraudulent transaction inside a bank is a crime that leaves behind a lot of evidence with which you could be convicted of a felony.

P.S. Doesn't everyone know how to spot (some of) the positions of security cameras inside places of business? The trick is that there may be additional cameras in locations unknown to you as you enter the bank, besides the camera that you should be able to see. As far as I know, in most countries all automatic teller machines have cameras to record every transaction.

</comment><comment><USER3> Some banks have. In the mid-90s, Bank of America used to take a photo, and put it on their debit and credit cards -- in fact, my (much newer) cards still have that same photo on them.

No idea if they still do that. I don't get the impression that it was a huge boost for security. Nobody pays all that much attention to the photo.

<comment><USER4> Bank of America does this for newly issued accounts and cards (both debit and credit), too, unless you specifically request a photo-less card.

</comment></comment><comment><USER5> A local college partnered with a local bank for some time to offer a Debt Card/Student ID which I missed out on but would find extremely useful since I proffer my driver's license every time I hand over my card.

With that said, I have no answer to your question, although I might come Monday if I get the time to call and find out.

<comment><USER6> Why would you instinctively offer your drivers license? That is just increasing the chance of fraudulent use of your card.

<comment><USER5> How so? Or am I underestimating the prevalence of fake IDs such that my name and photo are no longer valid points of verification? This can be more easily battled with a photo on the card itself. Unless of course I would simply underestimate the prevalence of people scanning said photo to use on the fake ID which shouldn't match and could be further battled with a hologram over the photo, or, with Lytro, a holograph of the person.

With all that said, I don't understand how it could hurt more than help. Do explain!

</comment></comment></comment><comment><USER7> Hmm that's weird, I thought you need some kind of ID with picture on it if you want to withdraw without your PIN</comment>


Nix as OS X Package Manager - <AUTHOR> http://ariya.ofilabs.com/2016/05/nix-as-os-x-package-manager.html <comment><USER2> When I first heard about Docker, I thought it did what Nix does.

Then someone handed me a docker image saying, "I got this working on my laptop, deploy this. Isn't this great!". I had no idea how they arrived at that configuration. If something happened to them or that image, I wouldn't have known how to reproduce that "working state".

So I am happy to see Nix / Guix become popular. It is what I imagined package management to be.

Before that we just used rpm and deb packages. For all the hate they get, they are actually well thought out, tested, stable format. With {pre/post}-{install/uninstall} script support, dependency resolution and so on.

But Nix / Guix is a qualitatively different things. Hope it becomes popular.

<comment><USER3> I mean, that's exactly what a Dockerfile is for. I don't know of anyone seriously using Docker that isn't using Dockerfiles exclusively. I only know of a single time when it's valuable to "commit" a new image (recovering logs from a stopped container).

None of which is to detract from Nix. Nix+Docker is a powerful combination. It takes Docker's declarative nature all the way down to the compiler used to build the bits placed in the container.

<comment><USER4> The big difference is that nothing about Dockerfiles implies that the processes they perform to build an image are deterministic or repeatable. Will a build step that runs `curl [https://github.com/something/whatever`](https://github.com/something/whatever`) do the same thing in six months that it does today? Docker doesn't help with that at all. Nix improves determinism by (almost) guaranteeing that if you build the same nix expression six months from now, you'll get exactly the same dependencies, all the way down to glibc. Either that or the build will just fail, if remote dependencies aren't downloadable anymore, which is always tons of fun.

<comment><USER5> YES.

Finally someone understands what really annoys me when I say that docker isn't 100% reproducible if you aren't using version pinning or something similar.

If you have 2 developers, and one of them does a build the next day, you could have them with two different versions of a package when the version went up.

<comment><USER6> sounds like 'emerge hell' from gentoo 12 years ago.

<comment><USER7> Ex-Gentoo dev here. It is not the same. Gentoo emerge runs in place, and you can definitely break your system with a broken build.

NixOS on the other hand, builds everything in sandboxes that only expose the requested dependencies. Builds are almost 100% deterministic. The cherry on top is that your system installation is simply a package consisting of all other packages and configuration symlinked together, and you replace your entire system in one go (atomically, by writing a symlink).

If the build fails at any point along the chain, you get an error and your system remains unchanged. You can totally switch from one major release to the next (and back) without hassle.

<comment><USER6> the non-deterministic nature is what I was getting at.

I worked at a place where they'd spin up a new gentoo box for a dev with stock "emerge foo" and let everything run up.

Then 3 weeks later, they'd do it again for the next dev, and they'd have many diff versions.

I know they weren't "doing it right", but they were doing it the default way they learned, and it caused a lot of problems.

Thanks for the info/clarification though.

<comment><USER8> It's been a LONG time, but when you build gentoo packages you can save the builds, right? Then if you bring up identical servers, you can just install from precompiled packages.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> Since I discovered Nix, I've been using it as a package manager for OS X and Linux. Every project my team is working on now has a default.nix file. Getting started on a project is so easy for a new hire now: just one `nix-env` away from a fully working dev environment! :D

<comment><USER10> By chance, do you have some public/sample projects that use this approach?

<comment><USER9> Yes! Look here: [https://git.hso.rocks/hso/def](https://git.hso.rocks/hso/def)

Is a Telegram bot that queries the RAE dictionary (Spanish). It doesn't have any documentation yet, though :S

You can look for the project deps code here: [https://git.hso.rocks/hso](https://git.hso.rocks/hso)

<comment><USER10> Looks great, thanks for sharing! I'd definitely try this approach.

Do you write default.nix files by hand, or there are some tools to automate the process?

I suppose for a project with a lot of dependencies (one of my current requirements.txt is over 100 SLOC long - almost all deps are on PyPI; haven't checked nixpkgs as I'm stuck with Debian at the moment) it would be somewhat tiresome to check every package and for every missing one list all the dependencies.

<comment><USER11> give pypi2nix a try and ping me on irc if it fails (nick: garbas)

[https://github.com/garbas/pypi2nix](https://github.com/garbas/pypi2nix)

</comment></comment></comment></comment></comment><comment><USER12> Could someone post (or link to) the history of Nix, the package manager? Who developed it, key project milestones, etc.? I understand it comes from, or led to, NixOS Linux distribution which uses Nix of course.

The nixos.org website is a bit sparse on the Nix project's history, and same with wikipedia (though separately mentions that NixOS was a research project started by Eelco Dolstra in 2003).

<comment><USER13> I don't know if it's useful to you, but I can link you to Eelco Dolstra's PhD Thesis (2006):

[http://nixos.org/~eelco/pubs/phd- thesis.pdf](http://nixos.org/~eelco/pubs/phd-thesis.pdf)

He also wrote this InfoQ article on the subject of Nix and NixOS which may have some useful information (2014):

[https://www.infoq.com/articles/configuration-management- with...](https://www.infoq.com/articles/configuration-management-with-nix)

The Wikipedia pages for Nix and NixOS also have some interesting references.

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

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

Edit: I have been playing with NixOS at home for a few months and I think it's _very_ interesting, but I'm a bit surprised I haven't heard more about it over the past decade or so. I'm thinking that the recent industry focus on deployments and provisioning has caused more people to come across it.

<comment><USER14> Thanks for posting these links. I didn't know about the PhD thesis and the InfoQ article is the best introduction to Nix that I've read yet!

</comment></comment></comment><comment><USER15> I was forcefully relocated from my comfortable decade-old Debian home into OS X, and the package management here in unsatisfying.

I'm looking forward to future posts that show how Nix is better than Homebrew or MacPorts, because that hasn't been demonstrated so far.

And as a bikeshed nitpick, I was always unhappy with the meaningless rpm options, preferring apt's clearer options (rpm -qa vs aptitude search). I'm a bit disappointed that nix chose to mimic rpm's style. Oh well, tomayto/tomahto.

<comment><USER16> _" I'm looking forward to future posts that show how Nix is better than Homebrew or MacPorts, because that hasn't been demonstrated so far."_

Homebrew is downright dangerous (I've written about why: [http://inthebox.webmin.com/homebrew-package-installation- for...](http://inthebox.webmin.com/homebrew-package-installation-for-servers) ).

MacPorts is fine. Not wonderful, but OK. Not reproducible in the way Nix is.

PkgSrc is also pretty good. Also not reproducible the way Nix is. But, the packaging policies are good, the packages tend to be well-thought out, and the technical solution to stuff like dependency resolution is pretty OK. The people building and maintaining PkgSrc know what they're doing.

Nix is clearly superior to all of them, however, in being reproducible, easy to roll-back in a predictable way (try going backward with almost any other package manager, even RPM/yum and dpkg/apt can't do that...I love'em both, but recognize that we now have better solutions to package management). Nix is just a fundamentally better tool.

Flatpak is another really promising packaging technology with some of the same benefits (but it's tackling things in a different way; I think I still have to consider Nix a better overall solution; it is certainly simpler in both implementation and usage, for packagers/developers and end users).

But, don't use Homebrew. For now, PkgSrc is probably the best method of getting a lot of reasonably good packages for Mac OS X. Nix will be the better option eventually, once there's a lot of people packaging for it (assuming people get over their bizarre love affair with Homebrew and start working with Nix, instead).

<comment><USER17> Homebrew is not dangerous. Please don't spread FUD.

Your link specifically covers the case of Homebrew _on the server_. But Homebrew isn't meant to be a server package manager. It's an OS X package manager, and OS X is a desktop operating system, not something that most people choose to use as a server (OS X Server exists but is primarily used for intranet stuff rather than as a production server). The complaints that your link has are only problems for an external-facing server. They're not problems for desktop use. And the simple answer to that is: don't use a desktop package manager on your server.

<comment><USER18> Totally agreed. Homebrew is not an appropriate tool for server package management (It assumes everything should be installed under a single user account)- but 98-99%+ of the people that use OS X and servers are not running OS X on their servers, macmini colo users excepted.

The wording _dangerous_ was poorly used, _inappropriate for server package management_ would have been better.

<comment><USER19> "inappropriate for server package management" is totally fair. That's why we try to generally default to only listening on localhost.

</comment></comment></comment></comment></comment><comment><USER20> I recently set up a new server for a toy project with nixos and it was a pleasurable experience, even if I did have to pull together several sources of somewhat thin documentation. Recommended. Next time I set up a new dev machine I'm going to give nix a try for dev environment management.

Using nixops to push a closure from your local system up to ec2 is very pleasing. It feels like the future.

<comment><USER21> NixOS is pretty awesome :) For anyone trying to start with NixOS, I suggest trying it out on a small DigitalOcean server. Check out this[0] blog post on some hints how to install NixOS there.

A big help is IMO to get a solid understanding about how nix itself works[1]. Also check out some existing `configuration.nix` files on GitHub. Just google for "github configuration.nix". This might give you some inspiration what you can do with the `configuration.nix`.

If you have some trouble with customizing vim on NixOS/via nix, checkout this[2] blog post I wrote a month ago. Hope it helps :)

[0] [http://blog.tinco.nl/2016/02/05/nixos-on-digital- ocean.html](http://blog.tinco.nl/2016/02/05/nixos-on-digital-ocean.html) [1] [https://nixos.org/nix/about.html](https://nixos.org/nix/about.html) [2] [https://www.mpscholten.de/nixos/2016/04/11/setting-up-vim- on...](https://www.mpscholten.de/nixos/2016/04/11/setting-up-vim-on- nixos.html)

<comment><USER22> Is there a reason you suggest trying it on DO instead of a local VM?

</comment></comment></comment><comment><USER23> Why use nix when pkg-src has been available on Darwin for over 15 years, boasts more packages, and has decades of support (plus Jonathan Perkin and the guys over at Joyent)? Why people assume the gross project known as homebrew (and the better macports, where homebrew gets all of their real package patches) are the only two package managers on OS X/Darwin is perplexing to me... Not to say nix is not interesting, but still. The OS X open source/package community would be insanely better if it was solely centralized around pkg-src.

[https://pkgsrc.joyent.com/install-on-osx/](https://pkgsrc.joyent.com/install- on-osx/)

[http://github.com/cmacrae/saveosx](http://github.com/cmacrae/saveosx)

<comment><USER24> Hmm.. I've never tried pkg-src before. I'll give it a try.

Step 1: I have to download a gig of stuff before I can install any packages? Even though my drive is big nowadays, that still seems like a bit of a waste...

Step 2: Let's try building a package, the last thing I installed with homebrew.

        > cd math/minisat
        > make install clean
        Makefile:27: *** missing separator.  Stop.
        > make
        Makefile:27: *** missing separator.  Stop.

Hmm.. this isn't the most user-friendly system...

UPDATE: I have to use the bmake I bootstrapped, didn't realise (and the quick- start docs didn't mention it). Now building begins, but the executable doesn't link.

<comment><USER23> use the `pkgin` binary to install binaries built from joyent... ([https://pkgsrc.joyent.com/packages/Darwin/](https://pkgsrc.joyent.com/packages/Darwin/)) No need to clone the package tree. This fixes step 1. `sudo bmake install clean` fixes step two.... (opt needs superuser permissions). see the joyent link in particular to see how easy it is to install pre-compiled binary packages with pkgin

</comment></comment></comment><comment><USER25> Anyone who's used Nix for a while -- how does package availability compare to Homebrew or Macports? Other than the default.nix thing (which Homebrew also has a version of [1]) are there any other clear benefits to switching from Homebrew?

[1]: [https://robots.thoughtbot.com/brewfile-a-gemfile-but-for- hom...](https://robots.thoughtbot.com/brewfile-a-gemfile-but-for-homebrew)

<comment><USER26> The last time I tried (a month ago), I could reproduce _most_ of my current Homebrew packages. There are few that are broken (e.g. rust, which has since been fixed), or do not have Darwin support (aria2c, which I have a PR open[1]). There are also packages that are a little bit hard to discover, e.g. those that are imported from Haskell's Hackage where it is not listed by default[2] when you do `nix-env -i <packageName>` (e.g. shellcheck).

From my few days of trying to replace Homebrew with Nix, being able to rollback the environment to last known good state (`nix-env --rollback`), ability to keep track of package changes (`nix-env --list-generations`), ability to try a package without installing it (`nix-shell`, well, technically it's installed on the machine, but nothing is linked in the profile, and you can nuke them with `nix-collect-garbage`) are very nice additions.

Apart from these features, the fact that it doesn't chown `/usr/local/` to my user is a big plus. Nix will also _not_ linking anything not explicitly installed by user to their profile (e.g. if package A has B as dependency, B won't be linked until user actually choose to install it, which is then managed separately from B that were explicitly installed as A's dependency).

That said, I've since revert back to Homebrew because there are few packages broken that are crucial to what I'm working on. Creating and fixing package is not too hard (I did with aria2c), although time didn't allow me to do it back then. I would love to try to switch to Nix again sometimes.

People in ##nix-darwin are super-nice, also! :-)

[1]: [https://github.com/NixOS/nixpkgs/pull/15029](https://github.com/NixOS/nixpkgs/pull/15029)

[2]: [https://nixos.org/nixpkgs/manual/#users-guide-to-the- haskell...](https://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell- infrastructure)

<comment><USER25> Thanks for the review. I think I'll definitely have to give it a try next time I've got a free weekend.

</comment></comment></comment><comment><USER27> Nix is impressive, NixOS is more impressive still.

</comment><comment><USER28> It seems like when installing Nix, it needs to create a 'nix' directory in your root directory. While I haven't tried installing Nix yet myself, I'm guessing this probably won't work on OS X v10.11 El Capitan due to System Integrity Protection¹. You'll have to temporarily turn it off² first before attempting to install Nix (and then optionally turn it back on after).

――――――

¹ — [https://derflounder.wordpress.com/2015/10/01/system- integrit...](https://derflounder.wordpress.com/2015/10/01/system-integrity- protection-adding-another-layer-to-apples-security-model/)

² — [http://www.madrau.com/support/support/srx_1011.html](http://www.madrau.com/support/support/srx_1011.html)

<comment><USER29> Ooh, that's an excellent point -- thanks for bringing it up. I've had Nix installed since early 2014, so I haven't run into any trouble with SIP yet. Looks like we might need to update our docs, and maybe have the installer give a helpful tip.

<comment><USER30> Unless /nix modifies files/folders, then no, you don't need to modify your install instructions.

SIP only prevents users from _modifying_ system level files. It does not prevent you from adding to, or deleting your own files within the `/` directory.

</comment></comment></comment><comment><USER31> Is there any reason to switch if homebrew worked perfectly for me in the last couple of years?

<comment><USER32> none, which is why this article is so vague.

like i needed another folder in root, as if `/opt/`, `/usr/local/` or `~/.local/share` weren't good enough and this is somehow a feature. another package manager that has less features than homebrew? oh, like fink and macports - no thanks.

<comment><USER29> It would appear that your primary takeaway is that we put stuff in a different directory, for an apparently arbitrary reason. I agree, that would be silly -- if it were the case.

With /usr/local/{bin,lib,include}, how would you install multiple versions of openssl? Would you violate convention and do something like /usr/local/openssl-x.x.x/{bin,lib,include}? How do you avoid file path conflicts? When a package is built against a particular version of openssl, how do you ensure that version of openssl sticks around, and that that, upon execution of said program, the dynamic linker loads specifically that version of openssl and not one of the others?

While I encourage you to consider those questions, the short answer is "you can't". At least, not with conventional package managers like Homebrew.

Because Nix builds each package in a unique prefix (governed by the hash of all of the build inputs, recursively), the Nix package manager can use chroots (and Sandboxes on OSX) to ensure that packages are deterministic, and that each package refers specifically to the versions of the dependencies they need (dynamic libraries are fixed via rpaths and we apply patches for references to executables -- so "python -m foo" becomes e.g. "/nix/store/<HASH>-python-2.7/bin/python -m foo").

If you don't use a unique prefix per package, the problem of "how do I install stuff without worrying about path collisions amongst the multiple versions of requisites" becomes intractable. Ditto for build determinism, binary caches, lightweight environments a la _nix-shell_ , etc.

I suppose we _could_ shoehorn each package into /usr/local/<HASH>-<NAME>-<VERSION>/{lib,bin,include}, and then we could tick the "use an existing directory under /" box, but is that really better? I don't see what we gain from that, since that's already an abuse of /usr/local.

<comment><USER32> Thanks for the enlightened response to my rather curt post.

I guess my main issue with the original article was that if you don't already know what nix is, the benefit is not at all obvious, especially for the (above?) average joe for whom homebrew works fine. For a sysadmin who is sick of dependencies breaking, even when using something like aptitude, it sounds perfect though.

Although after skimming the nix docs [1] and reading your reply, I'm still not sure why e.g. `/opt/nix/` wouldn't work. Maybe it would, except for the fact that `/nix` was decided on and if you now change that, the prebuilt packages break (see [1])? Obviously, it isn't a deal-breaker, but e.g. consider an existing backup solution which might have been configured inclusive, not exclusive.

Also, I get that as a package manager, nix is in a different position than most programs, but putting stuff in `/` isn't a great precedent, and other package managers don't AFAIK.

[1] [https://nixos.org/nix/manual/#ch-about- nix](https://nixos.org/nix/manual/#ch-about-nix)

</comment></comment></comment></comment><comment><USER33> Great cliffhanger for the next article at the end.

</comment><comment><USER34> Having set up my last company doing all development and deployment using nix, moving to a new team which just uses pip/virtualenv and a "bootstrapping script" feels a little unnerving to start with.

<comment><USER35> Is there any good guides to get started on nix with python?

<comment><USER34> The nixpkgs manual has a section on it [https://nixos.org/nixpkgs/manual/#sec- python](https://nixos.org/nixpkgs/manual/#sec-python) but the key to it is that it's really mostly about managing your PYTHONPATH. You wouldn't typically be installing a python package and just expecting it to be available to a session-launched python invocation (because PYTHONPATH is not exported to the user env of a profile), instead you would probably use nix-shell or a custom- built python environment with the exact package setup you desire...

</comment></comment></comment><comment><USER36> I demoed NixOS a few years back when I was wrangling with the Haskell ecosystem.

I was pleasantly surprised, as I could rollback the entire state of my system from GRUB itself if anything went screwy.

</comment><comment><USER37> > curl [https://nixos.org/nix/install](https://nixos.org/nix/install) | sh

Stop doing this.

Look, even if you are rolling your eyes and thinking, "it's https and I'm not Ed Snowden, I think I can afford the risk for the benefit of an easy install process", what happens if curl is interrupted? Are you excited at the prospect of a half-ran install script that you didn't even look at?

<comment><USER38> No [1].

If you are installing software from scratch, you _must_ trust the https server that serves it to you.

They could publish sha256 check sums to [https://nixos.org/hashes](https://nixos.org/hashes), but you would have to trust the https server.

They could publish their gpg key to [https://nixos.org/gpg](https://nixos.org/gpg), but you would have to trust the https server.

Things would be better if we had a reasonable certificate system for verifying open source software, but we don't. There is no gpg web of trust. There is no hierarchical CA system for code signing that open source authors can easily plug into, and expect their users to verify.

If you care this much, stop astroturfing and go build a system that does better. It will be very hard work, and you will have to distribute the first version of your solution with an https server that your users will have to trust.

[1]: Ok, so maybe the instructions could be "curl <url> -o install.sh && sh install.sh".

<comment><USER39> > If you are installing software from scratch, you _must_ trust the https > server that serves it to you

This is incorrect - you are forced by `curl | sh` to trust all of the 1000+ CAs in your OS' keystore. And if you can't trust all of them (since some have given out Google certs before, you can't), how can you trust what you're getting over HTTPS?

With hashes, they are not typically served from the same domain. That's the _minimum_ level of protection for the user.

Signing with a key is another level of protection; it lets the _user_ (not the OS) decide the level of trust, and even verify the key with the author of the package via a completely separate channel.

Now the question really becomes, why _doesn 't_ the provider use the existing (secure) channels of software distribution? RPMs, DEBs, installer packages for Macs, MSAs for Windows?

<comment><USER40> > you are forced by `curl | sh` to trust all of the 1000+ CAs in your OS' > keystore. And if you can't trust all of them

If you don't trust them, they should not be in your certificate store. That's not a problem with using `curl | sh`, it's a problem with the certificate store and what the user is trusting.

</comment></comment></comment></comment><comment><USER41> What happens when packages need to store data?

For example, installing Datomic via Brew will result in databases being stored in:

/usr/local/Cellar/datomic/0.9.5206/libexec/data

How would that work with Nix? Would the data live under /nix?

And most importantly, would that data get squashed because of some kind of idempotency assumptions that Nix might make?

<comment><USER42> >would that work with Nix?

Yes.

>Would the data live under /nix?

No, Datomic will be built with another default data directory.

>would that data get squashed because of some kind of idempotency assumptions that Nix might make?

No, since data is stored separately.

</comment></comment><comment><USER43> This is amazing. As someone who hates clutter and having to use sudo for anything, Nix is just what I needed!

</comment><comment><USER44> Is there a way to install packages on user space without proot? Why does it need /nix?

<comment><USER45> You can install packages by installing nix into your homedir. But you will never get binary packages this way.

The reason is because when the software is compiled, it's stashed in the /nix directory, and might refer to other artifacts in /nix. For example, zlib.so exists in /nix/store/zlib-.../lib/zlib.so, and links to glibc.so, which exists in /nix/store/glibc-.../lib/libc.so.6. So if you want to install zlib and get binary packages, you need to first install glibc. And you need to put glibc in the place that zlib will expect it.

</comment></comment><comment><USER46> Wait... binaries inside a ~homedir/.dotfile/? Why on earth?

<comment><USER47> I believe those are just symlinks to the binaries in /nix/xxxx, so that $HOME/.nix/bin can be added to PATH.

</comment></comment><comment><USER48> Only two results about nix on windows, and not very enthusiastic ones. Too bad.

</comment><comment><USER49> This sounds exactly like what homebrew does. It also installs under /usr/local and does not touch anything else. What does nix package manager provide that homebrew does not? (from a user point of view)

<comment><USER29> Hi, I'm a NixOS/Nixpkgs comitter and package maintainer for plenty of stuff -- including X11/XQuartz for OSX.

Nope. They both do package management, but that's where the similarities end.

Homebrew packages are not patched to point at precisely the version of the stuff they were built against. For example, if you have program that dynamically links to openssl, that program is built with the expectation that the dynamic linker will be able to find e.g. libssl.dylib in either /usr/lib or /usr/local/lib (the specifics are harrier, but that's a decent approximation). If you later upgrade openssl and the ABI changes, you've now silently broken everything that uses it -- you'll now get a segfault at runtime (I've had this happen with openssl and many other libs on Homebrew, and is part of why I was (and still am) very excited about Nix).

When you compile a package with Homebrew, you're not guaranteed to end up with the same result as someone else, even if they have the same checkout of the formulae. Why? Well, each project's Makefile (or what have you) will try to run whatever's on $PATH, and poke around elsewhere on your system to e.g. automatically enable build flags (oh, luajit is installed? I guess I'll just go ahead and enable Lua scripting and link to it).

How does that compare with Nix?

Nix packages are patched so that their runtime dependencies (dynamic libraries, programs to be execed, shebang lines, etc) are locked down to the precise build that was specified as part of the package. The obvious implication here is that Nix packages can be trivially installed with differing versions of dependencies as necessary (back in the day, I wanted to play with both the Elixir langauge and the Riak DB, but they required two different major versions of Erlang. Unfortunately, I could only install one version, as the packages for both versions wanted to be placed in the exact same prefix and the filenames would overlap. This was on Ubuntu, but it applies equally to Homebrew).

When compiling a Nix package, I can rest assured that the build artifacts will be equivalent between two different machines (not bit-for-bit, but at least functionally equivalent -- excepting compiler bugs). Why? Because the build happens in an isolated environment where, as far as the build process is concerned (we take advantage of a number of kernel features on Linux (chroot) and OSX (Sandboxes)), the system _only_ consists of the packages _explicitly_ listed as build inputs -- nothing else. Excepting esoteric stuff like someone _intentionally_ trying to subvert chroots and such, if you were to put a gun to my head and tell me that you were going to shoot me if you could find a case of non-determism, I'd shrug. We're _serious_ about that whole determinism thing -- it's a core selling point of Nix, and the reason for Nix's "quirks" (the per package prefixes, hashing of build inputs, chroots, lack of network access, etc).

If the above doesn't make the differences obvious, I'll challenge you to answer some questions (the socratic method):

1\. How does Homebrew support having two versions of openssl installed concurrently? Describe the paths involved, how the dynamic linker would be guaranteed to load the respective version of libssl, etc.

2\. How does Homebrew ensure packages are built exactly the same way across two different machines (e.g. using the same version of autotools, clang, make, etc)? Be sure to explain how the build is guaranteed to not auto detect/enable stuff because of things present on my system that may not be present on your system. Note that Nix will deterministically fail if you fail to explicitly list all of its dependencies (rather than working because, say, cmake just so happened to be installed on the formula author's machine) -- so you'll need to describe how Homebrew achieves this when running a formula.

<comment><USER49> Hey, thanks for taking the time for the informative response. I see the difference now.

<comment><USER29> You're very welcome -- thanks for raising the question :)

</comment></comment></comment></comment><comment><USER50> See you all in five years when Nix is shit and we're all switching to Flurp as our package manager.

<comment><USER51> I ended up searching "Flurp" because with the current state of things, there was a chance that this was real.

<comment><USER52> Add javascript to the search. Sometimes I do that with random searches just to see the crazy things people are doing with Javascript</comment></comment></comment>


Stop Being Cute and Clever - <AUTHOR> http://lucumr.pocoo.org/2013/12/9/stop-being-clever/

<comment><USER2> > Not many languages manage to implement map in a way that ["1", "2", > "3"].map(parseInt) would result in [1, NaN, NaN]

It may seem counterintuitive at first, but it makes sense when you consider the function signatures. The map function passes two arguments; the element, and its index. The index ends up being used as the radix, which causes this sequence of calls:

      parseInt("1", 0);
      parseInt("2", 1);
      parseInt("3", 2);

I'd recommend creating a higher-order function that takes a function and returns a unary version:

      function unary(fn) {
        return function(arg) {
          return fn(arg);
        };
      }

Then you could use it like this:

      ["1", "2", "3"].map(unary(parseInt));
      // => [1, 2, 3]

I think the problem is that you assumed (not unreasonably) that [...].map(parseInt) was an eta reduction of [...].map(function(e) {return parseInt(e);}). Unfortunately it's not, which caused some unexpected results. This would happen in any language where the map function passes two arguments and the string-to-integer function has an optional second argument.

Consider the following Ruby (this is a really weird way to do it in Ruby, but I'm trying to make the method signatures match):

      # This lambda has the same type signature as JavaScript's parseInt
      parse_int = ->(str, radix = 10) { str.to_i radix }

      # This converts the lambda to a block and calls it with each element
      # from the array, along with its index.
      %w[1 2 3].map.with_index &parse_int
      # => ArgumentError: invalid radix 1

As an aside, I'm a recovering JavaScript hater as well. I've mostly made peace with JS, though there are still parts of the language that make my skin crawl (See this gist for my favorite example: [https://gist.github.com/actsasbuffoon/7323667](https://gist.github.com/actsasbuffoon/7323667)). That said, there are some parts of JavaScript that are genuinely great. I recommend reading JavaScript Allongé by Reginald Braithwaite. I'm scarcely exaggerating when I say the book completely changed the way I look at JavaScript.

<comment><USER3> I don't know a single language where the standard map function passes two arguments instead of one. Python has the starmap function as an alternative in case someone really needs that.

<comment><USER2> I agree that it's probably a bit unusual, and likely owes to the fact that all JS functions are variadic and ignore arity mismatches. Ruby's procs behave the same way, though its methods and lambdas are more traditional.

</comment></comment></comment><comment><USER4> The typeahead.js library should use a binary search of a sorted string array. A trie of string prefixes would be more elegant, but it would probably have worse data locality and heap fragmentation.

And instead of searching the entire database for every new prefix (e.g. "s", "sa", "san", "san f"), the API could return a stateful query object that could be more efficiently refined.

</comment><comment><USER5> Linked [0] "Time Scheduler" is pretty cool but it crashed twice on Chrome, and also the time brackets can't be dragged. I had an idea a couple days ago for this exact 'app'; if it was a little more accessible/reliable, I might actually use it.

[0] - [http://timesched.pocoo.org/](http://timesched.pocoo.org/)

<comment><USER3> It was quite literally a weekend project and I did not want to waste much time making custom controls. The sliders are jQuery's UI sliders and as such not particularly well suited for what this should do. Might spend some time replacing this with something better.

As of why it would fully crash chrome I'm not sure. Maybe it runs out of memory? I think it wants about 80MB with DOM and everything and builds that out of 3MB of payload (which is about 20MB more than the google search page).

//EDIT: code is also on github under a BSD license in case someone wants to work on it: [https://github.com/mitsuhiko/timesched](https://github.com/mitsuhiko/timesched)

</comment></comment><comment><USER6> Good article. And I admire your cute and clever selection of fonts. No, seriously.

<comment><USER5> What a very cute and clever thing to say.

</comment></comment><comment><USER7> > _" For this project I obviously used jQuery which is impossible to avoid > (and why would you) but also AngularJS with a bunch of UI components > (angular-ui and some bindings to jQuery UI)"_

Lol. Is this author trolling us? I don't know anybody at Google who uses jQuery, and Angular makes it particularly easy to avoid.

Cute and clever indeed!</comment>


Hacking up a fix for the broken AppleTalk kernel module in Linux 5.1 and newer - <AUTHOR> https://www.downtowndougbrown.com/2020/08/hacking-up-a-fix-for-the-broken-appletalk-kernel-module-in-linux-5-1-and-newer/ <comment><USER2> _" In this case, someone submitted a patch 10 months ago and was asked to tweak the patch. Then life got in the way (I totally understand), and he finally tried again about 9 months later...

He was also asked to tweak the second patch because of a minor style issue (which I also understand). A third try at submitting the patch hasn't been attempted as of this writing."_

I've been there. I understand both sides, but it's a bit frustrating from the _" outside contributor"_ standpoint sometimes.

For example, I use git quite a lot, but not GitHub. As a result, a pretty simple _" couple of lines"_ fix I tried to contribute remains uncommitted because I wasn't able to format things in a way that made the target project folks happy. The pull request remains sitting there. Though I still occasionally get "thank you" messages from people that accidentally find and use it.

So, some number of folks lose out on a good fix roughly because what would take me several hours, but take someone else a few minutes, just doesn't get done.

Some sort of web based _" force this minor tweak for a pull request"_ feature might have a decent upside.

<comment><USER3> Is there some kind of cultural reason in the process of submitting patches to linux that someone else couldn't come along and, while giving due credit, do the style fixups on one or the other of the patches themselves and submit that as a v3/v2?

Like, why should every attempt start from scratch as people lose interest?

<comment><USER4> That's exactly what I was mulling over in my head today (I'm the author of this blog post). If there's some way to simply provide a v3 of this patch while leaving the credit with the original author, I'd love to do it. I just didn't want to step on anybody's toes, and I don't know the etiquette. I think this kind of thing happens more often than we realize. I've seen similar situations before on other drivers.

<comment><USER5> Download the raw patch from lore.kernel.org, apply it with "git am", fix up the commit message with "git commit --amend", add your "Signed-off-by" below the existing one, submit with "git-send-email" or "git format-patch" \+ "msmtp".

That way the commit author remains the same because "git format-patch" includes a "From:" line in the message body which "git am" will interpret as the commit author when the maintainer applies the patch.

Your Signed-off-by is necessary to keep the DCO chain intact: [https://www.kernel.org/doc/html/latest/process/submitting- pa...](https://www.kernel.org/doc/html/latest/process/submitting- patches.html#sign-your-work-the-developer-s-certificate-of-origin)

However, that is now done: [https://lore.kernel.org/netdev/086b426f44bc24360cc89476fe18d...](https://firstname.lastname@example.com/)

Thank you for the report.

<comment><USER4> Thank you! That is very useful to know for the future.

</comment></comment></comment></comment></comment><comment><USER6> If you want this fixed forever, a regression test needs to be created for it. I have no idea how this works for the Linux kernel, but Google search reveals this project:

[https://lwn.net/Articles/625969/](https://lwn.net/Articles/625969/)

</comment><comment><USER7> That was a really fun debugging ride. I've never really had to debug kernel stuff before, so I also learned some things. Then you topped it off with some serious hacks. You sure know the way into my heart. Thanks for writing about it!

While I don't have a personal use for AppleTalk support, it makes me happy that support for old protocols lives on.

</comment><comment><USER8> Ah, stripping the signature from a binary you have modified. Glad to hear that others get to enjoy this previously mostly macOS-unique diversion now ;)

</comment><comment><USER9> _The problem here is that Ubuntu's kernel modules are signed._

It's easy to bypass, as the article shows, but also sad that this user-hostile practice has spread to Linux. I'd expect this for Windows or Mac, but not Linux.

<comment><USER10> It's not a user hostile practice if you have control over it.

Do you consider signing keys in apt packages to also be user hostile?

</comment></comment><comment><USER11> Is there an advantage to enable AFP on my NAS?

I have a Macbook but smb seems kinda shady there.

<comment><USER12> Newer macOS prefers SMB3 over AFP, even for time machine backups. There's no reason to use AFP anymore on a modern Mac.

<comment><USER13> And you don't even need the AppleTalk module for AFP. (I don't think modern macOS even supports AppleTalk anymore.) AppleTalk only comes into play when you're dealing with _really_ old Mac systems which didn't support AFP-over-TCP yet.

<comment><USER14> What hardware do you use to connect the two?

<comment><USER15> All the things described are running over ethernet, there isn't any special hardware.

The kernel module implements the stuff described in the sections on EtherTalk and AppleTalk phase II on this [1] wiki page.

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

<comment><USER14> So just a LocalTalk to Ethernet bridge?

<comment><USER15> No, the old Macintosh uses its ethernet controller to connect to the Linux server, LocalTalk isn't used.

<comment><USER14> I see.

When the article mentioned AppleTalk I envisioned a way to get files off of my old SE using something that hooked into the ADB networking ports.

<comment><USER4> That too is possible (serial ports though, not ADB). There are existing LocalTalk-to-Ethernet bridge products from long ago that are getting harder and harder to find. I was actually working on a new one for a while but ran out of the time/motivation to finish it up. [https://mac68k.info/forums/thread.jspa?threadID=275&start=0&...](https://mac68k.info/forums/thread.jspa?threadID=275&start=0&tstart=0)

<comment><USER14> Great info, thanks

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> AppleTalk works fine on NetBSD. Doesn't require some long process to fix anything that breaks.

<comment><USER15> My point was that maybe the Linux development process isn't a good match for niche areas like this. With NetBSD+pkgsrc, I can (and have done) just commit fixes to the kernel and userland AppleTalk code directly without needing to go through gatekeepers who may not have used this feature.

The blog author might want to look at a recent pkgsrc patch to netatalk 2.2 that makes it work with current CUPS.</comment></comment>