tag:blogger.com,1999:blog-146949342015-05-04T02:40:09.981-04:00Sipping from the firehose...trying to keep up with Microsoft technologies...Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.comBlogger43125tag:blogger.com,1999:blog-14694934.post-52953367763789835162011-02-03T08:03:00.004-05:002011-02-03T08:15:03.868-05:00In an <a href="http://www.red-gate.com/products/dotnet-development/reflector/announcement">open letter to the .NET community</a>, RedGate announces Reflector is going commercial. Worse yet, the current version is <em>set to expire </em>after the 1st quarter of this year! I <a href="http://showens.blogspot.com/2008/08/future-of-reflector-is-red-gate.html">had reservations </a>about the original takeover by RedGate - looks like it was right to be concerned.<br /><br />It would be ideal if they would make a Community or Express version, with/without ads, with/without restrictions on business use. At the very least, they should make an old version perpetually free, as some other vendors have done.<br /><br />If something useful but somewhat niche goes commercial, can MySql be far behind? Is Oracle any less profit-driven than RedGate?Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-64924517823856619342009-03-05T13:31:00.001-05:002009-03-05T13:31:09.210-05:00The problem with “You are not your code”<p>There is a commonly expressed idea (a recent example <a href="http://blog.fohjin.com/blog/2009/3/3/What_I_mean_when_I_say_This_is_Bad_code" target="_blank">here</a>) that can be summed up as “you are not your code”.&#160; In short, if someone tells you “this is bad code”, you should rejoice, because it’s an opportunity for improvement.&#160; </p> <p>When expressed, everyone rushes to agree with this sentiment.&#160; And so do I.&#160; It is very difficult to improve if you cannot listen to criticism and make changes based on it.</p> <p>But there is a another side to this that is rarely expressed.&#160; When someone delivers this message, you are actually the person who wrote the code.&#160; You are not the code, but you <strong>are</strong> a person <em>who wrote bad code</em>.</p> <p>When you receive this message, it should be not only a time for rejoicing in the learning opportunity, it should also be a red flag.&#160; You do not want to continue to be the person who writes bad code.&#160; </p> <p>Consider the situation where this message is delivered in a code review session.&#160; The team is gathered, the code you wrote is being projected on the wall, and, well, <em>it’s baaaaad.&#160; </em>People are snickering behind their hands or WTF-ing all over the place.&#160; How many times do you want to hear “this is bad code”?&#160; Put another way, how many times would it take before you would begin to be labeled as “the guy who writes bad code”?</p> <p>No team wants that guy as a member for long, whether learning is taking place or not.&#160; It’s a drag on everyone else’s attitude and on the team’s output – someone is going to have to write the <strong>good</strong> code to replace the mess you wrote (or take the time to supervise your rewrite).</p> <p>So, go ahead and use constructive criticism to improve.&#160; But don’t let yourself be in a position where you <em>keep receiving</em> such criticism.&#160; </p> <p>You’ve got to learn, and not just from code reviews.&#160; Take the initiative to get out of this penalty box.&#160; Take some time to study the code of team members who <strong>don’t</strong> get criticized, because they write good code the first time.&#160; Read a book, subscribe to some RSS feeds on coding, do some <a href="http://codekata.pragprog.com/" target="_blank">code katas</a>.&#160; Refactor, using some better or clearer techniques from the language.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-52597512735915260362009-02-09T14:16:00.001-05:002009-02-09T14:16:58.947-05:00The basic syntax of F#<p> Here is a nice, concise overview of the minimum syntactical constructs you need to get a decent F# program up and running.</p> <p>There are a couple of links to other posts that describe some features in more detail.</p> <p><a href="http://lorgonblog.spaces.live.com/Blog/cns!701679AD17B6D310!887.entry?sa=482070343" target="_blank">The basic syntax of F# - keywords and constructs</a></p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-12666717835756007362008-11-24T11:04:00.001-05:002008-11-24T11:04:41.616-05:00Visual learning<p>Sometimes a simple visual makes an abstract concept more understandable.&#160; I find more and more that I like watching short webcasts about new concepts instead of just reading prose about them.</p> <p>If you haven't tried it, check out <a href="http://dimecasts.net" target="_blank">Dimecasts</a> for a collection of just that kind of presentation.&#160; I find it great to not only see code, but also to hear why it is being written that particular way.&#160; </p> <p>Here's one I just ran across that explains pointers succinctly and clearly.</p> <p><a href="http://harriyott.com/2008/11/learning-about-pointers-from-plasticene.aspx" target="_blank">Learning about pointers from Binky</a></p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com1tag:blogger.com,1999:blog-14694934.post-44135774236356464192008-08-20T07:56:00.001-04:002008-08-20T07:56:29.995-04:00The Future of Reflector is Red Gate<p> In an interview with Lutz Roeder and James Moore entitled <a href="http://www.simple-talk.com/opinion/opinion-pieces/the-future-of-reflector-/">The Future of Reflector</a>, we find out that development of Reflector is being taken over by Red Gate Software.&#160; The promise is that Reflector will continue to be &quot;available for free downloading&quot;.&#160; Will source code still be available?&#160; Not discussed in the brief transcript of the interview.&#160; </p> <p>It will be interesting to see what happens to such a widely-used tool.&#160; How will the community of add-in writers react?&#160; Will there be a hue and cry from the Open Source community at large?</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-73150001993809972202008-08-19T18:50:00.001-04:002008-08-19T18:50:17.276-04:00I told you a thousand times "Unit test!"<p><a href="http://qdb.us/53151" target="_blank">Calculating PI to a billion digits</a> </p> <p>Recommended site.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-2494817085935271852008-05-19T07:31:00.001-04:002008-05-19T07:31:13.029-04:00Unit testing static classes<p><a href="http://weblogs.asp.net/cibrax/default.aspx" target="_blank">Cibrax</a> describes a <a href="http://weblogs.asp.net/cibrax/archive/2008/05/16/unit-tests-for-wcf.aspx" target="_blank">method to unit test static classes</a>.&#160; The example given applies to WCF, but it can be applied to anything that would otherwise be difficult to mock.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-28356615178976051842008-04-07T10:13:00.001-04:002008-04-07T10:13:24.536-04:00Unified SCC - a universal source control integration plugin<p>This <a title="Unified SCC - a universal source control integration plugin" href="http://aigenta.com/products/UnifiedScc.aspx" target="_blank">plugin</a> could be useful if you are looking to use Subversion (or CVS) as your source control management system.&#160; It claims to handle Delphi as well as Visual Studio, with other development systems in the works.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-13183483166872746302008-03-26T10:19:00.001-04:002008-03-26T10:19:21.643-04:00Source Control in a .NET World<p><a href="http://geekswithblogs.net/scottkuhl/archive/2008/03/03/source-control-in-a-.net-world.aspx" target="_blank">Scott Kuhl</a> blogs about finding a source control system to replace SourceSafe and comes up with a surprising new contender. </p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-76311344120135908402008-03-17T09:56:00.001-04:002008-03-17T09:56:56.737-04:00Having Pun with C#<p>Some Monday morning <a href="http://www.csharp411.com/having-pun-with-c/" target="_blank">fun</a>.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-39761850341189538972008-01-08T13:02:00.001-05:002008-01-08T13:02:55.241-05:00The Mythical 5%<p>Bruce Eckel's <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=221622" target="_blank">commencement address</a> at Neumont University in Salt Lake City.&#160; The school is geared toward teaching Comp. Sci.&#160; Some excerpts:</p> <blockquote> <p>We are in a young business. Primitive, really -- we don't know much about what works, and we keep thinking we've found the silver bullet that solves all problems. As a result, we go through these multi-year boom and bust cycles as new ideas come in, take off, exceed their grasp, then run out of steam. But some ideas seem to have staying power. For example, a lot of the ideas in agile methodologies seem to be making some real impacts in productivity and quality. This is because they focus more on the issues of people working together and less on technologies.</p> </blockquote> <p>People issues.&#160; In software as well as life, People Issues rule.&#160; To condense further...</p> <blockquote> <p>A man I've learned much from, Gerald Weinberg, wrote his first couple of books on the technology of programming. Then he switched, and wrote or coauthored 50 more on the process of programming, and he is most famous for saying &quot;no matter what they tell you, it's always a people problem.&quot;</p> </blockquote> <p>A third way to look at this:</p> <blockquote> <p>...there's one more very important maxim from Gerald Weinberg which doesn't really answer anything as much as gives you a way to understand what happens. He says: &quot;Things are the way they are because they got that way ... one logical step at a time.&quot; It's the legendary frog in the saucepan. So from your fresh new perspective things might look ridiculous, but remember that each decision on the way was made by someone weighing the issues and making what seemed like the best choice at the time. This viewpoint doesn't solve the problem but it can make you more compassionate about the people who are stuck there.</p> </blockquote> <p>Amen.</p> <p>This is worth taking the time to read.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com1tag:blogger.com,1999:blog-14694934.post-75863661292297952402007-12-13T22:17:00.001-05:002007-12-13T22:17:30.170-05:00Icon Restore<p>This is a nifty thing for those of you who change resolutions from time to time (or have them changed <strong>for</strong> you <em><u>without your permission</u></em>, if you know you know what I mean).</p> <p><a title="May your icons never be moved again! " href="http://users.rcn.com/taylotr/icon_restore.html" target="_blank">Icon Restore</a> is free and does just what it says it will do.&nbsp; Note that if you move things around after saving your icon locations, you will have to remember to save your new position.</p> <p>If you like your desktop the way you like it, this is for you.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-5220889492622310362007-12-11T19:01:00.001-05:002007-12-12T08:55:07.339-05:00Two, Two, Two Mints In One<p>My employer, <a href="http://alogent.com/" target="_blank">Alogent Corporation</a>, is developing an API to interface to an existing piece of code I'll call Deposit Server.&#160; It normally runs as a Windows service, which I'll call DepositServer.exe.&#160; The API (WebApi) is designed to be called via the web, so it runs under IIS within the aspnet_wp.exe process.&#160; Each of these has its own Visual Studio solution file, each with numerous projects.</p> <p>If you happen to be coding and debugging on both sides of the fence (the Windows service and the IIS process), you can use one Visual Studio instance to attach to both processes at once in order to trace between the web API and the Deposit Server as traffic flows back and forth.&#160; </p> <p>What I did was create a single solution, let's call it DualSolution, by merging the contents of the existing WebApi and DepositServer .sln files.&#160; Rather than try to figure out which Project entries were common to both solutions, and there are quite a number, I just copied the entire contents of each .sln file into the new one, back to back.&#160; </p> <p>When you open the resulting solution in VS, you will get a bunch of notifications that 'project xxxx cannot be added because it already exists in the solution'.&#160; You just click OK, and VS will take care of the cleanup when you save the solution the first time.</p> <p>(At first I thought I needed to merge the contents of the Global sections and have only one Global, but VS appears to take care of that as well.&#160; Just append one .sln file after the other, open up the result, and you're good to go.)</p> <p>When you want to debug, attach to process DepositServer.exe, then turn right around and attach to aspnet_wp.exe.&#160; Now, you can set breakpoints from end to end.&#160; </p> <p>Of course you can do something similar by having two copies of VS running, one with the WebApi solution, the other handling DepositServer.&#160; But it seems to me there are two upsides of the combined solution method: </p> <ol> <li>You save memory by having only one copy of VS running rather than two </li> <li>You save memory by not having the projects common to both solutions open twice </li> </ol> <p>Devenv.exe (the guts of the Visual Studio IDE) tends to get pretty hefty as you ask it to do things;&#160; here are the Working Set sizes on my machine, as reported by <a href="http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx" target="_blank">Process Explorer</a>.&#160; Your mileage <strong>will</strong> vary, based on what's open in the solution, the add-ins you've got installed, moon phase, how VS feels at the moment, etc.&#160; </p> <p>Each of these measurements was taken with all projects collapsed, no source files open, no Start Page open.&#160; I let things &quot;settle&quot; for a while, as I notice the WS size creeps up a bit for a few minutes after the solution is open for business in the IDE.&#160; The solutions are (for the moment) VS2005.</p> <table cellspacing="0" cellpadding="2" width="427" border="0"><tbody> <tr> <td valign="top" width="276"><font size="1"><strong>Solution opened and its state</strong></font></td> <td valign="top" width="149"><font size="1"><strong>Working Set size</strong> (in KB)</font></td> </tr> <tr> <td valign="top" width="275"><font size="1">Visual Studio with no solution open</font></td> <td valign="top" width="149"><font size="1">57,016</font></td> </tr> <tr> <td valign="top" width="274"><font size="1"></font></td> <td valign="top" width="149"><font size="1"></font></td> </tr> <tr> <td valign="top" width="273"><font size="1">DualSolution, after opening</font></td> <td valign="top" width="149"><font size="1">400,256</font></td> </tr> <tr> <td valign="top" width="273"><font size="1"><font size="1">DualSolution</font>, after attaching to both processes</font></td> <td valign="top" width="149"><font size="1">421,404</font></td> </tr> <tr> <td valign="top" width="273"><font size="1"></font></td> <td valign="top" width="149"></font></td> </tr> <tr> <td valign="top" width="273"><font size="1">WebApi, after opening</font></td> <td valign="top" width="149"><font size="1">196,384</font></td> </tr> <tr> <td valign="top" width="273"><font size="1">WebApi, after attaching to aspnet_wp.exe</font></td> <td valign="top" width="149"><font size="1">212,228</font></td> </tr> <tr> <td valign="top" width="273"><font size="1">DepositServer, after opening</font></td> <td valign="top" width="149"><font size="1">403,508</font></td> </tr> <tr> <td valign="top" width="273"><font size="1">DepositServer, after attaching to DepositServer.exe</font></td> <td valign="top" width="149"><font size="1">427,004</font></td> </tr> </tbody></table> <p>&#160;</p> <table cellspacing="0" cellpadding="2" width="427" border="0"><tbody> <tr> <td valign="top" width="335">Memory to debug with combined solution:</td> <td valign="bottom" width="90">421,404 kb</td> </tr> <tr> <td valign="top" width="335">Memory to debug with two VS instances:</td> <td valign="bottom" width="90">639,232 kb</td> </tr> <tr> <td valign="top" width="335">Not having to swivel your head between two sets of breakpoints in two different windows:&#160; </td> <td valign="bottom" width="90">priceless</td> </tr> </tbody></table> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-70394346909265357192007-12-04T10:09:00.001-05:002007-12-04T10:09:34.004-05:00Hurry! Act now!!<p>Repent!&#160; The End is Near!</p> <p>It has been <a href="http://blogs.technet.com/jamesone/archive/2007/11/30/virtualization-futures.aspx" target="_blank">announced</a> that Virtual Server 2005 will no longer be supported after 2014.&#160; Plan <strong>now</strong> to migrate your virtual images, before it's too late.&#160; </p> <p>&#160;<img height="180" src="http://www.stanford.edu/~jbaugh/saw/studentphoto/Scenery/CampsBaySunset.JPG" width="240" /></p> <p>You know your company's getting big when it announces that an already outmoded product will see its sunset seven years from now.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-60610418095809344722007-11-15T22:20:00.001-05:002007-11-15T22:20:21.882-05:00Sysinternals Suite - New and Improved Packaging!<p>All of the good stuff in <a href="http://www.microsoft.com/technet/sysinternals/utilities/sysinternalssuite.mspx" target="_blank">one package</a>.&nbsp; This is a great idea for a newly-paved machine.&nbsp;</p><a title="" href="http://www.microsoft.com/technet/sysinternals/utilities/sysinternalssuite.mspx" target="_blank"></a>Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-79138252248615751032007-11-15T14:13:00.001-05:002007-11-15T14:13:24.360-05:00Windows cannot open this file<p>This has been an annoyance for a long time.&#xA0; When you open a file with an &quot;unknown&quot; extension, you get the dialog asking you if you want to search the Interweb to find an appropriate program.&#xA0; Like the author of this post, I have never, ever found anything through this.&#xA0; I automatically choose &quot;Select the program from a list&quot;.</p> <p>Now you can perform some <a href="http://www.ghacks.net/2007/11/10/windows-cannot-open-this-file/" target="_blank">registry hackery</a> to bypass this dialog and always go to the &quot;Select from a list&quot; step.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-19807233083942311912007-10-30T08:29:00.001-04:002007-10-30T08:29:55.957-04:00Buy 1, Donate 1 Laptop for $399 - The One Laptop Per Child Project<p>A while back, I saw a 60 Minutes interview with Nicholas Negroponti about the <a href="http://laptop.org/" target="_blank">One Laptop Per Child Project</a>, and it was very interesting.&#xA0; These things really are useful in an African village.&#xA0; Kids, as kids do, were taking to them like ducks on a pond.&#xA0; It's a cool box, too.</p> <p>Now we have a chance to both satisfy our <strike>lust for</strike> curiosity about the technology and help a child.&#xA0; Come November 12th, there is a two week program where you can buy one of these babies and have one donated.&#xA0; Sign up <a href="http://www.xogiving.org/" target="_blank"><strong>here</strong></a> to be notified when it officially starts.</p> <p><a href="http://www.softwarebyrob.com/2007/10/29/one-laptop-per-child-buy-2-for-399/" target="_blank">Rob Walling</a> has blogged about it. </p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-2600373072264098772007-10-24T11:25:00.001-04:002007-10-24T11:25:45.093-04:00WCF Performance Comparisons<p><a href="http://dotnetjunkies.com/WebLog/kenbrubaker/archive/2007/10/22/wcfperfs.aspx?referrer=swamii.com">Ken Brubaker </a>points to a <a href="http://blogs.msdn.com/clemensv/archive/2007/04/02/so-how-much-faster-is-it-really-and-is-it-wcf-performance-in-comparison.aspx" target="_blank">summary</a> by <a title="His blog" href="http://blogs.msdn.com/clemensv/" target="_blank">Clemens Vasters</a> of a <a href="http://msdn2.microsoft.com/en-us/library/bb310550.aspx" target="_blank">white paper</a> comparing various existing distributed communication technologies with WCF.&#xA0; The bottom line - WCF is</p> <ul> <li>%25 - %50 faster than ASMX </li> <li>%25 faster than .NET Remoting </li> <li>%100 faster - %25 slower than .NET Enterprise Services (DCOM) </li> </ul> <p>Also in his summary, Clemens remarks (italics his):</p> <blockquote> <p><em>For WSE 2.0/3.0 implementations, migrating them to WCF will obviously provide the most significant performance gains <strong>of almost 4x</strong>.</em></p> </blockquote> <p>The performance differences alone make WCF a technology worth exploring.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-84669838973123378022007-10-24T09:14:00.001-04:002007-10-24T09:14:15.101-04:00Team Foundation Server Version Control<p>Jeff Levinson provides a <a href="http://www.ftponline.com/channels/net/2007_10/jlevinson/" target="_blank">brief overview</a> of how you could set up and do change management for development using TFS.&#xA0; The approach is a bit different than I've seen in the past.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-19659709551755637302007-10-19T13:06:00.001-04:002007-10-19T13:06:07.613-04:00Hello Kitty assault rifle.<p><a title="Hello Kitty assult fifle" href="http://www.google.com/reader/view/#stream/user%2F15042240880852998949%2Fstate%2Fcom.google%2Fbroadcast" target="_blank">'Nuff said.</a></p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-18974153200583205762007-10-18T14:14:00.001-04:002007-10-18T14:14:54.171-04:00Integrating TortiseSVN with Visual Studio.NET<p>Here's a nice <a href="http://www.codeproject.com/useritems/SourceControl_VSNET.asp" target="_blank">CodeProject article</a> on both using TortiseSVN (the primo Subversion client) and integrating it with Visual Studio.&#xA0; It discusses Ankh, VisualSVN, and an add-in developed by Garry Bodsworth (described <a href="http://garrys-brain.blogspot.com/2007/07/tortoisesvn-and-visual-studio.html" target="_blank">here</a>).&#xA0; There are some useful tips on Subversion in general, and some of the comments have interesting questions and answers as well.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-14232572660146897542007-10-17T18:38:00.001-04:002007-10-17T18:38:28.250-04:00Beginning the WCF Journey<p>I'm going to dip my foot into WCF.&#xA0; That's more than a toe but less than a headlong dive.&#xA0; Of the four books listed in our library, I have found two.&#xA0; Here are some quotes from the intros:</p> <blockquote> <p>...you might instinctively treat WCF as just another API.&#xA0; Resist this temptation... WCF is not just a wrapper around existing functionality or just another whiz-bang API.&#xA0; WCF is the evidence that a tectonic shift has occurred in distributed software development.</p> <p>Justin Smith, <u>Inside Windows Communication Foundation</u></p> </blockquote> <p>Tectonic shift!?&#xA0; Wow!&#xA0; Equally as eye-opening is this one:</p> <blockquote> <p>To me, WCF is simply the next development platform, which to a large extent subsumes raw .NET programming.&#xA0; </p> <p>Juval Lowy, <u>Programming WCF Services</u></p> </blockquote> <p>This could be fun...</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-67760403467847717812007-10-17T12:21:00.001-04:002007-10-17T12:21:22.004-04:00F# About to go Mainstream<p>I've been noodling around with F# for a while, partly to get used to the upcoming <a href="http://en.wikipedia.org/wiki/Functional_programming" target="_blank">Functional Programming</a> <a href="http://lh6.google.com/shoboe/RxY2gNuHZxI/AAAAAAAAABk/Sm0HeUJlV0o/F%23%20Major%20Chord%5B3%5D.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="79" alt="F# Major Chord" src="http://lh3.google.com/shoboe/RxY2gduHZyI/AAAAAAAAABw/Kktd_ZS3b8o/F%23%20Major%20Chord_thumb%5B1%5D.jpg" width="104" align="right" border="0" /></a>features of C# 3.0, partly to expand the way I approach programming problems.&#xA0; Now, <a href="http://blogs.msdn.com/somasegar/rss.xml" target="_blank">Somasegar</a> has <a href="http://blogs.msdn.com/somasegar/archive/2007/10/17/f-a-functional-programming-language.aspx" target="_blank">announced</a> that Microsoft will be making F# a first class language, along with C#, VB.NET, etc.&#xA0; This is very&#xA0; good news, not only for devotees of ML-type languages, but also for FP in general.&#xA0; When something is readily available in Visual Studio, there's more of a likelihood that someone will give it a try*.&#xA0; </p> <p>And while it's true that other ML implementations for .NET have been around for a while, such as <a href="http://nemerle.org/Main_Page" target="_blank">Nemerle</a>, <a href="http://www.cl.cam.ac.uk/research/tsg/SMLNET/" target="_blank">SML</a>, <a href="http://www.codeplex.com/camldotnet" target="_blank">CAML</a>, <a href="http://www.pps.jussieu.fr/~montela/ocamil/" target="_blank">OCaml</a> and <a href="http://www.haskell.org/visualhaskell/" target="_blank">Haskell</a>, the polish that Microsoft will put on F# will make it much easier to use.&#xA0; </p> <p>Also, unlike some of the above examples, F# is under active development by Microsoft Research in the UK.&#xA0; <a href="http://blogs.msdn.com/dsyme/" target="_blank">Don Syme</a> is the leader of the team.&#xA0; F# can be either compiled or scripted like Python, but it has ML's <a href="http://en.wikipedia.org/wiki/Type_inference" target="_blank">type inference</a> and is type-safe.&#xA0; It generally performs as well as (or better than!) compiled C# code.&#xA0; For an intro and overview of features, check out the project's <a href="http://research.microsoft.com/fsharp/fsharp.aspx" target="_blank">main page</a>.</p> <p>&#xA0;</p> <p>&#xA0;</p> <p>&#xA0;</p> <p>&#xA0;</p> <p>&#xA0;</p> <p>&#xA0;</p> <p>* <font face="Vrinda" size="2">Except for J#.&#xA0; Don't ever try J#.</font></p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-45952980007413757272007-10-15T12:06:00.001-04:002007-10-15T12:06:58.213-04:00REMs don't sleep<p>Let's say you have a .BAT file with a command like</p> <blockquote> <p>c:\bin\dcc32.exe&#xA0;&#xA0; [parms to compile a Delphi program]</p> </blockquote> <p align="left">It will return an %errorlevel% of greater than zero if the program does not compile, zero if it does.</p> <p align="left">Since I was testing this by double-clicking, I put a PAUSE statement right after it to see the output of the compile step.&#xA0; </p> <blockquote> <p>c:\bin\dcc32.exe&#xA0;&#xA0; [parms to compile a Delphi program] <br />pause</p> </blockquote> <p align="left">Once the whole build project started working, I left the PAUSE in but REM'ed it out so I could remember what I had done in case I needed to go back and debug later.</p> <blockquote> <p>c:\bin\dcc32.exe&#xA0;&#xA0; [parms to compile a Delphi program] <br />rem pause</p> </blockquote> <p align="left">It turns out that REM is an &quot;active&quot; statement in a .BAT file and <strong>sets %errorlevel% to zero!</strong>&#xA0; When the compile line really did fail, the error was being masked by the REM right after it, so the MSBuild project kept going as if nothing was wrong.&#xA0; Once the REM line was removed, the MSBuild project failed as it should.</p> Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0tag:blogger.com,1999:blog-14694934.post-41867686966620113732007-10-10T10:58:00.001-04:002007-10-10T11:02:03.471-04:00A gift idea for that special someone<p>Got somebody who's hard to buy for?&#xA0; Here's <a href="http://www.thinkgeek.com/tshirts/generic/991e/ ">something</a> that's appropriate for either a nerd or a geek.</p>Steve Owenshttp://www.blogger.com/profile/02118424461074853518noreply@blogger.com0