free geoip Jayson's Blog -
A conduit to the voices inside my head.

Jayson's Blog

  • Community Server Migration Script -- Announcing CSverter 1.0

    Anyone who’s been following this blog lately is aware Robert McLaws and myself have been diligently working on a .Text to Community Server migration utility (thanks again for all your hard work Rob, the wizard looks awesome!).  I’m pleased to announce the release of version 1.0 of this tool, you can download it via this link!  Note: This release supercedes my previous releases (the console application), and I have overwritten the zip archive with 1.0 (had to use the previous name, DotTextCS for the archive for links from previous posts, but the new name of the utility itself is CSverter).  If for some reason you still need the previous version (for example, if you're a glutton for punishment), let me know and I'll send it to you.

    This wizard should alleviate many of the headaches some of you guys have been running into, and the process is completely automated now.  Have a look at the readme included in the archive, and I highly recommend you read Robert’s release notes before diving into the wizard.  I will reiterate here just for the sake of clarity:

    • Right now, the source and destination databases need to be on the same server. If enough people need to move between separate servers, I can add it later.
    • You need to run the wizard on a machine where the CS web application is installed. This is because the temporary web service we use to create users and blogs needs to run in the HttpContext of the application.
    • You will need to set up CS and change the web.config file to point to the destination database you will use to complete the migration. Again, this is because the web service will use those settings to create blogs, users, and blog groups.
    • Depending on the number of users, blogs, posts, referrers, etc, this process can take SEVERAL HOURS. DTS is rather fast, but it still took over seven hours to migrate
    • You may need to use the CS admin UI to change the blog theme after the migration. I'm looking into why this isn't working, but it's not a showstopper, so I'm releasing it anyway

    From the feedback we’ve received so far, supporting seperate server machines is the hot topic (due to many people hosting with an ISP and not having access to the actual machine)…I’ll speak with Robert and we’ll address this soon.  It’s also worth mentioning that when specifying the ‘Blog URL Address’, you need to use a fully qualified web address (i.e., otherwise it will hang.  I will be publishing the code for the engine itself (not the wizard, that’s Robert’s call as it’s his code ) within the next couple of days.

    If you end up deleting a blog via the blog admin pages in CS (perhaps you want to recreate the blog with the wizard, or re-run one of the DTS packages), some of the associated data for the blog in the underlying tables will not be removed, namely in cs_Links and cs_LinkCategories…what this means is that if you attempt to re-run the DTS package, it will fail on those steps due to primary key violations.  I just discovered this issue with CS today and have addressed it with the folks over at Telligent.  Of course, this doesn’t affect new installs.  If you run into a situation where you need to drop and then recreate a specific blog, contact me and I’ll send you a query that cleans everything up.  Feel free to drop feedback either here, or over on Robert’s blog.  Last but not least, enjoy it and happy migrating!

  • Moving Is Such A Pain In The Ass

    [update]Done. Done. And done. Details to follow.[/update]

    Not “moving” moving, but moving my site to a different host.  Yes it’s true… was down for a full 24 hours starting at around 3PM on Sunday (apologies to the 3 regular visitors I have).  I’m in the process of moving my site over to aspnix, and it hasn’t been as painless as I thought it would be…no doubt due to the number of mods I’ve made to my site.  Apparently my CS installation doesn’t play nice with 2.0 (though default installations work perfectly) due to medium trust issues, so I’ll have to recompile for 1.1 and hope for the best.  At this point I’m still sitting on my home server, but will be having another stab at it later on this evening.  Aside from the issues with my site, I’m quite impressed with aspnix…once I get my site humming on their servers I’ll post more about their offerings.

  • RFC: Vonage Versus Digital Phone

    I haven’t had a landline phone in almost 3 years…there really wasn’t a need to have anything besides just a mobile phone.  Now that I’m more or less working from home fulltime the need is definitely there as my wireless bill will inevitably soar through the roof at the rate I’m chewing through minutes, most of them long distance as well.  The obvious solution is to go with one of the services that allow unlimited long distance, the 2 most popular (that I know of at least) are digital phone through your cable provider, or to go with a VOIP solution like Vonage.

    At this point I’m leaning heavily towards Vonage as A) it’s cheap cheap cheap (digital phone in my area is $40/month, Vonage is $25) and B) no annual contract…I can drop it at any time if I don’t like it/need it anymore.  Anyone out there reading this who has Vonage or digital phone?  Perhaps there’s another solution that I don’t know about (and don’t say Skype)?  How stable/robust is Vonage?

  • Internet Explorer 7 Beta 2 -- Processor Pegged at 100%

    As I’m sure everyone is aware, IE7 beta 2 has been released.  Unfortunately it’s completely unusable for me as it pegs my processor at 100% for any and all web pages and has to be zapped via task manager to kill it.  Fortunately, the IE team has opened up their bug database to the general public, and as is also mentioned in that post they are offering free phone support for the beta (that’s a pretty bold move, but a very welcome one…good job Microsoft) so perhaps I’ll phone them up as I need to get cracking with IE7.

    Sidenote:  Firefox has been acting very strange lately (and of course I know it’s extension related).  I’d say about 4 times in as many months it has “forgotten” all of it’s settings/url history/cookies/etc.  Wierd.

  • Anyone Out There Writing .Net Code on a 64 Bit OS?

    Unlike Bob, I don’t flatten my machine every weekend, only when it’s absolutely necessary.  Heck, my last desktop made it 3+ years with no flattening/no reinstallation of Windows before being retired to server-dom where it got a fresh copy of Windows 2003.  Unfortunately my new machine (well, it still seems new to me) is reaching a point of being completely unstable.  I’m getting random freezes (have to hard reset to get out) along with random bluescreens, all related to my nForce SATA drivers (lots of controller errors in the event logs).  I don’t know if it’s hardware or software, but it’s only been within the last month or so that it’s been acting up.  The web has been worthless in this case; the usual “reinstall your drivers” or “reinstall Windows”…yeah right, like I haven’t done that already.

    My machine has a 64bit processor (x64) and I have a copy of Windows XP 64bit so I was thinking about going that route since Creative finally decided to get off their collective asses and write a 64bit driver for my sound card (everything except my scanner has 64bit drivers now…scanners are cheap so I’ll just buy a new one if I ever need it again)…but sir-flattens-a-lot from above mentioned that there are some major caveats about doing 32bit .Net development on a 64bit machine, mainly as it relates to ASP.NET and IIS.  More information here.  So before I venture out into the 64 “bitness” (learned a new word today!) realm, I figured I’d give a call out into the wild to see if anyone is doing this, and more specifically if they’re having any issues developing 32bit .Net apps on a 64bit machine.  The sooner the better.

    Sidenote:  I’ve been thinking about this lately…there are a ton of combinations of .Net framework bitness/OS bitness combos we need to test against now.  We have:

    • 32bit editions of both .Net 1.1 and 2.0 that need to be tested against both 32bit and 64bit versions of Windows.
    • Versions 1.1 and 2.0 of apps that need to be tested on the above, as well as testing 1.1 apps in the 2.0 runtime.
    • 64bit versions of all the above that need to be tested on 64bit machines.

    Let’s see…carry the 1, drop the remainder…that’s about a gazillion different combinations by my monkey math.  That’s right, a gazillion.  Let the bitness insanity commence!

  • Is It One Space Or Two These Days?

    Back when I learned how to type 15 years ago, we were taught to use 2 spaces between sentences like so.  This is a new sentence (2 spaces, see?).  I read a lot of blogs, and something I’ve noticed is that a lot of folks are using only 1 space between sentences.  I’m not saying I’ll change either way (and after 15 years of doing it I don’t even know if I could), but did I miss that memo?  I certainly don’t want to have the netiquette police coming after me.

    There are three other typing rules I violate 100% of the time: 

    • I use my left index finger for the letter C (should be left middle).
    • My right shift key never gets any airtime, I always use the left one (you’re supposed to alternate depending on which finger is striking the letter to be capped).
    • I always use my right thumb for spaces (this one is fuzzy, but again I think you’re supposed to alternate).

    Thanks to programming, I also no longer have to cheat when typing symbols (this happened during the VB6 to C# transition…not a lot of symbols in VB).  I’ve always wondered if there are developers out there who can’t type, and if this affects their productivity.  Of course after a while they would pick it up through repetition, but the initial curve of learning how to program and type at the same time would suck.  And finally, I wonder if there are any programmers who just physically aren’t able to type due to some sort of disability, and how they stay productive, or if that would be the equivalent of a car salesman who couldn’t talk.  Thoughts?

  • My Family Says I Don't Call Enough

    So they read my blog to see what I’m up to, which is strange as I don’t really post about too much personal stuff.  But when I spoke with one of them today, his first question was “so how did the site upgrade go?” 

    What got me to thinking about this is I didn’t even realize that most of my blog was down for the better part of 18 hours today before I read Dave’s post about some issues he spotted early this A.M. on 2 sites he knows that recently upgraded to CS2.0.  One of said sites was yours truly.  As much of a vain blogger as I am you’d figure that I would have noticed, and while it’s true that at any given moment I usually have my site open in a Firefox tab, I don’t make a habit of reading individual posts (after all I did write them…maybe late at night when I need to quickly fall asleep I’ll browse over some old posts), which is where the error was occurring (technical details to follow in this post’s sidenote).  The main page and aggregate were unaffected  The point is this:  I do make a habit of checking my logs (IIS/CS exception report/SQL Server/etc) on at least a daily basis, but this exception was obscure enough that I probably would have dismissed it as normal CS exception chatter, and several days could have gone by before I realized anything was awry.

    My family reads my blog to see what I’ve been up to.  I read at least half a dozen friends’ (who live within a 5 minute drive from me) blogs on a daily basis to see what they’re up to.  I’ve made friends halfway around the world through this medium.  I’ll admit it, I hate telephones.  If I had it my way everyone would have a blog and that’s how we’d communicate on a regular basis.  That’ll never happen, but I really like “pull” based communication like this.  The phone rings, you have to answer it.  Knock on the door?  Either play Houdini, or be polite and see who it is.  Get an email?  Take your time and respond when you feel like it (within reason of course).  And best of all, keep up with your friends through blogs!

    I will say this (and it’s a first for me):  Reading someone else’s weblog today saved my blog’s ass.  God bless the internet.

    Sidenote:  Anyone not caring about the technical details of the error I was getting can stop reading now.  The exception my site was so politely showing anyone who happened to be browsing it between the hours of midnight and 3PM today was this one.  I added an RSS image to my category links in the skin-categorylist control via this attribute: ImageUrl="~/Themes/default/images/icon-rss.png", which is strange as tildes should be the safe way to go.  Apparently the .Net runtime didn’t think so and thought it was a directory traversal attempt and said “nope, ain’t havin’ it.”  Wierd.

  • CoComment Script for Community Server Update

    It’s the little things that keep you on your toes as a programmer.  After my site upgrade to Community Server 2.0, Keyvan ever so politely pointed out that my CoComment script wasn’t working, i.e. coco enabled visitors weren’t having their comments automatically logged on the coco service.  After a few minutes of digging around, I realized it was because in my original CS coco script I had hardcoded the commentFormName variable to always be __aspnetForm.  Lo and behold my form name is different after the upgrade, so obviously hardcoding this value isn’t a good idea.  Yeah, magic string syndrome.

    The problem with this is that due to either A) The way CS2.0 skins name forms, or B) The way the runtime works when generating form names (don’t know which of the the two is the guilty party), the form name was no longer __aspnetForm and had become aspnetForm.  Apparently this isn’t a constant, so back to the drawing board to get this value programatically.  Unfortunately due to either A) The way CS2.0 skins name forms or B) How 2.0 generates form names (again, I have no idea who the guilty party is) this wasn’t as easy as simply changing the commentFormName variable declaration to Page.ID/UniqueID/ClientID (all came back as an empty string), and CS refused to compile when attempting to use Page.Parent.<whateverID>, coughing up a null reference exception. 

    What’s interesting is that Bob said there’s a Form member on the page class (which I didn’t see in the MSDN docs), which in turn has a Name property, so I gave that a shot and was promptly met with an accessor level denied error message (compiled under 1.1 but running on 2.0)…reflecting on System.Web.UI.Page revealed that there indeed was not a Form member on Page (as expected), so why that exception instead of a “member doesn’t exist” or whatever?  Strange stuff, but after reflecting the same class on the 2.0 version of the assembly there is now a Page.Form member, and of course Form has a Name property which would have nipped all of this in the bud.  So what’s the fix?  Either recompile CS2.0 under 2.0 and use the afore mentioned solution, or simply change your comment form variable to the following javascript:

    commentFormName = document.forms[0].name;

    Yeah, it’s that easy (or difficult if you factor in how much time I spent digging through .Net documentation trying to figure out how to do this from server side code).

  • Top 10 Albums Meme

    I saw this over on Dewayne Mikkelson’s blog, so I thought I’d do my part to spur it on.  The top 10 albums (in no particular order, and I’m excluding electronica):

    • Led Zeppelin – IV
    • Miles Davis – Birth of the Cool
    • Nirvana – Nevermind
    • Red Hot Chili Peppers – Blood Sugar Sex Magik
    • Pearl Jam – Ten
    • U2 – The Joshua Tree
    • Depeche Mode – Violator
    • Duran Duran – Duran Duran
    • The Police – Synchronicity
    • The Ramones – The Ramones

    A bit of variety in this list, but I feel that most of these albums helped define (or even invent) their genre of music.

    Filed under:
  • More SQL Server 2005 Management Studio Woes

    I posted earlier about some SQL Server 2005 Management Studio (SSMS) gripes I've come across; I recently came across another really big one that I really feel the need to air out:  It's next to impossible to export an entire database to a new database on the same machine via the SSMS GUI.  Sure, the option is there (right click a db, tasks, export data), and the wizard is pretty similar to the one we had via SQL Server 2000's Enterprise Manager, except for one glaring "feature":  The only objects you can export from the existing database are tables/views, and their associated data. 

    Want your sprocs/functions/roles exported as well?  Ain't happenin' least not with this wizard.  Copy database wizard?  Only supported for moving databases between instances, no intra-server copying allowed.  Script the entire database to a new query window, create a new blank db, run the original db's create script, and then try to import the data via the wizard?  Nope.  The wizard fails immediately stating that the table objects already exist in the target database (shouldn't it generate DROP/CREATE statements?  Apparently not.); this is because the script database wizard allows for either CREATE or DROP statements exclusively (it's right there in the options).  Ok, how about backing up the original database, then attempting to restore the backup set to the target?  Uh uh, the wizard states that the target database is in use.  Take the target database offline to attempt the backup restore again?  Again I got an error saying the target db was unavailable.  Wash, rinse, repeat a few times for good measure, throw your hands up in frustration, and simply walk away before someone gets hurt?  Roger that.

    This is a pretty major defect in this humble developers opinion...if this kind of functionality existed in previous versions of SQL Server management tools, why strip it out in the new version?  This is a very common task, especially in the development realm where database versioning is crucial.  Of course this can be done (somewhat) easily via raw SQL statements (which I will show at the end of this post), and all the hardcore OSQL/SQLCMD folks will probably shake their head at anyone using the GUI at all, but the point is that this was in Enterprise Manager and was taken out of SSMS.  A huge no-no.  The mere fact that apparently this can't be done from the GUI is pretty bad.  I'd love to be proven wrong though.

    Anywho, after some digging around through the documentation (which takes more than a minute to open up on my machine by the way), I found what I was looking for which does exactly what I wanted:  An exact copy of the original database bit for bit.  Here's the code:

    BACKUP DATABASE [original_db]
       TO DISK = '[pathToBackupLocation]\[original_db].bak'
       FROM DISK = '[pathToBackupLocation]\[original_db].bak'
    RESTORE DATABASE [target_db]
       FROM DISK = '[pathToBackupLocation]\[original_db].bak'
       WITH MOVE '[original_db]_Data' TO '[pathToSqlServerDataLocation]\[target_db]_data.mdf',
       MOVE '[original_db]_Log' TO '[pathToSqlServerDataLocation]\[target_db]_log.ldf'


    SSMS will even automatically attach the database as well, so you're off to the races immediately after it's done.  It is very much worth mentioning I'm not adverse to this approach at all; my gripe is that the import/export wizard in SSMS is largely a piece of junk...a database is more than just tables and data.  So Microsoft, if you're reading this, here's yet another thing to put on your list for service pack 1.  Who knows what I'll find next.

« First ... < Previous 4 5 6 7 8 Next > ... Last »

Copyright © ::
External Content © :: Respective Authors

Terms of Service/Privacy Policy