| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Dec | ||||||
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |
20. December 2008 by Monkk.
Ok ya got me, awful is nowhere near strong enough a word but it’ll have to do. Why? Ok here we go:
1) If you have a TV it MUST have a set top box otherwise you’d better have an air antennae or the tv is useless. $5.00 a month per set top box.
2) 4 Incoming TV streams. So you can watch different channels on 4 TV’s. if you have 5 simultaneous viewers on 5 TV’s, one of them must watch what someone else is watching or they can watch a DVR recorded show (if ya spring for the extra money for a DVR set top box.). Ok, sounds a little constraining but that’s a lot of TV to watch at once right? Oh you forgot about the DVR didn’t you. If the DVR is recording two different programs at the same time, there goes 2 of your streams leaving you 2 streams left to watch on your remaining TVs.
3) If you opt to pay the additional $10 a month for HD programming, 2 of your 4 channels are HD, the other 2 are SD. So if you happen to DVR those two programs in HD (and why the hell wouldn’t you???) well you’ve still only got 2 channels left, but they are SD so enjoy watching that SD on your HD TV ya paid all that money for.
4) Only 1 DVR per house-hold. You can watch recorded shows from the DVR on any of your TV’s but you can only schedule recordings from the DVR Tv (or the web based interface (which is only available to the primary account holders login on their site, so sorry spouse, roommate, or children, better ask the account holder to do it for ya…))
5) The 2Wire DSL modem / wire-less router combo. OK the device itself isn’t awful for your average web-surfing person, but I have a swell D-Link wireless router that I purchased because it has all the features I require. It did work behind the 2Wire one, but has no way to disable the router or route all traffic to the real router so it effectively crippled some features (automatic DYNDNS updates, UPNP firewall, etc)
6) Understaffed installers and incompetent customer service personnel. I’m sure there are a few who actually know how to do their job, but I have no empirical evidence of that. The woman I spoke with to order my service got the number of TV’s wrong (3 instead of 4, I realize there only one away but its a pretty important detail…) So of course when the installer gets there, he only has 3 for me. 6 hours later he leaves after drilling 2 holes and running cable to 2 rooms 10 feet from each other (….) and tells me I can schedule another box to be delivered. Which I do, of course the 1st appointment available is 3 weeks out. So I tell them to cancel the service, and magically they can drop it off 2 days out. So I take the day off work and wait for my 8:00 am - 10:-00 am appointment. 10:15 rolls around and the installer says he’s running late and won’t be there until between 10:00 and 12:00. 12:30 rolls around and I call them as I’ve heard NOTHING and he’s running late and says he won’t be there until between 12:00 and 2:00. 2:15 rolls around and surprise, he won’t bet there until between 2:00 and 4:00. So at 4:30 I call them to see where the hell he is and of course customer service says no installer has been assigned to do anything and they can schedule one (…wait for it…) in 3 weeks.
So, thankfully, I never cancelled my Time Warner service as I suspected AT&T Uverse was incompetent and lo and behold, they are. So I re-wired my cable in 15 minutes (6 freaking hours it took the moron to wire in the Uverse) and I have reliable service again.
On the positive side, the set top box UI is way better then Time Warners, but that ain’t any reason to keep the service.
Clusterfuck is far more an appropriate term. I suggest you stay FAR FAR AWAY from this garbage. Asta la vista baby, you can suck it!
Posted in Personal | Print | 1 Comment »
19. November 2008 by Monkk.
Right off the bat, let me say, this is a great game! Fun, suspenseful, and Co-Op! If you enjoy shooting zombies, You just can’t go wrong here. Hats off to Valve.
Single player and Co-Op (THANK YOU VALVE for bringing it back!!) are great.
Versus… Well, I just don’t like it much… Random team, random player? Why the long respawn for the infected? The survivors have far superior fire-power…
What about 32 player Death Match and some CTF?
Alas…
Totally awesome game otherwise, go buy it!
Posted in Gaming | Print | 1 Comment »
13. November 2008 by Monkk.
This post has no basis in advice or analysis, I just was documenting an existing SharePoint site I sadly must maintain at work. If you’ve read my posts in the past, you’ll remember that I am not a big SharePoint fan. Well, this isn’t really SharePoint related (I just wanted to kick an app while it was down with that last comment) aside from a demonstration of how things can go horribly awry when one tries to mix development methodologies for SharePoint…
The application in question is a corporate use Room Reservation system. Oddly, the company uses Lotus Notes which has an ugly (though quite functional) room reservation system built right in. In my opinion, this never should have been created. The company is trying to get away from Notes but until they migrate the 1500 - 2000 custom lotus notes database applications to SharePoint, Notes is not going anywhere. It should have been one of the last items migrated and it should have just been migrated to Microsoft Exchange as it also has a good meeting scheduler.
At any rate, the reason for the post. Check out this code snippet from a C# 2.0 Web Service which runs under SharePoint. To be honest, until I saw this, I didn’t even know C# supported "goto" *slaps head*
And sadly that’s one of the more clear-cut code chunks up in there. This my friends is why we have Coding Best Practices and Code Reviews… DON’T LET THIS HAPPEN TO YOU (and you better pray I don’t ever catch you writing something like this, you will be flogged!)
double num = -41.0;
double num2 = 39.0;
string str22 = str10;
if (str22 != null)
{
if (!(str22 == "week"))
{
if (str22 == "day")
{
str12 = "<Where><DateRangesOverlap><FieldRef Name=\"EventDate\" /><FieldRef Name=\"EndDate\" /><FieldRef Name=\"RecurrenceID\" /><Value Type=\"DateTime\"><Today /></Value></DateRangesOverlap></Where>";
goto Label_01A5;
}
}
else
{
str12 = "<Where><DateRangesOverlap><FieldRef Name=\"EventDate\" /><FieldRef Name=\"EndDate\" /><FieldRef Name=\"RecurrenceID\" /><Value Type=\"DateTime\"><Week /></Value></DateRangesOverlap></Where>";
num = -8.0;
num2 = 15.0;
}
}
goto Label_01BB;
Label_01A5:
num = -1.0;
num2 = 1.0;
Label_01BB:
time2 = time.AddDays(num);
DateTime time3 = time.AddDays(num2);
string roomid = "0";
Posted in Programming Related | Print | 2 Comments »
5. November 2008 by Monkk.
Come back in 2 years and regulate the senate 4tw ![]()
Posted in Personal | Print | No Comments »
13. October 2008 by Monkk.
Came across this in an email and it sums it up pretty well :-) (Click on the image to get a larger, more read-able image)
Posted in Personal | Print | No Comments »
26. September 2008 by Monkk.
First let me say, if you’re looking for some tutorials or samples related to Sharepoint, this post isn’t for you
but feel free to read on.
At my new employer’s, I have to do a fair amount of Sharepoint development. Well that phrase right there is just ridiculously large in scope. Allow me to elaborate.
I like to say, Sharepoint is to Web Sites as Microsoft Access is to Databases. Great great tools when used for their intended purposes. Very bad when attempting to stretch them to do things they just weren’t intended to do. Yeah, you can make a front end to your database with Access, but if you need scalable deployable solutions for an enterprise or mass user base… Well, that just isn’t how it’s done. When Sharepoint is used as a collaboration site, it is awesome. Easy to set up and perform basic customizations. It can be styled very nicely by graphic artists and web design folks but when you try to stretch it with configuration settings alone, you end up with hard to maintain ugly solutions.
There are two flavors of Sharepoint. One is Windows Sharepoint Services (WSS) and the other is the Microsoft Office Sharepoint Services (MOSS). WSS is a free "Sharepoint Server" (the SS in WSS and MOSS) [ download: http://www.microsoft.com/downloads/details.aspx?FamilyId=D51730B5-48FC-4CA2-B454-8DC2CAF93951&displaylang=en (requires Windows Server 2003 (you can grab a Sharepoint Virtual Machine for the Microsoft Virtual Server as well), search the download site for Sharepoint VHD] MOSS is built on top of WSS and contains many additional webparts (I’ll explain a little later) as well as the additional services and administration applications to create and manage web farms and multiple site collections. The webparts are the value-add. One such webpart is the Business Data Catalog which auto-magically allow various data sources (web services, databases, etc) to be used as a Sharepoint list while Sharepoint and the BDC do the heavy lifting of getting, caching, updating. etc.
Sharepoint has a few intrinsic "types" that one can work with on a SP site: Lists, Libraries, and Webparts.
A list is simply that, a list of "things". You can best think of these lists as database tables, though they are not stored as such. Each one comes stock with a few default columns such as created by, created date, last modified, that sort of thing. You then can add as many additional columns as you require to more properly define the "thing" in the list. Such as a list of customers, or regions, or support staff members, etc. These are all stored in a content database behind the scenes. If you modify this content database outside of using the Sharepoint provided tools and applications, you will void your support contract on that installation (which considering the MOSS retail server for enterprises in the tens of thousands of dollars in licensing, not something you want to void your warranty with!) These lists automatically have generated Create, Edit, and View pages which can be customized to further enhance working with them. And Sharepoint manages all this for you.
A Library is one of the default "applications" it provides. At it’s heart it is a list, but it has special coding to in the support pages for the list that allow it work with special types of lists. Sharepoint comes with a few built in libraries, such as a Document Library and a Picture Library. As I mentioned these lists are persisted in a database and since images and documents (such as word files, or pdfs) are binary files, you need to store them, retrieve them, and view them in special manners, depending on what type it is. The libraries isolate that and do it for you and provide you with thumbnails in the picture library views and open up word to edit word documents, and excel to edit spreadsheets. All very integrated with office (hence the MO in MOSS, though WSS has these libraries as well.)
A Webpart is essentially a WebControl (in asp.net terms). They are custom web controls that implement various Sharepoint API interfaces. Calendar Control? That’s a webpart.Ghant Chart? That’s a webpart. Anything you can code as a web control can be a webpart. Sharepoint comes with a lot of different ones and they are all pretty useful for their purpose.
The sticky wicket is that you can do a helluva lot without needing to write a webpart. If you’re doing Sharepoint development and not coding webparts, you are using MS Sharepoint Designer, a must have and of course, it is not free. But it does have a fine configurator for the DataView webpart. In a nutshell, the dataview interacts with some external source of data (web service, database, xml file on the files-ystem) and renders it to a list with a customizable XSLT. With something like that you can completely render the data with html markup to the page any damn way you want. You can even pass querystring parameters into it, pretty flexible and you can accomplish a lot of simple-ish apps this way)
I strongly suggest that anytime you discard all the other Sharepoint webparts and libraries to use dataviews and custom xslt, you INSTEAD develop your own custom webpart!! It will be far more maintainable in the end. And if it’s a really complex application that needs to interact with a lot of systems around the enterprise, make a standard asp.net application and host it in a iframe webpart. That is what Microsoft intended. However, most IT managers just want everything in Sharepoint and they want it in there now because Jim in accounting made his group’s Sharepoint site by himself in 2 days. Of course it’s just a few custom lists and no theming or workflows. And that’s great! But they don’t understand the nuances in the differences of the applications they want, it just gets lumped under Sharepoint and that is a MISTAKE!
More later, cross your fingers boys and girls, the rabbit hole goes pretty deep on this one I suspect!
–Regards!
Posted in Programming Related | Print | No Comments »
27. August 2008 by Monkk.
Since I wanted to test Windows Live Writer and had mentioned deleting the temporary Internet files from the web browser I thought I’d create a little post and see how it all fairs. Enjoy
First start good old Internet explorer. Click on the Tools menu drop down (if you do not see a menu list with "Tools" on it as the image below shows, try pressing the ALT key. This tells windows to show you short-cut keys and enable hiding menus)
Click that "Internet Options" item at the bottom. This will bring up the Internet Options dialog which looks like this:
At this point, click the "Delete…" button. This will bring up the Delete Browsing History dialog box.
Click the "Delete files" button and you will be prompted to Ok the deletion of the files. Choose "Yes":
Then click the "Delete Cookies" button and you will be prompted to Ok the deletion of the files. Choose "Yes" (Warning: This will cause some sites that store your login information on your browser to prompt you again for your name and password.) :
And you my friend are done. Close down all running instances of Internet Explorer and restart the browser and you should be good to go. Good luck!
Regards!
Posted in General Computer Use | Print | 1 Comment »
27. July 2008 by Monkk.
So it’s all the rage to talk about how comments are bad to use, bad to rely on, and should only be used to describe why something is being not done, not how. And for the most part I agree. As soon as a comment is written it becomes stale. It’s hard enough to get the time to update the code, much less updating the comment. With today’s integrated development environments with name completion and the like, there is no excuse for using abbreviated variable or function names in your code. This is not to say that variable names should go on forever, they should be as long as they need to be to express their purpose and NO LONGER!
’Fair nuff, no real problems here. Now, the Single Use Principle states that some “thing” should have exactly One purpose. This “thing” is either an object, class, function, some item of encapsulation.
Again, who can argue with that, makes sense.
Now, my annoyance
(c’mon you knew it was coming) So ok, we have these functions which end up being relatively small and easy to read as we’ve emplopyed single use and descriptive variable/function names this is a good thing. The downside is, you now have class files with many many many small functions and getting a big picture view of what is actually happening becomes impossible… Instead of spending all your time figuring out what code does, you end up diagramming the call mapping of your functions so you can find out what is really being called, in what order. All these small almost atomic functions become more time wasting to follow then before we employed our “Best Practices” …
Very disappointing folks. Got a good solution? Neither do I, but I suspect it comes in the form of more advances to the development environment. I would love to see expandable function calls in code so a simple expand click would show you whats actually going on without having to diagram it all out. I know visual studio has a code declaration window which is great but not quite what the doctor ordered.
At any rate, the best practices are worth it, but let’s not pretend they aren’t causing another, and perhaps larger, maintenance issue.
Regards!
Posted in Programming Related | Print | 2 Comments »
3. July 2008 by Monkk.
Diablo 3, ‘Nuff said!
Posted in Gaming | Print | No Comments »
3. July 2008 by Monkk.
So, you’re writing an application, and you break down the functional parts to more base layer services and utility assemblies, and now you want to create a new application and re-use some of your code.
My “go to” answer has always been separate assemblies copied to a global project bin and then adding references to the bins in whatever application needs them. For example:
“Application 1″ and “Application 2″ represent two applications that are re-using logic. The “Libraries”directory off the root represents the project directory housing “Library 1″ and “Library 2″ which are the assemblies being re-used, they build to their respective bin directories. The “bin” directory off the root is the global bin where the binaries from “Library 1\bin\” and “Library 2\bin\” are copied to for re-use by the applications.
In the above scenario, the Applications reference the libraries from “monkk.com\bin” and as new versions of Library 1 and Library 2 are released, they can replace the existing ones when required.
The problem with this type of solution is that often times your libraries end up building on each other to create more complex libraries and soon you find yourself in an endless series of updating the various libraries for any new feature necessitated by the applications and so can lead to updating Application 2 because Library 2 had a for Application 1… Not Ideal!
So, what to do, what to do?!?
Well a technique I’ve now come to employ for just such scenarios is project references. I know, simple how could I not have thought of this? Well I had, but for some reason I’ve been ignoring them because it just didn’t seem “right” because of how intimately coupled the assemblies and projects can become but truth be told, it’s so natural (after being forced to use it) I don’t know how I ever got along without it. I suppose the problem has been, when you use 3rd party assemblies, it’s just not an options, and if all your library assemblies are supposed to be stand-alone assemblies, shouldn’t referencing them both be the same?
Well no, it makes complete sense to modify various Libraries while working on Application 1, and likewise for 2. There are some areas for concern, such as not breaking Application 2 while modifying Application 1 and it’s Library 2 use. But with a good set of Unit tests for both applications and the libraries themselves, you can do this with less risk. And of course best practices for published assemblies come into play such as adding new function signatures instead of changing existing ones (of re-factoring the internals in the process.)
This obviously applies more to companies writing their own frameworks where the libraries stay internal. My point is this doesn’t really scale to mass consumer use due to support issues. In that case, as I’m sure you are, each binary is it’s own and the extra work of version management of the application used assemblies, but such is life and it’s what we’re paid for so, enjoy!
–
Regards!
Posted in Programming Related | Print | No Comments »