home comments edit

I have learned far more about toilets than in the past 24 hours than any programmer should ever know.

I went to the Toiletology 101 site to see how to determine which part in the toilet is leaking and how to fix it. I figured out that it’s the flush valve, usually the fault of the flapper/tank-ball thing.

I investigated the existing flapper and didn’t see anything wrong with it, but I was sure it was just making a bad seal or something, so I went to the store and picked up a new one.

Installed the new one, tested again. The leak is still there, but a lot slower now (about half a centimeter of water drains from the tank every hour; before it was doing that in about 15 minutes). I think I’m on the right track, but I think the seal still isn’t the greatest.

I went this morning to Home Depot and picked up a Flusher Fixer Kit. That fixes the seal that the flapper connects to, which I think is also part of the problem. I drained the tank and dried it out this morning in anticipation of that project tonight.

If that doesn’t fix it, then it’s the gasket beneath the flush valve, which means I need to take the tank off the back of the toilet. At that point, I’m going to have to debate with myself whether it might be an idea to actually call a plumber. After reading the box on the replacement flush valve products at Home Depot, it sounds easy enough, but there are reasons that professional plumbers exist. If it was so easy everyone could do it, we wouldn’t need them, would we?

Oh, and a follow-up on my dishwasher issues: After removing the rubber band and the broken glass from the mechanism in the bottom of the dishwasher, it seems to work slightly better. It actually washes all the soap out now (where before it left soap everywhere) and the dishes look reasonably clean. That said, it’s still not as good as the dishwasher we had in the apartment, so while I may have staved off the need to buy a new dishwasher, the idea that we need an upgrade has not left my head. According to Greg, a dishwasher is one of those things that you go “all-out” on. Get the top of the line. I couldn’t agree more.

home comments edit

Turns out I don’t have a head cold, I have hay fever unlike anything I’ve had in a long time. Jenn’s got the same thing. She went to her doctor for a cold treatment and got told it was allergies. My allergy shot clinic confirmed that a lot of folks have gotten hit in the last week. I have since upped my antihistamine dosage.

I got a new cable box today. This will be the third one we’ve had since we moved in. The first one had crackly sound, this last one decided it would turn itself off and reset itself every time you change the channel. The one I got today seems to work OK; let’s hope it stays that way.

While waiting for the cable guy, I decided to test the toilet in the downstairs bathroom for leaking (I can hear it run very slightly every so often). I dropped some food coloring in the tank and, sure enough, found it in the bowl very shortly after. Guess I’ve gotta look at that when I get home. It’s always something.

blog comments edit

I updated my RSS feed to be 2.0 compliant, so those of you making use of such things, you should now see fields like pubDate, guid, etc., for more accurate tracking of my stuff.

Around last Thursday, my right eye started giving me trouble. I figured it was just eyestrain from having been working too much and staring at the computer screen. Over the weekend it seemed to get better (I didn’t do any work), and Monday I was feeling pretty good (albeit bloodshot).

Monday night I didn’t get more than two hours of sleep because the pain was so intense. I held a cold washcloth on my eye most of the night and loaded up on ibuprofen. I had had enough; it was time to go to the eye doctor.

I was born with Duane’s Syndrome (crossed eyes) and had that corrected when I was really young (they cut muscles in the back of your eyes to straighten them out). Having this eye pain made me a little worried, thinking it had something to do with that (just what I needed; torn muscles in the back of my eye).

Turns out I have a moderate case of iritis, which is akin to arthritis in your eyeball. Apparently they don’t know what causes it; anyone is entitled to a surprise case of it once, but if it happens again then you need to find out if you have some other systemic issue that might be linked to it. Here’s hoping this is a one-shot deal.

I got my eye dilated (and it’s still sort of dilated) yesterday and also got some prednisone eye drops. You’d never believe how affected you are when you have eye trouble - I went home after my doctor’s appointment and could barely walk around. I ended up sleeping most of the day away (and still slept all night), and watching a little TV (it’s easy to make out what’s on TV because details generally don’t matter… I couldn’t read to save my life, though).

So today I’m happy to say I’m pain-free, back in effect, and taking my eye drops once every two hours. I did successfully pick up Jenn’s head cold in my weakened state, though, so I’m pain-free but mega-congested. It never rains but it pours.

sharepoint comments edit

I did some consulting a while back with a company who wanted to port their product into SharePoint Portal Server 2003 and they wanted to know how to develop web parts. The problem was, they didn’t quite have the technical background I assumed they did, so we spent a lot of time covering prerequisite knowledge and not too much time actually looking at web parts. That started me thinking that there are probably people out there who want to make web parts (either on Windows SharePoint Services or SharePoint Portal Server 2003) and they don’t really know where to start.

Below is my recommended path to web parts - from “not knowing how to program” all the way to “Hello World, web part style.” Once you’ve got web parts down, making them fancy and ultra-functional is up to you.

Learn HTML. While it’s important to note that HTML (HyperText Markup Language) is not a programming language (it’s a “markup language” - it describes how things look not how they function), knowing HTML is a key factor in developing web parts. Plus, because it’s reasonably easy to learn and you can see the results of your progress immediately (check it out in a browser while you’re writing), you should definitely learn HTML first.

While learning HTML, keep in mind that eventually you’re not really going to get a whole lot of trial-and-error testing to see how your web part looks (it’s a very, very slow process if you go that route), so even if you learn HTML using a WYSIWYG (what you see is what you get) editor like FrontPage or DreamWeaver, make sure you can write HTML by hand in something like Notepad. Having HTML down cold is a key to success. Web parts (like any standard web page or piece of a web page) display themselves in HTML.

Learn CSS. CSS, or Cascading Style Sheets, go hand in hand with HTML. CSS is a way to define the look of HTML more precisely. There are lots of other benefits to CSS, but you’ll learn about those as you learn how to use it. Regardless, web parts use CSS to maintain a standard format in their look and feel so knowing how to use CSS will ensure your web part looks consistent with the rest of the web parts on your page.

Learn general programming concepts. This is a little hard to describe, but this point is why they have computer science classes. What I mean here is you should learn things like data structures (what the different ways computers can store and manipulate data are), control structures (how you tell the computer what the next instruction is that you want it to run), and so forth. Usually when you learn about these things you also get taught a programming language, but I will work under the assumption that you might learn this stuff without actually learning a language. There are several books out there on these subjects, but I’d recommend possibly taking the first-year classes in a Computer Science degree program at your local university rather than just reading about it. Having some hands-on interaction always makes concepts like this a little easier to understand. You’ll need to know this stuff so you can program your web part and also so you know how your web part might store custom properties. You will use this in any programming project you do.

Learn batch scripting. Writing a batch script is probably the simplest introduction to programming there is. While it doesn’t directly pertain to web part creation, it does give you insight into the programming world in a simple, easy to learn way. It requires no compiler or special environment to write or debug, and there are few keywords to remember. Note that if you learned a different programming language while learning general programming concepts, above, you can skip this step. This is just to get your feet wet.

Learn JavaScript. JavaScript is a good introduction to a more structured programming language (at least, more structured than batch scripting). Plus, you can use this directly with your HTML and CSS skills to make some cool web pages with some great functionality. Not only that, but you will be able to use your JavaScript skills once you start writing web parts to port that functionality in. Web parts are not written in JavaScript; JavaScript can help you accomplish some fancy things on the client (browser) end, though.

Learn VBScript. VBScript is a stepping stone to the next technology you’ll learn, Active Server Pages (below). While you can write ASP in JavaScript, you’ll find most of the examples out there are in VBScript and it just makes it easier to learn ASP if you know VBScript. You’ll also be able to use this (and your JavaScript) in place of batch scripting, so if you wanted to write some handy utilities for yourself to automate some tasks, you now have the skills.

Learn ASP. ASP, or Active Server Pages, is the technology by which you insert script (like VBScript) into an HTML page. That script executes on the web server and renders HTML to the browser. This is a powerful thing - it allows you to take input in from the user, process it, and then return results. This is the grandfather technology to web parts, so you’ll need to understand how this works to really understand why your web parts do what they do.

Learn C#. The Microsoft .NET framework can be programmed in any number of languages, but I recommend C#. Web parts are all compiled .NET components, and you’ll need to know the language to write them in. It doesn’t matter right now if you’re learning just simple console applications or Windows applications or whatever, just learn how C# works.

It’s at this point that I recommend you spend the money to get a copy of Visual Studio, the programming envirionment of choice when working with anything .NET. There are free alternatives out there, but I’d still recommend getting actual Visual Studio.

Learn Windows SharePoint Services and/or SharePoint Portal Server. Now it’s time to take a short detour and actually install WSS or SPS

  1. If you haven’t already, get this fired up and learn it inside and how. Learn how to configure it, how to add and remove web parts from Web Part Pages, how lists work… everything. Know the product, because when it comes time to write for the product, it’ll make your life that much easier.

Also, take some time to see how the product(s) work. You’ll see that they’re using HTML, CSS, and JavaScript to make things happen on the browser end. With your newly learned skills, check this out and see if you can determine what makes different things happen.

Note - if you’ve used SharePoint Team Services or SharePoint Portal Server 2001, don’t assume you know all you need to here. It’s a better assumption that you don’t know anything about the product, since WSS/SPS are so very different than their previous incarnations. Even if you’ve used these prior products, take this time to get intimately familiar with the new versions. You’ll thank me.

Learn ASP.NET. ASP.NET, the .NET version of Active Server Pages, is the backbone of Windows SharePoint Services and SharePoint Portal Server

  1. Web Part Pages are all ASP.NET pages, so knowing how ASP.NET web forms and controls work is an absolute must. Write a small web site that takes some data in, handles some button click events, does something with some data, and spits it back out. Look at what you wrote compared to what ASP.NET generates for you. You’ll see some extra stuff in there that you didn’t put there. If you installed and checked out WSS or SPS 2003, some of it will look familiar - the standard ASP.NET stuff in your pages will look a lot like the standard ASP.NET stuff in WSS/SPS. It’s all starting to come together, isn’t it?

This is also the step where you really need to learn how to use the Visual Studio debugger. Up until now, you’ve probably been writing out text lines to the screen to debug your problems, right? Sure you have - everyone does. Now you need to learn how to do it with a real debugger. Learn how to debug ASP.NET web pages on your local development workstation, then learn how to debug ASP.NET web pages on a remote machine. It’s a similar process, but you’ll want to know both because chances are you won’t be developing right on a WSS or SPS server - you’ll write your code, compile it, deploy it to a test server, and then need to remote debug it.

Really, learn ASP.NET. I can’t stress this enough. You need need need need to learn ASP.NET to get web parts running successfully. Learn it inside and out. All the fancy stuff. Don’t rely on the WYSIWYG designer - learn to write it in code view. When you get to web parts, there’s no designer ability, so you can’t assume that will be there. Learn what you can about Session state, Viewstate, caching, and so on. You will use everything you learn in ASP.NET while you develop web parts. Be very, very comfortable with ASP.NET - web parts are just specialized ASP.NET.

Learn ASP.NET web server (custom) controls. “Custom controls,” “web custom controls,” or “web server controls” - all of these are the same. This is different than user controls. In ASP.NET, user controls are sort of like miniature ASP.NET web forms that can be embedded into other web forms. That’s not what I’m talking about here. You know when you’re working in ASP.NET and you can drag a “text box” or a “button” onto your form? Those are server controls. Those are what I’m talking about, and those are what you need to learn to write. It’s a little more complicated than writing your standard web form, but this is crucial - web parts ARE ASP.NET server controls. This is pretty much what you’ve been building up to this whole time. Learn to write server controls and you’re there.

Download the SPS/WSS SDK documentation. The SDK documentation contains code samples and notes on how to write web parts. If you’ve learned all of the stuff in this list up until now, this should make total sense to you.

Write your first web part. Using the code samples in the SDK, write your very first web part. It doesn’t have to be anything fancy, and you can even copy and paste the example code they’ve given you. Just get it running in WSS or SPS. Now, step through it in the debugger to see how it works. Once you get it, the world is yours. Read through the SDK and you’ll learn how to save custom properties, how to interact between web parts… now you’re ready to really cut loose.

That’s it! It seems like a long list, but you have to figure there’s a reason that developers get paid to write programs - if you could learn it all in a day, everyone would be doing it. That said, if you take the time to figure out how the technology works, then progress through the steps, you, too, could soon be writing your very own web parts.