Tell HN: Take My Idea - A Social Calendar - <AUTHOR>

I was just now reading through the comments in the ask HN thread about a Facebook alternative and read a reply saying that there lacks a service that really nails event scheduling, which reminded me of an idea I've had for years now that I've yet to see implemented properly. I won't have time to do much of anything in grad school for the next 4 years, so hopefully one of you will find this interesting enough to implement, because I'd definitely use it.
The goal is to make the ultimate personal and social calendar. Events are suggested and committed to my calendar manually, via my groups/social circles, and suggestions from friends. The user joins a variety of groups, anywhere from his economics class group to the Justin Bieber fan club, and is also member of social circles that him and his friends have created - "school friends", "research team", etc. Each group/circle has their own page for group discussions, etc. Any time an authorized group member or friend in a social circle posts an event, it pops up on in the appropriate slot on my calendar. I can then choose to attend/maybe/not attend, comment, and share the event with others, all directly from my calendar. For every event that has occurred, an event page is created for photos/etc and only viewable by group/circle members. Now, I think this would be pretty huge if implemented correctly. The way I see it, the user logs in to their big calendar decorated in flashing notifications of new events occurring or being suggested. He/she also fills in personal events - "study in library"- and can organize his/her social life around that. Sharing events would be big too, I think.
What problem does it solve? Well, one thing I've always hated about Facebook is that it puts all my friends/acquaintances/etc on the same level, and that's not how it works. I want to rank my friends, be part of different social circles, because that's how I operate. With one group of friends I may act totally different than with another. And so a big part of this idea is giving users the freedom to create their own social circles, and define who they are by the circles they join and groups they're members of, and giving them the ability to plan their lives around that. I feel that more closely resembles how we act in real life. We attend a party with one circle, and go to the company dinner with the next, and there's little to no overlap most of the time; and a lot of the times we keep those two circles separate with a wall of privacy, for many obvious and various reasons. With this idea, you get that privacy, that control to choose which circles you're a part of, how to communicate with them, and how to plan your life around them.
I know this is something Google Calendar might be trying to accomplish, or what Kiko might have been intended for, but I just don't feel it's been done right. Socializr somewhat aims at doing that, but that site is crap - I've tried it. Biggest competitor is Facebook, clearly. Not sure how you'd position this properly to beat them out; I haven't thought that far ahead. <comment><USER2> Eventing, like college textbook trading, is a perennial tar pit. That's not to say you shouldn't try, but see how and why others have failed.

One of the problems I see with what you describe is the amount of management that I'd have to do in order to make it work, since I have different social circles that I need different privacy settings on and each have their own page for group discussions, and then you can choose attend/not attend, etc. For me, it'd seem like a lot of time and work I don't want to be spending organizing.

</comment><comment><USER3> This is very similar to an idea I have had in my head for a while now (I put it up on the recent startup ideas Google spreadsheet). The main angle that I thought would be to have it built around a recommendation engine that tries to actively show you things you may like to do with friends, family, etc. The main key innovation I had in mind was trying to use images to come up with recommendations, ie if you post pics of mountain biking it looks for upcoming races etc. If you like the suggestion you can share it with your friends and create an event for a group.

I reckon if done in the right way (ie good privacy approach and user control over it), you should be able to make money through links to the events (although I think the revene model would need to have the right incentives ie aligned to suggesting the best stuff).

And the image stuff is hard - but would be pretty great if done right!

</comment><comment><USER4> > I want to rank my friends, be part of different social circles, because > that's how I operate.

That's actually a really good point, you've hit the nail on the head with that one.

<comment><USER5> Going one step further, it would be very nice to be able to supply information to different users based on their group. This is another thing which is lacking in Facebook. In fact it is something which is currently lacking from every social network (that I'm aware of at least). Everyone scrambling to build the next Facebook in the wake of the recent debacle may want to take some of these ideas.

For example, in your "About Me" section, with your co-workers you may want to say that you enjoy programming and playing around with server configuration whereas with your old college pals, you may want to say that you miss the days of binge drinking and getting laid. You would not want either group to see the other explanation of who "you" are.

Specifically related to this idea, you may want to have enable your college pals to see that you are attending "Remembering the good ole days kegger reunion party" while you may want your co-workers to see that you are attending a conference on some technology. You probably do not want them both to see the events that the other sees.

On a basic level, I like how Google Voice handles this. You can specify a certain voicemail message to be heard by people who are not in your phone book, and different voicemail messages for any groups you have created. This allows me to have a silly message played only for my friends and not worry that an important call will come in from an unknown number and get my silly message. This concept expanded to any and all properties of a social network seems crucial as far as I am concerned.

<comment><USER4> I think the dutch 'hyves' has something like that.

</comment></comment></comment><comment><USER6> This is exactly what we are doing in toostis.com. We try to create a one-in- one tool for sharing this kind of information with your interest circles (that we call "tribes"). Currently when you log in and start attending events the recommendation algorithm learns about different social groups you belong to.

One needs to consider three approaches of forming an interest circle: shared (an explicit list of members), individual (each user maintains several lists of his friends) and automatic (extracting subgraphs of user relation according to attendance).

What we are currently willing to provide is the combination of them all. Automatic extraction is fun to play with, but you always want more control over it. We are also preparing to launch something similar to the shared model, where you could subscribe to an organizer which is basically a group of related events.

<comment><USER7> Sounds great:) i'll try it!

</comment></comment><comment><USER8> I am able to do this with Linkedin - my connections are tagged into priority groups. Selected Meetup, Yelp, Facebook and e-mailed events go to my public calendar: <http://sites.google.com/site/aurametrix/events> (It can be easily done with Google Calendar API) Of course, this could just mean that I am not in your target market.

</comment><comment><USER9> Is it a product or a feature? I don't know, but that may illustrate the heart of the problem, and the difference between Kiko and Facebook.

I think startups have been trying to do this since Web 1.0.

Maybe a freemium model? Target businesses? [Though they use Outlook.]

BTW don't let your friends see that ranking! ;)

<comment><AUTHOR> I think it could stand alone as a product. As far as people trying this from Web 1.0 days - I'd say that was just a timing issue.

</comment></comment><comment><USER10> <http://thesponty.com>

</comment><comment><USER11> Is this demanded enough that you'd actually pay for it? Don't wanna sound like a jerk or anything, just wanna see how _big_ the demand is.

<comment><USER12> The CPMs on event related things might be high enough to just rely on ads.

<http://mixergy.com/evite-harry-lin/> "effective CPM, when I left the company, we got, we'd driven it up, the effective CPM was just under ten dollars. And on certain pages, certain classes of pages, we enjoyed a one hundred dollar CPM, on all those ads"

<comment><USER13> I can imagine that, for example, TGI Friday's would pay a decent amount for an ad on a meeting request to eat out at Chili's or Ruby Tuesday's.

<comment><USER11> Keep in mind that it's really hard to approach these types of companies. And when you do approach them, you'll have to have a large audience.

</comment></comment></comment></comment><comment><USER14> Meetup.com has some of this though may not allow totally secret/private groups/events.

</comment><comment><USER15> Checkout the Tonido workspace application <http://www.tonido.com>.

You can create multiple social groups and have a calendar for each group as well.</comment>


A Much-Hyped Covid-19 Drug Is Almost Identical to a Black-Market Cat Cure - <AUTHOR> https://www.theatlantic.com/science/archive/2020/05/remdesivir-cats/611341/ <comment><USER2> I wonder what other miracle cures are out there that big pharma hasn't brought to market.</comment>


Three Tribes of Programming (2017) - <AUTHOR> https://josephg.com/blog/3-tribes/ <comment><USER3> This is fantastic and surprisingly close to how I tended to explain computer science to students and graduates:

In Computer Science, there are 3 kinds of problems:

1\. The problems that Math gives you: algorithms, data structures. These are the problems you think you're going to solve and sometimes you do, but often we just need a few really smart programmers to solve this and the rest of us can just use those solutions.

2\. The problems that Physics gives you: hardware, device drivers, network latency. Sometimes you do systems programming and work close to the hardware. But once again, once one engineer has solved this, most of the time we can just use those solutions.

3\. The problems that other engineers give you.

And that is where you're likely to spend most of your time: gluing APIs together, reading code and documentation, and arguing about code formatting.

This is why in so many ways computer science is a social science. Certainly "software engineering" is. Everything you do is going to be about communication. When you write code, you're not just communicating with the compiler and the machine, you're communicating with other engineers. You're going have to craft smart documents, emails and collaborate. Any nontrivial solution will require these skills, so you better start investing in them.

<comment><USER4> Makers who don't understand 1 or 2 often create slow or insecure code that often results in clear user impact.

For example, I've seen diffing / recomputation code operating in O(n^3) or O(n^2) where O(n) or O(1) is possible and necessary for reasonable performance. I've also seen extremely poor use of network requests (multiple serial requests) that happen because the developer doesn't understand network latency and networking performance (in this case with a single data center in the world).

<comment><USER5> You can't make it better until you make it work.

<comment><USER6> But you can start off with an architecture that requires a full rewrite to make it better.

<comment><USER7> The number of times I've seen this sentiment end in a project being late or never ship is easily 10x more than the number of times a project became crippled later because of performance issues.

<comment><USER8> Improving performance isn't the only way you can make something "better". A system could be architected in a fragile or rigid way that makes extending it or adding new features extremely difficult without a rewrite.

I can't tell you how many times I've seen people "make it work" and create a mess that has to be rewritten later with much greater difficulty than if even the slightest amount of forethought had been given before hand.

</comment></comment></comment></comment></comment></comment><comment><USER9> > You are a maker. You build things for people to use

I am a maker. I build things for people to use _and maintain_.

This puts me at endless odds with the hackers. All three groups suffer from Novelty Seeking and Risk Taking (aka Adrenaline Junkies), but the hackers seem to get it the worst.

My hatred of tools that fall apart the third time you use them goes back to childhood. I don't want to put my name on any of that shit.

And yet...

I'm also quite comfortable and capable performing emergency field repairs on objects real or virtual. I think the difference is I know this is temporary. Single use. When we get back to where there are tools and supplies, we should take it apart and fix it for real. The hacker declares victory and moves on to the next problem.

Where I disagree with the breakdown here is that the makers are also poets. It's just that the medium is different, so it's hard to compare. I think it's safe to assume that the same is true of the hackers.

<comment><USER10> At the risk of just jumping on a single point:

> I build things for people to use and maintain.

Maintenance. Maintenance. Maintenance. That's the key. It is the lack of that mindset which is killing our home world. Ultimately, it's just expression of not having to pay for your externalities.

It also kills software dev. If software devs were actually held to account for their legacy (software, hah), then we'd have a lot less shitty (and shitty+, shitty++, etc) software.

<comment><USER11> In context of this, I've always been thinking that software engineers should be held way more liable -- like those of the physical engineering disciplines. In order to enforce good software engineering practice, there must be either incentives or disincentives (carrot or stick) that have clear consequences on the engineer himself/herself. Otherwise there is nothing stopping them from producing bad work. It may be unintentional and the code perhaps is simply sloppy (but still works).

This is just a thought (and may be unpopular): practices differ wildly from one company to another, and between enterprise software vs hacky side-projecty node apps, nonetheless, maybe it's time to standardize software good practices across the entire industry and enforce them, making them not just "good" practice, but mandatory practice.

<comment><USER12> If you create liability traps, the price of everything goes up and many things do not get made at all.

It's like saying that tents shouldn't exist and people shouldn't use bicycles even though they are great tools for certain jobs.

Nobody wants to pay for space shuttle levels of software engineering. It costs a lot in labor time to produce less results.

</comment></comment></comment></comment><comment><USER13> This post is nice, but...

Rich Hickey and Bret Victor here are squashed into overly simple (and/or wrong) categories whose descriptions go like "the best programs [...] formally prove correctness" and "beautiful code is more important than beautiful UI". Both have been very vocal against these points.

Jon Blow is definitely not (just) in category 2. "But one of the reasons his last game (The Witness) took so long to write was that he wrote his own engine instead of using something off the shelf [...]. I understand". He'll probably have a heart attack reading this deep, deep assumption that creating his own thing slowed down his unique game rather than enhanced it.

As someone who does OCaml (and who maintains ReasonReact), shoving it into the category of "poetry is more important than execution speed" and "code over UI" is exactly what we're going _against_. It sucks to emphasize pragmatism, compile & runtime and UI, only to be shoved back into the "poetry" category.

I get a weird feeling criticizing a blog post that mostly gets the right idea across but then goes e.g. "don't worry, we get that you're a poet and care more about that than real-world execution and we empathize with your different perspective" or "we get that you don't prioritize writing simple beautiful code". Like, I _do_ care and these folks _don't_ abide by what you're describing. There's gotta be a name for this.

<comment><USER14> Thanks. Author here. I mean, generally I agree - but, any generalization will always be a bit overly general and reductive. The point of this article wasn't to try and make a formal taxonomy; just express an intuition. If I were to revise this article now I think your point is what I'd change about it - <USER2> mean, all of us can embody all of these core motivations. (Although I'm not sure we can hold all of them at the same time easily, and I think they're in tension within us). I'm also sure Rich Hickey, Bret Victor and RMS are all more complicated in person than how they're perceived in public.

But extremes are useful to define a scale. In your work on ReasonReact, how much time do you spend thinking about the ergonomics of the users? It sounds like a fair bit of your time and mental cycles go into that. So it sounds like you sit somewhere between the extremes of those camps. I don't think I would have been able to say that sentence without defining overly steriotyped, extreme positions.

And there's lots of interesting thoughts that follow from that - like, what happens when those motivations come into conflict? Eg, users care about feature X, which is going to be really ugly to implement, but desired. What do you do?

<comment><USER13> Nice to see the author here. Note that I still do appreciate the post. You're also right that establishing simple, potentially extreme profiles isn't the goal but does help with understanding. The nuance I wanted to convey was lost while describing the folks above; I don't think I have much more to add about it, though here are some related thoughts.

My personal answer to your question for me is "It depends. Lemme check what feature we're talking about here". My mentality isn't "nice, an occasion to exercise my principles", and judging from the talks two of the three aforementioned people gave, I'm positive they adopt a similar attitude: happen to take a stance, but don't actively seek it.

When I go over some codebases, I often find flavors of code that smell like someone tried too hard taking a stance. E.g. code that overly future-proofs, code that definitely needs less ad-hoc-ness, code that prematurity optimizes in an obviously naive way, code that tries too hard to use a functional/OO concept, etc. Note that these all belong to different categories in your post, but one thing they share is that they all feel like p̶e̶o̶p̶l̶e̶ ̶w̶i̶t̶h̶ ̶d̶i̶f̶f̶e̶r̶e̶n̶t̶ ̶p̶r̶i̶n̶c̶i̶p̶l̶e̶s̶ ̶s̶l̶a̶p̶p̶i̶n̶g̶ ̶m̶e̶ ̶i̶n̶ ̶t̶h̶e̶ ̶f̶a̶c̶e̶ ̶w̶h̶i̶l̶e̶ ̶l̶e̶c̶t̶u̶r̶i̶n̶g̶ ̶m̶e̶ ̶a̶b̶o̶u̶t̶ ̶h̶o̶w̶ ̶t̶o̶ ̶c̶o̶d̶e̶ folks shoehorned principles back into the project rather than the other way around.

So an alternative way of categorizing things is whether you go from the principle to the project, or vice-versa (aka whether you go from abstract to concrete or vice-versa). A result of that is that Jon Blow and Rich Hickey end up in the same category while Bret Victor and Alan Kay ends up in another (without speaking too much for themselves, and thanks to the nice confluence that is HN, I'd say that this categorization has been empirically verified if you check these people's discussions with each other).

Also, as computing domains grow, you'll probably need to create many more categories if we cross-cut the way you did in your blog post; on the other hand, this alternative way of cross-cutting, I believe, would stay constant. But hey, that doesn't mean your way of cutting it is wrong. The alternative one might be simpler but more abstract.

Maybe this explains why many people in this thread debate on whether the cross-cutting is fair. If you ask the alternative question "which direction do you work from/to", you might get some better partitioning.

</comment></comment></comment><comment><USER15> I've come to almost the same conclusions as the author.

\- The first tribe is mostly coming from Maths background, their favorite performance measure is the big O notation.

\- The second tribe is coming from Physics/Engineering background, their favorite performance measure is expressed in SI units, most often a duration.

\- The third tribe is coming from everywhere else, and their favorite performance measure is customer satisfaction, or in other words dollars.

</comment><comment><USER16> I think this is a good article, but ironically I think all three tribes would actually describe themselves the same way many times (whereas this article implies they'd describe themselves, or what matters to them, differently).

To use an example from the article, I think Jonathan Blow would absolutely argue that he wrote his own game engine _because it was best for his user_. Whether you agree with him or not, he is whole-heartedly convinced by his assertion that it could not be done in Unity trivially. Having listened to him a fair deal, and his feelings on games (vs. programming of games), I very much believe that he cares a tremendous amount about the _experience of the game_ above quite possibly all else. So, while you can certainly argue that the way he chooses to implement that goal is misguided (I don't believe this, but an argument exists), I don't think its fair to give "The UI is more important than anything else" to the third camp and not his. I think he agrees with this statement, and feels that what gets you the best UI in a game happens to be low level work (to avoid frustrating lag, etc.).

Similarly, I think Bret Victor might take issue with this as well. Much of his work is centered on creating innovative UIs to help people think, and often against the (current) abstract ways of representing knowledge. In particular, from the maker perspective, he cares deeply about empowering people to make things -- less so I would say than some sort of mathematical purity.

All this to say, I think there may be less difference in goals than we think, and more difference in what we believe influences those shared goals.

<comment><USER17> Re: Jonathan Blow, I don't think it's a stretch to say different/better tools can have a profound effect on the industry and resulting games as a whole. As someone in games, quite a lot of software has had far-reaching impact that influenced games on a noteworthy level. Speedtree, Zbrush, and the substance package have basically defined modern AAA art assets. And while the major public engines have had a profound impact, even things like Source mods, RPG Maker, and Game Maker have had a profound impact in terms of enabling development of breakout indie hits or introducing people to game development as a whole who are now in the industry.

So I don't think it's a stretch to say a performant alternative to C++ with a game engine out of the box could have an impact which has broader reach than speedier development of his next game.

<comment><USER18> One of the most played games of all time, Counterstrike, started off as a mod.

</comment></comment></comment><comment><USER19> I think a fourth particularly important tribe is missing ... the _Modeler_.

This a programmer that _models_ systems (real or imagined) into working computer applications. I suggest that in many cases, the other tribes largely exist to support the creation of these systems.

This includes the systems that track and support your money, taxes, utilities, services, scheduling, reservations and insurances amongst others. The systems that enable you to purchase and consume things and have them delivered within the context of a whole supply chain.

It also includes the modeling of control systems, from the software that runs an elevator, to an airport baggage handling system, to an automated warehouse.

Typically in these, the challenge is in abstracting the _problem domain under consideration_ \- the determination of _what_ to produce, rather than _how_ to do so.

Examples: Kristen Nygaard, Peter Coad

Favorite Languages: Java, C++, C#, Smalltalk

Hangouts: Currently suspended due to the focus on problems in the computer and data sciences, and computing infrastructure.

</comment><comment><USER20> Fourth Camp: You are a tinker and a smithy. You build tools for other developers to use.

* Source Code: Your code is clean enough for you. Your top priority is thorough documentation and intuitive API design.

* Execution: Critical around bottle necks, like large batch processing and build times, otherwise it doesn't matter. Iterate and optimize based on feedback from your devs.

* Correctness: The program should function exactly how it's described to function in documentation. If something unexpected happens, the error is clearly and concisely exposed to the developer so that they can understand what _they_ did wrong.

* UI: Usually not a thing, but when it is, your users are developers and they _should_ be able to figure it out ...

Personally, I'm a gamedev, super in Camp 3. I've worked with a lot of folks who could care less about product and polish, but love making their colleagues lives easier. It's pretty similar to Camp 3 in the sense of "making for your users", but the skillset and priorities are very different.

Favorite languages: TypeScript

Hangouts: npm, github, anywhere open source code is distributed

<comment><USER21> I was going to post a comment like this if I couldn't find one! As a DevOps- type engineer who writes mostly internal tooling - I really couldn't relate to any of the 3 camps that the author mentioned, but I can relate to what you wrote. Tooling for developers and opearations / SRE types in general all follow a similar paradigm to what you mentioned.

I'd add to add: Fav languages: Whatever is already installed and easy to deploy and maintain/debug on your target system. For linux systems, this might mean Python, Bash, Go.

Additional Hangouts: Forums about AWS/GCP/Azure tooling, Hashicorp projects, Config Management Software projects (ie, ansible)

</comment></comment><comment><USER22> I take issue with him blanket categorizing Rich Hickey and clojure (spelled closure by him none the less) in the first category along the same lines as haskell. These languages are quite different in almost all respects minus being functional. While the focus of clojure is on simplicity and expressiveness as the author does mention, it was fundamentally created to be a builders language and for getting stuff done fast with minimal complexity and headaches. I think it is actually a perfect mix between the first category and the third category, which is why I love it so much.

<comment><USER23> There is a large overlap in ideas between Haskell and Clojure.

You will also find that many of the people who are interested in Clojure are also interested in Haskell and vice-versa.

In fact, they share enough that it causes a tension because it is a little "too close for comfort". i.e. the concepts they share are quite strong, and the concepts they differ are stark by virtue of being polar opposites.

No, they aren't they same along _every_ axis, but they share enough axes that the crossover is quite palatable.

</comment></comment><comment><USER24> I feel like I can relate to all of the tribes' value systems, depending on various things, one being time... time of day, time spent on a project, time in my life.

I've come to view many supposed divisions between people this way. There aren't homeless and successful people, so much as there are people that are homeless right now, or people making lots of money right now. People can certainly swing between both. Nothing is forever.

I find this perspective helps me to appreciate more my present situation in life, as well that of others.

Getting back on track, we should find value in the diverse perspectives in programming and find things to learn from them. One of my pet peeves is the programmer who does not have a learning mindset. That toxic behavior transcends the divisions laid out in the article, and is to everyone's detriment.

</comment><comment><USER25> When you take all three to extremes you get problems, but when you take the third to an extreme you get problems which hurt other people.

Extreme mathematical programming is turning theorems into code; Metamath is an example of this, as is Coq. Nobody uses this code because it isn't meant to be used outside of a mathematical context.

[http://us.metamath.org/index.html](http://us.metamath.org/index.html)

Extreme hardware hackers are either designing missile guidance systems or mirrors which turn your face into a plot of its Fourier transform. If their code explodes, it's either doing so in accordance with a design document taller than you are or it isn't a problem because exploding mirrors are even more fun than the normal kind.

Extreme maker programmers, as the site says:

> Taken to the extreme, this world view doesn't value the beauty in the > engineering itself.

Taken to the extreme, this group actively derides good design because good design takes time and Real Artists Ship. Real Artists Make Deadlines, too, and Real Deadlines Are Set By Marketing. You end up with janky crap that looks good but leaks your password to anyone who breathes on it, as sold by people who think being proactive with lawsuits is a good substitute for keeping your data secure. Security Through Suing Anyone Who Says It Isn't Secure, in other words.

</comment><comment><USER26> Bah, I love Lisp (particularly Clojure), have used (and rather liked) Ada in the past, but I'm not sure I'd consider myself in the first group: "Applied Mathematics."

I fancy myself more of a maker (I like making useful software) who happens to dislike like Python and Javascript. And also Java. Because the lot of them are inelegant and I hate reading and writing them.

</comment><comment><USER27> I believe this is true in all fields, not just programming.

\- Tribe 1: the art component wins.

\- Tribe 2: the science component wins.

\- Tribe 3: the business component wins.

Your life is easier when you belong to tribe 3. I also believe that you can't choose your tribe.

<comment><USER28> I don't think that you can't choose them, to me which tribe you consider yourself in reflects your ideals in software, and that may change over years.

<comment><USER27> Your tribe represents your personality. While I believe that belonging to tribe 3 could make my life way easier, unconsciously, I'm always leaning to tribe 1. I could resume my life with this sentence.

</comment></comment></comment><comment><USER29> Similarly, I think there are only three versions of software.

Version 1 is what you write fast, to ship it quickly. Corners are cut. It isn't even held together by duct tape and baling wire. It is glued together with bird spit. But it gets the crucial first dollar of revenue. Version 1 is programmed by hackers.

Version 2 is what you write more slowly, painstakingly, to replace version 1 before its innards inevitably spill out onto the pavement. Version 2 is paid for by version 1, but is programmed by the math-poets, the software "engineers". It is very elegant and clean, but doesn't always do what the customer needs. There is zero technical debt. People weep when reading the code, it is so beautiful. But it still doesn't export the management report to Excel yet.

Version 3 is what you get after version 2 has been in production so long that many of the conscious design decisions introduced by forward-thinking architects have been patched out and replaced with simpler things that just work, and are easy to maintain. The ultimate goal of version 3 is to replace itself with a shell script, and then take a nap until a new requirement or feature request comes in. It does everything the business wants, but everything is a massive wad of cruft, and there are legacy bits that no one wants to touch.

The number reported by the software has nothing to do with this. A lot of software never gets out of version 1, or goes straight from 1 to 3, or skips 1 and starts at 2.

</comment><comment><USER30> What a delightful piece of writing! The three catagories really seem to fit. It explains the frequent arguments about electron vs native, new JavaScript libraries and battle tested C. Wonderful and insightful.

</comment><comment><USER31> > I did a Haskell short course late last year and I challenged the main > instructor. I told him "this is all well and good, but I bet I can still > make useful software using my practical languages faster than you can". He > said no way - using haskell he was convinced he could implement anything I > could implement, faster and better and with less code. We didn't test the > claim - but I still wonder - is he right?

OK, here's a problem. Read a file of text (the name is to be passed in as a command-line parameter). For each line, if it begins with a number, print out the number.

I'd use Perl, and it would take me one or, at most, two minutes. It would take me seven lines, only because I put my curly braces on their own lines.

Now, I picked a problem that is a better fit for Perl than for Haskell. But that's kind of the point - there _are_ problems that are a better fit for other languages than for Haskell, and when you hit one, you're better off writing the program in a language that fits better.

<comment><USER32> Seven lines is even a bit much. You could do it all on the commandline if you don't mind a bit of ugliness, and all Perl programmers should be used to some ugliness.

      perl -ne 'if (/^(\d+)/) { print $1, "\n" }'

Put the list of input files at the end of the line.

<comment><USER33>
        grep -oP "^\d+"

</comment></comment></comment><comment><USER34> The article claims that most professional software engineers are "makers" \- people who build things for other people to use. I would put myself in this category, but I really struggled when I was a professional software engineer because the job seems to be set up for "poets" and "hackers", not for "makers".

Once I've finished building something, as a "maker", I want to be involved in communication with customers and to see how my work is being used. If I've done the hard work of programming something that's useful to others, the reward I need is to see how useful they are finding the thing I've made.

However, for a professional developer the reward for finishing a programming task is just "more programming". I can see how this would appeal to "poets" and "hackers" \- it gives them the opportunity to "write more poetry" or "do more hacking" \- but not to "makers".

</comment><comment><USER35> I don't buy this.

I am a mathematician who makes things and uses math to understand how the code executes. Execution is not an implementation detail to me.

<comment><USER36> Instead of thinking of them in nice ways think of the by their pejoratives. Architecture Astronauts, Premature Optimizers and script kiddies. You personally are more of a premature optimizer than an Astronaut. Makes sense that there would be lots of mathematicians and physicists in the optimizers. I'm an Astronaut mostly myself.

<comment><USER35> Me personally?

I think it's weird as fuck that you are telling me what I am.

</comment></comment></comment><comment><USER37> Clearly these camps are meant to represent extreme points in the developer space. It's not meant to pigeonhole all developers into one and only one of them. Of course most people sit somewhere between these three camps.

</comment><comment><USER38> I don't know all of the examples cited, but bringing up Bret Victor in the sentence immediate following "Beautiful code is more important than beautiful UI" surprised me.

Up and Down the Ladder of Abstraction is still one of my favorite examples of an interactive webpage, and is beautifully elegant in how it integrates with and supports the text.

[http://worrydream.com/LadderOfAbstraction/](http://worrydream.com/LadderOfAbstraction/)

It's cleanly designed as does exactly what it needs to. Hard to beat, IMO.

<comment><USER39> Except that I can't scroll the page, because the car-driving illustration at the top hijacks the arrow keys.

</comment></comment><comment><USER40> Bret Victor seems badly miscategorized. He obviously cares more about people than code and validates his ideas with prototypes written in javascript. I would place him squarely in tribe 3.

</comment><comment><USER41> I'm clearly primarily a maker: I make applications for users, mostly websites, and I care about them being easy to use and useful to the user. I also care about easy of maintenance, and therefore about clean code.

I notice I do strongly identify with the Poet/Mathematician, I'm just not one in practice. I do love elegant code, algorithms, data structures, code that's concise, logical and easy to read. I love that many programming languages have become more functional. I wish I could do a project in Scala. I wish I understood Lisp.

In the end, though, I don't care as much as the real Math/Poet. I don't care for Scala's over-the-top Turing-complete type system. I don't care for proof of correctness. I care that my code works and looks good and is easy to maintain, and joyful to work with, and those are practical matters for makers.

I also appreciate the work of hackers, but mostly because their compilers and VMs and OSs make it so I don't have to worry about those things. I've programmed in C, but I love not having to worry about memory allocation anymore. I want my algorithms to be efficient, but I don't pretend I can reinvent an existing algorithm and implement it better than the standard library has already done for me.

So I don't see the strife, I see different roles. Makers make the end-user applications, but to do so, they use languages and programming principles designed or influenced by the Math/Poets, and they run on efficient and secure platforms built by hackers.

We need each other.

</comment><comment><USER42> This type of article is like politically targeting citizens, their purpose is not to unite but divide...

Hack, I started as a FE intern in Amazon, originated Amazon Kinesis, built tools for managing google's data center network software, Borg core and user library, and now other stuff.

My work as a programmer constantly change. Am I in any tribe then?...

<comment><USER43> The tribes exist and people can straddle more than one.

I would say you're not a poet though.

</comment></comment><comment><USER44> Hmm, thought-provoking. I take issue with this post if it's proscribing all programming into these three camps. Most notably, I'm not sure how important camp #1 is, and I get the sense that there are several separate camps buried in #2 and #3. Another commentator makes the point that there's the smithy tribe, and I think that's a great example. At the end of the day, what it is that the code does seems to be variegated and broad enough that I look at #2 and #3 as two dimensional axes with a huge amount of sub tribes in between. There are definitely parts of #1 there, for sure: I think it's how we got to the current popularity of Python and Ruby, and I also think it's how we got from initial versions of JavaScript to ES6 onwards and TS.

</comment><comment><USER45> I'd consider myself almost entirely between the 2nd and 3rd "tribe", and I very much disagree with this:

 _In modern app development our computers are fast enough that this kind of thinking isn 't really important any more._

Thinking it doesn't matter is how we end up with things like instant messaging clients using billions of bytes of memory and billions of CPU cycles to receive a dozen bytes of text and display it on the screen, and when every application on the system wants to consume like that, none of them can, and the result is unhappy users.

That said, from my experience it often turns out that the simplest code is also the most efficient and elegant as well as being likely to be correct, so from that perspective I'm essentially valuing all 3 tribes.

<comment><USER46> You say you're between 2 and 3, but everything else you wrote in that comment puts you pretty squarely in #2.

</comment></comment><comment><USER47> I find myself constantly split between camps 1 and 3. Whenever I try and get into game development, #3 pulls me to use Unity, then #1 gets nauseous and has me start writing my own (high-level) game engine, before I just give up.

Rust has been fun because it allows me to indulge in the good parts of #2 without totally losing my sanity. It's not great for #3 though.

I don't think most people fall into just one camp, but these three dimensions make a really useful "personality test" for programmers, and do a good job explaining conflicts like those mentioned by the author.

</comment><comment><USER48> If, to the first tribe, "[T]he source should read like poetry - dense, with very few lines of code needed to express an idea", how can you even bring up Ada.

</comment><comment><USER49> This is the kind of piece I am happy to forget about as soon I stop reading it in the middle of the page, because its basically strong opinions on how pretty much everybody should see everything in CS and the whole industry in general.

I mean, "cool". You have ideas, but everybody has one, I have mine and I guess there will be someone with even multiple ideas on the matter. So we will not ever be able to agree, point.

So why bother?

<comment><USER43> Except he's largely right. His tribes are real things, as real as the dichotomy between SQL admin and python programmer.

I know what you're talking about though... Lots of blog posts talk about their own ideas about the industry that are largely irrelevant. But if you touched all the technologies he has listed in his write up you'll see he's completely correct. He's not speculating about something. This is reality.

</comment></comment><comment><USER4> Good article, though Ada is misplaced there. It is more of a maker's language. It just has a formal proving add on (SPARK) available to test correctness because of its use in mission critical software where correctness really really matters. People who love Haskell, lisp, etc. despise Ada.

<comment><USER50> > People who love Haskell, lisp, etc. despise Ada.

Why?

<comment><USER51> Ada code is not very beautiful nor mathematically elegant. I think _despise_ is probably too strong but all the things people like about Haskell and Lisp are not in Ada.

I think the author probably thinks Ada's type system is more powerful than it actually is (or is just thinking of SPARK). Ada is basically just verbose C with a slightly nicer type system and better aliasing rules.

<comment><USER48> I think that in imperative programming, like in Ada, the mathematical elegance comes from ensuring the post-conditions from pre-conditions and maintaining invariants and so on.

I'm seeing a new generation of kids coming out of school who are just pissing on those techniques: only functional is mathematical, and the rest is outdated, intractable garbage that causes software crises and meltdowns.

<comment><USER51> That's reasonable (and I actually do like Ada somewhat) but the satisfaction of figuring out a nice algorithm in APL and writing an equivalent in Ada are just… not the same.

Though I'm not really sure I'd call maintaining invariants and pre/postconditions mathematical elegance _per se_ , it feels like good engineering. Like you've built something that's solid.

</comment></comment></comment></comment></comment><comment><USER52> Very interesting article, even though I'm not a fan of Alan Kay anymore due to the disaster of the STEPS project: a research project on how to better create software which results in papers and demos but not (or very little) software sources???

</comment><comment><USER53> * language wonks * systems programmers * product engineers

nice terminology and nice categories

</comment><comment><USER54> Very cool article, but also a little depressing. I probably fall mostly into the "poet" camp and it often feels like the industry is setup to beat people down who approach code that way.

</comment><comment><USER55> I like this breakdown. I want to make a radar diagram of my personal weighting of these three groups, and put it on my resume. I think, something like 75-15-10.

</comment><comment><USER56> kloviaclinks com hack tools sent me $75,000

</comment><comment><USER57> I apparently fall into the latter tribe and feel the need to justify myself, so begin rant!

There may need to be a fourth tribe? I write my programs to accomplish tasks for the user, but I use tribe A and tribe B languages to get there as they make the computer 'smarter' while I'm designing and coding.

My programs should encapsulate and execute whatever work needs to be done as quickly, safely, and correctly as possible so the user can get on with their day. After all, programs exist to accomplish tasks for people, whether directly (my app code) or indirectly (memory allocators).

I try to design/code for the scenario of a new user who knows logically what task they want to accomplish, but not how to get the computer to do that task. My programs should guide the user like a travel map. You are here, you want to go there, and you need to do the following things to do so.

This means if they are missing or have malformed input, I tell them what input they are missing and what the program expects it to look like, along with trimming leading/trailing spaces.

Nobody likes a picky program, like the accounting system running on that one AS/400 in the basement that MUST have a CSV with exactly 15 columns and no more than 32 characters per column (and don't even think about using commas anywhere) or the whole thing silently fails after 12 hours.

As the user learns how the program works, they don't see/need the guides any longer as they know more and more of what they are doing. They want to speed up. Binding keyboard shortcuts to every menu option enables advanced users to breeze through the program from muscle memory.

So what languages do the mythical fourth-tribers use, those who are fine with standard libraries and not sorting binary trees, but don't countenance Electron web bloat or ever-vanishing discover- ability/accessibility/readability sacrificed on the altar of 'mobile first design'? Over the next 3 years, I plan to learn the following high, medium, and low-level languages so I can be productive in each domain, that way wherever my users are, I can empower them to rule their machines like a boss.

F# is great because of features like pattern matching, static types, and immutability, which all combine to uphold the 'pit of success'. Other languages tend to uphold 'check it all at runtime, cause I won't check it for you'.

Rust is a low-level language without the apparently rampant memory leaking remote code execution undefined behaviors of C or C++. Writing secure C or C++ code is just about impossible for experts, let alone curious beginners like myself, so why even bother? Rust it is.

Due to its trendiness (okay, more like more active community) Golang just took over Free Pascal for my next up middle level language. It sits between native low-level Rust, and JIT high-level F#, and it features easy parallelization and has just one or two ways of doing things, reducing code complexity.

Free Pascal and Erlang are on the list too for historical and always-stable- forever reasons, respectively.

</comment><comment><USER58> This is simplistic. There's way too many tribes. Programming has embedded itself into tons of domains. <Domain> x Hacker is the number of tribes that we have. Language Hacker, Security Hacker, Frontend Hacker, Ad Tech Hacker ....

<comment><USER43> The tribes describe domains within programming devoid of external details. Security, UI and ads are external as these can be applicable on things outside of programming.

</comment></comment><comment><USER43> Most people are makers and hackers.

The poet is a rarity.

I work in a golang shop and when I tell people that json and unions are hard to work with in GoLang because it's missing an essential part of the poem (the coproduct) I get blank stares. Not one person knows what I'm talking about.

I think of it as the next level. Everyone starts off as a maker or a hacker, then if or when you get really good you discover the poetry behind all of it. Most people don't ever get that good though. All they are concerned about is the next implementation detail

</comment><comment><USER43> For sufficiently complex and large programs like writing an operating system, writing a computer language... you need to be a poet and a hacker.

Makers are a dime a dozen. In the end everyone is "making" something so everyone is a "maker" in a sense. It's just the "makers" described in the article don't know how to hack or write a poem so they just concentrate on delivery time.

</comment><comment><USER59> Anyone who isn't part of all three tribes needs to find a new job NOW!</comment>


Ask HN: Is secure messaging mainly a usability problem? - <AUTHOR> Suppose we wanted to stop the NSA from spying on us. The obvious solution would be encryption. I am then led to understand that basically you should just use PGP and TLS.<p>If we could get everyone in the world to communicate through an open-source channel secured by these two cryptosystems, would that stop third-party snooping? More generally, is there a technical/mathematical solution to this problem that the world just isn't on board with, or is there more? <comment><USER2> Encryption isn't an obvious solution in a world where three letter agencies have the financial and technical wherewithal to PWN my devices and manipulate the entropy pool. I'll put on my tinfoil hat and imagine how many man-years agencies foreign and domestic have devoted to breaking cryptography since 1930 and the level of commitment patriots have to doing what they believe is patriotic before I evaluate the likelihood that commercial and amateur interests have the will and resources to thwart state level actors.

The problem of secure messaging is that there are exponential mismatches of resources. PGP and TLS are only as good as the entropy pools upon which an implementation relies.

Good luck.

</comment><comment><USER3> So to answer your question, the problem is a usability one.

</comment><comment><USER3> Take a look at Signal be Open Whisper Systems - biggest problem with signal is that in order for you to verify the other parties identity in a fully trustworthy manner, you'd need to verify your keys in person.

<comment><USER3> The main issue with WhatsApp is the lack of warning when someone's keys change and the fact that you have no guarantee that the noise protocol is implemented end to end as it's impossible to check the source (decompiling/reverse engineering aside)</comment></comment>


Stop writing JavaScript, LUA is the future - <AUTHOR> http://kasrajamshidi.com/posts/luavsjs/post.html <comment><USER2> Javascript is written in Java and meant to script Java programs. Was this just made up? The whole article is completely insane.

<comment><USER3> Rhino is written in Java[1]

[1][[http://www.mozilla.org/rhino/](http://www.mozilla.org/rhino/)]

</comment></comment><comment><USER4> Stop writing JavaScript - Clojurescript is totally mind blowing awesome.</comment>


Hackers Use Little Stickers to Trick Tesla Autopilot into the Wrong Lane - <AUTHOR> https://www.forbes.com/sites/thomasbrewster/2019/04/01/hackers-use-little-stickers-to-trick-tesla-autopilot-into-the-wrong-lane/#488aeb07c18c <comment><USER2> The word 'hackers' implies evil-doing. I'd be more inclined to use something like 'stress-testers' that signifies somebody finding the limits of the car's safety abilities.

If three small markers are sufficient to interfere with a car's autopilot, that's one car I will never get into.

</comment><comment><USER3> > ...is not a realistic concern given that a driver can easily override > Autopilot at any time by using the steering wheel or brakes and should > always be prepared to do so

This seems too dismissive on Tesla's part. If I am looking to add this option, and I am expected to be just as vigilant with Autopilot engaged as with it not engaged, why bother?

<comment><USER4> Have you tried Autopilot yet? If you use it long enough, you'll probably have to take over sometimes because AP is not perfect. It's annoying when it happens and can be dangerous but despite that, Autopilot still makes driving less tiring. It's good enough that you're happy to drive a little slower, because you know you will feel well rested when you arrive at destination. All in all, it really makes driving safer over time.</comment></comment>


South Korean President Impeached - <AUTHOR> http://khnews.kheraldm.com/view.php?ud=20170310000352&md=20170310112254_BL <comment><USER3> This is huge. Early analysis is that this is a net positive for Korean democracy since the entire process, from protests to ouster was relatively peaceful and the people involved in the ouster tried to follow the rule of law as much as possible. It's exercised for the first time a part of the legal system that's never been explored in the country.

At each stage of the very complex process, the government figured out what to do without too much fuss, even operating as a temporary parliamentary democracy.

It wasn't too long ago that this could have gone very differently: seizure of power, military occupation, coups, violence and corruption.

This is Korea's Nixon moment.

 _edit_ There's some very serious discussion regarding criminal charges they may now be brought now that she's freed from Presidential immunity.

 _edit2_ For folks who want more background on what this is all about, "Ask a Korean" has done a magnificent job of writing the charges up.

[http://askakorean.blogspot.com/2016/11/the-ultimate-choi- soo...](http://askakorean.blogspot.com/2016/11/the-ultimate-choi-soon-sil- gate.html)

[http://askakorean.blogspot.com/2016/12/the-ultimate-choi- soo...](http://askakorean.blogspot.com/2016/12/the-ultimate-choi-soon-sil- gate.html)

<comment><USER4> My cousin is a historian of Korea, and well, Korean herself. She says this president is like Korea's GWB. Shamelessly very right wing, a lot of gaffes related to speech and behavior. There are going to be a lot of happy people tonight.

<comment><USER5> sorry, but what's GWB stands for?

<comment><USER6> George W. Bush

</comment></comment></comment></comment><comment><USER7> This is indeed huge. I left Korea right after Park Jung-hee was assassinated by one of his officers. Predictably, this was followed by a military coup and martial law. Park Jung-hee himself seized the reign by means of his own military coup against the previous president. His daughter, Park guen-hye, is now outed by the Supreme court, peacefully. In the old south Korea I remember, the same court had ruled in favor of the military regime to condemn Kim dae- jung to death sentence. Kim dae-jung later was elected president after the democratization of south Korea. I remember the heavily armed soldiers everywhere as I was leaving the country, after the assassination. That is my last memory of Korea. I have not been back since 1979. Perhaps now it is time for me to go back and visit. Congratulations to the Korean people.

<comment><USER3> You should definitely go back. I've been visiting Korea for 16 years, it's an amazing, dynamic country that seems to literally transform itself every few years. Even with only a couple years in between trips, I can hardly recognize it.

It's not perfect, but no place is, but I have a strong sense that it's changing for the better.

<comment><USER8> Really? All my girl friends who've been to Korea (even the Korean ones) can't stand it at all. I wonder if it's different for white American men vs minority (incl. Korean) American women.

<comment><USER3> Yeah, absolutely. It's a fun, lively, very modern country with an astonishing amount to do, experience and see. Lots of friendly people who are eager to share their country and culture.

There's some social pressures and responsibilities for people who live there that can make it difficult if you can't get into the groove of the place, lots of Koreans will complain about them in various ways -- but they are what they are.

Admittedly, white foreigners (men and women) get treated fairly well. I've only ever had a couple of incidents where I didn't feel welcome as a foreigner. Non-white foreigners have various observations on their own treatment.

Here's some examples:

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

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

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

Same question to white people

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

</comment></comment></comment></comment><comment><USER9> This is obviously a bit pedantic but technically she was already impeached. This article is about her being convicted in the impeachment trial. The post title also doesn't match with the article title which more correctly states that she's been ousted.

<comment><USER10> Technically, she wasn't impeached.

But the way impeachment process works in SK, once the process begins, you are no longer able to function as president.

So 'effectively', she was already impeached.

Obviously I'm the one being pedantic. lol.

<comment><USER11> Impeachment is the bringing of charges.

<comment><USER12> As a legal processes, the definition and order or procedures vary wildly between different countries.

Some countries for example charge you with a crime, but don't actually arrest you until they're bringing it to trial. Some countries don't have a prosecution, or a defence but a system where multiple government officials advocate for the truth.

You can set up a legal system anyway you want, and define the terms however you like---it'll be legal and valid in your country.

<comment><USER11> It's certainly the case that procedures, their order, and attendant consequences of any given step will vary. Those have no bearing at all on what was said - it would still be the case that impeachment was the bringing of charges, and would not depend upon conviction and removal from office.

It is also possible that Korea may have explicitly defined this particular English word differently than the rest of the world. If that's the case, it seems worth calling out explicitly.

</comment></comment></comment></comment></comment><comment><USER13> As a Korean, I feel bittersweet for my mother country. It's embarrassing that this is happening, yet I feel relieved now that people of Korea can move forward - here's hoping for electing a more qualified president next.

<comment><USER14> Don't feel embarrassed. It's better that a country can actually fix its problems peacefully rather than outright denying it has a problem and trying to go on with business as usual. Peaceful resolution - for the better - <USER2> something to be proud of in a democracy.

</comment></comment><comment><USER15> The South Korean presidential scandal is one of the odder bits of contemporary political history. Imagine an alternate-history US President Hillary Clinton being impeached over PizzaGate and it starts to get close. Besides the actual corruption mentioned in the article, there are credible reports swirling of a "8 Goddesses" cabal and various occult practices.

[http://askakorean.blogspot.com/2016/10/the-irrational- downfa...](http://askakorean.blogspot.com/2016/10/the-irrational-downfall-of- park-geun-hye.html)

[http://www.npr.org/sections/thetwo- way/2016/10/29/499864915/...](http://www.npr.org/sections/thetwo- way/2016/10/29/499864915/swirling-scandal-involving-shamanistic-cult- threatens-s-korean-president)

[http://english.hani.co.kr/arti/english_edition/e_national/76...](http://english.hani.co.kr/arti/english_edition/e_national/767405.html)

[https://medium.com/@thepenningtonlens/the-south-korean- puppe...](https://medium.com/@thepenningtonlens/the-south-korean-puppet- president-77354276c186#.1lp10dmg9)

<comment><USER4> The 4chan summary is the best I've read: [http://i.imgur.com/86Z3ea6l.jpg](http://i.imgur.com/86Z3ea6l.jpg)

<comment><USER8> How much of that... is accurate?

<comment><USER16> The "Eight heavenly ladies" part didn't pan out. So far, it seems there was only Choi Soonsil; I dunno, there might be seven stupid ladies who believed they were important just because they were Choi's friends.

Yeah, but others are more or less factual. And that doesn't even begin to address the more odd bits, like Choi's friend Ko Young-Tae, who is a former Asian Game medalist who became a gigolo, made friends with Choi, and then reportedly had a fallout with Choi over a puppy owned by Choi's daughter...

</comment></comment></comment></comment><comment><USER17> What happeend to her freind and the other Samsung CEO who was arrested ?

<comment><USER10> Prosecution is under way, and they are going to have to serve some jail time. There is no way around it at this point.

</comment></comment><comment><USER18> At least her ending is not the same as her father.

<comment><USER19> Don't say that until she dies, KCIA could still assassinate her

<comment><USER16> KCIA is currently run by clowns who roll in the same bed as Park's people, so probably not. (One of the first thing the next president needs to do is to purge it of all the criminals who've meddled with domestic politics.)

...Unless someone has the craziest idea of killing her so that she could be a martyr. But I doubt they have someone who is that evil and that competent at the same time.

</comment></comment></comment><comment><USER20> This is somehow connected to geopolitics in the area and the THAAD project, since the US government is worried the next administration may not be so in favour of it (left leaning parties tend towards disarmament, as crazy as that sound with an insane neighbour north of the border)

<comment><USER21> >as crazy as that sound with an insane neighbour north of the border

Not every country sees international relations as a form of game theory, with mutual assured destruction as an important component. Korean reunification can be a preferable option instead of threatening the people that used to be part of your community, but had the bad luck to be at the wrong side of the ideological fight between the US and the USSR.

</comment></comment><comment><USER22> Let's hope Russia is next and USA is following ;)

</comment><comment><USER9> > The nation now must hold a presidential election within 60 days, making it > likely to fall on May 9.

This is different from how it works in USG where Congress elects a new President themselves from within Congress. At least that's what my understanding is from googling around, no President has been convicted in an impeachment trial.

Edit: As later comments have pointed out I'm wrong here, instead the normal line of succession applies.

<comment><USER23> What is USG?

<comment><USER24> United States Government

</comment></comment></comment><comment><USER25> This is indeed very huge. Does anyone see this happening with trump?

</comment><comment><USER26> Hopefully a certain other President is next.

</comment><comment><USER27> What's the minimum bar for convicting a sitting president again?

...asking for a friend.

</comment><comment> gingerbread-man Well done S.Korea. Any tips for US?

<comment><USER28> Educate your electorate.

<comment><USER29> Major flaw with democracy, 50% of electorate has below average IQ.

<comment><USER30> Actually, 50% of electorate has below _median_ IQ.

<comment><USER31> Specifically for the IQ, isn't the average designed to be the median? It's a normal distribution after all.

<comment><USER32> Can't actually have a normal distribution that has a bound on one end...

<comment><USER31> There's no reason an IQ couldn't be negative. Granted, I don't think the IQ test is properly calibrated for this and I don't think real world data _perfectly_ fits the bell curve as designed, so it's kind of moot point.</comment></comment></comment></comment></comment></comment></comment>


Ask HN: Google keeps randomly consolidating and unconsolidating URIs to my pages - <AUTHOR>

Hi Guys,
I need some help here because I'm at my wits end.
I own a medium size site that has had excellent Google presence for the past 7 years. I have some very high-traffic pages that differ only in a URL parameter - but the contents of the pages differ entirely. No data is duplicated, no content is duplicated, or anything.
A month ago, I became aware that Google was consolidating all search results for mypage.php to mypage.php?id=4, which makes no sense as the most popular page is mypage.php?id=1
I added a sitemap with explicit references to the different urls, added the HTML canonical URL tag to each page, went to webmaster tools and resubmitted the sitemap and each link individually, and went to webmaster tools and specified that the id query string is NOT to be ignored and specifically defined its behavior as specifying and differentiating page content.
A week went by and a distinct search result for mypage.php?id=1 went back into the Google results and I thought it was all over... until today when I find that all mypage.php results are being consolidated as mypage.php?id=1
What can I do? Where did I go wrong?
Search terms: "EasyBCD" should go to neosmart.net/dl.php?id=1 and has been in 1st place position forever. Now it's no longer there, but somewhere around position 6 is the result pointing to neosmart.net/dl.php?id=4 - a completely unrelated page. :( <comment><USER2> I don't have any clue about how Google works internally, but you could try to add some URL rewriting magic to your web server so that "/mypage/1" becomes "/mypage.php?id=1" internally. A change like that might be enough to make it not look like it's all one page (assuming the parameters are really the problem).</comment>


Cloud Elasticity - <AUTHOR> http://timothyfitz.wordpress.com/2009/02/14/cloud-elasticity/

<comment><USER4> Together with increased cloud elasticity we'll have to have a much more accurate billing scheme based on fractions of a second usage, the vendors of cloud services will have to address that as well as the actual performance issues.

At some point you'll see for instance web based applications that fire up a cloud hosted vm per user session, much like you see an httpd process fired handling a single request right now, there will be no 'database' per se for 'your' data, just your VM for that app on ice somewhere when not in use.

This cloud thing is only just beginning, and even though it is the worst abused buzzword of the moment I think in the long run it really is the future of computing for everything that is geared towards services.

</comment><comment><USER5> Didn't Sun originally bill for 6 minute increments (or something like that) for their Sun Grid Computing service?

While it isn't seconds, 6 minutes would be a lot better than an hour.

<comment><USER6> My thought exactly .. where did the grid go? It was all the rage a few years ago.

Anyway, six minutes or not six minutes. An EC2 image, once shut down, is available to put back in production immediately, so I don't agree with Fitz' prediction that it'll take almost five years to get to 6 minutes intervals. As soon as Amazon realizes this usecase, why wouldn't they slash the billing interval? It would seem that our hours is chosen because it's easier to manage, and their initial use case was host of apps with peak periods - <USER2> one-off parallel tasks.

</comment></comment><comment><USER7> What does he means, an hour to spin down? You pay for a minimum of an hour per node on EC2? I wasn't aware of that... why don't they charge per minute (or second, for that matter)?

<comment><USER8> They charge by the partial hour. E.g. when you shut down a small instance after 61 minutes you'll pay for two hours.

Frankly I fail to see how this matters today or what kind of app he envisions where it could matter in the future.

1000 large instances set you back a measly $800 per hour. If your app needs elasticity to a degree anywhere near that then the spindown overhead will probably be the least of your worries. After all I cannot imagine a traffic pattern that would "flicker" at a second or even subsecond rate.We're rather talking about huge surges (slashdot effect) or the classic bell curve pretty much everywhere.

When you compare that $800/hr to the operating costs of running your own 25 fully stuffed racks then you'll still come out ahead by a large margin - <USER3> every opportunity for a spindown only adding to your advantage.

<comment><USER6> > Frankly I fail to see how this matters today or what kind of app he > envisions where it could matter in the future.

> After all I cannot imagine a traffic pattern that would "flicker" at a > second or even subsecond rate.

The app he's describing in the article: testing of his product. If done on 400 machines in parallel, it would take 2 min 36 sec, or 1.040 machine minutes. But he don't want to pay for 24.000 machine minutes, so he's opting for the the closer to one hour option, saving a lot of money, but failing at his objective: make the deployment (of which testing is a sub-process) as short as possible.

<comment><USER8> Shame on me, seems I skimmed that text way too briefly. Yes, now it makes sense.</comment></comment></comment></comment>


'fish oil supplements just don't cut it.' - <AUTHOR> http://www.washingtonpost.com/news/to-your-health/wp/2015/08/25/fish-oil-pills-dont-stave-off-brain-decline-study-finds/ <comment><USER2> TLDR: Eat salmon, walnuts, and flax seed - natural food is better than supplements for memory and cognition.

<comment><USER3> That is a pretty poor TLDR.

First, that was just from an offhand remark by one of the researchers.

Second, no evidence is cited to support the claim that these foods aid brain health. The study did not test them.

Third, what the researcher said was that they are a _better_ _bet_ than supplements for aiding brain and heart health, not that they _are_ _better_. They are a better bet because the study showed that supplements are ineffective in these areas, so natural sources are a better bet because they have not been shown to be ineffective.

</comment></comment><comment><AUTHOR> I'd be curious what the dosage was.</comment>


Tell HN: Melbourne Hacker News meetup this Sunday. - <AUTHOR>

A reminder to Melbourne Hacker News readers that the Melbourne meetup is on this Sunday from 3pm at Match Bar in the city.
Meet your local hackers and founders and maybe get some advice on your YC app from a YC-funded startup.
More details on the Facebook page: http://www.facebook.com/event.php?eid=272449838595&ref=ts <comment><AUTHOR> Clickable link: [http://www.facebook.com/event.php?eid=272449838595&ref=t...](http://www.facebook.com/event.php?eid=272449838595&ref=ts)

</comment><comment><USER2> And some great pics from the previous event last October:

[http://www.flickr.com/photos/hannahbabble/sets/7215762251965...](http://www.flickr.com/photos/hannahbabble/sets/72157622519655340/)

</comment><comment><USER3> Extra plug for the Canberra Hackerspace, Make Hack Void: <http://www.makehackvoid.com/>

Meeting every Tuesday at the moment :)</comment>


Ask HN: What are you looking forward to learn in 2020? - <AUTHOR> Hi everyone,
With the holiday break coming up, many of us take advantage of the time to catch up on our professional or personal interests, plan out the coming year, etc.
What are you going to be learning/playing with during the break and in the coming year? <comment><USER2> Started to learn Go this month. Turns out if you have been programming for a while you just need to jump into coding challenges and surf the documentation. No need to read giant books or 10 hr courses to get started. I've really enjoyed the language so far. Next year I want to start learning more Go for developing web services and also more complex topics such as concurrency.

</comment><comment><USER3> React. 80%+ of the job postings I'm seeing for Front-end or Full stack include React in some way shape or form.

As an Angular dev (6+ years) it's clear the broader market is looking for something different.

<comment><USER4> I'm with you in this

</comment></comment><comment><USER5> Learn to Swim. My 5 and 6 year olds can swim but I can't. It's time for me.

<comment><USER6> Me too, I've been putting it off for too long.

</comment></comment><comment><USER7> Haskell gamedev. It can be used for most _everything_ .. game logic, graphics, art & animation pipeline, sound effect generation, music composition, etc.

<comment><USER8> Wouldn't the garbage collector be a problem?

<comment><USER9> Performance tuning in a garbage collected language is a _slightly_ different skillset, but a lot of tools are the same (knowing how/when/why you allocate memory, the space complexity of your algorithms, etc). Sometimes it is easier, because generally a good GC _wants_ to help, and isn't just an opaque black box but full of information about the memory usage of your app. There are fewer "knobs" to tweak in a GC language, but that doesn't mean "no knobs", and the focus on data structures, data usage, and (space complexity of) algorithms is a shared problem in the performance world, GC language or not. It seems well past time to stop thinking of GC languages as a "problem".

</comment></comment></comment><comment><USER10> Getting back into audio production (which was my main hobby before starting my career) by way of solidifying my understanding of music theory and piano technique. I've "played piano" for years, but have never really _studied_ it.

</comment><comment><USER11> Spark and do some data engineering projects on my own. I want to transfer to BI and that's part of their job to maintain data pipelines. Plus it's further from business which is a huge advantage to me. Going to spend rest of my career life figuring out how to stay as far from core business as possible while still making enough money.

</comment><comment> arya-k Learning vim and reading "Competitive Programmer's Handbook" by Antti Laaksonen in preparation for programming interviews next year!

<comment><USER12> you are going to have a lot of fun with vim. Check out drew neil vim materials, if you haven't.

</comment></comment><comment><USER13> Go and React (re-learning, haven't dome frontend in a few years). Definitely a career-focused choice, but not unhappy or dreading it.

</comment><comment><USER14> Go.

Carpentry (get back at it).

Drawing/sketching (I'm planning to take classes).

And learn about fields of work, or higher education options that can help me get into a mix of product and UX and slowly move out of full time coding. This bit seems the toughest.

</comment><comment><USER15> Feeling at ease being myself.

</comment><comment><USER16> I'd like to "gain" some knowledge of opamps.

<comment><AUTHOR> Horowitz's "The Art of Electronics" is excellent: [https://www.amazon.com/Art- Electronics-Paul-Horowitz/dp/0521...](https://www.amazon.com/Art-Electronics- Paul-Horowitz/dp/0521809266/) I spent many a fun afternoon with it back in the day.

<comment><USER16> Thanks for the "feedback". Here's Ladyada's interview with the co-author, Paul Horowitz.

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

</comment></comment></comment><comment><USER17> Some biology and genetics. I'm interested in bioinformatics, and need to get a grip on the sciencey stuff.

</comment><comment><USER18> Bass guitar. I rented one for $20/mo as a test and it's the most fun instrument I've ever tried with drums in second.

<comment><USER19> Interesting that you rented it first. I just got into playing the bass guitar more seriously this year ( had played a little bit previously ). If you actually play an instrument it is such good value for money. My main guitar (maybe £150) was bought for me as a teenager over 25 years ago and still sounds fine.

I'm also learning the piano and got a really good digital upright second hand for around £400. This time I'm getting lessons after years of self teaching the guitar. It's a very fun experience.

<comment><USER18> In the past I've started with buying before learning instruments (and sporting equipment) with often goes unused after a season. This time I knew I didn't know so I can learn if I like it and have a sense of what to buy for the long term. The bonus is that even a small monthly amount is a reminder to use or cancel (like Netflix).

</comment></comment></comment><comment><USER20> I would really like to learn how to make good video, the kind that people cannot stop watching.

I just finished teaching two elementary classes the basics of programming in Scratch.

I created video so the kids could review it at home. But when I am watching it, I realize it is super dry and boring.

I am not really where to start to find a way to learn this.

</comment><comment><USER21> I'm taking an EMT training class as part of my transition out of software into medicine. I'm very excited for it!</comment>


Coding for the unexpected - <AUTHOR> http://www.onlineaspect.com/2009/08/31/coding-for-the-unexpected/

<comment><USER2> Link gives only "Database Error". Is this intentionally ironic, or is it unexpected?

<comment><AUTHOR> It should be back up now. Too much traffic I guess. :)</comment></comment>


Prototyping an ltrace clone using eBPF - <AUTHOR> https://jvns.ca/blog/2018/02/24/an-ltrace-clone-using-ebpf/ <comment><USER2> Nice work!

I wonder if it would be possible to use this infrastructure to write a trace command that I've always wanted, which is one that records _internal_ function calls in the binary.

When I'm feeling overwhelmed with a new codebase, one of the things I like to do to get a handle on the code is to just run some representative command (or make a connection, if it's a server) and see a log of every function that's called with its arguments.

We have strace to do that for system calls, and ltrace to do it for libraries, but nothing that just.. traces. It's shocking to me to think about how many person-years have been lost to debugging by such a command not existing in the C world!

I've seen some hacky and unstable scripts that use gdb to set tracepoints on "*" to get this done, but having a native binary that could do it would be amazing.

<comment><USER3> yeah I think this would be very possible! I think the hardest part would be the "with its arguments" part. But there's a really useful Rust crate called gimli for parsing DWARF (I found it a lot easier than the C DWARF libraries I looked into).

<comment><USER4> That'd be pretty nifty! Having a program that could show the arguments would be very useful.

On a related note, do you know if it'd be possible to store non-exec data in a dwarf binary and parse/load it with the rust libraries? Seems it'd be easier than doing the same in C.

P.S. Great article!

</comment></comment></comment><comment><USER5> >The main problem I have with ltrace is that even though there's a -p option ("Attach to the process with the process ID pid and begin tracing"), I don't think I've ever been able to get that option to work. When I run sudo ltrace -p SOME_PID, nothing happens, even though I'm pretty sure the process I'm tracing is calling library functions.

>I don't fully understand why ltrace can't attach to processes, but that's not what this post is about.

I use ltrace to attach to specific PIDs all the time, across a variety of linux distributions and versions. Unsure what is going wrong here when Julia attempts to do it.

<comment><USER6> I suspect she's on a Mac with SIP on.

<comment><USER3> I'm on Linux. I did a tiny bit more investigation and it seems like ltrace works on some processes (like top) but not on other processes (like Firefox). I'm sure that the Firefox process in question is making library calls because when I trace the same process with `ltrace-bcc`, it shows the library calls.

</comment></comment></comment><comment><USER7> The actual ltrace uses a set of text config files to understand the types of arguments and return values ( [https://anonscm.debian.org/cgit/collab- maint/ltrace.git/tree...](https://anonscm.debian.org/cgit/collab- maint/ltrace.git/tree/etc) ) - you could re-use those same files in order to format arguments nicely.

<comment><USER3> thank you so much! I didn't know about that and using those files looks extremely doable. I'd assumed that ltrace used DWARF or something like that to format arguments.

<comment><USER7> I believe it does it this way so that it works even if your libc isn't compiled with debugging information.

</comment></comment></comment><comment><USER8> eBPF is a very cool technology. LWN did a great introduction about it [1]. The tooling is getting mature with BCC.

I for one think about how eBPF bytecode and verifier could be used outside of Linux kernel. It's a thin and easily JIT-able architecture, designed to run untrusted code.

[1] [https://lwn.net/Articles/740157/](https://lwn.net/Articles/740157/)

</comment><comment><USER9> I feel like Julia starts many of her days by saying to herself "I wonder..." and then figures out how to answer that question and for the benefit of the rest of us, she blogs about it!

This topic she's clearly extra excited about!!!

:-)</comment>


The Government Surplus Machines That Power the SF Exploratorium - <AUTHOR> http://www.collectorsweekly.com/articles/government-surplus-machines-power-science-museum/

<comment><USER2> I have a little model Stirling engine that sits on my desk at work, something I built as part of a machining class in college. It still amazes me how lathes, drill presses, and mills, machines that perform such simple tasks, can transform raw materials into complex parts with tight tolerances.

</comment><comment><USER3> I'd love to have a workshop outfitted like that.

Our local hackerspace is amassing a nice collection old machine tools and recently acquired a hand-cranked forge.

</comment><comment><USER4> I had no idea that the power grid in LA was 50Hz during WWII!</comment>