Why I love and hate JavaScript

2009.03.16 OaD #75 | Consumed by code

JavaScript is a powerful client side scripting language.  It allows developers to quickly add/remove functionality.  It can be dropped in or generated from code.  In WEB 2.0, JavaScript is the backbone of creating rich user environments.  It is quite the catch 22.  Oh how I love to hate and hate to love JavaScript.

JavaScript can pass some rudimentary tasks to the client so, as developers know, this can save processing cycles.  Sometimes it can actually add processing cycles, so it definitely depends.  Saving processing time allows application to run faster for the most part.  You don’t have to wait for a complete page cycle to do tasks ala 1998.  Basically, users are not patient nor should they be patient.  They are used to the Desktop world.  I feel JavaScript helps bridge that gap for users; sometime developers/designers go overboard.

Ease of Use

Javascript is easy to use.  Compatible with any web programming language: Classic ASP, .NET, PHP, Ruby, JSP.  It integrates easily.  It is fairly lightweight and the syntax is not mind-blowing.

It is a little to easy to use and users can directly access things in your page.  It gives the user more control than what they know.  Look you can easily change the background of any page in the address bar.

javascript:document.bgColor = ‘#000000’;void(0);
^ Paste that into the address bar and press enter -> changes the background

This only touches the surface of what JavaScript can do.  It can get into your web app and change things around.  I use it for quick fixes on the fly or to try different things.  You can’t rely on JavaScript it will only cause you pain.  Can you trust the DOM?  No.

JavaScript is an interesting topic still it was once vogue, faded out, and then came back (with velocity).  I think at one point in JavaScript’s history it was somewhat confused for Java, but I don’t think that is currently valid.  There are so many great JavaScript libraries out there that enhance the UI and the total web experience.

They are even available from the Google API with no API Key which is an added bonus; unlimited connections to boot.  I don’t think a lot of these effects/plug-ins would be as robust or available if not for JavaScript libraries and the good old Goog.

I really don’t hate JavaScript, but I think it can be overused or used incorrectly (say for validation).  Sure it can help in notifying the end-user of validation issues; it should also be validated on the server side.  Web development is a many layered burrito.


Adding Tooltips to Checkboxlist Items

checkbox-1 The CheckBoxList control in Microsoft ASP .NET 2.0 can be quite limiting in features.  You can set a tooltip for the overall control; we can say “HEY THIS IS A CHECKBOXLIST”, which is great if that somehow helps you.  The true power would be in adding a tooltip to each individual item in the checkboxlist.  It would be nice to databind the field like other ASP .NET 2.0 Controls, but again no such luck.

To add a Tooltip to each individual item you are going to have to loop through the control.  By setting the title attribute to whatever you want will give you the individual control to name each checkbox in the checkboxlist.  This can done be done when pulling items in or on the case of a control firing.  Whatever works for you.

‘ Loop through CheckBoxList and set tooltip to checked if selected
For Each item As ListItem In CheckBoxList1.Items
If item.Selected Then
item.Attributes(“title”) = “CHECKED”
End If

This is really just a quick and dirty way to add tooltips to checkboxlist items.  If you are already pulling in jQuery or some other library I would say use one of the many Tooltip plugins out there.  If you are not using any Javascript libraries this can be a quick way to help achieve a goal.  I’m not sure if this will work in Firefox, but if you are going for crossbrowser definitely check out a Javascript library.


Growing Up or Growing Old

I think it may be the latter.  I am departing from my usual technophile view of sorts and taking a introspective look at some things that have been on my mind.  A lot has changed over the past few years, frankly, over last six months or so.  It has been a rapid fire of change and I guess that is what life is all about: CHANGE.

Home ownership, bills, working a lot, puppy, more bills, working around the house…  It feels like I barely have time to breathe most of the time.  I guess that is what life is about, the next phase in a way.  Less time for friends, less time for family, building my own family, my own life.  Not being in college anymore is a total departure from what I have been come accustomed to.  It is nice on one hand.. no homework or projects sucking the life out of me..  Now it is just house projects and work projects doing that.  It was a trade of sorts.  I am happy with my job and it is a lot less time consuming than school was.

k9 meadows grand opening 006.JPG

I was on a walk with the dog last night and I was remembering back when I was in High School; it seems like a lifetime ago.  A different town a different day.  I remember lifting weights in my parents basement at 1:00am listening to the radio.  It was just a neat time in my life.  I didn’t have many worries or concerns; I was young.

I have seen 1:00am only a couple times since I have been out on my “own”.  I think that is good having a schedule and such.

This post has nothing and everything to do with technology.  Technology is a passion in my life and it has taken me to where I am today, but technology is playing a different role in my life recently.  Since I have less time to see people that I have seen for years technology is a great way to keep in touch and see what people are up to.  Actually a friend I had in High School contacted me on Facebook yesterday, which was pretty cool.  I haven’t seen her in years.  She has a cute kid.

I have been on Facebook, Myspace, and other social networks for many years, but I think their role has changed.  I think when I was younger they were an addition to face to face encounters and now they take that place.  It is good, I think, because otherwise I would not no communication with my hectic schedule and life.

I don’t know if I am growing up or growing old.  Maybe neither.  I am changing because life is change.  It’s definitely not easy.  There are so many sacrifices that I am not used to.  With responsibility comes sacrifice to a degree.  I gain so much from my sacrifice though.  It’s a good trade.


How to: Connect Basic Cable to a Projector

I found it quite difficult to find information on how to convert basic cable (plain old cable) into composite.  This is for the folks who have cable, but don’t want to pay for extended services and cable boxes.  There are two verbiages that you will find on your web searches:

1)  Just use an old VCR!
2)  Just use an old computer!

End of thread…  End of post… That is where the story ends and it leaves a lot to be desired.  I have problems with both of these solutions.

1)  The VCR is archaic
2)  I don’t want to leave a computer running in a room that will be used sparingly
3)  I don’t want to wait for a computer to boot up

This can be negated if you have a cable box that already does that.  But there are still people out there without cable boxes.  Or don’t want a cable box in every room or on every device; I’m sure the cable companies want you to.  I can’t seem to justify the extra $30 + fees for the box to move away from basic cable.  Renting a cable box seems like a dirty tactic to me; in the long run they have to make a killing.

I have NetFlix so if I want to watch a movie I can just get it off of there.  Also, there is NetFlix streaming which is awesome.  I do not want to give the cable companies more money – it’s already highway robbery.

The problem with this is that projectors do not have a TV tuner.  It doesn’t know what to do with the coax connection.  Projectors cannot tune (most of them that are out there anyway).  But I believe there is a happy medium… a product by Ambery.com -> Super Video to WXGA Converter.  This device works much like a cable box expect that you can buy it and use it how you like.

basement projector system 001.JPG

It takes a coax connection (Clear QAM), it won’t decrypt any of the pay channels like a real cable box, and converts it to composite, VGA, or S-Video.  Composite will most likely be your best choice for a projector.  I believe they also have one with component connections.  If you are looking for HDMI I’m not sure what will be needed – I’m guessing an upconverter of some sort.

Clear QAM is important.  If the device is not Clear QAM then it will not be able to tune to the cable frequencies.  If you have been looking at the Analog-to-Digital most of the ones that I have found do not have clear QAM meaning they will not work with cable; you will need an antenna to retrieve the signals.

Continue reading


FLVPlayer Plug-in Fix for FCKEditor 2.6.3

I absolutely love the plug-in FLVPlayer for FCKEditor.  Inserting FLV into page or posts with the standard FCKEditor just doesn’t work.  This nice little plug-in is a champ.  Unfortunately, it has compatiblity issues with the new FCKEditor 2.6.3, so here is how to make this little plug-in work on FCKEditor 2.6.3

The problem I ran into was going to browse for media it would display a Page Not Found.  I’m guessing the method it was previously calling got depreciated.

Here’s where the error occurs:


function BrowseServer()
oEditor.FCKConfig.MediaBrowserWindowHeight ) ;

Replace that with the following:


function BrowseServer()
oEditor.FCKConfig.FlashBrowserWindowHeight ) ;

Voila!  This cleared everything up for me and I was off and running… 🙂


I see this update has already been add to the comments of the project on sourceforge, but it has not made it into the source code.  I wonder if the developer has abandoned it.


Another change that isn’t a bug that I made was automatically setting the width/height of the videos instead of having to enter that with every FLV file. Continue reading


Learning is Lifelong

After many years in school and working lowly, but rewarding, jobs in IT, I truly feel learning is one of the best attributes that I possess.  It is an attribute that everyone should strive for and keep close to them no matter what.

As I have stated many times before… I am an avid listener of podcasts and video podcasts.  I love them because they help me stay up-to-date in this frequently changing world of IT.  I would have to say my newest vidcast that I have been enjoying lately has been HAK5.  They are just a bunch of real down to earth people talking about technology!  They are a bit goofy but that’s okay with me.  I believe they were recently added to revision3, and I’m quite glad they were.

I really enjoyed the piece by Chris Gerling on reverse engineering on .NET applications (and more).  This is a very handy skill to have especially since I work with .NET.  As I watched the podcast I didn’t think much about it.  I found it to be very cool and engrossing; tres geek.  I like how they broke the segment down onto multiple episodes (inside of being deluged).


Come a few weeks later (now), a couple of the network guys came to my cube and asked me if I could help them with an application a previous developer wrote.  I politely said “Sure! Not a problem”, which they responded with “Great one catch though, all we have is the EXEcutable and we need it ASAP”.  I think that was actually two catches, but anyhow.

I said calm and coolly, “all we need to do is decompile the application get the source code and we’ll be ready to go”.  I suspect it was not the answer they were expecting.  I was calm and cool because I just watched the great hak5 episodes that involved reverse engineering!  Hot dog.  I earned major cred points for my attitude and how quickly I was able to reproduce the code for the problem.

After inspecting the code we found the problem to be a configuration code; not a development bug.  This was such a critical step the problem solving process.  This also proves that learning is a lifelong process that needs to continue beyond school and become apart of your life.