Skip to main content

Valid feeds

There is now an Atom feed (http://www.gibixonline.com/Services/Atom.ashx) as well as a RSS feed (http://www.gibixonline.com/Services/Rss.ashx) that is generated by this site. The atom feed is hopefully for Technorati - since for some reason since my update has not been able to parse my blog fully.

I'm off for jury duty!

Comments are enabled!

Wow! Umm... where to start? First things first, comments are now enabled and working again! I've also implemented a few extra features to help mitigate spam until I can get a captcha thing in place. There are a few features working in tandem to keep an eye on spam - but here is the quick overview: first thing, every page that allows you to enter comments has a randomly generated unique key assigned to it, and that key is stored in multiple places and encrypted - if this key changes you're out of luck and have to refresh to get a new one... the other part is using the www.projecthoneypot.org HTTP DNS blacklist. Every comment submitted to this site has a check run on it using this service, so far every bot that has hit my site, shows up in this list - so I think it's pretty solid.

HTML code stripping is enabled for all of the entry fields, so good luck and have fun getting around that. In fact, even though the editor shows the image button, they are disabled for now until I write a handler that will check the size of the image and force a resize if necessary.

I added some new code to the generating of the comment links on the bottom of the posts. If you are viewing one post, they won't show (since you're already viewing all of that), if you view one with less than 5 comments it gives you two options, view recent comments and leave a comment, and if you view a post with more than 5, it gives you 3 options: view recent, view all (# of comments), and leave a comment.

Jared has also requested an interesting feature, one I have seen around but really have no idea how to go about implementing it. The feature would be a "related posts" list for each entry (only when viewing that particular entry). I really have no clue on how to approach this, but then again - a week ago I had no clue how to do the archive list you see on the left... hmm.

One last tidbit: when I was writing the comment adding code, I was about to write the backend part to take care of validating and storing - but apparently I had written that code about a month ago... I vaguely remember doing that, but it was a nice relief to see that the code I was about to write, was already written! Saved me about 30 - 50 minutes of coding.

URL Redirects Redux Redux?

You know your day is not going well when you get up late, and Starbucks screws up your order - an order you depend on to wake up to be able to work. It really wasn't a great day after all, well at work at least... we had a power outage that lasted quite a while - so I was sent home since I'm useless without power/computers. I certainly hope our server is ok.

Right before the power outage, I just had a breakthrough in doing the archive list feature - and how to query sql to get the information I needed. Naturally I hadn't saved the query yet (and I was using the school's SQL server) when the power went out - so I hurriedly took a screenshot of what I had on the screen, since I could no longer use the remote desktop window because it was disconnected.

Partial screenshot of SQL Server Management studio.

As you can see, it wasn't much to work on, but thankfully it was enough. Of course, it didn't help that I did yard work right after getting off work. Ah well, enjoy the new feature! (Man I love uploading images!)

I also rewrote the regex for url mappings - I now support extra name groupings so you're no longer required to use what I support (I find the names dynamically). And for services for remapping the old rss.aspx/permalink.aspx files now issue a 301 Permanent Redirect, rather than a 302 Temporary Redirect in hopes to get people to move, like the Google Reader.

Uploading Images and other stuff

Well, here it comes, the moment you've all been waiting for! ... Probably not - oh well. I think I have image uploads up and working now (auto-thumbnailing isn't there yet) but it *is* smart enough to remove any damaging url characters (more on those in a bit) and to make sure it isn't going to overwrite any other images already in the folder! How cool is that?

It turns out certain characters are not allowed in the path of a URL... go figure right? They seem to be the following symbols: . : & ?. Thankfully I've learned quite a bit about using regular expressions so removing them in the code is quite easy, just one simple function call. Checking them in SQL server, however, is an entirely different matter! Check this out:

SET @Title =
  REPLACE(
    REPLACE(
      REPLACE(
        REPLACE(
          REPLACE(
            REPLACE(@Title , ' ', ''),
          '?', ''),
        '.', ''),
      '&', ''),
    ':', ''),
  '+',
'');

which does the same exact thing as

Regex.Replace(szPath, @"[\.&:\?]", String.Empty);

minus stripping the + and space characters.

Anywho, the reason you are here... drumroll please...

Small screenshot of the PC game, Oblivion, depicting a church with lit stained glass windows reflecting in the water at night.

WOOHOO! IT WORKED! YAYAYAYAYAYAYAY!

That small image above is a picture from the awesome game of Oblivion (with a few mods of course (and a few mods meaning 100+)). Oh, and comments will be coming soon... since I want to show off my AJAX script that I wrote.

URL Redirects Redux

Well, my URL redirecting has had a few issues, all of which I hope to have fixed by now - it dealt with how the urls were being handled by the rewrite handler. I even have to go as far as encode some characters manually and actually unencode a few characters (such as %3e to ?)! I think I have it down to a point that, as long as you don't have a colon in the title and you don't end the title with a period, everything will be fine. The guid and tag redirects are working quite nicely, as is the shared page code that all pages inherit from. If you run into any issues, please email me at with the link in the address bar and what you were doing at that time.

Forms Authentication and Web Gardens

Man, having a working blogging engine is fun! I can post about experiences as they happen now rather than trying to remember what happened and how I fixed it.

Just a bit ago I decided to enable a web garden on my server, that way in case a process crashes or hangs there is another available one to step in and take over (an overly simplified view). When I deployed my latest build (which had some under-the-covers changes to how I handle the user roles and authentication), I noticed I had intermittent admin access I kept going over the code again and again thinking I had missed somthing. After a few minutes I decided to look at the event logs on Yggdrasil (the web server) and noticed repeated events in the application log.

Event code: 4005
Event message: Forms authentication failed for the request. Reason: The ticket supplied was invalid.
Event time: 2007-06-17 02:36:04
Event time (UTC): 2007-06-17 08:36:04
Event ID: 02b2f20d217b4a3a8bf4eee16380f538
Event sequence: 11
Event occurrence: 2
Event detail code: 50201

With that entry in there quite a few times, I figured I'd try to do a google search on it (who doesn't?). And boom! the second hit was the one I was looking for. What was happening was the different processes each had its own encryption and decryption key, and when my browser handed it to the different processes (they go in a round-robin style) it didn't work - which explained my constant "you're logged in... just kidding!". To fix this, you create a static key for all the processes (and other machines if you have a full web farm going) to use, and then they can read each others tickets.

For more in-depth information, visit Omar's blog where he tells more about the problem and even provides a nice small utility to generate a machine-key for you to use!

URL Redirects

URL Redirecting has been written (by me!) and enabled. You should now notice that you access certain parts of the website through more readable links than before. Accessing a tag is as easy as typing in /tags/{tag}.aspx - so using something like /tags/OperatingSystems.aspx will pull up the operating systems tag. Same thing for viewing a post, you can type in /view/{postname}.aspx, and if you're feeling up to it you can even type in /guid/{guid}.aspx!

I also did some rearranging on the site, and I moved the RSS feed and other items into a subfolder called Services - yes that does mean that the RSS link has moved again - but fear not! My URL rewriting plugin will take care of redirecting you to the new one - in fact I was looking through my logs and noticed I was still getting hits on category.aspx?name=blah... so I created a nice little rewrite for that one too! Hopefully this will help prevent 404s from happening in the future.

A few more features on the list for this weekend is to actually implement the choices of "Allow comments", "Is Public" and "Syndicate", Enabling commenting with some sort of captcha, allowing editing and deleting of posts, and also creating an ajax script that will ask the server for tags you already have created when making a new post - since I have it set up for you type in manually!

In fact, I think I'll test that right now... I'll create a new tag called Blog Updates so I don't flood the Site Information tag with information on the progress of the blog!

Dynamic tags and cleanup!

Well, here in a little bit I'll re-enable browsing by post name (view.aspx?name=blah) now that I forced all page titles to be unique. You may also notice that when you click on a tag you see a summary rather than all of the content. I plan on including the ability to do paging, viewing full content, and enabling rss feeds for tags as well.

Stay tuned, comments should be up soon!

Oh yeah, the RSS feed is back up and working again - though you'll need to change your URLs from /rss.aspx to /rss.ashx. Thanks!

I am finally back!

After 142 days of pure silence, the new blog of GibixOnline has finally surfaced! It still isn't fully working yet, and things like enabling comments still need to be added (since my last site was spammed, woohoo). I have quite a bit of information to dump on here (one of the reasons for getting it back online) so expect a few link dumps here and there. It is after midnight right now so I will post more information later today from work - keep an eye out!

I just want to say thanks to my brother, Jared, for all of his help so far... from helping with the layout and colors to providing images that will be used in the future.

I would also like to point out that all code, from the C# to the javascript was coded by me, and has not been released under any license - so please do not use any of my images or scripts without my express permission! (Don't worry, I'll open it up in the future)

It has been quite some time

I wanted to let you all know that progress has not stopped, it has just changed direction! If you want, you can follow the new progress at my tessa development site: http://tessa.gibixonline.com. It will have limited AJAX capabilities (I don't want to go overboard, like a few guys out there online) and will feature plugin capabilities for the blog and user management - and it really does work! That means that you *don't* have to have SQL 2005 to run my blog (well, you will until there is another plugin developed for it...) - also the user management won't be tied to the local machine/domain! Since I don't have comments working over there yet, feel free to let me know what you think by sending me an email.