Tags: websites


Lovely Weekend, and Website "Fun"

First off, for those who haven't noticed, my website is down. Why? Well, the short version is, I somehow botched a Commit operation with SVN (version control system that helps with development). I'm not entirely sure how I managed to do this, but I imagine it had something to do with the fact that my last commit on that project was at least 8-10 months ago, if not longer. I just haven't had time to work on it, and on the occasions I did, it was just little quickie edits I made directly on the server.

Anyway, when I hit the commit button after a large series of edits, SVN decided that I had told it to basically empty the whole directory, and the only files that survived were ones in a conflicted state. In addition to losing a bunch of extra files I didn't care about, it also took out most of the content files, a few system files, and at least one stylesheet. Self-contained applications like the gallery were unaffected, so I left them intact initially, but when I realized how many 404 errors were occurring (and I still don't have a good 404 handler written), I decided to just redirect all requests for the entire virtual host to a "temporarily down" file.

I can recover it, since the only thing I truly lost was the work I did that day (and even some of that survived in various places), but it'll take some time to get everything in one place and rebuild the repository. Plus, even though I have other things to work on right now, it's very tempting to take this opportunity to rebuild the site like I've been wanting to do for a long time now. Among other things, I'd really like to deploy a CMS, since keeping track of hundreds of individual content files is painful regardless of how streamlined the process is. I'm still proud of the fact that I wrote a system where a plain text file needs only one line of code to wrap a fully-dynamic feature-heavy site around itself, but it'd be so much easier to manage content if I had it all in a database.

Unfortunately, I really need a new layout; mine was impressive when I was new to CSS, and it's still acceptable, but I've stretched it to its limits for new features and dynamic-ness. I'd pay for someone's help if I could, but I can't right now, so if anyone has graphic design skills and is interested in a pro-bono project for an artsy photography/writing/personal site, let me know :-)


Aside from that, I had a pretty nice weekend. My friend Dusk decided to come down for a bit, and even though our original hiking plans were cancelled because of Shroedinger's Rain, we had a great time. Among other things, we went to see How to Train Your Dragon in 3D, which was loads of fun; I'd seen it twice prior, but in 2D, and he hadn't seen it at all. Definitely an awesome movie, and 3D really added to the experience in a nice way. It's always fun to have visitors :-)

Online Video Ads Need To Die

For quite awhile, I've been a fan of The Nostalgia Critic and his less-active counterpart Nostalgia Chick. I watch videos from them on a regular basis, and I enjoy nearly everything they put out. However, I have a major issue with the site: Ads embedded in the videos.

Now, I understand how the internet works, and I'm quite aware that any website has to generate income somewhere once it gets a certain level of activity. I don't particularly like it, but the reality is that the internet we know today is built to cater to commerce over creativity. And, for sites that don't inherently sell anything, selling advertising is a somewhat reliable, if dubious, way to generate the income necessary to continue to exist. I block ads as much as possible, of course, but website ads aren't usually very intrusive anyway. Video ads, on the other hand, are the absolute bane of my existance.

I'm not talking about ads that play before the video; as annoying as those are, they're easy enough to mentally tune out, and they only last for 30 seconds or so before a video of 5-30 minutes (depending on what you're watching). Kinda like TV commercials, which I tune out so easily that it's actually more annoying to pick up the remote and fast-forward through them on my DVR. I'm talking about banner ads embedded in the video itself.

The Nostalgia Critic's site uses Blip.tv to host their videos. Not many people use that video hosting service, but anyone who's used Youtube is familiar with their advertising technology, which can overlay pretty much anything over the videos (Youtube uses it for those comment boxes in videos). And when I first started watching their videos, their ads were actually tolerable. The video player overlaid a translucent black rectangle over the bottom chunk of the video containing a text ad. Not exactly ideal, but not overly distracting either.

However, a few months ago, they really ramped this up. The translucent black rectangle still appears, but instead of containing text, it now contains full-colour banner ads. Usually animated. And there are animated ad overlays without the box that open to a full-screen ad if your mouse so much as grazes the edge of the video window (not just mousing over the ad itself). Aside from full-screen interstitials, I don't think I can imagine more intrusive and distracting advertising for online video content.

But the real kicker in all this, and what prompted me to write this post, is that Blip.tv's video player and advertising are so resource-intensive that no browser can run or interact with the video plus ads smoothly. It was bad enough when the ads were just text-based, they lagged a little during fade-in and fade-out, but not enough to really affect anything. These new fully-animated ads, though, are unbearable. The video stream typically lags for almost a full second when an ad appears, and if I dare to try to close a particularly annoying one by clicking the little X in the corner of the ad, the video and audio come to a dead halt for upwards of five seconds, followed by several seconds of unwatchably choppy video as it tries to re-sync.

Of course, this is on my desktop computer, which is on hardware that was top-of-the-line seven years ago, runs constantly, and hasn't had Windows reinstalled in about four years (I think, I can't remember the last time I did it). So, despite being surprisingly powerful and usable for its age, it does tend to chug a bit with things like video anyway. So, I hooked my laptop up to my TV to watch some internet video on the big screen, starting with a new Nostalgia Critic review. My laptop, if you don't recall, is a hypothetical future-computer from space that cost more than the value of my car, and it absolutely pwns at video. Games that are unplayably laggy on my desktop (not necessarily new ones) run with perfect framerates on my laptop. So, theoretically, I would expect such a powerhouse of computing superiority to handle a Flash video player, even a notoriously laggy one, with the same ease that my desktop PC handles Notepad. While this normally would be the case, Blip.tv's ads are so intrusive to the video player that even my laptop lagged for a half-second before displaying each one.

Watching videos on my TV also illustrated a quirk that would be rather amusing if it weren't so irritating. Normally, webpage-embedded video plays at about 640x480px, regardless of the size of the browser window. But, Flash video players also have fullscreen mode, and can be embedded elsewhere at other sizes, so logically, something that overlays an image over the bottom of a video should expect this. Not Blip.tv. In fullscreen mode, their new ads display at the bottom of where the video would be if your monitor were the same size as the web player. Which was really hilarious to watch on my 42" TV at 1080i, but its charm wore off quickly when I realized it was now rendering banner ads in the prime section of the window, where all the action in a well-made video is supposed to be.

So, I'm not pleased with Nostalgia Critic or Blip.tv about this. Blip is of course responsible for the technical problems with their video player, but I also blame Nostalgia Critic for choosing these ads in the first place. Blip allows content posters to choose what type of advertising (if any) to display, and the content owner gets a cut from the proceeds. So, Nostalgia Critic had to have specifically chosen these types of ads. And, I mentioned Nostalgia Chick in the beginning of this post, but her videos don't have nearly as many of the troublesome animated banner ads. Instead, she has a full-screen commercial at the very beginning of the video, and just old-style plain-text banner ads in the rest.

And, if anyone reading this puts videos online: I understand the need for advertising to support your work, but do your audience a favour and check the impact of the ads on your videos when choosing what to display.

I Wrote a Twitter Widget

For the last couple days, due to feeling kinda blah, and being delayed on a pending project (*pokes a certain fox*), I've been playing around with displaying my Twitter feed on my website (among other places). I'd been eagerly wanting to replace the Flash version provided by Twitter with something not Flash-based, but there seems to be a shortage of Twitter website widgets that are easy to re-theme to match the website they're on, and aren't tied into some other service or application. But, at one point, it looked like I found what I was looking for, TwPHPer. It does its job fairly well, doesn't require Javascript, and is overall a decent widget. I recommend it to anyone looking for a simple way to put their Twitter feed on their website without it looking grossly out of place.

However, I wanted more. TwPHPer will always be limited by the fact that it uses the Twitter RSS feed to retrieve data instead of the main API. It's inherently slower than an API-based script, and can display only basic data. What I've been looking for, and haven't found, is a widget that will display as much detail as the main website does, including designating replies and showing the source application each tweet came from (call me a nerd, but I love looking at that info). When my searching didn't turn up anything that met that criteria, I did what any good programmer would do, and wrote my own.

Since I didn't set out to write a full API interface, I tried searching around for a good one that was already written. Again, not many helpful results, but I saw that the Zend Framework (collection of scripts provided by the people who wrote PHP itself) had a very nice one, so I went with that. Long story short, I finished it today, and I'm quite proud of the finished product.

In addition to a significant speed improvement over TwPHPer (roughly 1/2 to 1/6 the script execution time, depending on whether data is cached), my new widget has the following features:

-Data caching, to improve performance and prevent API limit overruns.
-Reply indicator, with link to parent tweet.
-Location indicator, based on client used (can also easily be adapted to display the raw source app info). This is specific to me, obviously, but quite handy for my use.
-Direct link to each tweet, so logged-in users can easily reply, and conversations can more easily be followed.

After getting it working on my website, I also wrote a version that can be embedded using an <object> tag, so I can use it on sites like LJ, Dreamwidth, and *gags* F4L. It doesn't use Flash or anything, it's just a blank webpage with the widget that can be embedded with this code:
<object type="text/html" data="http://www.lupinia.eu/INC/twitter_embed.php"></object>

I did borrow some code from TwPHPer, namely its link/username parsers, and the spiffy scrollbar replacement (requires JS, but doesn't affect functionality), but aside from that, this is all mine :-)

I don't plan to distribute this, since it's very custom-written for my use, but if anyone wants to see the code, I'll probably send it to you, all you have to do is ask :-)

Feeling Bleh, and Perplexing PHP Problem

For the last 24 hours or so, my stomach's been really unhappy, and I'm not sure why. Presumably, it was something I ate. I'll spare description of my symptoms, but suffice to say I've spent almost all my time today either in bed or in the bathroom. I tried to eat some ramen today, the "safest" food in the house (which is really sad, but unfortunately true), and it didn't want to stick around either :-\


What time I didn't spend feeling bleh today, I spent working on a PHP-based Twitter display widget. I know I just mentioned finding one I liked yesterday, and while it does its job relatively well for now, it has some drawbacks. Mainly regarding its speed; since it uses RSS instead of the true API, and has to load the RSS file on every page load, it adds a lot of overhead. According to my script-time calculator on my site, nearly a full second. And, while this is borderline-tolerable on my personal site, it's unacceptable for another project I have in mind.

After a bit of research, I found out that the Zend Framework has a Twitter API built right in. And Lupinia's server just happens to have the Zend Framework installed! So, all I had to do was include a file, and poof, I could retrieve every piece of data I could want. Full user timeline with much more per-post detail than the RSS feed provides, full user info, and if I wanted to, functions for working with direct messages and following/unfollowing. Basically, everything the Twitter website can do, the API can do, and the PHP scripts provided by Zend make everything just a function call away. This will be easy, right?

Well, sort of. Working with the data live is a breeze, but there's a catch: The Twitter API limits each authenticated user or IP address to 150 calls per hour. On average, that's about 1 call every 24 seconds. Might sound like a lot, but on a busy website, it doesn't take long to blow through that many hits. So, in order to keep from hitting the limiter and getting blacklisted, I need to implement some sort of data caching. And thus creates the problem I've been trying to solve for five hours. And yes, I know there's a whitelist to greatly increase the limits, but I'm not on it yet, and even if/when I do attempt get the server whitelisted, they really frown on applications that don't implement caching of some sort.

The API returns data in XML format. But not just raw XML, it goes one step further and creates a SimpleXML object containing it. If you're not familiar with SimpleXML, it's basically the Mac of XML parsing functions for PHP. It makes it stupidly-easy to work with XML data, and is relatively good at its job, but god help you if you're trying to make it work with other functions or methods. The Zend Twitter API makes this even weirder by returning an object of its own, containing a SimpleXML object with no apparent name, and that doesn't seem to be accessible by itself, even though other SimpleXML methods work properly with it. It's the weirdest thing I've ever seen, and by my understanding of PHP, it really should not work at all.

In order to cache the data, I need to store it somewhere that can be accessed across sessions for at least 30 seconds. This leaves two options, storing data to a file, or to a database, and since the volume of data would make it downright painful to move back and forth to a database, it's pretty attractive to try to keep it in XML format and store it to a file. This is much easier said than done, apparently. While SimpleXML provides a handy method for exporting XML data to a file, it doesn't want to work properly with the weird abomination that is the object I'm trying to work with. Here's a rundown of everything I've tried.

-Attempting to dump the entire XML object from the object root returns an error, because the root is not technically a SimpleXML object.

-Attempting to access the actual root in any way returns null, because the only name I have for it (accessed via var_dump) is invalid.

-Accessing one step below root works just fine, and I can dump raw XML data from there. However, SimpleXML's export function can't seem to understand the structure of the element when I do it that way, because it returns only the first element, instead of all 20 tweets.

-Attempting to export multiple elements works, but it somehow becomes an invalid XML file in the process, making it impossible to re-import.

-Attempting to use Xpath to retrieve all elements and export them returns null, because I can't seem to get a valid absolute structure out of this monstrosity, and thus can't give it valid search criteria.

After finding no real way to retrieve cacheable data from the SimpleXML objects, I decided to go with plan B, serializing the whole mess and storing that to a text file. But that didn't work either, because SimpleXML objects are impossible to serialize, and PHP refuses to do anything about it (as blatantly stated in a bug report on the matter). Their advice is to use the export function and re-parse the data on reload, which I can't do in this case because I can't export the data! Gah!

So, anyone have any advice? Using another PHP Twitter library would theoretically be good advice, except that I can't find one that doesn't require using JS, or that uses XML instead of JSON (the latter of which I'm really not familiar with), or that is well-documented enough to be useful without spending a day reverse engineering it.

Here's the object structure as returned by var_dump, if that helps. I trimmed out the middle of the array, there's no need to show 20 tweets in this post.
Collapse )

Technology Woes, and Photo Galleries

As I mention on a regular basis, I love photography as an artistic medium. Not only can I appreciate an awesome photo, but it's one of the few artistic disciplines that I'm reasonably good at (that is, enough to say "check out my art" and get responses of "wow, nice work!" that are genuine). And, I have a pretty decent camera for my photoshoots. It's not an SLR, and it's not great, but it usually gets the job done.

However, one area where my camera severely cripples my work is its ridiculous sensor noise. I've been informed that this is probably a defect with my specific model, but since we're now about two years too late to actually do anything about it, the point is moot. Basically, if I use any ISO setting above 80 (the lowest it'll go), I get so much sensor noise that my pictures look like they were transmitted over a bad analog TV signal. And, even at the lowest setting, I have to tend toward overexposure to keep from having to run noise filters on every photo I take (a very slow process, for reasons outlined later in this post). But, since I lack the large sums of money required to upgrade to an SLR, I'm stuck with what I have, so I've learned to work around it. Since low ISOs require longer exposures, my camera can't be used for anything except still-life in lighting below bright daylight levels, and non-moving shots in any environment dimmer than a rainy day requires a tripod (shaky hands don't help this). The upside to this is that I've developed a fondness for long-exposure shots, but there's still something upsetting about having a nice big camera that I can't use to, say, photograph a rabbit in the backyard in the evening.

The reason I'm posting about this now is because I just finished processing a backlog of photos I'd taken, including the hiking trip where I got caught in a severe rainstorm. On that trip, when I was heading back home, I had a chance to see a sunset from the top of the ridge I was on. Since I'm almost always home well before sundown on those trips, it was a rarity for me, and the clouds made the view all the more spectacular. I tried to take a few pictures, only to find that even at the slowest shutter speed that allowed me to take a non-blurry shot, my pictures were still underexposed by almost 6 full f-stops, and kinda looked like crap. Lacking a tripod, I decided to take a few snapshots at ISO 200, which is salvageable if I reduce the image by 50% after running noise reduction (still ends up looking a bit like a bad oil painting, though). I wasn't expecting any of them to be particularly good, since I wasn't really trying, I just wanted to get some pictures of the sunset where I could actually tell what it was.

So, while processing photos today, I came across one of the shots I took of the sunset, and I was utterly blown away at how beautiful it was. The composition, the colouring, the detail, it was just amazing. Then I saw the ISO rating on the picture said 200, and I remembered what I did, and why the last few images looked so much better with the same shutter speeds as their barely-visible companions. My heart sank as I viewed the image at full-size, instead of in 800x600 preview mode. The noise was absolutely horrible. Even at 50% of original size, it was blatantly obvious, and completely killed the shot. I spent over three hours working on it, trying every tool and technique I had access to, but nothing worked without making the shot so blurry that it looked out of focus.

This isn't the first time I've had an otherwise-awesome picture ruined by my camera's shitty sensor, but it is the first time in several years that it's happened. The last time was at AC '07, where I took an entire series of shots of a gorgeous sunset over the Pittsburgh skyline. I was so excited to see how they turned out, since I was still new at this at the time, and from what I could tell in the viewfinder, the composition was some of the best I'd ever taken. But, when I got back to the hotel room to review them, I discovered that I'd accidently bumped the ISO button to "Auto", where it usually attempts to default to 400, especially in less-than-daylight conditions. Sure enough, every one of my 40 or so pictures was taken at ISO 400, and the noise levels were so bad that I could even see the grainyness on the camera's 2" display. Having tried to repair this problem prior to that trip, I knew it was no use, and the half-hour I put into the photoshoot was completely wasted.

Speaking of technology and photography, I've also been having issues with the other half of the equation, my desktop computer. When I first built it, it was the most awesome thing ever, and I spared no expense putting it together. Now, almost six years later, all of the hardware has been completely replaced over time, but it's still the same specs as in 2004 (except the video card and a couple peripherals). And, as computers tend to do when software advances, it doesn't run as well as it once did. Well, ok, that's an understatement, it runs like absolute crap. Despite my experience and training in tech support (specifically in Windows administration), it still baffles me how a computer's performance declines with time for no reason other than age. The background/constant-running applications I use now are the same ones I used when I built this system, and its idle memory load now is comparable to what it always is when I first get it set up after a reformat. Yet, it chugs along like a spyware-infested P3 half the time (and no, it's not infected with anything).

Where this is a real problem (since I don't use it for games anymore) is when I try to work with Photoshop. Unfortunately, keeping up with Adobe has led to significant increases in resouce usage for each of their applications, and that means my poor PC has to work much harder to basically do the same thing. Doing anything in Photoshop is basically a process of click-and-wait, especially when it comes to things like noise filtering, a process that takes upwards of 5-10 minutes per image (if I count opening and saving). And, now that I've added Lightroom to the mix, it's even worse. By itself, Lightroom performs quite well; it experiences caching lag at expected times (importing, switching albums, zooming), but once it gets past that, it's remarkably efficient. But, attempting to edit an image from Lightroom in Photoshop is an exercise in processor abuse. While working on the aforementioned ruined image, it took 15 minutes to apply just one noise filter. Fifteen minutes! I thought the program locked up, but it kept showing signs of activity (I will give Photoshop credit for making its busy moments look less like crashes), so I let it go. Hence why it took three hours for work that would've taken a properly-equipped user about 1, if that.

And yes, I do have an awesome laptop of doom. However, I bought it for work, and its primary job is to allow me to work away from my desk to keep from getting burned out on constantly being in the same room of the house all the time. Additionally, a 17" super-high-res screen is really bad for something like photo processing, which requires as much visible detail as possible, and while I can handle reading text on it, I'd have to put the screen within a foot of my face to see my pictures enough to work on them on it (I know this from experience, I tried it once). In order to comfortably use it to replace my desktop PC, it would have to genuinely replace my desktop by taking my monitors, keyboard, and mouse to plug into it, as well as giving it constant power. Since I lack a docking station (and I lack the $180 necessary to acquire one), this would pretty much eliminate my ability to take it anywhere other than my desk with any sort of ease. Oh, and as I discovered when I used to use my desktop for gaming, switching back and forth from dual monitors to single monitor usage on the same PC is a tedious and annoying procedure, especially when a skinned application (Trillian, MS Money, Winamp, etc) renders windows on desktop #2, and then tries to reopen them when the second monitor is not present, leaving the windows hanging in the void with no way to access or move them (again, discovered by experience on numerous occasions at LAN parties, which is why I started bringing both monitors to them).

Anyway, I mostly just needed to vent. It's so frustrating to be so held back by the available tools in my efforts to be creative. And, I know, the tools are only as good as the artist using them, but I've long since reached the limits of working around the tools I have available. I could do so much more with a better camera, even a slightly better one. I'd be absolutely thrilled with an entry-level SLR at this point. And, the usefulness of my desktop PC is noticeably declining (it wouldn't surprise me if my video card failed in the next year, too), making it hard to do the personal work I love without a major all-day commitment to doing so.


On a lighter note, I've decided to give Flickr a try, after a long time of avoiding it. There are things I don't like about it, but really, my core reason for not using it has always been the lack of an easy way to upload to it. Since that's now resolved, the rest of my gripes are relatively small. I'm not sure how the 100mb/month upload limit will affect me, but so far, I haven't used as much as I thought I would, so all is well.

So, here's a link to my Flickr account, as well as other relevant sites.
Lupinia Studios on Flickr (just starting)
Lupinia Studios on DeviantArt
Lupinia Studios Website Gallery (this is the largest, due to the fact that I own it 100%)

Schroedinger's Rain, Dreamwidth, and Misc.

For the last few days, and throughout the weekend, the weather here has been cloudy and sorta-rainy. The showers have been extremely short and patchy; not enough to feel like a rainy day, but enough to keep me from making any outdoor plans. Which kinda makes it like Shroedinger's rain; at any given moment, it's simultaneously raining and not raining, and looking out the window forces one of the two conditions to present itself. For example, this afternoon, I opened my blinds to see a clear day. I went to the bathroom, came back, and saw medium-intensity rain. I got dressed, went by the window a third time, and not only had the rain stopped, but the pavement was nearly dry as if it had never happened. All within the span of about 20 minutes.

Unfortunately, it'll be like this all through next week, which is really irritating; I want to get out and hike, but I can't when the weather is like this :-\


My productivity has greatly improved over the last week, and I'm not entirely sure why, but it feels good. I've made some major breakthroughs in a couple of my projects, and I'm looking forward to completing my current application, it's some of my best work to date :-)


Dreamwidth's open beta launched, yay! A few bugs, but not too bad; well done, guys :-D

I'm not entirely sure how many people from my friends list have accounts, but as a refresher, my username is Softpaw. I've seen quite a few new Dreamwidth accounts pop up, and I'm really looking forward to seeing how the site grows.

Also, in case anyone missed it, there will be another seed account sale on Thursday, May 7 at 9PM EDT (GMT -4), and on Friday, May 8 at 9AM EDT, due to a Paypal bug. I wish I could get one, but there's no way I can come up with that kind of cash anytime soon. I'll grab a regular paid account sometime; I don't see much of a point in getting a premium paid account, the only real difference is an increase in limits that I'll never come close to hitting anyway :-P

I considered importing my LJ to my new DW account, but I decided not to. I already have full backups of my LJ on the blog on my website, which allows me full database control to do things like merge duplicate accounts (when someone changes their username) and associate old comments with new commenters. Since I managed to get my preferred username here on DW, I decided to stop dragging around my entire history of posts from the last six years. It's nice to have my old posts available, but I'm a very different person now than I was then.


Not much else going on lately.

Dreamwidth Opens in Five Hours

A reminder: If you want an automatic invite code to Dreamwidth when they open at 9pm EDT (GMT -4), you have until then to create an OpenID account there. To do that, follow these easy steps:

1. Go to http://www.dreamwidth.org/openid/.

2. In the box next to the Login button, type the URL for your LJ. IE, if your LJ username is "someone", you would type "someone.livejournal.com" in the box. Then, click Login.

3. You'll be redirected to LJ, which will ask your permission to share your credentials with Dreamwidth. Say yes.

4. You will now be logged into Dreamwidth with your LJ address. You now need to add an email address to your DW OpenID account. Go to https://www.dreamwidth.org/changeemail.bml to do that.

5. Dreamwidth will email you to confirm the address, like every other website does. Follow the instructions to confirm your address (should just involve clicking a link, unless you're using an ancient command-line email client, in which case you should know what you're doing better than I do).

And, that's it! Just sit back and wait for them to send you an invitation to create a full account :-)

I will, presumably, have invite codes after it opens, but if you're interested in creating an account, there's a chance to do it now without waiting for an existing user to send you a code :-)

Thoughts on LJ and DW: Why is Dreamwidth So Great?

My last post, regarding Dreamwidth, received mixed responses on my LiveJournal. There are several people who are interested in DW accounts, but several of the responses asked why Dreamwidth is so much different than LiveJournal. And, that's definitely a valid question, since my main reasons for switching aren't rooted in technical issues.

When I first signed up on LJ back in 2003, I wasn't really sure what to make of it. Aside from the requirement of receiving an invite code to join, it didn't seem that special or interesting. As time went on, I found friends there, and started getting into it more, but it was still just another website.

This was about the time that every blog, forum, and homepage on the internet started adding Google ads to make money on their visitors. It was like every webmaster out there suddenly decided that selling ads was the greatest idea ever. Combined with my career (at the time) that was primarily based in killing spyware/adware, I developed a very strong disdain for internet advertising, which remains strong to this day. Unfortunately, I was in a minority position on the issue, so aside from developing ad-blocking techniques on my own computers, and vowing never to include outside advertising on any site I was involved in, I didn't do much. But, I did start to actively support websites that shared my philosophy.

Much to my enjoyment, LiveJournal was one of those sites. It didn't have to sell ad space to stay afloat, and with its paid account structure, it was actually doing very nicely for itself. A nice contrast to sites like DeviantArt. So, LJ's business philosophy became an inspiration to me. I was involved with several websites at the time, some of which I contemplated putting ads on due to sheer traffic volume, but I could always look at LJ and say "If LJ doesn't need ads, neither do I". After less than a year of membership, I bought a paid account on LJ, and it became one of my favourite websites. It had a huge userbase, but still managed to stay innovative, fresh, and friendly.

Of course, things change over time, but I wasn't as cynical about the business world then as I am now. I fully expected LJ to continue to be The Most Awesome Website Ever for as long as it existed. No such luck. After a few years of bliss, they sold out. Which made me uneasy, but I went with it, hoping that the new owners wouldn't kill it. Then they started selling ad space, but I gave them a pass on that because they were pretty much only an opt-in implementation. But, the troublesome business moves kept coming. Censorship drama, blatant pandering to advertisers/corporate sponsors, and so forth; I'm sure pretty much everyone knows the history on these things for the last couple of years, no need to re-hash it here. The point is, LJ lost the charm it once had, and became Just Another Business, sacrificing principles for increased profits.

The turning point, for me, came when they announced they were phasing out Basic accounts. This marked a very clear transition from ads that were opt-in to ads that the user had to pay to get rid of. It also displayed a change to a more profit-centered administrative attitude. Since LJ no longer represented something I felt comfortable supporting financially, I reverted my paid account to Basic and no longer bought upgrades for friends. I also looked into moving entirely to a self-hosted blog, but that was short-lived; I did eventually launch one, but for a different purpose.

Things continued downhill with LJ, and I decided that as soon as a viable LJ replacement came along, I'd be jumping ship. I already had a full backup of my LJ on my blog, so I just wanted to see a community blogging site for grown-ups (none of this pointless kiddie BS like Myspace).

When I read the launch announcement for Dreamwidth (posted by overdrive/rebelsheart), I could barely control my glee. It was exactly what I'd been waiting and hoping for, and even run by former LJ coders/staff. It's what LJ used to be for me; a well-run website that runs on good ideas and good members, not marketing. And, on top of that, it's proudly open-source (LJ is too, sort of, but they try rather hard to obscure that fact and make the code hard to find).

So, that's my take on this. I don't have 100% faith that Dreamwidth will maintain its principles indefinitely, since I've seen so many other sites with similar starts abandon their principles over time, but I do believe it has a chance to succeed.

I know that not everyone feels the way I do on this, and that's fine. But, look at it this way; Dreamwidth is in competition with LiveJournal, with a vastly superior product that fills the same niche. All it needs to succeed is a userbase, and I feel confident that it will develop one.

As for my own journal, I plan to use the cross-posting tool for all my entries, once they add the ability to use filters on the external sites it posts too. I'm not going to stop reading LJ anytime in the next few years, if ever, but I would like to see people migrate to the new site. The cross-posting tool makes it easy to try the new with minimal difficulty, so I highly recommend that everyone at least try it when accounts open up.

Regarding invite codes, Dreamwidth has already said that they'll continue to exist after the launch, to prevent explosive growth. This is pure speculation, but I have a feeling they'll be discontinued once DW has reached a point where they can handle open membership. In the meantime, all existing accounts on DW will receive "a ton" of invite codes (their words), and everyone who's subscribed to a mailing list will be invited, and everyone with an OpenID account that has a confirmed email address associated with it will be invited. So, if you have any interest in getting a Dreamwidth account, make yourself an OpenID account and you'll be able to magically "presto" it into a real account at the end of the month.

EDIT: It seems that there are no plans to remove the invite code system, which is highly disappointing, but it sounds like they'll be giving them out more frequently than LJ did. I'm hopeful that they'll stick to that, and consider removing the system at a point that they can support living without it.

First Dreamwidth Post

OMG yay! I have an account here! Thank you so much to denise for sending me an invite code; even though it was probably part of a mass-action, I don't care, I've been waiting for this for awhile :-)

In case you're reading this on LJ and haven't heard of Dreamwidth, it's basically a new project that's attempting to be what LJ used to be, and it seems to be doing an awesome job of it. For more information, go here.

The site is still in beta, but it's moving along nicely, and I'm very pleased to be part of it. I'm looking forward to what comes out of it.

If you're reading this on LJ, my Dreamwidth username is Softpaw (hah, I got it first), if you want to find me on there.

Am I planning to jump away from LJ? Not immediately. But, LJ has moved in a direction that I'm no longer comfortable supporting (which is why I haven't had a paid account in over a year now), and Dreamwidth is a project I feel very strongly about. It's what LJ used to be for me. So, I really couldn't care less about the future of LJ, I don't consider it worth supporting anymore. At the same time, I have a LOT of friends on LJ, many of whom won't move to a new site. I do suggest that y'all approach it with an open mind when it opens, though. It has tools to import your old entries, and an option to cross-post to other sites (including LJ), so it's very easy for LJ users to ease into :-)

Anyway, that's my fun for this evening.

EDIT: Yay, crossposting works, but the HTML it produced in my LJ is nasty-looking.