@Shortjob said:
aye. you get it and the same place which sells alcoholics.
Selling alcoholics has two major problems:
1) Who would want to buy one?
2) Slavery is illegal in most places...
@Shortjob said:
aye. you get it and the same place which sells alcoholics.
Selling alcoholics has two major problems:
1) Who would want to buy one?
2) Slavery is illegal in most places...
@Sutherlands said:
I'm used to my dev workstation being more powerful (non-graphics-wise) than my home machine, but dannnng... a 256GB SSD??
They are not expensive ( under $500) - I prefer the one by Crucial.... http://www.google.com/products/catalog?hl=en&q=256+gb+ssd+2.5&bav=on.2,or.r_gc.r_pw.&biw=1659&bih=923&wrapid=tlif130756871453610&um=1&ie=UTF-8&tbm=shop&cid=4341925322498748560&sa=X&ei=j-rvTaz9B-Pu0gHX9PD7DA&ved=0CGQQ8wIwAg#
In the C# language, the order of evaluation is spelled out more explicitly. The order of evaluation for operators is left to right.
Please learn to read and NOT misquote!
Operands in an expression are evaluated from left to right. For example, in
F(i) + G(i++) * H(i)
, methodF
is called using the old value ofi
, then methodG
is called with the old value ofi
, and, finally, methodH
is called with the new value ofi
. This is separate from and unrelated to operator precedence.
"i" is consistently evaluated from left to right independent of the order in which the result of F(), G() and H() are combined [G() and H() are multiplied before being added to F()]
This is in contrast to C/C++ where one must know where the "Sequence Points" are in order to dermine the value of a given element that changes during the evaluation of the expression and is used multiple times.
You would love working in environments where I get to spec the developer's laptops. Standard configuration: i7 processor, 8 [for juniors, and "line" developers]or 16 GB [for seniors, leads, architects], 256GB SSD, 500GB SATA (both internal).
Also, EVERYTHING is run inside of Hyper-V VM's - and there are NO performance issues.
@da Doctah said:
@Anonymouse said:
"What do you use to put out a fire? a) Water - b) Bananas"Depends what kind of fire it is. On grease (class B) or electrical (class C) fires, bananas would probably work better.
I want to see Video proof....
Extremenly simple, but it may violate Einsteins principle: "Make things as simple as possible...but no simpler.."
@Lorne Kates said:
Response.Write("[ " & API.TheDailyWTF.GetMsg(255288).Text().Split("[")(1).Split("]") & " ]")
Took me a few seconds to "Get it"...then I fell out of my chair!!!!
It is more verbose [94 vs. 60] characters - but I dont think that should EVER be a deciding factor. Definately a prize for cleverness, but "clever" programmers typically cost a company more....
Not making the code cleaner????
var seq = new List<string> { "1", "2", "3", "not a number", "four" };
<font size="3" face="Times New Roman">
</font>var nums = from item in seq
select item.TryParseInt() ?? 0;
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p> Does anyone else want to post a more concise and readable solution that will result in</o:p>
<o:p> [ 1,2,3,0,0 ]</o:p><o:p> </o:p>
<font size="3" face="Times New Roman">
</font>
Some really good comments. My responses.
General comment on exceptions...I work on some extreme reliability systems. It is not uncommon to have the act of throwing an exception (even if it is caught) to trigger a "CritSit" if the exact scenario (i.e. context, stack trace, etc.) is not already on-file as a known operational condition. This CritSit can trigger a persons pager (or modern equivilant) going off in the middle of the night to examine the cause and approve continued use of the system.
For cleaner .NET code:<FONT size=2 face=Consolas><FONT size=2 face=Consolas></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>static</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> </FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>class</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> </FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>Helpers
</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>{
</FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>public</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> </FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>static</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> </FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>int</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> ? TryParseInt(</FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>this</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> </FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>string</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> source)
{
</FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>int</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> value;
</FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>if</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> (</FONT></FONT><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas><FONT color=#2b91af size=2 face=Consolas>Int32</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>.TryParse(source, </FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>out</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> value))
</FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>return</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> value;
</FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>else
</FONT></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>return</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> </FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>null</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>;
}
}</FONT></FONT>
<FONT size=2 face=Consolas><FONT size=2 face=Consolas>Allows:</FONT></FONT>
<FONT size=2 face=Consolas><FONT size=2 face=Consolas><FONT size=2 face=Consolas><FONT size=2 face=Consolas></FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas> string</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas> a = </FONT></FONT><FONT color=#a31515 size=2 face=Consolas><FONT color=#a31515 size=2 face=Consolas><FONT color=#a31515 size=2 face=Consolas>"1"</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>;
</FONT></FONT><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas><FONT color=#0000ff size=2 face=Consolas>int</FONT></FONT></FONT><FONT size=2 face=Consolas><FONT size=2 face=Consolas>? value = a.TryParseInt();</FONT></FONT>
<FONT size=2 face=Consolas><FONT size=2 face=Consolas></FONT></FONT>
<FONT size=2 face=Consolas><FONT size=2 face=Consolas>
</FONT></FONT></FONT></FONT>@dogbrags said:
Now I have to call tomorrow and listen to someone there explain to me why $0.00 and $585 are the same amount. Or, explain to me why I keep getting a letter saying I'd been overpaid; and how I can remit $0.00 back to them.
Simple you were not overpaid anything, but since you did not respond, you are now liable for $585 in penalties and interest.
[FWIW: This actually happened with the IRS a few years ago to me...]
@Chewbacca said:
Nowhere. It was not your message I was replying to.It might be a shock to you, but this is not a private conversation just between the two of us.
Whatever. I just remembered why my post count on here is so low. Pretend I wasn't here.
There is a presumption that a post on a topic relates to either the original entry, or the most recent entry. Any deviations should be noted. Considering that the original topic was about XML type comments, and that GhostDoc [which generates XML comments] has been a major part of the discussion, and finally that you replied right after a post directly related to XML comments...
Why would you think that other readers here would automatically infer that you were talking about a completely (and very largely unreleated topic)????
Take care...
@Chewbacca said:
I have yet to see any meaningful XML comments in a single line, let alone preceding every single block of logic.
Oh well, live and learn.
Where did I ever say anything about a single line? or even "block of logic"? XML Comments are applied at the Type and Member Level.
<font color="#808080" size="2"><font color="#808080" size="2">//</font></font><font color="#008000" size="2"><font color="#008000" size="2"> </font></font><font color="#808080" size="2"><font color="#808080" size="2"><summary>
</font></font><font color="#808080" size="2"><font color="#808080" size="2">///</font></font><font color="#008000" size="2"><font color="#008000" size="2"> The Null Logger class. This is useful for implementations where you need
</font></font><font color="#808080" size="2"><font color="#808080" size="2">///</font></font><font color="#008000" size="2"><font color="#008000" size="2"> to provide a logger to a utility class, but do not want any output from it.
</font></font><font color="#808080" size="2"><font color="#808080" size="2">///</font></font><font color="#008000" size="2"><font color="#008000" size="2"> It also helps when you have a utility that does not have a logger to supply.
</font></font><font color="#808080" size="2"><font color="#808080" size="2">///</font></font><font color="#008000" size="2"><font color="#008000" size="2"> </font></font><font color="#808080" size="2"><font color="#808080" size="2"></summary>
</font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">public</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">class</font></font><font size="2"> </font><font color="#2b91af" size="2"><font color="#2b91af" size="2">NullLogger</font></font><font size="2"> : IExtendedLogger
</font><font size="2">{..}</font>
<font size="2">That is the source material that generates: http://api.castleproject.org/html/T_Castle_Core_Logging_NullLogger.htm (Look at the very first line)</font>
<font size="2"> Similarly http://api.castleproject.org/html/AllMembers_T_Castle_Core_DependencyModel.htm is generated from:</font>
<font size="2"><font color="#808080" size="2"><font color="#808080" size="2">/// <summary>
/// Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
/// </summary>
/// <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param>
/// <returns>
/// <see langword="true"/> if the specified <see cref="T:System.Object"/> is equal to the
/// current <see cref="T:System.Object"/>; otherwise, <see langword="false"/>.
/// </returns>
public override bool Equals(object obj)
{
}
ps: It is good that a Wookie lives 600 years...becuase it seems they still have much to learn...
</font></font></font>@Chewbacca said:
Im I the only one around here that comments WHY the code does what it does, rather than WHAT it does?
The code clearly states what it does (or so help me, I shall bring the Peer Audit Hammer), so why repeat it in a comment?
For the type of comments you posted (inline with the code) you are 100% correct. But that is NOT the purpose fo the XML code comments being discussed here.
XML Comments are intended to be processed (there are multiple tools, my favorite is SandCastle) to produce a set of pages formated like: http://msdn.microsoft.com/en-us/library/system.object.aspx
So you have <Summary>, <Remarks>, <See>, <SeeAlso> all as short comments at the beginning of the class and each member. Run it through the tool of you choice and "bingo", you have your refernece documentation - which will often be used by people how do not have access to the code (such as anyone ho receives it as a compiled assembly.
Well the GlobalSuppressions is generally a WTF (but not always) the remainder do not seem a problem for me. As others have pointed out if GhosDoc writes something really wierd, it is likely that the name of the element could be improved.
CodeAnalysis time for a build should have 0 impact. This is what Gated Checkins and multiple Build Configurations are exactly designed for, Typically you run the fastest possible build during development, then do a gated checkin - all of the analysis performed, all of the unit tests run, and then only if everything is good does the checkin happen. If there is a failure, you fix the code (and depending on the type of failure) run the appropriate configuration locally.
It is also important to remember what XML document comments are for - the generation of external documentation that is the functional equivilant of MSDN pages. Far too many developers fail to remember this. Detailed coments about the implementation (what you need to understand how it works as opposed to what you need to use it) belogs as "regular" comments in the code, same as they alsys have.
@frits said:
I would not expect any kind of modern webiness from the people who bring you the microcalorimeter .
What is unusualy about that??? Measuring energy is still commonly done in calories [the energy to heat one gram of water one degree celcius] rather than in Joules. When dealing with transmission losses, we ae talking very small amounts of energy being lost over a short disance.
It is also important to remember that although this was updaed in 1993, it is largely late 1950's to early 1960's technology, makng the use of calorie over Joule even more common.
@Pascal said:
Idea for a future thread topic: "What's the worst you've ever screwed up in IT?". May not be a fair fight though, when I talk about my screwups I use words like worldwide and ATM.
I get to use words like NAVAL WARSHIP, GUN, etc.... unfortunately you need a clearance to hear about them [truthfully]
I dont see a WTF in a WebSite requiring acceptance regarding "Terms of Use"....Am I missing something? Or have I just had too much green beer??
@CaptainCaveman said:
In these shops, you'll hear conversations between J. Random Developer and P.M. Shithead that go like this:
"Hey we already developed an address form, with validation for a past project, why can't we just reuse it here?"
"If you can't get this done the way I say, I'll walk you out and get someone in here who can!"
Ideally it should have been "Hey we already developed an address form, with validation for a past project, I am going to re-use that (unless there is a valid technocal reason) or I can just go grab my hat...."
ps: 100% on target with your comments about Agile/Scrum.
@PeaceFaker said:
[Quote user="TheCPUWizard"] So your statement of "...the EULA for the relevant part which states that any software I grab from MSDNAA I can keep forever ..." does not seem to match the actual MSDNAA EULA! [/Quote] Aparently the EULA has evolved since my last read (when we got the MSDNAA accounts 3 years ago), since I can't find any relevant parts to my statements anymore. Still it is sold to us students as gods gift to humankind with free all you can eat Windows.
[repeat disclaimer: I am not a Microsoft Licensing Expert...information posted is simply based on my experiences]
The the best of my knowledge the MSDNAA is not "sold" to Students, it applies to schools and other research type environments, that may make have students. The licenses belong to the institution. There is a distinct program for students at most schools, that is completely independent of the schools participation in MSDNAA. I do not have the current information regarding authorized use and licensing for the student programs(s).
One thing to keep in mind is that these programs are completely independent (in terms of licensing and EULA) from regulate paid (or complimentary through a number of channels) MSDN subscriptions, and that MsDN subscriptions come at differernt levels [as I previously pointed out one implact of the level is the ability to use a copy of Office for general-use rather than development.
People seem to forget that the "D" in MSDN is for "Developer" and it's primary purpose is to provide assistance TO DEVELOPERS throught a number of channels: MSDN Magazine, MSDN Forums/Blogs, MSDN Downloads (public and subscriber), and quite a few more.
@emurphy said:
At least in the part you quoted, it doesn't say "sole purpose", so you could presumably install Office and do whatever Office can do (including e-mail via Outlook) and still be in the clear.
Yes, for Premium and Ultimate MSDN Licenses (but not the lower level SKU's) you can use ONE copy of Office for any purpose that you could use a store bought Retail Copy.
@PeaceFaker said:
Much of my frustration comes from being a student and getting MSDNAA showed down my throat every time I question the need for submitting everything as a MS Word document and the teaching of Excel as the tool for every use. Funny thing is MSDNAA does not contain MS Office. And right now I don't want to go grepping the EULA for the relevant part which states that any software I grab from MSDNAA I can keep forever but not use for commercial purposes (fair enough) nor can I let anybody else use my computer not even family (wait what?). And the selling point of MSDNAA to schools/students is that you get Windows to use on your home computer.
[Quote user="Microsoft"]
From MSDNAA: http://msdn.microsoft.com/en-us/academic/bb250608.aspx
Your rights. 2) let your staff, faculty, and students use such copies, and make one additional copy on their own computer or other device, but only (a) to develop, support, conduct, or take the STEM courses, labs, or programs you offer; (b) in non-commercial STEM research on your behalf; or (c) to design, develop, test, and demonstrate software programs for the above purposes.
a. Security measures. If you provide the software on media to your staff, faculty, or students, you must do so only on a temporary or "loaner" basis. You must have all staff, faculty, and students to whom you provide any copies of the software agree that their use of the software is governed by these terms, regardless of any license agreement accompanying the software. You must keep records of the number of downloads of the software from your servers, and records of the staff, faculty, and students to whom you provide media containing the software. You will permit Microsoft to inspect such records upon request. You will use your best efforts to prevent use of the software by anyone other than your staff, faculty, and students or for any purpose not permitted in these terms.
[/Quote]
So your statement of "...the EULA for the relevant part which states that any software I grab from MSDNAA I can keep forever ..." does not seem to match the actual MSDNAA EULA!
@RHuckster said:
What if I wanted to create an .NET app that generated Word documents, printed them to a table, then a robot would take a picture of that document on a wooden table, upload that back to the test environment, do some manipulation using MS Paint, print it again, have the robot scan the photo, take it back to the test environment, and then send that image to myself via MS Outlook?Are you saying that the draconian license wouldn't even allow me to do that??? Pfft, I'm with Peacefaker. Linux would let me do it, albeit with OpenOffice and Thunderbird.
If that is a potential end-end scenario for testing your application,. then it should all be good [FWIW: I am not "with" Microsoft, any comments on licensing are based on having run a software consulting firm for the past 25+ years].
Just be careful not to use the environment with MsPaint for drawing Unicorns that are not related to your development effort.
@PSWorx said:
So I may develop a program but I may not document it? I admit, that's at least in step with practice...
Usage of Office depends on your subscription:
@Microsoft said:
If you have an Ultimate or Premium level subscription, you can also install and use one copy of certain desktop applications on one device for production use:
- Microsoft Office Professional Plus 2010
- Microsoft Office Project Professional 2010
- Microsoft Office Visio Premium 2010
To be honest, I have never heard of a case where a person is using the above tools for the SOLE PURPOSE of creating documentation for a program they are developing has been pursued. Where problems arise is that it is very easy to create a document that is in no way related to the development (et. al.) effort, triggering a license violation.
Nearly all legitimate developers with MSDN subscriptions use a "normal" (non-MSDN) license for their operating system on their development and other "regular" boxes. The availability of operating systems via MSDN is creally for the creation of Test Environments.
For example, you normally develop using a Window 7 [Full License Machine]. You want to verify that your program runs properly under Windows Server 2008 R2 Enterprise. Creating a (physical or virtual) machine for this purpose using the MSDN subscription is allowed.
@dhromed said:
Unfortunately, an employee is no such thing. It is not easy to quit and get a new job. There are strong effects on one's life if one quits and tries to get a new job. You appear to trivialize that; making it seem as though getting a job is the same as getting a loaf of bread. It's not a very realistic point of view.
I never said (or even implied) that getting a new job was easy, especially in todays economy. The closest I came was mentioning "seeking" (not finding) another job. What I do believe is that being able to go to bed at night knowing you did something that you can take (healthy) prinde in is worth more to me than any paycheck.
@Buzer said:
Because there are (or can be) legal consequences for doctors and accountants for being unprofessional. There are no legal consequences for developers expect in some rare cases (like developing a virus is illegal in Finland), only for the company involved. And if the company (=developer's manager) tells to do X even if developer can tell it's a bad idea, he can either do it or get his final check (in which case someone else will do it).
Legal ramifications are relatively new [a few hundred years], the ethics date back at least 2400 years to the Hippocratic oath.
I don't buy the "I can do it, or someone else will"...Would you use this same argument to rob a store in a bad neighborhood that had no security, simply because it is highly likely that it will be robbed by someone else in the near future?
If more people made the decision to "get his final check" and seek employment at a firm with better professional practices, the situation would change. "the boss" would eventually be fired (because everyone kept resigning within a short period of being hired).
@PJH said:
...Because I was told to. .
"I was just following orders" - didn't work then, shouldn't work now. Barring a few exceptions, an employee is free to tell their boss that they will not engage in what they believe to be unprofessional activity, clean their desk and leave.
I've been there, and that is eactly what I did. These days when I engage with a client, it is known right up front that since I am putting my (company's) name on the line, all work will be done to a standard so that I would be glad to see the results published [obviously the reality of disclosure/publication is subject to NDA and IP issues]
FWIW, there are reproductions of many machines available. Check out SpareTimeGizmos.com for two of my favorites!
Remember, "being a youngin" is a self curing situation...
@Master Chief said:
What's kinda sad is those old-as-hell machines would probably still work today if we dug em outta the attic and plugged em in, whereas the new computers usually die on their own (repairable or otherwise) by their 3rd year of operation.
They just don't build em like they used to...
My 1968 DEC PDP-8 still works. Primary problems iswear on magnetic surfaces, and the companies that did the plating are long gone.
My ASR-33 Teletypes are not is that good of shape (although they stil semi-work). If anyone knows a teletype repairman (sure to be old and retired), let me know. I am willing to pay significant $$$....
[The above is 100% serious!]
I well remember the very first IBM PC. Released on August 12, 1981- I got my first hands on experience the next month....For those who dont remember the birth....
The $1,565 price bought a system unit, a keyboard and a color/graphics capability. Options included a display, a printer, two diskette drives, extra memory, communications, game adapter and application packages — including one for text processing. The development team referred to their creation as a mini-compact, at a mini-price, with IBM engineering under the hood.
The system unit was powered by an Intel 8088 microprocessor operating at speeds measured in millionths of a second. It was the size of a portable typewriter and contained 40K of read-only memory and 16K of user memory, as well as a built-in speaker for generating music. Its five expansion slots could be used to connect such features as expanded memory, display and printing units and game "paddles." The unit also ran self-diagnostic checks.
Containing 83 keys, the keyboard was connected to the unit by a six-foot coiled cable, which meant users could rest it in their lap or on the desktop without moving the rest of the system. It also included such advanced functions for the times as a numeric keypad and 10 special keys that enabled users to write and edit text, figure accounts and store data.
Options included:
@blakeyrat said:
"No really, using MS Access for our online application is a very very very bad idea. We absolutely positively should not do it. Never." Manager orders MS Access to be used anyway. App is deployed. Performance is as the programmer warned. At this point, Mr Manager probably orders purchaser of all upgraded servers to fix the problem.
And the programmer probably gets called to the carpet or fired.
Where I see the WTF here, this that the programmer agreed to do the work if it was such a bad Idea. If a person goes to a doctor and says "I want my healty lliver removed", the doctor is going to refuse, no matter how persuasive the person is. If a person goes to a CPA, and requests that known fradulent documents are files, the CPA will refuse (excluding completely unethical ones who would be subject to severe legal reprocussions if caught). It is simply a matter of professionalism.
WHY does the same not exist in the software industry???? Developers want to be treated as "professionals" and not "drones", but regularly violate "professional" standards.
ps: I agree that Access was (is?) abused horribly. But contrary to much of the opinion here, I have been involved with significant business applications (multi-user, large DB, major logic) that was developed (not thrown together) using Access (going all the way back to Access 2.0) that were stable, performant, and well maintained.
Why not simply do what I do when developing programs [I am based in New York City fwiw] that will be localized later in the process [typically by client teams]. Simply "babblefish" the code to get (poor) translations into each of the targeted languages (include "potential" languages too) and measure the textspace required. Sure, the translations will be rotten and useless if you want a proffesional result, but I have found that it solves the problem 95%+ of the time.
@Zadkiel said:
The first hard-drive I ever bought was 20MB. And I picked it, rather than the more expensive 40MB version, because the salesman told me, and I quote: "You'll never fill 40 megabytes - never in a million years"
The first Hard drive I worked with (did NOT buy it personally) was 32KW (yes, 32768 12-Bit words of memory...FWIW, it was a Drum, not a "Disk".....
@RogerWilco said:
Best example and WTF I have seen, was when I learned that 40% of our Dutch national electricity grid was controlled by an Excel'95 spreadsheet running on Windows NT SP3, because it broke on anything newer and the "developer" had left over 10 years ago. This was as recent as 2007.
My first (mis-)read of this post was that 40% of electricity in the Nederlands was consumed by people running Excel Spreadsheets....Need to get some more sleep....
@snoofle said:
Where do they get these people?
That is a good question. It is extremely hard to find a "decent guy"...especially one who is a "big manager"
@<FONT size=2>Eric Spiegel</FONT> said:
Lost in all of this are the dedicated engineers who have put blood, sweat and tears into an organization, only to be left behind when technology changes. But is it their own fault? The company’s fault? Or just a natural cycle?
100% the persons fault. Anyone who even thinks about going into a technology field, should know that technology is rapidly changing. They should also know that (the vast majority of) companies are not going to pay the employee to "keep up". Just like any herd, the slow get left behind to die.
If you are not willing to put in significant hours learning new technologies (before they are needed on your job), then you are likely to find youself in the same situation.
Speaking for myself, I spend an average of 15-20 hours per week (my own time) just keeping up with emerging technologies as well as new tools to support existing technologies. Granted this is higher than average since I am a consultant who is expected to be able to show up at a client's site and simply "know his stuff".
Possibly....contact me directly [about 10 seconds in google maps to my real identity]
Who needs THEM....it only needs to be one way.
I agree with Jamie. FWIW, avoiding the attack vector he mentioned is one of the reasons to only allow access to the DB via stored procedures, and then only give rights to the account used by the WebServer to these specific procedures. Dumping is still possible, but it is ALOT more work. Depending on the value of the data, and the motivation of the attacker, it may limit the damages.
Not a stupid question, but the answer is NO... A "Trust" relationship is set up at the Active Drectory Level to allow credentials that have been verified in one domain to be used in another. It involves configuring your domain controller(s) appropriately.
@frits said:
What is all this talk
About Big-O Notation?
Cowboy code yehaw!
When it comes to Cowboy code, a "Big-O" is usually followed by {censored term for excrement}..
@xyro... Yes, my intention actually was to "tip it in the bud"...alay it did not have that effect.....
@frits said:
Isn't the classic example of O(1) indexing a constant-sized lookup table? There is a provision for using a reasonable constant, such as the maximum access time for an array, in determining Big-O notation. Let's not forget that asymptotic notation (in computer science) has to do with growth rate of an algorithm, not bits-and-bytes of a given hardware configuration.
You are 100% correct. What I am pointing out is that most of the fundamental work done in that area was done it a purely theoreticla environment, and attempting to apply it to actual cases (without deep understanding) is problematic. People see O(1) and make false assumptions about the performance characteristics.
One of my favorite questions to ask, is "Given a choice between an O(n) implementation and an O(logN) implementation, which would you select"? The common answer is "O(logN) bcause it will be faster for larger sets". Unfortunately this does not answer the question. The only possible answer, given just the above information, is "There is insufficient information avilable to answer the question".
@Xyro said:
I wrote a reply, but then I deleted it because it occurred to me that we're really talking about different layers of abstraction. And because my fingers are tired now from typing what I deleted, I don't really feel like expounding, but I think you know what I mean by that. In any case, the day page boundaries become relevant to a coder of a high-level language is the the day that coder changes languages.
NOTHING is ever deleted....
@Xyro said:
Why are you even talking about constant time? Ilya was talking about fast O(1) access, and that's exactly what it is. Algorithmic complexity has nothing to do with architecture layout! And truthfully, memory layout only matters to scalability if we're talking about nanoseconds on embedded devices or somesuch. Re-reading the posts, YOU are the one who brought up constant-time access, and then you started ranting about it!You do know that O(1) is not talking about the access time, right? Because otherwise nothing would ever be O(1) and it would be useless to mention.
#1 - READ the original material. The topic was about optimizing TIME (and the technique listed can have the exact opposite effect) to perform the entire operation. I was not the one who brought up big-O, I was respoding to those who thought it had something to do with the ORIGNAL MATERIAL.
#2 - Big-O is about how the average (typically) time (it could be space or some other metric) SCALES as a function of size. If something is truely O(1) then the average access time would remain CONSTANT regardless of the number of elements. If there is any difference that correlates to the size, then it is NOT O(1). Do a simple experiment. Create an array of 100 integers, then create a loop that RANDOMLY reads an element 100,000,000 times (this should access each element approximately 1M times) [make sure it does not get optimized away], and measure the time. Now change NOTHING except for the size of the array. Make it 100,000,000 items [a 400 MB array] and re-run the test (this should access each items approximately once), the time WILL be significantly different. The average access time INCREASES as a function size. If you want "real fun", and have a 64 bit system, create a HUGE array that far exceeds your physcial memory. The average time will again increase.
#3 - "memory layout only matters... ", this is definately false. Consider high-frequency trading applications (something I work on frequently), a difference of a few microseconds for a highly complex set of calculations can result in a major financial impact (beating the competitor gets you a lower price, and a higher profit - if you make the correct trades)
@Xyro said:
@TheCPUWizard said:Assuming O(1) access for array elements means a constant access time is a FAIL. This is the fundamental problem. There are at least least 5 distinctly different values (assuming "PC-like" architecture] on how long it will take to access a given element (or any variable). If your implementation consistently uses the slowest of the 5, then the performance could be tens of thousands of times slower than one which used the fastest of the 5.Er... Do you know what O(1) means? I'm guessing not, given your incoherent comments. Pop quiz: you are given two arrays. Array A is sized to carry 5 ints, array B is sized for 5000 ints. On average, which is faster, A[4] or B[4999]? Now perform the same exercise with singly-linked lists instead of arrays. Contrast these differences using big O notation.
I do know exactly what it means, and it does NOT mean that the access time will be constant across all of the elements. Consider an array such that the entire content fits in a single L1 cache page (second fastest access), accessing all of the elements after the first one (which presumably had to be faulted in) will be faster. As soon as the array grows past the size of a single page, you will get a minimum of two faults.
Let us consider a situation where memory resources are tight and there is significant contention for available L1 pages. If you have a big array, and access the elements sequentially, you will have minimum time. However if you perform the exact same number of array access, but change the order so that each access is to a memory addres that will be on a different L1 page, you will begin to see a slower response.
If you progress from where the content is being shuffled between L1 and L@ to the point where it is between L1 and main RAM, the ifferent is even more significant. Since "PC-Like" architectures use virtual memory, you will potentially get to the point where a given access pattern causes a pgae to be faulted to/from disk. You performance has just been destroyed.
This is why the sugested optimization may well cause things to be MUCH slower. In the original code the memory accesses would be sequential, resulting in each page of memory being completely initialized before moving to another page. With the optimization, there are now multiple disjoint memory areas contenting for the available cache space.
Thus the question of "On average, which is faster, A[4] or B[4999]?", has nothing to do with the numerical value of the index, but it does have everything to do with knowing what memory addresses were recently accessed and are in the cache.
The result is that while an array has a better scalability factor than a single linked list as O(n) or an indexed/tree structure typically O(logN), in PC-Like environments, it has a WORSE scalability factor than O(1), simple becuase as the size get bigger the probability of a cache miss and the inherent overhead becomes higher and the performance decreases. [I could provide the full mathematical calculation based on over a dozen variables that are used for accurately predicting the distribution of access times.
1) Why EC2 and not Azure?
2) Why not Replication?
3) Yes, "SQL Server Authentication" should (well almost) never be used due to a wide variety of security issues.
@Ilya Ehrenburg said:
I was thinking of C-like arrays ... with [fast] O(1) access.
Assuming O(1) access for array elements means a constant access time is a FAIL. This is the fundamental problem. There are at least least 5 distinctly different values (assuming "PC-like" architecture] on how long it will take to access a given element (or any variable). If your implementation consistently uses the slowest of the 5, then the performance could be tens of thousands of times slower than one which used the fastest of the 5.
Ironically the loop-jamming can actually slow down performance quite considerably. Instead of doing a test with 3 arrays, run the same test with 100 arrays....have phun!
(Hint, What is L1's favorite Pet Benatar song?]