Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
User Journal

Journal Journal: The Mr. Miyagi School of Software Engineering

Lessons on how to train a junior programmer (in a small company) to work on an enterprise SDK.

Let's call him Danielsan.

Mr. Miyagi was a very wise and clever sensei. His methodology, loosely translated, is perfect for any small software company that is bringing new developers into the system. The reason Mr. Miyagi's method works so well is because it provides intense, immersive exposure to the most important lessons while demanding relatively few additional resources from the instructor(s). Think about it. While Danielsan was busy painting the fence and sanding the deck, Mr. Miyagi was out having the time of his life!

The length of each lesson is to be determined on a case by case basis.

Lesson 1: Write SDK Documentation

Even the best developers can be notorious for not adequately commenting their code. Good documentation of an SDK includes both programmer's notes and comments for automated documentation (e.g., doxygen). This oft neglected task is perfect for Danielsan. An excellent way for him to learn the SDK from a developer's perspective is to write the documentation that explains how it all works.

Listen carefully when Danielsan asks questions about the existing. Discourage him from asking too many questions, except regarding complex concepts. It is important that Danielsan develop his own understanding of algorithms, relationships, dependencies, etc.

Lesson 2: Build Company Demos

Documenting the code shows Danielsan how the SDK developer sees things. Danielsan also needs to see the SDK from users' perspectives. "Users" include programmers who develop applications from the SDK and end users of the applications that are developed. Ideally, these would be two separate lessons. Knowing that time and money are always issues, these lessons can be condensed into one by having Danielsan build the company demos.

Architects and senior engineers loathe building company demos. While they are often happy to write test apps for in-house use, company demos bring with them a mountain of maintenance headaches and customer support issues. Whether or not your company is big enough to have it's own departement(s) for maintenance and support, it's worth putting Danielsan to work on company demos so he can get his hands a little dirty and see first hand the challenges facing maintenance and support team(s).

Lesson 3: Clean House

Many companies have coding standards that must be followed by all code writers. These standards help everyone to write clean, consistent code that everyone can understand. Unless you work at a sterlized laboratory, it's a safe bet that your house always needs cleaning. A great way for Danielsan to learn this important lesson and also develop habits that are consistent with the team is to set him to work checking for adherence to company coding standards, leaks, potential security issues and the like. It's also a convenient way for you to get your code checked by a fresh pair of eyes.

The Successful Sensei

The successful sensei will know that these lessons are not opportunities for him to relax his own standards or to set Danielsan to work unguided. The successful sensei practices what he preaches. He knows which lessons Danielson must learn on his own and which require guidance. Naturally, Danielsan may occasionally bemoan his instruction. Perhaps he will consider that his training is too rote or mundane. Since you can't just throw a bunch of karate maneuvers in his face to show him what he's learned, it's important to sometimes let Danielsan work on things he finds interesting and fun. Ask him to write stand-alone utility apps that your company might need. Give Danielsan isolated new tasks within the SDK, perhaps something that requires he work with others to design interface requirements, resource requirements, etc.

to be cont'd.

Axiom 1: Tooltips are better left on.

If you leave your tooltips on, chances are better that you will learn something new each time you use your application(s). For Danielsan, tooltips are especially useful when they instruct him about fundamental principles of programming, those that transcend applications.
Axiom 1a: Some tooltips are better than others.

User Journal

Journal Journal: Devices, Appliances, Services

Three factors that make up the current state of computing.

To be continued... Just a typcial 3-tiered architecture? Device = Presentation, Appliance = Business, Service = Data

User Journal

Journal Journal: Firefox Plugins - NPAPI

Here is a letter I just sent to Mozilla regarding their plugin API:

Hello,

I was just at the Mozilla plugins page and when I clicked on links to the NPAPI documentation I got a message that my connection to:

http://devedge.netscape.com/library/manuals/2002/plugin/1.0/

was refused.

I was not surprised. I first wrote a plugin for Netscape 4.x about 3 1/2 years ago. It was a painful experience. The principle reason for my negative reaction was that documentation was hard to find, often incorrect, and constantly out of date. It got worse when Netscape went to LiveConnect. And now, despite years of continued development on the browser and all this new hype surrounding the Firefox release, the plugin API is still beyond reach. How can this be explained, much less tolerated? Mozilla spreads the message that ActiveX in inherently unsafe and the cause of all our web security woes, yet makes it impossible for developers to take advantage of any (alleged) alternative. Perhaps you expect that just because Firefox supports Flash, Quicktime, and Acrobat that everyone will be satisfied to use the browser. I do not think so. I would like to support Mozilla. I really, really would. But all around, Firefox continues to look and feel and act like a second-rate stand in. It certainly is not a practical alternative to IE when real work is on the table. It's time to put up or shut up. By promoting the message that ActiveX is a danger (i.e., to my customers), you are jeopardizing my ability to make a living.

User Journal

Journal Journal: What's the Deal with the Phrase That Pays?

A marker for future research and consideration...

What's the story on why every commercial radio station in America asks or "demands" call-in listeners to: "tell us your favorite station," or "what's the phrase thay pays?" What was the marketing angle on that when the concept first emerged? How, why did it become ubiquitous? Hypothetically, it must have been related to customer loyalty, or indelibly molding brands into listeners minds. But since literally every commercial radio station does this now, is the original point lost in the noise? If not, why not? Why, how is it still so important a technique? To me it really sounds like a bunch of radio stations demanding listeners to declare, "whooo's YO' DADDY?!"

User Journal

Journal Journal: Unmanned War

A while back I engaged in a thread about unmanned combat. I asserted an argument by way of a flippant comment, as can be easy to do on Slashdot, and inevitably, I drew a sharp, but deserved response. Even in my reply-to-the-reply I tried to be more thoughtful of my remarks, but I was still acting a little stuck up on the subject I think.

The truth is that is a human replacement technologies and human augmentation technologies are subjects that I often find myself pondering to new depths. This includes domains beyond the military technology (e.g., medical technology). I don't know why I am drawn to thinking about this so much, but I am. Like a lot of things I consider intently, these subjects tend to divide me in half, but in this case I am even more particularly vexed. I am sure a lot of that has to do with my work.

The thing is, I could go on an on with an equal number of reasonable-sounding arguments for and against the use of technology that, on the one hand is designed to reduce casualties from violent acts of war, and on the other, technology that can ostensibly deliver death through a laser scope and a telecommunications line. The same is true when I think about technology that augments the human body and/or mind. Perhaps more so in this domain, it is neither difficult nor unrealisitic to forecast grim consequences. But that whole balancing process really gets me nowhere when I'm trying to figure out what is right and what is wrong about such technologies, what may benefit humanity and what can be misused. I am also concerned about negative effects on democracy and freedom caused by these kinds of technologies.

I am guilty of giving in to cynical whims, but generally I a very positive about the future of technology and its impact on humanity. I am trying like hell to not balance my opinion of military technology, and instead would like to discover uncompromising pacifism, but I fear I may be too practical for it. If there is ever an armed Predator flying over Osama Bin Laden, I want someone to pull the remote trigger. I have little doubt, however, that such action will NOT put much damper on terrorism, for I believe terrorism thrives on human blight and human blight seems to be thriving on the neglect of civilized nations.

Right now the message I'm getting from the 9/11 Commission is that my government has done a poor job for a long time of exercising good judgement when using our military. But ultimately, I know that I live in a free society and free societies always stand up for what is right in the end. If we dramatically alter the dynamics of war through the use of unmanned weapons then I believe free socities will dramatically alter it for the better. But let's face it, a Predator is a fancy RC plane and RC airplanes aren't rocket science. I don't care how sophisticated we try to make them. One day an unjust person, group of people, or government will possess these unmanned technologies we create, just like so many who got nukes. That's what I mean when I say that we can't make it easy to make war. But I guess I'm not actually ready to believe that unmanned combat will necessarily make wars easier to start.

Here is an irony that I have just realized. Suicide bombing is use of force whereby bombers sacrifice their lives in order to kill as many as possible. Umanned, remote controlled weapons are a use of force designed to sacrifice no lives, while killing as few people as possible. Indeed, is suicide bombing the antithesis of an umanned weapon "personalized" for one or two self-proclaimed terrorists? In a perfect world, anway. Suicide bombers might have us believe that a cause must be just if so many are willing to make the ultimate sacrifice for it. But might a hopless and desparate man also be willing to give his own life for whatever cause, and perhaps more so if he believes his (perceived) hopeless existence can be redeemed through such actions? I confidently assert that the element of human self-sacrifice does not necessarily justify any cause for which the sacrifice is made. Similarly then, the non-existence of human sacrifice in the use of force should not, in and of itself, create injustice. Still, I can't help but have some innate skepticism toward anything that would seek to remove humans from any part of the human condition. I do not believe that mankind can artificially separate itself from violence. If it ever becomes critical to our survival, mankind must evolve away from violence.

User Journal

Journal Journal: To Honor MLK...

...I must answer the question, "What will I do?"

How can I help to promote dignity, respect, freedom, and opportunity for all, and especially for those who struggle to realize these values? What can I do to help eliminate violence as a means for overcoming struggle and conflict?

I do not know the answers. But I will remember Dr. Martin Luther King, Jr. because he knew the answers and I will pray that his answers will be revealed to me.

User Journal

Journal Journal: The XML Revolution, OOP, and Natural Language Computing

You can't do anything on the Internet anymore without running into XML. For that matter, more and more user applications are exploiting/relying on XML. XML is used for everything from the bulky, pretty front end to the lean and mean back end. One need not go far to be convinced of both.

Naturally, there is no shortage of debate about whether or not this is a good thing. It might be possible to boil all the arguments against to something like: "XML is too bulky. All those unecessary characters..." It's been called "hideously verbose" and "more complex than it [should] be," and (more citations)...

Certainly, if you are writing assembly code to be burned to a chip, then XML may be of little importance. But in the context of mainstream computing - the Internet, desktop and PDA apps, business systems integration - XML is undeniably significant. (If XML is involved with a technology that can search 3 billion documents and return 100,000 records in .3 seconds then it can't be that bad.)

The next claim I intend to make is a slight diversion, not as easy to defend, and sure to offend (though I mean no offense): No matter how you slice it and dice it, "mainstream computing" is Object-Oriented. Why? Because the world is object-oriented. People are object-oriented. As far as I am concerned, it's just as simple as that. A file is an object, a table is an object, a document is an object, a server is an object, etc., etc., etc.

Why is this important? Because XML is uniquely suited for an object-oriented world.

Consider this view: an XML element is the serialization of an Object. An XML element can be deserialized to create an instance of an Object. Objects have type. This type is represented by the XML element. Objects have attributes. These attributes are represented by the attributes of the XML element. Objects can be nested (i.e., contain other objects). This nesting is represented as a tree structure of nested XML elements.

<!-- Window element represents instance of Window class. x, y, w, and h represent primitive Attributes of class Window. -->
<Window name="A Window" x="10" y="10" w="80" h="60">
<!-- backgroundColor represents an Attribute that is also an Object of type Color. -->
    <backgroundColor r="0" g=".5" b="0" a=".5"/>
</Window>

<!-- another example... -->
<Model name="The Box" url="box.lwo">
    <position x="0" y="1" z="0"/>
</Model>

Furthermore XML processing instructions can name functions or "processors" and specify values for their parameters.

<?lib name="ogl_1_1" action="unload"?>
<?lib name="dx_8_1" action="load"?>

...

Is XML a bridge to true natural language computing?

User Journal

Journal Journal: IPR

Every day I get a quote from the Bible sent to me in email. Today it said this:

Woe to you lawyers! for you have taken away the key of knowledge; you did not enter yourselves, and you hindered those who were entering Luke 11:52

Perhaps deliberate, this is a most timely quote. (During the war in Iraq, all the quotes were, of course, about the coming of the end.) :^|

For those whose personal information net is rigged for catching anything in the realm of music, technology, consumer rights, open vs. closed source or any or all of the above, this is a VERY hot topic.

Knowledge, creativity, and information are under seige - from pirates who would steal knowledge for their own gain, from those who insist that a great injustice is taking place everytime someone doesn't have to pay for access to knowledge and information, and from those who would seek to control knowledge and information (be they corporations or unjust governments).

Now, don't get me wrong. I'm not going to say that everything should be "free and open." I'm favor of some freeness and openess, but I also believe in the power of money. While it is (by far) not my guiding belief, on some important level money matters. You can argue that it shouldn't, but it still does. The world would a terrible and boring place if no one ever produced another newspaper, book, or magazine because pirates bled the money out of those endeavors. You can argue that the world would be a more beautiful place without all the mass media, mass-hype, over-digitization, etc. But nothing short of a complete do-over of humanity is going to stop the propogation of knowledge, creativity, and information (in all it's many good and bad flavors). And Progress sure as hell is not going to stop, or even slow down, just because downloading is easy.

...

With respect to music and purchasing a single copyright:

I will pay for only what I want and I will only pay for it once. The music industry will have it when I can download any particular song I like for about $0.50 or $1.00 (USD). Apple is already getting it - if you own a Mac. In the digital age, I should not have to physically drive to a store to purchase an entire album (and all its slick merchandising overhead). Neither should I have to pay for a commercial-free subscription just to have more choices than commercial radio (e.g. XM Radio - which is paying over and over to hear the same songs over and over and on someone else's schedule to boot).

Instead, I should be able to pick and choose songs I like for purchase. I should be able to save them to a digital medium. I should be able to transfer them between multiple digital media (my PC, my portable player, my car stereo, my PDA/phone).

RIAA should not be worried about me and my buddies swapping individual songs here and there. We are just turning each other on to new sounds, and I have to believe that is better overall for the sale of music (unfortunately, music isn't the only thing they want you to buy). RIAA should be worried about buddies who buy a single copy of an album and then burn it for 10 friends. But I think the pay-per-song model would mostly put a halt to that. I think a lot of people will just be out there sampling and downloading what they want and can afford and so what if they are passing it around. I'll download 10 songs that I like and my buddy will download 10 he likes and we might share 2 or 3 each, but in the end the record companies will still get $20 bucks for 20 songs...multiplied by hundreds of millions of buddies. More importantly, RIAA should be worried about that pirate operation in the Maui-Waui Islands pumping out bootlegs for less than half the market price. Ferfucksake, leave the consumers alone and just start giving them what they want.

I realize things take time and money...lawsuits, for instance. If RIAA were spending half as much time and effort on overcoming the hurdles that stand in the way of actually giving consumers what they want for a fair price, instead of dictating what people should hear and how and when they should hear it, then we'd be happy and they'd (still) be rich.

I think copyright protection is important, but for a much different reason than RIAA: giving credit where credit is due. When people share digital media with one another, they should not be able to modify it in any way w/o consent of the owner - this should include filename and other directory attributes. One not-so-clever way folks have of countering attempts to stop songs-swapping is to simply change directory attributes so files comes up as something else. I often find music on the net with an incorrect title or, worse, an incorrect performer.

Lyrics sites that have advertisements should have to pay song writers for posting their songs. Other than that, the only rule should be that you cannot post a song without crediting the author. Crediting the wrong author is also a bad thing. Perhaps inadvertently, this is a common occurrence when a popular band covers a song by another performer. 99.99% of the time it is not the case that one party is attempting to plagiarize the song of another. Everything else is just free advertising.

So, what does this ramble about the pitfalls of pop culture have to do with the assault on knowledge? Exactly this: All the hysteria that surrounds this incessant need to protect profitrights is spilling over into academia and encroaching upon our freedom to communicate knowledge with one another without fear of repercussions. It's bad enough we already have to justify our resistance to the closing of networks and the classification of knowledge in the name of "security." ...

Somewhere at the bottom of this is the question of survival by competition versus survival by cooperation?

User Journal

Journal Journal: Moderation

My one motto in life is "all things in moderation." I'm not sure, but I think that's an oxymoron. "All" is an extreme, just as "none" is an extreme. I guess that's about right though - I believe in the philosophy of all things in moderation, and I believe in this extremely so.

User Journal

Journal Journal: No, We Are Not Doomed Yet (I Think)

I've been thinking a lot about Sheldon Pacotti's recent article on Salon. When I first read it I was compelled into a lengthy feedback that never really got out the door (i.e., it's still my "Drafts" folder waiting to be finished and sent). But then I thought I could sort of just work it all out here, perhaps over a couple of blogs. So, I guess that's what I'm going to try to do.

My understanding of the basic premise is this:

  1. Malicious applications of science and technology and computers pose real threats to humanity.
  2. Actions taken, both overt and subtle, to counter these kinds of threats are creating a society that is criminalizing knowledge while relegating access to knowledge to oligarchies.
  3. ("The Bottom Line") While no ideal solution may exist, complete and open access to and exchange of knowledge is our best protection against the misuse of knowledge.

My first response is, "Yes! Yes! And yes!"

But...I don't know...I'm a Libra, so I guess it's just my nature to keep shuffling the scales until they balance. There a many points Mr. Pacotti makes with which I do not agree.

First random observation: #3 seems a lot like the argument the National Rifle Association uses: best way to prevent gun violence is to put a gun in every home. Is this a model? I wonder how NRA members feel about the "criminalization of knowledge."

Second not-quite-as-random observation: Wasn't a fundamental argument for NAFTA that free trade is better for everyone? Is this a model? Trade can certainly be used as an instrument that forcefully imposes will.

One thing in the article caught me right away and I almost didn't want to finish the article because I didn't want to go following along to any potentially logical conclusion based on an illogical premise. (I kept reading and I'm glad I did.) It was the assertion that we are our own biggest threat. That just cannot be true. What about weather, natural disaster, disease, and famine?

Right now there are 30 million people on this planet who are the brink of starvation because AIDS has killed most of their food providers. Does it get any more threatening than that?! Does anyone think that an orphaned child with no electricity nor running water nor quality food to eat would give you two shits if you told him that we need to start preparing ourselves for the future (WAY future) possiblity that someone will be able to print the recipe for a self-replicating nanbot virus? One does not have two shits to give when one does not eat!

(Here's where the subject changes a little for me. I need to get past this first before I can weigh in on the pros and cons of free and open knowledge.)

I don't want governments to stop passing restrictive laws and spending money on increased surveillance and increased policing of knowledge so much because I'm worried about losing my freedoms (of course, I do worry about that). I want them to stop spending money on that stuff because I want them to spend that money on medicine, and schools, and infrastructure for impoverished areas all over the world.

Right now we are seeing that it's not so easy bomb the hell out of a country in order to liberate it and then expect everyone to smile when we say, "your life can be great if only you become democratic." There's this idealism that is pervasive in American foreign policy that says, "Damn it! We should be able to use our power to reach half-way around the world and squash an evil tyrant and free the oppressed. Any kind of oppressive government is a threat to humanity and a threat to each nation's security, including our own. The world should thank us." We want to look at tryannical goverments like we are about to witness a rape and it would be wrong to not do something to stop it. But too many people don't see things this way...for whatever reason...it doesn't matter. But what if the next thing we do is "march" $550 billion dollars worth of money to buy Africans the drugs that will help them combat AIDS? How about 30 million new votes for democracy? Hell, we could even send that money in with "armed guards" if we are worried about corruption on the receiving end (and we should be).

I'm not saying we should ease up on the press against terrorism. I just hope people take this all into perspective. I have no doubt that what Mr. Pacotti is talking about is cause for concern and action. But concern and action must be holistic. Perhaps if we look outside our own (already well-protected) perspective we'd have a better understanding on how to deal with the "new" threat of terrorism. There will always be "kooks" and "crazies." They don't scare me. And while I refuse to make any execuses for suicide bombers, hijackers, and other terrorists, there is a vast difference between the occasional lone lunatic who might unleash a deadly bot and a trans-national organization that feels they have a "cause."

User Journal

Journal Journal: To Blog or Not To Blog

This could be fun. Not sure how I feel about letting it all hang out there for anyone to see, but what the heck - let's give it a shot!

Slashdot Top Deals

Fast, cheap, good: pick two.

Working...