Last Saturday I had the pleasure to present a JavaScript talk at the Iowa Code Camp. The talk was Stop Programming JavaScript By Luck and it tries to highlight some of the most puzzling differences from your mainstream programming language (read: C#, VB, Java.)
I'd like to thank all that came to the talk and the Code Camp organizers for inviting me. Here are the video recording and the slide deck.
A month or so ago I bought a Blu-ray player. I waited a bit to buy one of those because, frankly speaking, the improved image quality and any bonus features in the discs weren't attractive enough for me to replace the DVD player.
I also wanted a networked player that could stream movies from my Netflix queue. To make matters worse, running a CAT-5 cable from my basement (where my wireless router lives) to the bedroom (the BR player's final destination) wasn't really something I was looking forward to.
That's when I did some shopping around and came across the LG BD390 Wi-Fi-enabled Blu-ray player. It supports wireless 802.11n and access to a few online services like YouTube, Netflix and VUDU. It can also find media in my home network.
Note: I know there's always someone that will come suggest taking a look at the PS3 or XBOX can do some or all of that. I'm not a gamer so I didn't want to have a gaming console in my bedroom and deal with issues related to the not being a simple player aspects of the device (like maybe having to buy extra adapters/connectors, remote control, and what-have-you). It's probably a no-brainer if you're into video games. Did I say I do not buy Sony?
So I went and bought the LG BD390 and installed it where it was supposed to be. I was a little worried about not having the 802.11n router setup yet (it was still on its way) but I decided to give it a shot even on my 5-year old 802.11g router. I thought maybe I wouldn't get HD streaming or choppy video, but at least I would get a feeling about the device's capabilities while I waited for the new router to arrive.
To my surprise, the LG BD390 worked great over wireless-G. Setup is incredibly easy (the only hard part was really entering the long WPA password using the on-screen keyboard.) It boots up fast. Within 5 minutes from its first power-on it had already found and updated its firmware, I had activated my Netflix streaming and The Office was streaming in HD on my TV.
Best gadget purchase in years. This device will definitely change the way I watch movies and TV series, and listen to music (BTW, since it's easy to upgrade the firmware and other LG products offer Pandora, here's to hoping the BD390 gets that too soon.)
You'd think that by upgrading my network to wireless-N would only make the whole experience much better, right? Me too.
I upgraded my trusty wireless-G router with a shiny new D-Link DIR 655 wireless-N Gigabit model. It has some interesting features, USB port, decent firmware features (well, read on,) and seems rather popular anyway.
Once I configured it to the exact same network settings as the previous router, I checked the laptops were working fine with it and went straight to enjoy some more streaming on my Blur-ray player. I immediately noticed that the signal strength had dropped from 5 bars to 2, 1, and sometimes no bars at all. Even when a couple of bars were there, it wouldn't even browse my local network.
I even tried using a cheap-o router in repeater mode but it didn't play well with my D-Link router and even the laptops would lose connectivity at random when this thing was active — I ended up returning it.
A month later (and a few lost frustrating hours) later I came across this post on the Amazon reviews for the player. Basically, even though there was a new firmware available, the router insisted in telling me it had the latest one. And it just so happens that the firmware it had (v1.2) had some serious bugs. Short version, many times it would not work at all with the Blu-ray player.
I followed the suggested instructions and things are much better now. I still get a very weak signal but at least I'm able to consistently stream HD content. I hope the next version of the BD390 comes with an external antenna. I might try another router and see if they have a stronger signal — this seems to be a common complaint about this D-Link model.
So if you're in the market for a Blu-ray player I can recommend LG's BD390 but I'd suggest you search the web for any issues with your wireless-N router (unless you're planning to wire it up, in that case I recommended it 100%). If you're buying your router together with the BR player, buy it from a store that you can easily return it in case it doesn't work well with the BR player. On the other hand, if you're looking for a new router, I cannot recommend D-Link's DIR 655.
Oh, the woes of supporting IE6 (or, better put, IE666 — the browser of the beast.)
Halloween is definitely upon us. Today I spent a good chunk of time trying to identify the source of a problem in my application. Right now I'm in the process of jQuery-fying some legacy JavaScript, which includes Ajax calls and error handling logic.
At some point I needed to pop-up a DIV that was supposed to look like a modal message box, reporting some error that happened during the Ajax call. That was not hard at all. I used the SimpleModal plugin and got the message box up in not time at all.
As with many web developers out there, I don't have the luxury of ignoring IE6 users because they are upwards of 60% of our user base (corporate users that for some reason can't easily upgrade their browsers.)
I thought it wouldn't be a problem because the SimpleModal plugin handles a number of IE6 issues,
including the insertion of an IFrame
to overcome the bleedthrough of Select
tags.
But of course it couldn't be that easy right?
In some of my tests IE6 was simply crashing when I tried to open the "modal" message. After a lot or hair pulling, I saw this suspicious HTML in one of my messages:
<table style="font-size: expression(parentnode.currentstyle.fontsize);" > <!-- rest of the table is normal --> </table>
Sure enough, moving that hack to a proper CSS rule in the external .css file made the error go away. We shouldn't be using dynamic CSS expressions anyway, since they were removed from IE8, so I went ahead and ditched that kind of usage wherever I could find it.
This is just to keep us on our toes regarding IE6 support. Even though the modern JavaScript libraries go to great lengths to support IE6 and make our coding transparent, nothing substitutes good old manual testing to make sure IE6 doesn't play pranks on us in production.
In this month's Chicago ALT.NET meeting we will be taking a look at Apache CouchDB. I quote from the official site:
Apache CouchDB is a document-oriented database that can be queried and indexed in a MapReduce fashion using JavaScript. CouchDB also offers incremental replication with bi-directional conflict detection and resolution.
CouchDB provides a RESTful JSON API than can be accessed from any environment that allows HTTP requests.
6:00 pm
Pizza and networking time
6:30 pm
CouchDB is one of the more mature schema-less map/reduce object dbs out there. In this talk we'll cover the basics of what CouchDB is, and why it's cool, and then we'll run through a sample application. The application will show off LINQ to Couch, basic persistance, views and full-text search with CouchDB-Lucene.
Alex Pedenko has been in software development for about 13 years, starting off on Borland Delphi, then spending about 4 years in Java and finally making the switch to .net around '03
Currently, he is the director of software architecture and chief architect at a healthcare services company. He has used that role as an opportunity to inject some modern ideas into an otherwise lagging industry, moving the company from a classic "giant web-app strapped to an even more giant db", to a distributed, service-oriented environment utilizing RESTful services, and rich-client applications.
Alex is also involved in a number of Open Source projects like Bistro and NDjango, and the .net side of CouchDB via Divan and LoveSeat