Nobody Wants to Learn How to Program - <AUTHOR> http://inventwithpython.com/blog/2012/03/03/nobody-wants-to-learn-how-to-program/ <comment><USER2> When I was in high school (late 90s), they had kind of a weird curriculum for teaching programming. We had AP classes for Computer Science A/AB, which you had to be at least a sophomore to take. There was also a class called 'Computer Programming' that anyone could take, which I did as a freshman, although the students in the class were actually pretty evenly distributed between all four grades.

Basically we were taught QBASIC and given assignments. The first few weeks seemed pretty mundane as the OP describes, getting into conditionals and loops, etc, but after we learned those, my teacher told us to make something like 'Choose Your Own Adventure' text-based game. I remember loving that assignment and even compiling it as an EXE and sending it to my other friends. This pretty much followed through the whole year, learning some new programming concept (arrays, functions, etc) and then making some sort of game as an assignment. We had the usual "write a program to display all the factors of a number" assignments too, but I just remember loving the game projects. I didn't know anything about Big-O or AVL trees or whatever, just that I could create cool stuff on a computer.

In 10th grade I took Computer Science A, and about half the class hadn't taken Computer Programming already. The material was a lot drier, obviously, and I remember a lot of those students switched out. I witnessed the same thing my freshman year of college -- no 'Choose Your Own Adventure Games' as an assignments, just grueling midterms on polymorphism and inheritance.

So this post really resonated with me, because my thoughts have basically echoed this for awhile -- why isn't software engineering taught as a discipline that can let you implement and create, since that's exactly what it is?

<comment><USER3> > So this post really resonated with me, because my thoughts have basically > echoed this for awhile -- why isn't software engineering taught as a > discipline that can let you implement and create, since that's exactly what > it is?

Because most colleges teach "computer science" not "software engineering". Computer science is primarily about abstract concepts, and not so much about necessarily doing anything worthwhile with them. (This is similar to saying, "Why doesn't physics teach me to build X?" Because that's mechanical engineering!) Admittedly, there's hopefully some occasion to apply the concepts, rather than just memorize them, but the focus should be on the science, not the engineering.

In my curriculum, software engineering was one of my possible senior classes (including OSes, compilers, etc., almost all focused on application).

<comment><USER4> So why is there more focus on computer science than software engineering if most businesses do not care about the science one bit?

<comment><USER5> This is a great question, and the answer is that universities serve their own institutional needs, not those of business, or of society, or even of students. I remember the shock when I was in college trying to learn Japanese and I asked why, after the first couple of years of language, all the Japanese classes switched to literature or obscure linguistics. I told them that I wanted classes in advanced language that would teach me how to live and work at a professional level in Japan: present in a business meeting, read a contract, etc. I claimed that going from basic language to advanced, modern, professional Japanese was a lot higher priority than a switch to archaic, literary Japanese or obscure linguistic analysis. They reacted with outrage, claiming that if they were to do what I was suggesting, they "wouldn't have any academic credibility at all!"

Ah, that's what it's about. Not my needs but theirs: not real-world skill but academic credibility.

Of course it would be what I needed if, and only if, I intended to become an academic in the field myself, but that is what universities are---farm leagues for finding and developing future professors.

Since professors are only a small portion of the work force, most people weren't even supposed to attend universities. Most people were supposed to enroll in other educational programs (tech schools, art/cooking/etc. academies, apprenticeships, and so on) if they intended to work for a living.

But these days, no employer wants you without a university degree, so universities can go on serving themselves and you'll pay for it anyway, because the end for non-professors is a general purpose "degree" credential that employers use as a proxy for generic employment qualification.

I'm not saying that computer science isn't important, just that it is a higher priority for academia than for business, and academia serves academia.

<comment><USER6> True. And CS is still one of the more practical degrees. But in the end faculty are weighted on their research, and producing Phds who cite their research, so post-undergrad employment isn't a big concern.

</comment></comment></comment></comment></comment><comment><USER7> This is stuff educational researchers have known for over 20 years, and theorists have known for 100 years (John Dewey). It's called situated cognition. Learning happens in context. You have to give students a _reason_ to learn, not just learn something for its own sake. It explains why for example a Brazilian street kid may be a whiz at math, and a 6 year old may have hundreds of Pokemons memorized. See for example the work by James Paul Gee or Jean Lave. John Dewey said 100 years ago that we shouldn't educate just to prepare kids for a future they know and care little about, we should educate them for today, teach them stuff that is useful and interesting to them today.

An example of my own - at 9 my father attempted teaching me programming with basic - I thought it was pretty boring all that work just to draw a US flag on the screen, especially compared to the videogames I was playing. I was similarly bored with a basic programming class in high school and a survey of programming languages (lisp, C++) class in college (worst class I ever took in my life, actually).

It wasn't until early college when I started making CGI web applications, games, and educational software that I learned real programming and saw the value of it (along with the value of similarly boring calculus/linear algebra stuff).

I disagree with the author of this article's put down of GameMaker and similar tools. Python was not designed for beginners, and neither was Javascript, of course. Right now Scratch may be the best tool for teaching kids how to program, although it is very limited and not so great for creating games as other tools.

<comment><USER8> I wish I could vote you to the top. It's painful to see people "rediscovering" something so obvious. By not understanding this people are wasting so much time.

I've been programming for 30+ years. It was the enthusiasm of putting sprites on a screen and moving them around in 6502 assembler that kept me awake into the wee hours, pouring through books and magazines. The need for loops, branching, subroutines, etc all come naturally. As programs got bigger, the need for modules arose.

Once you have the "need/desire" to learn a subject, the rest comes so much easier.

</comment></comment><comment><USER9> This post very eloquently expresses what I've believed for a long time as well.

It really hurts me to see newbie programmers in first year classes going through Java, writing getter and setter methods for a monster Object Oriented cash register or something. The code is spread across 40 different functions in 10 files, each function containing at most 5 or so lines of code. I'm sure it is a nice starter code for an amazing cash register application that can potentially scale to thousands of lines of code correctly, but it is not the way to teach programming. What a disaster.

I've made my own set of tutorials in the past on programming (see the set at <http://karpathy.ca/phyces/tutorial4.php>, though this set is for intermediate students who are already familiar with coding). I've always felt that coding should be taught in context of doing something concrete, not just by itself. Snippets of code without the whole don't mean anything. I also take a somewhat extreme view in that I think that game programming specifically is the best way to teach, because making games is engaging and students learn all the programming only as a by-product. Once they are comfortable with the basics, they should be introduced to progressively larger code bases, and at some point it becomes obvious why Object Oriented paradigms, for example, are a good idea.

As a last point, I think Udacity recognizes this as well and shares a similar philosophy. Notice their first two classes: "How to build a Search Engine" and "How to build a Self-driving car", not "101: Computer Programming", with Chapters 1. Variables, 2. Control flow, etc.

<comment><USER10> I tutored a friend who was in those OOP, Java, Intro to CS class. It was her second class of the series and she was so overwhelmed by all this stuff that was made for professional software engineers, that she just dropped that class. It wasn't mainly the courses fault that she left, she also forgot how to conjure up loops and how to use them, but knowing the professor she took last quarter (he likes to weed out people by making the class difficult) I can't really blame her for not having the enthusiasm to retain such information. I was in her shoes before, so I was very familiar with the "blank page" syndrom she was going through.

This "sink and swim" teaching mentality has to go. It seems like from this thread and the article that we are getting a better idea of how people like to learn programming. Let us actually put effort into teaching this way.

<comment><USER11> I agree. 'sink or swim' has been the technique of preference in academics for many years. I would think it it is the same for any discipline (electronics or chemical engineer). may be the fluid abstractions used in learning software make it much harder to train people?

</comment></comment></comment><comment><USER12> I have about 200k+ unique visitors a day reading my books, and over a million since I started tracking in May last year. I have comments on nearly every exercise on my books, which means people are actually going through them. I have 2200 people taking my udemy course which is the most popular paid class on the site (last time I checked). My books are used in workshops all over the world, have readers from all over the world, and have taught people from nearly every age group that can read English.

And my books do exactly what this article says you shouldn't do.

I'd say if nobody wants to learn basic programming concepts from you, then it's not the concepts, it's you.

<comment><USER13> Zed, you're awesome. With that said -- it's who you're teaching that lets you say this.

Right now there are people who know they want to learn programming coming hell or high water, and you do a damn fine job teaching them.

There are also a whole lot of people who might want to write apps, but do _not_ want to go through the pain of learning programming.

The audience of Scratch, from MIT, is the narrow end of this giant wedge of people. They have nowhere to go from there because nobody else does it that way.

I miss the Apple II. It actually had a few on-ramps for people like that. Those on-ramps are pretty much dead now, though I have no idea why.

The guy writing this article isn't aiming at your set of programmers. He's aiming at all the people who aren't programming but would love to be able to build apps of one kind or another. There are a lot of them, and even a lot who could, and who we do a terrible job of teaching.

<comment><USER12> And no, I'm saying it's a huge myth that nobody wants to learn the "hard stuff". They do, you just have to teach it right. After that you just have people who aren't interested in programming at all and no amount of graphics, games, or cute cartoons is going to make them want to. You can't force or trick enlightenment on people.

But more importantly, _I_ have evidence to back my beliefs. This article has absolutely no evidence.

<comment><USER14> Hi Zed, I'm Al, the author of article. I'll admit the title is hyperbole. There are people who want to learn programming for the sake of programming, just like there are people who like learning math even though they don't see immediate practical applications.

I teach programming to a tiny class of 10-12 year olds on Saturday mornings, and have taught a couple one-off classes at Stanford's Splash program to a classes of a dozen students. I've found that having an end-goal in mind of what they will create is a much better hook than just explaining what for loops are (or the idiosyncrasies of the languages are, which Python & Ruby are good about keeping to a minimum.)

I don't think graphics and cute cartoons are needed to make programming engaging either. My book "Invent with Python" has games that use ascii text up until the last few chapters. There's a pretty low standard for games/programs that are cool enough to show off to other people, but nobody ever shows off code snippets.

I think the best thing about "Learn Python the Hard Way" over a book like O'Reilly's "Learning Python" is that your book cuts it down to the bare concepts: "Type this. This should appear. This is what is happening." That's great compared to most computer books where there are paragraphs upon paragraphs that could be whittled down to a single sentence or cut out entirely. "Learn Python the Hard Way" is barely over 200 pages. That's much more digestible than some 600 page tome.

I just think that many classes where the students aren't CS majors or necessarily dedicated to learning programming forget that it's not just the concepts that people want to learn but what they can make using those concepts. Small games and web apps are great for that. Like in Exercise 22 of your book says, "It's important when you are doing a boring mindless memorization exercise like this to know why. It helps you focus on a goal and know the purpose of all your efforts."

<comment><USER12> Right, but I think you are confusing causation with correlation. You say, "Nobody wants to learn the boring stuff and they just want to make games." But, they _will_ learn the boring stuff if you teach it right. The concepts aren't what's putting people off, they're just correlated with bad styles of teaching it.

For example, explaining programming to total beginners doesn't work. Like you say, paragraph on paragraph about boolean logic is pointless if they can't even type:

print "hello world"

A beginner can't understand this because they don't have the cognitive tools to comprehend your explanation. But, if you make them do it a bunch, in tiny bites, and build their understanding as you go, then it works. This doesn't work for experts, but it works great for people with no prior knowledge.

So, you are confusing the concept with the delivery. The concept does not cause boredom, it's the delivery that does. And, I also don't mean you have to deliver it wearing a clown costume, I mean breaking it down in a way that builds the concepts from nothing.

<comment><USER15> So, I'm walking this edge right now with a few middle schoolers.

At the beginning of the (school) year, we started doing a programming class using scratch. The operative theory was to be able to explore, get the cause/effect thing going, some debugging, and be able to build something that they could distribute and have other people play. It was a success for a while, within a class or two, pretty much everyone had something that was more than just basic behavior. There was some animation, some 'cat chases mouse', and other basic games. But they quickly hit the wall where scratch is just painful to program. There's no abstraction, and if you want to do space invaders, you wind up copy and pasting a hell of a lot of code blocks. And woe to you if you then need to change something. Dragging and dropping is attractive till you need to build equations of motion.

So, beginning this semester, we're working through LPTHW. The class is smaller, some were definitely scared away by the "hard way" and my warning that they'd have to work. But the ones that are there are soaking it up. I think we're at ~ 5 lessons a week, based on one class time when they can do stuff + homework.

They're getting it. They can find bugs. They have seen where we can go (because of scratch) but they've also seen that there's got to be a better way than drag and drop. My goal is LPTHW should take a quarter, then we'll pull in pygame and some networking stuff, and do a basic networked game. My goal is to be able to translate one of their scratch games roughly block to line, then kick it up a notch. Seeing what I have, I should have abandoned scratch after a quarter, rather than a semester. It would have still given them the view of where we can go, but had them miss the more frustrating parts of the scratch environment.

I've now got some home school experience teaching kids from pre-k to middle school. Heavily scripted stuff is awesome, _provided_ the kids see where it's all going at the end. Far better than random or directed exploration. (I've seen this in learning to read, elementary math, programming, and an art class).

</comment></comment></comment></comment></comment></comment><comment><USER16> "If you want to build a ship, don't drum up the men to gather wood, divide the work and give orders. Instead, teach them to yearn for the vast and endless sea." - Antoine de Saint-Exupery

</comment><comment><USER17> As I sit here, past 3 in the morning, playing with an Arduino for the first time, I find myself thinking...

GOOD LORD THIS IS FUN.

The Arduino folks have this whole thing nailed. The install process (especially for something that involves, you know, buying resistors) was super-easy. The examples seem endless (they have a UDP implementation? Nifty!). The troubleshooting page is relevant and specific. The default environment is so stripped down it hurts, but you know what? I don't care.

This _feels_ like I'm just getting started again, and I'm totally jazzed about it. This whole system is approachable, understandable, and _fun_.

<comment><USER18> I started with MC6811's typing MOV AX,BX. It was like a tiny Manhattan project just to blink an LED.

How I envy you.

<comment><USER19> Yeah, and to write and read a byte of data from an SD flash card - woah!

</comment></comment></comment><comment><USER20> The cleanest comparison I can think of is, nobody wants to work out. They want to look good, feel good about themselves and be admired and have their pick of their opposite sex.

This makes sense, as does the fact that working out can get you there. They don't want to work out, they want to _want to_ work out.

At the University of Pennsylvania, we (CS club) held a Codecademy-style event (hackertrails.com) targeted mainly at business folk. We had 150 folks, mostly MBAs, show up to the first event and maybe 15 to the second.

They want to start companies, and get that programming gets them there. But they don't actually want to learn to program, they _want to_ want to.

<comment><USER21> Another good comparison would be learning to play a musical instrument.

<comment><USER22> Yup, and the approach to getting children interested and motivated is similar; teach small easy pieces that sound like what their peer group is listening to.

</comment></comment></comment><comment><USER23> To quote eight-time champion bodybuilder Ronnie Coleman:

"Everybody wants to be a bodybuilder, but don't nobody wanna lift no heavy ass weight."

<comment><USER24> Everybody wants heavy ass weights lifted, but don't nobody wanna have to be a bodybuilder to lift them.

</comment></comment><comment><USER25> _The more material you give your students to plagiarize, the wider the range of derisive works they'll make from them._

Derisive should be derivative?

</comment><comment><USER26> This is one thing that Logo got right. You didn't learn to program, you learned to draw cool pictures and animations with the turtle

<comment><USER27> ... and before you knew it, you were recursing and doing all that fancy CS stuff without even trying!

</comment></comment><comment><USER28> I think part of the problem why some aspiring programmers give up is because the bar is too damn high. They get fed a constant stream of beautiful 3D games and iPhone apps, and when they start to make one (from following a book/tutorial, for example), it looks like shit compared to what they/others are expecting and they lose their initial enthusiasm.

Compared to a few years ago where a simple 2D/text-based game is already considered pretty cool.

</comment><comment><USER29> I agree with the general principle behind this. But I don't agree with it in practice. It's a bit like saying "Nobody wants to learn how to drive, they want to learn to get to the store.". And strictly speaking, that's true. I mean, nobody wants to know about how to use the steering wheel or blinkers. Now, the first time I got behind the wheel, did I get to drive to the store? No. I got to drive around the parking lot _after_ taking a class about how the steering wheel and blinker work.

Now clearly this example is different from programming because it's much more difficult to hurt or kill someone learning to program than it is when learning to drive, but I'm not convinced that the general principle is any different. With programming, you'be simply gotta learn about variables and loops, just like you've gotta learn how the steering wheel and blinkers work.

What I'm concerned about with this approach is that it might give newbies a premature sense of accomplishment that might hide just how difficult programming really is. In other words, it's like trying to convince someone that they've driven to the store when all they've done is driven around the parking lot.

<comment><USER10> The article states "A small amount of programming concepts had to be taught at the start and some single-concept examples are given, but the chapter always centers around a complete game."

But besides, getting to the point of premature successes:

In a way, you need a premature sense of accomplishment to keep a person motivated. Plus, if they ever come across the difficult portions of programming, that motivation might get them to go through the difficulty.

To me, the difficulty in programming is solving a problem using a lot of the difference concepts that make it up, but that's true with any profession and you can't get those concepts in your head unless you learn it one at a time.

What I don't want to see anymore is programming instructors teaching students a lot of concepts at the same time because to them that's the difficult way they learned and the "right" way to learn. That's just not a proper way to learn, you need to teach one concept at a time and if that means premature sense of accomplishment, so be it in the short term.

</comment></comment><comment><USER30> Nobody wants to work hard (learn to program), everybody wants to show off a coding masterpiece, say Quake or Future Crew's second reality, to their friends. A good teacher leverages the latter to motivate students to do the former.

</comment><comment><USER31> While learning piano, no one wants to sit in a room playing scales over and over. They want to play Claire De Lune. Programming is similar in that it can be an art but it is first and foremost a skill. You need to struggle with boring parts until you figure out that you can actually make very cool things...but first you need to learn about loops and variables.

<comment><USER32> But you can teach new techniques in the context of full pieces, gradually introducing them, to great effect. This is the whole premise behind the Suzuki method of music education, and it's highly effective in cultivating not only technical proficiency but also musicality -- and in young kids, at that (it also substantially improved the musicality in piano playing for my wife, who is obviously an adult)

</comment></comment><comment><USER33> I tought a highschool level intro class in C++ programming. Sadly, it was very short, only 1.5 weeks of 2 hours per day, so we didn't even have time to cover classes.

What I _would like_ is to walk the class through implementing a naïve Brainfuck interpreter, optimizing it, then implementing a Brainfuck-to-C compiler and optimize that.

It would bring a whole lot of understanding I didn't gain until much, much later.

After that, a simple text based adventure game engine to illustrate data driven programming.

That would show the difference between hard coding behaviour in assignments and creating actual usefull applications. It would also show that doing it properly isn't necessarily more difficult, and definately less code.

<comment><USER34> > What I would like is to walk the class through implementing a naïve > Brainfuck interpreter, optimizing it, then implementing a Brainfuck-to-C > compiler and optimize that.

Nowadays, I would find that an awesome assignment, but your high school students would hate you.

</comment></comment><comment><USER35> As someone who learned to program in my 30s (spent my 20s as a professional musician) I can't agree more. The book that was recommended to me was K&R, which I found so dry as to be impossible to read through. The first book I really used was C++ in 21 Days, which has you writing working programs from...well, from day 1.

I always thought the reason for this problem in teaching programming is that what you need to know when switching to a new language is totally different from what you need to know when you don't know how to program. If you already know how to program, the first thing you need to know is the syntax: data types, iterators, etc. It's like being a carpenter and going to a new shop -- what are the tools? But if you don't know how to use the tools, being told the torque on an impact wrench is completely useless information. Not only is it useless, it's easy to look up, and therefore a waste of time to teach.

I now help teach the Boston Python Workshop, a weekend workshop for non- developer women and their friends. We do cover loops and data types on Saturday morning, but then all afternoon is projects -- building programs that cheat at scrabble, access twitter, and draw colored grids.

I totally understand why experienced programmers teach the way they do -- it's what they'd want to know. But the focus should not be on the language, it should be on the skill of how to program regardless of language. And yes, that's really hard to teach.

</comment><comment><USER36> Perhaps a good way to teach people beginning programming would be to show them how to use a simple web framework.

It would have to be something purpose built to be easy though probably with a dedicated language.

A bit like this:

No libraries or APIs , everything required is built into the standard library.

Database is a simple key/value store that can be used transparently within the language. Something like "Store X = 3" and "Get X" where X is the key name.

Of course you would need some form of lists too, not sure what a friendly syntax for that would be.

Very simple looping syntax, in my experience beginning programmers struggle with this more than anything else.

Something like, "do X 3 times" where of course X would be a a subroutine, this would make functional programming seem quite natural later.

A WYSIWYG HTML editor that can integrate seamlessly with the language itself. Save teaching HTML/CSS until later.

Very friendly error messages that provide links to simple documentation that explains where they have most likely made the mistake.

Documentation should include many videos as well as text.

Graphical debugging should also be taught through a super simple debugger that just dumps the values of every variable at a breakpoint and allows users to browse the DB.

One click "deloy to web"

</comment><comment><USER37> is this the same with foreign languages as well? Noone really wants to know the rules of a grammar. They just want to impress others, understand anime or foreign tv shows, or curse in another language

<comment><USER38> I can say the same about programming languages. I'm reluctant to learn a new programming language because I don't want to spend time learning the library, the syntax, and any other intricacies. All I want is that one cool feature that X language has that Y doesn't.

</comment></comment><comment><USER39> I think the biggest fallacy these days is that "programming is easy". I bet pilots think flying is easy, and surgeons will repeatedly tell you cutting someone open and removing this vestigial part of the cecum is routine, but if you did that the patient will bleed to death from the first incision.

My point is that coding might be easy for you, easy for me, and it must be easy for most people here, but the rest of the world?

I'm going to sound like Spock here but most individuals out there aren't logical. People out there don't thing in terms of ¬P->Q, so for them even the basics of programming are very hard, if not impossible to understand.

And even if you work around your limitations and learn how to program there's a long way between "hello world" and the engineering behind the kind of stuff that motivates most people to learn how to code, like building the next Google.

</comment><comment><USER40> That remembered how I learn programing, at the beginning of the course I wasn't at all into that, learning pascal, printing words into a black window, but when I started my project, I got a goal and it become very fun and I was very enthusiastic into that...

I think sometimes the common sense of the right way of doing things its not the best way, other thing that comes to my head about that, is when you end up in big projects with very complex design patterns applied but since nobody b-sides the creator fully understand the pattern, and the shift of people in the project is very high, the thing becomes a mess.

teaching is about enthusiast your students and programing is about make programs with readable code...

but what i really see today, is teaching about be difficult with a ton of unused things, and programing about to be most complex that u can..

</comment><comment><USER41> plenty of people are fine with learning how to program. It's Learning How To Program that people don't want to do. I blame hiring practices TBH. If anything programming should be the ONE field that leaves the bullshit signaling aside and just hires people who can make things work.

<comment><USER42> Shakespeare had it wrong---not kill all of the lawyers, leave them on the list sure, but first kill everyone in human resources. Ask yourself how many times the first question asked in today's interviews is 'Can you do the job?' To my admitted old fashioned way of thinking, it should be the first , middle and last question. Particularly since it is the only question that makes a damn bit of difference. Oh---and then kill all of the lawyers...

<comment><USER43> _first kill everyone in human resources._

Blaming the HR guys for bad hiring practices is like blaming a coder for feature creep.

The fault lies with business directing HR to do things the way they do.

This probably got started when someone infected business with the idea that one should manage people the way xerox machines and staplers are managed.

They changed the Personal Department to Human Resources and lurched into a Red Queen's Race to the bottom.

</comment></comment></comment><comment><USER44> I believe (and teach) programming the way I learn a new language ('Human' language not a computer language).

It should be segmented in a way that at the end of each segment there is a 'reward' (an application of the learning that is considered beneficial/cool by the student) and a 'desire' to learn more to achieve the bigger reward.

So typical segments for a new language could be: \- bragging/showcasing to your family and friends that you know how to count some numbers and words \- being able order food in restaurant in the new language \- communicating with someone who speaks only the new language \- being able to enjoy a TV show/movie in the new language etc

That's why I really like Scratch tool. I can gradually introduce new capabilities (and implicitly new programming concepts).

</comment><comment><USER45> I disagree that regular expressions should be deferred to later. For professionals who are trying to figure out what value programming has for them, regexes have more use than game concepts

</comment><comment><USER46> Randy Pausch helped create Alice, which is a bit like a modern Logo or Mindstorms - helps you create 3d animations and various other cool stuff, while teaching Java syntax.

<http://alice.org/> (and if you haven't seen it yet, Randy's last lecture is amazing... <http://www.cmu.edu/randyslecture/> )

</comment><comment><USER47> On a related note, I put an advert on Gumtree a while back offering to teach/tutor people in programming for free, but didn't get any responses.

<comment><USER48> I'd love to take up that offer, if it's still available. I already know some programming, but I would like to have somebody as a mentor. Send me an email at mocanu_c at yahoo.com if your offer is still available.

</comment></comment><comment><USER49> Well, I do. And I also did, in 1990's, when I was 10 years old.

</comment><comment><USER50> There are two ways to teach programming:

1\. SICP 2\. Everything else

If you think there is a method in (2) that is superior to the method in (1), then please reply to this comment.

</comment><comment><USER51> Can anyone with kids comment on whether or not computers are even exciting and empowering anymore?

When I was eight, we got a Commodore VIC-20. It plugged into the TV and booted into BASIC. Just running PRINT statements and simple loops was unbelievably cool. I learned key positions (and how easily mistakes are made) by spending hours typing in bytecodes printed in magazines. With any luck, at the en of it, a completely unforeseen game would appear.

Getting to play with Logo on the Apple ][e was awesome, too. Shapes and angles and horribly flickering animations were exciting.

Now, it seems to me that the difference between Dive Into Python (or whatever) and Call of Duty are so immense, that even running Hello World would be a disheartening experience. But maybe I'm just too nostalgic.

Incidentally, I distinctly remember from my first proper high school programming course (Pascal) that the instructor asked why we wanted to learn programming. Every single student responded, "to make games."

<comment><USER52> I'm 19, so I've never experienced a terminal running BASIC on a TV screen or anything else from those early days. I think my oldest memory of computers is Win 98.

What got me into programming originally was Lego Mindstorms (the original version, the second iteration was no good). My dad and I made robots that could follow black lines on the ground and read barcodes, and it was all with the drag-and-drop interface Mindstorms ran on. ( [http://www.bouwvoorbeelden.nl/MindStorms/ShootOut_bestanden/...](http://www.bouwvoorbeelden.nl/MindStorms/ShootOut_bestanden/RIS_ScrnTTL.jpg) ) And it was fucking awesome.

It taught the concepts of programming like loops and conditions and variables, but in a watered-down way that took care of the stuff that's not fun for a kid. As you grow you find joy in tackling more complicated things, but as a kid Mindstorms was perfect. Great role-model for any aspiring curriculum in younger education.

Even though it would be way out-dated technology now I feel like Lego should start manufacturing those kits again - they were really amazing. Maybe that would be a good startup idea? Raspberry Pi for kids?

<comment><USER53> I thought the whole point of Raspberry Pi was that it was for kids.

<http://www.raspberrypi.org/about>

<comment><USER52> Meh, I mean they are aiming it at education which I think is great, but I doubt many kids would know what to do with Raspberry Pi if you just handed it to them.

My impression is that the main interest in it has been from older people who like to hack on hardware.

<comment><USER54> That's true of the current ones, but I think the idea is to develop it into a kit with case, manuals, pre-loaded software, etc. to support some sort of programming or robotics curriculum.

Personally, I think it would be neat if the R-Pi could be made into a graphing calculator, which most kids need for their math classes any way (actually they don't need it, but are required to have them). That way, it can be a bog standard calculator by day, and a full Linux workstation by night (after plugging in display/keyboard).

<comment><USER52> Having just graduated high school a few years ago, I'd say graphic calculators are sort of needed. Most of the time a simpler calculator would do the job and having a $100 Texas Instruments is just a luxury because they're better laid out and show a history of operations like a terminal. Even when graphing and matrices were part of the curriculum, those things can all be done by hand if you really have a lot of time, but it would be harder to learn that stuff without a reference to compare yourself to.

TBH I think books, calculators, computers, and basically every other tool kids use in school will soon be replaced by the iPad, or a similar device. If someone can make a cheaper alternative with R-Pi that catches on (very doable), well great.

</comment></comment></comment></comment></comment></comment><comment><USER55> I agree that involving beginners with OOP is a distraction -- albeit a very important principle. But they must be able to write their own modules, functions and classes first then be comfortable with exporting those _then_ OOP can come naturally from that. Most software is still highly procedural in nature (while it may consume and refer to objects) and even in languages like Python where everything is an object you can still write software that has a clearly defined beginning, middle and end. Once you have a handle on all that, you can then start utilising the objects and their properties and that is huge fun in Python and Ruby.</comment>


Nexus 5 and Nexus 7.7 tablet debut this year to compete with the iPad mini - <AUTHOR> http://www.ihelplounge.com/nexus-5-and-nexus-7-7-tablet-debut-this-year-to-compete-with-the-ipad-mini/

<comment><USER2> Stil no Nexus 6?</comment>


Show HN: CallingVault, Google Voice for non-nerds - <AUTHOR> http://callingvault.com/?hn

<comment><USER2> Is there a implementation on top of Google Voice, or a completely separate product?

<comment><AUTHOR> Completely separate.</comment></comment>


Ask HN: Anybody know a good web-based WYSIWYG HTML editor to integrate? - <AUTHOR>

Hi HN,
I've been scouring the Internet looking for a good HTML editor I can integrate into my web app and haven't found anything that actually looks good.
Has anybody here had success with finding a good editor and integrating it into their application?
I'd appreciate any recommendations. <comment><USER3> You've probably already heard of these, but I really wouldn't recommend many of the smaller WYSIWYG editor projects -- they can sometimes be buggy or undeveloped.

You can re-theme TinyMCE if you want a mature, stable, and well-trusted package. The theming system isn't too difficult to learn. <http://tinymce.moxiecode.com/tryit/skins.php>

Also there's the old FCK Editor that got renamed. <http://ckeditor.com/>

<comment><AUTHOR> Thanks. I'm looking at both of those now. However it looks like the CK editor's file manager integration is only for PHP and ASP and my app is Ruby.

<comment><USER4> Someone got this working with ruby (rails). There's a gem/plugin out there that gets the file uploading/system working (I believe it relies somewhat on paperclip,etc). Sorry for being so vague, but I'm sure Google will turn up something.

<comment><AUTHOR> Now that's something. I found the link to this if anybody else is interested:

<https://github.com/galetahub/rails-ckeditor>

I'll have to try it out and see how good it is.

There really is a huge hole in the market for a Rails-integrated WYSIWYG editor. There are tons of PHP ones. What I'm seeing is a lot of people are forced to run PHP on their server just for the editor and load it through AJAX.

Hopefully soon there'll be more ports of editors to Ruby.

</comment></comment></comment></comment><comment><USER5> If you don't mind being on the cutting edge, you can try this: <http://www.aloha-editor.com/>. It's a HTML5 Editor.

Otherwise, I second the recommendations for TinyMCE and CKEditor.

<comment><AUTHOR> Now that is cool. Thanks for the link. I prefer to be on the cutting edge.

</comment></comment><comment><USER6> Another vote for <http://ckeditor.com/>

</comment><comment><USER7> I am also in the process of building my RoR app and need a wysiwyg editor. I have found a gem which installs tinyMCE on your rails app: <https://github.com/kete/tiny_mce> It took me 3 minutes to integrate it into my app. My only backdraw is that it lacks the ability to upload an image - <USER2> I am looking into that now.

Good luck.

</comment><comment><USER8> There's Xinha: <http://xinha.webfactional.com> (I don't know what its current state is)

</comment><comment><USER9> Try <http://tinymce.moxiecode.com/>

</comment><comment><AUTHOR> Does anybody know what Shopify uses for their editor for example?

</comment><comment><USER10> how about a bbcode editor?

<comment><AUTHOR> I thought about that, but HTML really is needed since they'll be editing pages on their own subdomains.</comment></comment>


Ask HN: What happened to serializer.io? - <AUTHOR> Serializer.io was aggregator for different news sources. I am pretty sure one of the HN people made it, hence the question.<p>Domain has expired, can we get it up and running? Does anyone knows owner? I am willing to donate for domain renewal. <comment><USER2> Not sure what happened to the domain, but here are the links to the site ([http://serializer.charlieegan3.com/](http://serializer.charlieegan3.com/)) and the github project ([https://github.com/charlieegan3/serializer](https://github.com/charlieegan3/serializer))</comment>


Interview with Magnus Carlsen, the current #1 chess player - <AUTHOR> http://www.chessbase.com/newsdetail.asp?newsid=6187

<comment><USER2> _"When I am feeling good, I train a lot. When I feel bad, I don't bother. I don't enjoy working to a timetable. Systematic learning would kill me."_

I really like this approach. I find learning how to write software works the same way for me. I tried learning using a schedule, but it never worked for me. It is nice to know there is a chess grandmaster that has the same approach.

<comment><USER3> "feeling good" seems a bit generic here. I doubt he means the same thing as inspiration. The competitive nature of chess and the fact that it is a "game", is usually enough to motivate someone to work harder after winning a few games (ie warcraft). Where as in writing and writing software there are more mental blocks and success and gratifications are generally slower, and also harder to get back on track if you start "feeling bad". So I think discipline is more important in activities that takes longer to feel gratified.

</comment></comment><comment><USER4> I would guess that his "secret" is that he loves the game of chess. I like both chess and Go but realized my limitations (I did poorly in the US Chess Open in 1976, and I never broke the Shodan level in Go) a long time ago; I still play both games, but I prefer to study "famous" games since I am just good enough to appreciate other people's great games.

</comment><comment><USER5> He sounds pretty crazy... par for the course for chess champions of course.

There's a lot to read between the lines with what he says about Kasparov... and he already thinks he's better.

<comment><USER6> Well he is better than Kasparov now. If they played a match, he'd definitely win.

<comment><USER7> You are right that Carlsen would probably win, but not because he is "better". I remember Kasparov himself commented on this issue recently, saying something like since he doesn't already plays competitive chess, his intuition is not that sharp, while Carlsen is more in shape.

Overall, I consider Kasparov to be the best chess player ever, while Carlsen has a potential to be at least as good as Kasparov was in his best years. Overall, I am happy that those two came together.</comment></comment></comment>


About writing good emails and being actionable - <AUTHOR> http://www.alexanderpeiniger.com/2013/03/about-writing-good-emails-and-being-actionable/

<comment><AUTHOR> What are good emails from your perspective?</comment>


Ask HN: How do you cope with the existential dread - <AUTHOR> How do you get through the day without dwelling on how meaningless and futile everything is? Do you distract yourself or have you found away to address this feeling? <comment><USER2> 1\. You don't. Like any other thought, it is always there to think. It is up to you to refocus if you do not desire to focus on it.

2\. You give in. Let it consume you. And then let it leave you. Don't spend time there looking beneath each rock, but observing as if from a moving train, behind glass. The lynch/felinni movie changes from 1st to 3rd person, and you can reframe the mindset.

3\. Behaviors aren't erased,but replaced. Find a replacement feeling/thought/action. One that is always appropriate.

4\. Install the new behavior. Find the trigger, then find a new trigger that reliably happens before the original one. You reroute behavior, not actually replace it.

5\. Run the path, make a trail. Starting just by imagining yourself achieving outcome. Then 'make' yourself veer toward the old behavior and notice the new behavior begin to take over. 3 times confidently is the magic number.

6\. Revisit after a while. All installed automatic processes need to be reviewed as your life changes. Behaviors are only good or bad in relation to the environment. A new location, or stage of life, needs new programming.

7\. Laugh. Everything is only as meaningful as you make it. There is fleeting joy in existance. Do something stupid, that you love, and just awash in it. The hedonists aren't on the path to nirvana, but they sure get closer than the stoics.

</comment><comment><USER3> 1\. There is such a thing as a perfect circle; it just can't exist in reality.

2\. There's a God. and I just ain't him.

[http://www.patheos.com/blogs/acatholicthinker/2015/08/there-...](http://www.patheos.com/blogs/acatholicthinker/2015/08/there- is-a-god-and-im-not-him-thoughts-on-god-anxiety/)

</comment><comment><USER4> Antidepressants.

</comment><comment><USER5> I've struggled with an existential dread of death since I was about 9, and I have a spectrum of coping strategies which work for me to some extent. YMMV.

First and most important is trying to break the habit- and it is a habit- of thinking about things which set off that introspective nosedive. It's not easy, but CBT offers s good tool set for mindfulness and thought stopping. The essential "trick" is to recognize those thoughts, and then redirect without spending too much time on the recognition or redirection.

Distraction can work, but occupation is even better. In other words, listening to an audiobook or doing something fun and distracting helps, but being involved in life, work, friends, etc is much better. The greater your connection to the real world of people, the easier it can be to disengage from the internal world of your own thoughts.

Don't go deep! If you find yourself trying to think your way to the bottom of your dread, you will discover that there is no bottom, and it's easy to get lost.

Consider whether or not this might be clinically significant, i.e. depression, anxiety, and such. If so, it may be worth seeing a professional about this, as your preoccupation with futility may be a symptom and not a cause.

Get sleep, and especially try not to get lost in your own thoughts late at night, or when you're tired. Everything seems worse and feels worse at night, and when you're tired. Audiobooks or radio can help as a distraction to get to sleep, and I recommend listening to something you've already heard so it doesn't engage you _too_ much. Put the volume down until you can _just_ make out the words.

Meditation.

Hang in there, it will get better.</comment>


Ask HN: Open Source project using MySQL as a schemaless datastore - <AUTHOR>

I'm looking for an open source framework that uses MySQL as a schema-less datastore like the one described here http://bret.appspot.com/entry/how-friendfeed-uses-mysql<p>One option would be to use MongoDB but for this particular project I'm constrained to use MySQL. <comment><USER2> InnoDB provides a schemaless datastore and can be used directly. A couple of results for a quick google search for "innodb nosql":

[http://yoshinorimatsunobu.blogspot.com/2010/10/using- mysql-a...](http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as- nosql-story-for.html) [http://blogs.innodb.com/wp/2011/04/nosql-to-innodb- with-memc...](http://blogs.innodb.com/wp/2011/04/nosql-to-innodb-with- memcached/)</comment>


Postman – Now available for Windows - <AUTHOR> https://www.getpostman.com/apps <comment><USER2> Spelunked the site for a while, but couldn't figure out what it does. Could not find an About page, for example.

<comment> et-al Sends http requests. A curl limited to http with a nice GUI.

(You have a valid critique about the site. Their meta description is actually much more informative: _Postman is the swiss army knife of API tools, allowing you to design, build, test, document and monitor your services, all in one place. Postman is available for Chrome, Mac OSX and Windows. A Linux app is coming soon!_ )

</comment></comment><comment><USER3> So now that Google is killing off Chrome Apps, what are the chances we get a Mac version?

<comment><USER4> Postman has a Mac version too: www.getpostman.com/apps

</comment></comment><comment><USER5> What are the advantages of this over Chrome?

<comment><USER6> Chrome apps are dead as per Chrome. This was a good move.</comment></comment>


Google Buying Groupon is a Flawed Idea - <AUTHOR> http://continuations.com/post/2059456126/google-buying-groupon-is-a-flawed-idea <comment><USER2> Two points:

Groupon should want to get out of this market, it's a race to the bottom, the days of skimming 50% off the top are going away as services like LivingSocial, GiltCity, and a billion other knock offs drive profit margins lower and lower.

Groupon recently launched their Merchant Center ( <http://www.groupon.com/merchants/welcome> ), which seems right up Google's alley. This kind of self-service, low-margin, high-volume, set-up is the kind of thing that Google has the scale to completely dominate. I think Groupon's brand + Google's Scale could equal profit, and if Big G is looking at that this deal might make sense after all.

</comment><comment><USER3> The most interesting aspect of this deal is that even though Google is today's most engineering-focused major corporation and the biggest advertising company in the world, a consensus is emerging that they're incapable of successfully developing new products or expanding into new advertising markets on their own.

<comment><USER4> Why create a competing product from scratch when you can afford to buy the proven product? And don't forget about all of the existing Groupon employees you could hire.

<comment><USER5> Because once you enter the mode of acquiring your way into new products, it's hard to shake it; it distorts the internal incentive structure.

<comment><USER4> _once you enter the mode of acquiring your way into new products, it's hard to shake it_

If you've been following Google, then you know they are no stranger to acquiring existing products. And as far as I can tell, their business isn't going down the tubes.

</comment></comment></comment></comment><comment><USER6> The defensibility part is what raises red flags for me, I wonder why Groupon _would_ sell right now when they seem to be on a twitter or facebook style trajectory. It would seem like even the board of Groupon may see some real risk in their ability to maintain market share so might see now as the right time to exit.

<comment><USER7> My uneducated guess: they see more stats that show most business owners aren't too keen on the service, especially AFTER they give it a chance. Even services with a seemingly big trajectory can fail due to these sorts of a customer retention problems.

<comment><USER8> Exactly. Project out GroupOn's likely future and selling out quickly starts to look very attractive to their investors.

</comment></comment></comment><comment><USER9> I have said this before somewhere, but Google as the new MSFT has the classic MSFT problem - die if you do, die if you don't.

They are a cash machine, which, sitting idle in the bank will invite ire from investors. If they invest in something, they will still get hell, since, there is a valuation bubble and anything worth picking up will wind up with them overpaying for it.

In Google's case there is little that they can pick up in their core domain - they already slurp up most of the decent emerging talent related to search even as their dissertations are being drafted. The online domain has very few companies that even justify a billion dollar valuation even in adjacent domains that Google makes its living off.

p.s: I'd love to have this problem.

</comment><comment><USER10> I personally wonder how heavily the Groupon brand affects the way Google is thinking about this.

The Groupon model is reproducible, esp. by Google, who has an army of sales reps. But the brand isn't, and I can't help but think Google wants badly to keep it out of someone else's hands.

There will be a lot of money to be made through the Groupon model for a long time to come, and I can understand Google hating the idea of fighting for brand recognition against Groupon should it get in the hands of Microsoft or Yahoo.

I'm guessing, of course, but the Groupon brand is f###ing golden.

</comment><comment><USER11> Google wants to buy Groupon for the relationships it has built with local businesses, not the revenue model.

<comment><USER8> Excellent point. Even though many of these relationships aren't particularly positive, Google will probably be able to convince most of them to give it another try -- and perhaps package it with SEO to make it even more attractive.

<comment><USER11> I think it's a move to improve Google's local search capabilities. I don't know how sustainable Groupon's revenue model is in the long run.

I'd be curious to know the percentage of new repeating customers that businesses attract after a Groupon deal. Attracting deal seekers is very different from attracting someone who will repeat long term.

</comment></comment></comment><comment><USER12> I agree with this - the two corporate "cultures" (not sure if that's the right word) don't seem like a good fit and Google is going to absorb a lot of headcount at a much lower revenue / employee ratio than what they're used to. It's a great deal for Groupon though!

</comment><comment><USER13> While I don't think Groupon is sustainable as the darling of both consumers and the businesses who use it to sell, one aspect of the deal that makes sense to me is that it makes Google a viable first destination when someone is wanting to purchase a product (when they integrate Groupon in searches). When purchasing intent is there, Google makes significant revenue on searches.

As Eric Ries has broken down, as long as the e-commerce world is sufficiently fragmented, users will prefer an intermediary like Google to help them find the right product or merchant. This deal, if it went through, is a step by Google in keeping e-commerce fragmented.

</comment><comment><USER14> That's a conventional way of looking at it, but what if that big people- network is exactly why Google wants Groupon? Google has been critisized for not having good support or any kind of retail presence and this _could_ be a way to shore up their weakness in this area.

</comment><comment><USER15> I feel like this is Google's version of Yahoo buying Skype. Overpaying by billions of dollars, marking one of the large failures during Yahoo's decline.

<comment><USER16> As far as I know, Yahoo never bought Skype. I think you probably meant eBay.

</comment></comment><comment><USER17> I don't have a reasoned argument composed to back it up, but my gut reaction is that this is where/when Google jumped (is jumping) the shark.</comment>


Show HN: Cakcuk, a Command Bot Interface for building CLI on Workspace - <AUTHOR> https://cakcuk.io <comment><AUTHOR> Hi HN!

I'm the creator of Cakcuk. I built Cakcuk for simplifying integration with HTTP/S endpoints with CLI-based experience on Slack at first. But, preparing as well to support the other workspaces.

Any feedbacks are welcomed!</comment>


Ask HN: Is it possible to be a good programmer? - <AUTHOR>

I think given the nature of programming as it stands it is not. It is possible to be good at thinking computationally, but when it comes to platform specific implementation details and changing requirements not much can be done. <comment><USER2> I admire your courage to basically call everyone on this site a bad programmer ;-).

I also disagree with you. Why do you think nothing can be done about changing requirements? I also don't see how a client/boss changing requirements makes me a bad programmer. This is in same line of thinking as saying someone is bad at sports because sometimes it rains when they go to the park to play.

AS for platform specific implementations details there are people who have built entire careers around being experts in platform specifics.

<comment><USER3> _I also don 't see how a client/boss changing requirements makes me a bad programmer._

Being able to take vague and changing requirements in your stride and still deliver something that the end user actually wants (as opposed to what the end user asked for/thinks they wants), is the hallmark of a great programmer. The more I work as a programmer the more I realize that simply typing code is just a small part of my job (and the easiest part).

 _This is in same line of thinking as saying someone is bad at sports because sometimes it rains when they go to the park to play._

It's more like a player complaining that the reasons they suck is that all their teammates can never pass the ball right. Everybody can catch/score off of a prefect pass, what makes someone great is managing to adapt to and deal with a bad pass.

</comment></comment><comment><USER4> If by good programmer you mean someone who produces code to some notionally optimal level in a real world environment then, sure, that's close to impossible.

If you mean someone who knows everything about every facet of computing then that ships probably sailed too.

If you mean someone who delivers software that changes the way people live and work in meaningful ways then it's most definitely possible as I see the evidence every day.

</comment><comment><USER5> > It is possible to be good at thinking computationally, but when it comes to > platform specific implementation details and changing requirements not much > can be done.

Its quite possible to be an expert at platform specific implementation details for various platforms, or to be good at analyzing new platforms and understanding those details, so that part is something one can be good at, or not, too.

Its also possible to be better or worse at designing software to be maintainable in the face of evolving requirements.

</comment><comment><USER6> I've never been in a situation where programming was an "end" in and of itself. It has always (for me) been a means to an end.

So, I think: yes, it's definitely possible to be a good programmer. If your work-activity furthers the larger goals that you're working towards (in an effective and efficient way), then you're pretty good in my book.

</comment><comment><USER7> Fast, Good or Cheap. Pick Two.

Guess which two corporations want?

<comment><USER8> FastGood & Cheap?

<comment><USER9> Ah, FastGood(TM). A quality brand if ever I saw one.

</comment></comment></comment><comment><USER10> We need to define the term "good programmer". Then we need to find a way to measure it and only then we can try to answer your question.

</comment><comment><USER11> Yes, but only to the degree it is possible to be an evil programmer.</comment>


75 percent of Japanese still haven't heard of Facebook - <AUTHOR> http://www.cnngo.com/tokyo/life/75-percent-japanese-still-havent-heard-facebook-706831

<comment><USER2> actually that's about the same percentage in China. Which is a more significant number considering the amount of people.</comment>


Circuli: A game like ambient music generator - <AUTHOR> http://www.earslap.com/projectslab/circuli

<comment><USER2> I'm trying to make a pattern such that the dots always travel in one direction. Is it possible?

<comment><USER3> [http://earslap.com/projectslab/circuli?q=11811v6819v2052811_...](http://earslap.com/projectslab/circuli?q=11811v6819v2052811_974oo83k4_3o273733k70073o127kooo6o32321)</comment></comment>


On Monoliths and Microservices - <AUTHOR> http://dev.otto.de/2015/09/30/on-monoliths-and-microservices/ <comment><USER2> This architecture and the ferocity with which they implemented it (No service calls!) seems very alien but they obviously thing the benefits outweigh the problems.

Does anyone else do this?

<comment><USER3> I've built a couple of systems using this method in my early days of attempting to smash large systems down into smaller ones (around 2006-2011), and explicitly using ESIs and then Varnish ESIs as the layer of orchestration and integration.

There used to be some real drawbacks to this, especially as Varnish wasn't really happy with potentially hundreds of ESI calls per HTTP request, yet that was what we were doing (a call to a JSON API that returned a collection of things would create a document that contained ESIs pointing to each thing, and each thing could also contain ESIs to hydrate themselves, and so on).

One of the interesting bugs was that if you had a lot of ESIs then only the first 10 or 20 succeeded, and the rest did not. We raised bugs for this at the time (Varnish 2.1.4) and they were all resolved (by Varnish 3).

Varnish is great at this now and this approach can and does work, but it does still require discipline to ensure that other pitfalls are avoided (circular references, how to handle errors if you are serving non text/html, how to prevent putting a strain on Varnish now that you're forcing it to orchestrate and manage connections for all subresources).

But yeah, it works.

However... I personally moved away from building this kind of thing as it really wasn't an elegant solution.

This approach made it more difficult to add things like tracing, soak testing of new endpoints, and many other things that really increase in importance after you've gone through the first iterations of many simple v1 services.</comment></comment>


A Chrome Extension for HN - <AUTHOR> https://chrome.google.com/extensions/detail/mkdhfabjcebcgnpgnhefebefiabhmbfn/

<comment><USER2> Not to be a downer or anything, but do you think this would encourage voting cabals? If I noticed every post my friends added, I'd probably end up upvoting them quite a bit more, and perhaps quite artificially.

<comment><AUTHOR> It is kinda against the spirit of HN, technically. But I wrote this to scratch my own itch, because I personally know a number of users here, and I am a fan of quite a few others. I just want to make sure I see when they post.

But if you've ever met me you would know that I don't hesitate to disagree with _anyone_. So, I don't think this is a problem for me, I', quite prepared to downvote inanity when I see it, highlighted or not. Neither am I the type to just scroll down a page clicking upvote after upvote.

You mileage, of course, may vary.

</comment></comment><comment><AUTHOR> Source code here: <http://github.com/bkudria/hackerfriends> I'm still working on cleaning it up and refining it - this is my first ever Chrome extension, so go easy on me. Suggestions and patches/pull requests of course are super welcome.

(BTW I highly recommend anyone wondering about writing Chrome extensions to give it a go. The API and docs are stellar, and it's super-easy to get started.

<comment><USER3> Have you ever done extensions for Firefox? If so, how does the experience compare?

Either way, this looks great. Thanks for making it.

<comment><AUTHOR> I haven't done any Firefox development, alas, so I can't compare.

</comment></comment></comment><comment><USER4> Thanks, I've been wanting this feature. It's good I like it.

I'd rather the color of the friends names be the same orange as around the Y in the logo; it looks brighter on my monitor. And, I wish friends posts on the main page weren't quite as dark, and possibly not bolded. There, but more subtle.

Thanks again.

<comment><AUTHOR> I spent some time playing with the styles, and I didn't really bother to match the orange. In a future version I plan to make the colors configurable.

In the mean time, there is a CSS stylesheet you can edit!

</comment></comment><comment><USER5> Oh damn... I thought it might be an extension to remove ipad and apple stories from the front page... although that could leave it pretty empty.

</comment><comment><USER6> very cool. I like it.</comment>


Perceptions of Code Quality - s-macke http://qaware.blogspot.com/2017/12/i-know-it-when-i-see-it-perceptions-of.html <comment><AUTHOR> In my experience coming from a multi-paradigm background the difference is experience writing code. A newb tends to argue about things like tabs versus spaces, latest trends, and easiest abstractions. Rockstars don't care about any of that and instead focus on performance, predictability, and simplicity.

This can cause a fair amount of friction as simplicity isn't easy and newbs cannot differentiate those terms. Simplicity is the fewest instructions to perform a task, which often means fewer conventions and rituals in the code.

<comment><USER2> You mistake simplicity for performance. Simplicity is about lack of interleaving of abstractions, it's about one concept, one task, one role, single responsibility etc. I recommend Rich Hickey's talk "Simple made easy" for that matter: [https://www.infoq.com/presentations/Simple-Made- Easy](https://www.infoq.com/presentations/Simple-Made-Easy)

<comment><AUTHOR> Performance is faster execution and lower resource consumption. Perhaps this isn't so much a factor anymore with low level languages, but in high level languages with several layers of abstractions and giant frameworks there are huge opportunities for writing faster code.

</comment></comment></comment><comment><USER3> I've noticed a disconnect between people we bring on the team that have a heavy oop style or do brilliant things in low level code but they lack writing code for teams fresh out of college. I remember writing magic code that did convenient abstractions for me in the background when I programmed for myself but I quickly learned this sucks when I found out someone provided me with a function that doesn't follow single responsibility in a team environment. When you work in a team write for a team, I tell everyone to write for a imaginary jr developer starting the next day who's going to read your code on day one.

<comment><USER4> I'd boil it down to two statements.

* Avoid magic, be idiomatic.

* If you create something even slightly non-trivial, explain it in documentation.

</comment></comment><comment><USER5> Interesting that for students and devs, colleagues were the best meter for code quality, but academics ranked textbooks higher. Mirrors what I've seen as a research assistant for the CS department of my university, which is roughly "I don't care what the code looks like as long as it works". At places in the industry I've worked, I've spent a significant amount of time arguing about the "right" way to do things. And some (not most) of the time they'll have almost no effect on performance, functionality, or end-user impact at all, but we still do it.

<comment><USER6> > _And some (not most) of the time they 'll have almost no effect on > performance, functionality, or end-user impact at all, but we still do it._

And-that's-okay --- the effect isn't on today's but tomorrow's: performance, functionality, _and_ end-user impact. As long as a business/org is developing stuff that's "here to stay" \--- in-house solutions or software products with a life-time expected beyond a 0$-mobile-app's 15 weeks-to-months of fame in the best case --- it will or should be _hugely_ motivated to learn from what you and others have to say in the "code quality" department. If only to avoid twice-a-decade whole-system-rewrite pains & costs.</comment></comment>


F*EX - <AUTHOR> http://fex.belwue.de/index.html <comment><USER2> It's refreshing to see F*EX on the front page on HN (usually dominated by third-party web services). This is something that you can self-host with no strings attached!

FEX is great to cross organizational boundaries (that is, whenever ssh isn't an option). It's actively developed too.

For non technical users we're also having DL[1], self-hosted as well. It includes a thunderbird extension that cut our usage of attachments to zero.

[1] [https://www.thregr.org/~wavexx/software/dl/](https://www.thregr.org/~wavexx/software/dl/)

</comment><comment><USER3> I usually send files to friends by hosting a local web server (python -m SimpleHTTPServer) then forwarding the port via ngrok (ngrok 8000 http)

I understand why this isn't a widespread solution, but it works great, and use it to share big files with non-technical folks (just give them the ngrok link).

</comment><comment><USER4> Since the site is down, this is the summary from the Google cache:

       F*EX (Frams' Fast File EXchange) is a service to send
       big (large, huge, giant, ...) files from a user A
       to a user B.

       The sender uploads the file to the F*EX server
       using a WWW upload form and the recipient
       automatically gets a notification e-mail with
       a download-URL.

</comment><comment><USER5> For sending large files over the internet P2P, I've found things like instant.io and file.pizza to be immensely useful

<comment><USER6> Those look cool, but how are those sites any different from creating a torrent of the files you want to share yourself, and then sending your recipient the magnet link?

<comment><USER5> For instant.io, I don't think there really is a difference, other than that I can get people who don't know what a torrent is to download the file. And file.pizza doesn't use WebTorrent at all, it's just a plain P2P transfer over WebRTC.

</comment></comment></comment><comment><USER7> Looks cool!

Feature request: https

<comment><USER8> Proxy behind a web server and you can use whatever protocol you want. Doesn't really make sense to reimplement that kind of stuff in every app.

</comment></comment><comment><USER9> hug of death

<comment><USER10> [https://webcache.googleusercontent.com/search?q=cache:http:/...](https://webcache.googleusercontent.com/search?q=cache:http://fex.rus.uni- stuttgart.de/&num=1&strip=1&vwsrc=0)

</comment></comment><comment><USER11> This seems to be an outdated url – the correct url is [http://fex.belwue.de/index.html](http://fex.belwue.de/index.html)

<comment><AUTHOR> Looks identical to me, except that the header is centered.

<comment><USER11> The archived version says it's the new url: [https://web.archive.org/web/20170603213157/http://fex.rus.un...](https://web.archive.org/web/20170603213157/http://fex.rus.uni- stuttgart.de/fex.html)

<comment><USER12> I work at BelWü and can confirm we're hosting the current version.</comment></comment></comment></comment>


My crazy idea for making email better - <AUTHOR> http://joerussbowman.tumblr.com/post/8950098782/my-crazy-idea-for-making-a-better-email-server

<comment><USER2> So, there'd be another layer of indirection, and not only would I have to download the email, I'd also have to fire up a browser?

And the link would point to something that's never guaranteed to remain there, or remain the same? Something next to impossible to archive or download for later reading?

No, thank you.

If I want a collaboration platform, I will use something that's designed to be one. I want my emails as emails. Something I can store on my computer, something that does not change. Something I can archive, and quote from later.

<comment><AUTHOR> Building plugins for major email clients would be a necessity. How to get people to install those plugins would be a bigger challenge than building them.

Right now I'm thinking that at least for read messages, archives of revisions would need to be kept. If a message was never read I'm not sure it's necessary to keep a revision of it though.

<comment><USER2> It's still a pain to archive, and requires extra network roundtrips even in the best case. I not only need to be able to access my mail host, but wherever else the link is pointing to aswell.

When I'm checking my mail on my mobile phone, I'm sure as hell do NOT want to make extra network roundtrips just to be able to see my mail.

It's also far harder to index, sort and search in the proposed scenario: while I can quickly file an email under any label or folder I choose, and be sure that it will stay there, have the same contents forever, and I can search it easily, the proposed scenario does not allow for that. While I can still file and label the emails that have the links, I cannot easily search in the contents, unless I archived that separately, or I go online.

Again, a lot of indirection for no real gain. I can already use something like <http://gist.github.com/> or the various pastebins, and a multitude of other solutions if I have a particular problem where they are appropriate.

But for everyday mail? Why would I want to do that? It just makes things more complex, for no purpose or gain at all in the vast majority of cases.

<comment><AUTHOR> I didn't even consider mobile access, which of course these days should be one of the first things considered.

You've given me a lot to think about, thank you very much for taking the time to respond.

I'm still convinced I can turn this into a marketable product, but the challenges will be bigger than I first thought and it definitely will not be for everyone.

Maybe I should approach it more of being a collaboration platform that can use email as a form of initial discovery for participants rather than as an enhanced email platform. Then I could also expand it to include other delivery methods as well. Want to collaborate with someone on Twitter and don't know their email, send it to them via Twitter.

Thanks!

</comment></comment></comment></comment><comment><USER3> > Read receipts wouldn't be dependent on the client supporting them and the > recipient agreeing to send it.

From the recipient's point of view, that's worse.

> ... allows the sender to go and edit or even delete the email after sending > it.

From the recipient's point of view, that's worse.

<comment><AUTHOR> For some cases, yes. For most cases, I'm not so sure. I will state that this is probably not a solution for everyone and for many cases the traditional functionality of email may be not only preferred, but necessary.

On point 1, how often, for the practical purposes email is intended for, does the average person not what the sender to know they've received their email? It's a messaging platform and acknowledgement is part of communication.

On point 2, does the recipient really need to see the message as it was first sent, or do they need to see the message the sender intended to send?

Working as a sysadmin myself, I can see where it may be necessary to keep a revision history of the message. I'd of course have to disclaim that up front to parties using it for sending.

But, thinking about that, it also means server side I'd have a bit more control over controlling it as a spam delivery platform. The only thing sent to recipients is a link. If there's spam or malicious content within the body of the message I could delete all the messages server side. No more worrying about they guy who's on vacation that comes and clicks on the link when he gets back. On that front it might make sense to build the server as a commercial product at some point, though really this functionality could easily be baked into Exchange, Zimbra and other products if the Enterprise went with webmail interfaces only.

<comment><USER3> I usually don't mind the sender knowing I've read their e-mail, but I do mind them knowing exactly when I read their e-mail, and I mind them being able to infer when I read e-mail in general.

I mind the sender being able to delete messages from my mail archive. The sender being able to update the message they sent me is fine, so long as I can still get at the original message and forward it to my boss.

If you can remotely delete spam after spammers have sent it from your server, then spammers can update all your sent messages to be spam as soon as they break into your server.

<comment><AUTHOR> I see your point on the first item. Going to have to give that some thought.

Archive history for any messages read will probably be necessary no matter what. I'll basically have to version all edits and make sure access can be granted in some cases to archived messages both for the sender and recipient.

As for the last point, that can basically be done on any email provider that allows you to store messages on the server.</comment></comment></comment></comment>


How we go from idea to prod in 20 mins using Docker, Fleet, Go and microservices - <AUTHOR> http://read.payne.io/2015/02/04/20-minutes-to-production.html

<comment><USER2> s/idea/minor feature request/</comment>


I know people are important. Is this a good job description? - <AUTHOR> http://chicago.craigslist.org/chc/bus/2233322361.html

<comment><USER2> LOL...IS YOUR TOMATO SAUCE RED?

           IS YOUR SHIT BROWN!</comment>


Solar Cells Made Obsolete – 3D rectennas aim at 40-to-90% efficiency - <AUTHOR> http://www.electronics-lab.com/solar-cells-made-obsolete-3d-rectennas-aim-at-40-to-90-efficiency/ <comment><USER2> Very few details on that site, the original article (cited by electronics- lab.com) at eetimes.com has a lot more detail.

[http://www.eetimes.com/document.asp?doc_id=1327819](http://www.eetimes.com/document.asp?doc_id=1327819)</comment>


Switching from Homebrew to Nix - <AUTHOR> https://blog.errright.com/switching-from-homebrew-to-nix/ <comment><USER2> I always get drawn in by these things. "Here's a tool you know and love, and here's why it sucks and you need to change." I remember feeling the exact same way when I switched to homebrew from macports from fink.

</comment><comment><USER3> I run NixOS as my main OS and sometimes I have to test my cross-platform software on OS X. For those situations it's nice to use Nix instead of having to use a foreign package manager.

</comment><comment><USER4> Homebrew supports binaries as well ("bottles"). I rarely have to compile anything when using it.</comment>


Bill Gates Speech Transcript - Scalability Day 1997 - <AUTHOR> http://www.microsoft.com/presspass/exec/billg/speeches/1997/Scale.aspx <comment><USER2> I remember the Terraserver. It was always messed up when I wanted to check it out. :P</comment>


Neil deGrasse Tyson thinks the universe might be a simulation - <AUTHOR> http://www.businessinsider.com/neil-degrasse-tyson-thinks-the-universe-might-be-a-simulation-2016-12 <comment><USER2> >Maybe everything that's happening is just a simulation being run on a computer by some smarter, higher order being

But if assume that, then maybe deGrasse Tyson thinks it is so not because his mind has the ability to objectively detect reality, but because that higher order being programmed it to so think. And maybe reality is in fact completely different, so the whole idea cancels itself out.

You know, once you decide to assume it is possible that reality is radically different than it seems, you are falling freely, intellectually speaking, and it is a long, long way to the bottom.

And let me add that science done properly assumes that things are mostly as they seem, and moves to differences from that in a much slower and more careful fashion.

<comment><USER3> In cases like this I often recall the following quote:

> All models are wrong, but some are useful.

Assuming we're in a giant simulation and assuming things are as they seem are both rather incomplete models, but the latter is more useful.

</comment></comment><comment><USER4> Why don't people understand the idea that a calculation based simulation is done to predict some information about stuff and not to actually create stuff. A nuclear reaction simulation will tell you how much energy is generated, it will not actually generate the energy.</comment>


Red Hat's Open Decision Framework - <AUTHOR> https://github.com/opensourceway/open-decision-framework/blob/master/Open_Decision_Framework-community.md <comment><USER2> This title has the highest irony-per-word ratio I've ever seen.

<comment><USER3> And why is that? Is this supposed to be some dig against Red Hat for not being open in some way?

<comment><USER4> From what I get, tho I'm only very lightly skimming the news about Linux every once in a while, Red Hat is responsible for stuff like systemd, in which they try to shape the Unix-like ecosystem, breaking standards and conventions, single-handedly with as much democracy as you'd have in Iran. I guess the GP comment references that situation.

<comment><USER5> Red Hat is also responsible for having lots of people on their payroll developing software that Red Hat bashers happen to rely on, but keep forgetting about when releasing their Red Hat hate.

As for systemd, I guess it breaks GNU/Linux standards and conventions, given that commercial UNIX systems have for a long time adopted similar ideas.

<comment><USER6> Commercial UNIX that then got trounced by Linux, or as RH-ites themselves put it: "we won!!!".

</comment></comment></comment></comment></comment><comment><USER7> Is this Red Hat's attempt to hide their systemic Not-Invented-Here syndrome that results in monstrosities like Systemd?</comment>


Apple in 2016: Is the mighty iPhone in decline? - <AUTHOR> http://www.bbc.com/news/technology-35401668 <comment><USER2> If it makes dumb product decisions like dropping the audio jack just to make a slimmer phone, I won't be thinking of iPhone anymore.

</comment><comment><AUTHOR> Betteridge's law of headlines should tell us the answer is "No"

TL/DR: "Apple's stock value dropped to below $100 for the first time since October 2014".</comment>


Ask HN: Looking for a developer to collaborate with - <AUTHOR>

Hey,
Any developers out there would like to collaborate on developing HTML5 and WP themes?
Let's talk further.
Email me: firstname.lastname@example.com <comment><USER2> You will find these subreddits very useful

[http://www.reddit.com/r/codetogether](http://www.reddit.com/r/codetogether)

[http://www.reddit.com/r/collaboratecode](http://www.reddit.com/r/collaboratecode)</comment>


Ask HN: Friends teen brother died. How to get into his computer? - <AUTHOR> Hey guys.
So my friends brother passed a few years ago =(. Under really sad circumstances.
Anyway, the police returned the laptop after 4 years to the family. But didn't tell them how to get in.
It's a windows 7 laptop. We know what half his password was.
The family have been devestated on this over years  - and really want to firstly, check to see if there's any pictures on there of him. And secondly, to use it for their own to always be able to remember him when they're on it!
Any ideas as to how to get past the admin password? :( <comment><USER2> Insert Linux live CD of your choice, mount drive, see if you can read stuff?

That'd be my first thought.

</comment><comment><USER3> Umm, not what you asked about but you could use a Linux live usb/cd to boot the laptop and explore the disk?

I'd highly recommend using Google or SO for such questions. HN is hardly the right place for this.</comment>


Ask HN: Can my company sue me, if I use a patent I signed to them? - <AUTHOR> While working at a company, they patented one of my HackWeek projects. Now if I want to start a company that uses some of the elements of the project that was patented, can/will I be in trouble? <comment><USER2> What exactly do you mean by "they patented one of my..." ?

Patents have named inventors, which can not be companies: they have to be people.

When someone works for a company (actually because of this rule that patents are assigned to individual inventors) they agree as a condition of employment to "assign" the rights to any patents awarded to them in conjunction with performing work for the company (and sometimes not when doing so also) to said company.

So, did they company pay for filing of a patent with you as a named inventor? If so then you signed away the rights to this patent (or you did if they have their legal paperwork straight). You own it as much as I do. You might try asking them nicely for a license to use it -- they might be inclined to help you since to some extent they also need your good will for any future litigation over said patent.

Or, did someone else at the company file a patent covering something that you believe you (not them) invented? If so then prepare to open a legal can of worms.

I guess you might also be saying that the company filed a patent with or without you as a named inventor that you believe is weak (not really a patentable invention) and you're wondering if this is any different than the likely 1000 other weak patents out there covering the same "invention"?

Perhaps if you post more details on the specifics of the situation folks here can help with more accurate advice.

<comment><AUTHOR> To add more information, I built something for a HackWeek at the company, that they now want to patent (with me as the named inventor). However, I have been considering quitting and doing a startup which would involve the thing they are trying to patent, in a small way. If I sign the papers, does this prevent me from using similar software techniques at my future startup?

<comment><USER3> Typically the inventor has to prepare the patent, and it is first to file now. It is then up to the person doing the filing to assign the patent to a company of their choice.

I'd consider filing your own provisional patent ($70), which will never see the light of day unless you continue the application in a year, but will give you the priority date.

Filing, even for a provisional, isn't trivial. To survive the decades-long process, you'll need claims and drawings from the get-go. You'll also need to scour google.com/patents to make sure it hasn't already been invented.

It won't become known for a year-plus after filing that you have this patent application, and by then hopefully the old company will have forgotten about your little technology.

But rather than being sneaky, instead of signing, consider proposing a separation agreement that basically says you're done, everybody's square and nobody's suing anybody for any reason. If they say whoa there, just say you'd prefer not to patent anything because you value your privacy. You're probably hard to replace and I'd never trade a good employee for a patent.

This gives them the choice of firing you (meaning you can file yourself with no contract ramifications) or giving you a free pass on your patent idea.

<comment><USER4> "To survive the decades-long process"

It's not a decades-long process. I've seen it be closer to 2 years.

<comment><USER3> I was referring to "patent process", not "filing process".

Filing application until issue of patent is only the very beginning. You have renewal payments at 3.5, 7.5, and 11.5 years after issue. If you get a restriction requirement, you get to start the clock over each time as your single patent application blossoms into multiple, or dozens, or hundreds, if it's deemed worth the expense. Continuations-in-part and reissues can take it even further.

And that doesn't even bring litigation into the picture. Your patent can be long expired before you file an infringement lawsuit (because you can demonstrate they infringed when it _was_ valid), and that by itself can add 10+ years, as we're seeing in many cases out of the courts.

For what it's worth, I'm on year 9 of the filing-to-issue process for my first patent.

</comment></comment></comment></comment></comment><comment><USER5> Pay for a patent lawyer's time, $500-$1000 (or less if you're lucky). Or some clever combination of retainer or something.

It'll save you 10-100x that much in pain and suffering. And it always pays dividends to talk to a professional.

</comment><comment><USER6> I am not a lawyer however I went to law school and know a bit. First, get a lawyer. Second, be prepared to hear that you do not own the project any more so yes you can get sued and you will lose and you will owe a lot of money.

</comment><comment><USER4> It's not worth it. You'll have other, more valuable ideas. Let it go.

Odds are the company won't understand this, or that only you could make this idea work (in a sense ideas choose people, not the other way around), and the patent may end up being useless to them. It's ok. Let it go.

</comment><comment><USER7> Look for prior art as that is likely your only way to use similar software techniques outside the company. But if you are still working at the company then you should push as hard as you can internally to get them to support the work that interests you, eventually they will get sick of hearing about it and let you do what you want.

</comment><comment><USER8> You should consult a lawyer, but typically a patent can be enforced if all the claims are met.

If your new startup does something similar, but with enough variations that you can prove doesn't meet all the claims (here is where you need the lawyer), then you're good.

<comment><USER9> IANAL (not a lawyer).

Be very careful with advice like this.

Patents of different classes of claims, dependent and independent, for example. Some stand on their own, some don't. Patents encapsulate lots of claims, and violating any one of them can represent a significant IP infringement and could lead to damages.

Your advice about 'enough variations that you can prove doesn't meet...' is dangerous. What you mean to say is that, "if you are willing to spend up to and potentially beyond $100,000, a jury might make the determination that you did not infringe." Lawyers don't determine whether or not you infringe, juries do. And, the most common resolution in IP is ceasing activities or licensing, which are usually settled out of court.

<comment><USER8> It was not an advice, it was a comment on HN (I'm not a lawyer either, so I can't provide advices.)

</comment></comment></comment><comment><USER10> If it is their intellectual property now, then yes. Even if they aren't actually mad at you for using it, protecting assets is a part of business. Valve did this quite a few times.

</comment><comment><USER11> Yes (== trouble), unless you have specific written agreement allowing you to use patent as well or use that specific technology.

I guess you don't have (such agreement).</comment>


Ask HN: What are your favorite keyboard/terminal shortcuts? - <AUTHOR> <comment><USER2> My every day use shortcuts:

ALT => enable "column mode" to select columns with the mouse

CTRL+C => stop the currently running command

CTRL+N => new window

CTRL+T => new tab

CTRL+W => close tab / window

CTRL+U => delete line till beginning

CTRL+A => jump to beginning

CTRL+E => jump to end

* On MacOS you might have to replace CTRL with COMMAND</comment>


Github resume blames you if it can't load your profile - <AUTHOR> http://beezee.github.com/Development/2012/09/02/please-stop-breaking-my-github-profile/

<comment><USER2> I agree, but is this really something that needs to be a blog post? You could have easily commented it on the HN post or sent the author an email. This brings to mind the recent discussions of negativity on HN.

<comment><USER3> This is a problem that affects a lot of people that post on HN -- as in, their websites blame the user -- so the blog post helps everyone, right?

<comment><USER2> Yes, but so would a comment, and it would come off as more constructive and less self-promotional.

<comment><AUTHOR> not that I mind a little traffic to my blog, but as I've mentioned in a few spots now this was more of a strategic choice in the sense of how I might incentivize the repo maintainer to give a crap.

</comment></comment></comment></comment><comment><AUTHOR> Glad to see this got some discussion. Someone else commented on the blog post suggesting I open a pull request, correclty pointing out it would have taken the same amount of time as writing the post. I'll paste my response to them below to clarify why I chose the route I did-

Well aware [I could have opened a pull request] thanks Carina. I took a gamble that this would be a more effective route after opening an issue here <https://github.com/resume/resu..>. and noticing 19 others open, many around 2 years old with code attached and no response. Not sure if you've had a very different experience but I'm pretty cognizant of those factors when choosing who to bother submitting code to at this stage.

I actually did spend a little time putting breakpoints in Chrome before posting, but based on circumstances felt that my best chance to get it addressed was to shed light on the underlying issue in a way that might get a volume of other folks involved.

</comment><comment><USER4> I think it's a great suggestion, but TBH if your seven-figure hiring manager is making a snap decision based on a username and a single tool when she could look at your Github profile directly, I doubt the Github Resumé software is the "weakest link" in this decision-making process.

<comment><AUTHOR> for 7 figures a year I don't care if the company is missing diligence, I want to meet them as far on their side as possible

</comment></comment><comment><USER5> Even better than making this blog post would have been to make a pull request to the public repo that runs the site (<https://github.com/resume/resume.github.com>). It's written in JavaScript. Seeing as you're (<http://resume.github.com/?beezee>) not only an experienced github user but also an experience javascripter, I would guess that it's well within your capabilities.

See a problem in the world? Fix it. Especially when it's trivial based on your skill set!

<comment><AUTHOR> All about this but when I see 2 year old issues on a repo with code attached that have not been answered, I generally don't hold out high enough hopes of getting a response to justify forking cloning editing pushing and opening a pull request. At least with the blog post I had a chance to rally enough attention to make it the maintainers best interest to fix.

<comment><USER5> Good point regarding the chance to rally attention, but it would have been awesome to do both. It's probably 5-10 minutes of work to do the pull request!

<comment><AUTHOR> I can't disagree with you there - while I did spend some time in the Chrome debugger to see if I could find some clues, at the end of the day I'm stingy with my time when it comes to pull requests, largely based on the # of open issues on the repo. Maybe I'm jaded but after losing a few hours to pull requests that never went answered and reading multiple different takes on github etiquette, I tend to play that safely.

</comment></comment></comment></comment><comment><USER6> Well you could have just posted this as a comment in the previous discussion. However, it does bring up the good question of how do you pass the blame around when something doesn't look right? You dont! No matter how many times you tested your algorithm, never assume it will catch a culprit with 100% accuracy and please don't make a program to accuse someone of something. It is embarrassing when you have a false positive and you accuse your paid customers of piracy or when a potential investor gets his email auto-returned accusing him of being a spammer.

</comment><comment><USER7> I think you're over-reacting a bit. Github Resume isn't an official Github service. Some guys created the account "resume" and are using that to generate resumes: <https://github.com/resume>

So, while the critique is certainly valid and this needs to be addressed, so I think "I never asked to have a github resume, and I can't opt out" is a bit of a hyperbole (because Github isn't putting a "resume" button next to your account!)

<comment><USER8> How did they get the subdomain?

<comment><USER9> GitHub provides <username>.github.com to their users.

</comment></comment></comment><comment><USER10> You should probably have raised an issue or debugged this; TBH I think this post is doing you more damage. Rather than fixing something, you moaned about it.

<comment><AUTHOR> see my other comments- not moaning and issues and pull requests are only as effective as the maintainer is willing/interested to respond.

</comment></comment><comment><USER11> If you can't opt-out and a service "blames you" for something that went wrong, i think it deserves a little more than "a comment".</comment>


PMU counters and profiling basics - <AUTHOR> https://dendibakh.github.io/blog/2018/06/01/PMU-counters-and-profiling-basics <comment><USER2> For Java you can do better than perf. Sun's Performance Analyzer [1] has had hardware counter based profiling of real Java (not just JIT-compiled code) for more than 10 years. Open source async profiler [2] seems to be doing a decent job on the data collection side, though, doesn't go beyond a basic flame graph for analysis.

[1] [https://en.wikipedia.org/wiki/Performance_Analyzer](https://en.wikipedia.org/wiki/Performance_Analyzer) [2] [https://github.com/jvm-profiling-tools/async- profiler](https://github.com/jvm-profiling-tools/async-profiler)</comment>