A friend of mine made a blog post about the lack of conferences in Kansas City. Here is the post: http://www.codebucket.org/archive/2008/06/26/kansas-city-here-we-come.aspx. If you don't know Lee Brandt you need to know him, even if he's not necessarily a full on SharePoint Nation Inductee he's a great developer. He was one of my awesome teammates at Coders 4 Charity. I would like to call him one of my friends in Kansas City. He makes some good points. I also ended up in a conversation with Jeff Julian a bit later and he also makes some good points. If you want to hold a conference you need more user group attendees. For our .Net User Group it looks like we are getting between 50 and 60 people. Our Kansas City Office Geeks (SharePoint User Group), however is getting about 13 people so far at the last meeting. I am hoping that the next meeting on Windows Workflow Foundation will have over 20 people. We have 54 people signed up on our user group list. We are not going to have a conference here if we are not going to be able to pull the numbers. If you guys want a conference, then you need to start supporting your local user groups in Kansas City. I love this community. I love the people. We just need more of you to come out and show up. I know you are out there and I want to meet you and hear from you. I would love to hear more feedback from Kansas City people on why you are not coming out. Fill out the contact form. E-mail me, Twitter me...I can't answer during work hours, but I will answer by the end of the night. I hope to hear from you all.
I was using STSDev to deploy a feature that would create a custom timer job and write SharePoint Usage Data to a webservice. Somehow the feature was deployed, but never actually hit my site collection feature list. When I tried to retract the solution is said that there was a job pending that would not allow me to retract the solution package. After running stsadm -o enumdeployments I found the job id copied the id and ran stsadm -o canceldeployment <job id>. This pushed the solution into the timer jobs and I was able to delete the timer job that was stuck. Then I ran a retractsolution and deploysolution in STSDev. I guess you can say I pulled something back from the dead or the lost. Kind of like in those tv shows where you see someone caught in between two worlds in a sort of limbo. As usual I hope that someone can benefit from my experiences somehow. Have a good fourth!
I swear a good day lasts forever. This day lasted a long time. Let alone this week was pretty good too. First off this unrelated, but I have an MSDN Premium Subscription with Team Systems, so I can finally develop at home without any issues. How awesome is that? I can do what I love to do for fun without have to use trial copies and uninstalling and reinstalling programs. It gets so annoying after a while. I am so excited, because I can finally do the real playing that I want do with Server 2008 and SharePoint. Anyway, so you probably wanted to see the stuff about the Regional SharePoint Conference...
I sort of met Bob Fox on Friday night. I thought it was him and my suspicions were confirmed on Saturday morning. He comes up to me and says "I know you" in this real sarcastic tone...Dude's a real interesting guy. He reminds me a lot of my Uncle Harvey. Who is a real joker and likes to mess with people. He's can be a very sarcastic guy too. It makes me feel a little better about my speaking experiences knowing that he gets pretty nervous when he goes out and speaks with people. I feel bad that I missed his session, but I debated long and hard about his session vs. Paul Galvin's Session. I am glad that I went to Paul's session, because he talked about creating custom actions in SharePoint Designer and provisioning sites. I thought it was cool how he started up this workflow in SharePoint using a list and then showed us how to create it with Visual Studio and SharePoint Designer. He has a CodePlex Project out there with some samples that I really want to play with when my MSDN goodies arrive. Jumping back a notch I met some really great people setting up...Gary Vaughn, who is in charge of the whole event. He's a really nice guy. He seems like one of those wise sages who has been around the IT Field for a while and can teach a lot to people around himself. I also met two very cool people. They remind me of some of my parents friends who I really like. There names are Janice and Harold Brangman. I spent a lot of time with Janice. She's a very outspoken, but very cool person. I usually try to hang out with people I am most comfortable, so Paul Galvin and Janice Brangman kind of felt like people I wanted to hang out with. Paul, though, reminds me of a lot of my friends back home. He's very cool and liberal and laid back. We spent about 3 or 4 hours just sitting around chatting about everything from cats picking up mice and killing them to New Jersey, Cape Cod, and St. Louis. I guess you follow someone's blog and there Twitter sometimes you just get a feel for that person. I predict that Paul will be an MVP the next cycle. At least I'm hoping. He is the most deserving person I have ever met in my entire life (well him and John Ferringer). Ok so other than Paul Galvin, Bob Fox, and the Brangman's I also met Rachel Appell, Wes Bryan, and a bunch of other people (I am sorry I don't remember everyone's name). Everyone I met was really cool and really great. I have not met anyone I really disliked so far. I wish that I felt less like a zombie today and was cooler. I felt like one calorie of myself, because this bed was a little on the hard side. I was fueled with a lot of caffeine and awesome people. I am glad I got to talk to Wes Bryan at Bamboo Solutions a bit about alerts and the guy who did the Disaster Recovery Presentation from AvePoint, Tony Lanni. I'm really exhausted and I bet you get the jist of the awesomeness of this conference, so I think it's time for me to pass out...No I really don't think it will matter what the bed quality is when I am this tired, so my sleep should rock...
If you are in D.C. for the SharePoint Regional Conference this week as of 4 pm I should be in town. I am pretty excited, because this is my first technical conference as a speaker and attendee. If anyone is interested in meeting up I will be staying at the Holiday Inn Dulles, so just send me a direct message on Twitter. If anyone wants to chat about the MOSS Comic I'm all ears for ideas or anything else. I am taking submissions. So far I am going to re-work the first comic when I get my new drawing tablet at the end of the week and Rob Foster has submitted a second idea that I will be using. If you are not going to be in D.C. and you have an idea send your idea via the contact form on my blog. I'll catch you guys later.
One of my fellow Coders 4 Charity Groupmates, Lee Brandt, will be speaking about Test Driven Development using C# tonight. If you are in town you must come. If you are not in town and you want to come. Well hop on a flight? Anyway, here is the official information *commenses brainwashing tactics*:
Topic: TDD Using C#
Test-Driven development is a methodology that can help developers write solid, well-designed code. Very few developers practice it because very few understand how it works and how to make it work for them. We will discuss what TDD is, why developers would want to use it, and the basics of how to actually do it using Visual Studio 2008, MS Test and C# 3.0. Come find out what Red, Green, Refactor is all about and why you should care.
Presented by: Lee Brandt
Lee is a .NET Solutions Architect for Examinetics, Inc. int Overland Park, Kansas. Lee has been programming professionally for over 10 years and developing solutions in .NET and C# since the early beta releases in 2000. He is an advocate for test-driven development, design patterns and agile methodologies. Lee spends most of his free time reading about programming, discussing programming and actually writing code. Any time leftover is spent with his wife Stacey and their dog Frieda.
So you want to come now right? Can't say I didn't try...See you there:)
I drew up a quick comic tonight and posted it on twitter. It is a really bad prototype that I am having converted into a better version by a friend. He has a tablet and I have seen a couple of his drawings. I will probably have a few people draw items as things progress and more people get involved. If anyone has an idea for a comic please let me know and I will try to get something out there in the upcoming months. I have no idea what the frequency will be on updates. I'll let you guys know when the first comic is posted.
If you are interested in sponsoring Kansas City Office Geeks in July or a later month this year please submit a contact form on my blog. We are currently looking for sponsors for July, November, and December of this year. So far we have August, September, and October covered. Usually the sponsors buy food for dinner and speak for about five minutes about there company and current job openings. Occasionally, the sponsors will provide swag from there company and leave business cards or other items. Sometimes they stay for the meetings. So far our first successful meeting had about 13 people and we are expecting more people at the next meeting.
If you are interested in speaking at the Kansas Office Geeks Meetings. We have openings in September, October, November, and December. We could really use a presenter on Visual Studio Tools for Office. The topics must be Office Development related, so you could speak about anything on SharePoint, Groove, Outlook, Access, Excel, Word, etc. Please fill out the contact form if you are interested.
A good portion of this week was spent recovering some documents that were deleted by a rogue console application (most likely my fault). I wrote a Console Application to combine some document libraries and I spent a good portion of a week testing it. However, I did not really think of enough scenarios, because it obviously did not move the documents properly. Some libraries were moved and others were not. At any rate I practiced my SQL Restoration skills and wrote another two console applications to print out the document count for the libraries on our current portal and the restored portal. Then I compared the lists and copied over the missing files. The rest of the week was spent on this quick launch modification issue. I am not a JavaScript Guru, but I am stubborn person who will tackle Google and my own brain for a few days before giving up.
It was a pretty long day and I was pretty frustrated, so I went to our JavaScript Guru at work, Kevin. He's a really cool guy and knows some pretty neat things about JavaScript and AJAX. I told him we wanted to use the SharePoint Quick Launch Menu Control (<SharePoint:ASPMenu>) with an expand/collapse accordion/slider control type menu. I had tried a few different menu options and realized that most of them would not work, because SharePoint will override the CSS. The easiest way to do anything is to stick with there controls and bend the rules a little. About 6/7 pm on Friday I check my Gmail account and Kevin sent me an e-mail with some code. One hour later after some dinner and a movie I crack open my web user control and test it out. Sure enough it works. Here is a reference to the link that he used:
http://weblogs.asp.net/asmith/archive/2003/10/06/30744.aspx
Here is the code that finally ended up at the top of the user control:
<script type="text/javascript">
var _Menus = [];
_Menus.push("<% QuickLaunchMenuID.ClientID.ToString() %>");
//attach to the load/onload event the method
//to add the handler to add the animations when
//menu section is clicked.
if (window.addEventListener)
{window.addEventListener("load", AttachMenuAnimation, false);}
else if (window.attachEvent)
{window.attachEvent( "onload", AttachMenuAnimation );}
function AttachMenuAnimation()
{
if (_Menus != null) {
for ( i=0; i < _Menus.length; i++)
{
InitMenuAnimations(_Menus[i]);
}
}
}
//this function will attach events to all the TR elements that
//have IDs
function InitMenuAnimations(cntrl)
{
//get all of the TR elements in the table, TBODY is the first element
//so get all of the TR elements from the TBODY element
var allTr = document.getElementById(cntrl).childNodes[0].childNodes;
//loop through all of the TR objects and if it has an ID
//it is a section header so attach an event to hide or unhide
//its content, Attach the event in a non destructive manner
for(i=0;i < allTr.length;i++)
{
if (allTr[i].id != ""){
allTr[i].MyClick = HideUnhide;
//add the handler
XBrowserAddHandler(allTr[i],"click","MyClick");
}
}
}
function XBrowserAddHandler(target,eventName,handlerName) {
if ( target.addEventListener ) {
target.addEventListener(eventName, function(e){target[handlerName](e);}, false);
} else if ( target.attachEvent ) {
target.attachEvent("on" + eventName, function(e){target[handlerName](e);});
} else {
var originalHandler = target["on" + eventName];
if ( originalHandler ) {
target["on" + eventName] = function(e){originalHandler(e);target[handlerName](e);};
} else {
target["on" + eventName] = target[handlerName];
}
}
}
function HideUnhide(e)
{
var el = this.nextSibling;
if (el.id == ""){
if (el.style.display == "none")
el.style.display = "block";
else
el.style.display = "none";
}
}
</script>
If you paste that into the header of your page and add the ID of the menu above, then it should expand/collapse your headers and hide/un-hide your child nodes. In future I will show you guys how to loop through and add Quick Launch Nodes and any additional nodes you would like to the Quick Launch Menu Control. This is just a neat little tidbit that you guys can play with for now. Remember: JavaScript is fun, but if you can use a .Net Control or Code it is more manageable in the long run. Have a good weekend guys!
I have been participating in the KC Corporate Challenge for the past few weeks. I have been hitting the gym and going to practices for Softball, Basketball, Soccer, and Flag Football. Unfortunately, I pulled something in my foot, so I could not actually play in soccer. I am trying to encourage better fitness in my life alongside more self confidence by speaking at various conferences and user groups.
My next speaking engagement (and the biggest one) will be a 15 minute presentation on how to create user controls for SharePoint using AJAX and I probably will hit on the difference between .Net and SharePoint. This presentation will be at the Regional SharePoint Conference in Washington D.C. (www.sugdc.org) on Saturday, June 28th. I am a little nervous about this presentation, because I have to condense my normal 30 minute presentation into 15 minutes. I am going to cut out most of what you need to do with the web .config and probably just mention the steps that you need to take and give everyone the link to the full presentation with links and all the web .config information. When I give this presentation it will have been the fourth time giving the presentation. This presentation by far is my favorite presentation.
As you guys know I am also working on a book with John Ferringer(http://www.sharepointblogs.com/fortheuser) about SharePoint Disaster Recovery. Here is a link to the book: http://www.amazon.com/Microsoft-Office-SharePoint-Disaster-Recovery/dp/1584505990/ref=sr_1_1?ie=UTF8&s=books&qid=1213277015&sr=8-1. John showed me this link recently it's really weird about the reality of the situation.
Thanks to Brian Laird for hooking me up with a server to use for the MOSS Comic. I think that I finally need to get my ideas on paper and meet with whoever wants to work on the MOSS Comic. If you wanted to help out with the comic fill out the contact form. I am going to try and do something within the next week.
As usual if you have a comment or question please let me know. Have a good week as usual!
I was using a VPC today, so that I could restore our content database and keep a copy of our SharePoint instance for development. I noticed that SQL Express only allows about 3-4 gb of data in a database. That wouldn't work out considering our Content DB is 21.9 GB. So I need to find a way to upgrade the SQL Server instace to SQL Enterprise Edition. I did some research and some tweaking and figured it out. If you open up a command prompt window and type in this information:
start /wait C:\setup.exe ADDLOCAL=SQL_Engine INSTANCENAME=NameOfServerInstance UPGRADE=SQL_Engine SKUUPGRADE=1 /qb
Unfortunately, if this is a production server you may experience some down time, so plan accordingly with your maintenance schedule. If anyone has any comments or questions please let me know.