Randomness Daryl Ducharme Randomness Daryl Ducharme

Give Blood

When I was training at Ohio Valley Wrestling, one guys always wore a shirt that said "Give Blood" in somewhat halloweenish writing. Because of the font choice and the fact that he was a wrestler, our first thought was that it was a parody shirt based on someone's gimmick. It was actually a t-shirt for a real, honest to goodness blood drive that probably took place sometime around halloween. ...

Yesterday I gave blood. Every couple of months a bloodmobile goes to my wifes work and she makes sure I'm signed up. Giving blood is a very easy thing to do and it is worth doing often.

My blood type is O positive, which is almost universal. Because of this it is always in short supply and and I try my best to remember to give. Not to mention, with a mother who is a nurse I have learned the importance of blood and organ donation. Blade comics and movies aside, I know it is doing someone good and most likely saving a life.

If you have a problem with blood or needles, giving blood might not be for you, but if you don't and have never done it you should be able to call the Red Cross at 1-800-GIVE-LIFE or visit their website at givelife.org to sign yourself up.

If anyone has comments on giving blood, such as appreciating it, how easy it is, or even issues you might not understand I'd love to read your comments.

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

The AIR in Adobe's sails

Recently I have been doing some research on Adobe's alpha software that was code named Apollo. This is very exciting software that is going to make it much easier for web developers to become desktop application developers. Yesterday, Adobe changed Apollo to its official name AIR, which stands for Adobe Integrated Runtime. They also released the beta version of the AIR SDK and to go with it the beta version of Flex Builder 3 ( which was codenamed Moxie ). ...

This is very exciting because it makes it very easy to use what you already know to make a desktop application. In the first release, Adobe is focusing on helping you create occasionally connected ( to the internet ) desktop applications. I am very excited to have the opportunity to build desktop applications for clients and myself to do some of the tasks I already know how to program on the web.

The Apollo runtime allows file I/O, so you can read and write quite easily to the computer. It is cross platform and version 1.0 will allow you to build stuff that will work on Macs, PCs and shortly after release, Linux as well. The new beta build has also bundled SQLite functionality so you can have a simple database that you can count on being on all systems.

If you want to find out more, check out AIR on Adobe labs.

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

Watching the debates

Last week both the Democratic and Republican presidential candidates held debates. The Democrats on Sunday and the Republicans on Tuesday. I don't have cable so I didn't get to watch either of them live. Thankfully, CNN has each debate broken up into 4 parts that allowed me to view both debates. I'm glad I got a chance to watch both debates. ...

While I attempt to align myself with neither party, I mostly lean democrat and so far I am leaning very strongly towards one candidate I have written about before. Despite my leanings, I took the time to watch both debates.

I'm not going to be voting in the primaries for a Republican candidate so what's the point? I wanted to hear, the other side of the story. While I believe there are more than 2 sides to any story in politics, in the U.S. there are definately 2 stronger sides and it is important to at least listen to them. The obvious differences between Democrats and Republicans were present. However, by watching the Republicans hearing what they had to say I heard some ideas that I didn't hear from Democrats that had merit.

One topic they both brought up I have talked about before was English as the official language of the United States of America. Senator Hillary Clinton made a good distinction between English as the national language versus being the official language. It makes sense to respect the language so that we can all have some common glue, but making it official denies too many people full rights by not allowing translator requirements in hospitals, courts and other places. Only one Republican seemed like he may not be fully for making it official but one talked as though there was a conspiracy to remove the English language from our lexicon. On the Democratic debate, many were decidely against making it an official language.

Other than the Iraq war part of each debate, a large topic of discussion was gas prices and dependency on foreign oil. Both sides talked a good talk but only a few really talked about affecting the problem ( using up too much oil and other resources ) rather than doing something about the symptom ( gas prices ). Most republican's stuck with traditional forms of cleaner energy, such as clean coal and nuclear. I think nuclear is a good approach, it has gotten a bad rap but is scientifically proven to be very efficient and less damaging to the environment than many other options we have now. On the democratic side, people spoke more about alternatives, wind, solar, biofuels. All good options to research as well. As long as the focus is to improve energy efficiency. Only Governor Bill Richardson truly spoke about the problem - we use too much. Yes, he talked about alternative fuels, but he also talked about asking the American people to use less energy. Give them incentives to use less. That is the kind of talk I like to hear. Facing the problem from many angles, and it helps that it is aligned with what I believe :)

If you didn't watch the debates I recommend it. You can go to CNN and browse the videos. Do a search for GOP debate and Democratic debate and it should come up. As long as you start watching part 1 of 4 from either debate, the other parts will show up in the right hand menu.

Remember: It is your country. Be a part of shaping it!

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

88 Years ago today

June 4th, 1919 - A constitutional amendment was proposed that would make the United States of America even greater.

Originally posted by "19th Amendment of the US Constitution":

Amendment 19 - Women's Suffrage

The right of citizens of the United States to vote shall not be denied or abridged by the United States or by any State on account of sex.

Congress shall have power to enforce this article by appropriate legislation.

... I've mentioned before how Schoolhouse Rocks gave a generation of children access to American History and politics that they may not see today. One of the shorts in their "America Rocks" cartoons was about the 19th amendment. Watching it as an adult has shed light on something we don't generally think about today. We take our right to vote for granted, because we have the right so easily.

Women's suffrage is amazing to me. I never knew that women were not specifically granted the right to vote until after African Americans. Which brings up another amendment that should be talked about in the same context, the 15th Amendment. Also, the 19th Amendment happened less than 100 years ago.

In honor of your right to vote, whether it be by the 19th Amendment, 15th Amendment or living in a democracy that people fought to create, pay attention to who and what you are voting for. While we are at it, pay attention to who and what you are not voting for. There is a reason people have fought, been imprisoned and died for the right to vote. Due to the way things are now it is often easy to forget the sacrifices others have made that allow us this right.

Along with the right to vote, people have also made sacrifices to allow us the freedom to choose not to vote at all. In respect of those sacrifices I will say, if you choose not to vote be clear what you are giving up and be clear what you are giving away. The world of politics can seem like a morass that is too difficult to understand, however, the United States government ( that is all I know well ) is set up to allow you to learn more. It might just be one of the best things you ever do for yourself.

References:
19th Amendment Notes on USConstitution.net
19th Amendment on Wikipedia
15th Amendment Notes on USConstitution.net
15th Amendment on Wikipedia

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

Jefferson Quote

Originally posted by "Thomas Jefferson: Declaration of Independence, 1776.":

The right of representation in the legislature [is] a right inestimable to [the people], and formidable to tyrants only.

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

New zones, new race, for free!

Yesterday, SOE put game update #35 on the live servers. In case you don't know what a live update is, because you don't play EQ2 yet, it is a fairly large update that is free. Nothing to buy. Game updates have added new zones in the past but for the first time they added a new starting city in the update. For veteran EQ1 players, you'll know the zone, Neriak. To go with the new starting city they added a new playable race - The Arasai. When I saw these updates I had to roll up a new character and take a look. ...

The first thing you notice is that the Arasai are the dark elves of the fae world. They are basically fae, with some different wing types, hair types and coloring possibilities. Fae are cool though and I had fun creating my new character.

When you log in your new character, you don't start in Neriak. Much like the Fae don't start in Kelethin, you start in a newbie area that is part of the other new zone that came with the update, Darklight Wood. Darklight wood is nice. The village you start out at has a somewhat medieval asian look to it. Other than that it is just a new zone with new things to look at. Of course there are lots of quests to get you leveled up quickly. Being who I am, I wanted to check out the tradeskilling amenities, so I made my way to Neriak.

Neriak is beautiful. In many ways it resembles Neriak of Old. There are some very familiar areas. Pictures are coming soon. SOE did a good job of making a dark and evil city without making it dismal. In case you are wondering, I did find the main tradeskilling area and quickly did quests to get my new character up to a level 9 artisan.

Since these new zones and new playable race are more than likely going to have people roll up new characters, Sony also gave each account an extra character slot. If you've got a station access acount you get two. Did I mention that this update was free? Thank you very much Sony.

---
If you haven't played Everquest 2 and would like to try the game, Sony currently has a trial called Play the Fae. If you own a mac, check out this page that talks about using boot camp to play EQ2.

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

Tradeskilling in EQ2 - Successful Creation

One of my first blog postings here at my.opera was about tradeskilling. More specifically it was about harvesting enough raw materials so that you could tradeskill. At the time of the original post, I fully intended to write the follow up how to shortly thereafter. Well it has finally come time to do so, here it is.

Many people I meet in Everquest 2 don't like to tradeskill, and for many good reasons. For many, the reason is that they can't consistantly make Pristine quality products. Tradeskilling is a bit different than adventuring so I will guide you through the basics today. ...

First, let's define some terms that you may not already know. I will be using these terms to explain some things.

  1. Tier - A tier is a group of 10 levels( 1-9 = tier 1, 10-19 = tier 2, 20-29 = tier 3, etc ) and the products you create in one tier can only be used to their maximum potential by people whose adventuring levels are at or above that same tier. Tiers are often written shorthand so that T5 is the same as Tier 5 or levels 40-49.
  2. Durability & Progress - When in the process of creating something you have 2 bars shown. The top bar, which is usually green, is your durability bar. The bottom bar, which is blue and starts out empty, is your progress bar. The durability bar represents what quality level you are going to create. The progress bar, sometimes called state bar, just shows you how close you are to being done, or what quality level you will create if you quit now.
  3. Quality Levels - There are 4 quality levels you can create. The 4 types most often used, and thus what I'll use, are crude, shaped, regular ( no-name ), pristine. For the most part, we only want to concern ourselves with pristine but it is good to know the lingo.
  4. tick - The intervals at which the tradeskilling station ( stove & keg, woodworkers table, etc. ) gives you updates on your progress and durability. Usually around 6 seconds.

Tradeskilling in EQ 2 was designed to be more like an encounter than tradeskilling in EQ Live, where you just put in your components and hoped it combined properly. Like an adventuring encounter, you have actions you can take to change the way the encounter is going. In adventuring you might stun your opponent or heal your group member. In tradeskilling you might increase your speed at the expense of success, or improve durability at the expense of speed. Unlike adventuring you don't get new actions every level. Instead, you get them every tier.

The actions you get at each tier alternate their focus. At the odd tiers ( T1, T3, etc ) the focus is on speeding up the progress bar. Conversely, even tiers ( T2, T4, etc ) focus on improving durability. For this reason, I recommend having the actions from the highest odd tier and highest even tier available for use in your hotbar. I usually put them on my fourth hotbar window and when I tradeskill I just press Shift+4. When I'm done I press Shift+1 and go back to adventuring.

Like adventuring, maxing out your skills is vital to success. With the tradeskill system as it stands now, there is only one skill to max out for your tradeskill class. However, if you've tradeskilled and only used an action to counter some event you may have noticed that your skill doesn't go up very fast. Your skill only has a chance to go up when you create an item or take an action. So in order to get your skill up you need to use your tradeskilling actions more.

There are many guides I've read online that tell you to use your tradeskilling actions more to improve your odds, but they don't tell you how. When I first started trying it I would always run out of power. There is a simple tactic to be able to press buttons every tick and not run out of power. This tactic doesn't involve a mana stone or using your pet's health for mana, it's actually quite simple. Each tier you only get 3 new actions to take at your tradeskill station. One uses a lot of power and the other two use such little power that they regenerate by the next tick. So every tick just use the 2 that don't use any power. Just make sure to counter any events that come up, though it usually isn't too bad if you don't. By doing that you give yourself 2 chances every tick to skill up. You'll be maxed out in no time. Once your skills are maxed out they stay maxed out, as long as your continue to do the same routine.

To get a pristine, just about every time, use this method with your even tier actions. Since they focus on durability over speed, it is slow going but you are almoste assured a pristine. If you want to move faster and your durability is high enough, go ahead and use the odd tier actions. Once you feel comfortable with tradeskilling you can do lots of writs to earn status for your guild without having to get a group together. My next article, I promise it will be this week, will be about how to achieve success with the rush order writs.
--
My characters( all on Nektulos Server ):
Diacre: 40 Armorer, 38 Shadow Knight
Leroy: 47 Tailor, 44 Templar
Courier Theloniuss: 50 Woodworker, 32 Bruiser
Envoy Lutte: 50 Provisioner, 28 Warden
Froche: 32 Carpenter, 23 Swashbuckler
Diacona: 14 Conjuror, 14 Scholar

If you'd like to join a high level ( currently 37 ), casual ( real life comes first ) guild send me a tell and I'll invite you to the Black Moon Syndicate.

If you haven't played Everquest 2 and would like to try the game, Sony currently has a trial called Play the Fae. If you own a mac, check out this page that talks about using boot camp to play EQ2.

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

API Design

I've been into programming for a very long time. I remember being intrigued by LOGO in 2nd grade. In middle school it was BASIC. However, it wasn't until recently that I went past script kiddie and on my way to serious programmer. I've been scouring the web and devouring books to find out more. One of the most importantant steps to moving beyond script kiddie-ism is writing (re)useable API's. One thing I just came across today was a good presentation on API design. It's a nice video with the slides just below it. ...

The presentation, which is mostly Java-centric, brings up some good points. One thing is naming conventions. Many people don't like to read the instructions. A well named method or class can make your API easier to use. Even if you are the only one using it, a good name can help you remember what something is or does a year after you wrote the code.

Another good point is to keep things as private as possible. Sure, it feels easy to work with classes that have public properties but it can make things more complicated. An object should know if and when any of its properties change so that it can take appropriate actions to its own state. If some other object changes the properties of an object without it knowing, the object's state may not reflect the change properly. This welcomes hard to debug errors into your workday. You also have to remember that things change. A property may not change an objects state beyond itself now, but in the future it may have to do more. In actionscript the use of get and set functions can help you mitigate past errors and ease refactoring but many languages don't have this option.

A final aspect that lets you leave script kiddiedom behind is documentation. Document religiously. This is so important. Once again, even if you are the only person using your code it will help you figure out what you were originally doing a year ago when you wrote it.

For a more indepth analysis of API design at many different levels, as well as much more, a great reference is Code Complete by Steve McConnell. It has a wealth of knowledge on how to make your code better. I've learned so much from this book and may be doing a review soon.

----
Daryl "Deacon" Ducharme is currently "Code Czar" for the Interactive Agency Provis Media Group, LLC which helps organizations enhance identity, connect with customers and increase productivity.

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

Losing FileReference Scope

I just ran into something while working with the FileReference class in AS3.

private function onUploadNewAppClick( event:MouseEvent ):void{
  var fRef:FileReference = new FileReference();
  fRef.addEventListener( Event.SELECT, this.onUploadAppSelect );
  var appsFilter:FileFilter = new FileFilter( "Flash Applications", "*.swf" );
  fRef.browse( [appsFilter] );
}

However, the SELECT event never got fired. I have used the FileReference class quite a bit in Flash 8 and AS2, why wasn't this working. In fact, I just made something with the FileReferenceList class that was almost identical, why wasn't this working. Scope, that's why ( I'll explain below ). ...

"It didn't work," isn't descriptive enough. Let me tell you what was happening. My function, onUploadNewAppClick, was firing and I was getting the file browse dialog. However, when I chose a file to upload, the dialog would close and nothing would happen. When I put a trace statement in the onUploadAppSelect function, I could see that it never got fired. Hmmm, what's different than what I did before?

Let's take a look at the FileReferenceList code that worked fine:

private function onUploadClick( event:MouseEvent ):void
{
  this.fRefList = new FileReferenceList();
  this.fRefList.addEventListener( Event.SELECT, this.onFilesSelect );
  this.fRefList.browse();
}

At first the only difference I could see was the appsFilter, an implimentation that is new in AS3. So of course I took it out and tried again. Same results so I put the appsFilter back in. The other difference I saw was that in my non-working code fRef is a local variable to the onUploadNewAppClick function. In the working code, fRefList is a member variable of the class onUploadClick is a member function of. So I changed my code to this:

private function onUploadNewAppClick( event:MouseEvent ):void
{
  this.fRef = new FileReference();
  this.fRef.addEventListener( Event.SELECT, this.onUploadAppSelect );
  var appsFilter:FileFilter = new FileFilter( "Flash Applications", "*.swf" );
  this.fRef.browse( [appsFilter] );
}

Voila! It worked. But why? Looking at the live docs I came across this:

if the FileReference object goes out of scope, any upload or download that is not yet completed on that object is canceled upon leaving the scope. Be sure that your FileReference object remains in scope for as long as the upload or download is expected to continue.

I had never seen that before, even though it is in the AS2 docs as well, but that seems like the issue. Think about the way functions work.

1. Function gets called
2. Memory is allocated for all local variables
3. Function actions occur
4. Memory is unallocated for all local variables

So in the case of my first verion of the onUploadNewAppClick function fRef was in memory long enough to open the browse dialog then went out of scope. There were no other references to it so it got garbage collected. When the dialog was closed there was nothing to fire off the SELECT event. Hopefully, someone else who runs into this issue will read my post before spending to much time wondering why it doesn't work.

Scope is a wonderful and powerful thing, but when you don't fully understand it errors often occur. Hopefully, I have brought a little more understanding to you.
----
Daryl "Deacon" Ducharme is currently "Code Czar" for the Interactive Agency Provis Media Group, LLC which helps organizations enhance identity, connect with customers and increase productivity.

Read More
Randomness Daryl Ducharme Randomness Daryl Ducharme

Walking Tall

For every child there are big moments. First smile, first laugh, rolling over. These are some of the early ones. One of the biggest is learning to walk. It's big because it signals the transition from infant to toddler. Yesterday, my youngest son Draegan took his first shaky steps on his own. I am very excited, as are his mom and big brother. Watching my children grow and learn is the greatest treat of being a parent.

Read More