Sign in
|
Join
Search
Erik Porter's Blog
Life and Development at Microsoft and Other Technology Discussions
Home
About
RSS
Atom
Comments RSS
Recent Posts
My Blog Has Moved
Bill Gates: Transitioning into the Future
Life at Microsoft
ASP.NET AJAX BUG: $addHandler Can't Attach to Element Inside an IFrame in Internet Explorer
CES: Bill Gates Leaving Microsoft Video
Tags
.NET
10
Adam Kinney
addHandler
ADO.NET
AJAX
ASP.NET
ASP.NET AJAX
Atlas
Authentication
Bill Gates
Blog
Bug
CES
Channel 10
Channel 8
Channel 9
CodePlex
Community News
Design Concepts
EvNetDev
Facebook
Flash
Flash Remoting
Gadgets
General .NET
General Concepts
General Software Development
IIS
Internet Explorer
JavaScript
Live
Mashup
Media Center
Microsoft
MicrosoftGadgets
MIX
MSR
Orcas
Other
Oxite
PDC
Popfly
Projects
Reflection
Rich Text Editor
Rory Blythe
Scott Guthrie
Silverlight
Slashdot
Smart Devices
Speech
SQL Server
TechFest
TechNet Edge
Tips
Tobin Titus
Vista
Visual Studio
WebServices
Whidbey
Windows Vista
WindowsForms
WindowsServices
WPF
WPFE
XBox
XNA
Yahoo
News
Erik on Twitter
Navigation
Home
Blogs
Archives
February 2009 (1)
June 2008 (1)
February 2008 (1)
January 2008 (2)
December 2007 (4)
November 2007 (3)
May 2007 (2)
April 2007 (1)
March 2007 (8)
February 2007 (2)
January 2007 (2)
December 2006 (2)
November 2006 (3)
October 2006 (2)
September 2006 (4)
August 2006 (1)
July 2006 (5)
June 2006 (2)
May 2006 (3)
April 2006 (2)
March 2006 (6)
February 2006 (3)
January 2006 (5)
December 2005 (7)
November 2005 (8)
October 2005 (13)
September 2005 (5)
August 2005 (9)
July 2005 (11)
May 2005 (2)
April 2005 (13)
March 2005 (3)
February 2005 (2)
January 2005 (3)
December 2004 (4)
November 2004 (5)
October 2004 (7)
September 2004 (2)
August 2004 (3)
July 2004 (11)
June 2004 (12)
May 2004 (5)
April 2004 (14)
March 2004 (9)
February 2004 (3)
December 2003 (4)
November 2003 (21)
September 2003 (3)
August 2003 (18)
July 2003 (24)
June 2003 (11)
May 2003 (13)
April 2003 (11)
Posted:
by
Comments
Don XML
said:
Erik,
Welcome aboard. We are going to have to figure out how to come up with a good mixture of our discussion list posts, and our blogs, or some way to mix the 2, and not lose the best parts of both.
Don XML
#
April 7, 2003 7:29 PM
Tim Walters
said:
Hiya HC,
Good to see you over here, we've bumped into each other quite a lot on the Flash boards, I had no idea you were a MVP too!
I was a MVP for Desk-Top-Support for a year, then moved onto Access for 2 or so years, then fell into inactivity for a while, keen to get back into it in areas like XML, .NET, SQL etc, but it's hard to find the time...
Look forward to seeing more of your stuff, sounds like a fun project you have coming up (did a similar one myself recently, if you have questions let me know).
Seeya,
Tim Walters
XML Evangelist
#
April 7, 2003 7:33 PM
Mark Levison
said:
Smart Clients hold much promise. But MS hasn't really given them the polish and effort they need yet. There are still alot of undocumented rough edges.
#
April 9, 2003 12:40 PM
Erik Porter
said:
Mark, I very much agree with you...just be patient! ;)
#
April 9, 2003 12:48 PM
julie
said:
Erik-
point HEARTILY taken - to me this was not about "not knowing what you are doing" (admittedly I didn't see that sentence). Just more finding better and better ways to do particular things. Everyone has a different definition of their business layer. I do a lot to my data before I return it from my data layer to my business layer. Sounds like (once again) you and I are on the same track in a lot of ways. This may be an issue of semantics. What ever it is- I had no intention in gettng in to name calling or criticizing. I am just always looking for good architecture ideas.
#
April 11, 2003 3:08 PM
Erik Porter
said:
dang, I'm sorry, I didn't want it to sound like I was actually accusing anybody. I'm not. It's just a general observation.
I guess saying towards the end that I overall agree wasn't enough to balance that comment, huh? sorry about that...didn't mean it that way! :)
#
April 11, 2003 3:10 PM
TrackBack
said:
HumanCompiler
#
April 11, 2003 5:46 PM
TrackBack
said:
The Challenge: C# to VB.NET Conversion Challenge : VB Defender
#
April 11, 2003 6:02 PM
TrackBack
said:
Framework : Jesse Ezell Blog
#
April 11, 2003 6:02 PM
TrackBack
said:
WebService Usage : Vibro.NET
#
April 12, 2003 3:45 AM
Darren Neimke
said:
Erik... love the idea about the Service that helps you synch your Favourites -- I've been after something like that for ages because I work from about 3 or 4 different locations.
Did you actually build that service? Was it a winner? Tell me more about it 'cos I could probably use something like that for managing the Favourites stuff in
DevBuddy
.
Actually, quite a bit of what you've talked about in this post is similar to what DevBuddy is out to acheive, I'll have to read up on the MyList stuff again -- isn't it a pity that Passport is so difficult (read expensive) to build into an app :-(
#
April 13, 2003 6:49 AM
Adam Kinney
said:
Either of you have any good links on Business layer archtecture?
We've been trying to figure out the best way to use an architect and any outside resources would be helpful. Thanks.
#
April 15, 2003 5:22 PM
Mike Harsh
said:
Erik, I'm anxious to see your sample!
#
April 24, 2003 11:22 AM
Adam Kinney
said:
Very cool. Definitley something to remember (Y)
#
April 29, 2003 11:25 AM
Martin Naughton said:
By default, all public Read/Write properties should get serialized.
Have you looked at the docs for the following Attributes:
DefaultValueAttribute
DesignerSerializationVisibilityAttribute
If you're still stuck, what is the problem you are seeing?
#
April 30, 2003 2:58 PM
HumanCompiler
said:
Yes, I've got regular serialization working, but I'm talking about editing a property at design time outside of the properties window, like if I have a DesignerVerb that fires up an instance of my editor for a particular propery, then the user hits OK and I set the Property to the new value, it does so, but only in memory. The changes don't get serialized and persisted, like if I did the same thing from a UITypeEditor. So that's the problem I'm running into.
#
April 30, 2003 3:31 PM
Jason Gaylord
said:
Thanks to Erik and everyone who gave input to my issue. I actually have created a utility to help install, uninstall, start, and stop a service. I will post the utility on my website and in my blog!
Thanks Again!
#
April 30, 2003 7:50 PM
TrackBack
said:
MyMail Mail Server : Jason Gaylord's Blog
#
April 30, 2003 8:26 PM
Brian said:
The trick to doing this is to use the TypeDescriptor class -- the designer's code generator and undo system are hooked into property change notifications, and the only way to trigger those notifications is to set the property value. So, say you're changing the Text property. Don't do this:
foo.Text = "Broken";
Instead, do the ever-more-verbose:
TypeDescriptor.GetProperties(foo)["Text"].SetValue(foo, "Fixed");
The property will code gen and correctly participate in undo.
#
May 1, 2003 1:03 AM
HumanCompiler
said:
Ok, this is where I get down and kiss your feet and say thank you over and over! So simple and I didn't see it!
Thank you again so much, that worked like a charm...now that I've learned my lesson, I will never do it wrong ever again!!!
#
May 1, 2003 2:44 AM
Marc Scheuner, Switzerland said:
Have you ever thought about creating a VS.NET plug-in, based on these services, which would allow me to enforce component naming? E.g. I'd like to have a plug-in where I could define that all buttons should be named "btnButtonX" (by default), all labels "lblLabelX" and so forth.
I'm a newbie to VS.NET/C# - I did something similar for Delphi before, and it worked really well. I was hoping Whole Tomato might incorporate it into their VisualAssist.NET, but that doesn't look likely either.....
Any hope? Thoughts? Someone done that already??
Marc
(m.scheuner@inova.ch)
#
May 6, 2003 2:42 AM
HumanCompiler
said:
I'd say that would definitely be possible. There's actually another Service that you can hook into (but I can't think of the name of it offhand) to grab the name that VS.NET automatically assigns. You could also probably override the Name that already gets tacked on automatically in the PreFilterProperties Event, but yes, I'd say this would have to be in a plug-in.
If I happen to find anything on the subject, I'll post it here or I'll e-mail you. Maybe someone else will remember the name of the Naming Service that is the service that comes up with default names.
I, personally, won't be writing anything like you mention as I have no need for it, but you might be able to do something yourself. There are tutorials on MSDN on how to create plug-ins. It's pretty easy. Good Luck! :)
#
May 6, 2003 2:55 AM
Datagrid Girl
said:
Hey, when did you get the idea that you were allowed to have your own opinions? ;)
#
May 11, 2003 12:29 AM
HumanCompiler
said:
*runs back to cave to program*
#
May 11, 2003 12:36 AM
DonXML
said:
Don't worry, there is no rush to get it out the door. They want to make sure it is done right, and they are also waiting for more .Net applications to be built.
DonXML
#
May 11, 2003 11:32 AM
Dave said:
I thought .NET 2.0 was supposed to be synced with Yukon, and the release after that (presumably 2.1) was supposed to be synced with Longhorn. I could be wrong, of course.
#
May 11, 2003 8:42 PM
Adam Kinney
said:
I agree with your disagreement. And I don't think it has to be done just for the "dummy" user. With all the different "Options" normally available in an application you can lose track of where everything is.
#
May 12, 2003 4:10 PM
Robert McLaws
said:
It is my understanding from various b0rg contacts that Longhorn may eliminate the Win32 API entirely, which would mean that the entire shell would be built on top of a managed code base, and would also mean that the entire API would be exposed to .NET. Whether that is true or not remains to be seen, but I have heard this from several different sources at MS.
#
May 12, 2003 8:08 PM
TrackBack
said:
HumanCompiler
#
May 12, 2003 11:38 PM
Andrew Stopford
said:
Hi Erik, nice to see :D
#
May 21, 2003 4:00 AM
DonXML
said:
Erik,
XML has its time and place. Overuse is worse than under utilization. Although I may forget that rule sometimes, I usually have someone around that will remind me. Flash has its place, just like any other technology. Forcing a technology to work in a place it wasn’t designed for will just lead to disaster, whether that technology is XML, Flash, or anyhting else.
DonXML
#
May 21, 2003 9:27 AM
HumanCompiler
said:
Hi Andrew! :)
Don, very true! I hope you didn't take offense to my little funny comment about you! I only meant it in a good way! ;)
#
May 21, 2003 12:54 PM
TrackBack
said:
HumanCompiler
#
May 22, 2003 8:50 PM
TrackBack
said:
Don XML Blog (not that Don)
#
May 22, 2003 8:50 PM
James Avery
said:
What about Transformers??? That show ruled.
#
May 22, 2003 11:11 PM
HumanCompiler
said:
You are so right, how could I forget Transformers!!! And what about He-Man???
#
May 22, 2003 11:20 PM
David Baakman
said:
Microsoft Research has a nice project about this subject: http://research.microsoft.com/barc/MediaPresence/MyLifeBits.aspx
#
May 23, 2003 8:45 AM
Adam Kinney
said:
Awesome. Looks like they took some notes from forums. Its silly how giddy I am too, over the custom emoticons. Should be fun ^_^
#
May 26, 2003 2:44 AM
Adam Kinney
said:
Sounds good to me. And of course I want to have the capability to go in there and do it manually! In the same way I would rather build a string in ASP.NET and set it to a literal than use a DataList.
I am not surprised at your opinion, it goes with your language choice ;)
#
May 26, 2003 2:52 AM
Gerald Bauer
said:
If you want to experience the future today, that is, build your UIs using XML, check out the Open XUL Alliance site @ http://xul.sourceforge.net
In case you wondered, XUL stands for XML User Interface Language.
#
May 26, 2003 6:31 PM
HumanCompiler
said:
Adam, but the point I was trying to make is that this won't be HTML, you should never "theoretically" need to edit the XML :P As for the language choice, I don't think that has anything to with it. It's just a general attitude that I apply to everything in life!
Gerald, thanx a lot, I will definitely be checking that out! :)
#
May 27, 2003 1:41 AM
TrackBack
said:
HumanCompiler
#
May 29, 2003 1:24 AM
Royo
said:
Cool! Thanks :)
#
May 29, 2003 7:11 AM
DonXML
said:
Erik,
Cool. I've downloaded it, and will be playing with it over the weekend.
DonXML
#
June 7, 2003 11:23 AM
JosephCooney said:
My brother Dominic is working on a mobilization framework for .NET applications as part of his Ph.D. Instead of serializing the UI you can serialize a whole thread and send it to another computer (providing they have the right stuff installed) where it will re-hydrate and continue running. He has a "mobliezed" version of notepad which I have seen him enter text into on his lap top, drag and drop it on his iPaq in network neighbourhood, where it appears and continues running with the same stuff on the screen. Obviously it is not limited to serializing UI but that is one of the coolest ways to demo it. Check it out here if you're interested...(appologies to my brother if I've in any way mis-represented his cool Ph.D project).
http://www.dcooney.com/mobile.html
#
June 7, 2003 3:13 PM
HumanCompiler
said:
Cool, Don! There's a lot more that could be done with it, but I hope you enjoy what's there! ;)
JosepheCooney, yah, your brother's project sounds really cool! I'll have to check it out. That thought (in one way or another) was crossing my mind too, as in, "why not just send entire apps over the net this way, so you don't have to deal with the security hassles of 'no touch' deployment'"...thanks for the link! :)
oh and btw, you can serialize more than just the UI (at least I think), as it's just using reflection and grabbing anything public, but it does have to be a project that has access to WindowsForms though, because it uses the Design Time support to figure out what should and shouldn't be serialized.
#
June 7, 2003 3:23 PM
Mike Gunderloy
said:
I took a look at XmlTreeView, because it would actually be useful in one of my current projects. However, it appears to be barfing on Tag properties when reloading. I'm getting "Value cannot be null" from somewhere deep inside the serialization layer. Here's a stripped-down XML that will (I think) trigger the problem:
<System.Windows.Forms.TreeNodeCollection>
<System.Windows.Forms.TreeNode>
<System.Boolean Name="Checked">False</System.Boolean>
<System.Windows.Forms.TreeNodeCollection Name="Nodes">
<System.Windows.Forms.TreeNode>
<System.Boolean Name="Checked">False</System.Boolean>
<System.Windows.Forms.TreeNodeCollection Name="Nodes">
<System.Windows.Forms.TreeNode>
<System.Boolean Name="Checked">False</System.Boolean>
<System.String Name="Text">Publish Names</System.String>
<System.Int32 Name="ImageIndex">-1</System.Int32>
<System.Int32 Name="SelectedImageIndex">-1</System.Int32>
<System.Object Name="Tag">pnlPublishNames</System.Object>
</System.Windows.Forms.TreeNode>
</System.Windows.Forms.TreeNodeCollection>
</System.Windows.Forms.TreeNode>
</System.Windows.Forms.TreeNodeCollection>
<System.String Name="Text">CopyBoy 2.0 Beta 1</System.String>
<System.Int32 Name="ImageIndex">-1</System.Int32>
<System.Int32 Name="SelectedImageIndex">-1</System.Int32>
<System.Object Name="Tag">pnlMain</System.Object>
</System.Windows.Forms.TreeNode>
</System.Windows.Forms.TreeNodeCollection>
I'll pound on this a bit myself, but figured you might have a quick "aha" fix :)
#
June 7, 2003 6:07 PM
HumanCompiler
said:
Mike, yah, sorry about that, it's not perfect ;) It seems not to do very well with object references and in the case of your TreeNode with the Tag with an object reference to your pnlMain, it obvious didn't do it right :P I'm still trying to figure out how to setup Object References :( So no, I have no quick fix yet for you, sorry!
I'd imagine that if there is interest in this, I can expand it to include assembly references (which would also shorten the XML, so you wouldn't have to put the full name every time :P), object references (that would point to another node or something like that so it wouldn't redefine the entire object again), etc...but for now I have some other projects I have to take care of. :-\
#
June 7, 2003 6:20 PM
Mike Gunderloy
said:
Hmmmm.....interesting. Because actually - the Tag property on the TreeView that I used to create the XML (via your SaveXML call) stores literal strings in the Tag property. These strings happen to be the names of Panel controls on the same form, but I'm not actually putting direct object references in the tag.
So, I hand-edited the XML to make the Tag System.String, and it now loads like a champ. Looks like the issue is on the Save side instead.
#
June 7, 2003 6:52 PM
HumanCompiler
said:
Interesting indeed...i think i know what the problem is...has to do with what type the Tag is...it's an Object Property, but obviously would allow you to store a string (or anything else) in it and I didn't take that into consideration...I'll have to think about the best way to approach that one as I'm sure it would happen quite often...glad you got it and thanks for making me think ;)
#
June 7, 2003 6:58 PM
TrackBack
said:
HumanCompiler
#
June 13, 2003 7:14 PM
James said:
I am having trouble with TaskVision, I have posted my problem in the forum
http://www.windowsforms.net/Forums/ShowPost.aspx?tabIndex=1&tabId=41&PostID=4655
#
June 19, 2003 11:17 AM
HumanCompiler
said:
Sorry to hear you're having troubles with it. You should join the workspace and help fix whatever problem it is you're having! ;)
#
June 19, 2003 2:18 PM
Adam Kinney
said:
Thanks for the link!
#
June 19, 2003 7:29 PM
Rachel Reese
said:
I know I'm 'behind' on reading blogs, but that is just wrong.
#
June 19, 2003 7:40 PM
TrackBack
said:
HumanCompiler
#
June 25, 2003 10:08 PM
Wallym
said:
So that is what is going on in Seattle this week...........
#
June 25, 2003 11:16 PM
julie
said:
very cool that you are part of that Erik. And ditto to what Wally said. I was wondering!
#
June 25, 2003 11:26 PM
Christian
said:
I'm no competitor with the XBox - my time doesn't allow being a game-profi ;-)
As the youngest you have a good chance to win :-)
#
June 25, 2003 11:35 PM
Jealous in Arizona said:
Lucky you! Enjoy it while you can!
#
June 26, 2003 12:10 AM
Tim Walters
said:
That does it, I'm now officially jealous!
Lucky dog!
#
June 26, 2003 12:56 AM
Jason Gaylord
said:
Can't wait to visit in July for the ASP.net 2.0 preview. Have fun!!!
#
June 26, 2003 12:40 PM
Adam Kinney
said:
Awesome. I was planning on going to PDC anyways, but now I'll be sure to be there. Have fun!
#
June 26, 2003 1:41 PM
HumanCompiler
said:
Thanks Adam! :) I'll be seeing you there in October then! ;)
#
June 26, 2003 3:02 PM
julie
said:
Erik-
It's fun to read what people are doing on campus. You even have the word ".NET" in there 3 times!
julie
#
June 27, 2003 8:48 AM
HumanCompiler
said:
Glad you find it interesting, Julie! Going to have to meet up wiht you too one of these days! :) Maybe PDC! :D
#
June 28, 2003 5:21 AM
Adam Kinney
said:
I'll try it out and see. THen I'll get back to you. Looks good in concept.
#
June 30, 2003 5:15 PM
TrackBack
said:
Datagrid Girl
#
June 30, 2003 10:07 PM
nidhogg at free dot fr
said:
Been there, done that. Check out my weblog, I posted something that is really close to what you described. (http://www.stup.org/PermaLink.aspx/6f23603b-04d4-4b1c-8c8c-0d06e1fb3d10) It generates a strongly typed class that accesses settings in a configuration file. Each time the file is modified, the class is regenerated. I used a custom settings file because I wanted it to be read/write and not interfere with the existing .config related classes but the functionnality is just what you described. And I thought about doing the same for resources too :)
#
July 1, 2003 6:52 AM
Phil
said:
I did a talk on introduction to COM Interop at my company. I was working on COM Interop, so I had some theory vs. practice types of insights for the audience. I definitely need to do this more as I was a little nervous.
#
July 2, 2003 3:47 PM
Adam Kinney
said:
Thanks again, man!
I'll actually give you sometime to prepare for next week, talks ;)
#
July 2, 2003 4:44 PM
HumanCompiler
said:
Hey Phil, I hear ya on the nervous thing. I used to get nervous too. I've only spoken in about 3 or 4 times now, but it's getting much easier already and I don't really get nervous anymore...fun times! :)
Adam, thanks! :P I've already spoken at every meeting but one! ;)
#
July 2, 2003 4:54 PM
Datagrid Girl
said:
Yeah, but where's your iambic pentameter? :p
#
July 3, 2003 2:29 AM
The Jeff said:
Uhhhh...from what I remember, they can't force you to do jack unless they have there product trademarked, and even then they have to trademark it before you registered your web address, but I am not a lawyer.
#
July 3, 2003 3:00 AM
federal-pound-me-in-the-*ss-prison?
said:
Anyone with sufficient time or money can cause you trouble, why not just pick a different name so you can enjoy your project and not headaches? If they're really interested in the domain they may be willing to reimburse you what you paid (only what you paid, don't want to sound like a squatter) so you can pick another without paying for two. Might be a good thing, give you a chance to pick something shorter and stickier (ugh did I just use stickier in a sentence?)
#
July 3, 2003 3:26 AM
sirshannon said:
I've been going through this set of events in my head for the last 2+ years. I think of a name that is
a) cool
b) not too cool for the uptight clients
c) easy to say and hear (no "write" or "right", etc)
d) not already taken
This is so hard that it seems impossible.
#
July 3, 2003 3:49 AM
Alex
said:
The issue is who started using the "mark" first. If the date you publicly started using the name predates their use, you can "normally" claim the name as yours. One wrinkle though is how "active" you have been with the mark.
If it was me and the name was important, I would reply to them stating the date you first publicly started using the name. State that if they do not have evidence of their public use of the mark which precedes that date, that you reject their claim to to the mark.
#
July 3, 2003 7:23 AM
James
said:
They need to have it trademarked but even then it doesn't mean much. Example we own a trademark on the phrase "Street Smart" under a specific category (goods and services).
Someone else can register that same trademark under a different goods and services as long as it doesnt confuse the consumer.
When it comes to domain names if you are not using the domain name bad faith (for porn or bashing the company, trying to sell it to them at some off the wall price...etc) then they can't do much.
I would check if they trademarked it, http://www.uspto.gov
I am not a lawyer or anything but I have registered trademarks and dealt with things like this.
#
July 3, 2003 8:38 AM
nidhogg@free.fr
said:
Found this while browsing codeguru. http://www.codeguru.com/cs_misc/GenResourceKeys.html. This guy implemented a custom tool that generates a class to access resources.
#
July 4, 2003 11:14 AM
HumanCompiler
said:
Thanks for the links! :)
#
July 4, 2003 12:32 PM
Adam Kinney
said:
Thought I'd pass this link along to you, Erik:
http://www.syncit.com/
#
July 4, 2003 3:28 PM
HumanCompiler
said:
Well I guess that's that...somebody beat me to it! :-\ Thanks, Adam!
#
July 4, 2003 11:24 PM
HumanCompiler
said:
Also, thanks everyone else for all your great comments! :)
#
July 7, 2003 1:33 AM
Mike
said:
I want MS to surprise me with this os. I dont want to see old dos code there from windows 3.0. If MS finally seperate the system from the rest if the os, in memory management and files I will pat them on the back.
#
July 7, 2003 2:45 PM
Jesse Ezell
said:
DB is definately the way to go. There is a very cool project that I have been involved with (http://www.articulateglobal.com) over the past couple months, and we debated this endlessly during the initial architecture discussions. I finally won out under the condition that we would provide an implementation of the file system interfaces that used the disk at some later date... however, there hasn't been a single request for this yet, so looks like we might not do it after all. This is very nice for me, because the file repository for the platform is very complex even without the added burden of keeping track of all those uploads on the disk.
The DB is much nicer for server farms, etc. In the end, you should cache the stuff on the web server's disks anyway, instead of pulling it every time, but that is a relatively painless process (like 5-10 lines of code max). If size is a problem, you can also compress lots of things before putting them in the DB, and then decompress when you write to the cache, and it can speed up the transfer time from the DB.
In any case, I like the DB approach a lot.
#
July 9, 2003 2:49 AM
HumanCompiler
said:
Great points, Jesse, thanks for that! And I totally forgot to mention caching...definitely the thing to do...thanks for the great comment! :)
I definitely like the DB approach too! ;)
#
July 9, 2003 2:53 AM
Kenneth LeFebvre
said:
I just finished up a project where we stored people's driver license photographs in the database, and we found it to be extremely handy. With SQLXML on the front of our SQL Server database, we were able to use the "dbobject" virtual name in SQLXML to link directly to the photograph in our web pages. Caching the images on the web server wasn't really an issue for us, since our web server is on the same machine as the database.
#
July 9, 2003 3:16 AM
rick
said:
I've been running some personnal tests with this, and from what I'm getting it's a *lot* faster to use the filesystem.
I'm just writing a 170k file to a local MSDE database and the results are not encouraging. Am I way off mark, or is this speed not an issue when you factor the benefits?
#
July 9, 2003 4:48 AM
Kenneth LeFebvre
said:
I am not a DBA, so I can't speak to what optimizations were done on our SQL Server, but we were using SQL Server Enterprise Edition on Windows 2000 Advanced Server. I'm guessing that is significantly faster than MSDE... :)
Plus, we have thousands of photographs to deal with. The more files that have to be handled in a single folder in the filesystem, the slower it gets. I'm sure there are ways to hack around these issues (like building a b-tree with subfolders)...
#
July 10, 2003 2:46 AM
TrackBack
said:
HumanCompiler - Erik Porter Blog
#
July 10, 2003 5:08 AM
John Ashcroft
said:
I have a job for you son. You must hate privacy as much as I do.. muhahah!
#
July 10, 2003 6:13 AM
HumanCompiler
said:
hahahahaha! :P
#
July 10, 2003 6:14 AM
josh said:
Reminds me of the movie Minority Report. In case you haven't seen it, in the movie a scan of your retina is what the world uses to identify you. Talk about a roaming profile...
#
July 10, 2003 2:11 PM
HumanCompiler
said:
Yes, great movie! (y)
#
July 10, 2003 2:43 PM
cathal said:
unfortunately with the advent of IPv6, and the massively increased number of IP's available, i suspect everyone will be given a permanent IP at birth just like a social security number, as it will rid the world of this pesky internet anarchy.
#
July 10, 2003 4:03 PM
Bruce
said:
I think everyone should be able to have multiple IDs (multiple personalities? <grin>). Each one would expose a different set of personal information or capabilities. I'd even like to be able to lie in this data, with certain legal caveats - I might use the ID of a 35-year-old grandmother of twelve on Everquest, but be legally liable if I used that persona to open a bank account.
p.s. I am not, actually, a 35-year-old grandmother of twelve.
#
July 10, 2003 10:03 PM
Greg
said:
I am using V 1 with enhancement. Any ideas if there is a 'differences' list anywhere between 1 and 2?
#
July 11, 2003 4:02 PM
HumanCompiler
said:
Hi Greg, I posted an update to this entry with the changes from V1 to V2
#
July 11, 2003 4:26 PM
Greg
said:
--Support for committing updates to a DataSet back to the database
This is exactly what i added to V 1.0. I am curious to see how they coded this as we build custom stored proc names off the DataTable names.
#
July 11, 2003 7:05 PM
HumanCompiler
said:
That's exactly what i added in too and yes...same here...curious to play and see how they did it.
#
July 11, 2003 7:06 PM
Duncan
said:
Although I am regarded as a crankcase in the office for this I prefer:
Private Function GetUserAddress(ByVal UserId as GUID) As UserAddress
End Function
where UserAddress is a class that has a .ToString method. This is because even though a user address is a string not every string is a user address :. a bit more type safety is introduced.
Just a thought,
Duncan
#
July 15, 2003 8:13 AM
Alex Lowe
said:
Here is a more detailed list of the events in the page life cycle if you are interested....http://aspalliance.com/aldotnet/examples/plediagram.htm.
#
July 16, 2003 12:06 AM
HumanCompiler
said:
Great, thanks, Alex! I'll put that in an update to this post! :)
#
July 16, 2003 12:16 AM
Mel Grubb II said:
Yup, me too.
I use DirectCast all the time, especially when a parameter had BETTER be of a certain type. For example. I have a treeview in which the Tag property of every node holds an ArrayList of information about that node. In my code, I DirectCast the node.Tag property to an ArrayList because if it's NOT an ArrayList, then I've got serious problems. I WANT the program to crash if there is not an ArrayList in that Tag because it's a fundamental assumption I've made about the way my TreeView is going to work.
#
July 16, 2003 2:31 PM
Steve
said:
Sounds exactly like how I feel most of the time. I've put some thought into going out on my own but never feel like the time is right. How's it going for you? How'd you make the leap? Best of luck!
#
July 19, 2003 5:56 PM
HumanCompiler
said:
Well, I'm really only making enough to survive, but right now that's all I care about, because I also get to sit around and learn new stuff whenever I damn well please and that is soooo nice! So yah, not the greatest right now, but enough not to be homeless. A lot of the work I get is from friends and networking with people. I give presentations, am starting to do some writing, etc, networking with fellow MVPs, it all really helps out. Plus, before I quit, I had quite a bit of cash saved up! ;) I'm so spoiled and lazy, it was more of a "I must quit now...being poor is less important than being happy" Actually though, probably 75% of the problems were actually with the company itself, not the way I like to work. That was a factor, but a small one and just an added bonus that I picked up for leaving :)
#
July 19, 2003 6:01 PM
Scott Mitchell
said:
I do a bit of consulting every now and then, but it's more for "pocket change" than anything else. Anywho, some colleagues of mine do full time consulting and from talking with them I can see the importance of networking, as you point out, Erik. Speaking at LUGs, conferences, teaching, training, etc., are all great ways to get out there and get to know people who can (hopefully!) set you up with jobs.
Good luck in your endeavors.
#
July 19, 2003 6:49 PM
Robert McLaws
said:
Well, <i>I</i> always thought you were sexy...
Wait, I meant Trinity.... aww crap.
#
July 20, 2003 1:33 AM
HumanCompiler
said:
hahaha, I was originally going to say "as long as I don't have to kiss a man", but that sounded kind of bad, but hey, since you went all out, why not? :P mmm, k! :|
#
July 20, 2003 1:36 AM
Steve
said:
Yeah, I guess I need to work on piling up loads of cash before thinking anymore about it! I think its the type of thing everybody would like to do, I mean let's face it who likes having somebody else tell them what to do. I can see some serious perks on both sides so I'll just have to see how things pan out. For the time being I'm pretty happy where I am so until I get unhappy or run into an awesome opportunity I guess I'll have to keep listening to my boss.
#
July 20, 2003 4:27 AM
TrackBack
said:
HumanCompiler - Erik Porter Blog
#
July 27, 2003 9:42 PM
Robert McLaws
said:
My problem was twofold: a) I could not easily return a value by a string instead of by an index. b) all I was doing was name/value pairs anyways, and inheriting from NameValueCollection allowed me to accomplish what I needed to. c) I really didn't want to spend the next three days trying to figure out how it worked when really the NVC did what I needed it to do without compromising my design.
#
July 27, 2003 10:55 PM
HumanCompiler
said:
Gotchya, well, you guys gave me an excuse to blog about something I do in almost all my projects. ;) Hopefully someone will find a use for it! :)
#
July 27, 2003 11:00 PM
Adam Kinney
said:
That's what mine look like. The first time I actually made typed collection, I didn't know about the collectionbase class. That was a waste of typing. Now I my code looks pretty similiar to yours for typed collections.
#
July 28, 2003 1:25 PM
Rob Zelt
said:
The other thing that I think is important to mention regarding Strongly Typed Collections is details about Implements IBindingList to allow use with datagrid controls.
#
July 30, 2003 8:18 PM
HumanCompiler
said:
True, very good point, Rob. And actually, not just DataGrids, but everything that supports DataBinding in WindowsForms
#
July 30, 2003 8:21 PM
Jesse Ezell
said:
As Juval points out on the latest .net rocks, C# is aimed at developers who are more concerned with longterm matinence costs, VB is aimed at devs who want to sling out code as fast as possible. I guess we know which camp you're in ;-).
#
July 30, 2003 11:25 PM
HumanCompiler
said:
Absolutely not!
I just don't like to do everything the hardest and slowest way possible!
#
July 31, 2003 12:04 AM
paul said:
no comments
#
August 2, 2003 4:06 PM
Jerry Dennany
said:
So, you are a presenter at user groups? That's pretty cool, and I think that takes guts. Why do you present, though? I understand what the audience gets out of it, but what do you get out of it?
#
August 3, 2003 11:56 AM
TrackBack
said:
HumanCompiler - Erik Porter Blog
#
August 4, 2003 12:54 AM
HumanCompiler
said:
Here's your answer! ;)
http://weblogs.asp.net/eporter/posts/22377.aspx
#
August 4, 2003 12:56 AM
Damian
said:
Great post!
It's always good to see someone with a passion for helping others. One of the things that the opensource community has over the MS developer community is the level of Altruism so it's always good to see someone within the MS world that actually does things for the greater good.
The other benefit you would be getting is a much deeper understanding of the topics you speak on, whether you realise it or not. I have found with writing articles, I may have an understanding of a particulat topic, but to prepare for the article I do a bunch more reading and experimenting so that I (hopefully) won't get caught out. In the process of writing the article I learn a hell of a lot more than I did before.
Thanks for putting it out there
#
August 4, 2003 1:37 AM
HumanCompiler
said:
You're very welcome and thank YOU for the nice comments and making another great point that I totally forgot about *thumbsup*
#
August 4, 2003 1:40 AM
Jerry Dennany
said:
Thanks for the response!
#
August 4, 2003 1:42 AM
Anand
said:
And preparing for the session makes you do that article reading that you had been postponing for the last 1 week..:-)
On a serious note, I also run a group and usually am short of speakers. So I study up a new area to do a session and thus I am forced to keep learning, something I would not have done in a normal course of time.
When people ask questions during a session, you start to look at different perspectives of a problem. This is something that really makes doing a session interesting and a learning experience for me.
#
August 4, 2003 3:41 AM
Tosh Meston
said:
I was thinking it would be cool to have some kind of API into the TV so that I could run a tool like that in Duncan MacKenzie's article
"Want to Know What I'm Listening To?"
that when I post a blog entry it would say something like "Watching Harvey Birdman on Cartoon Network". I'm ready too.
#
August 4, 2003 4:49 AM
HumanCompiler
said:
:o That would definitely be cool! I love brainstorming and speculation! ;)
#
August 4, 2003 4:51 AM
Brian Desmond
said:
Use the services as wrappers to other layers - that way you can either call the code directly from layer n, or call the service, which in turn calls layer n.
--Brian Desmond
#
August 5, 2003 5:12 AM
HumanCompiler
said:
Good suggestion, Brian. That's actually what I am doing. I was just thinking it would be nicer for each interface to call a common "wrapper". Only thing I'm worried about by doing this is if there are any "complications" I'm not aware of.
#
August 5, 2003 5:17 AM
Eric Landes
said:
We haven't specifically designed this way, but I believe many of my web Services are basically that, a wrapper to other functions. However, we were talking about remoting what we wanted to put into a webservice, then if we had to wrapping a webservice around that.
Now I don't have any experience in remoting, so I don't know if this works, but it has been suggested here. Any thoughts if this would apply to you?
#
August 5, 2003 2:35 PM
Alex Hoffman
said:
Didn't you actually think of this a long time ago? - http://weblogs.asp.net/eporter/posts/5422.aspx
Take another look at http://weblogs.asp.net/ahoffman/posts/5401.aspx
#
August 5, 2003 8:40 PM
HumanCompiler
said:
Eric, yah, sorta...I believe, although I'm pretty unexperienced with Remoting myself, that it and WebServices are at the same "layer" per say and adding that would actually add more of a load to my application (at least I think so) as what I'm proposing is to actually just reference an assembly directly.
Alex, the specific detail I'm talking about is referencing the WebService Assembly directly (not making any WebMethod calls over the internet) and calling the functions directly also. I don't see in the post you referred to any mention of that.
#
August 6, 2003 4:08 AM
Alex Hoffman
said:
Yours is exactly the scenario that my comments address. It says that program (business) logic should be separate from the web service itself
By doing so, one can directly address the logic through a web page, or expose the logic through a web service, or expose it in any other way one might want.
Best practise says that a web service should typically only implement the "service interface" (business facade) that offers differing security, formats, protocols, exceptions etc. to different groups of users.
#
August 6, 2003 4:51 AM
Alex Hoffman
said:
Actually, reading my previous comment - I sound a bit too pedantic - sorry that wasn't my intention - just a looooong day at the keyboard :)
#
August 6, 2003 4:53 AM
TrackBack
said:
#
August 6, 2003 5:00 AM
HumanCompiler
said:
Not a problem, don't worry about it, Alex! :)
http://weblogs.asp.net/eporter/posts/22683.aspx
#
August 6, 2003 5:01 AM
Eric Landes
said:
Eric,
If you reference your WebServices DLL, assuming that you have designed the way Alex suggests, can't you reference standard classes that your webservice uses? But it would be better if those were in a seperate assembly entirely, no?
Eric
#
August 6, 2003 10:39 AM
HumanCompiler
said:
Yes, Eric, that's what I'm now doing if you refer to the new entry I linked to.
#
August 6, 2003 3:06 PM
Jacob said:
In line with Damian's comment, having taught and tutored a lot through college, I have found that there is no better method to understanding material than to teach it to someone else.
#
August 6, 2003 3:15 PM
HumanCompiler
said:
Great points guys! :)
#
August 6, 2003 3:15 PM
TrackBack
said:
#
August 6, 2003 6:44 PM
Garrett Fitzgerald
said:
"What if you woke up and..." Wasn't that an episode of Babylon 5? :-)
#
August 6, 2003 7:18 PM
TrackBack
said:
#
August 7, 2003 2:59 AM
TrackBack
said:
#
August 7, 2003 3:02 AM
Adam Kinney
said:
I think this is a start:
http://www.bloggingnetwork.com/Blogs/
Yeah I agree, I think we'll see this catch on more mainstream and not just reserved for tech heads and school kids.
#
August 7, 2003 3:13 AM
Darren Neimke
said:
hmmm, pregnancy; birth, child raising.... gimme 3 weeks and I'll let you know ;-)
#
August 7, 2003 3:22 AM
Darren Neimke
said:
BTW... did you see my entry (of about 2 minutes before you posted this)?
http://weblogs.asp.net/dneimke/posts/22911.aspx
#
August 7, 2003 3:28 AM
HumanCompiler
said:
Yes I did actually (as did Adam) and checked it out...really cool for sure! I was actually thinking about posting a link to it, but decided not to because I was thinking more of a "category network" sort of idea, so it doesn't matter where your blog is, there could be a central feed you could get at by category and see everything from every blog, etc...unless there's something i'm not getting about your link...still a cool link for sure! :)
#
August 7, 2003 3:44 AM
Darren Neimke
said:
No nothing especially important about it; I just thought that you were probably saying what I was thinking... well maybe anyway.
Kinda wierd huh? :-)
#
August 7, 2003 3:48 AM
HumanCompiler
said:
Yah, maybe it's a new side effect of blogging. All those thoughts people have at the same time will now become more apparent as more of our ideas get out on the table ;)
#
August 7, 2003 3:49 AM
Jonne Kats
said:
I totally agree with you. HasChanges should be a property. If it's a method returning something, it should start with Get.
#
August 7, 2003 4:49 AM
TrackBack
said:
#
August 7, 2003 5:41 AM
Jonne Kats
said:
I agree with you again... I'm not a database guru, but i've thought about db naming conventions and i always use plain ID as the row identifier in tables. But hey, maybe we're both freakin' idiots....
#
August 7, 2003 6:13 AM
TrackBack
said:
#
August 7, 2003 6:55 AM
Mads Nissen
said:
They might have some plans to-, or have deprecated funcionality for passing in a TableName in the dataset in which to check for changes. As it stands, it should definately be a property.
#
August 7, 2003 7:03 AM
Nathan said:
This line got me thinking:
For i As Integer = 0 To MyData.Count - 1
If Count = 0 Then you are going to end up with an error in this loop. What is the best way to avoid this problem?
NM
#
August 7, 2003 7:21 AM
Paul Laudeman said:
I'd think that it has more to do with what goes under the hood when you call the HasChanges method. I read somewhere (can't recall immediately) that properties should only be used as an access mechanism to class level variables. Any property that has to do processing work behind the scenes to return a value should be designed as a method instead.
#
August 7, 2003 9:40 AM
Darrell Norton
said:
From a Data Architect standpoint, unless you have a comprehensive, accurate, online data dictionary (I guarantee at least 99% of systems do not), keeping the column the same name helps for consistency. Maybe with the rest of the rules that you follow for database design it would work, but imagine someone coming in for the first time. CustomerID and ID are the same fields? How do I know what other fields are named differently but actually represent the same data? As a new person, you would not without going through the data extensively.
#
August 7, 2003 10:38 AM
Patrick Steele
said:
Converting bad VB6 code to anything will get you bad code... :)
The VB6 sample could have been made better by doing the ReDim *before* entering the loop since you know how many items are in the loop:
ReDim MyArray(MyData.Count - 1)
For i As Integer = 0 To MyData.Count - 1
Of course, like Nathan said, you want to check for a zero MyData.Count before doing any of this.
#
August 7, 2003 11:06 AM
TrackBack
said:
The Ides Of Marc Archives
#
August 7, 2003 11:11 AM
josh said:
Just for grins I made a sample app and used Reflector on it, so I could decompile it to see what the VB compiler is doing with ReDim. Very, very inefficient ;). Now, if only we could convince Microsoft to drop the Microsoft.VisualBasic namespace and force every language to use the core .NET framework .....
#
August 7, 2003 11:16 AM
Justin Bigelow said:
What I don't agree with is that this post seems to imply a surrogate key for the table (usually an identity) is always in order. While this may garuantee uniqueness it's debatable whether a surrogate is better than a natural key (an argument among DB people on the scale of VB.NET vs C# or .NET vs Java or peanut butter vs jelly). A compound natural key could preclude an ID field altogether.
#
August 7, 2003 12:04 PM
Matthias Cavigelli
said:
This blog entry is very similar.
#
August 7, 2003 12:31 PM
Jesse Ezell
said:
A table is better represented by a C style struct than a class. This is where the difficulty comes in. Classes can have getters and setters, dynamic arrays, built in logic, etc. Tables can't (well, at least not without a lot of work that 99% of people aren't going to do for obvious reasons). So, your table doesn't always map exactly to your class, even though it might map pretty well to the fields in your objects.
In any case, I prefer using the long version (CustomerID). A lot of this is probably just upbringing, but something in my mind tells me it is better when you are doing a join or something and you end up with multiple ID fields (ie. Order->LineItem... if you use ID, then you have to use an "AS" statement to rename the IDs to OrderID and LineItemID anyway).
#
August 7, 2003 1:37 PM
HumanCompiler
said:
Ok everyone, good points...it was early in the morning, I didn' think through what a "good" example would be, but you're missing the point at hand here! :P
#
August 7, 2003 1:39 PM
HumanCompiler
said:
Mads, that's a good point, never thought of that!
Paul, that's also true, but quite honestly, I (maybe I'm the only one) think the the person who makes the Class is less important than the person that's actually using the Class. Maybe it's just me, but I think it's better to develop the class with your end user in mind, not you, the one creating it.
#
August 7, 2003 1:41 PM
HumanCompiler
said:
Darrel, "ID" would be just as descriptive as it would always be in the context of "Customers".
Justin, I wasn't implying that at all and in fact I even put in parentheses saying "(not always though)" because quite often the identification as you mention is many different keys combined into one. I was just picking an example for my argument and went with it.
Jesse, I'm talking purely structure...not that a Class is the same thing as a Table...but... ;)
What about ObjectSpaces? And remember, I'm not talking code or techie talk here...purely conceptual.
#
August 7, 2003 2:00 PM
TrackBack
said:
#
August 7, 2003 5:12 PM
Dave Schwinn said:
I know what you mean about msdn's feeds. I can't find the page that lists all of their feeds either. Fortunately, I have them saved:
http://msdn.microsoft.com/rss.xml
http://msdn.microsoft.com/netframework/rss.xml
http://msdn.microsoft.com/security/rss.xml
http://msdn.microsoft.com/vbasic/rss.xml
http://msdn.microsoft.com/vcsharp/rss.xml
http://msdn.microsoft.com/visualc/rss.xml
http://msdn.microsoft.com/vstudio/rss.xml
http://msdn.microsoft.com/webservices/rss.xml
The thing that really drives me crazy is that none of msdn's feeds are sorted chronologically. EVERYONE elses is. EVERYONE!!! Shesh... I'm writing my own ASP.NET weblog reader and I'll have to include code to sort the log just for msdn...
<grrr>
#
August 7, 2003 5:17 PM
Adam Kinney
said:
I will admit I used to use just "ID" for everything (as you know), but now I've changed my convention.
This is the "Customer" table.
This is the "CustomerID" field.
Customer.CustomerID
Since you can have multiple "ID" fields, it sounds less obscure to say "InvoiceID and CustomerID"; instead of "InvoiceID and THE ID".
I don't know its just preference I guess.
#
August 7, 2003 11:45 PM
Adam Kinney
said:
Hah, good glad you found it ("Just Published" Feed)!
Thanks for the entertainment, you "big idiot" ;)
#
August 7, 2003 11:48 PM
TrackBack
said:
#
August 8, 2003 12:24 AM
TrackBack
said:
#
August 8, 2003 12:56 AM
TrackBack
said:
#
August 8, 2003 12:56 AM
Richard Tallent
said:
One reason there aren't many about expectant mothers: the turnaround time from getting someone up to speed until they have the kid and aren't interested / don't have time for it.
#
August 8, 2003 1:01 AM
Tim Walters
said:
I must admit I've been guilty of doing the "tbl" prefix a few times myself... it shows my MS Access legacy (used to be an Access MVP)... in there you had to prefix tables with "tbl" and queries with "qry" so you didn't get naming conflicts, as your form (which often had the same name again but with "frm" prefix) would always refer to a query for it's data as it's sorted and aggregated etc.
In SQL-Server it's not that big of an issue, as long as you're naming your SPs well.
Thanks for another great post HC!
#
August 8, 2003 1:17 AM
Scott Mitchell
said:
There is a tight relationship between databases and OOP. In fact, in the 80s there was a push for a database technology referred to as ODL, or Object Database Language. ODL is used to describe the schema of OODs - object-oriented databases. There is even a query language for OODs - OQL.
OODs died out in the 80s, due in large part to traditional RDBMS's being much more efficient. However, I wouldn't be surprised to see a revitalization of this in the near future.
#
August 8, 2003 1:23 AM
HumanCompiler
said:
Glad you enjoyed it, Tim! Good to see you admitting you did that and thanks for the info on why you did it...very interesting...I almost feel like I'm at an AA meeting or something! :P
According to the patterns of my other recent entries though, the next 5 people will be leaving comments that they very much disagree and as always that I'm a big idiot! ;) Ok, nobody ever really says that, but hey, I'm a humble guy! weeeeeeee
#
August 8, 2003 1:23 AM
Scott Mitchell
said:
OH MY GOD. I programmed TP 7.0 in DOS in high school too! :-) QuickBASIC in junior high, and GW-BASIC in elementary school. Neat-o.
#
August 8, 2003 1:24 AM
HumanCompiler
said:
Thanks for letting me know, Adam! :P
Scott, you betchya...I wouldn't be suprised either...it's those reasons why I originally thought of posting this entry... ;)
#
August 8, 2003 1:28 AM
Phil Scott
said:
Pretty much the only naming convention I use is putting View at the end of views. Hard to tell the difference between a view and table in a select statement.
#
August 8, 2003 1:30 AM
HumanCompiler
said:
True, Phil, but does it matter if it's a Table or a View? ;)
#
August 8, 2003 1:32 AM
HumanCompiler
said:
Man, small world...you didn't happen to use VB4 in high school too, did ya? ;)
#
August 8, 2003 1:33 AM
Richard Tallent
said:
Good article. My comments on this were a bit long, so I linked to you from my blog (entry linked to my name)...
#
August 8, 2003 1:36 AM
Scott Mitchell
said:
No, I didn't do any windows programming until 1998. That's when I first learned ASP, and, 9 months later, started 4GuysFromRolla.com. The rest, as they say, is history! :-)
#
August 8, 2003 1:42 AM
Ron Green
said:
Well, I'm not here to tell you you are a big idiot. Actually I really appreciate the posts as they make me question why I do some of the things I do.
Thanks.
#
August 8, 2003 1:42 AM
HumanCompiler
said:
And quite a history it is...thanks everyone for their comments! :)
#
August 8, 2003 1:46 AM
HumanCompiler
said:
That's awesome right there...go Ron! :)
#
August 8, 2003 1:49 AM
Richard Tallent
said:
I used to use "t" for tables and "v" for views, but now I only use a prefix on views ("v") and on stored procedures ("st"). I use "st" rather than "sp" on stored procedures because of the problem mentioned by Phil.
#
August 8, 2003 1:57 AM
Scott Mitchell
said:
I would encourage you to use an abbreviation for all of your objects - tables, views, sprocs, etc. - for an appliation. It helps with migration and deployment, esp. if you are building an application that others will use.
For example, the .Text blogging software prefixes everything with blog_. The ASP.NET Forums, IIRC, prefix everything with forum_. Good to handle potential naming conflicts for those who import your schema into their own database with existing objects. (For those who are using a Web hosting account, creating a new database for the project is often not an (affordable) option.)
#
August 8, 2003 2:22 AM
HumanCompiler
said:
That's a really good point. I'm in a hosting environment and do that with my tables, views, etc
Man, maybe I'll have to make up another entry just of everybody's recommendations to have in one spot!
#
August 8, 2003 2:28 AM
Duncan Mackenzie (MSDN)
said:
Sorted? Why would you want them sorted by date? Isn't it more exciting to have to dig through the whole list looking for the newest entries?
Seriously though, I wouldn't put too much time into fixing that particular problem, I have it on good authority that it will be fixed in the next update to our feed generating code.
#
August 8, 2003 3:20 AM
HumanCompiler
said:
Thanks for those, Dave!
Anytime, Adam! I don't mind being the village idiot! ;)
Awesome, Duncan...thanks! :)
#
August 8, 2003 5:52 AM
Jacob (MVP) said:
We organize our stored procedures by function and that is reflected in the name. If it is a proc used by an engine, then the prefix is bsp_, if it is for a GUI, then it is usp_ui_ and all others are usp_ . As for Views, we preface those with uv_ .
#
August 8, 2003 11:36 AM
AsbjornM said:
*raises hand*
Yeah, I prefixes tables with tbl.. that is, physical tables. I hate bracketing tables/fields with [], so therefore I prefix.. I even prefixes fields.. vchName, intOrderID etc.
But, what is the problem with this?, I keep this only on the database, uses sp's to access the tables (get/set/delete sp's etc), and then I have an tind data-access layer wich uses typed datasets, and there I use normal fieldnames, tablenames etc, like Order, ID, Name...
well..
#
August 8, 2003 5:48 PM
Christian Kuendig said:
Erik,
you wrote:
> Paul, that's also true, but quite honestly,
> I (maybe I'm the only one) think the the
> person who makes the Class is less important
> than the person that's actually using the
> Class. Maybe it's just me, but I think it's
> better to develop the class with your end
> user in mind, not you, the one creating it.
well, I agree with Paul and you. But especially because it's a methode one can imagine that there is quite some work going on inside it, so one may think twice before making extensible use of HasChanges() - I mean in loops and things like that... maybe one better puts the result into a local variable and instead of calling the methode each time, one uses the variable.
With a property, I wouldn't do so, because I expect the JIT to inline the call to the get_PropName and therefore access the field directly.
I think it's indeed a good idea to say only to use Properties when there is a simple access to a field inside the "getter".
#
August 10, 2003 7:37 AM
Fabrice
said:
See my
comment
.
#
August 10, 2003 6:41 PM
HumanCompiler
said:
hhhmmm...yes, i do see similarities, but i also see differences too? That's a cool idea to collab! what about http://www.dotnettoolbox.com and it could work for free and cost controls, as well as windowsforms and asp.net focused too...i dunno :|
#
August 10, 2003 7:03 PM
Jason
said:
What about creating an email client that recreated your email as an rss feed? You could create a "rule" / "filter" on the subject line and/or your bank's email address. Then you'd just need to secure the rss feed on the server side so only you could get it. IP restriction for receiving the feed? Would it be really bad to use some sort of password encoded url (ie. http://logon:pass@mysite.com/BankTransfers.aspx) for the RSS feed?
#
August 10, 2003 8:36 PM
TrackBack
said:
#
August 10, 2003 8:39 PM
HumanCompiler
said:
I was thinking of e-mail too, but decided to stop my rambling ;) Security-wise, yes, I think that would be bad for a few reasons (easily accessible on the user's computer, if hacked, packet-sniffers, etc)
#
August 10, 2003 8:43 PM
Dave said:
The word 'responsibility' can up recently regarding a totally different issue. I think it fits perfectly here too.
Any automated system (read: a sequence of steps requiring no human intervention) is always open to hacking. Any system able to be hacked can and someday will be hacked.
So who takes ultimate 'responsibility' for this? Let's be practical.... will the financial institution? Will the lawyers for this financial institution even remotely consider this?
Okay, so now my 82 year old mom - the one who cazn't fathom the concept of a double-click - is going to feel.... more secure because this institution opened up all transactions to any sort of RSS feed? So my 55 year old brother decides to take advantage of this service. And his recently divorced ex - the techie in his family - is not going to be able to steal his ISP password and use his cheating on his wages against him? And if he does cheat... where does the IRS come in?
For the record: the former example is very true and the latter not - but it very well could be.
All I'm saying is BE REALISTIC PEOPLE. Is something _technically_ feasable? Hell yes. Does that mean any 'responsible' business is going to just jump at the chance to use it? ROFLMAO.
#
August 10, 2003 9:24 PM
Fabrice
said:
Let's see what we can do...
#
August 10, 2003 9:32 PM
HumanCompiler
said:
True, Dave (whoever you are). I am only speculating about future possibilities. These things take time...but with time, anything is possible. What I'm always curious about is the methods in which we can accomplish them.
I think you might be overreacting just a bit. I'm not saying, we are all doing a bad job, because this wasn't done yesterday. Just hoping to get a few minds churning.
#
August 10, 2003 9:35 PM
Andres Aguiar
said:
AFAIK, it has no effect for SqlClient. In the documentation says that is up to the data providers to do something with that value, and says that the OleDB client uses it. I asked once a guy in the SqlClient team if it has some effect for SqlClient and he said it does not.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdatacommandbehaviorclasstopic.asp
#
August 10, 2003 11:02 PM
HumanCompiler
said:
Well that's too bad...I did read that it's up to the provider to enhance it or not. I guess I'll be in no hurry to use it and I'll just hope that maybe it might be enhanced in the future. Thanks for the info Andres!
#
August 10, 2003 11:10 PM
Phil Scott
said:
I've been sticking with good ol' output parameters and ExecuteNonQuery. Avoids creating the DataReader and the such.
#
August 11, 2003 1:01 AM
HumanCompiler
said:
I'm really curious if the performance is better or worse with that...I'll have to do some testing. Like say I want two fields and I want their values returned...is using Parameters that much faster over bringing back the two fields in a result set?
#
August 11, 2003 1:08 AM
TrackBack
said:
I see the following kind of thing a lot, talking about authentication with RSS feeds...
#
August 11, 2003 3:03 AM
Scott Mitchell
said:
Erik, you are a mind reader. Per James Avery's suggestion, I'm going to expand the focus of aspnettoolbox.com to (free) tools for .NET developers in general. After all, as James mentioned to me in an email, many of the tools I currently have mentioned are .NET-general tools (FxCop, Reflector, etc.)
Anywho, I just bought dotnettoolbox.com and will be renaming the site and expanding the focus.
#
August 11, 2003 3:17 AM
HumanCompiler
said:
Awesome! You saw it here first, folks! Not only did I aid in a domain sale, but I'm psychic too! :D
#
August 11, 2003 3:20 AM
Jack Smith said:
Did it ever occur to you that it doesn't matter.
Consider, for example, MS, C++, and C#. If you bust open an old MSPress C++ book on MFC, they advocate using some kind of hungarian notation. lpbstr might be a long pointer to a basic string -- I don't recall. Now look at a C# .net book by the same author. Properties have capital letters ... that's about it for naming conventions. To my mind the central difference between the C++ MFC and C# situation is design. MFC C++ evolved into an absolute nightmare. You needed lpbstr because you had long pointers to basic strings, or whatever. In C#, you've got a string. You don't have to worry about it being a char* TCHAR* a BSTR WCHAR* etc. Its just a string.
Which, I hope illustrates my point. A naming convention won't save a crap design. So, don't spend so much time worrying about the naming convention -- fire your architect.
Finding good developers is difficult. Finding a good architect is near impossible -- so everyone is obsessed with naming conventions.
Besides, the desire to impose a naming convention on another human being should probably be considered with great suspicion.
#
August 11, 2003 8:20 AM
TrackBack
said:
#
August 11, 2003 12:02 PM
Joe Heller
said:
Nice thought. I don't know if it is reasonable right now but if you were to just consider public information (non private/personal), I could be a very interesting idea. However, the thought of possibly anyone profiling me on what games I play, what my favorites are, what blogs I read, bring me crashing right back to 1984.
Later Slacker,
Joe
P.S. Just thing of all the informaiton stored in a carwash.
#
August 11, 2003 2:00 PM
HumanCompiler
said:
>> Did it ever occur to you that it doesn't matter.
Uh...nope! ;)
I think you've missed the point. I mean, why don't you just be sure to write as cryptic of code as possible? Then only you will be able to work with it. Job security, right? Ha! Good one! ;)
#
August 11, 2003 2:04 PM
HumanCompiler
said:
Hey, Joe! :P The idea of Microsoft holding onto "my data" is what led to the failure of .NET My Services in the first place. So what other ideas do you have? The idea I was suggesting meant that nobody would hold onto your data except you. I am just hoping that stuff like DRM take off, so that it wouldn't matter "where" your data sat.
P.S. *carwashes* are an inside joke with Joe and I ;)
#
August 11, 2003 2:09 PM
Robert A. Wlodarczyk
said:
I don't think it's necessarily a bad idea per se. The main key of course would be the DRM here, and still things like credit card information shouldn't be part of the requestable information. There are alot of kinks that would need to be worked out for this to be successful.
Hey, what this all about: http://www.ideahijacker.com/ ??? ;)
#
August 11, 2003 4:24 PM
HumanCompiler
said:
Well, when I said it, I really did mean ALL information, not just some of it and yes, it's assuming that DRM could get to that level of security. If your credit card number was in a box with a lock that couldn't be opened by anyone but you, in theory, wouldn't you feel safe with that box being anywhere?
idea hijacker...ssshhh...it's a secret! ;)
#
August 11, 2003 4:30 PM
TrackBack
said:
#
August 12, 2003 4:16 AM
Adam Kinney
said:
ATOM/ECHO/PIE is beginning to touch on this subject and has identified it as something that should be implemented.
I think we will definitley be able to do more once this is in place. RSS Feeds are great my preferred form of surfing the internet now for information I actually care to see.
#
August 12, 2003 4:23 AM
mark said:
... but they all have to be of the same type, right?
#
August 13, 2003 10:23 AM
Scott Mitchell
said:
Neat trick with the using block. Although the objects get cleaned up after they go out of scope, so if you make sure your methods are short and to the point you should be ok, no?
I've not tried this, but does C# create scopes with {} just like C++? With C++ you could do stuff like:
void main()
{
{
int x;
// x's lifetime is only within this scope
}
// x can't be referenced here, it has been reclaimed
}
I wonder if C# lets you do that, or if you HAVE to use using.... hrm.
#
August 13, 2003 5:19 PM
Adam Kinney
said:
C# does scope variables the same way as C++. So without the using block, a class instance variable is dereferenced but not disposed.
#
August 14, 2003 5:00 PM
Phill
said:
OK, How about some reality of NOW? I work for a company and my boss wants a way to communicate with our sales representatives no matter where he or they are in the world, and he doesn't want to use E-Mail. He wants a system that would be available online, but that would also be able to be available on their desktop if they wanted it to be.
For me RSS seemed like the perfect answer, I started checking out how to create a feed, got it up and running, wrote the posting mechanism, then I turned toward securing the feed.
The short of it is that I can't, I should have checked into it more thouroughly before I started this but there I am.
What do you think/Know? How should I go about securing this feed on a windows 2000 server, when server based security won't secure the page?
#
August 22, 2003 8:28 PM
Scott Mitchell
said:
Another article worth reading:
http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnaspp/html/aspnet-pageobjectmodel.asp
#
August 23, 2003 4:42 PM
HumanCompiler
said:
Phil, why won't that secure the page. If the users are going through your Domain Controller, then Windows Authentication could secure it for your users (like through a VPN or something). Just have to have an aggregator that supports it.
#
August 25, 2003 1:19 AM
Bill French
said:
Dear HumanCompiler:
The security requirements of enterprises are pretty sophisticated. For example, it's not generally good enough to secure a document such as an RSS feed. Take a case where a search on a corporate database generates items from various information systems. That search has to take place within the users security context. The same applies to RSS feeds - each item has to be carefully added or filtered from the RSS feed based on the context. What this means is that RSS of enterprise knowledge (like search results) must not exist as a document - rather - they must be dynamic and completely in context with the user's rights and permissions.
FWIW - the MyST platform attends to all of these requirements. ;-)
#
August 27, 2003 6:36 PM
HumanCompiler
said:
Dear Bill:
I agree and definitely understand what you're saying. And true the documents would have to be dynamic, but using ASP.NET they could still easily be cached, so if you're implying a performance issue (which you may not be), then I don't really see it.
P.S. Thanks for pointing to MyST, I'll check it out.
#
August 28, 2003 1:53 AM
TK Herman said:
Congrats!!! :D
#
September 8, 2003 2:38 PM
Scott Galloway
said:
Nice - not a subscriber so can't read them. Do you mention strongly typed dictionaries - I've found these incredibly useful in creating lazy loading collections for Web Apps...
#
September 8, 2003 2:39 PM
HumanCompiler
said:
Thanks, TK! :)
Scott, you should be able to read the other article. Sorry you can't read the other one! :( As for dictionaries, no. I mostly explain in depth of how collections work and then how to create them by inheriting from CollectionBase. Mostly just quick and dirty stuff! ;)
#
September 8, 2003 2:41 PM
Roy Osherove
said:
Congratulations :) Too bad I ain't subscribed..
#
September 8, 2003 3:00 PM
Datagrid Girl
said:
Congrats Erik!!
#
September 8, 2003 5:47 PM
Jeff Julian
said:
Great Job!
#
September 8, 2003 8:04 PM
DonXML
said:
Way to go Erik!
#
September 11, 2003 1:12 PM
rfigueira
said:
Can you share to us, one example using your class (Encapsulating UI code in ASP.NET) ?
Thanks
#
September 12, 2003 11:28 AM
Ben
said:
Hey whatsup? How are ya? You seem to be very good with this Visual basic C++ type stuff.
Im supposed to make a Mp3 player for a class, with visual basic, and my teacher is an idiot, I know nothing about Visual basic and he doesnt either.
Do you happen to have a code or an easy way of making a mp3 player with a random feature that creates a playlist of like 10 files by any chance ;) ?
email me at truethful1@hotmail.com
thanks ;)
#
September 18, 2003 2:45 AM
TrackBack
said:
#
September 26, 2003 5:05 PM
OmegaSupreme said:
Great Job, well done :D
#
September 26, 2003 5:20 PM
Goudinov said:
w00t @ you!
(y) :tup:
#
September 26, 2003 5:44 PM
McDuck said:
Congrats! Thats great!
#
September 26, 2003 5:44 PM
Adam Kinney
said:
My hero...:D
#
September 26, 2003 6:04 PM
julie said:
'bout time! Whoopee
#
September 26, 2003 6:25 PM
HC'sChick said:
Congrats babe, I so proud! :-)
#
September 26, 2003 7:06 PM
Roy Osherove
said:
Congrats!
#
September 26, 2003 7:23 PM
Mazen Alzogbi said:
Way to go, Congrats :)
#
September 26, 2003 7:48 PM
JOhn said:
Because it's overloaded with:
HasChanges(DataRowState)
#
October 14, 2003 4:50 AM
mickro said:
I can't download ControlArray.zip from GotDotNet...
#
October 25, 2003 5:57 PM
Cory Smith
said:
It looks like 'using' functionality will be in the next release of VB.NET. So it's something to look forward to.
#
October 31, 2003 5:48 PM
TrackBack
said:
#
October 31, 2003 7:00 PM
TrackBack
said:
#
October 31, 2003 7:12 PM
HumanCompiler
said:
Oh I know...I would've said something when I posted this, but I was under NDA at the time ;)
#
October 31, 2003 7:13 PM
julie lerman said:
oh yes, I can see how much you have been slacking off. Writing books, writing articles, writing heroic components. Yup. Slacker!
#
November 1, 2003 10:41 PM
Colt
said:
Welcome back - our (Multitasking) Code Hero :)
#
November 2, 2003 3:05 AM
julie lerman
said:
well I'll be! This is one VERY frequently asked question on the aspadvice list serves. I have done plenty with streaming, but could NEVER get a store pdf to come back the browser myself. Nice one, Erik!
#
November 2, 2003 7:09 PM
HumanCompiler
said:
You're welcome, Julie...glad you got some use out of that one...I sure did! :)
#
November 2, 2003 7:21 PM
HumanCompiler
said:
Thanks everyone! :P
#
November 2, 2003 7:22 PM
James Avery
said:
I have used this for awhile, but be warned that all browsers do not treat this the same as IE. I had alot of problems with Mac IE users not getting the file name, but I am not sure if they have fixed it or not.
-James
#
November 2, 2003 7:38 PM
HumanCompiler
said:
Thanks for the warning, James. Have any hints for "other" browsers? It's not really an issue for what we're doing, but it would be interesting to know.
#
November 2, 2003 7:41 PM
Darrell
said:
2nd bullet - IMO typical users really should not be installing OS's anymore. Setup and deployment should be figured out by systems engineers, and either SMS'ed or ClickOnce'd out (corp environment) or preinstalled on the box (purchases).
Thanks for the update on everything else. Our company didn't send someone, but we'll be getting the bits this month!
#
November 3, 2003 11:09 AM
HumanCompiler
said:
Good point! ;) And you're welcome! :)
#
November 3, 2003 12:42 PM
Robert Scoble
said:
Regarding cool animation: that's part of the Aero experience. That is NOT included in the PDC build. Sorry.
#
November 3, 2003 3:21 PM
HumanCompiler
said:
Thanks for the clarification...got it! :)
#
November 3, 2003 3:23 PM
Dylan Greene
said:
Just wondering... why "LongHorn" instead of "Longhorn"?
#
November 4, 2003 11:41 PM
HumanCompiler
said:
I like pascal casing everything...even if it's not supposed to be...i'm a psycho vb programmer, what can i say? ;)
#
November 4, 2003 11:43 PM
Thomas Tomiczek
said:
Only way.
NULL doing whatever returns as NULL.
#
November 5, 2003 4:45 PM
a said:
Using IsNull(<>,0) just enforces your personal rule that NULL = 0.
This is not what was intended with NULL. NULL means "undefined" not zero.
Your rule works well for your situation. It may have been better to give the field a default value of zero. You could also qualify your query to ignore the null fields: WHERE <field> IS NOT NULL.
#
November 5, 2003 5:01 PM
HumanCompiler
said:
Doesn't 0 take up more space than NULL though? I'm thinking if this table has a million rows and there are actually 27 of these columns to be averaged out that it would take up quite a bit less space to store NULL instead of 0. I get what you're saying conceptually and definitely agree, I was just thinking space...unless I'm thinking wrong :|
#
November 5, 2003 5:04 PM
Rajeev said:
Can we run Stored Procedures like this?
#
November 5, 2003 5:06 PM
HumanCompiler
said:
Absolutely!
#
November 5, 2003 5:07 PM
Thomas Tomiczek
said:
::Doesn't 0 take up more space than NULL
::though?
Depends.
::I'm thinking if this table has a million
::rows and there are actually 27
Ok, is there also some data in this database that is NOT small? Sorry, even 27 million rows in ONE table is not even "normal". It is small given SQL Server's standards. Make this one BILLION and you are in large.
#
November 5, 2003 5:25 PM
Eric Kepes
said:
I've always used COALESCE. Does ISNULL have any performance benefits?
#
November 5, 2003 5:42 PM
HumanCompiler
said:
So basically what you're saying is that you should never use NULL??? *confused*
#
November 5, 2003 5:43 PM
Meh said:
NULLs are evil. I'm working on a consulting project, and every column in every table (except for the PK column) is NULLable. And these are BIG tables, with like 35 columns each. Double meh.
#
November 5, 2003 6:04 PM
felttippin
said:
The Coalesce function is great. Basically you pass it two parameter. If the first one is NULL then it returns the second parameter.
Example:
SELECT COALESCE( Null, 1 )
This returns 1.
It works w/ MS Sql and MySql
#
November 5, 2003 6:22 PM
Eric Kepes
said:
Actually, the really neat thing about COALESCE is that is can take a long list of options, and it will take take the first one that isn't null. Of course, this is rarely useful in practice, but sometimes you end up inheriting a data model that requires this kind of gymnastics.
#
November 5, 2003 6:44 PM
HumanCompiler
said:
Yah, it's definitely cool, but I've always heard that it was kind of slow. I've also heard of lots of people that use it anyway! :P
#
November 5, 2003 6:47 PM
Douglas Reilly
said:
Null is not evil, and actually quite useful when used correctly. First, I am not aware of any implementation that would save you a lot of space when an integer is null vs. having a value. Second, null is meant to be a missing value. If it is not missing, but actually is 0, then use a default value of 0 in the column to get what you really want.
I find more use for IsNull than Coalesce, but have not done preformance testing. Either one would be slower than just making the column have a default value of 0 and not accept nulls.
#
November 5, 2003 10:44 PM
AsbjornM said:
Since Coalesce was brought up.. I think it is very good:
Select * from Actor where Name = coalesce(@name,name)
If the supplied @name is null then it compares it to it self and therefore returns the row. This is more usefull ofcourse if you want to use where on more than one column, this way it is easy to create generic selects to search for firstname+lastname, or only one of them.. just try... :)
And btw, NULL is definitively EVIL.. avoid it where possible.. (in stored data that is..)
#
November 6, 2003 8:16 PM
Kenneth Kasajian said:
Looking at the site, I see one interesting feature, atomic check-in. Is that the only advantage over SourceSafe, or have you really been having problems with data integrity with SourceSafe?
Curious what your reasons are for going with Vault.
#
November 9, 2003 12:27 PM
HumanCompiler
said:
by atomic do you mean CVS style...that's definitely one advantage, so multiple people can work on the same file at the same time. There's also the fact that it uses SQL Server, so nothing ever gets corrupted as well as speed. It's also works over the internet, which source safe really doesn't. I've barely had a chance to use it yet, so I'm sure that I don't really know all the advantages yet, but those seem to be the big ones.
#
November 9, 2003 12:31 PM
Dumky
said:
It looks more like signed remote handles than identities. Some kind of private/public key pair is used to generate tokens, that the system trusts if the private key is associated with a user's account. A token describes what it provides access to (read access to a file, write access to a directory,...).
This possible that a token contains the name of the issuer, or that the key pair be used to sign emails, but that is no more of an identity system than PGP is, is it?
#
November 11, 2003 2:11 AM
Darren Neimke
said:
Here's some more examples...
MyBlog
------
http://weblogs.asp.net/dneimke/posts/24410.aspx
http://weblogs.asp.net/dneimke/posts/33660.aspx
4Guys
-----
http://aspnet.4guysfromrolla.com/articles/082003-1.aspx
#
November 11, 2003 6:58 PM
HumanCompiler
said:
Cool, thanks, Darren! :)
#
November 11, 2003 7:01 PM
Frans Bouma
said:
Beware that these methods are very inefficient when they're performed on large datatables. For a couple of rows it's not an issue, but for larger sets it's better to execute an Sql statement, as the RDBMS is optimized to do these kind of calculations. (so there is a 'break even' point where .Compute() is less efficient than executing a new SQL statement.
#
November 12, 2003 8:27 AM
HumanCompiler
said:
Right...the application we're using it for are some statistics on a data entry app, so performance on the client isn't that big of a deal. Actually performance in general isn't really that big of a deal. I'm sure it's like everyhting else...the right tool for the job.
#
November 12, 2003 11:03 PM
Drew Marsh
said:
The only naming conventions people should really care about are those which apply to public/protected names. Internally, who really cares? Whatever works best for your development team is what you should use.
Just my 2¢ anyway. ;)
#
November 14, 2003 2:48 PM
Andrew said:
The better you name, the less you need to comment.
p.TheMethod( p1, p2, p3, q6) ?
#
November 14, 2003 2:52 PM
Alex Papadimoulis said:
Have you found naming VB local members "_Whatever" still causes a conflict in .NET?
#
November 14, 2003 3:01 PM
HumanCompiler
said:
Drew, very true!
Andrew, agree 100%
Alex, I personally never had any problems with it, but a couple VB MVPs said that there will be conflicts if named the same as something in the VB framework, so I just took their advice and changed to m_Whatever just in case ;)
#
November 14, 2003 3:34 PM
Darren Neimke
said:
Eric, I'm pretty similar to you except that I don't add underscores to my private fields:
Private mName As String = ""
Public Property Name() As String
Get
Return mName
End Get
Set(ByVal Value As String)
mName = Value
End Set
End Property
#
November 14, 2003 5:17 PM
HumanCompiler
said:
Close enough, Darren...just something to differentiate it (as in NOT camal case of the public name) ;)
#
November 14, 2003 5:20 PM
hurcane
said:
I tend to code using the same way you do. I have a rationalization for this. Normally, iterative development starts with big picture ideas. By writing method calls before the method is written, you're dealing with the code at your current level of understanding.
When you flesh out the unwritten routines, you'll define more references to unwritten routines. As you flesh out these new references, you're using an iterative process which tends to make individual pieces of code much simpler to understand.
The problem I have with the reverse method is that dropping from high-level to low-level code makes me forget some of the high-level thoughts that I had.
At the least, I'd put a "TODO: Call something that does XXXX" if I wasn't going to actually define a name for the procedure yet.
#
November 14, 2003 7:09 PM
Addy Santo
said:
Well, if you promise that there is no wrong or right, I'll admit that I don't code top-bottom *or* bottom-top. I usually just start lumping out bits and pieces of stuff without too much of an internal structure... I can get up to several hundred lines of code without having anything even close to being compilable. That is my mental "preprocessing" during which I digest the flow, scoping and sequencing issues and decide exactly how I want my code to work. Then I do some quick refactoring, tie it all together and it's done! It drives my co-workers nuts- "Why did you do that?" "I dunno, I'll probably change it in a minute" :)
Strange, ah?
#
November 14, 2003 7:09 PM
Steve
said:
On properties I code the private instance variable and then the public property definition. On the method side I think I mix and match my approach somewhat but usually will write the code that calls my methods and then actually write the methods. Ideally even before that step I write my test classes against my undefined interface for my class, and then go in and fill in the details of my my class.
#
November 14, 2003 7:14 PM
HumanCompiler
said:
All different methods so far...love it :D Maybe we'll all pick up a technique or 3 seeing how others do it ;)
#
November 14, 2003 7:26 PM
Roland Weigelt
said:
Public stuff: 100% MS conventions (I even try to emulate the wording of the .NET documentation where it makes sense)
Private stuff: Simplified Hungarian, i.e. n for integer numbers (short, int, long), arr for arrays (Array, ArrayList), etc.
Why? One reason is intellisense...
Take a look at the screenshots here:
http://weblogs.asp.net/rweigelt/posts/21741.aspx
#
November 14, 2003 7:42 PM
Julien Cheyssial
said:
I do write the private instance variable first and then the public property. For the method thing, I first write calls to internal methods and then implement them. Well, that's not really true... I write technical code that achieve what I want, and then I see that it's too long and makes me scroll... So I do some refactoring and move the method code into smaller internal methods.
#
November 14, 2003 7:47 PM
Mattias Sjögren
said:
I do it the same way as your co-worker; fields before properties, and method implementation (at least stub it out) before method calls.
When doing it your way, and since you're a VB guy, don't you get annoyed by the background compiler? You must get tons of blue squigglies for things you haven't written yet.
#
November 14, 2003 9:13 PM
HumanCompiler
said:
Hey Mattias, no I don't actually, because I know they'll be gone in a min or two ;) And actually, I'm not just a VB guy anymore...I do about half and half at work now :P I work the same way in C# ;)
#
November 14, 2003 9:20 PM
russ said:
Null isn't evil and can be quite useful at times.
IsNull is the correct function to use. I know it is extra typing, but them's the breaks.
#
November 15, 2003 2:21 AM
Travis Laborde
said:
Wow! It's fun to read someone with the same thoughts that I've had from time to time! I find myself doing it the same way that Erik mentions. I always thought it was a sign that I wasn't a "real" programmer :)
#
November 17, 2003 6:58 PM
HumanCompiler
said:
So are you saying that you think I'm a "real" programmer? how sweet! :P
#
November 17, 2003 7:02 PM
Travis Laborde
said:
Well, you have a blog! That means you MUST be a super-expert at your chosen area of work, right? After all, I know that I can always trust everything that I read in a blog!
#
November 17, 2003 7:17 PM
Rob Howard
said:
Yup, encryption won't come on line until the beta.
#
November 18, 2003 12:38 AM
HumanCompiler
said:
cool, thanks for the confirmation, Rob! :)
#
November 18, 2003 12:46 AM
Derick Bailey
said:
for the regex version:
'...
'your code to get the text
Dim Temp As String = DirectCast(m_Template.Content.Controls(0), LiteralControl).Text
'now the regex code.
RegEx.Replace(Temp, "[\r|\n]", "")
'...
Done.
#
November 19, 2003 3:21 PM
HumanCompiler
said:
I knew there was a reason I love blogging ;)
Hey Derick, thanks for that, but won't that replace all the carriage returns through the literal? unfortunately and approach like that won't work, because there are tabs and carriage returns that I might want throughout the page and if it's all one big literal, the page will look a bit funky ;) And what about tabs and spaces?
#
November 19, 2003 3:26 PM
Derick Bailey
said:
i guess I misunderstood where you are trying to remove the CR LFs from. You are wanting to remove them only from the beginning of the Temp variable?
this one will look at the beginning of the string only, check for a carriage return, line feed, space, or tab
RegEx.Replace(Temp, "^[\r|\n| |\t]+", "")
#
November 19, 2003 3:39 PM
HumanCompiler
said:
That did the trick...thanks a lot, Derick...saved me 5 lines of code :D
#
November 19, 2003 3:49 PM
Derick Bailey
said:
no problem!
the nice thing, saving that 5 lines of code is probably going to save several hundred (if not thousands) of cpu cycles, a bunch of memory allocations, and ... especially if there is a lot of white space to remove. Regular expressions are so much more efficient than the normal string operations for situations like this.
#
November 19, 2003 4:14 PM
HumanCompiler
said:
In this case, it will only be removing a few characters, but I totally agree with you...RegEx rox...I just suck at it, hardcore, so I never use it and I can never seem to talk my co-worker into doing them for me since he's busy with other stuff :P Thanks again!
#
November 19, 2003 4:18 PM
felttippin
said:
Is this placed in the Template files code or in the main page's code?
What templating system are you using?
#
November 20, 2003 2:28 PM
HumanCompiler
said:
It's a variation on the presentation I gave recently at our local .NET user group...you can find the code here if you want to check it out.
http://www.nufw.com/Presentations/TemplateAndSkinPresentation.zip
It's a combination of all the templates I've seen out there, fit for my general purpose and skinning needs...enjoy! :)
#
November 20, 2003 3:19 PM
Scott Watermasysk
said:
I used a similar approach in the past (actually might be going back to it soon).
I had a base set of usercontrols that acted like my templates. I then overrode AddParsedSubObject and took whatever I found in the .aspx page and loaded it to my template.
protected override void AddParsedSubObject(object control)
{
LoadTemplate();
LoadBodyControl((Control)control);
}
-Scott
#
November 20, 2003 4:26 PM
HumanCompiler
said:
Yup, cool, that's what I'm doing, except in a different place. :)
#
November 20, 2003 4:29 PM
Bill said:
Isn’t that much the same as this?
HOW TO: Write Binary Files to the Browser Using ASP.NET and Visual Basic .NET
http://support.microsoft.com/default.aspx?scid=kb;EN-US;307603
#
November 21, 2003 2:18 PM
HumanCompiler
said:
Not, really, no...I'm already doing that (writing the file to the browser). The problem is that file extensions in windows are what links a file to a program, not the content type, that's why i added what was talked about...to fix the problem of the file extension being wrong since I'm using a custom http handler (different extension than the file i'm sending out).
#
November 21, 2003 2:26 PM
Bill said:
Ah I see. Sorry for jumping in like that.
#
November 21, 2003 2:29 PM
HumanCompiler
said:
No worries! :)
#
November 21, 2003 2:43 PM
Adam Kinney
said:
Thank goodness, now there's no reason to use VB. :)
j/k
#
November 25, 2003 1:39 PM
HumanCompiler
said:
Make love to your language, not war with others ;)
#
November 25, 2003 1:42 PM
Andrew said:
I don't toggle much between them, but I find the few differences I've seen quite strange.
I ask myself why are they different, why don't both offer both approaches.
I really like being able to create events from the property browser in C#, but it would be really nice to do it VB style in the code view too.
#
November 25, 2003 2:05 PM
HumanCompiler
said:
Andrew, you should check out VB in Whidbey then...they've added the infamous lightening bolt so we VB'ers can do that too! ;)
#
November 25, 2003 2:07 PM
Adam Kinney
said:
Just so this is doesn't turn into any "war"; please take note, that was just a proverbial "jab" at my co-worker sitting ten feet away from me.
Here we use the best language for the job, he's just more of a VB advocate than me.
C# with better IDE support will be hard to beat, though(for me at least).
#
November 25, 2003 2:15 PM
Roy Osherove
said:
Congrats! How about writing your experiences and tribulations when writing these?
#
November 25, 2003 9:58 PM
HumanCompiler
said:
Excellent thought, Roy. I believe I shall do that! :)
#
November 25, 2003 10:00 PM
julie lerman said:
yahoo! Congrats Erik. I look forward to seeing ...err READING... the book.
#
November 26, 2003 12:45 AM
Adam Kinney
said:
Congratulations!
Perfect timing, same day as the language slur...
http://weblogs.asp.net/eporter/posts/39680.aspx#39686
:)
#
November 26, 2003 2:31 AM
Travis Laborde
said:
Great work Erik! This is a really approachable example that I think will allow lots of people to learn these concepts much more easily that some of the other examples of this type out there.
#
November 26, 2003 5:03 AM
HumanCompiler
said:
Thank you very much, Travis! :)
#
November 26, 2003 9:47 AM
Josh Baltzell
said:
Thanks a lot for the insight about technical writing. I would love to do some writing someday. One of the goals of my own blog is to see if I can actually write something on a regular basis without boring myself to tears.
#
November 29, 2003 5:58 AM
Roy Osherove
said:
Coolness. Thanks for sharing :-)
#
November 29, 2003 10:54 AM
Dave Burke
said:
I enjoyed the ramble, Erik! Keep us posted on the release of the Skinning article in Advisor. I was going to do a similar piece on that topic tied with page inheritance. I'm personally on the cusp of your coder-->writer transition, having sent my first piece off to a print mag recently. Any movement in my own writer evolution will most certainly be on my weblog. Keep writing, dude!
btw, I enjoyed Josh's comment. ME TOO! on the avoidance of boring myself to tears in my blog.
#
November 29, 2003 12:27 PM
HumanCompiler
said:
Thanks everyone :)
Dave, it will be in the Access-VB-SQL Advisor January issue. And yes, it talks about building a BasePage Class then Loading in User Controls for the skin.
I actually posted up a website that you can download and use (in VB or C#) that is pretty similar to the article on GotDotNet User Samples.
Good luck with writing everyone :)
#
November 29, 2003 3:04 PM
Jeff Key
said:
+1 I just picked one up a couple days ago and setup was painless. It's great being able to do email, catch up on blogs, etc. from the couch! Not sure how the speed is since my only client (notebook) is B, but even that is more than fast enough for my primary application: Remote Desktop.
#
November 30, 2003 4:30 PM
Chris Stewart
said:
There is nothing wrong with Java. :p It's actually a good language for college students because it's open and easy to get going with.
#
November 30, 2003 6:33 PM
Avonelle Lovhaug
said:
My son who is a college student has a different problem - one person on their team is a control freak, and so is doing the whole project herself. While my son has repeatedly offered to contribute, she rebuffs these offers by saying it is no problem, and that she prefers to do it. (Personally, I can appreciate her point of view. I'd much rather do it myself than trust it to others, especially people I don't know that well.)
I think the real problem is the idea of group projects in school. My kids have been struggling with this for years. The bottom line with these groups is that in many cases, 1 or a few kids carry the load for everyone else. I've heard educators argue that group projects are more like "the real world", and that kids need to learn how to work with others. True enough, except in the real world if you weren't pulling your own weight you would be removed from the project (well, at least some of the time). But in school that will NEVER happen.
#
November 30, 2003 6:45 PM
TrackBack
said:
Dewayne Mikkelson and his Radio WebDog, Shadow
#
November 30, 2003 7:22 PM
TrackBack
said:
Dewayne Mikkelson and his Radio WebDog, Shadow
#
November 30, 2003 7:33 PM
HumanCompiler
said:
Chris...whatever you say! ;)
Very good point, Avonelle! I didn't even think of that angle. I think that's an angle that could also be helped by something like a blog for a project...
#
November 30, 2003 8:05 PM
Scott Mitchell
said:
I don't think inserting a layer of paperwork will help remedy the problem. The offending students could just write in things like:
-- Researched topic X
-- Implemented Y, but such and such didn't work so I started over from scratch
And so on and so forth. Now, what is really needed is to have some manager or something assign workloads. But the only person who could be the manager would be the professor himself, IMO. (Students would face peer pressure and such and make terrible managers, likely.) This, of course, removes the architectural decisions and planning that the instructor was wanting the students to have to take part in in the first place.
The solution? Go to one of those kick ass schools full of work-a-holics and smarties, like MIT, Berkley, CMU, etc., etc.. I'd wager you chances of running into deadbeat partners there is less likely than at a typical state school.
#
November 30, 2003 11:35 PM
HumanCompiler
said:
paperwork? paper is the devil ;) but no really, that's all i meant by it anyway, was a quick and short entry. and yes, i'm sure you're right if you go to a really big school known for CS stuff that it wouldn't be a problem, but compared to the number of schools that aren't that good, i'd say they're far outnumbered ;)
#
December 1, 2003 1:21 AM
Darrell
said:
Avonelle - people will *never* get removed like you say. I used to say the same thing all throughout my undergraduate and graduate life. In the real world it usually doesn't happen. The only way people tend to get removed from projects is when they screw up really bad, the rest of the time as long as they just bumble along, they won't be removed.
In getting my MBA, most of our projects were "team" projects and the grades were given to all regardless of who contributed how much. The reason for this is that it forces teams to self-organize to get the most out of their teammates. And it took a lot, since different cultures have different expectations. For example, when out team said "meet at 3pm" we were there at 3 or a little before. The 2 foreign exchange students showed up at 3:30, since in their native country that is an acceptable thing to do. Aaaaargh!
Scott - at the MBA program at William and Mary where I went (a top 50 business-school) you still get slackers. Sometimes it is family problems, sometimes disinterest, sometimes incompetence in particular subject matters. The reasons are endless, the results are the same! It was very frustrating, to say the least.
In my experience so far, the best way to deal with people that don't contribute as much is to get them into some sort of work that they can do or want to do, preferrably something routine and boring! :) It's much easier to change the work than to change the person. And if all attempts at that fail, then lock them out of SourceSafe (or other version control system) so at least they aren't a negative contributor.
#
December 1, 2003 2:17 AM
TrackBack
said:
#
December 1, 2003 2:02 PM
Kirk Allen Evans
said:
I bought one about a month ago, and it works great.
#
December 2, 2003 4:45 PM
TrackBack
said:
Chris Chan weblog - my bank account as an RSS feed?
#
December 4, 2003 7:13 PM
TrackBack
said:
Chris Chan weblog - my bank account as an RSS feed?
#
December 4, 2003 7:14 PM
friend said:
In the Person Class you could also add a property like the one below:
Public ReadOnly Property FullName() As String
Get
Return Me.FirstName & " " & Me.LastName
End Get
End Property
' And be able to use the property in a databound ComboBox as you suggested,
' but pull the displymember from the new property
cmbPeople.DisplayMember = "FullName"
#
December 5, 2003 6:43 PM
Jacob said:
Hey Erik-
1- Some quick and easy tests (with textboxes) show that you can call select in the load event rather than focus and you should get what you are looking for.
2- This is a bug, I reckon. You could use the API to prevent it if you want.
3- This is a system wide setting in the Appearance section of the display properties. You probably don't want to change that, though I can see how it's annoying.
4- Because you haven't written one yet. ;-)
Jacob
#
December 11, 2003 7:16 PM
Matt Berther
said:
Erik: I love Tim Dawson's Wzard control.
http://www.divil.co.uk/net/controls/wizardcontrol/
#
December 11, 2003 8:28 PM
HumanCompiler
said:
Thanks Jacob, I totally forgot about using the Select Method as a workaround!
Matt...man, how did I miss that? :'( I'll definitely give that a go...thanks! :)
#
December 11, 2003 8:31 PM
JosephCooney
said:
IIRR Ghengis has stuff for doing wizards too.
#
December 11, 2003 8:53 PM
Alfred Thompson
said:
I used to teach high school CS and that sounds like am interesting idea. Kids are going to be passive agressive about it though. The kids who would rather code are not going to bog. They're going to tell the instructor they don't have to because they are actually coding. The kids who don't code may or may not. If they are clever they will bog because it is easier to fake being a hard worked by writing lines of text then lines of code. Still it's something I'd like to see tried.
#
December 13, 2003 8:21 AM
HumanCompiler
said:
Good points, Alfred. I'd definitely like to see it tried too.
#
December 13, 2003 2:28 PM
Rana
said:
Hi,
Your blog contains good info. Keep it up.
#
December 14, 2003 11:09 AM
Anand
said:
3. Title Bar and other non-client area is with the windows OS and so are system wide settings. This is set in the display settings.
#
December 16, 2003 4:51 AM
Cory Smith
said:
#3... yes, there is a way to change this. Remember the days (Office 98, I think) of adding a gradient brush to the title bar, same technique. The problem is that this is a system wide setting and therefore you aren't allowed to modify the 'standard' windows border. You can of course depart from the standard border and draw your own from scratch. ;-) Of course, in my oppinion, the result isn't worth the effort involved unless you are really changing the total look of your window.
#
December 22, 2003 10:55 PM
Cory Smith
said:
I've put together a page that displays what games I have, my timezone/geographic location and usual gameplay times as an article (aka, Story in the .TEXT realm). If your interested, check it out by clicking on my gamertag. Feel free to duplicate... I can also create a couple of thumbnails for the games if you have some that I don't. They are probably on my list of games to buy ;-)
#
December 22, 2003 10:57 PM
TrackBack
said:
ASP.NET Skinnable Template Site
#
December 23, 2003 8:58 PM
TrackBack
said:
ASP.NET Skins
#
December 23, 2003 9:01 PM
S. Srinivasa Sivakumar
said:
Hi Erik,
Thanks for the nice tip. I'm using it in my app right now and works fine.
Thanks,
S. Srinivasa Sivakumar
#
December 24, 2003 5:08 AM
HumanCompiler
said:
Great, glad you got some use out of it! :)
#
December 24, 2003 5:48 AM
ravi said:
Very nice tip, I like to start this on startup and I wanted to add it to "Tray" with some Icon. Could it also be possible!
#
December 24, 2003 10:04 AM
HumanCompiler
said:
Of course...look at using the NotifyIcon Component in your application and it will put it down in the tray for you.
#
December 24, 2003 2:37 PM
Mattias Sjögren
said:
You'd better remove the second Key.Close() call in the prop getter, or you'll get a NullReferenceException if the key doesn't exist.
#
December 31, 2003 1:11 AM
HumanCompiler
said:
Mattias, I had fixed some problems in my application after posting that and forgot to update them here...there's also a problem with where the Key.Close() is in the setter...thanks for pointing it out and reminding me...thanks a lot :)
#
December 31, 2003 3:22 PM
Pritam Dahake said:
If I add required field validators to the WebPages (inherited from BasePage), they dont seem to fire. Any idea why??
Thanks
-Pritam
#
January 4, 2004 9:07 PM
HumanCompiler
said:
Yes, there is a bug in .NET 1.1 where the validators are not automatically readded back into the Page's Validators Collection. If you do this yourself in OnInit, it will fix the problem.
Also, next time, leave your e-mail address or some way for me to contact you, so I can answer your question faster.
Good luck! :)
#
January 7, 2004 2:54 AM
Saeed
said:
Dear Sears ,
I Can't Use Global Array
Please Help Me
#
January 25, 2004 1:40 PM
Saeed
said:
Please Help me
#
January 25, 2004 1:42 PM
vikas khanna said:
good one
i got much clear about vb.net arrays
thanks
vikas khanna
#
January 30, 2004 10:58 AM
Oleg said:
I'm using Store Front Engine (www.storefront.net), but it has very very bad design. Also i saw BVCommerce (www.bvcommerce.com), and it look good.
#
February 8, 2004 5:08 AM
D. Sunil Kumar said:
Jason Gaylord, can you please the utility that you had mentioned in your feedback on your site will be great.
Thanks,
Regards,
Sunilkd
#
February 11, 2004 7:32 AM
Maxim V. Karpov
said:
Erik,
If I new about control before I start writing I would include more information about implementation of it. I think you code is very clear and easy to read! It is one of a few samples on how to develop a component with Designer UI!
You rock, Maxim
[www.ipattern.com do you?]
#
February 11, 2004 2:52 PM
Jason Mauss
said:
I emailed him asking how you would retrieve the password for a user that forgot their password (so it could be emailed to them or something). It was not mentioned how to do this using the security method. I assume it's doable by using the hash value or something?
#
February 18, 2004 11:50 PM
HumanCompiler
said:
I'm pretty sure it's NOT possible. That's what makes it so secure. Just have them change their password instead of e-mailing it to them or autogenerating a new one and e-mailing it to them. That's what we do...seems more secure.
#
February 18, 2004 11:52 PM
Darrell
said:
Both SHA1 and MD5 are one-way hashes. You have to reset the password to a known value and have the user change the password on next login.
Alternatively you can have a password hint that you show the user to help them remember the original password.
#
February 19, 2004 12:20 AM
Jon Galloway
said:
You can also use T-SQL pwdencrypt() and pwdcompare() -
http://scottcate.mykb.com/Article_46EB8.aspx
and
http://weblogs.asp.net/bdesmond/archive/2003/08/15/24177.aspx
.
It makes for simpler code, but there are some problems with it. The encryption's not that secure (
http://www.theregister.co.uk/content/4/26086.html
) and those functions are undocumented and thus subject to change.
It'd be nice to documented, supported versions of pwdencrypt and pwdcompare in Yukon (other than just saying "you've got the CLR now, write it yourself").
Until then, the technique described in the article looks like the way to go.
#
February 19, 2004 4:10 PM
TrackBack
said:
#
February 20, 2004 3:34 AM
TrackBack
said:
#
February 20, 2004 3:35 AM
TrackBack
said:
Take Outs: The Digital Doggy Bag of Blog Bits for 18th and 19th February 2004
#
February 20, 2004 4:12 AM
Daniel Fisher(lennybacon)
said:
check out
http://www.aspheute.com/artikel/20040105.htm
- it's a german article but the code to generate the salt and the hash are seperated from dataaccess.
Daniel Fisher(lennybacon)
#
February 26, 2004 11:55 AM
Ken said:
Sounds great. Where can I download the work in progress..
#
March 4, 2004 1:44 PM
Julie Lerman
said:
nice idea-Why not talk to Jeff Julian and the guys who are working on the ESF framework???
#
March 7, 2004 3:01 PM
Julie Lerman
said:
(I posted too quickly) there are also vendors that are looking for groups to speak at (many are going the evangelist route so it seems to be okay to have them - not heavy on the marketing) and they too are looking for groups to speak at. Heck even Microsoft teams are looking for groups to speak at!
#
March 7, 2004 3:02 PM
HumanCompiler
said:
Great, thanks, Julie...I'll send them a message...
#
March 7, 2004 3:03 PM
TrackBack
said:
#
March 7, 2004 3:05 PM
John Bristowe
said:
Erik,
We're working on it. Trust me. :-)
John
#
March 7, 2004 4:23 PM
TrackBack
said:
Take Outs for 7 March 2004
#
March 8, 2004 2:50 AM
FruitBatInShades said:
I have the same problems as others seem to have but can't find the answer.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
during :-
m_Template.Content.Controls.Add(Me.Controls(0).Controls(0))
Any ideas :)
#
March 8, 2004 8:41 PM
FruitBatInShades
said:
sorry forgot email :)
#
March 8, 2004 8:42 PM
FruitBatInShades said:
I have solved the problem (well erik told me :)
When VS.Net asks if you want to create an associated file when you load the template.ascx, JUST SAY NOOOOOOOOO.
This caused the skinning to fail in many miserable ways. It added the BaseClasses code to the ascx and then I got duplicated declarations which is what gives the "System.NullReferenceException: Object reference not set to an instance of an object." error :)
#
March 8, 2004 9:58 PM
HumanCompiler
said:
Glad you go it! Sorry it was a pain!
#
March 8, 2004 10:00 PM
mskg
said:
i think webservice is the best for database or Business programmers. BP (Business programmer are only know the business requirement and they have not complete command on Network Security (Data transfer on net). I think web service is the best.
#
March 9, 2004 5:04 AM
a guy said:
Hi, i am using oracle 8.1.7. I am having the adding null number problem, and oracle doesnt seem to have ISNULL() nor COALESCE(). Is anything to solve that problem in oracle? thank you for any help
#
March 9, 2004 7:40 AM
HumanCompiler
said:
I've never used Oracle, so I'm not sure...sorry
#
March 9, 2004 11:56 AM
FruiBatInShades said:
This thing annoys me endlessly. It always pops up error message saying it can't do one thing or another. Grrr
#
March 10, 2004 12:21 PM
FruitBatInShades said:
Moody! Me! Never! I think most programmers are moody because to be a good prgrammer you need to be a bit artistic, and that means an artistic temperament.
Good programmers thrive on the challenge and once you've done the interesting stuff, the donkey work is a chore. This is where you find out whether you are a professional programmer. If you can sit there and do all the boring stuff without moaning, you need a payrise.
#
March 10, 2004 12:29 PM
HumanCompiler
said:
Posting about it not working on my blog won't really help anything. Go checkout the workspace and let them know of what your problems are and hopefully they'll help you get it fixed or add your problems to the bug list.
#
March 11, 2004 1:43 PM
phalanx said:
Hi I have a little problem. When I add button or text box, the text - or html after the button is dysplaid before the template.
#
March 11, 2004 2:22 PM
Adam Kinney
said:
Yeah that'd be nice or at least something like it. I think to be effective it should link to some kind of event page to check the status of the event and see if a speaker has been picked up for that day or not. Otherwise I would imagine you'd get two or more items for every event, the advertisement and then any updates.
#
March 11, 2004 10:51 PM
HumanCompiler
said:
It might just have to do with where you have your controls placed, but I really can't tell without seeing your aspx...please send me an e-mail...no need to post a comment on here about it.
#
March 11, 2004 10:59 PM
Steve
said:
Cool, must have missed the release of this....gonna have to put it on my loooonnng list of things I need to check out!
#
March 12, 2004 4:37 PM
Shannon J Hager
said:
I used the OfficeButton in a project but it eventually was scrapped and remade (as a static html site) before it went live so I never had a version to tell you about.
#
March 13, 2004 2:44 AM
HumanCompiler
said:
Well good, glad you got at least a little use out of it! :P
#
March 13, 2004 12:34 PM
jiangws said:
Where to see your controls?
#
March 17, 2004 11:56 PM
scorpion53061 said:
Hi,
I was experimenting with this and was wondering if you could tell me what is wrong with this statement?
drnew1.Item("JAN") = r.Table.Compute(r.Item("UCOST") * r.Item("QTY"),
r.Item("DATE") = (Format(r.Item("DATE"), "MMM" = "Jan")))
#
March 18, 2004 9:33 AM
HumanCompiler
said:
I'm working on cleaning up some important items before the initial release. Hopefully they won't take too long. I'll blog about the feature list sometime soon.
We have decided to give away the controls for free (obfuscated) and will be selling the source code.
#
March 18, 2004 8:18 PM
Michael Giagnocavo
said:
I don't know why they don't use PasswordDeriveBytes. Also, the article doesn't mention iterations, which are key for increasing the strength against brute force for passwords. A P4 can calculate about 1 million hashes a second, which means a dictionary attack against a hash takes hardly any time.
#
March 18, 2004 8:21 PM
FruitBatInShades
said:
The skinning solution is solid and FAST! Give it a try. I've got a few controls to go with it if you want them :)
#
March 18, 2004 10:17 PM
HumanCompiler
said:
scorpion, your question would probably be better answered over e-mail or on a forum or something.
#
March 19, 2004 12:07 AM
Mike Swaim said:
I like SQLDiff from Apex Software.
http://www.apexsql.com/
It only does MS SQL Server, though.
Mike
#
March 19, 2004 1:28 PM
Oddur Magnusson
said:
I'd love something like that, I'd be glad to help out in anyway if you started writing one.
#
March 19, 2004 1:29 PM
Frans Bouma
said:
The tool I use for our CMS has in its DAL a complete call logging system. (It's stored procedure/VB6/C++/ADO/XML based). So when a developer changes something in a website definition on the development box, the calls to the stored proc api are recorded. When the developer is done, the tool allows the developer to export 'changes', which in fact exports the calls to XML.
Another tool imports that XML file and can 'replay' the logged change calls. All kinds of checks are build in of course so you don't run a call twice. Works pretty well. :) Requires some effort though to get it right.
The problem is often that meta data which describes the semantic value of other data is stored inside the same database/catalog. This means that if you change metadata (like you alter the type of an item from '5' to '6' on the dev box) on the devbox, it's very hard to propagate that change to a production box.
#
March 19, 2004 1:40 PM
Paul Looijmans said:
We've been using SqlDelta (
http://www.sqldelta.com/
) and are pretty happy about it.
#
March 19, 2004 2:09 PM
Jon Galloway
said:
Another tool which compares two MS SQL db's:
http://www.adeptsql.com/index.htm
We use this at work and it's been helpful. I'd be happy to see what you come up with, though. These tools aren't cheap.
#
March 19, 2004 2:11 PM
HumanCompiler
said:
Jon, very true. All these tools look great, but a little pricey (rightfully so, but still). I may play around this weekend with some ideas. If I come up with something of any use I may start up a workspace and see how much interest/ideas/work can be thought up and see if it would be a worthy cause or not. I'll blog about it of course if I do.
Thanks everyone for your comments and links! :)
#
March 19, 2004 2:28 PM
TrackBack
said:
Erik Porter is looking for a convenient way to sync databases. In the comments, some people have mentioned AdeptSQL, SQLDiff, and SQLDelta. These products range in price fom $225 to $300 for a single user. In our office, we use...
#
March 19, 2004 3:20 PM
Ryan Rinaldi
said:
I use and love Red Gate's SQL Compare. It's new version is really speedy and makes updating a database a breeze.
#
March 19, 2004 9:21 PM
HumanCompiler
said:
Hey Ryan! :) Thanks for pointing SQL Compare out...looks great, I'll definitely have to give it a try. I'm just wondering if it would be easy to write a tool that covers 75% of people's needs that could be a free tool...anywho, thanks for point it out (and Hurricane Blog)
#
March 19, 2004 9:45 PM
mark@dotmark.net (Marco Trova)
said:
There is an open source project made in vb.net for this on SourceForge:
http://sourceforge.net/projects/dabcos/
#
March 20, 2004 12:51 PM
FruitBatInShades
said:
Count me in Erik. I've got some good database abstraction code. It shouldn't be too hard with the schema and using standard SQL to update.
#
March 24, 2004 2:17 PM
Ryan Rinaldi
said:
Sounds like a really crappy bug. To bad Microsoft thinks they fixed it. Quote the KB article:
"This problem does not occur in Internet Explorer 4.01 Service Pack 1 or later."
#
March 24, 2004 6:37 PM
HumanCompiler
said:
Ha...didn't see that...nice! ;)
About once every 2 years or so, I have some major problem like this. I should be good to go for a while now. :P
#
March 24, 2004 6:38 PM
Jeff Key
said:
That's the coolest thing I've seen in a long, long time. Yow!
#
March 26, 2004 7:37 PM
Johnny Hall
said:
You might want to take a look at NullableTypes...
http://nullabletypes.sourceforge.net
Which do the same thing as your EmptyClass. Probably significantly larger and more complex though.
I'm evaluating them at the moment and I'm pretty impressed. I'll be interested to take a look at your approach too.
#
March 26, 2004 7:55 PM
HumanCompiler
said:
Thanks for the link, I hadn't seen that...it's hard to compare, because mine's quite a bit different. With mine, you're still using regular types, it's just that it checks them to see if they're "empty", using meaning the type.MinValue or something that nobody ever uses. They're way does seem pretty cool though, just different.
#
March 26, 2004 7:57 PM
Johnny Hall
said:
You could take a look at a recent post of Eric Gunnerson where he created an EmptyDateTime class which could be used in place of a DateTime but understood the concept of "empty". You could extend that concept to all the types, which would eliminate the need for the static class.
http://blogs.msdn.com/ericgu/archive/2004/03/23/95011.aspx
Good work.
#
March 26, 2004 8:04 PM
HumanCompiler
said:
Very true...I see that's what the NullableTypes project does as well. I guess I'd rather make both available though, because when interacting with a database, it's not going to return your new class anyway, so you'd have to write some static class to turn it into your new type anyway, as well as when going back into the DB, that's why i took the simpler, less cool approach to that, but having Emptyxxxx would be great too, maybe I'll add that soon...you could always join and help out too ;)
#
March 26, 2004 8:09 PM
Johnny Hall
said:
That's a good point. NullableTypes has a helper class(es) which manage the translation to and from the db, and for providing formatting (of the empty value).
Thanks for the invite. I'm a bit snowed under at the moment but my current client needs something similar so I may take a look soon.
Take care.
#
March 26, 2004 8:14 PM
Johnny Hall
said:
Schema changes only? Or data too? Lookup data and the like can often get out of sync.
I did something similar to this in VB6 (using DMO) at my last employer. Haven't had the chance to move any of the ideas over to .NET though. And I'm working with Oracle at the moment.
If you have DBAs then this sort of thing is often not looked favourably upon :)
#
March 26, 2004 8:25 PM
HumanCompiler
said:
I actually started working on something after this post...it's still not that great, but yah, I used DMO as well.
I maybe put up the code if I get it working well. It's schema only, no data checking. Supports comparing servers on different networks other stuff
#
March 26, 2004 8:28 PM
Johnny Hall
said:
I'll be keeping an eye on this too then :)
#
March 26, 2004 8:38 PM
Johnny Hall
said:
I'll let you know where you'll have the most problems, right now... just so you know...
Adding a column, if it's not at the end of the list. My advise? Don't even try it. Always add new columns at the end.
If you don't, then you have to create a whole new table, extract the data from the original (we used BCP), add the new table, copy the data back in, and remove the old one. Especially a pain in the A, if you've got constraints, fks etc.
Biggest mistake I ever made in my development career was supporting adding columns in the middle of a table. And for what? Field order isn't important anyway.
It caused us all sorts of issues.
#
March 26, 2004 8:48 PM
HumanCompiler
said:
:o Haven't gotten there yet, so thanks so much for warning me about that! I'll keep that in mind...
#
March 26, 2004 8:52 PM
Johnny Hall
said:
If you get to it, let me know and I'll drop you the code (VB6 though).
recipher at hotmail dot com.
#
March 26, 2004 9:00 PM
Richard Tallent
said:
EmptyClass: cool concept! Like every developer worth their salt, I also have a collection of utility classes that I've amassed over the years. While source-control seems like a great way to share, I can't stand GDN (SourceGear man myself), but good luck on the project!
The next two features that stick out in my mind would be:
1. A custom string parser method that converts the string equivalents of "empty" to the internal "empty" value (it could use your TryParse class for the non-special values).
2. Custom formatters (decorator-like pattern) that takes in a value type and optional formatting info, and spits out a formatted string, but handles "empty" values specially by outputting "" or some other "magic" value string. Example:
Public Function SmartToString(ByVal datetime As DateTime, Optional ByVal format As String = "", Optional ByVal EmptyValue As String = "") As String
#
March 26, 2004 9:09 PM
TrackBack
said:
Take Outs for 26 March 2004.
#
March 27, 2004 5:09 AM
AJ said:
Excellent, just what I was looking for.
#
March 29, 2004 8:02 PM
Jerry Pisk said:
Excelent? Why don't you just use Server.Transfer so you save yourself (and the client) completely unnecessary extra request?
#
March 29, 2004 8:29 PM
HumanCompiler
said:
1. Notice the title "Quick and Dirty"
2. My understanding of Server.Transfer, which may be wrong, is that it redirects the request from under the browser's nose, meaning the actual url the user sees in their browser would be wrong. If they save that to their favorites, they'd probably be a bit confused why the wrong page is coming up. Unless I'm understanding how Server.Transfer works.
;)
#
March 29, 2004 8:37 PM
TrackBack
said:
#
March 30, 2004 2:02 PM
HumanCompiler
said:
Richard,
I loved # 2 and added it...you can now call GetDateTimeString(MyDateTime, "m/d/yyyy", "n/a") or not pass in the optional empty format (it's an overload)...thanks for that great idea! :)
As for # 1, I'm really not sure what you're talking about! :| Me.DumbToday = True
#
March 31, 2004 1:05 AM
TrackBack
said:
Take Outs for 30 March 2004
#
March 31, 2004 1:28 AM
Matthew said:
The link to the templates does not work... where else can i find this?
#
April 1, 2004 12:51 AM
Richard Blewett
said:
Here are a few more:
You can get rid of the "x" in the top right hand window by setting "MinimizeBox"= false for the form. You then get an OK in the top letf hand corner. You should change this back for production as device apps should "stay alive"
The Compact Framework Windows Forms does not suppoer alot of events that the full framework does. When you hook up to a control and subscribe to an event - make sure that that particular control does actually fire that event. The compiler will happily accept you code but it may fail at runtime. WHich events aren't supported depends on which service pack you are using.
Before you base youur design arouond a .NET facility *make sure* that the compact framework supports it - For example Guid.NewGuid not being supported floored me for a while as it was the PK for the table I was working with.
I'll post more about this but probably on my own blog - the CF is great but we're not in Kansas anymore Dorothy - things you expect to work from the full framework just aren't there in teh Compact Framework
#
April 2, 2004 8:26 PM
HumanCompiler
said:
Those are great, Richard, thanks!
How's about once you get your post up, let me know and I'll add it to the helpful links section?
btw, with that MinimizeBox thing, couldn't you just put this in the constructor so it only does that when you're developing and doesn't when you release the product, so you don't have to worry about it...
#If DEBUG Then
Me.MinimizeBox = False
#End If
Thanks again for more tips! :)
#
April 2, 2004 8:45 PM
Richard Blewett
said:
Yes of course you could put it in you're ctor - but then the DesignTime proprty doesn't work in the Compact Framework so you'd ave to use a compiler flag (#define, or /d on the command line IIRC) to tell whether it was designtime operation of this was runtime decision.
Of course - for controls, the DesignTime property doesn't work in the ctor for the full framework either - you need to implement ISupportInitialize to be able to hook costruction code into a contral that depends on the DesignTime property.
#
April 2, 2004 9:01 PM
Richard Blewett
said:
Of course if I'd read to the end of your response I'd have seen you were taling ablut teh debug flag not the DesignTime property ;-)
#
April 2, 2004 9:03 PM
HumanCompiler
said:
It's quite alright ;) I would've just e-mailed you, but I didn't see any place to e-mail you on your blog! :(
#
April 2, 2004 9:04 PM
jledgard
said:
Have to make sure we catch up!
#
April 4, 2004 4:28 AM
James
said:
Erik,
Thanks for the tidbid. Why was this such a horrible mistake? Are there any discussions you can point us too that further clarify back stepping on this?
Thanks
James
#
April 8, 2004 2:05 AM
HumanCompiler
said:
Hi James,
It's really just because the value types aren't nullable, even though they can be in a DB, so having to check for DBNull is a pain and doesn't really follow patterns like everything else so you have to either build your own custom types to handle null or write shared methods. Here's one link, but I'm sure there are many more...
http://weblogs.asp.net/ericgu/archive/2004/03/23/95011.aspx
#
April 8, 2004 3:53 AM
Jim Bolla said:
I use the SqlTypes. They are nice except they aren't serializable.
#
April 8, 2004 1:14 PM
Drew Marsh
said:
There are people in both camps of this argument. Personally I think it would have been horrible if that bit were there on the intrinsic primitives. You should not force nullable semantics where they don't belong. That said, anyone on the side of the fence where they want "nullability" on the intrinsics going forward will need only look to Whidbey's Nullable<T> generic for the solution (e.g. Nullable<int>). Now everyone can be happy!
#
April 8, 2004 2:02 PM
Adam Kinney
said:
Sweet, thanks for the tip, man.
#
April 9, 2004 8:15 PM
Jerry Pisk said:
Doesn't anybody read the documentation?
#
April 9, 2004 8:45 PM
HumanCompiler
said:
I've never really needed to do that, so why would I read the documentation for that? I just thought it was neat and would share for all the other people that haven't run across it. Did you read the documentation for all of .NET like a manual? :P
#
April 9, 2004 8:49 PM
Richard Tallent
said:
I *do* read the SDK docs religiously--I don't use VS, so I have to look up methods and properties.
That said, I have needed this and have never run into this little bit of info. Good tip!
#
April 9, 2004 11:41 PM
TrackBack
said:
Take Outs for 9 April 2004
#
April 10, 2004 3:21 AM
HumanCompiler
said:
Glad you enjoyed it. I thought it was pretty neat. I never read the docs unless I have to. I'm a slow reader and learn faster by just playing anyway.
Yipee, I made Kent's take out list on my birthday :P
#
April 10, 2004 5:20 AM
Richard Tallent
said:
I've done this before, so I drug up the code out of the ol' archives, cleaned it up a bit (untested), and posted it:
http://www.tallent.us/CommentView.aspx?guid=951c8091-ce58-4d98-b562-caf4f4cb7f16
Good luck!
#
April 12, 2004 5:36 AM
Jeff
said:
I tied a "TimeAdjust" class to check either some values in web.config (no logged in user) or the user's profile (logged in user) in POP Forums. The code in there adjusts for Daylight Saving Time if you want to grab it in downloads:
http://www.popforums.com
Check the support/developers/class library docs to see what it's supposed to do.
#
April 12, 2004 5:59 PM
TrackBack
said:
#
April 12, 2004 6:55 PM
Alexandre Rocco said:
I think the big deal is that you always have to set a default timezone if the user is anonymous, because you don't have that info on the client. Maybe you can suppose it by some other methods like the geographic location or such things, but that would be a lot of effort for something simple.
--Alexandre
#
April 13, 2004 11:50 AM
Sam Gentile
said:
Highly aggreed. I am glad he is my MVP Lead. I got to know him during our 3 boat cruise and not only is he a great tech guy but a great family man as well.
#
April 13, 2004 3:47 PM
Jerry Pisk said:
I thought you didn't do Mod 11 because you wanted the separator to show up every 12 rows, not 11. And +1 because you don't want it at the top of the table. I have no idea what that has to do with code clarity, could you please elaborate on that?
#
April 13, 2004 3:55 PM
HumanCompiler
said:
Well first off, let me say I'm an idiot and just didn't think of what Mod really is, "Modular Division" (thanks Adam Kinney -
http://www.adamkinney.com
for setting me straight), so of course division would happen before division...man I'm dumb sometimes! :P
Jerry, that's very true that +1 would make it so it doesn't show at the top of the table, but in my mind what it does for me is make the numbers that it counts through 1 based instead of 0 based. So the first time, it does 1 Mod 12, second time 2 Mod 12, etc...as for the 12 instead of 11, the Separator shows up AFTER the item itself, so once it's found the 12th item in the list, it should SHOW the Separator (which is after the 12th item). Hope that clarifies what I meant. Also, we all work differently up inside that head of ours, so what it means to me may mean something totally different to another person. I guess that's been demonstrated here. ;)
#
April 13, 2004 4:37 PM
Adam Kinney
said:
Glad to help. See what happens when you don't have anyone to talk outloud, too :D
#
April 13, 2004 5:21 PM
Mike Krisher
said:
Erik,
Great blog. Just FYI. That "x" and "ok" bug has been apparent since the 2002 OS. There is a way to REALLY close an app by capturing the "x" or "ok" tap. I'll have to look it up in a book I have and I'll pass you the VB code.
Are you writing the article just about Pocket PCs or are you touching Smartphones as well?
-- Mike
#
April 14, 2004 12:09 PM
HumanCompiler
said:
Hi Mike,
The article is actually just about SmartPhones, but it just so happens that about the same time, they started having me do PocketPC apps as well.
#
April 14, 2004 1:15 PM