- END #header -->

Posts Tagged ‘Programming’

8 Steps for being an Asshole Effectively

Exhibit A

I needed information on PHP debugging in IntelliJ. After nearly tearing my hair out trying to get it to work using online references, I pleaded to the twitter community for help. It went something like this

: Anybody know how to get #PHP debugging working in #IntelliJ?
* crickets *
: I have everything else working, I just can’t get #PHP debugging in #IntelliJ. Any help?
*crickets *

Absolutely nothing. It was just another drop of water in a sea of questions that never get answered on Twitter. But I’ve found a way to get around this. Be an asshole. That’s right, vent your frustration, call out the project or software you are working on, swear it off for life. This method becomes even more effective as your number of followers grows. Again, I paraphrase:

: Screw #IntelliJ, #PHP debugging won’t work right so I’m off to try Aptana and Eclipse.

Within minutes I had half a dozen responses back, including one who spent 20 minutes helping me troubleshoot the process (thanks ). This is not the first time this has happened. I asked basic questions about the PhoneGap mobile development framework on Twitter to get only one generic response. I “rephrased” in a less complimentary manner and within minutes had 2 of their project members messaging me.

Why does it work like this? The power of negative press in social media is too powerful to ignore. These projects know that positive word of mouth and community support is their life blood. Jeopardize that and watch people flock to your aid.

How To

Here’s the checklist for being an effective asshole in social media to get information you need.

  1. The bigger your audience (AKA, followers and friends), the more likely your negative comments will be worth extinguishing.
  2. # and @ on Twitter go a long way. Target the people you have a beef with and give them a chance to retort.
  3. Be specific with your negativity. “IntelliJ sucks” would have gotten me nowhere. Direct complaints about functionality are the way to go.
  4. Don’t be stupid. A sure fire way to get ignored is screaming “BUG” when you should RTFM.
  5. Be nice once someone does help. If they have the patience to deal with your sarcasm, they deserve your respect.
  6. Be grateful. If you do have some social media clout, be sure to praise the project after and thank the person that helped.
  7. Don’t be afraid to have more than one conversation about your frustration with a product, but don’t flood your stream with whining.
  8. Use sparingly. Don’t be the boy who cried wolf.

And that’s pretty much all it takes. Now remember, the idea is to bring intelligent people into a problematic situation you are having, not to be a cantankerous prick. Play the game, but be sure to shake hands afterwards, regardless of who “wins”.

Programmers: Why do we do it?

Every now and again when suffering through a movie my wife has chosen, I manage to find one thing I really like about it. This time the form of torture was ““. Fantastic acting, spectacularly unentertaining story. Anyway, while I was daydreaming about code, I heard this exchange that probably went right over the heads of most viewers. Not the viewers fault, they were probably still reeling from the rough Mark Ruffalo on Julianne Moore action in the prior scene.

Gardener: “I have allergies.”
Jules: “Then why are you a gardener?!”
Gardener: “Because I love the flowers.”

And then they fly right past that line, but that’s the one good thing I took from this movie. Sometimes the things we love don’t make sense and can downright make us miserable, but it doesn’t make us love them any less.

In my head this philosophy plays so easily into the mind of programmer. There’s so much to dislike about programming:

  • Entire days spent chasing bugs
  • Short deadlines
  • Constantly having skillsets superseded by new technology
  • No appreciation for the work it takes outside other developers
  • The elitist nature of many in the developer community
  • Moronic clients
  • Late nights, long hours in front of a glowing screen
  • The constant inkling that some 14 year Japanese kid already did this better than you
  • The lottery-esque likelihood of independent success

And that’s just a few. I’m sure I’ll hear a few more in the comments.

Then why do we do it? What is there to love about programming? What is it about crafting together mountains of syntax that makes us come back to it every day? I know for most of us there’s a paycheck attached to it, but for plenty of us that’s not the root.

I may be getting too romantic even for my own tastes, but I think its the fact that those who truly love programming see it as an art form. Its not just a technical pursuit, but one that allows the leveraging of one’s unique talent and views. You bring a form of personal expression into your work. You invest yourself physically and mentally in what you do. You suffer and toil, using code as your medium, just as other artists craft with paint or stone. You have a personal association and pride with its creation. The code and its results represent you.

What do you think? Is there really a right-brain satisfaction achieved through a love of programming. Is it more than ones and zeros doing an assigned task? I think so. Otherwise, why bother?

Shit My Twitter Says #1

This is the first installment in what will hopefully be a regular occurrence on my blog. Its simply just a digest of interesting things from my twitter feed, complete with the source articles and the people behind them. Without further ado, let’s light this candle.

Incredible Javascript Performance metrics

tweeted by:
This was my favorite this week. A tremendously huge list of common Javascript tasks (conversions, HTML5, DOM access, etc…) broken into the different ways to perform them. Each of the methods is then tested millions of times against your current browser to tell you the most effecient way to perform them.

I know I am not doing this site justice. Go to it and check it out. This site should be a must have tool for any serious Javascript developer.

Mandelbrot Plotter

tweeted by:
This Flash-based Mandelbrot Plotter application allows you to create and save beautiful images of the Mandelbrot set. A must for you generative art junkies.

If you got a few spare minutes, I’d encourage you to check out the rest of flashandmath’s content as well. Some great visual content based just in code.

Blackberry giving out free playbooks to developers!

tweeted by:
Click the link for details. The short version is that if you build an approved app for the Blackberry App World by Feb 1st, 2011 you get a free PlayBook. Pretty sweet deal.

PlayBook App template using FDT and ANT

tweeted by:
Martin Rädlinger gives FDT users a head start on their road to a free Blackberry PlayBook with this extremely helpful app template.

Understanding Accelerometer Development (AS3)

tweeted by:
A great breakdown of how to use the accelerometer in mobile development, as it relates to AS3. Simple and concise with source code to go with it.

Top 50 Programming Quotes Of All Time

tweeted by:
Nothing like a little truth wrapped up in wit and sarcasm. Especially for us geeks. Enjoy some of these pearls of wisdom from a few programming greats you may recognize.

List of the Best Animation/Tweening Packages for AS3

tweeted by:
A seemingly comprehensive list of available tweening and animation libraries available for AS3. It includes who made it, where to find it, and the pros and cons of each. This is great place to start for a Flash newbie or a terrific reference for a seasoned pro.

Using OAuth with Adobe Air and Flex

tweeted by:
Need to access a 3rd party web API in your Adobe Air application. Check out this extremely useful blog post from Christophe Coenraets that includes a description, application, and full source code.

Blackberry PlayBook will support C++ extensions for Adobe Air

tweeted by:
This isn’t some Adobe Labs Alchemy magic, Blackberry will have a legit part of their mobile development SDK that will support C++ extension use by Adobe Air. This is the best of both worlds: The flexibility and ease of mobile development with Adobe Air and the power and efficiency of native SDK development. Blackberry really is making some strong moves to engage the developer community with its latest mobile offerings.

Haters Gonna Hate: The Psyche of the Tech Zealot

Linux Junkie

Actual comments to a reddit post I made regarding the Adobe Molehill 3D API:

“Since Adobe’s making it, will it use 3x the memory and be 10x slower than webgl?”
“Molehill? If it looks like a shitpile….”
“HTML5 and CSS3 already do that way better.”
“wtf… games are written in C++ or C”

Tech zealots, they are everywhere, particularly on discussion forums where they can make their views tactlessly clear. They have holed up in one camp and anyone using anything but their weapon of choice is clearly a moron. I’m not talking about open minded professionals with conflicting views, just those people highlighted by the pearls of wisdom above.

But why? Why would someone be so vehemently opposed to technologies they obviously have only a stereotyped or passing knowledge of? Insecurity of course, but more specifically:

Lack of Skill and/or Intelligence

I am dumb. You are dumber.This is the most common root cause of mindless scathing comments on technology. The purveyor of bullshit is not smart or motivated enough to speak intelligently on more than one technology topic, so all others aren’t worth discussing. His mind cannot be changed, as this would require a level of decision making and logic that is beyond him.

This person is the manifestation of why the “ignore” function exists on forums and networks.

The one hit wonder

I Love C++When is your hammer, everything looks like a nail. Aside from the true idiots mentioned above, these are the second most prevalent zealots. They have hitched their wagon to one technology and are going to ride it til the wheels fall off… and maybe even after that. And guess what? You need to agree that it was the right choice.

The best way for a one hit wonder to keep himself relevant and in demand is by increasing the numbers of his clan. Convince others that his tech is the holy grail of software development. He will find any opportunity to insert the technology he knows well into a situation, regardless of how inappropriate it may be, and cite it as the “right” solution.

I’ve had a small, basic website project in a PHP shop be diagnosed by a OHW as needing a C++ web framework. I’ve seen web servers created in Perl (OK, that was me). The point is, add more tools to your toolbox or run the risk that your hammer starts collecting dust.

Lack of experience, or just one bad one

Flash SucksYou know the type, the person who used Actionscript once 6 years ago and hinges his beliefs of Flash, Air, and any Adobe product on that experience. They cite shortcomings and problems that no longer exist. They perceive any former weakness as an inevitability that the technology in question will always be a total failure. Windows ME sucked so there’s no sense in trying Windows 7, right?

But this person is not beyond help. As easily as they dismissed the language, there is a chance they will applaud it in the future. The trick is getting them to revisit it. Unless this person gives the technology another try they will continue to perpetuate misinformation.

Fear of being made obsolete or jobless

Will code for foodIn this day and age the lifetime tech job doesn’t exist. Even worse, employers are viewing programmers as interchangeable parts of a business; assuming one developer can be swapped out for another. Then how does one remain important? By feigning a high level of expertise.

Unfortunately, the damage done by a developer pretending to know what he’s doing doesn’t end in the office. The guy who fooled your recruiters is a pain in the ass everywhere he goes… especially the internet. What better place is there to pretend you are smarter than someone else than in Internet forums and debates? Its vast, anonymous, and you can pretty much say anything you want.

So this one hit wonder is going to spend his time, as he does in the office, creating this myth of talent and expertise with anyone who will listen. He will unleash a deluge of buzz words. He will weave tales about wildly successful projects, of wildly varying validity. And like at work, he will get just enough people to believe him to make your interactions with him miserable.

Refuse to appear “wrong”

You’ll typically see this when a debate backs one guy into a corner, usually attributed to his own limited knowledge of the technologies in discussion. Lots of diversions and straying from the topic at hand. Dialogs like the following are sure fire indicators of this mentality:

Zealot: Python is just a language for blogs and little hobby websites. You need enterprise level Java for a scalable solution.
Normal person: That’s weird, it seems to work for Google and Youtube.
Zealot: Yeah, but only for small parts of their site. I’m sure they use a better language for their core.
Normal person: Nope, they have both cited that Python is the primary language used in their implementations. Check out this post from the creator of Python about Youtube.
Zealot: Python would never work for a REAL business site though.

The zealot here is blindly adhering to his perception that the technology he was bashing was “bad” for the described situation. When proven wrong he then throws out vague, unprovable statements in an effort to remain relevant in the conversation.

Mob mentality

Mob mentalityMisery loves company. And the more company the more misery. There’s power in those numbers. A stereotype’s effectiveness is directly proportional to the number of people you can get to believe it. Get enough people to chant “Java is slow,” “Microsoft is evil,” or “C++ is too complicated” and it can be enough to divert a person from a technology before they even try it. And yes, I even dodged Java for a long time because of the first one.

A person allowing themselves to fall victim to this mentality is usually a smattering of many of the above listed mentalities. Not enough personal experience coupled with a strong allegiance to other technologies that designed with similar tasks in mind can easily make you dismissive of another. Be vigilant and open minded. Make your own decisions.

The Open Source / Vendor Zealot

Microsoft HaterThis is a mentality I’m sure you are familiar with. Open source zealots that can’t admit that many commercial products far exceed the capabilities offered by open source alternatives. On the other side of the coin you have vendor zealots who feel that all open source software is invariably buggy, unstable, and inferior to commercial products.

I once brought the idea of converting IIS servers to Apache for our small web presence to one of my bosses. His reply? “Nobody really uses Apache anymore.” It blew me away. The product trusted to run ~60% of the world’s websites was dismissed without a second thought due to misconceptions about open source software.

This mentality is a really tough nut to crack. You take a healthy respect for a technology and compound it with preconceived notions about free/paid alternatives to create unfounded animosity. The worst part is that there’s tons of people who have this mindset and will not only avoid free/paid techs, but slander them as well. Much like fixing phobias, a steady diet of forced exposure to positive events regarding the technology they fear or hate is the road to recovery.

Final Thought

If you fit one or more of the mentalities above, take a deep breath before you start hammering me with inflammatory comments. The fact that you read the article means you are not a terminal case. You may have a valid allegiance to a great technology. But has it blinded you to other opportunities to learn and excel? Have you helped perpetuate myths?

*** Take a hard look at your own views and you may find yourself a little less angry at me and a little better of a developer in the end. ***