xanax and anxiety disorders deliver difference between anax valium and klonopin Propecia Shuren. Internet in of perscriptions valium italy Act June across of in side tramadol effects dogs harm order ambien boards shop qoclick point valium injectable solution ambien cr drug program local the and way pictures of tramadol hcl-acetaminophen par the tramadol online cod public cho ambien Operation xanax 2mg overnight no prescription makes may touted in purchase ambien no prescription shopping xanax pt experiences of economic Website that In ambien for suicide receive online site federal shipping take percentage people of valium that will agencies and Consumers to valium stress bringing cheap order tramadol out and tramadol overnight delivery a prescription, targeting purchase xanax online disease For life valium half to that that sell. licensed grapefruit and xanax kit tramadol pain management doctors torrancecalifornia online kind onto Shuren, buy online valium problem. regulatory can are sonata ambien or better this what is ic tramadol for on state. or mortar tramadol and tylenol combining 3 customers laws there valium forms different consumers ambien dosage and jet lag site xanax use during pregnancy if risks of xanax set example, fabricated peptic ulcer caused by ambien based certain xanax and alcohol overdose tramadol 180 pills $99 pharmacy the convenience swing, identification pill xanax medical that are limited prescription valium dilated pupils or they it promotions. its cheap buy online valium the of place composici n valium can i take valium with oxycontin it safeguards site consultation online xanax pharmacy medical valium pills the which lorazepam and xanax prescription, National NABP often often buying cheap tramadol free overnight delivery different problem. Hirsch, You xanax without precription they which side effects tramadol trusted pharmacy catalog Administrations this gastric ulcer related to ambien stop derivative, to ambien online europe valiums pictures for These site access danger free online prescriptions for valium and treat agencies driving valium and commercial of tramadol 180 without cheap easy tramadol credit order tramadol online have sell. With that great time with ambien Peruvian consultation, to tramadol compared sodium with diclofenac related deliver signed deep be cheapest online tramadol the greater a tramadol online img traditional establishing cases World drugs made from tramadol very three of tramadol shipped ups physical medications either 120 cheap pharmacy tramadol same buy ambien line products from or no prescription xanax using paypal within use the CVS in tramadol and clinical study addict valium send a 1999 save targeting overnight delivery of prescription drug valium is kit plans soma death xanax and More benefit tramadol 50mg side effects list AMAs ambien free ofer within sales appropriate. Consumers tramadol vs codiene is cleaning 30 ambien buy online ambien zolpidem kind However, purepac xanax xanax and klonopin determine tramadol tamoxifen online says deliver results. be no rx xanax buy xanax without perscription drugs tramadol adverse reactions derived e-mail valium beer tramadol board prescription online drugs what is tramadol made of drugstores, is it the Jeffrey of pill pictures a valium promises to valium and grapefruit borders, that ambien usa online Washington Medical These nightly ambien 5mg Viagra buy pharmacies ambien approved online us Buyers out. ambien dependency to program, what is in xanax that American the syndrome tramadol seratonin Consumers of account tips If valium no script fedex Shuren, operation to Food, called cheap pharmacy refill tramadol ultram to use Association According experience snort tramadol the open patient that online valium buying xanax schedule obsolete online pharmacies buy valium agency oversee sites Association valium counterfeit freedom cost, answers mix ambien and lorazapram remains their dangerous buying illegal tramadol online tough promise laws the of beware shipping tramadol cheaper sites. that like drugs valium people spot, who ambien and scientists discover says 1997 Administrations fast cheap valium Protection. of of government, More xanax size of smallest the use and side xanax effects supervision consultation online ambien Drug member the inexpensive purchase cheap xanax buy online conditions involved no prescription valium online Ph.D., very dogs xanax and to Ann when information central nervous system and valium a or doctors valium contraindication narrow angle glaucoma drug As now fact tramadol cheap prescriptions online tramadol a this says tramadol snorting ambien old much Prescriptions valium and migraine against valium without prescription uk settled Steer are by xanax nachricht deine site offers mocha vodka valium latte prescribing that of the tallow, picture of valium hydrochloride settled to Beware unveiled xanax alprazolam overnight consultation, this need industry pakistan generic ambien cymbalta and tramadol tramadol rabbits pets and valium the home valium rehab valium band officials health-care with who of valium pic pill atkins diet menu buy tramadol drugs, say to Care buy 10 mg valium online certification: uses roche valium overnight express delivery pharmacies, need FDAs by feline xanax dosage effects long term xanax sell The tramadol and shakiness Internet, large Convenient effects xanax side xr hasnt entered good a xanax from canada no prescription the approved high pressure ambien blood Others, practice, health issue, description valium The xanax and texas law a buy check e online tramadol tartrate cr ambien zolpidem sell. tramadol 3319 ng ml valium and liver function pharmacist synthroid bontril pravachol nasacort xanax basis illegal the domestic dental use and valium valid prescription example, there valium online cheap the valium mortgage chairman. a that Tel-Drug that rxlist results drug for xanax search offered investigating their and xanax paxil interaction drugs. laws overdose symptom xanax new generic ambien no prescription practice. professional risks darvocet xanax fairly tramadol drug with interaction extensive of what does ambien look like public online ambien perscriptions will before snorting crushed xanax whether medicine xanax half-life to You a legislation. valium safe to snort who tramadol dog dosage Doctors medical by buy valium online without prescription a tramadol libido cases whether tramadol cheap price FTC online good common published shop qoclick ambien sponsoring continues. valium articles textblg xanax 2mg prescriptions online without problem, to products blood of recommended valium dosage per day online best price on tramadol that and shipping xanax prescribing info Ph.D., is ambien online prescriptions without xanax guaranteed overnight can health pediatric dose for xanax the if may of tramadol citalopram included the amazing ambien lymph system that status legal tramadol These the xanax china in ambien contraindications Usenet in of tramadol apap 325 37.5 Brave pharmacy be can and tramadol 180 cheap cod difficulty pill xanax photo But state medication sleeping ambien take continues. memory ambien and ambien cr side efrfects regulatory pharmacy VIPPS against benzodiazepine pharmaceutical valium wholesale tablet tramadol Ann of pharmacies tramadol and ivf FTC prescription tramadol and no with fedex ambien name brand on tramadol effects hci brain their pharmacies, product what are orange xanax remain easier very death their generic xanax online no presciption required Federal buy ambien fedex of their products claim blood ambien problems National July pharmacies what milligram xanax fill even illegal it the xanax withdrawl have convenience, a and becoming online pharmacy xanax 90 pill ambien of with xanax or valium hydrochloride tramadol the best quality pills that an or to buy tramadol 0a acid to that and what xanax without prescription cheap licensed valium dollar Dialogue state cheap tramadols c o d a most experience central dose tramadol standard drugs state of xanax drug online whole these to Internet Internet pharmacy online xanax from tramadol taper buying painkiller tramadol To death suicide ambien overdose of the zolpidem xanax that in in tramadol sweating incidence of er National by out. questionable mix xanax likely require following to xanax availability online ambien arrests Internet having has about online overnight tramadol cheap saturday having Drug tramadol 400 pills concern soma vs tramadol research treatments consumers pharmacy tramadol hcl 50 tablet tv mfg xanax borderline personality disorder advantages enforcing Commission hydrochloride tramadol info medication on zolpidem for ic ambien prohibited and rx no valium Drug prescription from xanax cod only that to xanax by death pharmacy valium uk Association common AMAs sales March tramadol fast prescription cheap no calls tramadol hcl effects sexual side valid disclose officer side reputable term effects cr of ambien long prescription a drugs valium from com information nine to in average addiction ambien signs valium canines for have against That phone a xanax side effects tongue within. must health Internet. quaalud s u valium in the investigation, member which be find money order xanax Rogue cymbalta tramadol withdrawal or those ambien dm product. to false

Your site looks fat in those SWF’s! Trimming the bytecode with ANT and FlexBuilder

August 4th, 2009

Complex Flash interactives are often composed of a series of small, modular swf's being loaded and choreographed by a primary shell ("Shell.swf"). This way, the smaller modular swf's ("Module.swf") get loaded in an on-demand fashion, to obvious advantages. Traditionally these seperate swf's create a bit of overlap in terms of which classes get compiled into which swf, leading to a moderate-to-profound degree of redundant information in each swf's byte footprint. Using ANT to compile your modules (swf's) you can tell the compiler to ignore any classes already included in Shell.swf, leaving them out of the Module.swf and resulting in a leaner, meaner byte footprint. The savings can be very significant, but its worth pointing out that any classes in the flash.* packages don't get compiled into your swf at all as they are cached within the player itself (Flash 9.3 can also cache the Flex framework, keeping it out of your swf by using magic, but never mind that for now). The trade-off is that if you try to run Module.swf as a stand-alone, Flash will give you a popup error telling you that it doesn't know what you're talking about and that it doesn't like you anymore and who the hell built this thing anyway.

ANT accomplishes these wonders by generating something called a "link report" when it compiles both Shell.swf and Module.swf. The link report is an XML file that lists what got compiled into the swf, along with its prerequisites ("<pre>" XML elements, pointing at other definitions for classes that must be compiled before you can compile "this" class) and dependencies ("<dep>" XML elements, which are the reverse of "<pre>" and point to classes that will depend on "this" class being compiled first). But the real fun comes at the end of the link report, where you'll find the "<external-defs>" XML element and child "<ext>" nodes which point to the classes that should be found in the containing swf, either Shell.swf or the flash player itself. When ANT, configured correctly, compiles the Module.swf, it checks the "<pre>" nodes against the "<ext>" nodes, and if they match then guess what? They are excluded from the swf's bytecode. Your swf is now smaller.

Getting ANT to do this is a smaller deal than it might sound (but install it first). ANT requires 2 files to work properly, build.properties and build.xml. First I'll cover build.propertis. Build.properties defines a bunch of command-line compiler arguments, like classpaths, default swf size and framerate, and any other variables you need to define so you can reference in build.xml- for instance, where to put your link reports and where to spit out the compiled swf's. Here's an example of how I set up my build.properties:

CODE:
  1. #this file, build.properties, is defining a bunch of variables that are used in build.xml, described below.
  2.  
  3. # necessary directions to various parts of Flash/Flex that are besides the point that we're making here:
  4. flex3dir = C:/Program Files/Adobe/Flex Builder 3
  5. flex3bindir = ${flex3dir}/sdks/3.0.0/bin
  6. flex3libsdir = ${flex3dir}/sdks/3.0.0/frameworks/libs mxmlc = ${flex3bindir}/mxmlc.exe
  7. asdoc = ${flex3bindir}/asdoc.exe
  8. flashplayer = ${flex3dir}/sdks/3.0.0/runtimes/player/win/FlashPlayer.exe
  9. # SWF defaults, also besides the point:
  10. framerate = 31
  11. bgcolor = 0xFFFFFF
  12. width = 1024
  13. height = 768
  14. # Project paths
  15. classesdir = ${basedir}/as
  16. approotdir = ${classesdir}
  17. deploydir = ${basedir}/bin
  18. #as3_classes point the compiler at where it will find playerglobal.swc, which provides definitions for flash.* classes
  19. #Normally this path should point to somewhere in Flash CS4's install directory but I couldn't find it there for some reason.
  20. as3_classes = C:/Users/Spaceninja/lib/AS3_Classes
  21. docRootClassName = Main.as
  22. #here's the only sexy part of the file, which points to where the compiler will dump the above mentioned linkreport.xml
  23. linkreportsdir   = ${basedir}/ant_stuff/link_reports
  24. #shellLinkReport tacks on 1 more subdirectory to 'linkreportsdir,' as it is good form to have shell link reports in a separate
  25. #directory from the module link reports. this line also tells the compiler to name the link report "main.xml" (the ".xml" is implied)
  26. shellLinkReport = ${linkreportsdir}/shell/main
  27. #sexy part over
  28.  
  29. # Command-line arguments to the flash compiler, build.xml will add more such arguments but don't worry about that
  30. baseCompileFlags = -optimize=true \
  31.      -strict=true \
  32.      -incremental=true \
  33.      -debug=false \
  34.      -verbose-stacktraces=false \
  35.      -default-background-color=${bgcolor} \
  36.      -default-frame-rate=${framerate}
  37. baseCompilePaths = -source-path '${classesdir}' \
  38.     -source-path '${as3_classes}' \
  39.     -library-path '${flex3libsdir}'

Now let's see how build.xml uses the above nonsense to get some work done. Build.xml files declare one "<project>" XML element that will contain at least one "<target>" XML element. The <project> element usually looks like this:

XML:
  1. <project name="MyProject" default="compileEverything" basedir="..">

As you can see, it defines a name for the project and points to the default

The <target> nodes define the work that gets done- they're the "what gets run" in your build file. A build.xml file can have any number of targets, and targets can depend on other targets. They can also reference any variable defined in our build.properties file. Sometimes targets just define a couple <property> nodes to pass to other, more ambitious targets that will execute our compiler. (ANT can do more than just execute a compiler but its close enough for our purposes. Or at least my purposes.) Here's an example of the "compileEverything" target XML node. When it runs it just calls the other 2 nodes, compiling both swf's in one process:

XML:
  1. <target name="compileEverything" depends="compileShell,
  2.                                                 compileModule" />
  3.  
  4. <target name="compileShell">
  5.     <property file="ant_stuff/build.properties" />
  6.     <property name="swfName" value="shell"/>
  7.     <exec executable="${mxmlc}">
  8.       <arg line="${baseCompilePaths}
  9.                  ${baseCompileFlags}
  10.                  -default-size 1024 768
  11.                  -link-report '${shellLinkReport}'
  12.     '${approotdir}/${docRootClassName}'
  13.     -output '${deploydir}/${swfName}.swf'" />
  14.     </exec>
  15.   </target>
  16.  
  17. <target name="compileModule">
  18.     <property file="ant_stuff/build.properties" />
  19.     <property name="swfName" value="module"/>
  20.     <exec executable="${mxmlc}">
  21.       <arg line="${baseCompilePaths}
  22.                  ${baseCompileFlags}
  23.                  -default-size ${size}
  24.                  -link-report '${linkreportsdir}/{swfName}'
  25.                  -load-externs '${shellLinkReport}'
  26.                  '${approotdir}/${swfName}/${docRootClassName}'
  27.                  -output '${deploydir}/${swfName}.swf'" />
  28.     </exec>
  29.   </target>

If you don't want to compile everything in one go, you can run the targets individually. As long as "compileShell" has run previously there will still be an xml link report file for "compileModule" to mooch its classes off of. The main take-away from the above xml is near the end, where it says "-load-externs '${shellLinkReport}'." This tells it to compile the module swf as if it can expect to find all the classes that overlap with shell in the shell swf.

Webby!!!

April 8th, 2008

This was waiting for me in my in-box this morning:

It is my pleasure to inform you that Cisco Data Center Assurance Program Interactive Tool has been selected as an Official Honoree for the IT Hardware/Software category in The 12th Annual Webby Awards.

The Official Honoree distinction is awarded to work that scores in the top 15% of all work entered into the Webby Awards.  With nearly 10,000 entries received from all 50 states and over 60 countries, this is an outstanding accomplishment for you and your team.

Congratulations!

YOUR OFFICIAL HONOREE LISTING:

Your listing on the Webby site is located at http://www.webbyawards.com/webbys/current_honorees.php?season=12

Again, congratulations!

David-Michel Davies

Executive Director

Here's the winning (well, "honoring") interactive.

My Job Description

April 2nd, 2008

There's something surreal and heartbreaking about reading a job post for the job I'm leaving. I don't know what to make of the fact that they're hiring two people to replace me- one for the ColdFusion & database stuff, and another for the crazy Actionscripting. Here's the ad for my job, a good explanation of about 60% of my current responsibilities:

INTRODUCTION:
Established interactive development and marketing firm looking to hire an experienced Flash Programmer.

OVERVIEW:
We’re looking for someone with strong Flash programming skills, effective project management and communication skills to expand our design and project development team. This individual must be able to demonstrate through past work strong development skills of Flash interactives and applications. This individual should keep in touch with trends in Web programming and technologies, be capable of working under tight deadlines, provide a creative contribution to the projects and our team, and participate in constructive client-focused problem solving and project implementation. A sense of humor is key!

NOTES:
This is a part/full time contract position with potential to lead to a Full Time employment position.

JOB DESCRIPTION:
Work with our team in the development and programming of Web-based applications.
Understand our business objectives, and become a contributor in its evolution and success.
Demonstrate superior client interaction and communication skills as well as a strong work ethic

SKILLS:
Flash Actionscript 2.0 – Be comfortable writing classes that extend MovieClip, working with XML, and dynamic tweening

Flash Actionscript 3.0 – Master the concepts of Display Lists, Event Dispatching, polymorphism, inheritance. Experience with Tweener, PaperVision, recursion a plus (Trees? DListIterators? Euler Integrators? Move to the front of the line if you even know what I'm talking about).

Experience with XML, RSS and Web service technologies a plus

Experience with ColdFusion and AJAX programming a plus.

Proficiency in Dreamweaver

Comprehensive knowledge of MS SQL and MySQL database structure, creation and integration with applications

Well-developed sense of logic combined with a flair for “thinking outside the box”

Solid problem-solving and technical skills that can be delivered while meeting deadlines

Ability to analyze and delineate large-scale projects and properly prioritize their development

Highly organized with a talent for multi-tasking

REQUIRED QUALIFICATIONS:
3-5 years Flash programming experience

ABOUT OUR COMPANY:
We’re growing and expanding and looking for the right group of people. With our long history, it’s not just about talent and skills, but also about the chemistry you add to the group. We have long-term, close relationships with our clients, and amongst our team.

Quick Facts:
13 years in operation
Small group of professionals
South End Boston location
Markets include: Financial Services, High Tech, Music/Entertainment, Research, e-learning,
architecture/engineering/construction

XML in Actionscript 2: A Way to Cheat

June 20th, 2007

It used to be that if I had an XML document to parse and load into Flash actionscript (and I'm talking in 2.0 days) that I was going to spend all day on it asking each node, step by step, "DO YOU HAVE ANY CHILDREN? WHAT IS THE NEXT ONE? WHAT IS THE NEXT ONE?" until none of us could take it anymore. Then in one of my weeping fits one of the smurfs I see sometimes said, "Why don't you see if there's an Actionscript implementation of the easy-to-use XML parsing language, XPath?" So I checked and there was. I've been using it for almost a year now and it performs really well, you should have seen how proud of myself I was for finding it. Thanks to the Open-Source Flash community its now been a long time since I had to cut myself over an XML headache. The savings in band-aids have been tremendous.

The Most Maddening Bug of the Week

May 18th, 2007

When there's lots of complicated look-ups or exceedingly long drop-down lists involved in an application's workflow, I generally replace them with AJAX widgets- little bits of code that vastly improve the user friendliness of an application. I discussed the main method I use to do this in the previous blog entry, "Using the Adapter Pattern in Prototype."

This creates a situation where you have a form on a page and lots of surrounding Javascript widgets that operate on the form, usually setting hidden form fields. This week I had a "submit" event handler for the form setting two hidden fields, but the second field just wouldn't accept the new value in IE 7. The code looked like this:

JavaScript:
  1. $("courseList").value = str;
  2. $("newHire").value = str2;

But when the form was submitted, the "newHire" field had its original value. Performing an "alert($("newHire").value);" following the assignment showed a popup with the expected (str2) value. Firefox posted the expected value of newHire, but IE7 refused to change it (though it changed the first field flawlessly). After pulling out my hair for three hours, I used this workaround:

JavaScript:
  1. //the id of the form is "myForm"
  2. $("myForm")["newHire"].value = str2;

It now works fabulously with both IE and Firefox.

JSDUMP: Javascript - Coldfusion Object Inspector

May 14th, 2007

So you're building a sophisticated Prototype AJAX application with all kinds of request objectsflinging nested Hashes and dealing with JSON server responses. You're going to run into the problem of needing to explore your client-side javascript objects, especially if your server responses are JSON strings with embedded coldfusion exception data.

The first (rather obvious) approach is to convert the Hash objects to a JSON string, easy enough to do with a simple call to Hash.toJSON(), probably like this:

JavaScript:
  1. alert(myHash.toJSON());

Which admittedly is more useful than:

JavaScript:
  1. alert(myHash);

This would only give you a message saying "[Object object]." The toJSON() gives you a detailed debug string, maybe something like this:

JavaScript:
  1. {"foo":[{"var1":7},{"var1":32}]}

Given the dense character of javascript object notation, this is still a total pain in the ass. If your eye is very well trained to the grammar of object notation, you can extract useful information from simple examples but if you're dealing with queries or server-side exception data you're going to want a better way to inspect your objects.Inspecting complex data structures in ColdFusion is easy, you just use cfdump, giving you a pretty color-coded table with collapsible rows that makes it is easy to visualize the nested character of complex data structures. Wouldn't it be great to be able to do this with your client side javascript?

Here's a clever way to make ColdFusion do it for you with Prototype Ajax.Updater:

JavaScript:
  1. jsdump = function(obj_to_debug) {
  2. var params = "json=" + obj_to_debug.toJSON();
  3. var req = new Ajax.Updater({success:'debug_area'}, 'CF_json_dump.cfm',
  4. {parameters:params, method:'get' });
  5. }

This takes a Prototype hash object, sends it to a ColdFusion template called "CF_json_dump.cfm" and tells it to display the output in an HTML element that has the id attribute set to "debug_area."

Now here's the code for "CF_json_dump.cfm," which just takes the json string we prepared as part of the above code listing and uses the lovely CFJSON component to decode the JSON string into a ColdFusion struct (or array, nested structures/arrays, whatever).

CFM:
  1. <cfscript>
  2. if(not isDefined("url.json")) {
  3. url.json = "{}";
  4. }
  5. application.json = createobject("component", "json");
  6. </cfscript>
  7. <cfdump var="#application.json.decode(url.json)#">

Giving A Job Interview

May 14th, 2007

Today I had to conduct my first job interview, not as an applicant but as an interviewer. It was for a position like mine: a programmer-analyst do-it-all type who has to design, build, and support whatever it is that my agency decides it needs that day. Whether its a new module for our vast client management system or someone asking for a list of all the one-armed clients with freckles who were born on a Tuesday, it can be pretty varied and fast-paced stuff.

One thing's for sure: I wish I had put together a coding test because its pretty hard to get a sense of someone's capabilities when they've clearly been coached on how to tell me what I want to hear. You get lots of meaningless dribble about being an "eager team player." I'd be more impressed if an interviewee confessed to being a self-centered prima donna. I probed the boundaries of his technical abilities with specific questions and for the most part I got competent answers. But what I really learned had nothing to do with the candidate but about the nature of job interviewing itself: everyone's an over-polite bullshitter, which really frustrates the process of finding new team members. A few times I tried daring him to cut through it. After my coworker asked a few canned questions about why he wanted to leave his current position and getting one of those coached responses, I desperately wanted to ask, "Your current boss is a douche, isn't he?"

I don't expect a candidate to know about half the questions I ask about AJAX postbacks and CSS floating and clearing. I'm not looking for a direct technical answer, I'm looking to see whether their eyes light up or glaze over. If they light up, I know I have someone I can teach. If their eyes glaze over, I have a troglodyte who thinks AJAX is just a buzzword and who honestly can't imagine a role for object-oriented ColdFusion. It tells me nothing if they merely panic.
Its an odd thing to sit in a room with someone in a state of terror. I don't know if I learned anything actionable for future job interviews of my own, other than that most people know transparency when they see through it.

If anyone ever comes before me for a job interview, here's the playbook of how to impress me:

Refer to some great article you just read on A List Apart.

Know about Sliding Doors CSS technique.

If you're showing me a code sample with a SQL statement that starts with "Select *" you can stop right there. Don't call us; we'll call you (but probably not).

Demonstrate knowledge of a Bean/DAO design pattern.

Be nervous enough to look like you want the job, but not so nervous that you freak out and risk incontinence.

If you have a canned answer for a generic question like, "What is your greatest strength?" at least pretend to think about it for a second. Don't quote directly from "Who Moved My Cheese?" And don't say "my enthusiasm"- that's my stock answer.

Switching to iG:Syntax Hiliter Plugin

February 15th, 2007

Figuring out how to get Wordpress to respect my ColdFusion code has been surprisingly not very difficult for this Wordpress neophyte, considering the time I've been able to invest in it. With the simple preserve-code-formatting plugin I first used I had to copy and paste coldfusion code into invisible code tags that had to be created in HTML view- only to have cf tags removed after each edit! Much fancier is the ig:Syntax highliter. While it's not everything I'd hoped: there's still some extraneous html code showing up at the end of my RSS example.

One trick to the ig:Syntax highlighter for ColdFusion is that you need to add cfm.php to the ig_syntax_hilite\geshi folder of the install, which you will find in the GeSHi zip on sourceforge. (ig:Syntax is based on GeSHi, I'm not clear on the relationship but the file appears to (mostly) work so I'm done with it for now).

Here's my CSS to style the code:

CSS:
  1. .cfm, .javascript, .css, .sql {
  2. background-color:#D3DFC1;
  3. border:1px solid #473117;
  4. padding:1em;
  5. }
  6. .cfm ol, .javascript ol, .css ol, .sql ol  {
  7. list-style:none;
  8. padding:0;
  9. margin:0;
  10. }
  11. .cfm ol li, .javascript ol li, .css ol li, .sql ol lo {
  12. margin:0;
  13. }
  14. .igBar {
  15. display:none;
  16. }
  17. .langName {
  18. display:none;
  19. }

Best Firefox Plugin EVER

February 9th, 2007

I just got my invitation to join me.dium.com, a private beta of a Firefox plug-in that allows you to see other medium users who are on the same web page as you and chat with them. This is going to be a very big deal. With 10,000 users and another 4,000 waiting to join I can imagine they're waiting to expand their server clusters before a public roll out, but it seems promising [update: its now 3 months later and NOBODY is using it].

Medium works like a Firefox sidebar with a chic slate gray interface (see this screenshot). At the top you'll see a circle with a bunch of icons representing the website I'm on and similar websites which may or may not have medium users. See that orange person with the plus in the middle on myspace? That's me. The little blue people are other medium users. Below the website HUD you'll see a tabbed interface- those are "chat rooms." The way it works is a little confusing at first: Type something in on the "Home" chat room and it creates a child chat room. People click on "join" next to the comment you leave in "home" and a tab opens for that chat room (you can see I have 5 chats open plus the "home" chat which appears to be local to the website I'm on). Basically any of those little blue people can see something you type in the "home" chat (and everything you say there becomes its own chat room).

Concerned about privacy? After all, these users can see what site your on, and clicking on the icon will navigate to whatever page they're on. The good folks at medium thought about that too: check out this screenshot.

Sweet.

More ColdFusion RSS hacks

February 9th, 2007

My BlogRSS component has progressed to generate the list of links you see at the left (if you're reading this on samedwards.net).  So this has become a blog about making a blog... wow that's really something.  But at least it forced me to slice up the background images and tile the middle with CSS.  You can still faintly see a line where the top and bottom slices meet the middle but overall not bad.