ctodx

This Blog

News

Favorite Posts

Archives

September 2010 - Posts

  • Announcing the DevExpress Webinar series: Watch - Learn - Apply

    TVs In Field If you’re in with the In Crowd, you’d have watched our inaugural webinar yesterday on Getting Started with ASP.NET MVC, presented by Steve Andrews. After ironing out a few issues with that initial presentation — we’re agile, we learn as we go along, don’t you know — we’re now ready to announce Season 1, as it were, of our webinar series.

    We’re going to be presenting webinars twice weekly from now on, on Tuesdays and Thursdays. The topics we’re planning are diverse: some will be related to DevExpress products (especially webinars on What’s New in our products); some on more general programming subjects associated with .NET and VCL development; and some will be “Ask the Team” type events. We’re even going to be letting you into the inner sanctum of our Annual Company Meeting at the beginning of December, where you can learn about what we’re looking at doing in 2011.

    All webinars will be roughly 1 hour in length. About 45 minutes are reserved for the presentation and the remainder for a Q&A session afterwards. All webinars will start at 10am Pacific time (whether that’s Daylight Savings Time or not) — we feel that’s probably the best time to satisfy our customers around the world.

    The point here is to help you learn about and understand the development environment we all operate in by watching our evangelists talk about and demonstrate their particular knowledge and expertise in platforms, IDEs, and development methodologies. You can watch in real-time as well as later on on the DevExpress Channel. If they were all just marketing fluff pieces about DevExpress products, you’d certainly not watch, so we want to make sure that these webinars are more widely educational and applicable. We want to help you understand and master the broader technologies and techniques our products require.

    We’ve just published our initial webinar schedule. Take a look and mark up your calendars for the topics you’re interested in (Mark Miller on the Science of Great UI? Sign me up for that!) and make sure you register ahead of time. The page will be updated regularly to show new webinars that are coming up.

  • Delphi news and a tutorial for the layout view in the new VCL grid

    The new stuff for DXperience is coming down like rain in a monsoon, and sometimes our new VCL stuff seems to slip through the cracks. It doesn’t help that the VCL team are on a different release schedule than DXperience, but it is a pity: the VCL team is producing some great new functionality. To rectify this, I’m going to be donning the mantle of evangelist for our VCL subscription so you’ll be getting more news — and more frequently than of late — about our Delphi-related products. Ray will also help out if and when needed.

    The first item on my agenda is to let you know that Build 53 will contain support for RAD Studio XE, including Delphi XE. Yes, we’re a smidgeon late with this but we’re making some great strides given that we have so many controls (and, as usual, adding the C++Builder support takes the longest time). We’re just about to make the beta available (I’m just reviewing the What’s New content, so we’re very close) and I’ll be announcing that when it’s ready. Build 53 is not just about XE support either: look out for ExpressQuantumGrid 7,  ExpressBars 7, and some new stuff in ExpressPageControl and ExpressLayoutControl.

    Another item is that we’ve just uploaded a tutorial video on how to use the new Layout View in the upcoming ExpressQuantumGrid 7. This feature is amazing; just watching the video is enough to make your fingers itchy to get your hands on the feature.

    The final item for now is that I will be presenting a webinar on the new features in Grid 7 and Bars 7 on October 14 (10am PT, details to follow). We’re putting into place a whole series of webinars on DevExpress topics and also on wider, more general subjects. There will even be some kind of “Meet the Team” type webinars too. They’ll be twice a week on Tuesdays and Thursdays from now on (the first was this morning on ASP.NET MVC). Stay tuned for the announcement on the upcoming schedule, but for now I thought I’d let you know about the first VCL one so you can block off the date and time.

  • DevExpress Newsletter 34: Message from the CTO

    A quick thought about the economics of the Apple App Store (and essentially about the other mobile App Stores too):

    Set the plentiful free, charge for the scarce

    A month or so ago, I was doing some research into the ecosystem of the Apple App Store. I'm sure you've seen the same kinds of analyses where the top hundred paid apps are making something like 99% of the revenues and the other hundreds of thousands of apps are not even breaking even for their developers. A hockey stick graph, they're called.

    In essence, the way the store has evolved, people now expect apps to cost way less than five bucks. I even read a review where a $3.99 price was described as "comparatively expensive".

    The upshot is: if you're a developer writing paid apps for the App Store you aren't going to make a living at it. Success is like the lottery: some people make big, the vast majority lose.

    Now, assuming that you do want to make a living writing apps for smartphones and since it's extremely unlikely that you'll do so (make a living, that is), what can you do to improve your revenues?

    My thought is this: make your money on the periphery of your app, not the app itself. Examples? Take Evernote, the note-taking app for your smartphones and PCs. Totally free, until you start to require more bandwidth and storage and then you have to pay for it. Ditto Dropbox, the file storage app. In fact, if you can design your app to have or sync to a PC or Mac component, you could charge for this portion -- people are more used to paying more for PC or Mac applications. If your app is highly visual in a quirky sense -- think of Angry Birds as an example -- you may be able to sell physical representations of the quirkiness, like T-shirts, coffee mugs, etc.

    In other words, get your basic idea out for free. The more exposure the better. Provide the plentiful. And then you have a ready-made market where you can charge for the scarce.

    See the video here.

    Of course, this is merely a reimagining of a technique known as loss leader, adapted for the Web 2.0 and mobile app age. However, for a market such as the App Store where unless you win the lottery you won’t make a living, it’s vital.

  • DevExpress Newsletter 33: Message from the CTO

    In this second part of the Composed Method pattern, I talk about the Single Level of Abstraction Principle, or SLAP.

    The Single Level of Abstraction Principle

    Last time I talked about the Composed Method pattern; that is, writing small methods to enable ease of reading and understanding, and to help with emergent design.

    The second rule for the Composed Method pattern was this: Keep all of the operations in a method at the same level of abstraction. Last time I glossed over this rule, but what does it mean?

    In essence it's an aid to understanding the code in the method. If you mix low-level implementation with higher-level code, your brain has a more difficult time of reading and understanding it. You have to mentally switch from the low-level nuts and bolts to those higher-level concepts that abstract out other low-level implementations.

    In essence, we are mixing in the "how" something is coded — the low-level code — with the "what" it does — the higher level concepts. It is far better for our understanding of what's going on to extract the low level code to a separate, very small method, name it well, and then use that in the original method, rather than keep the low level code mixed in.

    This is known as the Single Level of Abstraction Principle, or SLAP.

    Here's an example of a violation of SLAP from my own code.

    public string Render() {
      StringBuilder sb = new StringBuilder();
      sb.AppendLine("<table id='jmbCalendar'>");
      AddCalendarCaption(sb);
      AddCalendarHeader(sb);
      AddCalendarFooter(sb);
      AddCalendarBody(sb);
      sb.AppendLine("</table>");
      return sb.ToString();
    }

    We're writing an HTML table that looks like a calendar. We create a new stringbuilder, add a line to it to start off the HTML table, and then we have a set of statements that build up the rest of the calendar by adding a caption, a header, a footer, the body. Finally we add the end tag for the table. Notice how the low-level code to add the begin and end tags clashes with the statements that build the content of the calendar: the levels of abstraction are different. You have to mentally switch from understanding how an HTML table is encoded to rather more abstract concepts of adding the various parts of the calendar. I should extract out a couple of one-line methods, called say StartCalendar and EndCalendar, and use those to comply to SLAP.

    Using this principle, alongside our application of the Composed Method pattern, means that our code becomes even more legible, testable, and understandable. Our program correspondingly improves in quality and reliability.

    So, why don't you apply SLAP to your code, along with Composed Method.

    (You can see the video here.)

    The other thing to note is that once you have applied SLAP, you’ll suddenly recognize other opportunities for refactoring and other classes that emerge from what you’ve already written. For example, once I apply SLAP to my code, it’ll turn out that I’m passing a stringbuilder instance to six methods. Why not create another class that has the stringbuilder as a private field? That would in fact hide the creation of the stringbuilder, which is pretty low-lever, you must admit. And so on.

    The point is: without the application of SLAP, I would be constrained as to what prospects for cleaning up my code I could identify. With SLAP, I’m thinking at a higher level and can see refactorings and emergent design at that level.

LIVE CHAT

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

FOLLOW US

DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, along with high-performance HTML JS Mobile Frameworks for developers targeting iOS, Android and Windows Phone. 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-2017 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners