> My secretary prints out all messages addressed to taocp@cs.stanford.edu or knuth-bug@cs.stanford.edu, so that I can reply with written comments when I have a chance.
Totally relate. My two year old son actually prevents me from burning out. Everyday, when I get home, my wife says "your turn!" and I transform into Daddy. We play soccer, we play music, we play, I bathe him, I feed him, I tuck him in.
Code? What cod... wait, right, I'm a developer. Gosh, that problem I'm stuck at is really diffic... Wait, I got it! I know what way to go now and try to solve that.
What's more ridiculous is the assumption that other life forms may somehow understand the messages we send them in our own language. It's so preposterous I don't even know where to begin.
It was more of a ceremonial thing that a practical attempt to communicate with aliens. However they would be able to infer a lot of information from them, albeit not fully translate it. Reminds me of That Alien Message (http://lesswrong.com/lw/qk/that_alien_message/).
What do you suppose we beam to them other than our codified way of communicating? You can only hope they could potentially decipher it to grok some meaning.
How can they even hope to decipher something which is language/culture based ? We even hard a seriously hard time to understand egyptian hieroglyphs (on Earth! From a culture we knew of from many other texts in Antiquity!) until we found a stone where the text was translated into something intelligible. If they have no reference, all communication we send them will seem like garbage to them. Assuming anything else would be foolish.
Not only do have to worry about whether there is intelligent life to receive our message, or whether they understand it, but we also have to worry about the certainty that they will now either be hostile, or else not very intelligent...
Upvoted, not be cause of the tl;dr request, but for the "shocking changes we should all be complaining about". It made me laugh and then think about the peculiar nature of this community.
While OP makes some valid points (i.e. community receptivity), this is something that caught my attention:
> StackOverflow is filled to the brim with people giving fishes.
Perhaps. But those get only a few points. Joel Spolsky wrote about not only answering a specific domain question, but rather writing a comprehensive answer about some topic in a away that it becomes the default answer everyone reverts to when the question comes up again (http://blog.stackoverflow.com/2011/08/reputation-not-rep/)
Not saying my answer is awesome, but I just tried to be comprehensive on a very recurring SQL topic and the community responded very positively to it.
I get it, SO feels like a game. But I use it to hone my skills and learn new things. When I want to learn, I don't ask on SO: I stick to a tag and keep trying to answer something on it. Learned a lot that way.
I only answer questions that aren't googlable. Edge cases in hedge libraries basically. I give comprehensive and detailed answers that reflect the hours of research I had to do. They get upvoted a few points every now and then.
I once answered a Java frameworks question with an opinion. It has gathered nearly a thousand points over the last few years.
The game is broken. Bad answers to stupid questions get all of the points and I raise an eyebrow every time a CV lands on my desk enumerating the candidates SO points.
But it's still a well optimised site that beat experts exchange, so it doesn't matter too much.
You lost me at "to do X in browser Y". One of the main reasons to adopt an experimented and highly used library such a jQuery is that it already deals with the complication of multiple HTML engines. They already solved that problem. Their code is tested and less likely to have bugs than my code.
Most of the "to do X in browser Y" apply to older browsers (cough IE6 cough) and is rarely an issue in newer browsers which have been much better about following standards. If you use automated testing and do cross browser testing via Karma or JS TestDriver, you'll spot the very rare cross browser gotcha.
TBH with an attitude like that, you're keeping yourself dependent on jQuery and therefore preventing yourself from progressing as a professional software engineer.
Progressing as a professional software engineer? Who says that's the goal? What defines a professional? Being able to reinvent the wheel to be a couple of milliseconds faster than one that exists?
No, jQuery may not be around forever...but then again browsers might not be around forever. Should one be completely dependent on jQuery? Probably not. But should one discount the level of genius that's been input into something like jQuery? Sure, if you think that you can write something better than their team. And that brings me to my main point:
jQuery isn't just "Easier." In most cases, it's BETTER.
"Oh but I can write in ajax functionality that's faster/ follows standards/ etc."
Great, but while the edge case dev is doing that 100 others have released their product. And I honestly doubt that whatever the edge case developer has written is THAT much better than what the jQuery team has written.
The best software engineers, especially in a high-paced entrepreneur role, GET SHIT DONE.
>TBH with an attitude like that, you're keeping yourself dependent on jQuery and therefore preventing yourself from progressing as a professional software engineer.
Using a tool because you recognize that it is more reliable than not using the tool is not the same as being dependent on the tool. I've worked on projects well-suited to jQuery where the client didn't want any jQuery dependencies, and I made it cross browser compatible. But it took longer to write that code, and will take longer to maintain in the future, than if I had just used jQuery.
Wow that's an asinine elitest sounding statement. So reinventing the wheel to feature test or browser test pieces of javascript code for rudimentary differences within browsers, that will probably be around less time than the jQuery library, is the only way to progress, as a "professional software engineer" your programming world view is very narrow.
The point of the original article is valid though, you can't have modules including jQuery, just not gonna scale.
It is only by reinventing the wheel that progress is made. Do you want an internet that is still mostly jQuery-based in 5-10 years? Ya know, "640K ought to be enough for anybody."
jQuery made sense before you had somewhat sane module systems like CommonJS+Browserify and Require.js and accompanying build systems.
To keep using a monolithic library that includes kitchens sinks from 2006 when much better approaches exist in 2013 is asinine. I'm really happy that many engineers from the worlds of Python, C, Ruby, Java, Clojure, Haskell, etc. are all crossing over more and more into JavaScript over the past 3 years or so. 90% of all the progress I've seen in the JavaScript work has come from outsiders that show up in the world of JavaScript and DOM and think to themselves "WTF is this shit?!?1 How in the hell have these guys gone almost 18 years without a proper module system and package system"?" and then proceed to code up solutions in JavaScript that provide them the comforts and niceties that they are used to from other programming environments.
I'm primarily a JavaScript developer and I'm very thankful for all the outsiders improving our ecosystem because most of the people in the JavaScript work gave up long ago by not looking beyond jQuery.
Alan Kay said it best when he uttered, "They have no idea where [their culture came from] — and the Internet was done so well that most people think of it as a natural resource like the Pacific Ocean, rather than something that was man-made. When was the last time a technology with a scale like that was so error-free? The Web, in comparison, is a joke. The Web was done by amateurs."
>TBH with an attitude like that, you're keeping yourself dependent on jQuery and therefore preventing yourself from progressing as a professional software engineer.
Well said. Sometimes the easiest way isn't the best for your own future. jQuery will not be here forever. I can promise that much.
Where's it gonna go? Even if jquery.com and all the CDN-hosted copies just fell off the face of the earth, you'd probably still have a dusty fork somewhere. Worse case: you go digging through your browser cache.
It's certainly good to know about the DOM and have some clue about what jQuery is doing, but getting to the point where you can switch to native DOM at will without losing any speed, just to say you can, seems like a textbook case of premature optimization. Do it if you're interested, but not to solve a business problem.
And remembering which browsers use textContent and which ones use innerText is not nearly as important as understanding that the DOM is there, what it does, and being able to use JavaScript to do things that jQuery doesn't have a method for.
In the unlikely case that the Internet explodes and changes such that jQuery is busted but your old DOM knowledge still applies, or you very quickly switch environments to something where it's not an option, what would you do? Well, jQuery was more or less a DOM replacement with some promises and stuff built in. You'd probably just write that. So why not skip the hassle and just stick to jQuery? Learning how things work underneath is valuable and good, but only when it's really an investment—or you do it in a way that doesn't cut your current productivity.
I know jQuery pretty well as I worked with it a lot until about 1-2 years ago and now I'm working on a product that achieves iOS CoreAnimation levels of performance when performing DOM manipulation. That being said, I don't think people should perform native DOM manipulation directly in any app, only via libraries and frameworks.
jQuery was great. Emphasis on the was. It's monolithic and has become long in the tooth and there are now much much better approaches to DOM manipulation that are now achievable. If you keep doing things the jQuery way you're always going to hit performance issues that cause jitter and jank in a web app. You'll never get buttery smooth, consistent 60fps performance with jQuery approaches. The biggest problems with jQuery is that it makes selecting and updating DOM elements so easy that almost no one caches their DOM pointers and that it doesn't really support performance deferrable atomic updates when performing batch updates on nodes. There are more issues than just that too. The number of layers of indirections that must be calculated through to perform even trivial updates is very wasteful, especially when you consider that many of those layers of indirection are there to support older buggy as hell browsers that only continue to lose market share.
If you want 60fps in your web app, then you need to program to 16.66ms cycles. If any of you updates take more than that, then it blocks the event loop and your FPS drops. Many many operations in jQuery are in the 100+ms territory. Your top framerate at 100ms is a mere 10fps.
When it comes to the DOM it most certainly is not premature optimization. If you think otherwise then you probably haven't built a serious web app on par with the native apps on iOS and Android. With the DOM, you need to code for performance from day 1. Like the turtles, it's abstractions all the way down and with each layer you lose some performance. The DOM is an abstraction that needs to be handled very very careful for it not to become a performance killer.
So you MUST be an avid fortran developer right? Have an excellent geocities/angelfire site with marquee and blinks? Still pushing java applets? This is basically the fastest changing field you can choose. I know you must have invested a lot of time in jQuery and would hate for that investment to be marginalized, but the sooner you realize that it will be, the sooner you'll accept that transitioning to the next investment is the only real investment you can make in this field.
This is getting ridiculous by the minute. Being a software developer, I fear sooner or later I'll be a target. I feel it's just a matter of time.
But worst of all is the feeling of helplessness of it all: it's a big dog fight. Small ones either have to run with tail between legs (pay up, give up, throw work away) or fight to eventually get crushed (by the outcome or by being out of financial breath in the process).
I apologize for the negative rant, but frankly, as I re-read it, it really looks more realistic then pessimistic.
Lobby. Really.
Be the guy who writes letters to his congress person and senator. All the time, every time.
Form groups.
Stop complaining about it on an internet forum, get together in real life, and talk to people. Not "random like-minded techies". Go meet with your senators or congressmen. They take meetings from constituents. You'll probably end up talking to an LA or something, but if you all do it, it'll start to have an impact. Tell them exactly how much money you are spending, and how much time you are wasting, worrying about this stuff. Form lobbying groups, and advocate.
There are other effective things than the above, it's just an example.
One of the reasons I became a lawyer, instead of just a software engineer, is because it was clear to me, even 15 years ago, that patents were going to destroy our industry.
It was also clear that the majority of software engineers would do one of three things:
1. Pretend it did not matter.
2. Dismiss the threat until it became huge.
3. Complain about it on Usenet (now "random blogs, internet forums, and social media sites").
It took a long time to get to the point it is now.
It will, realistically, take a long time to get to a better point. Yes, everyone has a quick fix solution, like "ban software patents" or "pray the federal circuit/supreme court saves us from years of bad policy and legal decisions". These are all long shots. They may happen. But it's all short term plays. You need the long term play as well, in the background, in case these don't work out.
People have this weird idea that the content industry/etc simply backed up a truck of money to congress people and got the laws they wanted. Instead, they spend 20+ years meeting with politicians, advocating their position, forming lobbying groups, and slowly winning politicians over. They showed (mostly fake) economic benefit, had studies done, kept harping them over and over. Certainly they donated, but if you think it was simply because they gave some congressman some money, you don't understand how things get done.
If you want to stop software patents, you need to take this long term approach as well. Don't get me wrong, I hope the supreme court reigns in the federal circuit as well.
But if you want real change, it often takes time. At least in the current world, there is a 0% chance this change will happen if the only action is to write comments about news stories on internet sites.
I find your tone incredibly condescending. What average person has the time, energy, and expertise for all of this? What you propose doesn't sound practical to me at all. Take this statement:
> they spend 20+ years meeting with politicians, advocating their position, forming lobbying groups, and slowly winning politicians over.
This is exactly what I'm talking about - what average working person with a family can compete with an army of full time lobbyists whose job it is to meet with congress, take them out for meals, and do whatever else they do to get what they want?
Doing all this is a lobbyist's full time job. They're backed by various industries with seemingly unlimited wealth. Compared to the average person's net worth, their funding may as well be unlimited. What average person with a full time job and family could ever compete with this in his or her limited off time? How practical and useful is it for us to flood congress with letters, emails and faxes "all the time, every time"? I don't think this is a useful strategy at all!
And what's wrong with "complaining about it on an internet forum"? Sometimes it's nice to vent the frustration and hopelessness to people who understand. I certainly do. There's nothing wrong with this. Sometimes complaining is all we CAN do right now.
The only practical solution I have found is to fund those whose full time job it is to be watchdogs and to fight back, like the EFF. That's about the best I can do for now. I haven't been shown another reasonable action that I can take that would be truly useful.
It's fine to find it condescending, it is in fact, mildly condescending.
But it's condescending because of statements like this:
"This is exactly what I'm talking about - what average working person with a family can compete with an army of full time lobbyists whose job it is to meet with congress, take them out for meals, and do whatever else they do to get what they want?"
and
"And what's wrong with "complaining about it on an internet forum"? Sometimes it's nice to vent the frustration and hopelessness to people who understand. I certainly do. There's nothing wrong with this. Sometimes complaining is all we CAN do right now."
So let's start with the first one.
I first suggested you write letters, and take an occasional meeting. Lunch is fine. Heck even telephone is fine if you really don't have the time. Average working people get lunch, and have telephones. They can also write letters.
So i find your complaint disingenuous.
Second, lobbyists are not backed by industries with unlimited wealth. They aren't magical boogeymen. This is just another way you are trying to make it seem like there is nothing you can do, so you shouldn't feel bad about complaining instead of doing something. Most lobbyists are also not full-time on anything. They are firms, they have a lot of engagements. Maybe some very small subset is full time on strategy or PR for a few months of a campaign, for some really big client, but past that, nope. It's like paying a lawyer, not paying a personal assistant. Most tech folks are pretty well off. They could probably afford to buy enough lobbyist time to have your lobbyist take the meetings above if you wanted. This would be less effective than doing it yourself, and less effective than what I suggested.
You then say "How practical and useful is it for us to flood congress with letters, emails and faxes "all the time, every time"? I don't think this is a useful strategy at all!"
It is absolutely practical, and absolutely useful. Congressmen live and die by statistics on what their constituents want, contrary to popular belief. They track letters, faxes, and phone calls on issues from constituents. They are briefed on issues and constituent viewpoints probably every morning. If you flooded them all the time, every time, it would make an actual impact. They care less about lobbyists than direct constituents.
I'll point out that you didn't actually refute my point, just again went into "throw up my hands and pretend i can't do anything" mode.
As for the second larger point about complaining, there is no hopelessness except the hopelessness you are creating by pretending you can do nothing, and trying to make it seem okay. It's never the case that all you can do is complain. Never.
I already gave you a reasonable action. You apparently believe your action in giving the EFF a few bucks is truly useful, and "that's about the best you can do for now". So let me ask: Has it stemmed the tide of patents? Has it won a court case? Gotten a law on patents passed? Why do you expect this to change if you gave them a few more bucks?
Not to belittle the work of the EFF (some of my good friends work there, and they do what they can), but they should be the support. They are also a fairly general digital rights org. When congressmen all jump up and down and say "oh shit, all my constituents are yelling about patents, what the hell should we be doing?", that's when the EFF is useful to help.
Besides that, finding or providing cheap legal representation for the guy who is getting screwed, or lending a voice here or there.
Past that, if the EFF had a billion dollars, nothing would change in the current state of the world of patents.
Money for the EFF or lobbyists is not the missing piece of the puzzle here to effect real change.
You know, its funny. My job puts me in a position where I can see what the money at least one large tech company spends on lobbyists goes to. I also get asked to help with these plans from time to time. You know what these lobbyists spend a lot of their time doing?
Trying to get tech folks to write letters, email, call, or meet with congress people. That thing you claim isn't effective or practical.
The last time I asked a high powered, well monied lobbyist what the lowest effort, highest impact thing tech folks could do to win these political fights would be, his answer was simple: "Show up"
FWIW: I am condescending not because I think I am better than you, but because you are better than this.
Do the simple and practical things. Do the things you haven't tried before. If you want to complain, I certainly can't stop you, and venting is a wonderful thing to do. But don't act like you can't do anything, and don't act like doing nothing, helps.
You know what these lobbyists spend a lot of their time doing? Trying to get tech folks to write letters, email, call, or meet with congress people. That thing you claim isn't effective or practical.
Amazingly interesting insight. Thanks, DannyBee, for weighing in on this and other issues. Your comments are really worth reading.
Let's say that the legal entity is registered in Switzerland or China or Russia for that matter.
This company sells some goods [virtual/physical] through a web site [for example using Amazon 1-Click patent] to a person, who happens to be an American citizen, with payment made by credit card.
How this company will become "subject to these rules and ridiculous software patents"? In which court will this case be processed? How the court decision will be enforced?
Citizenship doesn't matter, but the location of the user does.
If you're doing business with American users, defined as "people residing in or doing business within the borders of" the United States, then you're subject to the patent laws.
All a claimant needs to do is prove that this is the case and the lawsuit can proceed. Then you'll need to find representation in a particular court in Texas to defend yourself, or you'll have to settle out of court at your own considerable expense.
If you're "doing business" in the United States, you're subject to those laws. This is just how it works.
If you're sued and you don't defend yourself, you will probably lose by default, so you can have a judgement enforced against you. This might preclude you from travelling in to or even through the United States.
If that last part is the only thing they can do, I say move to somewhere warm and cheap and just "agree" to their terms ;) I thought they could call InterPol on you or something...
> My secretary prints out all messages addressed to taocp@cs.stanford.edu or knuth-bug@cs.stanford.edu, so that I can reply with written comments when I have a chance.
He just does not USE email himself.