I have to go blogless for a while. No writing, no reading. I will be back for sure, but I don't know when.
[The .NET Guy]
I talked to him earlier and offered to take over planning on the Colorado techie meetup.
2:00PM at the RockBottom This Saturday (The 30th) -- This is still open to negotiation if that doesn't work for people, or I get dragged out of town this weekend. . If you can or cannot make it please comment here. Rock Bottom is right off the 16th Street Mall.
Tim Bray wonders if he should let his kid go into IT?
It's all supply and demand. Personally, I'm trying to get my son to learn Chinese. Why? Because China is going to be more and more of a world power and very few Americans learn to speak Chinese and those that do will have a great job being middle-men between Chinese and Americans.
[The Scobleizer Weblog]
This is unfortunitly also a issue that I am dealing with. As a matter of background, I am 26 years old, I have a B.S in Computer Science and a B.A in History which I finished last year. Unfortunitly, the company that I have been working for the last seven years is in bankrupcy right now. So this last week I have started doing the whole job search thing again. I have 3 years experience programming in Java and .NET (since the betas) and 8 years experience doing enterprise level Systems and Network administration. I might just have to throw all that away.
Why?
Because the job market still sucks despite the fact that the recession was shallower then anyone thought it would be and despire the fact that the GDP numbers come back stronger then expected everytime. Why? Part of it is pure economics. We are too productive. Productivity is the mortal enemy of headcount. If you are more productive, you need less FTE's to acomplish the same task. Even though the economy will probably grow somewhere in the mid-3% (which is impressive, esp when you note how bad Europe's economy is right now) we need a significantly higher number to ofset the fact that it takes less and less resources to acomplish old tasks.
There is also that last bugaboo which Infoweek screams about every week: Outsourcing. Is outsourcing a concern? Yes, and it will be until the next wave (just like it was a concern when the Japanese companies got involved with mainframes, and just like it was a concern when PC manufacturing went overseas.....) What is that next wave? I am still inclined to think something like PDA or wireless, but I honestly don't know.
Which brings me back to my original point. At this point I am seriously considering going and taking my LSAT's, getting a masters in Law at CU, and practicing IP law (hey, if SCO can get away with their shenanigans, why not me?). Hey, any of you know anyone that needs a good .NET programmer or IT wiz in Colorado or Georgia?
My last big frustration has been attempting to make it so that my CMS can render templates in the VS.net designer that look like the page being generated. I use a homespun derivitive of the MasterPages setup to do my templating. Unfortunitly, under the VS.net designer any attempt to do a Page.LoadControl(VirtPathToUser) results in a “object reference is null“ exception. (BTW, if you ever want to know how to debug a control in the VS.net designer, open up a second instance of VS.net with the same project, set a break point and then attach to VS.net. Works like a charm). Using a ControlDesigner, I can make it look pretty, but I can't load the template in anyway because it throws that exception. I may be SOL here. I also tried this with MetaBuilders awesome masterpages, and ran into the same problem. (I can not plug Metabuilders enough). Andy Smith has a pretty good blog, but he does not blog often enough ;-). My next step may be to try and manually create the objects this reflection, but I have not figured out how to get the .aspx file rather then the .ASPX.cs class. Anyone run up against this before?
However, there is also my new favorite ASP.net caching trick. I previously used the ASP.net Cache to store my data objects because my pages are either a) static when viewed by outside users or b) very dynamic when used by editors and authors. This is not a optimal solution because even storing your data objects does not give you the best performance boost. Rendering the page still means a complete trip thru the (sometimes expensive) ASP.net pipeline. ASP.net offers page by page caching which gives a even more substantial performance boost, but page caching tends to limit how dynamic pages can be. I looked for a way to programatically invalidate page cache from inside of ASP.net, but there was still the somewhat painful issue of postbacks and dynamic renders and making sure that you are only caching at appropriate moments. Then, I came across the (apparently little known) Response.Cache.AddValidationCallback. This method allows you to do cache validation on a request by request basis. Using this as well as the CachePolicy option it is possible to tell ASP.net to use a stored cache image of a page, ignore the page request (and render) or invalidate the request. You can even change the HTTP cache headers to cache pages longer on client boxen.
For example:
public void Validate(System.Web.HttpContext Context, object State, ref System.Web.HttpValidationStatus Status)
{
if (((VeronaPage) this.Page).Editing)
{
Status = HttpValidationStatus.IgnoreThisRequest;
}
else
{
Status=HttpValidationStatus.Valid;
}
}
You can also set Status to HttpValidationStatus.Invalid if you want to force re-rendering he page. You hook this up by adding the following code to your (local) Page_Load:
Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(this.Validate), null);
finally, this had a interesting note about useing pages other then Page for inheritence of ASP.net Pages:
http://www.msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/aspnet-pageobjectmodel.asp
Peter suggests that Colorado techies get together at a separate day and time, since he can't make it this weekend to the general blogger event this coming weekend.
I'm up for that. Let's pick a place and time. Greg lives on the south side of Denver, and I live in Elbert county (south east of Denver), so somewhere on the south side would be good if the others are around this area as well. Leave comments here if you are interested!
Update: By the way, if you're not a blogger but want to show up, feel free. I don't think we need to limit it to just bloggers.
[The .NET Guy]
Sounds cool. Anyone else from Colorado going to be around? (Boulder sadly, so south side is a bit of a trek)
Finished up my second and third large dot net projects. I have a brief respite to go actually look at new .NET technologies again. Any recommendations for new stuff to look at (new web services, one of the XML/object databases?)
j.p
Are you going to be at the PDC? Check out what Jeff Sandquist just did. I gotta add that to my weblog.
Hey, I wonder too if Dave Winer will be there?
[The Scobleizer Weblog]
I have to admit, the Microsoftians have been doing a great job hyping this. Of course, the fact that this is going to be 100% unaccessable to small independent contractors (like myself) who can't pony up the multiple K's that the trip and the admission is going to require will limit exactly how much impact that the PDC has. As for me, I will just keep weblogging and hope the new changes don't screw me too bad in the future. (And keep trying to get into the Yukon beta so I can port Verona over to a real CLR database)
According
to InfoWorld
That's pretty stunning. Even if SCO were right with their allegations that there
is SCO-owned IP in Linux (and I am not in the position to make any statement about
the rightfulness of that claim), $699 per processor is still well above and beyond
what would be their fair share †that pricing scheme looks more like this
is our OS, including everything that ships with it and that seems just plainly
wrong.
This reminds me of a similar high-profile case: the Unisys GIF license. They hold/held
the LZW patent and thatâ€s used in GIF. Of course, lots of developers found out
after theyâ€ve implemented and shipped GIF support and Unisys probably waited
for a critical mass to accumulate before they started enforcing licensing fees for
that patent in early 1995. (Side note from the Unisys
site: The U.S. LZW patent expires June 20, 2003, the counterpart Canadian patent
expires July 7, 2004, the counterpart patents in the United Kingdom, France, Germany
and Italy expire June 18, 2004, and the Japanese counterpart patents expire June 20,
2004.). While Unisys certainly didnâ€t make too many friends with that move,
they were initially asking something like ten cents to at most ten dollars per distributed
copy of any software package using the GIF format, if I remember right (the pricing
information seems to have vanished). I would think that looking at the SCO case, this
all of a sudden becomes very fair and reasonable.
[Still, the web-site fee of $5000 per site if you were/are using unlicensed (as in:
Unisys LZW patent licensing) software to create your GIFs, remains outrageous]
[Clemens Vasters: Enterprise Development & Alien Abductions]
Sad reality I suppose. I fear that if this trend of enforcing (insane) software patents is allowed to grow in the mind of lawyers, it will not be long before we (as comuter pogrammers and the companies that employ us) will be treated by the lawyers much as doctors are. Pinned up by lawsuits, sued over insanely supid and assanine things and then put out of business due to the legal hurdles that will be too difficult/expensive to overcome. The SCO lawsuit does not even attempt to claim any software older then two years ago, and yet they are demanding 10 times the amount of money that Redhat charges per software copy for redhat.
On the other hand, I suspect that there are some real enronmatics going on behind the scenes with the recent merges.
How's that for a dull title?
Either way. Two fresh, exciting articles for your ASP.NET dining pleasure. For those who can't get enough of caching, or of Steven A Smith, we have his ASP.NET Caching: Techniques and Best Practices article. This is now live at: http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/aspnet-cachingtechniquesbestpract.asp.
[Kent Sharkey's blog]
Actually, this reminds me of a question I keep hitting, is it possible to force a page entry out using the Cache API? For example, I have a single control that manages the state of a entire page. When that state changes, I want to invalidate the page, and fall back to a more dynamic solution. Any Ideas out there?
Ingo did spake:
Sometimes you might want to implement custom ImageList controls and encounter the fact that the .NET Windows Forms ImageList is marked as sealed. Instead of crying foul here, let's have a look at some of the reasons for this decision.
My latest article "Sealed is Good" shows you ...
... the reason for sealing ImageList.
... the reason why this is a good thing.
... the reason why unsealing it wouldn't help you at all.
And finally, the reason why unsealing it would demand a complete rewrite of all of System.Windows.Forms.
Have fun!
Clemens later added:
No. The keyword sealed conveys a very clear message that the class designer reserves the right to change the class so dramatically in a future release of the product that you would be tremendously unhappy if you had derived from it to implement your own functionality, once that new version comes along. Sealed says: This is going to change in a big way.
I agree that sealing GUI classes for performance reasons is probably a good reason to break traditional OO designs. But I have some reservations on applying them on anything beyond special use case classes. This is mainly due to the fact that I have seen some strange code that was sealed when it should not have been. I don't think that a lot of .NET developers are aware that you can seal single virtual methods and they seal a entire class when they really should only be sealing some specific method that you don't want futzed with. In most cases the methods that need seeling are end points where components are connected. (otherwise, just call a method non virtual or private and be done with it)
However, I do have one big gripe. I did a large legacy database project last year with had some strange timestamps. No problem thought I, extend DateTime to have a few pretty properties that did magic behind the scenes to covert to standard windows datetime. Plus with inheritence, I can databind to both winforms and ASP.net with a really simple set of code like:
ParDateTime T = new ParDateTime();
T.ParDate = // Some magic to get this from the database.
T.Months.Add(Today.Minutes);
Calender1.DateTime = T;
Nice simple and self documenting (Par is the name of the application).
Of course DateTime was a sealed class which resulted in a more convoluted set of code. Sealing classes make it harder (and dirtier) to add functionality. This leads to my general rule on sealing.
Never Seal Business or Logic Classes. Sooner or later you will want to extend them. If your object model really has nasty magic that requires you to seal a class rather then risk anyone deriving it, you might want to re-examine your design.
Something happens to make me really suspect that there are underhanded deals going on. SCO/Microsoft was a blatent attempt to prop up SCO taking on Linux. Microsoft insisted that AOL/Microsoft was not meant to kill compeitition, but to the surprise of no one, AOL just shut down Netscape. See
Here and
Here for more information. The browser has stagnated for the last three years because of lack of competition. Sad to see that it will probably remain so.
More Posts
« Previous page -
Next page »