ctodx

This Blog

News

Favorite Posts

Archives

March 2009 - Posts

  • Twitter, DevExpress, and you

    TwitterBirdThere was an interesting article in the Financial Times this morning: "Small businesses find big value in Twitter" (reg. req.). The article is about how small tech companies in the UK are embracing Twitter as a medium to communicate with their customers, to monitor what's being said about them online, to track their competitors, but that larger companies are slower to jump on the bandwagon. Comparisons were made to the US, where the use of Twitter is more prevalent.

    How did I find out about it? A friend twittered me the URL.

    For those of you who are already on Twitter, you know that many of us at DevExpress are twittering already. Furthermore we have a company account which we use for company announcements and for re-twittering other tweets we find interesting. Our evangelists are monitoring keywords that deal with DevExpress so that we can immediately respond to issues being twittered by customers in (almost) real-time. We certainly feel that Twitter is a valuable addition to our marketing tools to reach out to possible and existing customers.

    Here are the account names for us and our evangelists for you to follow to learn about DevExpress stuff and happenings as it happens. Scary, but sometimes you have to grasp the nettle Smile

    @DevExpress   

    @MehulHarry    @GaryShort    @JMBucknall    @RoryBecker   

    @RachelHawley    @DXLight    @PKimmel    @MillerMark   

    If you are not on Twitter yet, why don't you create an account and have a look at what it can do for you. Scott Hanselman had a real good post about how to use Twitter (and what all the jargon means) just recently.

    So, please follow us and join in on the conversation!

  • Great post on CodeRush/Refactor! Pro v2009.1

    Did we suddenly employ Rory Becker and no one told me? He's done a great write-up on his blog about CodeRush and Refactor! Pro v2009.1, beating out our own.

    So, head on over there and read all about the new features in our IDE productivity tools while we scramble to write our own post. In fact, I would make a point of visiting it once a day — Rory keeps on updating it with new stuff as he finds it.

  • Whither (or should that be wither?) WPF?

    Scott Guthrie's big keynote of MIX09 has just ended and we're left with the aftershocks of some pretty exciting news. The Silverlight 3 beta was released (along with the SDK, and other goodies) and Scott took us on a whirlwind tour of what's new and what's coming up with it.

    Old and new mice The shocker to me was the GPU hardware accelerated support for Silverlight 3. In the browser! I'll let you ruminate on that a little while to let it sink in. Furthermore there's 3D support as well, and Silverlight exposes all this to the media features to enable better, higher definition, video. That may have been the impetus for it, but it's also very much available for lowly business apps too. To prove it Scott showed off some of the 3D effects on a normal datagrid app. (Live update from MIX09: ah, not quite 3D but essentially perspective transformations; Perspective 3D, if I got the term right.)

    And then another shocker: Silverlight running outside the browser as a desktop app, either on Windows or the Mac. Absolutely fascinating in my book, given our own experiments in that area. Some nice demos of Silverlight in Blend were shown off as well.

    So what do we have? Silverlight 3 reaching outside the sandbox to use hardware graphics acceleration and 3D for video, and Silverlight 3 running as a desktop app. Oh, and, it's cross-platform.

    But... What's WPF used for again? What's the value proposition for WPF? Why should anyone even begin a new WPF business app now, when they can spend the time creating the same app in Silverlight, running in the browser and on the desktop (several desktops)? The only thing I can come up with at the moment is that WPF has a richer run-time. And, um, well, that's it. Someone is whispering over IM that it has a better data access story as well, but I can't imagine that's going to be a differentiator for very long. (Live update from MIX09: seems there's a new Data Access layer for Silverlight 3 based on Entity Framework, so I was frighteningly right.)

    Look, it seems clear to me that Silverlight is getting all the love (branding, promotion, what have you) from Microsoft at the moment for one very good reason: Adobe. Which browser media/RIA add-in is almost ubiquitous these days? Adobe Flash. What are Microsoft concentrating a lot of effort on? Silverlight, the competitor to Flash. Hmm.

    Want to write an RIA? There's a plethora of different ways to do it, but the one I see most often these days is Adobe Flex and, er, Flash again. But, man, you have to learn ActionScript. Oh, and here's Silverlight using C# and VB. No competition. Want some controls? The Silverlight Control Toolkit on Codeplex will do you fine (100+ controls!, says Scott) and you can always pay vendors like ourselves to get controls with richer, deeper functionality.

    All of this is to mass web developers against the current norm for media over the 'net and RIAs. Nothing against it, mind: out of such competition we all get better software and features. But let's not kid ourselves, Silverlight is in a fight against Flash for the mindshare of media/RIA developers, but I'm seeing WPF as collateral damage.

    And I look at our roadmaps for this year and I wonder.

  • So what do you think of DXperience v2009.1?

    The beta's out for our DXperience Enterprise and Universal customers, with all of its new features (some of which we've been talking about here) and new install (CodeRush and Refactor! Pro are now in the main install. W00t!). So, now that you've had it for a few days,  what do you think of it?

    Cat uses a laptopTell you what. I went out and bought one of the new iPod Shuffles on Monday at my local Apple store, and I'm not particularly enamored with it (I'm not a fan of the Apple earbuds — my ears are a funny shape and they fall out — er, the earbuds, that is, not my ears — and of course the Shuffle is controlled through the earbud cord), so let my loss be your gain. Blog or Twitter or Facebook or post to whatever social network is your scene about your thoughts on DXperience v2009.1, send me the link (remember: it's julianb@devexpress.com), and I'll send the author of the best post this brand new iPod Shuffle. I just hope they don't have ears like mine.

    By "best" of course, I mean to be entirely subjective -- Bwhahaha! -- but if I find there's more of you that qualify under that moniker, I'll use my company Amex and buy a couple more.

    So get writing, get snapping those screenshots, get screencasting, get your cat to show us how easy it is to refactor code, whatever. Have some fun, show us what you like and maybe win an iPod Shuffle.

  • Three years, 36 months, or 156 weeks later

    This Sunday, a three year anniversary came and went, and because I was writing an article for a magazine I forgot all about it. Three years ago, on March 15, 2006, I officially started work at DevExpress as CTO, trying to fill the nine-league boots left by Richard Morris, my predecessor.

    It's instructive to think about what has happened over the past three years of DevExpress' life while I had my hand on the technology tiller.

    - We started these blogs and this community site very soon after I joined (this blog was started on April 7, 2006). One of my remits was to blog about what we were doing, what we wanted to do, what we had done and shouldn't have, and the rest of it. And to be candid and open. This post makes it blog number 290 for me, a smidgeon less than 100 posts a year, or a post every 2.5 business days. In the early days I was pretty much the only blogger, but now we have Oliver, Gary, Mehul, and Emil writing like crazy too. Community Server tells me I've had 1716 comments published to these blog posts, which probably means my Mum has been typing non-stop.

    - The community section here was the first step to opening up DevExpress more so that our customers can see what we're about. When I started there was a lot of resistance to this (keeping the window blinds drawn means that people can't see our mistakes), but I'd have to say we've been quite successful at it. We now have roadmaps every year, we pre-announce new features with screenshots, I sometimes predict (and get disastrously wrong) when we'll release, we're better at support and at documentation than we were, etc. I get the feeling that customers are more confident about what we're doing and therefore keener to renew subscriptions and so on. I'm not saying we're perfect yet — we still make mistakes — but we've come light years from where we were.

    - When I started there were just the WinForms, ASP.NET and VCL products. We'd just begun the subscription licensing plan (and the whole client center application was in the process of being written with an early alpha of XAF in order to accommodate it). Since then we have had three new technologies to research and decide about: WPF, Silverlight, and ASP.NET MVC. Despite the growth in the company (headcount has increased by about 2/3 in this time), this still represents a dilution of our efforts in any one platform.

    - The number of customers we have has grown too (thankfully!), and we have very good retention rates for our subscription customers. I can't claim any kudos for this because I think the company as a whole has become much more customer-centric (although if you ever listen in on one of our marketing/evangelism meetings, you'll hear Ray berating us for not being customer-centric enough) and I feel that you, our customers, are supportive of what we are trying to do and what we produce. We do listen to you about our products and what we need to improve them, even though those improvements may not happen as quickly as you'd like. Another big aspect of being customer-centric is that you can contact any of us at a moment's notice: my email address is julianb@devexpress.com, for example. If you want to phone: 818 844 3383, extension 206.

    - Another one of my remits was to drive the quality of our products upwards. About 6 months after I joined, we were at TechEd Europe in Barcelona, and I remember having this long meeting in the hotel bar with the main R&D leads (they were there too) to discuss and thrash out how we were going to implement agile practices, including TDD and unit tests. Since then we've even released our unit test suite as part of DXperience, and ASPxGridView (as far as I recall) was the first product we wrote using pair-programming. The couple of ***-ups we've had since then with our releases (there was the black day when we posted two different releases with the same version number, for example) has only driven us as a company to improve quality. As with everything, it's a journey: we're not there yet, nor do I expect us to reach it.

    - Almost a year ago, we leased some office space in Glendale, CA, and moved in. Pretty quickly, this became our marketing hub and I started to rack up the miles on Southwest travelling back and forth. During this time we started the DevExpress Channel and Jeff and Amanda and Erica came on board. Our magazine and web advertising is now done exclusively in Glendale and we've had some spectacular campaigns over the past year, due to the work Kevin and AJ have put into them (AJ's the graphics wizard behind our conference giveaways as well). A side-result of all this marketing is that I'm now the go-to person for magazine editors and reporters on how DevExpress is reacting to the news du jour, which of course only increases the penetration of our company brand.

    All in all, three years filled with incident and color. I certainly didn't think it would be like this, to be honest.

    Anyway, if you're an old-timer customer-wise and remember the days BJ (Before Julian), or are a relatively new customer and are wondering what all this fuss is about, I'd like to welcome you on board the DevExpress roller-coaster, it's been a wild ride so far but you ain't seen nothing yet. Fasten your seatbelts.

  • When does it become change for the sake of change?

    So I got an email from R&D the other day:

    The guys are asking if they should go through property lists and rename properties with bad grammar:

    • IsNeedFocus
    • IsImageExist
    • etc

    These won’t be breaking changes – they’ll create new properly-named properties and mark the old ones as obsolete.

    I'm not quite sure what prompted this particular project — developers can be quite ungrammatical at times and often these slips are never caught before a product is released and it's all set in stone. I replied:

    Well, in theory it's fine (that is, create new identifier, mark old one as obsolete), but let's take a look at the list of old names and new names that they have.

    And I got this nascent list this morning:

    • IsNeedFocus -> NeedsFocus
    • IsImageExist -> ImageExists
    • IsLargeImageExist -> LargeImageExists
    • IsExistAnyRowFooterCell -> ?
    • etc

    Now, I'll be the first to admit that the original names won't win any linguistic prizes; in fact, they make code jarring to read. (That last one must have been the result of a very long night.) For example, here's the first one of those instances being used in our code (and in fact it's the only time it's used):

    edit.Visible = true;
    if(checkForFocus) {
      if(edit.IsNeedFocus) edit.Focus();
    } else 
      edit.Focus();

    Here edit is an editor control. Now, to me, that nested if is very hard to read as it stands: "if edit is need focus then edit-focus". The suggested change would make it:

    edit.Visible = true;
    if(checkForFocus) {
      if(edit.NeedsFocus) edit.Focus();
    } else 
      edit.Focus();

    Which I'm sure you will agree is much more readable: "if edit needs focus then edit-focus".

    Now, the thing is, I'm undecided on how to proceed with this project. To me, this is a strong example of the "broken window" theory, that a small defect, left untended and unrepaired, leads users to believe that we don't care about our code so why should they; that if we can't even be bothered to fix a glaring easy-to-solve issue, albeit small, then the rest of our code becomes suspect.

    However, changing these names is not free. First of all, R&D has to determine which names are valid for change and which can be left alone. They have to write the new properties (and methods), and then mark the old ones as obsolete (the Refactor! Pro Safe Rename refactoring would come in handy here, obviously). They then have to recompile everything (demos and all) and fix all the warnings about obsolete usages. The tech writers have to come in on the act, and make sure the documentation is changed to reflect the new names (and that includes the embedded examples). The support team have to check the knowledgebase and so on. And that's just our costs. Your costs, we'll blithely ignore Smile, but of course these changes will have an effect on your code too and you'll have to make modifications and retest.

    So my question to you is, is this worthwhile? Does our laudable goal of improving our clumsy use of English (repairing the broken window) make sense? Do you care enough to have to change your code? What if we did it piecemeal, a product a release, say?

  • Another member of DXSquad

    Wow, we're going crazy inviting great members of our community to become part of DXSquad. The latest member to be invited is Chris Walsh, and, lawks, he accepted despite Brendon being there already.

    Please join me in welcoming Chris to the team.

  • Latest member of DXSquad

    I'm pleased to announce (before anyone else manages to) that Brendon Muck was swayed by the offer of a free t-shirt and miscellaneous other goodies (Ed: a new email address at hotmail.com) and agreed to join DXSquad. He'll be jumping into the forums with both feet and helping out — er, OK, he's already very visible there otherwise he wouldn't have been asked — with his freshly minted DXSquad badge in hand. Now you'll just have to listen to him.

    Please do join me in welcoming him to the team.

  • The DXHelmet as earbuds

    Sorry, couldn't let this one go by: Japan Makes iPhone Control in the Blink of an Eye or Other Facial Signal.

    I guess we weren't inventive enough:

    Mark and Julian at launch of DXhelmet

  • Licenses.licx file woes

    File this under ASP.NET, Department of WTF.

    Frustration When you are developing a web application with our controls, a mysterious file called licenses.licx appears. No, it's not an order to use a weirdly-named lollipop, but is a transitional file generated (and modified) by Visual Studio that participates in license checking. In design mode, Visual Studio uses this file to make a note of every licensed control you use in your design. When you then build your application, Visual Studio read this licenses.licx file and for every control mentioned there, will load the relevant assembly and run the license code in that assembly to see if the assembly is properly licensed (that is, that the product to which it belongs has been properly installed on that machine). If everything checks out, Visual Studio embeds the license key into the executable. If it doesn't, you'll get weird error messages about the control not being licensed (my favorite is "Could not transform licenses file 'licenses.licx' into a binary resource." to which I usually invoke the colorful language of my ancestors).

    Licenses.licx is actually a file in your solution (if you cannot see it there, click Show All Files). Visual Studio uses a program called lc.exe to compile the licenses into embedded resources in your application, and when things go wrong with the license compiling I've seen error messages that reference this executable as well.

    Here's an example of a line in a licenses.licx file.

    DevExpress.XtraCharts.Web.WebChartControl, DevExpress.XtraCharts.v8.2.Web, Version=8.2.4.0, Culture=neutral, PublicKeyToken=9b171c9fd64da1d1

    The first value in this comma delimited list is the class, the second is the assembly where it's found, and the other values are the rest of the assembly's strong name. I'm sure you can see problems already, especially when you upgrade a solution to the latest versions of the third-party controls you use. If you want, you can edit this file and remove the strong name parts with no problem.

    But that's not the biggest issue with licenses.licx. The thing is Visual Studio has a propensity of touching this file if you open the solution (that's "touching" as in changing the file date to the current date/time). This plays havoc with licensing, especially if you happen open the solution on a non-licensed machine and you are using source control. Suddenly your build machine will throw off these "cannot transform" messages and you're left wondering what went wrong. Another prevalent issue is when you have a team of developers working on a solution: they're all unconsciously "modifying" this file.

    So, the answer seems to be not to put the licenses.licx file under source control. (KB article)

    But this solution to the problem throws another red flag: if one of the developers in a team adds a new control that needs licensing to the form, a line gets added to his local licenses.licx file and it may not get reflected in source control. Bam, your build machine fails the build and Joe, who added the control, has to buy doughnuts for the team until someone else breaks the build.

    I'm afraid I have no good solution to this latter issue, because unfortunately the "not putting licenses.licx in source control" seems to be the way everyone is solving the licensing problem. Another solution is to delete the licenses.licx file altogether and then get Visual Studio to regenerate it by opening the solution (although this is a bit difficult on a build machine).

    Anyway, hope that all helps in some way. And hitting your laptop with a phone isn't really going to help.

1
2
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