CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Darrell Norton's Blog [MVP]

Fill in description here...

January 2005 - Posts

  • New IIS content, finally

    Posted Jan 31 2005, 11:41 AM by darrell with 1 comment(s)
    Filed under:
  • Emergent Design book available online

    Scott Bain, of NetObjectives, is posting all the parts of his book, Emergent Design: The Evolutionary Nature of Professional Software Development, as he finishes them. Thirteen chapters and appendices are already available. Feedback is encouraged!

    Here is the table of contents:

    • Introduction
    • Software as a Profession
    • Out of the Closet - Patterns and Professionalism in Software Development
    • The Nature of Software Development
    • Evolution, Stage 1: Procedural Logic replaced with Object Structure
    • Introduction to Patterns
    • Paying Attention to Qualities
    • Paying Attention to Principles
    • Paying Attention to Practices
    • Paying Attention to Disciplines: Unit Testing
    • Paying Attention to Disciplines: Refactoring
    • Evolution in Use
    • Evolution in Construction
    • Evolution in N-Tier Architecture
    • Patterns and Forces
    • A Conclusion: 2015
    • Appendix A: Procedural Analogs to Common Patterns
    • Appendix B: Overview of Core Design Patterns
    • Appendix C: The Principle of the Useful Illusion
    • Appendix D: For Further Reading
    Posted Jan 31 2005, 06:21 AM by darrell with 2 comment(s)
    Filed under:
  • Speeding up Firefox the right way

    Speeding up Firefox seems to be a meme going around the blogsphere lately. Most of the tips I’ve seen, though, are only for broadband connections with the latest hardware and only include some of the settings that would affect performance.

    The Firefox Tweak Guide has the full details on how to speed up Firefox regardless of your connection or hardware, reprinted in part below. Don’t forget that the easiest way to tweak user files is with chromEdit extension.

     

    Common to all configurations

    These are the settings that seem to be common to all configuration files regardless of connection speed or computer speed with a couple of additions - plugin paths can be found with about:plugins and the bookmark menu delay is turned off.

    user_pref("network.http.pipelining", true);
    user_pref("network.http.proxy.pipelining", true);
    user_pref("network.http.pipelining.maxrequests", 8);
    user_pref("content.notify.backoffcount", 5);
    user_pref("plugin.expose_full_path", true);
    user_pref("ui.submenuDelay", 0);

    Fast Computer Fast Connection

    user_pref("content.interrupt.parsing", true);
    user_pref("content.max.tokenizing.time", 2250000);
    user_pref("content.notify.interval", 750000);
    user_pref("content.notify.ontimer", true);
    user_pref("content.switch.threshold", 750000);
    user_pref("nglayout.initialpaint.delay", 0);
    user_pref("network.http.max-connections", 48);
    user_pref("network.http.max-connections-per-server", 16);
    user_pref("network.http.max-persistent-connections-per-proxy", 16);
    user_pref("network.http.max-persistent-connections-per-server", 8);
    user_pref("browser.cache.memory.capacity", 65536);

    A couple settings of note - Firefox is allocated 4096 KB of memory by default and in this configuration we give it roughly 65MB as denoted by the last line. This can be changed according to what is used.

    Fast Computer, Slower Connection

    This configuration is more suited to people without ultra fast connections. We are not talking about dial up connections but slower DSL / Cable connections.

    user_pref("content.max.tokenizing.time", 2250000);
    user_pref("content.notify.interval", 750000);
    user_pref("content.notify.ontimer", true);
    user_pref("content.switch.threshold", 750000);
    user_pref("network.http.max-connections", 48);
    user_pref("network.http.max-connections-per-server", 16);
    user_pref("network.http.max-persistent-connections-per-proxy", 16);
    user_pref("network.http.max-persistent-connections-per-server", 8);
    user_pref("nglayout.initialpaint.delay", 0);
    user_pref("browser.cache.memory.capacity", 65536);

    Fast Computer, Slow Connection

    user_pref("browser.xul.error_pages.enabled", true);
    user_pref("content.interrupt.parsing", true);
    user_pref("content.max.tokenizing.time", 3000000);
    user_pref("content.maxtextrun", 8191);
    user_pref("content.notify.interval", 750000);
    user_pref("content.notify.ontimer", true);
    user_pref("content.switch.threshold", 750000);
    user_pref("network.http.max-connections", 32);
    user_pref("network.http.max-connections-per-server", 8);
    user_pref("network.http.max-persistent-connections-per-proxy", 8);
    user_pref("network.http.max-persistent-connections-per-server", 4);
    user_pref("nglayout.initialpaint.delay", 0);
    user_pref("browser.cache.memory.capacity", 65536);

    Slow Computer, Fast Connection

    user_pref("content.max.tokenizing.time", 3000000);
    user_pref("content.notify.backoffcount", 5);
    user_pref("content.notify.interval", 1000000);
    user_pref("content.notify.ontimer", true);
    user_pref("content.switch.threshold", 1000000);
    user_pref("content.maxtextrun", 4095);
    user_pref("nglayout.initialpaint.delay", 1000);
    user_pref("network.http.max-connections", 48);
    user_pref("network.http.max-connections-per-server", 16);
    user_pref("network.http.max-persistent-connections-per-proxy", 16);
    user_pref("network.http.max-persistent-connections-per-server", 8);
    user_pref("dom.disable_window_status_change", true);

    One of the changes made for this particular configuration is the final line where the status bar is disabled for changing web pages to save processor time.

    Slow Computer, Slow Connection

    We have entered the doldrums of the dial-up user

    user_pref("content.max.tokenizing.time", 2250000);
    user_pref("content.notify.interval", 750000);
    user_pref("content.notify.ontimer", true);
    user_pref("content.switch.threshold", 750000);
    user_pref("nglayout.initialpaint.delay", 750);
    user_pref("network.http.max-connections", 32);
    user_pref("network.http.max-connections-per-server", 8);
    user_pref("network.http.max-persistent-connections-per-proxy", 8);
    user_pref("network.http.max-persistent-connections-per-server", 4);
    user_pref("dom.disable_window_status_change", true);

    Posted Jan 28 2005, 06:33 AM by darrell with 63 comment(s)
    Filed under:
  • Ken Schwaber, creator of Scrum, on ITConversations

    Ken Schwaber, one of the two developers of Scrum (the site has recently been updated, so go check it out), has an interview on ITConversations:

    You Thought it was Easy: Wrestling Gold from Today's Software Projects

    The benefits of Agile are many, the implementation is easy, and the problems are daunting. Ken Schwaber, Senior Consultant, Cutter Consortium & Chairman of the Agile Alliance, discusses the obstacles to wresting the gold from today's software projects.

  • Agile Software Development presentations

    Reginald Braithwaite-Lee posted four very nice agile software development slide decks (the summaries are his words, not mine):

    Scrum: One Person's Perspective: Shortly after obtaining my certification in the Scrum development methodology (I'm now a "Certified Scrum Master"), I gave this outline of Scrum to the Toronto Chapter of the Software Process Improvement Network.

    Evidence-based Software Development Practices: How to develop higher quality software in less time with dramatically less risk by emphasizing the role of collecting and analyzing evidence. This is the cornerstone of my approach to delivering software on time and without drama.

    Agile Development or Critical Chain? Yes!: An outline of the Critical Chain Project Management (CCPM) approach and how to integrate it with Agile approaches to software development.

    Agile Methods in a Product Development Setting: Sharing my personal experience using Agile methods to develop software products, with particular emphasis on the ways in which product development differs from custom/project oriented work.

  • CruiseControl.NET v0.8 released

    CruiseControl.NET v.0.8 is out.

    CruiseControl.NET Server

    • Breaking Change - Force Build Interval Trigger and Polling Interval Trigger have been replaced by Interval Trigger, and the Force Build Schedule Trigger and Polling Schedule Trigger have been replaced by Schedule Trigger.
    • Introduced a Filter Trigger to turn off integration at certain times of day.
    • If no <triggers> section is specified for a project, it now uses a default interval polling trigger. If an empty <triggers> section is specified, no triggers are enabled (for 'forced-only' builds).
    • ForceBuildPublisher introduced to allow build pipelines across distributed machines
    • Subversion plugin now allows automatic source updates

    Web Dashboard and Project Report Web Application

    • New NAnt Web plugin for easier diagnosis of NAnt problems
    • Web Dashboard now has all the reporting features of the single project reporting application (we recommend all users migrate to the Web Dashboard for reporting now)
    • Web Dashboard now has the ability to configure what Build, Project and Server plugins are made available to users (this is a breaking change to the Dashboard's web.config file - make sure you update your local version)
    • Improved our NCover and FxCop support

    [via Mike Gunderloy]

  • Comments off

    Comments disabled until I can automate deletion of comment spam.
  • Red Gate's SQL Bundle is worth every penny

    My life is so much easier now. Why? I finally got work to purchase the SQL Bundle from red-gate software. SQL Bundle is just a combination of SQL Compare, SQL Data Compare, and DTS Compare, but for less money than buying just 2 of these products individually (only $350).

    I do have a few missing features on my wish list already:

    • Using Data Compare to synchronize all rows in a table is nice, but I’d like to be able to add a where clause to the filter. That way I could synchronize a few specific rows (you can do this manually by removing the INSERT lines of the records you don’t want, but that’s no fun).
    • As an addition to the previous item, I would like to have an “ON CASCADE COPY” type of feature. If I want to copy an ORDER from the Northwind table, for example, it will copy all the ORDER ITEMS too (continuing on to related tables). That would be heavenly.
    • More granular control over the comparison. Right now you can tell SQL Compare not to check foreign keys. I do want to check foreign keys but I don’t care whether the key is “ADD CONSTRAINT” or “WITH NOCHECK ADD CONSTRAINT” if everything else is the same.  Found it!
    • A place on the web site to submit desired features.
  • SPE: Awesome free Python IDE

    Although Pythonwin is nice, it’s a basic IDE. It doesn't have the feeling of power you get from Visual Studio. Fortunately, a reader left a comment about a cool, free Python IDE called SPE (Stani’s Python Editor). SPE has a bunch of cool features:

    Spe is a python IDE with auto-indentation, auto completion, call tips, syntax coloring, syntax highlighting, class explorer, source index, auto todo list, sticky notes, integrated pycrust shell, python file browser, recent file browser, drag & drop, context help, ... Special is its blender support with a blender 3d object browser and its ability to run interactively inside blender. Spe ships with wxGlade (GUI designer), PyChecker (source code doctor) and Kiki (regular expression console). Spe is extensible with wxGlade.

    Check out the UML view:

    The installation was a little frustrating since I know don’t know much about Python yet, so here are the steps for hassle-free installation:

    1. Download and install the latest wxPython binaries for win32 and your Python version (which should be 2.4). I chose Ansi; you may choose Unicode if you need it.
    2. Download and install the latest release of SPE from here. You can also get to the downloads page by clicking the “Download latest release” link from the SPE home page.
    3. Navigate to the installation directory. This is usually $pythondir$ \Lib\site-packages\_spe . Double-click SPE. Create a shortcut to this file in your Start menu or on your desktop if you want.

    If you need more help, SPE has a handy tutorial and a manual with lots of screen shots.

  • Interviews with Guido van Rossum, creator of Python

    Artima posted a 6-part series of interviews with Guido van Rossum (weblog), creator of Python. Here are the six parts in order.

    The Making of Python
    Python creator Guido van Rossum talks with Bill Venners about Python's history, the influence of the ABC language, and Python's original design goals.

    Python's Design Goals
    Python creator Guido van Rossum talks with Bill Venners about Python's original design goals—how he originally intended Python to "bridge the gap between the shell and C," and how it eventually became used on large scale applications.

    Programming at Python Speed
    Python creator Guido van Rossum talks with Bill Venners about the source of Python's famed programmer productivity and the joys of exploring new territory with code.

    Contracts in Python
    Python creator Guido van Rossum talks with Bill Venners about the nature of contracts in a runtime typed programming language such as Python.

    Strong versus Weak Typing
    Python creator Guido van Rossum talks with Bill Venners about the robustness of systems built with strongly and weakly typed languages, the value of testing, and whether he'd fly on an all-Python plane.

    Designing with the Python Community
    Python creator Guido van Rossum talks with Bill Venners about the importance of "pythonic" API design, the usefulness of intuiting performance, the value of experience and community feedback in design decisions, and the process of deciding how to evolve Python's standard library.

  • How to Learn Python

    Hopefully I’ve convinced you to learn Python this year. Or maybe Sam Gentile did (Sam’s Python category). Either way you’re wondering how to start learning Python.

    Python.org

    The Python home page has a lot of information, so much so that it is bewildering to the new Python user. Skip the “What is Python?” page link (I’ll show you a better getting-started site). A better description of Python can be found at the Python programming language definition on Wikipedia. The important parts of Python.org are the Python documentation pages and the Introductory Material on Python page.

    Dive Into Python

    Mark Pilgrim’s book, web site, and Python resource hub. The book is free and comes in HTML, PDF, Word, plain text, and XML formats. If you are like me, and like to have the dead trees version so you don’t have to alt-tab back and forth, you can pick up a copy from Amazon.

    Mark also lists 10 different versions of Python, and the first chapter in the book tells you how to set it up on each of the three major platforms (Windows, Mac, Unix/Linux) and how to ensure that you have it setup correctly. The style so far is great and I highly recommend Dive Into Python.

    How to Think Like a Computer Scientist

    This book was written by a high school professor, a college professor, and a Python programmer for the College Board’s Advanced Placement computer science classes (where high school student can earn college credit if they pass a test) because it offered “higher level of success and a lower level of frustration” than C++. This book is also free online. Mark Pilgrim refers to this book often in Dive Into Python.

    Python Cookbook

    ActiveState, producers of a win32 port of Python, have a great online Python Cookbook. Every one of the 1000+ recipes on the web site is free, and many of them went into the making of the Python Cookbook 2nd edition from O’Reilly (here is the first edition). They are sorted by category, editor’s pick, approval status, and date, or you can search all the recipes by keywords.

    Daily Python-URL

    This weblog-like (RSS feed) contains a daily list of links to things going on in the Python realm. Most of it won’t mean much at first, since it often contains articles and debates about future Python language features, parsers, and libraries you probably don’t care about to start off with.

    Python.oreilly.com

    In case you could not figure it out, this is on the O’Reilly network. The good stuff are the articles and the Python success stories part 1 and Python success stories part 2.

    Where to go from here

    Start by downloading the Dive Into Python book. Download the recommended IDE for your platform. If you are on Windows, you will be downloading ActiveState’s port of Python, ActivePython. Make sure to choose version 2.4. It comes with a pretty handy IDE called Pythonwin that has syntax coloring and Intellisense. Note that you do NOT have to give your contact info to ActiveState to download; just click the Next button.

    Next time I’ll talk about the different ports of Python that would be of interest to the Windows/.NET programmer.

    Update: I found and added a link to the Daily Python URL rss feed.

  • WeProgram.NET user group meeting: 7pm at ESI Newport News

    We’ve got our next meeting on Tuesday night, January 11th at the ESI in Newport News; 7 PM is the start and we’ll have nerd-working beginning at 6:30 PM. For directions to the ESI location in Newport News, see www.WeProgram.Net.

    Microsoft’s Geoff Snowman will be presenting on Visual Studio Team System:

    Visual Studio Team System

    Visual Studio Team System is Microsoft's new toolset for software development projects. Team System provides design, development, test, and communications tools for architects, developers, and testers, integrated into Visual Studio and Microsoft Office. This meeting amplifies the Team System content in the MSDN Event on January 11th by focusing on the developer experience with Visual Studio Team System.

    We’ve got more free stuff than you can shake a stick at! We’ve got software from Altova, IVIS Technology, and Infragistics! We also have t-shirts, resource kits, and tons of books to give away! See you there.

    Update: the meeting is actually Tuesday night, not tonight (Monday night). Sorry for the misinformation!

  • Why should you learn Python?

    Shortly after I blogged about learning Python in 2005, I found out via Steve that several other people (Sam Gentile, John Lam, and Steve Eichert himself) are doing it too. I wasn’t following their lead in picking a language, but I’m glad to be in good company! The reasons why I chose to learn a new language, and the reasons behind choosing Python, might help someone, so here they are.

    Why learn a new language?

    I was following the Pragmatic Programmers advice to learn a new language each year. Peter Berger also suggests that learning languages helps you learn to program. I had been researching from late November through early December (2004) which language to learn next to best broaden my developer horizons, and the short list was Python, Lisp, and Smalltalk.

    Peter Norvig suggest in his excellent essay, Teach Yourself Programming in Ten Years, to learn at least 6 languages. But he doesn’t say to learn 6 languages that are all similar, like C, C++, Java, and C#! Instead he says:

    “Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).”

    Why Python?

    Good question.

    Lisp and Python both support functional abstraction in the form of functional programming (at least I think this is right, but I’m no computer scientist, so take with the proverbial grain of salt). Big deal; what is functional programming anyway? Some of the key characteristics of functional programming languages are (source):

    • Functions are first class (objects).  That is, everything you can do with "data" can be done with functions themselves (such as passing a function to another function).
    • Focus on LISt Processing (e.g. the name 'Lisp').  Lists are often used with recursion on sub-lists as a substitute for loops.
    • FP worries about -what- is to be computed rather than -how- it is to be computed.
    • Much FP utilizes "higher order" functions (i.e. functions that operate on functions that operate on functions).

    Since this is quite different from imperative programming, it is sure to give that “Aha!” moment once you “get it” in the sense of learning to think in a new language. The “Aha!” moment was also what I was looking for with SmallTalk, since everything is an object, but Python also offers the “everything is an object” experience. That is not to say that I won’t learn SmallTalk, it is just that I won’t learn it in 2005 unless prompted by work.

    I also wanted a strongly and dynamically typed language (more here). Research on Python also turned up some interesting articles. Bruce Eckel thinks that Python is all about making your life easier. The Artima interview continues with part 2 (programmer productivity), part 3 (type checking), and part 4 (minimizing the typing). And of course Paul Graham caused a stir when he said that smarter programmers use Python not Java. Maybe this is my search for intelligence. :)

  • Unread Tabs Firefox extension

    The unread tabs extension for Firefox keeps the tab title text italicized until you’ve read the tab. Handy for keeping up with which tabs you’ve read if you open a lot of links in the background (that and middle-clicking are the reasons I started to like tabbed browsing).

  • WSMQ (web service message queue) free public Beta

    I’m happy to say that a project I’m working on, WSMQ, has announced a Beta program for the hosted version of our product. What is WSMQ you might ask? WSMQ stands for Web Service Message Queue. It’s a queue that you can access from the network using XML and web services. Thus it is cross-platform in its use (Java programs can write to a queue and .NET programs can read from it) but not in its implementation, which is 100 percent .NET and SQL Server (the XML version does not have a database dependency).

    Right now we’re offering a free trial during the Beta period. Check it out and let us know what you like, what you don’t like, and what features you want added in the forums. Josh and Brendan have created code samples to get you started and a nice web-based queue management tool to get started, along with the requisite MSDN-style documentation.

More Posts Next page »

Our Sponsors