This Blog


Favorite Posts


September 2007 - Posts

  • Pedal to the metal implementing an MVP app

    Mark sent me this link of a customer using CodeRush and Refactor! Pro to write an MVP (Model-View-Presenter) implementation of an e-mail viewer.

    It's a long-ish screencast -- there's a lot of code and classes to cover -- but the presenter, Kim Major of Renaissance Computer Systems, really knows his CodeRush and Refactor! Pro well. Unfortunately the only audio is music (a hip version of a classical piece: Pachelbel's Canon and Gigue in D major) so there's no commentary, and, even though I knew and recognized the refactorings being used, I sometimes had to pause in order to recognize what just happened. In the end, you really got to see how the MVP pattern can help to structure and improve your design, especially when he switched from a hard-coded provider of emails to Outlook with a couple of code changes. Neat-o.

    It's also a great example of how to use our IDE productivity tools to write code quickly and accurately. I must point out though that Kim is obviously working from a script. If you videoed me doing the same thing, I'd be more hesitant and slow as I worked out the design in my head as I typed on the keyboard. Nevertheless, it's a good screencast on how design patterns can improve your code (I was yelling at the screen "Make it an interface, dammit" when he did exactly that) and a screencast that neatly highlights our IDE tools.

    Thanks to Kim and to Renaissance Computer Systems for the screencast.

  • On relativity

    I read this hilarious piece the other day on explaining Einstein's theory of relativity using words of four letters or less. That, and a couple of posts I made in our forums about XPO, got me thinking about our customers' perceptions of how we improve and maintain our products.

    So in the spirit of Einstein's thought experiments on relativity, imagine this. Suppose our products are large cubes, say some ten feet (3 meters) to a side, dotted around on a plain. You are strolling through this landscape of cubes. Obviously changes to a cube to which you're closest will be more noticeable than changes to a cube that is further away or even blocked by another. In fact, to stress this thought experiment even further, you don't know if changes to cubes that you don't even see are even happening ("if a tree falls in a forest and there's no one to hear it, does it make a sound?").

    Yeah, I know, I'm stretching this metaphor beyond recognition.

    The cubes closest to you are the products you use every day. Because they're close to you, you see every change, you are very aware of new work that is about to start on these products. You may even tape up some notes on the cubes to help the builders and renovators. The other products you don't use (the cubes further away) are not in your thoughts. You're aware that changes are probably being made to them but you don't really know or particularly care. You want and like changes to the cube closest to you.

    Now imagine that the landscape is full of people strolling around. They're all thinking much like you: "I want changes to 'my' cube, not that cube over there, thank you very much." But there are a lot of people and a lot of cubes.

    And, of course, we're the people fiddling around with the cubes. The deities, the manipulators, the watchers, call us what you will. We're a smallish bunch of people and we can't improve all the cubes all the time, so we have to partition our resources where we can best make a difference. But, just because there are no perceptible changes to the particular cube nearest to you doesn't mean that we deities aren't planning on making some changes to it in the near future.

    So if you think nothing's happened to your cube for a while, bear with us: we're making our next set of plans for the 2008 roadmap. Lots of changes to lots of cubes, and, yes, XPO is one of them. It's just that we can't make changes to all of them all at once.

    (OK, I wrote this on a whim just so I could call us "deities".)

  • Back to school

    I've noticed since I got back from my vacation how quiet it now is during the day. All the kids are back at school and in my neighborhood a welcome silence envelops the street during the heat of the day. Mind you, the traffic during the early morning and late afternoon is a sight to behold as parents drop their kids off at school or collect them, but during my productive daytime hours, it's quiet.

    So the little blighters are back in classrooms learning English and Mathematics and Civics ready to become the adults of tomorrow. What about us adults? Especially those in professional employment; not just doctors and lawyers, mind you, but also software developers and designers and architects. Shouldn't we be learning still?

    My wife, who is a prosecutor, has to pick up Continuing Education credits in various aspects of Law, including the important ethics credits. To maintain her right to practice law she has to get so many credits per year, and they expire after three years. To get a credit you have to attend a lecture or seminar of some aspect of the law. In fact, she's just come back from a conference where she picked up the remaining credits for this year.

    Ditto for professionals in the medical field as far as I understand. But we software people? There's no (real) professional body, no (real) requirement to stay on top of your profession. In fact, I would venture to say that the only reason some people keep up with new technology and ideas is to put them down on their resume (cynical, moi?). I still feel that the Microsoft certifications are more about learning stuff by rote and getting the initialisms on your Curriculum Vitae than any real connection with what you may see or do in your job (man, I'm being really cynical today).

    And I'm staggered at some of the emails I get where the writer hasn't the foggiest about some standard computer science-y topic. No, I'm not talking about the pros or cons of B-trees, say (a subject still dear to my heart), but about people who discover regularly every now and then that fractional decimals generally aren't exact in an IEEE floating point variable. And that's even before you consider those people who have highly incorrect assumptions about Windows; topics that Raymond Chen does so well at debunking and explaining. Case in point: I was talking to a friend who was saying that an architect at his company was trying to convince him that many threads in a single process could lock the same mutex at the same time.

    Look, this stuff isn't rocket science. It may have been at one stage, but that was an awfully long time ago when computers occupied entire buildings and you had to wear a white lab coat to program them. The basics of computer science just aren't that hard to learn. You certainly don't have to learn the concrete mathematics needed to prove some of the assertions; just accept the conclusions and move on. Ditto for Windows concepts and CLR concepts. There are any number of good books that talk about these things.

    We, as a group, must not only learn about WCF, WPF, Silverlight and any other fabby-dabby technologies coming down the line, but learn about the basics of our business. That includes not only algorithms (my favorite subject), but also things like why they're called lambda expressions (what's lambda got to do with it? And what's this about a church?), why they're called regular expressions (what's regular about them?), why C# is moving to a functional programming paradigm (it is? and what's curry got to do with it all?), why multithreaded programming is hard (bwhahahaha!), what is the difference between latency and throughput and why is matters in our AJAX applications, and any number of other interesting basic questions.

    So go on. Think of something that's puzzled you for a while, do some research on it, learn about it, so that you understand it enough to even write a blog post about it. And then do exactly that and let me know. Let's learn!


Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at info@devexpress.com or call us at +1 (818) 844-3383


DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, Delphi, HTML5 or iOS & Android development. Whether using WPF, ASP.NET, WinForms, HTML5 or Windows 10, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2018 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners