Bruce Schneier in Secrets and Lies says:
"We're only a few generations from being able to record our entire lives -- in audio and video-- . . ."
This never occurred to me before.. it really is a defining thought. I have a feeling that it may only be a single generation. Yeah, in 30 years it may be possible, but it may be 60 until it can be done cheaply enough to make it practical for everybody who wants to.
I bet right now you could record all your audio conversations. With a pocket PC and a little innovation it would be almost trivial. I’m sure you could even do it with less. It’s not like there is not a lack of consumer targeted products for digital recording. Just imagine if you could ask yourself: What was I doing 15 years ago today and answer that question with a video of just what you were doing. What a powerful tool that could be.. for good and evil.
I prepared a lengthy entry, but considering events it seemed unimportant. One of the units that I served in is currently deployed. I'm not sure if they're in Iraq, but wherever they are, they are some of the finest people I have ever known. I appreciate the sacrifice they are making.
Nobody wants to avoid war like a soldier does, but when war happens, a soldier wants to be there. I salute them.
What is really happening when events are raised in .NET. How can you take control of their behavior? Drew Marsh clarifies events.
I often see people using string concatenation to create directory names. Like this:
string path = "C:\\data\\" + filename;
But there's a much better API:
string path = System.IO.Path.Combine("C:\\data", filename);
Not only does this take care of the whole, "Do I need a trailing slash?" issue, but if you specify an absolute path for the second parameter, it will just return the second parameter. That means that someone can enter "foo" or "C:\\temp\\foo" for filename, and it'll do what you'd expect.
Thanks Craig, that's a great thing to know! It amazes me how much stuff there is in the framework that I just have not encountered yet.
Sam Gentile writes:
In my day job, I have been doing quite a bit with RSS lately. Forgive me for not seeing the RSS light earler in its full glory, but RSS just rocks! Chief instruments in my journey have been Mark Pilgrim's most excellent What is RSS, and Dare's most excellent RSSBandit and MSDN article.
Yeah, I work for a very large company. We have lots of info that could be more easilly managed if we used RSS to subscribe to deltas. We have an internal repository of white papers and every week quite a few are published. The problem is: the website is buried deep in our corporate website. If they just exposed an RSS feed it would take under a minute to review the new articles and decide if anything we are interested in was published.
Scott Hanselman writes:
Managed Zen Koan
"One day as Sam was writing Managed C++, the Buddha called to him, "Sam, Sam, why do you not enter the runtime and write in C#?" Sam replied, "I do not see myself as outside. Why enter?"
Tim Marman wrote:
If you haven't already, though, I would recommend checking out Anakrino, an awesome open-source C# decompiler.
I can't agree more with this. I have a client who needs to have secure systems that can be audited at the source level to verify that the code meets security standards. Without the ability to get to the source code and verify certain implementation details the credibility of a system is difficult to estabilish.
The biggest problem that I'm finding is that, as an avid unit-testing geek, it can be difficult to test your controllers. I'm still playing around with a few ideas, but the basic problem is that your code will typically depend on ControllerContext, which depends on HttpContext.
Yeah, that's a real bummer, but shouldn't we factor most of what happens out of band and into buisness/data access components that are context neutral? That takes care of half of the problem at least. I do like your idea of creating and using a context simulator.
Justin is keeping the discussion about ASP.NET in the wire by blogging:
I REALLY like Mavrick.NET.
I like how a simple configuration file defines the flow of the site. My controller simple fills a model, sets it for the request, and returns what view should be shown. Simple and clean.
+1 on that I have been very happy with what I have seen.
I plan on doing a more thorough review (as soon as I finish up other obligations).
I really can't wait to get your thoughts and perspective on this.
I suggest you check it out. It is pretty easy to look through the code and figure out what's going on.
I have to second this thought. I think that the .NET side of the fence could really gain alot by adopting a framework like Apache Struts. We've already accepted ports of Java tools (Nant, NUnit), is it just a matter of time before we have a port of Struts as well?
Don’t get me wrong, I really like ASP.NET, but I think it has some serious problems. Brad Wilson mentioned that he had some issues with ASP.NET, and while he did not go into details, I would like to expound a little on what I have seen, what I like, and what I don't like. My biggest problems with ASP.NET stem from what I perceive are barriers of entry for allot of developers. Many developers coming to .NET for the first time are reformed VB developers, or new to development entirely. They need a system that they can understand quickly and use easily.
The first barrier: There is a rather complicated set of events that happen at the application and page level. To be an effective ASP.NET developer you must know the order of the events and what has happened before the event is fired. If you are unaware of when the view state is loaded, or the session state is available for use it is easy to get confused and frustrated, as to why your application is not behaving as you expect it to behave.
Second the way ASP.NET controls wire up and fire events is not transparent, neophytes to ASP.NET can really be thrown for a loop when they try to figure out what is really going on behind the scenes. When the system breaks, it can be hard to figure out just why it has broken. The HTTP protocol is not that complicated, why does ASP.NET try to hide the details of commands that are sent to the server via the browser?
The biggest problem though? There is not a simple and good reference architecture in .NET. Sure, there is IBuySpy, but it is just a sample site, not intended for people to adopt and use, and not very simple. The ASP.NET team should look at the success that Java has had in this space. I am a real Microsoft bigot, but I have to say, we have something to learn from Java developers. You do not have to go far on the WWW to find sites (not just rinky dink low traffic sites, we are talking large corporate and commerce sites) that are implemented using some modified form of Struts.
So what is my complaint? If Microsoft wants us to build multi-tier applications and have good separation of the data layer, the business layer, and the presentation layer, please give us design patterns, or better, a fleshed out framework that we can work in. When I build applications, I want to feel like I am writing the application, not fighting the development environment. All too often when doing something in ASP.NET the environment gets in the way. Is there a better way?
Thanks for visiting. My name is Ben Coverston.
I have been immersed in the nuances of the .NET Framework for over two years now. Before that I was a COM Acolyte. To be honest I didn't really know what I was getting into when I took Essential COM from Craig Andera at Developmentor in Torrance, CA.
Right now I am looking at alternative ways to use the .NET Framework and ASP.NET. After spending years avoiding Java (I did a little Java development back in '96) I have been forced to learn a bit of Java in the last few weeks, boy have things changed. I'll blog later about some of the things that I have been looking at, and the lessons I have learned from the Java camp.