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

Jayson's Blog

  • Ashlee Simpson Lip-Sync Blunder -- Video

    I must have been the last person in the free world to hear about the Ashlee Simpson mix-up on SNL this weekend (I haven't watched SNL since I was a teenager, back when it was somewhat funny).  At any rate, I'm a huge fan of pseudo-wannabe pop stars making asses out of themselves, so I set out to find the video; snag it here.  That's quality for ya...and wtf was she doing at the end, a hoe-down?  Then she blames the band (not just a session band, her band) at the end of the show?  Classy.

    More commentary here, and a link to her messageboards where more views of the clip can be downloaded.  Absolutely hilarious.

  • Community Server Migration Script -- Round 2

    [Update 02/11]  Please see my new post for more details concerning this utility, sorry for all the ping-ponging of posts concerning the migration tool.  The end result will be worth it.  [ /update]

    Ok I’ll admit it, my previous post about migrating from .Text to Community Server was a bit arduous/tedious/hacky, so I’ve taken the time to write a proper managed console application that (attempts) to take the some of the pains out of the migration, namely not having to manually update each of the 9 scripts in the Transform Data Tasks (by auto-generating the DTS package for you...so yes, it still uses DTS, I wouldn't have it any other way).  You can download the console application here.  Before running the application, make sure you properly configure the DotTextCS.exe.config file; I’ve commented each key with a brief description, though it should be quite straightforward.  In a future release (soon), I’ll try to get rid of having to manually find your BlogID, UserID PostAuthor, SectionID, and SettingsID…but for now that remains the only manual process.  Once again, to get those values you will need to do the following:

    • For the BlogID setting, look in the blog_Content table in your .Text database.
    • For the other settings, they can all be gathered by looking at the cs_posts table in your Community Server database.

    You should start with a fresh install of the Community Server database, then set up your blog(s) and make a test comment (so that the UserID (etc) information is logged to the cs_posts table for harvesting).  After configuring the .config file, run the console application, simply hit ‘y’ to indicate you want to create the package, and then run the package from Enterprise Manager (or you can execute the package directly from the console app, there is a key called ExecutePackage in the .config file…setting this to true sidesteps having to go to Enterprise Manager, though you might get an error or two…they can be ignored).  You will also need to execute the following SQL statements to tidy everything up, I’ll just quote my previous post:

    If you have linked back to your own blog, execute the following SQL statement in Query Analyzer to change all the links to your new URL (using your URL’s of course, I’ve left mine in for reference):

    DECLARE @originalURL varchar(100)
    DECLARE @newURL varchar(100)
    SET @originalURL = 'http://jaysonknight.com/blog'
    SET @newURL = 'http://jaysonknight.com/cs/blogs/jayblog'
    UPDATE    cs_Posts
    SET       Body = REPLACE(CAST(Body AS nvarchar(4000)), @originalURL, @newURL),
           FormattedBody = REPLACE(CAST(FormattedBody AS nvarchar(4000)), @originalURL, @newURL)

    If you have posts over 4000 chars long, you should be writing novels for a living instead of doing this.  If anyone knows of a work-around for the 4000 char limit, please share.

    If you would like to update your hit statistics, use the following SQL statement (replace the db names with the .Text db you’re migrating from):

    UPDATE    cs_Posts
    SET       TotalViews = [your_db]..blog_EntryViewCount.WebCount
    FROM    [your_db]..blog_EntryViewCount
    WHERE    cs_Posts.PostID = [your_db]..blog_EntryViewCount.EntryID

    UPDATE    cs_Posts
    SET       AggViews = [your_db]..blog_EntryViewCount.AggCount
    FROM    [your_db]..blog_EntryViewCount
    WHERE    cs_Posts.PostID = [your_db]..blog_EntryViewCount.EntryID

    I’ll get these dumped in the utility in a future release.  The same previous caveats apply, namely links/post categories don’t sort properly…also, your post categories will also show up as link categories, just delete them using the CS admin page…I haven’t figured out the column mapping for those yet.  I have tested this application on numerous (fresh) Community Server databases and am batting 100%, but let me know how it works out.  If you want the source code, ping me and I’ll happily provide it, and I’ll post it to my site once I get it cleaned up (and when it has all the functionality I want).  This is a huge improvement over my previous solution IMO…but maybe that’s just me.  Good luck, and let me know how it goes.

  • Incredible Commercial (Honda's Cog Spot)

    This is one of the coolest 2 minutes of video i have ever come across.  It's actually a bit dated (came out about a year ago).  It's a short spot for honda that features a virtually impossible scene using only parts from a honda car (no animation, no strings, 100% real, and the final cut is all 1 take, no edits).  Apparently it took 606 takes, which is amazing in itself.  It aired first in the UK, then spread on to other countries around the world, however it never made it to the US.  If you lived in the UK at the time it aired, you could have actually called the UK honda subsid, and they would have sent you a free DVD copy of it.  I have no idea why the US was left out of the fun.  I would think that the commercial would have done extremely well here, and i'm almost insulted that it never made it over.  It's impressive nonetheless, and I also have a high resolution version.  You get bonus points of you can (without digging up the answers on the internet):

    1. Figure out how they made the wheels roll impossibly uphill (50 points)
    2. Figure out how the windshield wipers move on their own (25 points)
    3. Name the celebrity voice-over at the end (100 super cool points)

    There is also a related movie floating around somewhere out there that features over an hour and a half of similar material, however i long ago lost the link to it...if anyone comes across it, please let me know.  Enjoy.

  • SQL 2005 Management Studio is Pathetic

    Forget everything I said earlier about SQL Server 2005 Management Studio (herein referred to as MS from now on); it’s slow, bloated, and just all around pathetic.  It seemed great at first, but after having done some heavy lifting with it lately it just seems…well, geared for idiots.  It’s just really been dumbed down to the point looking like Access (no offense to the Access folks).  Getting anything done takes an insane amount of clicks, and it just feels soooo slow compared to Enterprise Manager/Query Analyzer…very simple tasks take forever to finish up (for example, backing up a database…MS makes Enterprise Manager seem like a Ferrari).  I never thought I’d say this, but I actually miss QA at this point.

    The latest thing that made me go wtf was the following:  I needed to load up some 40 SQL statements for execution earlier today…normally I would just load them into a new Visual Studio database project, select them all and run them…works beautifully.  Unfortunately VS2003 can’t connect/communicate with SQL2005 (Microsoft, if you’re reading this (and I know you do sometimes), please back port this into VS2003, not all of us will be using VS2005 strictly on our SQL2005 databases), so I had to recreate my database project in VS2005 and trying to add all the SQL files to the project threw an error (the generic “parameter not supported” error if anyone is keeping score) which was a real bummer.

    So I selected all of the .sql files and opened them…instead of getting one MS instance with 40 tabs, wouldn’t you know that I got…you guessed it, 40 instances of MS, and each instance of course challenged me for authorization credentials so I couldn’t just right click the grouping on the task bar and close the entire group…I had to go through one by one and click connect (or cancel), then close the window.  Next attempt:  Open a single instance of MS and open the files from within the instance.  Un-bloody-f’ing real…they do indeed open up in individual tabs now, but I again get prompted for authorization creds for each file, and only 6 tabs are displayed below the menu bar.  It took a few seconds to find the very uintuitively placed icon that lets you see the rest of the windows, albeit in list form and not tabs.  Come on guys…after opening up tons of tabs in VS, you are given the very pleasant option of scrolling to the left/right to see hidden tabs and just all around easier to use.

    So then after clicking the connect button 40 more times I start the task of running each statement.  First tab: I select the database I need from the dropdown, run the statements, go to the next tab…and the database selection is reset to “Master”…I have dozens of databases so doing this on each tab simply isn’t feasible, so I go off searching for a setting that allows me to specify the database to use for my MS session.  Oh wait…there isn’t one.  At this point I’m ready to fire up osql (where you can specify command switches which are session wide) and write my own batch file that does this for me.  Thinking that I’m probably not the only person on the planet who needs to run an entire folder of .sql files, I Googled around and found this great little utility that does it for me, which does exactly what I want it do on the first try.

    While I’m griping, why doesn’t double clicking most objects (tables/sprocs/etc) in MS object explorer do anything…like maybe open the object and let me do something with it?  If I double click a table, it should either open in design view, or show me the data in it…doubling clicking a sproc should show me the sql statements, right?  No, you have to right click the object and choose from one of the menu commands now…no defaults.  And also gone is the “TOP” option when you open a table…if it has a gazillion rows in it, you’re gonna get all gazillion of them (well, you can click stop at anytime, but that’s still pretty pathetic)…if I’m in Enterprise Manager/Mgmt Studio, chances are good I’m just needing some quick and dirty data to look at, so give me the option.  It is very much worth mentioning that I usually do stuff like this from raw SQL statements in QA, but if I just need something quickly I’ll use EM/MS.  At first I really liked the integration of QA/EM into one tool, but now I’m absolutely craving separation again.  QA was quick, easy to use, and just all around fantastic compared to the query windows in MS.

    Ok, enough ranting…but feel free to chime in, and if you know of any other SQL2005 rant posts out there please let me know as I’d very much like to see what other people have to say about it.  Cheers.

  • For All The Massive Attack Fans Out There

    I'm sure there has to be a couple of Massive Attack fans who visit this site, and if you're not (or have never heard of them) it's never too late to give them a shot. They helped pioneer the trip hop movement which set the stage for many later bands to follow (Portishead comes to mind, among many others). It's nice and dark, soothing, dubby, and just an all around bad ass style of music.

    A 5 hour mixed set of nonstop Massive Attack tunes has been making the playlist rounds over on the DI.fm Lounge channel for several months now; recently the author of the compilation has finally made it available for download: "This Is Massive Attack (mp3)" compiled by DJ Finny. Snag the download, queue it up in your media player of choice, and enjoy the nonstop sounds of Massive Attack.

  • I've Got GMail Invites

    [Update]  The folks at Google must really like me...they've given me some more invites, 6 in all.  Keep the requests coming!

    [Update]  Down to 1 invite.

    [Update]  They gave me a couple more, spent one on the g/f...so I now have 4.  Geeediton!

    [Update]  3 left.  Get 'em while they're hot!

    First 6 comments on this post gets 'em (comments only please, and make sure you leave a way for me to get in touch with you).  Shaweeet!  I'll keep giving them away as I get them, so if you don't get one this round, keep your fingers crossed.

    Feel free to link to this post as well.

  • Adding CoComment Support to Community Server

    [Update] I've updated my code to use Thomas Freudenberg's solution, which can be found in the trackbacks of this post.

    I posted earlier about CoComment, which is an online tool that allows you to track comments you make on other blogs (if you go plug in your email address on their site, you’ll get a beta key within a day or so if you want to try it out, which I highly recommend doing).  At the time of that posting, CoComment only supported the big name blogging engines, and from what I gathered somewhat poorly at that.  So I emailed the development team asking if there was anything I could do from my end to expedite the process of getting more blogging engines in the mix, namely Community Server of course. 

    Lo and behold I get an email back from them a couple of days later stating they had gutted the approach they were taking (screen scraping) and were moving to a tag based system, and about a day after that I received another message pointing me towards this post on their site which outlines the implementation they came up with.  Within half an hour I had this hammered out on my own site and am pleased to announce that it works quite nicely, so kudos to the folks over at CoComment.  CS purists probably would have taken a CSModule based approach, but seeing as A) this is still very beta software and thus might change quite often, and B) that it’s literally 10 lines of code, I simply plugged it into the Skin-CommentForm.ascx control.  Here’s the code:

    <%@ Import Namespace="CommunityServer.Components" %>
    <%@ Import Namespace="CommunityServer.Blogs.Components" %>

    <% WeblogPost currentPost = WeblogPosts.GetWeblogEntry(CSContext.Current.BlogGroupID, CSContext.Current.PostID); %>
    <% bool isAuthor = CSContext.Current.IsAuthenticated && CSContext.Current.User.UserID == currentPost.AuthorID; %>
    <script type="text/javascript">
            var blogTool                = "<%=SiteStatistics.CommunityServerVersionVersionInfo %>";
            var blogURL                 = "<%=Globals.FullPath(currentPost.Weblog.HomePage) %>";
            var blogTitle               = "<%=currentPost.Weblog.Name %>";
            var postURL                 = "<%=Globals.FullPath(BlogUrls.Instance().Post(currentPost)) %>";
            var postTitle               = "<%=currentPost.Subject %>";
            var commentAuthorLoggedIn   = "<%=isAuthor %>";
    <% if (isAuthor) { %>
            var commentAuthor           = "<%=CSContext.Current.User.DisplayName %>";
    <% } else{ %>
            var commentAuthorFieldName  = "<%=tbName.UniqueID %>";
    <% } %>
            var commentFormName         = "__aspnetForm";
            var commentTextFieldName    = "<%=tbComment.UniqueID %>";
            var commentButtonID         = "<%=btnSubmit.UniqueID %>";
    </script>

    Voila, your blog is now CoComment enabled.  To actually use CoComment, you’ll need to get an account, and there is a bookmarklet available from their site that sits in your links toolbar of your browser of choice (it looks like the big 4 are supported).  My next feature request will be some sort of visual cue that lets the commenter know that the site is CoComment-enabled…other than that, it works beautifully.

  • Community Server Migration Script -- Round 3

    Exciting news on the .Text to Community Server migration script; Robert McLaws came across my previous post and tapped me on the shoulder to beef up the engine for multi-blog migration scenarios so he could wrap a slick WinForms GUI wizard around it, so I’ve done just that.  From the prototypes he’s sent me, it looks very promising…who doesn’t like a sexy GUI over a command line interface, right?  The architecture of the migration engine itself is quite simple; pass it an array of .Text BlogID’s (from the blog_Config table), and it dynamically builds a corresponding DTS package for each of the BlogID’s.  The packages can either be saved to the server, or executed directly from the engine itself. 

    There is only one thing that can be said about DTS…it’s f’ing fast.  I’m also equally impressed with how easy it is to dynamically generate DTS packages from code (though figuring out all the table/column mappings was the bulk of the work, and another story altogether).  I’ve posted my bits for the migration engine here (core engine is in DotTextCS.Engine.dll), though the frontend is a console app, connection properties need to be set via a standard .config file, and each user + blog needs to be manually configured via the CS admin pages before executing the utility.  See my comments here for further instructions.  Robert’s wizard will alleviate all of the manual-ness, so unless you’re feeling industrious (or have a trivial number of blogs to migrate), wait for the 1.0 release, hopefully to be posted within a couple of days, so stay tuned.

  • Live Comment Preview

    Phil just posted a great blurb about how he added live comment previewing to his website, so I promptly stole borrowed his code and added it to mine.  To see it in action, start typing a comment (supports basic HTML tags) and watch the ooey gooey characters start to flow by in the Live Preview textbox!  Implementation time?  Less than 10 minutes.
  • VB.Net Equivalent to C# 'As' Keyword -- TryCast

    [Update] Apparently the TryCast keyword was introduced in VB 2005.  That miffs me a little.  Actually, that miffs me a lot since this project is on .Net 1.1 with no plans to move to 2.0 any time soon. [/update] 

    I've been plagued blessed by inheriting a VB.Net app as one of my projects at work.  I am not a language snob; I have nothing against VB (it's all IL in the end, right?) but sometimes it's a little slow going when I have to spend time looking up equivalent VB jargon for stuff that I inherently know in C#.  The point is that I haven't done any coding in VB in 3-4 years, so C# just comes more natural and I spend a bit of time hitting the docs for VB syntax related stuff.

    I won't get into a long boring post about the benefits of the 'as' keyword in C#...the audience of this blog should already know when/where to use it.  I needed the same functionality in VB so I set out to find the equivalent construct.  Try searching for "C# as VB equivalent" and related derivatives and you'll get the phonebook on language comparisons (some of them even providing a table with a line item list of C# to VB conversions for syntax, keywords, etc), but nothing directly mentioning the VB equivalent.

    After 10 minutes or so of looking around, I found it: In VB you want to use the TryCast function.  Easy enough.  Silly post?  Perhaps, but if it took me 20 minutes to find it, hopefully this'll save someone else having to do as much digging.

    Sidenote:  VB.Net also supports the C# ternary operator (which of course is very handy for doing null assignation tests) via the IIf function in the Microsoft.VisualBasic namespace.

1 2 3 4 5 Next > ... Last »

Copyright © :: JaysonKnight.com
External Content © :: Respective Authors

Terms of Service/Privacy Policy