Alex's musings about .NET and other Microsoft technologies
Erich, for SQL server the same tool exists: it's called AdeptSql, there's a free trial available for download.
PingBack from http://www.chrisbellini.com/2006/07/05/i-wouldve-been-a-great-ninja/
I know I'm jumping in here a bit late but I thought I might add my opinion for the record :)
An exception should be thrown from any abstraction layer when the requested behavior of that abstraction layer could not be completed. For example, Calling FileSystem.OpenFile should throw a FileCouldNotBeFoundException if the requested file could not be found. In any given app, it could be a regular occurance (not exceptional) that a requested file is not found. For example, go to the File->Open in notepad and enter in a non-existing filename. Deep in the code for notepad, there could be a call to FileSystem.OpenFile, which in this case would throw a FileCouldNotBeFoundException. This would be caught in the appropriate abstraction layer (could be the GUI layer), where the error box gets sent to the user. It is also possible that there is some call to FileSystem.DoesFileExist(...). This should not throw an exception if the file could not be found because the DoesFileExist logic could be completed fine, and returns its value of false, no need for an exception.
So, my point is, you can't decide whether or not to throw an exception based on whether the situation is "exceptional" in the application. You should throw an exception if the requested logic could not be performed for any reason. At least, this is my guideline.
Great story! Just remember: when pounding a nail with a glass bottle, wear eye protection!
wd
PingBack from http://blogs.msdn.com/clauer/archive/2006/07/19/670975.aspx
Really funny! The guy shows a table but doesn't show where is the table coming from! Look at most of PHP websites, most of them crash very easily, Even the Zend website, It crashes so often and you see the php error page, but if you have used ASP.NET 2.0 you know that it got a wonderfull speed! Trust me. And something more, in a shared hosting system, can you manipulate php source codes and use your own php? Do not make me laugh! And is Oracle free? How much is a WINDOWS hosting more expensive than LINUX? Not that much for a shared hosting! And something more, why so many people are defending php and not so many people defent asp.net? I guess because most of asp.net users are enterprise developers and do not have enough time, trust me dudes!
I just stumbled upon this "non-blog" while searching for an SQL Agent tool for 2005 Express. Since most of the responses are rather old I was wondering what kind of progress you've made and if your Express Agent was available for use yet?
Thanks for posting this; it's clear, concise example of UDTs that makes a great response to why people should use them.
Hi! I'm very interested too.
A free program with that features would be very nice for all. Please update info.
Thank you
This is greate product.
I extend your product "Smart Paster 2005",to add [Paste As]-[XML Document Comment] function.
This function does:
* HTML encode
* Insert "///"(if VB, "'''")
source:
http://www.stbbs.net/~junichi/archive/smart-paster-2005-xmldoccomment-enhanced/SmartPaster2005-XMLDocComment-enhanced-src.zip
binary(installer):
http://www.stbbs.net/~junichi/archive/smart-paster-2005-xmldoccomment-enhanced/SmartPaster2005-XMLDocComment-enhanced.vsi
my company actually uses express for some of our smaller clients and this app would be an extraordinary help for our services... right now we are emulating an agent using sqlcmd and batch files but this would be stupendous. id like some info and possibly help out
But how can change it, say from char(1) to char(2)?
since you cannot drop it if it's already referenced.
The point of user-defined type is to keep inconsistency, now it canot be changed since it's defined.
Thanks for your help.
*pixellation
(apologies)
I found this interesting, But I am still confused as a beginner, which technology should I learn?
thanks
Very many thanks for a good work. Nice and useful. Like it!
Here an open-source solution:
http://www.codeproject.com/useritems/SQLAgent.asp
Oh, sure, as long as the back end is stable and robust, who gives a damn whether anyone except the programmer can actually use it? The interface should always be based on the fundamental and immovable assumptions of whatever genius built the database schema.
An interface anyone can use without at least one computer science degree is not only a sure sign that not enough 'design' went into the architecture, it's also downright dangerous! Hell, if anyone can use your corporate accounts software, anyone can screw up your corporate accounts.
This is a must-have for me with SQL Server Express. I'm glad someone is tackling this. Is the release version ready yet?
TIA, Kris.
@Alex,
I noticed that SQL Express has all the same tables and stored procedures for managing jobs, just nothing to actually run them.
For example I have a script that I wrote to create a couple of jobs via sp_add_job, sp_add_jobstep, sp_add_jobschedule etc. and maintenance plans via sp_add_maintenance_plan. Everything gets put into the appropriate SQL tables (sysjob*) in msdb as per normal just there isn't an agent to actually start execution. Is that where you will be storing the job details?
I could care less about pretty GUI's, I'm happy to write it all out in script. If you are close to a version 0.1 that runs, with limited features or GUI I think you should release it.
If you are still in need of assistance to help get it out the door let me know. I'm competent in C++ and SQL internals.
-Chris
Alex,
You know I am SO onboard with you on most topics, but on this you've really lost me. Do you never use the designer in VS.NET, or use a code generator such as Codesmith or MyGeneration to auto-generate repetiive plumbing?
I have been developing for 7 years. I almost always use Enterprise Manager for initial development. Its just much faster. If i'm making changes to an existing database, I'll use EM to script it out for me. Also, others mentioned tools like RedGate and AdeptSql to merge changes automatically. This saves a lot on development time. Its not that i can't write my own DDL, its just that it saves time not to.
Only when I'm doing some REALLY complicated schema migration do I script this all out by hand.
Craig
I entirely agree that only scalar values should be allowed in database columns. The trouble is that one person's "atom" is another's "bucket o' quarks with electrons in shells around it".
After all, if you look at them the right way, strings aren't really scalars -- they are arrays of characters. Even integers can be seen as arrays of digits. But obviously 1NF doesn't require decomposing these.
1) By UCS-2 you hopefully mean UTF-16, as UCS-2 is not capable of representing all Unicode values. Unfortunately, UTF-8 and UTF-16 don't sort the same way on a simple binary sort order. UTF-8 sorts according to the order of Unicode codepoints, but UTF-16 does not.
2) If talking about the past, it's fine to capture moments in time using a single time zone such as UTC and push off converting to local time to the interface layer. For future moments, that won't work: you need a local time and a place. Nobody knows what UTC instant corresponds to "midnight November 1, 2010 in New York", because Congress could change the time-zone rules or (more likely) the daylight-savings rules. It's happened before.
3) I correct you: you are wrong about complex numbers. You need 'em for anything concerned with electrical engineering, a perfectly fit subject for relational databases. And to their users, complex numbers are no more non-atomic than decimal fractions are.
1. You cannot sort any string using binary, and especially not unicode strings.
2. I agree, that is a hard problem.
3. I have to agree with you here.
Dude, if you think the only use of imaginary numbers is in solving differential equations, I think it is time to go back to uni and study some more maths.
Quite correct, dabookshah, if not very polite. I could well imagine wanting to store a bunch of complex Fourier components in a database. Logic would then suggest storing the amplitude and phase in two separate columns.
I've usually heard LOL refer to "Lots of Laughs", so even though LOLOLOLOL is RDS (Really Damn Stupid) it could still make sense as Lots Of Lots Of Lots of ... Laughs
Free Agent for SQL Server:
http://www.lazycoding.com/products.aspx
When I started using modems, BBS's, chats, Internet and IRC in 1994 and 1995, I was explained it was embarrassing to laugh out loud alone, so LOL was a warning to the typer that he has gone too far, because now the reader is laughing out loud, possibly embarrassing him/herself to family members or neighbors. I was explained LOL is Laughing Out Loud (too loud, alone, sitting on a computer).
We need to follow Disney's lead (http://play.toontown.com/playersguide/PGPage.php?pg=37) and defeat the evil cogs with lots of cream pie and even more gags.
Alex, I agree that programmers are required for a large portion of the custom apps that exist today in the enterprise. What we're targeting is a class of applications that have been resistant to the custom development process. These tend to be apps that can't tolerate the time and expense of custom app development. They are a myriad of less-complex applications and business processes that today are generally unautomated or at best handled by speadsheets or Filemaker or Access.
Our focus is business applications. The term 'Enterprise' means different things to different people. To some, it means large-scale complex applications. To others it simply describes the size of the business. We say that we are targeting small and medium size businesses and enterprise workgroups. I think the press sometime translates the term 'workgroups apps for enterprises' to 'enterprise apps'.
Enterprise _MANAGER_
For managing.
Not for development.
We've seen this kind of stuff come and go dozens of times. The only thing Coghead will ever succeed in doing is creating a niche market for programmers who have knowledge of Coghead.
Smart business people don't WANT to mess around with this stuff - that's the whole point. Someone will sell a detached executive on all the pretty flashing lights of this application and in the end the customer will STILL go out and pay the technology people to use the pretty new tool they just bought. Or worse yet, they'll pay the technology people to dig them out of the immense hole they dig for themselves trying to do something that is completely out of their element.
The customer will inevitably have it so hacked up and stretched beyond its operating limits that it would've been cheaper, easier, and more effective to just have a professional create precisely what the customer needed in the first place and move on with their business affairs.
It is indeed sad that our industry still has so many ignorant and/or arrogant people in it continually giving the industry a bad reputation to overcome. Programmers and even IT professionals in general just need to do their jobs and quit thinking they're so brilliant that they're going to single-handedly change the world with their eccentric ideas.
Alex's two second tutorial about 4GL, while lame and useless is a sharp contrast to what I read in Queue magazine (you can find it on slashdot as well) a few months ago authored (I think) by the same Greg Olsen you mentioned above.
Based on what I read, and what I see above, I'm guessing Greg knows, ummm, 20x more about this subject that Alex.
Another example of the "media" trying to take on a subject too complex for their own good perhaps?
Anyways - I checked the website and it does not look like Coghead is even available yet, so unless Alex has early access, how do you even have a basis for all of this? Did Business 2.0 decide to exclude you from the same article or something?
oh yeah, this tool is awesome. in vs 2005, works like a champ! SWEET!
-
jen
Have you checked out DabbleDB yet? I was pretty impressed at how they made a lot of the functionality of an RDBMS accessible to everyday schmoes and office workers. You still have the same problem of putting your data in a third parties hands, but the UI concepts they put forth in their application seem pretty solid.
I would be less afraid of a secretary/admin assistant designed DabbleDB than I would a secretary/AA designed Access database.
Graphical programming tools only really work for very specialized applications. The best example I can think of are 3D animation applications: your data is really well defined, everything is based on movement over a timeline, etc, the application is already visual.
The screenshot makes it look like a general programming language turned graphical, i.e., a programmer's flowchart. (if/then/etc.) These are unfortunately not that useful to untrained users, and limiting to programmers. Even really well-done graphical programming systems take expertise, but I'm skeptical that many companies will really understand that and take the time to train employees on the tool.
ROTFLOLSHIFTMSHS
Seriously though, they annoy me too as they are used to liberally to mean anythingf, and many of tmhe too extreme to apply usefully.
SQL Server CLR User Defined Types is Microsoft's attempt at supporting the new Object Relational Extensions of SQL3. However, I personally don't like the way M$ decided to implement this. Oracle has a much easier way of defining user defined types:
create type mytype as (
somenumber number,
somechar varchar2(50),
);
I don't have an opinion as to whether creating/using UDT's is a good idea tho...
I'm so glad across your blog post, I was in forum the other day, discussing the whole VB6 -> VB.NET, and this other bloke wasn't making much sense, and one thing he said was Modules are a Violation of OOP, which is a concept I really have had trouble coming to terms with, as in every other OOP book I have read they mention Modules.
The full forum thread can be found here
http://www.codeguru.com/forum/showthread.php?t=402024
R.E.S.P.E.C.T....
A friend of mine has an "Bed Head" and during my laughter he told me, that his barber calls it "pillow cut"!!!!!
thanks for your extraordinary hints... i am on my way to antialias some elder paintings of mine... looks fantastic so far...
Paint forever, powerapps for powerusers!
I think the reaction of this post is a similar one I hear from Linux fans. When someone views the world through a perspective where their focus and time are mostly consumed by running the environment they are a fan of (Linux, Rails, PHP, etc) - then they can't imagine a world where someone might want to use technology to achieve a goal that is only part of their day and need to leave time for their other duties such as running a business or being a doctor or writing a book.
Developers and hobbyist will always look at solutions such as Coghead and DabbleDB or Microsoft Office for that matter from a viewpoint that they are "expensive", "Untrustworthy" and "not under my control". But people who spend most of their day a few layers removed from coding or hardware tinkering are willing to sacrifice some money and some control to a trusted third party to recapture some of their time or better yet move initiatives forward much faster and in parallel with other initiatives.
Not everyone values their time at $0 and not everyone has lots of it to spare or a highly technical social group . For those people CogHead and DabbleDB are useful tools to let them play with different what-if scenarios quickly and at a low cost. It also lifts the burden of "simple" apps off of a developer and let's them concentrate on the really hard problems like generating pixel perfect PDF reports from these solutions or LDAP based integration of various solutions.
I think solutions like Coghead and DabbleDB will make interaction between non-programmers and programmers even better, giving each side a better respect for the intelligence and skills of the other. A user of these solutions will think twice before asking for help from a developer before thinking through their requirements because they would have experienced first hand the double and triple work that occurs when you don't think and plan things through in advance. They would have learned this from their time using Coghead or DabbleDB.
This thing looks awsom help to me
Its impossible to say wich language is better, its like about the most beutiful woman, the most beautiful is one near you :)
An anecdote comes to mind, from around 1980.
A friend went to a trade show where a salesman was showing off his new "natural language" database. "Just ask a question in English! This sample geographical database has all the rivers and mountains in the world."
My friend typed: "What are the tallest mountains in Africa and Europe?"
The computer replied: "There are no mountains in Africa and Europe."
Which was correct, technically, but not useful.
I think that the alalogy is a bit bleak. ;)
Often it's more in the line of:
"I am trying to hang a painting and thought that I would use a hair pin, as I have a lot of those. I tried to use a hammer to get it in, but that doesn't work at all. Now I have put the hair pin in a power drill, but the problem is that I have to use so much force to get the pin into the wall, and the hole is getting far bigger than the pin so it doesn't sit very well. What can I do so that I don't have to use so much force, and how can I make the hole smaller, so that the hair pin will fit?"
Of course the first replies comes with suggestions to try to sharpen the hair pin, and to use a different kind of power drill...
;)
Holy Crap... that's funny!
[The computer replied: "There are no mountains in Africa and Europe."]
Given that there are, in fact, mountains in Europe (the Alps?) illustrates exactly why these efforts have continually failed over 20 or more years of trying.
An anecdote of my own comes to mind. There is no problem with any weekend handyman trying to rebuild his automatic transmission if he really wants to try, but he better be prepared to accept the wasted time and inevitable expense when he finally realizes that he really does need a trained professional to complete the job accurately and correctly.
There is a reason the open market drives everything towards specialization. Business people conduct business. Programmers write programs. This is the most efficient use of both time and money. Trying to reverse the tide of the open market is just begging for failure.
Hi,
Just resolved an issue I had so I thought to post this to hopefully help others if need be;
I have my 'My Documents' target set to 'c:\me' and as such the installer installed the Addin to 'c:\me\Visual Studio 2005\Addins'. However, in order to get the addin to work I had to manually move it to 'c:\Documents And Settings\<user>\My Documents\Visual Studio 2005\Addins'.
Not sure if this is an installer problem, a Visual Studio problem, or a configuration problem. Works now though and is so time saving!! Good work and thank you.
@Buford: There are mountains in both Africa and Europe. The problem was the program did the intersection of the set of mountains in Europe with the set of mountains in Africa, which of course gives the empty set,
because "There are no mountains in Africa and Europe".
I'm glad that I've gotten the MVP for multiplayer notepad five years running. Great stuff.
Pixilation? This is related to pixies? Perhaps you mean pixelation, which relates to pixels.
Apparently so… Holy Crap: I'm an Official MVP for MS Paint
PingBack from http://hulk.osd.wednet.edu/~cherrykr/?p=1024
Get rid of Brewster
Rockstar is amazing. I could drink it all day. But I'd rather not die of heart attack and too many stimulants at once.
One or two every now and then is fine.
I love the taste.
If the "NERDS" candy was liquid and carbonated, it would be this drink.
PingBack from http://digged.wordpress.com/2006/11/11/holy-crap-im-an-official-mvp-for-ms-paint/
ur noob dude.. u dont know how to use teh paint. its not a tool its a weapon for your mind.. you should use the paint with your soul... ur noob dude.. ur a noob! mvp ah.. u suck!
You are a true artist!
I struggle with the words to describe how elated I am to be chosen for this award. Sure, I’ve worked...
Are you kidding? You sure do know how to make full use of MS Paint. I can't live with that. At least, if I have to, will get something like <a href="http://www.neohide.com">GIMP</a>, as substitute.
Is this a joke?
And Keith, I think you meant www.neohide.com
-=|Mgkwho
Bahahaha! I guess that's better than MVP for Microsoft Bob!
https://gettingreal.37signals.com/
I think 37 Signals is in agreement.
I think it's a fair assumption that people who are unable to express their requirements in a complete and consistent fashion when using their native language will not be able to create complete and consistent programs with any tool in the world. There is much more to software development than just knowing the programming language.
On the other hand, I have little doubt that tools that make developement easy (for a limited range of applications) can easily succeed in the market when contrasted to the multi-tier, multi-framework overkill that some people create even for the most simple tasks.
>A geospatial location is described with Latitude and Longitude. Not Lati-longi-tude. These are two separate attributes and putting them in the same column violates First Normal Form
I think you are completely wrong. They are atomic in that both are required in the attribute. A latitude on its own is meaningless wrt a point on the globe, just as an hour number is meaningless wrt a point in time.
There are many attributes that contain what look like multiple values but are atomic values. For example, the quads in an IP address. For example an IP address without a subnet mask. For example the digits in a phone number.
Arguing that these should be split into component properties is like arguing that date time information should be stored like this:
DOBYear int,
DOBMonth int,
DOBDay int,
DOB Hour int,
DOBMinute int,
A user-defined type, for example DateTime, is the best way to store this data.
It is just in match with XP's popular motto 'get it work, get it right, get it fast'. And it's OK.
Yeah I know what you mean.
I still have some code in production written on a bad day where the variables are named "idiot", "stupid" etc. It's like coded code, only uberbob knows what's going on there! Good luck to anyone else.
fnarr!
"Programmers and even IT professionals in general just need to do their jobs and quit thinking they're so brilliant that they're going to single-handedly change the world with their eccentric ideas."
Yeah, that kind of attitude has never resulted in anything good or useful.
I love thedailywtf, but you're quite outspoken on some things I disagree very strongly with.
I won't say mySQL is better than Oracle or SQL Server... but I will say that depending on your database to enforce data integrity (and clearly misinterpreting and generalizing a quote in which you added embarassingly telling emphasis) is NOT a good idea.
I've been involved in two relevant large projects that have employed both mySQL and Oracle to hold hundreds of gigabytes of data. I can say that your problem with database-level data integrity protection is only really valid when your programmers are distanced from the nature of the data, the database itself, or both.
At the mySQL/postgre shop, we managed our own DB. The programmers knew the business rules, and we made sure our code obeyed them. We did not have to worry about making sure our queries weren't spat back with data integrity errors; that's another level of error to deal with, when solid coding and knowledge of what you're doing can and should save you that trouble.
At the Oracle shop, there was a layer between the coder and the DBMS -- DBA's. While I'm not against having them, DBA's can act as an excuse for programmers not to be as familiar as they should with the nature and type of the data they're working with. Is that a failure of the DBMS? No. Is that a good argument for database-level integrity checks? No. That's a good argument for programmers to know what they're doing before they do it.
Are database-side integrity checks a bad idea? No, I can see the utility there. Are they necessary? Absolutely not, unless you plan on writing bad code or maintaining good code poorly. And they still don't solve that problem, because the schema will probably need to be changed and updated as well; at that point you run into -exactly- the same problem, except now you're potentially dealing with people who have no idea where or how the da