{"id":5932,"date":"2011-01-27T17:11:36","date_gmt":"2011-01-27T23:11:36","guid":{"rendered":"http:\/\/www.redmonk.com\/cote\/2011\/01\/27\/makeall014\/"},"modified":"2011-01-27T17:11:36","modified_gmt":"2011-01-27T23:11:36","slug":"makeall014","status":"publish","type":"post","link":"https:\/\/redmonk.com\/cote\/2011\/01\/27\/makeall014\/","title":{"rendered":"Code Reviewing and Tooling the RIA world &#8211; make all #014"},"content":{"rendered":"<p class=\"pic\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/cote-media.redmonk.com\/cote\/files\/2012\/06\/201101271632.jpg\" alt=\"201101271632.jpg\" width=\"250\" height=\"298\" \/><\/p>\n<p>In this episode, I talk with <a href=\"http:\/\/blog.chris-gross.com\/\">Chris Gross<\/a> (<a href=\"http:\/\/twitter.com\/#!\/chris_gross\">@chris_gross<\/a>) of <a href=\"http:\/\/elementriver.com\/\">ElementRiver<\/a>. They work on two development tools, <a href=\"http:\/\/www.elementriver.com\/sourcemate\">SourceMate<\/a> and <a href=\"http:\/\/www.elementriver.com\/reviewmate\">ReviewMate<\/a>. We discuss the Flash and Flex RIA world where SourceMate fits in and the practices in general code review, where ReviewMate operates.<\/p>\n<p>Download the episode directly <a href=\"http:\/\/traffic.libsyn.com\/redmonk\/makeall014.mp3\">right here<\/a>, subscribe to <a href=\"http:\/\/feeds.feedburner.com\/MakeAllPodcast\">the feed<\/a> in iTunes or other podcatcher to have episodes downloaded automatically, or just click play below to listen to it right here:<\/p>\n<p class=\"embed\">\n<h2>Show Notes<\/h2>\n<ul>\n<li>I ask Chris to go over the founding of ElementRiver &#8211; how did they decide to get into the trying business of developer tools?<\/li>\n<li>We discuss the functionality SourceMate provides as an add-on to FlashBuilder.<\/li>\n<li>Chris tells us his top 3 features in SourceMate: snippets, auto-correct, and annotations.<\/li>\n<li>I ask Chris what types of applications and teams he&#8217;s seeing doing RIA. Several internal application teams, among other types.<\/li>\n<li>We discuss the code reviewing workflows that ReviewMate enables. The decentralized nature (no server needed except version control) is interesting.<\/li>\n<li>While it&#8217;s not one of the primary products, we talk about the <a href=\"http:\/\/www.potomacframework.org\/\">Potomac Framework for Flex<\/a>, &#8220;a modularity framework inspired by OSGi.&#8221; See also <a href=\"http:\/\/www.prweb.com\/releases\/2009\/09\/prweb2933174.htm\">this press release from Sep. 2009 on it<\/a>.<\/li>\n<li>Given that we&#8217;re in the RIA space, I ask for his take on &#8220;HTML5.&#8221; Chris gives a pretty balanced way to figure out when to do web apps vs. things like Flash or Silverlight.<\/li>\n<\/ul>\n<h2>Transcript<\/h2>\n<p><em>As usual with these un-sponsored episodes, I haven&#8217;t spent time to clean up the transcript. If you see us saying something crazy, check the original audio first. There are time-codes where there were transcription problems.<\/em><\/p>\n<p><strong>Michael Cot\u00e9: <\/strong>Well, hello everybody. Welcome to another edition of Make All. This is one of the Make All remote editions where I\u2019m not actually face to face with someone.<\/p>\n<p>So, you\u2019ll be lucky that you won\u2019t have to hear the birds and the doors or other things opening. As always, this is your host Michael Cot\u00e9 available at PeopleOverProcess.com, I work with Red Monk there. Here at Make All, we like to talk about fun and interesting stuff going on with those damn computers, as I like to say. In this episode, I spun-off or spun-out or grew Make All out of another podcast I had RIA Weekly.<\/p>\n<p>This is a nice guest we have on this episode, because we\u2019re kind of getting back to those original RIA routes by talking with someone, a client of ours actually, with the founder I guess of a small company called Element River, but I would like to let the guest introduce himself.<\/p>\n<p>Why don\u2019t you give yourself an introduction rather than me stumbling through one?<\/p>\n<p><strong>Chris Gross:<\/strong> Sure, thanks Michael. This is Chris Gross. I am the founder of Element River. We\u2019re a RIA tools and solutions company. About me personally, so I founded Element River about a year-and-a half to two years ago. Prior to that, I had an extent at IBM and before that, I worked at a smaller software company called Chesapeake Systems. I\u2019ve been a software developer, kind of jumped from different languages, but predominantly on Java for being the past 10 or 15 years with a kind of particular specialty on Eclipse and more recently, in Flex and Flash development.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> You actually worked on the Eclipse Nebula Project, right or actually you might still work on it?<\/p>\n<p><strong>Chris Gross:<\/strong> Yeah, I don\u2019t do any real commits to Nebula anymore, but I was the Founder and Creator of the Nebula project at Eclipse, which brought custom widgets, custom controls to the 00:01:54 built on Eclipse\u2019s CDT to this sort of a Eclipse umbrella. So yeah, that has been a couple of years. We\u2019re back, we started that project and I think that\u2019s been very successful. I think one of the more popular projects at Eclipse.org.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> So, I mean to boil it down, you are kind of like UI guy, you work on a lot of UI stuff, it sounds like in the UI layer of the stack.<\/p>\n<p><strong>Chris Gross:<\/strong> Yeah, definitely and sort of with the founding in our pack of Element River, also a tools guy, a lot of experience and specialization in Eclipse and you can see that with our main products SourceMate.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> So, you guys started Element River back in \u201809, right. So pretty recently and you know, you have a relatively comfy extent as you were saying going on at big company like IBM, but like what made you want to like take the leap and be like spinning up and I mean, it\u2019s a huge risk to startup a tools company in the development space, right? And like, so I mean what was kind of like &#8212; what kind of convinced you that it was like worth the sort of leap going into that challenging, but a space that can be pretty fun if you can do the right kind of tooling.<\/p>\n<p><strong>Chris Gross:<\/strong> Right. Well, I think that there is an opportunity there. I think that, we see continuing adoption of Flash and Flex. And I think personally, I had seen a lot of developers sort of get challenged when they\u2019re moving from maybe their old .NET developers, old Java developers, moving into the sort of the new world of web tools sort of web apps. And you know whether they were using Java script, maybe if they\u2019re using Java Script, they\u2019re having a lot of difficulty.<\/p>\n<p>We saw a lot of focus around that period of time in 2009 where companies were interested in Flex. And we thought there was an opportunity there to provide tools with that kind of market and not just tools, but also frameworks and we do consulting around Flex as well. So, it was a combination of having the skills, kind of seeing some trends going in that area and then just wanting to capitalize on that.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Then, have you guys been doing Flex development or was it something that you got into because you were doing &#8212; because you started Element River?<\/p>\n<p><strong>Chris Gross: <\/strong>So, I had done a data Flex development. I hadn\u2019t &#8212; I wasn\u2019t maybe one of the original Flex adopters, but maybe in the past six months to a year before I started Element River. I had definitely dived in and have built some things with Flex, but since starting Element River, then we went full \u2013 dove in, right in.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Yeah, I mean I think around that time was one of the heights of people kind of taking Flex and Flash seriously as a UI layer, right. And so it does make sense that, that\u2019s right around the time when I finally saw a lot of Java developers than other developers kind of finally getting in, mainstream developers I guess finally getting into doing Flex stuff. And it seems to a kind of stayed at that level of interest, if you will. I mean, it\u2019s always without digging very deeply into sort of adoption patterns and things like that, it\u2019s always difficult from the outside to &#8212; or to casually get a sense of how much Flex is out there, because all the mobile stuff distracts so much from all the other Flex application development going on.<\/p>\n<p><strong>Chris Gross:<\/strong> Right, right.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> It definitely is, I mean especially in like you know looking over some of the &#8212; you know you guys do a pretty good job of cataloging like people twittering about your product like SourceMate and maybe ReviewMate, that\u2019s a little newer, but everyone is always saying how &#8212; so the functionality that you bring basically the Flex Builder, the additional functionality is definitely something that they enjoy and they often say it\u2019s something that was kind of missing from the experience, so it definitely does seem to be that dry out there for it. And obviously, since you guys have been around like you said a year-and-a-half, that\u2019s kind of just passed that point where you would have given up if it didn\u2019t work out.<\/p>\n<p><strong>Chris Gross:<\/strong> Right, right, yeah, now we\u2019ve been successful. So we &#8212; yeah, I think when you talk about that time period on \u201809. You\u2019re right, I think we saw &#8212; builders maybe a couple of more enterprises felt comfortable with the technology, it had Flex and maybe sell those. We were on version 3.0 at that time and companies started to feel more comfortable to start to actually use it.<\/p>\n<p>So, you see bigger projects starting, we still see that today. You know as just the technologies naturally mature, I have been out there for longer, maybe been in the sure consciousness of the software development world. Then people feel more comfortable starting to base bigger and bigger projects on it and so yes.<\/p>\n<p>So we developed SourceMate, because with that trend we see more advanced developers. The developers who like you talk about the Java developers or perhaps .NET developers who are moving into Flex development who are used to a certain level of tooling. Certainly, if you look at the Java tooling, the really exceptional Java tooling available today in Eclipse and in other IDEs.<\/p>\n<p>In 2009, we were sort of transitioning ourselves. We started using Flex and Flash Builder and while they were &#8212; really it was a good IDE. You know especially we compared it to some other IDEs if you\u2019re doing Java Script development at the time, we still think Flash and Flex Builder was good, but we saw an opportunity there to sort of bring the power that a Java developer for example was used to and something like Eclipse and bring that into Flash Builder and have the experience on par with Eclipse.<\/p>\n<p>The Flash Builder experience on par with what you see in Eclipse, and we think we\u2019ve done that. We think the especially the latest release of SourceMate, SourceMate 2.0 offers so many features to Flex and Flash developers from code snippets, insertable codes, snippets that come up with content assists to refactorings, all sorts of refactorings and many more coming in future versions. Probably, the biggest feature that we just added in our 2.0 version is quick fixes and sort of live error detection.<\/p>\n<p>So that feature were, you know as you type, if you type a function with name and that function doesn\u2019t exists, you will get a low red squiggly underneath it. You\u2019ll get the ability to label by a com there or you can click on it and you know create this function for me based on the function call and the arguments that I wrote out.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Yeah, yeah, now that \u2013 I mean it\u2019s funny like and that\u2019s making me &#8212; it\u2019s making me remember you know I have a few gray hairs in my beard.<\/p>\n<p>So it\u2019s quite sometime ago, but I remember when I made the jump from using Emax to NetBeans and then Eclipse and just having things like that, like the quick fix stuff and just refactorings and extracting interface and all that stuff was, I don\u2019t know. It was most like, it made me like think of myself as kind of dumb for using Emax as long as I did, but it\u2019s always easy to &#8212; you kind of said you don\u2019t always realize how handy those, the sort of the right click tooling that you have, you can available as to programming, I mean it always makes me, I don\u2019t know.<\/p>\n<p>I\u2019ll shake my head a little bit at the people who I like, you know, the notepad developers, I mean, no one really use it. Not many people use notepad, but whether they\u2019re using them or Emax for all these crazy things. It\u2019s just seems like there are so many things that you\u2019re not taking advantage of. You\u2019re getting into it, but you know let\u2019s &#8212; can you give us kind of like a general overview of what SourceMate is exactly.<\/p>\n<p>So far you\u2019ve got over kind of a few of the features and functionality that will do over a Flex project, but like what, kind of what\u2019s the quick pitch for what it does?<\/p>\n<p><strong>Chris Gross:<\/strong> Right, so it\u2019s an add-on to Flash Builder, so you have to have Flash Builder 4. But once you have Flash Builder 4 SourceMate is it a plug-in, an extension to Flash Builder. But the real quickest way to describe it for somebody who is experienced with a Java IDE like Eclipse or one of the other IDEs is that it brings Flash Builder on par with the Eclipse or other IDE.<\/p>\n<p>We add a plus of other features in code generation and refactoring and snippets and so on. So, we\u2019re not necessarily narrowly focused on one specific &#8212; this isn\u2019t just a refactoring plug and although we do offer many refactoring functions, but it\u2019s just a huge set of productivity enhancing features. So, when I talk to potential customers and they ask me about how much the SourceMate costs, which is we think pretty low, it\u2019s only $79 currently.<\/p>\n<p>We say, \u201cYou know look using these features, if you use SourceMate for a week. I guarantee you will save at least two hours of time in a week.\u201d And that\u2019s low. I mean, that\u2019s sort of assuming you\u2019ve only touched the surface of the features that SourceMate offers. So, if you use SourceMate and saved two hours in one week at $79, how many weeks do you have to use it until you more than paid four or five times. But, you know it\u2019s funny, you sort of talked about getting into the developers\u2019 tools market. I think a software developer sometimes &#8212; we as a group are so used to getting things for free whether they\u2019d be open-source or simply given away that they are sort of reticent just to pay for anything, but we think SourceMate is a great, great value and any developer who is doing significant development in Flash Builder should really put SourceMate in their tool belt.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Yeah, and I\u2019ve noticed over the last several years, it\u2019s gotten better selling tools. But, I\u2019ve noticed that kind of the magic pricing zone seems to be between like 50 and maybe a 150 or 50 and a $100. And that sort of that &#8212; it does all sorts of dynamics to speak to the business end, but it does all sorts of dynamics as far as &#8212; if one developer really wants to use it, it\u2019s cheap enough that they\u2019ll probably pay for it. I mean it\u2019s kind of only the price of two computer books or two O\u2019Reilly books that they might buy, so it\u2019s really not that big of a deal, and it\u2019s also. I don\u2019t know, it also when the company actually starts paying for it, it actually makes it cheap enough that you could &#8212; the whole team can buy it if you will.<\/p>\n<p>I think that was going back before, I always feel like TextMate kind of benchmarked the price that people would pay for something. And kind of before that tooling pricing was still in the hundreds of dollars. Once it kind of got down to that level it seems like it was a lot more, I don\u2019t know, people are little less worried about paying for tools than they used to be. I mean if you had to pay $500 for a tool that still seems a little crazy.<\/p>\n<p><strong>Chris Gross:<\/strong> Yeah, definitely and it\u2019s an interesting area, because I have a friend who is a carpenter and he spends tons of money on tools. It\u2019s not unusual for him to go out and buy a new air-compressor or a generator or a nail-gunner or something and he sort of accepts that. And, as software developers, we make considerably more than the average carpenter, but we\u2019re a little bit more reticent to spend on tools. And we also &#8212; there is &#8212; in a lot of situations it\u2019s difficult to get companies to sort of splurge on tools. Sometimes they just sort of decide, well just use the open-source then. But, at least in SourceMate\u2019s case, we don\u2019t think there is anything open-source that compares.<\/p>\n<p>So we\u2019re a little bit lucky there if you &#8212; when we talk about Java IDEs there is big companies who contribute to Eclipse for example that make &#8212; have really invested all this money in creating these great tools and then made them free and open-source, but in the SourceMate world, in the Flex and Flash world I don\u2019t think there is anything. You might find maybe an open-source plug-in that has one feature that\u2019s comparable to SourceMate, but you know, we have 30-odd features and we think that the sort of value proposition there is really great.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> And so, like would you say that the majority of the usage that SourceMate gets is sort of for Flex versus Flash or is it both or like what. The distinction is going to be a little subtle for some people but like what, what\u2019s the main type of application people are working on when they\u2019re using SourceMate.<\/p>\n<p><strong>Chris Gross:<\/strong> Right, we see a bit of a mix, but I think people generally still are using SourceMate with Flex, the Flex Builder IDE, which we now call Flash Builder, you know also to denote that we can use it for more dis-generic Flash projects instead of Flex. But generally people who are using Flash Builder 10 to be Flex developers, we do see a lot of developers who are more of the individual developers on smaller projects. We are seeing a growing trend of sort of enterprise user, bigger companies who are adopting Flash and Flex, particularly Flex.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> So, is it &#8212; in these enterprise apps, I\u2019m always curious like are people doing sort of like internal applications or external facing ones or is it just a mix of both of them?<\/p>\n<p><strong>Chris Gross:<\/strong> In my experience, it\u2019s more predominantly internal.<\/p>\n<p><strong>Michael Cot\u00e9: <\/strong>That\u2019s &#8212;<\/p>\n<p><strong>Chris Gross:<\/strong> Yeah. [Audio Gap &#8211; 00:14:56 &#8211; 00:15:01] for Flex and Flash. I think that\u2019s one and probably the key area, the key reasons why people choose one over the other. In external applications, people tend to want to use HTML and JavaScript more. So, internal applications, it seems people are more open to using Flex and Flash. I\u2019m not exactly sure of the exact reasons. Some of it I think has to do with teams. When you look at teams that are developing the internal applications, sometimes these internal applications are in fact quite big. There is larger teams. The kinds of developers on those large teams, that kind of skill level can vary. If you have a big internal corporate development team that has 15 or 20 developers, it\u2019s just &#8212; the truth is, some of those developers aren\u2019t going to be your superstar developers.<\/p>\n<p>And I think when we see a lot of the really the exciting applications out on the web that you use &#8212; by and Java Script needs Ajaxify interfaces. I think there is some really 15:59 developers who have really produced those through these interfaces. But in the corporate world one &#8212; the average core application, they don\u2019t care as about is it snazzy, is the UX really great. They\u2019re a little more concerned with sort of bread and better issues, how quickly can we get this developed, what business challenges am I trying to solve.<\/p>\n<p>And then, with those bigger teams and maybe some of the lesser skilled developers, I think the tooling and some of the language features, now having a more statically typed language really does benefit some of those more average developers, guess I would say on the team. Really, I think it benefits everybody, especially when you get a larger team, things like static typing I think help a lot.<\/p>\n<p>So, yeah, so internal teams more so, and I think it makes a lot of sense for them, because when we start to think about budget there, perhaps in different continents we are sharing code and they want to rely on really good pooling. I think that we see them choosing Flex.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Yeah, no that\u2019s interesting, it\u2019s always interesting, because the demographics of something like Flex, because it sort of fits in almost, it could fit in anywhere, but it seems to get adoption at various niches instead of &#8212; everyone uses Java right, whereas with Flex there is various niches that will be using it.<\/p>\n<p><strong>Chris Gross:<\/strong> Right.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> So, getting back to SourceMate, I mean if you were &#8212; when you\u2019re kind of showing it to people or demoing it, like what would you say are like the top three most like whizzbang interesting things that you show to people. And I mean I guess, I guess to edit my whizzbang sort of commentary, not so much like, there is always features that you show people and they end up not really using it, but like what are like the three features that you kind of see as sort of the &#8212; what would you highlight as the top three features in SourceMate?<\/p>\n<p><strong>Chris Gross:<\/strong> Sure, I think the number one feature. There is probably a tie for number one. I\u2019ll talk first about the snippets or in the Eclipse world, they\u2019re kind of called templates. But if you come from a Java background and you\u2019re used to using Eclipse or maybe another advanced IDE. Let\u2019s say you\u2019re in a type of for loop and you type for, if you hit the content that says control space, the IDE will offer to complete that for loop. It will say okay, here is the content for a for loop, fill out all the details and kind of put your cursor in the middle of the loop. Flash Builder doesn\u2019t offer that feature today. If you, there is no sort of content assist for these comments, snippets if you want to insert.<\/p>\n<p>So SourceMate provides that, we provide a set of sort of default snippets that we\u2019ve come up with, things like the for loop. Things like an easy way to create functions and a variety of snippets and you can create your own, create your own and send them around. We see some Flex frameworks have created a collection of snippets for some framework, specific code that they have. So, you type the first couple of characters of the snippet, it might correspond to the first couple of characters of the code you\u2019re actually going to insert, might not. You hit your content assist and you see all the snippets that match that.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> All right. And can people add in their own snippets?<\/p>\n<p><strong>Chris Gross:<\/strong> Yeah, absolutely you add in your own. You can export files containing snippets and send them around and that\u2019s how these frameworks share them, they just create a file that contains other snippets and you just go into preferences and you import them.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Yeah. No, I mean that kind of stuff is always useful for &#8212; when working with a team of developers who maybe varying skills, it can sometimes be nice to sort of establish the way we do certain things and automating through whether you call it templates or snippets or whatever, it can be a handy way once you\u2019ve figured out the right way to do a common occurrence to make sure that everyone sticks to that way of doing it.<\/p>\n<p><strong>Chris Gross:<\/strong> Yeah, absolutely, definitely.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> And so, what are the other, what are the other things. The things that would be, at least so there was one type for number one.<\/p>\n<p><strong>Chris Gross: <\/strong>Right. And that\u2019s the quick fixes, live error detection. I mean, that\u2019s what we were talking about before with the 20:01 so if you are typing code and I think what happens often at least with me, I am going through &#8212; I am typing code in a method and I realize I have to create another method that I\u2019m going to call, but I haven\u2019t created that yet or all I need a field, I am going to refer to a field in the class, but I haven\u2019t created that field yet, you just keep typing going on or I\u2019ll go back to it later.<\/p>\n<p>Well, as you type SourceMate\u2019s in the background constantly analyzing your code, seeing where these &#8212; your references to these sort of undefined variables or undefined function exist. And so, in a split second after typing your code, your function gets the red squiggly line, the little error marker on the left hand side, gets added, and all you have to do then is instead of going and jumping back, remembering what you need in the the function and figuring out the signature then jumping back and writing that code yourself, you just hit one of the QuickFixes, SourceMate will create the function for you with the right function signature and put your cursor right there where it needs to be.<\/p>\n<p>So, it does that with \u2013 these QuickFixes are for functions, for variables in fields or classes, you refer to your class that doesn\u2019t exist or another big one when you are a creating a class and you are implementing an interface. If you haven\u2019t implemented all the correct message for that interface you get a little error marker and you can click that. And it will add the unimplemented methods for you. So, if you go back and look at the interface, okay how many methods do I have, what are the signatures, SourceMate will automatically add sort of the method stubs for you.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Yeah, that also like allows you to do a nice way of coding where you can, you can sort of code just something that doesn\u2019t exist and then have it stubbed out for you, so you can go and implement it. It kind of lets you code, it lets you think about here is the main threat of execution I want to be doing and I\u2019ll go worry about implementing the stuff that it is calling out to later on?<\/p>\n<p><strong>Chris Gross:<\/strong> Right, exactly. It\u2019s a big, big feature and people do exactly like you are talking about, you just sort of code, your stream of thought is going out there and then you come back later and SourceMate will help you fill out all the details.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> That\u2019s right, insert difficult work here. So what are the other two features that you see a lot of popularity around?<\/p>\n<p><strong>Chris Gross:<\/strong> Well, it\u2019s funny. There are so many other features in SourceMate, there are so many I could mention. Their refactoring is certainly one that when people do use it, 22:23 people not to use as often, but when you do use it, it can save you so much time that it\u2019s just extremely valuable.<\/p>\n<p>So one of the refactoring that I\u2019d like to highlight, because it just seems like a common thing that people encounter, but we have a refactoring that goes through and actually just removes or comment out any trace statements that you have on your code, a sort of trace statements people who don\u2019t know or sort of like the Swiss Alp statements of Flash and Flex, but I often by myself &#8212; you are tackling a tough programming bug something you can\u2019t really figure out what\u2019s going on.<\/p>\n<p>So if you are like me, you go through all your classes, you start adding trace statements that \u2013 show me what this variable is or use a little trace statement just to show me that I am in this branch code, maybe you are doing that over the course of an hour or a couple of hours trying to figure what this bug this. And finally, you fix the bug, you found it then you sort of, you sit back for a second, you are like, \u201cOh darn\u201d I probably added trace statements to 20 classes and now I don\u2019t remember where they all are and I don\u2019t want these trace statements cluttering up my production code.<\/p>\n<p>So one click, you go through, you tell SourceMate you want to remove your trace statements, you could do it in just individual files or you can do it for the whole project, find them all, you can delete them 23:41 you get a list of all the files that trace statements exist, you can sort of choose to include or exclude certain files from it, then boom, they are all gone and that\u2019s one of the ones, it\u2019s sort of a maybe in some ways a feature that people don\u2019t talk about enough, but I can\u2019t tell you how many times I had a user come to me and say SourceMate was worth it just for that one feature.<\/p>\n<p><strong>Michael Cot\u00e9: <\/strong>Yeah. I mean a feature like that and also refactoring, they are those kind of features like you are saying, like it\u2019s &#8212; I don\u2019t if it\u2019s counterintuitive, but the fact that you don\u2019t use them very much is kind of the point, because what they are doing is they are saving you time that you would be doing manually all that stuff.<\/p>\n<p>So really, you only have to use them once or twice during the course of like some unit of development, because you are not &#8212; you are probably &#8212; unless I am sure there are some people who are like constantly refactoring your code, but you sort of work at some point then you think I want to make this big global over my code change and you just do it in one instant. So you don\u2019t really &#8212; you may not spend a lot of time on that one exact feature, but it sort of &#8212; you would be spending a lot of time if you didn\u2019t have it, which those are always a good thing.<\/p>\n<p><strong>Chris Gross:<\/strong> Yeah, absolutely. They are big, big features, they are refactoring feature, one usage can save you enough time to make it worth it to have it all like SourceMate.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Right, so how about a lonely number three, what\u2019s coming in on that one?<\/p>\n<p><strong>Chris Gross: <\/strong>Well, if I had to pick a number, this is sort of group of features, it would be around metadata, meta tags. In Flash and Flex, metadatas, the term for metadata is probably more akin to annotations or what we now as annotations of Java. A way to operate a method or a class with a tag. So just like with Java, the Flex world has sort of jumped on metadata, the same with the Java world, it\u2019s jumped on annotations frameworks and your libraries tend to use metadata tags for features whether it be dependency injection or other features.<\/p>\n<p>So Flash Builder today, there is really not much support metadata, you can type it there, it doesn\u2019t check the metadata, there is no content or system on the metadata. So if you misspell a tag and then you go and run your application, it\u2019s not going to warn you in the editor and the complier doesn\u2019t really complain, because it\u2019s really sort of open about metadata, it allows any sort of custom metadata that you might type in.<\/p>\n<p>So particularly with these with the popular Flex frameworks, you have a lot metadata tags, you just mistype one, you won\u2019t necessarily know there is something wrong until you run your application. And then because of the way metadata tags are, you are not going to get necessarily a very understandable error that, this metadata tag is wrong depending on what tag you are using and depending on the framework.<\/p>\n<p>So, those can really be hard to track down problems, I just misspelled a tag name or perhaps I put a tag on the top of the class when it was supposed to be on top of the method. So SourceMate does all that validation for you, it does content assist on the metadata tags, so you type the over bracket of the metadata tag and I\u2019ll show you all the valid tags for the 26:35 on top of the method or a variable or a class or what not.<\/p>\n<p>And then, we also support custom metadata tags in these frameworks. So I think all of the really popular Flex frameworks that use metadata tags, provided they are used with SourceMate configuration files. So all you do is you open up your SourceMate preferences, import the metadata configuration file for the framework and then, you get all those same features for the tag, you get the validation, you get the content assist.<\/p>\n<p>So, I think that\u2019s a real big feature, with so many people using frameworks nowadays, it\u2019s almost like everybody uses a framework when they start from scratch and all these frameworks using metadata tags, that\u2019s pretty important.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Yeah, no that makes sense. So you guys launched was it in December that you guys launched for ReviewMate, am I remembering that right. And I mean as the name implies, it\u2019s for doing reviews or code reviews, which I think in recent years have gotten a lot more popular than they were at one point. And I mean, can you go over what ReviewMate provides?<\/p>\n<p><strong>Chris Gross:<\/strong> Sure, ReviewMate is sort of a product that it sort of has that \u201cLess is more\u201d philosophy. When I have used code review features in the past, they have always seemed sort of a pain for one reason or another, either the review sort of UI was &#8212; maybe it was sort of like Excel, it was just sort of list of form fields, you typed in your comments, you typed in maybe what lines of codes you were talking about, so yeah line 81, and you sort of jump back and forth between this form editor and the code &#8212; maybe it was on the server, maybe it was web-based code review tool which, maybe you had to install the whole server there, it was a complex setup, but ReviewMate is really the simple version of a code review. It is really designed to be very consumable. So it\u2019s a plug-in, ReviewMate is a plug-in to Eclipse, it works with almost any language that there is an Eclipse editor for.<\/p>\n<p>Once you install ReviewMate and you create a new review, you simply select your files to &#8212; that\u2019s going to be reviewed and then it shows you those files in sort of a syntax style, a normal editor that you are used to, but on the right hand margin, you have the opportunity to add comments.<\/p>\n<p>So this is very similar to people that have used Word in kind of the review, review with your Word, maybe just sort of highlight a section of code, in this case, click, add comment, you type a comment and it appears in a bubble on the right hand side.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Right, but unlike reviewing in Word, it\u2019s not like some damn document in your email. It\u2019s actually in the tool right?<\/p>\n<p><strong>Chris Gross:<\/strong> Exactly, and it\u2019s a simple XML file format, you check it in and out of your source control system. So yes, it is very easy, there is very little you have to do to sort of get up and running with it and that\u2019s in your IDs, it\u2019s a very &#8212; it becomes a very easy part of your work flow.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> So like, because you can check on the XML, so do people sort of use it to have an ongoing commentary of a piece of code or is it more just for like more tactical like review this code.<\/p>\n<p><strong>Chris Gross:<\/strong> Well, we do it so it\u2019s more of a &#8212; we take a snapshot of your code, so actually the changes, you may make a comment on a code and if that code is deleted or modified, the comment may no longer apply. So we do take a snapshot of the code and that snapshot along with all your review data, your review comments is saved in there with the IDE and we actually see, I mean a lot of times they want to archive their reviews.<\/p>\n<p>For example common work flow you may have a review, the author of the code may create this review file, put the files in the review that are going to be commented on, check that file in. The other developers who are going to look at it, they check out the review file, they make their comments check it in and then the author of the code opens that back up, he can see all the comments and then he goes through it and he makes changes so he can sort of open the review side by side with the active code and just go through his file, his class make the changes as he is looking on the right hand side of the comments and then save it.<\/p>\n<p>So then he can also &#8212; he keeps that review file as sort of an archive of the review that happened, but he\u2019s been able to change his code file and he has updated it with all the comments and changes that people suggested.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Hey that\u2019s interesting, and like you\u2019re saying it works for any language that Eclipse supports, so it\u2019s not just for Flash and Flex and I mean what &#8212; I mean code reviewing is in theory kind of universal but to ask a similar question about SourceMate I mean and you guys did just launch it recently but like what are the areas, the types of development teams you\u2019re seeing interested for using ReviewMate?<\/p>\n<p><strong>Chris Gross:<\/strong> So I think definitely when you look at teams that are doing code reviews, they\u2019re sort of the more, I don\u2019t know if advanced is the right word, but maybe there are following &#8212; they have a lot of very specific software processes that they follow, code reviews is sort of one of those things that you really have a high performing team usually when you\u2019re also doing code reviews or maybe because you\u2019re doing code reviews.<\/p>\n<p>So these are the better teams, smarter teams. I think, I certainly think that doing code reviews is one of the best ways to just increase overall your code quality, I think perhaps I could make an argument that\u2019s even better than unit testing for increased code quality. So yeah but it\u2019s &#8212; you know we see the teams, very smart teams, high performing teams. With ReviewMate specifically I think what we sort of target is a team that maybe wants to get started on code reviews but doesn\u2019t want to make it an overwhelming deal, you don\u2019t want to have to impose some &#8212; you want to maybe install a server or get a whole new tool that maybe lives outside of your IDE or something that\u2019s very sort of cumbersome.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> I mean that\u2019s what I was thinking as you were saying, it is interesting that you don\u2019t &#8212; I mean it\u2019s basically decentralized and well it\u2019s centralized in your vision control system. I mean you have that file so there isn\u2019t a &#8212; there isn\u2019t really a server to mess with or maintain, it\u2019s just done with all the peers which is &#8212; yeah I mean I can see how that is for people who didn\u2019t want to &#8212; for developers who don\u2019t want to get to the point where they\u2019re worrying about their infrastructure for their coding, it would be a little more light weight.<\/p>\n<p><strong>Chris Gross:<\/strong> Exactly, very consumable, we like to think that it\u2019s sort of like I said, the less is more product, very easy to start out code reviews, but we think it\u2019s very easy to use, very easy to get started.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Right. I mean those are &#8212; you know you guys also have a framework, the Potomac framework right, but those are the two main products that you guys are, that Element River is putting out at the moment. Just real briefly to go into the Potomac thing, like I always mispronounce that because I\u2019m from Texas instead of the east, so that word doesn\u2019t come up. But I remember last time we talked about it, it was basically like a component system inspired by OSGi right, but which kind of sounds intriguing, but do you want to give a quick overview of what that is?<\/p>\n<p><strong>Chris Gross:<\/strong> Sure, so Potomac it\u2019s a Flex framework, and like you said it\u2019s a framework sort of designed and inspired by our experiences with OSGi and Eclipse. So modularity the large applications that want to make &#8212; want to become module applications in Flex, I think I have had a particularly hard time. There is base modularity features that are offered in the Flex framework and in Flash Builder, but I think they are a little bit limiting.<\/p>\n<p>You could almost compare the kind of features that are offered in the Base Flex framework to what\u2019s offered in sort of the base Java program, you can create jars and load jars, but then you can see sort of what the &#8212; what a system like OSGi adds on top of it, so much more infrastructure, much better ways to sort of enable loose coupling and along with Eclipse that adds things like an extension point system on top and then a UI. So Potomac adds those same sorts of things to Flex. I think that if you\u2019re doing a large modular application at Flex and you haven\u2019t looked at Potomac, you\u2019re doing yourself a real disservice, because I don\u2019t think there is anything out there that comes close to achieve the same kind of goals that we\u2019ve achieved with Potomac.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Do you guys use that in, like you said you do a little consulting or servicing, do you guys use it in that kind of work or the product work or where do you guys use it?<\/p>\n<p><strong>Chris Gross:<\/strong> Absolutely, so we have a consulting side and generally most of our consulting is around Potomac. So yes absolutely that\u2019s sort of drives our consulting business and I think it\u2019s very important as we see more and more organizations, big organizations and bigger applications moving to Flex, I think Potomac really fills the need there. I think modularity certainly I think something just maybe in a more general sense the software world is becoming to appreciate a lot more particularly because of OSGi.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> I mean there is a lot of &#8212; to use the term that can mean a whole lot of things, there is a lot of good marketing around OSGi. People have gotten the word out about what it does and as with any framework there is mixed reviews from various, some people really like it and some people are all like don\u2019t like it. But it does, I think the more general idea of trying to have component oriented development or modular or whatever you want to call, like it\u2019s &#8212; you know that idea hasn\u2019t existed as strongly as it did back in the heyday of Object Oriented Programming and so it\u2019s good to kind of bring that idea back, because especially for large and especially for long-term projects, sooner or later if you don\u2019t have things componentized or modularized it\u2019s just &#8212; you start getting those conversations when someone asks you to implement a feature and you\u2019re like well, that\u2019s going to take me a few weeks just to like remove the metaphoric concrete around that thing you wanted to change.<\/p>\n<p><strong>Chris Gross:<\/strong> Absolutely and I think we see situations where people choose Potomac for &#8212; I mean there are so many reasons, here is an example. One customer has sort of a central team that\u2019s building a large application, but they have separate sites that they want to customize that application for, they have maybe ten or &#8212; they even have many more sites that they want to sort of build custom extensions.<\/p>\n<p>So Potomac just like you would do with Eclipse, you would just build a module that extends the base application when you deliver it to that custom site. So not only does it help when they have one team that can develop these modules, can develop the extension points that describe how these other off-site teams would extend to it, and then those custom teams build a very small set of code. They don\u2019t have to merge their code base with the central team, who doesn\u2019t want those guys in there, and then they can deliver the application, it\u2019s just like delivering sort of a plug in application as you might for Eclipse, you do that for Flex with Potomac.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> So the last thing I was interested in talking with and it\u2019s just because this comes up a lot whenever the word Flash and Flex come up, is like, and you mentioned this earlier when we were talking about the types of applications people are using SourceMate on and therefore the types of applications they\u2019re doing Flex and Flash development with and people are always curious about, you know I think this was about six months ago or so where the idea of HTML5 was going to kill off all sorts of RAA development and it did kind of put a hamper on, I don\u2019t know, sort of buzz around RAAs if you will, but like what &#8212; you know when you\u2019re looking at the types of teams that are &#8212; you know it\u2019s interesting because you have ReviewMate which is for any type of development and then SourceMate which is for Flex and Flash stuff and like what are you seeing people using &#8212; you know HTML5 as I said and other places, means a lot of things, it means nothing all at the same time, since it\u2019s kind of just like the new name for AJAX, sort of the new name for web development and I\u2019m exaggerating. But like what are you seeing as far as people using sort of JavaScript or whatever HTML5 is and sort of more, I don\u2019t know, as a way of being an RAA versus using something like Flash or Silverlight or the other sort of proprietary frameworks if you will.<\/p>\n<p><strong>Chris Gross:<\/strong> I think what &#8212; like we are sort of talk about with the different types of applications. I think there is a real &#8212; you know a lot of organizations really struggle with the question of what technology to choose whether it be Flex or Flash or Silverlight or JavaScript and HTML. When I talk to organizations, when I sort of counsel them on what to choose, the one thing I always bring up is productivity.<\/p>\n<p>If everything were equal as far as how long it took to develop a product I think there would be a slew of reasons why you might want to choose HTML and JavaScript. But what people most often overlooked is that productivity factor. Organizations that have historically had 0:39:31, did Java work or Dot Net work or even some of these organizations they have developers who would do in Visual Basic or they were doing 0:39:38 those sorts of things. Moving those developers to JavaScript and HTML to be primarily JavaScript and HTML they really tend to have a hard time.<\/p>\n<p>I think those developers as a whole tend to &#8212; it takes them maybe six months or so at least to get sort of a comfort level with doing that development. Then even once they\u2019ve gotten to that level I don\u2019t think they\u2019re as productive as they were.<\/p>\n<p>Particularly because I think static typing although, I\u2019m not somebody who is going to say a dynamic language, \u201cYou shouldn\u2019t choose dynamic language.\u201d I think there are a whole lot of advantages to developing with the dynamic language.<\/p>\n<p>But when you talk about these big teams with &#8212; that have, multiple developers are going to come back and work on this code and this code is going to last for 10 to 15 years. There is a lot of those concerns about the ability to maintain code overtime, about the ability to transfer code and libraries between different teams and have them understand the interfaces and what\u2019s expected.<\/p>\n<p>And then, also tooling, I think the tooling for dynamic languages isn\u2019t as strong as we see with this sort of static languages or maybe it is sort of getting there or maybe we\u2019re starting to see leaps, but historically it hasn\u2019t been. So the organizations that I see that sort of 40:55 talk about productivity. And that\u2019s an area that I think Flash and Flex and I think also Silverlight as well tend to shine a little bit better, but on a whole, I think there are a variety of factors that go into it, productivity.<\/p>\n<p>And we also have to remember that a lot of these applications have to support multiple browsers and you also have to take that into account. So, that\u2019s maybe not necessarily particularly about JavaScript and HTML, except that we have multiple platforms that we export, almost our platform matrix can grow really large.<\/p>\n<p><strong>Michael Cot\u00e9: <\/strong>Yeah, I mean it\u2019s interesting, there was another area I\u2019ve been looking at a lot recently, because I get asked about it, is in the mobile space, should I develop a mobile web application or a native mobile application? And there\u2019s similar dynamics going on and I think one of the &#8212; I don\u2019t know, one of the vectors of consideration to make up some corny phrases and you are kind of bumping up against this with the productivity thing and you mentioned this about sort of corporate apps before is, you kind of have to rate how important the UI experience is and it seems like &#8212; and it\u2019s &#8212; I kind of feel bad even saying that, because I want enterprise software to be great, right or the corporate software to be great, but at some point, if you\u2019re doing a consumer-based application like you want the UI to be really good, because you know the dynamics of why people are using it are a lot different. Like in theory, for a consumer application, do you want them to be spending as much time as possible in the application?<\/p>\n<p><strong>Chris Gross: <\/strong>Right.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> And so, you want to make it nice, whereas, for a business application like it definitely needs to be usable and nice and doesn\u2019t &#8212; but at some point, you almost want the opposite, you want them to spend as little time in the application as possible, especially if it\u2019s like a expense filing application and so \u2013<\/p>\n<p><strong>Chris Gross: <\/strong>Right.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> And so, it kind of gets to that point you\u2019re making is, the niceness of the UI when you\u2019re developing some types of applications, usually corporate apps isn\u2019t always &#8212; it\u2019s not always the bulk of your consideration. The bulk of your consideration might be that we need to get this out in two weeks or we need to get this out soon, so that we can just fit it into our business process or whatever. And I think &#8212; and over &#8212; while I love the focus on consumer tech that\u2019s going on at the moment, like in this area I think &#8212; we\u2019ve kind of forgotten, like you mentioned some of the older like Delphi and things like that.<\/p>\n<p>We\u2019ve kind of forgotten about rapid application development or the awesomely titled RAD. And I always feel like that people &#8212; we have kind of lost the tool that was available to us. Just quickly throw something up that maybe was clunky I mean that\u2019s the worst case, right, that it maybe was clunky or that it just has that default look and feel to it, but it is &#8212; I don\u2019t know, all those things you have to consider.<\/p>\n<p><strong>Chris Gross: <\/strong>Absolutely. And I think a lot of the sort of bread and butter business applications that for a long time I think made the bulk of application development, I think those sort of applications especially internal applications. I think people &#8212; managers and teams that are making decisions, I think deserve to take a better look at something like Flex or Sliverlight for those sort of bread and butter reasons.<\/p>\n<p>So, yeah absolutely, but when you look at sort of external applications, it\u2019s particularly when you\u2019ve got a set of really strong developers who could take a web application and give it all sorts of cool Ajaxy features and effects, go with HTML and JavaScript. But, if you\u2019re doing bread and butter business application behind the firewall that kind of thing, I think organizations need to strongly consider Flex and Silverlight, those kinds of technologies.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> Yeah, that makes sense. Well great, well, is there anything you think we\u2019ve missed in going over what you guys are up to. I feel like we\u2019re pretty thorough there.<\/p>\n<p><strong>Chris Gross:<\/strong> No, yeah, I think we got it all.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> So like people are interested in checking these things out. I mean what &#8212; how do they get a hold of SourceMate and ReviewMate to kind of open prod them?<\/p>\n<p><strong>Chris Gross:<\/strong> So, both of those, SourceMate and ReviewMate, they both have 30 day trials; you can download, install and use them with no limitations for 30 days. You can get those at our website, which is elementriver.com. And you just install those right in Eclipse using the regular Eclipse update manager, so you just get the URLs for the update site from our website and you\u2019re off and running in just a minute or two.<\/p>\n<p><strong>Michael Cot\u00e9:<\/strong> That\u2019s right. And are you all wired up in the twitter there and everything. I always like to give people a chance to throw out their name in case someone is interested in following them.<\/p>\n<p><strong>Chris Gross:<\/strong> Sure. Yeah, I have a personal twitter account. You can follow me. My twitter ID is Chris_Gross, just like the word and yeah you can follow me and I\u2019ll give you updates on our products and SourceMate, but they\u2019ll make in ReviewMate.<\/p>\n<p><strong>Michael Cot\u00e9: <\/strong>All right. Well, that sounds great. Well, thanks for spending all this time to go over this stuff and thanks to the dear listeners for taking the time.<\/p>\n<p><strong>Chris Gross:<\/strong> Thanks. Thank you.<\/p>\n<p><strong>Disclosure:<\/strong> ElementRiver is a client.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this episode, I talk with Chris Gross (@chris_gross) of ElementRiver. They work on two development tools, SourceMate and ReviewMate. We discuss the Flash and Flex RIA world where SourceMate fits in and the practices in general code review, where ReviewMate operates.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45,23,29],"tags":[168,271,300,301],"class_list":["post-5932","post","type-post","status-publish","format-standard","hentry","category-makeall","category-programming","category-ria","tag-chris-gross","tag-elementriver","tag-flash","tag-flex"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/posts\/5932","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/comments?post=5932"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/posts\/5932\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/media?parent=5932"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/categories?post=5932"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/cote\/wp-json\/wp\/v2\/tags?post=5932"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}