You can’t be Agile in Maintenance?
I’ve been going over a couple of posts by Steve Kilner that question whether Agile methods can be used effectively in software maintenance. It’s a surprising question really. There are a lot of maintenance teams who have had success following Agile methods like Scrum and Extreme Programming (XP) for some time now. We’ve been doing it for almost 5 years, enhancing and maintaining and supporting enterprise systems, and I know that it works. Agile development naturally leads into maintenance – the goal of incremental Agile development is to get working software out to customers as soon as possible, and get customers using it. At some point, when customers are relying on the software to get real business done and need support and help to keep the system running, teams cross from development over to maintenance. But there’s no reason for Agile development teams to fundamentally change the way that they work when this happens. It is harder to introduce Agile practices into a legacy maintenance team – there are a lot of technical requirements and some cultural changes that need to be made. But most maintenance teams have little to lose and lots to gain from borrowing from what Agile development teams are doing. Agile methods are designed to help small teams deal with a lot of change and uncertainty, and to deliver software quickly – all things that are at least as important in maintenance as they are in development. Technical practices in Extreme Programming especially help ensure that the code is always working – which is even more important in maintenance than it is in development, because the code has to work the first time in production. Agile methods have to be adapted to maintenance, but most teams have found it necessary to adapt these methods to fit their situations anyways. Let’s look at what works and what has to be changed to make Agile methods like Scrum and XP work in maintenance. What works well and what doesn’t Planning Game Managing maintenance isn’t the same as managing a development project – even an Agile development project. Although Agile development teams expect to deal with ambiguity and constant change, maintenance teams need to be even more flexible and responsive, to manage conflicts and unpredictable resourcing problems. Work has to be continuously reviewed and prioritized as it comes in – the customer can’t wait for 2 weeks for you to look at a production bug. The team needs a fast path for urgent changes and especially for hot fixes. You have to be prepared for support demands and interruptions. Structure the team so that some people can take care of second-level support, firefighting and emergency bug fixing and the rest of the team can keep moving forward and get something done. Build slack into schedules to allow for last-minute changes and support escalation. You will also have to be more careful in planning out maintenance work, to take into account technical and operational dependencies and constraints and risks. You’re working in the real world now, not the virtual reality of a project. Standups Standups play an important role in Agile projects to help teams come up to speed and bond. But most maintenance teams work fine without standups – since a lot of maintenance work can be done by one person working on their own, team members don’t need to listen to each other each morning talking about what they did yesterday and what they’re going to do – unless the team is working together on major changes. If someone has a question or runs into a problem, they can ask for help without waiting until the next day. Small releases Most changes and fixes that maintenance teams need to make are small, and there is almost always pressure from the business to get the code out as soon as it is ready, so an Agile approach with small and frequent releases makes a lot of sense. If the time boxes are short enough, the customer is less likely to interrupt and re-prioritize work in progress – most businesses can wait a few days or a couple of weeks to get something changed. Time boxing gives teams a way to control and structure their work, an opportunity to batch up related work to reduce development and testing costs, and natural opportunities to add in security controls and reviews and other gates. It also makes maintenance work more like a project, giving the team a chance to set goals and to see something get done. But time boxing comes with overhead – the planning and setup at the start, then deployment and reviews at the end – all of which adds up over time. Maintenance teams need to be ruthless with ceremonies and meetings, pare them down, keep only what’s necessary and what works. It’s even more important in maintenance than in development to remember that the goal is to deliver working code at the end of each time box. If some code is not working, or you’re not sure if it is working, then extend the deadline, back some of the changes out, or pull the plug on this release and start over. Don’t risk a production failure in order to hit an arbitrary deadline. If the team is having problems fitting work into time boxes, then stop and figure out what you’re doing wrong – the team is trying to do too much too fast, or the code is too unstable, or people don’t understand the code enough – and fix it and move on. Reviews and Retrospectives Retrospectives are important in maintenance to keep the team moving forward, to find better ways of working, and to solve problems. But like many practices, regular reviews reach a point of diminishing returns over time – people end up going through the motions. Once the team is setup, reviews don’t need to be done in each iteration unless the team runs into problems. Schedule reviews when you or the team need them. Collect data on how the team is working, on cycle time and bug report/fix ratios, correlate problems in production with changes, and get the team together to review if the numbers move off track. If the team runs into a serious problem like a major production failure, then get to the bottom of it through Root Cause Analysis. Sustainable pace / 40-hour week It’s not always possible to work a 40-hour week in maintenance. There are times when the team will be pushed to make urgent changes, spend late nights firefighting, releasing after hours and testing on weekends. But if this happens too often or goes on too long the team will burn out. It’s critical to establish a sustainable pace over the long term, to treat people fairly and give them a chance to do a good job. Pairing Pairing is hard to do in small teams where people are working on many different things. Pairing does make sense in some cases – people naturally pair-up when trying to debug a nasty problem or walking through a complicated change – but it’s not necessary to force it on people, and there are good reasons not to. Some teams (like mine) rely more on code reviews instead of pairing, or try to get developers to pair when first looking at a problem or change, and at the end again to review the code and tests. The important thing is to ensure that changes get looked at by at least one other person if possible, however this gets done. Collective Code Ownership Because maintenance teams are usually small and have to deal with a lot of different kinds of work, sooner or later different people will end up working on different parts of the code. It’s necessary, and it’s a good thing because people get a chance to learn more about the system and work with different technologies and on different problems. But there’s still a place for specialists in maintenance. You want the people who know the code the best to make emergency fixes or high-risk changes – or at least have them review the changes – because it has to work the first time. And sometimes you have no choice – sometimes there is only one person who understands a framework or language or technical problem well enough to get something done. Coding Guidelines – follow the rules Getting the team to follow coding guidelines is important in maintenance to help ensure the consistency and integrity of the code base over time – and to help ensure software security. Of course teams may have to compromise on coding standards and style conventions, depending on what they have inherited in the code base; and teams that maintain multiple systems will have to follow different guidelines for each system. Metaphor In XP, teams are supposed to share a Metaphor: a simple high-level expression of the system architecture (the system is a production line, or a bill of materials) and common names and patterns that can be used to describe the system. It’s a fuzzy concept at best, a weak substitute for more detailed architecture or design, and it’s not of much practical value in maintenance. Maintenance teams have to work with the architecture and patterns that are already in place in the system. What is important is making sure that the team has a common understanding of these patterns and the basic architecture so that the integrity isn’t lost – if it hasn’t been lost already. Getting the team together and reviewing the architecture, or reverse-engineering it, making sure that they all agree on it and documenting it in a simple way is important especially when taking over maintenance of a new system and when you are planning major changes. Simple Design Agile development teams start with simple designs and try to keep them simple. Maintenance teams have to work with whatever design and architecture that they inherit, which can be overwhelmingly complex, especially in bigger and older systems. But the driving principle should still be to design changes and new features as simple as the existing system lets you – and to simplify the system’s design further whenever you can. Especially when making small changes, simple, just-enough design is good – it means less documentation and less time and less cost. But maintenance teams need to be more risk adverse than development teams – even small mistakes can break compatibility or cause a run-time failure or open a security hole. This means that maintainers can’t be as iterative and free to take chances, and they need to spend more time upfront doing analysis, understanding the existing design and working through dependencies, as well as reviewing and testing their changes for regressions afterwards. Refactoring Refactoring takes on a lot of importance in maintenance. Every time a developer makes a change or fix they should consider how much refactoring work they should do and can do to make the code and design clearer and simpler, and to pay off technical debt. What and how much to refactor depends on what kind of work they are doing (making a well-thought-out isolated change, or doing shotgun surgery, or pushing out an emergency hot fix) and the time and risks involved, how well they understand the code, how good their tools are (development IDEs for Java and .NET at least have good built-in tools that make many refactorings simple and safe) and what kind of safety net they have in place to catch mistakes – automated tests, code reviews, static analysis. Some maintenance teams don’t refactor because they are too afraid of making mistakes. It’s a vicious circle – over time the code will get harder and harder to understand and change, and they will have more reasons to be more afraid. Others claim that a maintenance team is not working correctly if they don’t spend at least 50% of their time refactoring. The real answer is somewhere in between – enough refactoring to make changes and fixes safe. There are cases where extensive refactoring, restructuring or rewriting code is the right thing to do. Some code is too dangerous to change or too full of bugs to leave the way it is – studies show that in most systems, especially big systems, 80% of the bugs can cluster in 20% of the code. Restructuring or rewriting this code can pay off quickly, reducing problems in production, and significantly reducing the time needed to make changes and test them as you go forward. Continuous Testing Testing is even more important and necessary in maintenance than it is in development. And it’s a major part of maintenance costs. Most maintenance teams rely on developers to test their own changes and fixes by hand to make sure that the change worked and that they didn’t break anything as a side effect. Of course this makes testing expensive and inefficient and it limits how much work the team can do. In order to move fast, to make incremental changes and refactoring safe, the team needs a better safety net, by automating unit and functional tests and acceptance tests. It can take a long time to put in test scaffolding and tools and write a good set of automated tests. But even a simple test framework and a small set of core fat tests can pay back quickly in maintenance, because a lot changes (and bugs) tend to be concentrated in the same parts of the code – the same features, framework code and APIs get changed over and over again, and will need to be tested over and over again. You can start small, get these tests running quickly and reliably and get the team to rely on them, fill in the gaps with manual tests and reviews, and then fill out the tests over time. Once you have a basic test framework in place, developers can take advantage of TFD/TDD especially for bug fixes – the fix has to be tested anyways, so why not write the test first and make sure that you fixed what you were supposed to? Continuous Integration To get Continuous Testing to work, you need a Continuous Integration environment. Understanding, automating and streamlining the build and getting the CI server up and running and wiring in tests and static analysis checks and reporting can take a lot of work in an enterprise system, especially if you have to deal with multiple languages and platforms and dependencies between systems. But doing this work is also the foundation for simplifying release and deployment – frequent short releases means that release and deployment has to be made as simple as possible. Onsite Customer / Product Owner Working closely with the customer to make sure that the team is delivering what the customer needs when the customer needs it is as important in maintenance as it is in developing a new system. Getting a talented and committed Customer engaged is hard enough on a high-profile development project – but it’s even harder in maintenance. You may end up with too many customers with conflicting agendas competing for the team’s attention, or nobody who has the time or ability to answer questions and make decisions. Maintenance teams often have to make compromises and help fill in this role on their own. But it doesn’t all fit…. Kilner’s main point of concern isn’t really with Agile methods in maintenance. It’s with incremental design and development in general – that some work doesn’t fit nicely into short time boxes. Short iterations might work ok for bug fixes and small enhancements (they do), but sometimes you need to make bigger changes that have lots of dependencies. He argues that while Agile teams building new systems can stub out incomplete work and keep going in steps, maintenance teams have to get everything working all at once – it’s all or nothing. It’s not easy to see how big changes can be broken down into small steps that can be fit into short time boxes. I agree that this is harder in maintenance because you have to be more careful in understanding and untangling dependencies before you make changes, and you have to be more careful not to break things. The code and design will sometimes fight the kinds of changes that you need to make, because you need to do something that was never anticipated in the original design, or whatever design there was has been lost over time and any kind of change is hard to make. It’s not easy – but teams solve these problems all the time. You can use tools to figure out how much of a dependency mess you have in the code and what kind of changes you need to make to get out of this mess. If you are going to spend “weeks, months, or even years” to make changes to a system, then it makes sense to take time upfront to understand and break down build dependencies and isolate run-time dependencies, and put in test scaffolding and tests to protect the team from making mistakes as they go along. All of this can be done in time boxed steps. Just because you are following time boxes and simple, incremental design doesn’t mean that you start making changes without thinking them through. Read Working With Legacy Code – Michael Feathers walks through how to deal with these problems in detail, in both object oriented and procedural languages. What to do if it takes forever to make a change. How to break dependencies. How to find interception points and pinch points. How to find structure in the design and the code. What tests to write and how to get automated tests to work. Changing data in a production system, especially data shared with other systems, isn’t easy either. You need to plan out API changes and data structure changes as carefully as possible, but you can still make data and database changes in small, structured steps. To make code changes in steps you can use Branching by Abstraction where it makes sense (like making back-end changes) and you can protect customers from changes through Feature Flags and Dark Launching like Facebook and Twitter and Flickr do to continuously roll out changes – although you need to be careful, because if taken too far these practices can make code more fragile and harder to work with. Agile development teams follow incremental design and development to help them discover an optimal solution through trial-and-error. Maintenance teams work this way for a different reason – to manage technical risks by breaking big changes down and making small bets instead of big ones. Working this way means that you have to put in scaffolding (and remember to take it out afterwards) and plan out intermediate steps and review and test everything as you make each change. Sometimes it might feel like you are running in place, that it is taking longer and costing more. But getting there in small steps is much safer, and gives you a lot more control. Teams working on large legacy code bases and old technology platforms will have a harder time taking on these ideas and succeeding with them. But that doesn’t mean that they won’t work. Yes, you can be Agile in maintenance.
October 14, 2011
·
16,677 Views
·
0 Likes
Comments
Jan 04, 2016 · Daniel Stori
Looking forward to reading more of these!
Oct 23, 2015 · mitchp
Switched the author to Arun.
Oct 07, 2015 · Glenn Barley
I do agree clippy didn't offer any help. But he was so cute. I miss him.
Sep 10, 2015 · Allen Coin
I just posted a video presentation that covers most of the ground Reinhold covers in his blog post: https://dzone.com/articles/this-talk-will-give-you-the-gist-of-mark-reinholds
Jul 14, 2015 · Prashant Deva
Also, DZone has a very helpful post on understanding Unsafe:
https://dzone.com/articles/understanding-sunmiscunsafe
Jul 14, 2015 · Prashant Deva
Here was Brian Goetz's response in the thread:
">[quote from previous commenter:] Mocking should be allowed for any class since any class can be mocked. Even the JDK ones
[Brian:] An understandable user perspective :)
Unfortunately, many serious security bugs can stem from being able to
create a bogus instance of a JDK class that is loaded off the
bootclasspath, and the existence of vectors for creating these exploits
is a negative for the entire ecosystem. So, we may need to make some
tradeoffs between security and convenience.
(Many JDK APIs primarily expose interfaces anyway; these are easily
mocked without magic.)"
Jul 14, 2015 · Prashant Deva
I found a discussion thread on this topic back in June on the OpenJDK Java 9 discussions mailing list: http://mail.openjdk.java.net/pipermail/jdk9-dev/2015-June/002342.html
Just hit 'Next Message' at the bottom to page through all the emails about it.
Jul 10, 2015 · mitchp
Does anyone else work at a company that has tried this? What was it like?
Jul 10, 2015 · mitchp
Has anyone encountered any issues with this change? Or written about it up until now?
Jun 26, 2015 · mitchp
Now that's what I call some pure CSS!
May 22, 2015 · mitchp
May 22, 2015 · Peter Nedonosko
If anyone wants to talk about their own personal history with Java, please share in the comments!
Apr 13, 2015 · Denzel D.
Feb 06, 2015 · Justin Sargent
In Ruby. 123 bytes. 82 characters.
Jan 29, 2015 · Julia Robert
Nov 11, 2014 · Karthik Αβrαм
Oct 07, 2014 · Kellet Atkinson
Sep 12, 2014 · admin
Yeah, I didn't hear about the charging thing until a little while ago. That's kinda lame, because no one wants to think about charging their watch. If that was mentioned in the presentation, Apple really breezed over that point quickly because I didn't notice it. Battery technology just still isn't there yet I guess.
Jul 28, 2014 · Gavin Mcleod
Jul 17, 2014 · mitchp
Mar 04, 2014 · Mr B Loid
Hi Rodney. Glad you like the report!
We did try to get Google Compute Engine in the guide, but we didn't have enough information about them to include them in this release. Hopefully we will by the time we do our next update for the Cloud Report.
Mar 04, 2014 · Mr B Loid
Hi Rodney. Glad you like the report!
We did try to get Google Compute Engine in the guide, but we didn't have enough information about them to include them in this release. Hopefully we will by the time we do our next update for the Cloud Report.
Mar 04, 2014 · Mr B Loid
Hi Rodney. Glad you like the report!
We did try to get Google Compute Engine in the guide, but we didn't have enough information about them to include them in this release. Hopefully we will by the time we do our next update for the Cloud Report.
Mar 04, 2014 · Mr B Loid
Hi Rodney. Glad you like the report!
We did try to get Google Compute Engine in the guide, but we didn't have enough information about them to include them in this release. Hopefully we will by the time we do our next update for the Cloud Report.
Jan 21, 2014 · Greg Luck
Dec 18, 2013 · mitchp
You're right. I got it right in the first article but missed it here. X)
Nov 20, 2013 · Tony Thomas
Oct 29, 2013 · Iulia Vasciuc
Oct 09, 2013 · mitchp
I hope that the blogging community and tech publications (we will) move toward compact forms. It clarifies that 'frontend' is a technology-specific term, not just the front end of any random object.
Oct 09, 2013 · mitchp
I hope that the blogging community and tech publications (we will) move toward compact forms. It clarifies that 'frontend' is a technology-specific term, not just the front end of any random object.
Oct 09, 2013 · Mr B Loid
There's also lots of good stories here on this SO question.
Oct 07, 2013 · Mr B Loid
A thousand times yes, Jilles. And I think in the RDBMS space, PostgreSQL is the favorite of newer programmer generations. Ruby devs love to deploy to Heroku, and Heroku uses Postgres by default.
Oct 07, 2013 · Mr B Loid
A thousand times yes, Jilles. And I think in the RDBMS space, PostgreSQL is the favorite of newer programmer generations. Ruby devs love to deploy to Heroku, and Heroku uses Postgres by default.
Oct 07, 2013 · Mr B Loid
A thousand times yes, Jilles. And I think in the RDBMS space, PostgreSQL is the favorite of newer programmer generations. Ruby devs love to deploy to Heroku, and Heroku uses Postgres by default.
Sep 25, 2013 · Mark Stephens
Sep 25, 2013 · Kaostricks Kevin
Sep 25, 2013 · Tony Thomas
I'd also like to include some wisdom from the great Joss Whedon that applies to this question, in my opinion. One of his techinques for keeping himself super-productive is 'eating dessert first'.
In practical terms, this means that you should think about a part of a project that you're excited about or that you just had a good idea for and work on that. Do the fun stuff first and let that momentum carry you through.
Sometimes you can't always do this, because there is usually an order to the steps you have to take in the development process, but hopefully you can think of the most interesting line of code that you're supposed to write right now and start with that.
Sep 25, 2013 · Alvin Ashcraft
Good point, Lester. Here's a little more evidence that has led me to think that the enthusiasm is (I know it's a subjective word...) 'significant'.
http://imgur.com/w2Sj1ca
That was an article from Martin Sustrik posted as a link on HN that lays out the philosophy he wants to implement for Nanomsg, and those stats seem to indicate, to me, an enthusiastic response at least for the idea behind Nanomsg.
It's hard to gauge for certain, I agree, but from what I can tell, it looks like a lot of people want to see Nanomsg grow and succeed.
Sep 25, 2013 · Alvin Ashcraft
Good point, Lester. Here's a little more evidence that has led me to think that the enthusiasm is (I know it's a subjective word...) 'significant'.
http://imgur.com/w2Sj1ca
That was an article from Martin Sustrik posted as a link on HN that lays out the philosophy he wants to implement for Nanomsg, and those stats seem to indicate, to me, an enthusiastic response at least for the idea behind Nanomsg.
It's hard to gauge for certain, I agree, but from what I can tell, it looks like a lot of people want to see Nanomsg grow and succeed.
Sep 05, 2013 · Darshan Hardas
Aug 18, 2013 · Darshan Hardas
Aug 12, 2013 · Hell Boy
Aug 08, 2013 · Adrian MG
Hey Mark. I added two links to the blog I was referring to.
Aug 08, 2013 · Adrian MG
Hey Mark. I added two links to the blog I was referring to.
Aug 08, 2013 · Adrian MG
Hey Mark. I added two links to the blog I was referring to.
Aug 06, 2013 · Mr B Loid
Thanks Dmitry. I fixed up the language on that blurb to be more accurate.
Aug 06, 2013 · Mr B Loid
Thanks Dmitry. I fixed up the language on that blurb to be more accurate.
Aug 06, 2013 · Mr B Loid
Thanks Dmitry. I fixed up the language on that blurb to be more accurate.
Aug 06, 2013 · Geoffrey De Smet
Aug 05, 2013 · Bill Minett
Aug 02, 2013 · Bill Minett
Jul 23, 2013 · Most Likers
Jul 11, 2013 · Stephen Chin
Nice addition! Thanks, John. I added GitBlit.
Jul 11, 2013 · Stephen Chin
Nice addition! Thanks, John. I added GitBlit.
Jul 11, 2013 · Stephen Chin
Nice addition! Thanks, John. I added GitBlit.
Jul 09, 2013 · Yuvrajsinh Vaghela
Jul 05, 2013 · Kosta Hristov
Jun 24, 2013 · Tony Thomas
Apr 16, 2013 · Michael Muller
Apr 16, 2013 · Michael Muller
Apr 02, 2013 · mitchp
Apr 02, 2013 · mitchp
Mar 28, 2013 · Eric Gregory
Mar 25, 2013 · Ben Austin
Mar 25, 2013 · Ben Austin
Mar 14, 2013 · Erica Brescia
Mar 14, 2013 · Andreas Grabner
Mar 14, 2013 · Ravi Dhanai
Mar 07, 2013 · Denzel D.
Feb 08, 2013 · Prabath Siriwardena
Feb 04, 2013 · Amit Sengupta
Jan 31, 2013 · Esslem Ghodbane
Jan 31, 2013 · Samisa Abeysinghe
Jan 25, 2013 · Mr B Loid
I've also heard good things about Salt from some smart people.
Jan 25, 2013 · Mr B Loid
I've also heard good things about Salt from some smart people.
Jan 25, 2013 · Mr B Loid
I've also heard good things about Salt from some smart people.
Jan 25, 2013 · Rich LaMarche
Here's a rebuttal for that ElasticSearch vs. Solr comparison link from @lucidworks
bit.ly/Vw10sI
Jan 22, 2013 · Yah Den
Jan 19, 2013 · Jake Handling
Jan 19, 2013 · James Albert
Jan 17, 2013 · Esther Schindler
I think SpringSource publishes their webinars on their youtube channel a few days after. I would keep an eye out for the video.
Jan 17, 2013 · Esther Schindler
I think SpringSource publishes their webinars on their youtube channel a few days after. I would keep an eye out for the video.
Jan 17, 2013 · Julien Brulland
Jan 16, 2013 · Julien Brulland
Jan 16, 2013 · Eric D. Schabell
Jan 15, 2013 · John Poelstra
Jan 15, 2013 · John Poelstra
Jan 15, 2013 · John Poelstra
Jan 11, 2013 · Michael Levet
Dec 13, 2012 · Jake Handling
Dec 10, 2012 · Robin Varghese
Dec 07, 2012 · Allen Coin
Nov 05, 2012 · Mr B Loid
The link is now fixed.
Nov 05, 2012 · Mr B Loid
The link is now fixed.
Nov 05, 2012 · Mr B Loid
The link is now fixed.
Oct 23, 2012 · Reena Joon
Oct 19, 2012 · Mr B Loid
Oct 19, 2012 · Mr B Loid
Oct 15, 2012 · Will Soprano
Oct 14, 2012 · Mr B Loid
"I want to say thanks for your dzone review of Sencha Touch vs. Jquery Mobile - it seemed pretty balanced to me.
Just two things I wanted to add - Sencha Touch does have a bunch of plugins & extensions, although we haven't made them particularly easy to find at market.sencha.com.
Also, we do have very nice integration with ASP.NET backends via ext.direct which is a server method remoting library: http://www.sencha.com/forum/showthread.php?67992-Ext.Direct-Server-side-Stacks .
Finally, our forums have a 90%+ answer rate after 1 week, which we think is pretty great compared to other sites (even pretty good compared to stackoverflow).
Thanks again for the review.
all the best
-- Michael"
Sep 24, 2012 · Tobin Harris
Sep 24, 2012 · Tobin Harris
Sep 20, 2012 · Tony Thomas
Sep 12, 2012 · Vishnu Mishra
Sep 04, 2012 · Lisa Baille
Sep 04, 2012 · Vung Que Tôi Yêu
Aug 30, 2012 · Tony Thomas
Aug 30, 2012 · Tony Thomas
Aug 30, 2012 · Tony Thomas
Aug 29, 2012 · Seo Soft
Aug 23, 2012 · mitchp
Jul 20, 2012 · ANDREW OLIVER
Jun 26, 2012 · Mr B Loid
Jun 26, 2012 · Mr B Loid
Jun 21, 2012 · ANDREW OLIVER
Jun 20, 2012 · Will Soprano
Jun 14, 2012 · Will Perone
Jun 14, 2012 · Will Perone
Jun 11, 2012 · mitchp
Jun 08, 2012 · Mr B Loid
That's what my observations of the space have shown me as well. I felt kinda silly putting this poll up to be honest. I think it's obvious that Groovy is "Production-Ready".
Jun 08, 2012 · Mr B Loid
That's what my observations of the space have shown me as well. I felt kinda silly putting this poll up to be honest. I think it's obvious that Groovy is "Production-Ready".
Jun 08, 2012 · Erik Seper
Let's see what JL as a whole thinks...
Jun 08, 2012 · Erik Seper
Let's see what JL as a whole thinks...
Jun 08, 2012 · Erik Seper
Let's see what JL as a whole thinks...
Jun 05, 2012 · Darryl Parks
Jun 05, 2012 · Darryl Parks
Jun 05, 2012 · Giorgi Doe
Jun 01, 2012 · Steven Snell
May 20, 2012 · Website Design
May 20, 2012 · Mago Bdd
May 11, 2012 · Giorgio Sironi
May 09, 2012 · Gagan Chhatwal
Apr 16, 2012 · Neil C Smith
Apr 16, 2012 · mitchp
Apr 11, 2012 · Dave Woods
But the best answer I can give is here.
Apr 11, 2012 · Dave Woods
But the best answer I can give is here.
Apr 11, 2012 · Dave Woods
But the best answer I can give is here.
Apr 11, 2012 · Ann Sabr
Apr 11, 2012 · Chen Fishbein
Apr 04, 2012 · Victor Cruz
Apr 02, 2012 · Prasant Lokinendi
Mar 30, 2012 · Tony Thomas
Mar 30, 2012 · Tony Thomas
Mar 30, 2012 · Tony Thomas
Mar 15, 2012 · John Esposito
Mar 13, 2012 · Rob Nova
Mar 08, 2012 · Steven Harris
Mar 01, 2012 · Asif Shahzad Ch.
Feb 26, 2012 · Gökhan Kaya
Feb 26, 2012 · Kirill Grouchnikov
Feb 26, 2012 · Kirill Grouchnikov
Feb 24, 2012 · Kirill Grouchnikov
Feb 23, 2012 · Kirill Grouchnikov
Feb 15, 2012 · Mr B Loid
These are some basic features that I think an IDE has to have.
Feb 15, 2012 · Siddique Hameed
Feb 08, 2012 · Tony Thomas
Feb 03, 2012 · Tony Thomas
Feb 03, 2012 · Tony Thomas
Feb 03, 2012 · Tony Thomas
Jan 24, 2012 · Prasant Lokinendi
Jan 24, 2012 · Jason OKeefe
Jan 24, 2012 · admin
Jan 20, 2012 · Giorgio Sironi
Jan 11, 2012 · cjsmith
Jan 07, 2012 · Ali Qayyum
Jan 06, 2012 · Dorota Jaguścik
Jan 06, 2012 · Mr B Loid
Jan 06, 2012 · Mr B Loid
Jan 06, 2012 · Mr B Loid
Jan 05, 2012 · Mr B Loid
I'd be very interested to hear which articles you would consider the top ones of 2011.
Jan 05, 2012 · Mr B Loid
I'd be very interested to hear which articles you would consider the top ones of 2011.
Jan 05, 2012 · Mr B Loid
I'd be very interested to hear which articles you would consider the top ones of 2011.
Jan 05, 2012 · Mr B Loid
I'd be very interested to hear which articles you would consider the top ones of 2011.
Jan 04, 2012 · Norm Chow
Jan 04, 2012 · Tony Thomas
Great comments, Jilles! If you wanted to revise this comment into an article, I'd be glad to help you post it on Javalobby.
Jan 04, 2012 · Tony Thomas
Great comments, Jilles! If you wanted to revise this comment into an article, I'd be glad to help you post it on Javalobby.
Jan 04, 2012 · Tony Thomas
Great comments, Jilles! If you wanted to revise this comment into an article, I'd be glad to help you post it on Javalobby.
Jan 02, 2012 · Jure Repinc
Jan 01, 2012 · Denzel D.
Dec 29, 2011 · admin
Dec 29, 2011 · Mr B Loid
I agree, Robert. There's not enough attention given to those who write level-headed posts and too much given to the more inflammatory posts these days. I was interested in talking about some topics with you so I sent an email to your account's email. You can also send me an email at mpron[at]dzone[dot]com if you don't get the one I sent.
-Mitch Pronschinske
DZone Senior Curator
Dec 29, 2011 · Mr B Loid
I agree, Robert. There's not enough attention given to those who write level-headed posts and too much given to the more inflammatory posts these days. I was interested in talking about some topics with you so I sent an email to your account's email. You can also send me an email at mpron[at]dzone[dot]com if you don't get the one I sent.
-Mitch Pronschinske
DZone Senior Curator
Dec 29, 2011 · Mr B Loid
I agree, Robert. There's not enough attention given to those who write level-headed posts and too much given to the more inflammatory posts these days. I was interested in talking about some topics with you so I sent an email to your account's email. You can also send me an email at mpron[at]dzone[dot]com if you don't get the one I sent.
-Mitch Pronschinske
DZone Senior Curator
Dec 20, 2011 · Tony Thomas
Dec 20, 2011 · Tony Thomas
Dec 20, 2011 · Tony Thomas
Dec 16, 2011 · Mr B Loid
Dec 16, 2011 · Mr B Loid
Dec 16, 2011 · Mr B Loid
Dec 10, 2011 · Alexandru Boia
Dec 08, 2011 · Sergey Vlasov
Dec 08, 2011 · mitchp
Dec 08, 2011 · Jyoti Gupta
Dec 08, 2011 · Jyoti Gupta
Dec 05, 2011 · Sebastian Piu
Dec 05, 2011 · Sebastian Piu
Dec 04, 2011 · Raghu Raman
Dec 04, 2011 · Raghu Raman
Dec 02, 2011 · Mathieu Carbou
Dec 01, 2011 · John Esposito
Nov 30, 2011 · Mr B Loid
Nov 30, 2011 · Mr B Loid
Nov 30, 2011 · Mr B Loid
Nov 30, 2011 · Mr B Loid
Nov 30, 2011 · Mr B Loid
Nov 30, 2011 · Mr B Loid
Nov 28, 2011 · Ben Watson
Nov 28, 2011 · Ben Watson
Nov 28, 2011 · Ben Watson
Nov 28, 2011 · Ben Watson
Nov 17, 2011 · mitchp
Nov 16, 2011 · admin
Nov 16, 2011 · Ali Qayyum
Nov 14, 2011 · Nikola Lazarevic
Nov 11, 2011 · Dev Stonez
Nov 11, 2011 · Viktors Rotanovs
Nov 11, 2011 · Viktors Rotanovs
Nov 11, 2011 · Viktors Rotanovs
Nov 09, 2011 · Abou Kone
Nov 09, 2011 · Mr B Loid
Developers can go to GitHub and get an open source Java client to work with Zypr. It's not quite a search on the level of Siri or Watson, but it's a first step perhaps.
Nov 02, 2011 · Mr B Loid
Also, you wrote Git Refcard. I'd say it was a pretty kick-ass free resource with 30k+ downloads :)
Oct 31, 2011 · mitchp
Oct 30, 2011 · Amilia Crux
Oct 30, 2011 · Mr B Loid
fixed the slideshow.
Oct 26, 2011 · mitchp
Oct 21, 2011 · Gerd Storm
Oct 20, 2011 · Dev Stonez
Oct 20, 2011 · Jason OKeefe
Oct 19, 2011 · mitchp
Oct 13, 2011 · Mr B Loid
True, Java has a lot of code already out there but are most of the new web applications being built in Java? Is it still the common first choice when deciding which language to build a web app with? I actually don't know. A lot of them could be polyglot too.
Oct 06, 2011 · James Sugrue
Oct 05, 2011 · Paul Underwood
Oct 03, 2011 · Marcin Wolski
Oct 03, 2011 · Dev Stonez
Oct 03, 2011 · mitchp
Oct 03, 2011 · Huds Guis
Oct 01, 2011 · Simon Peter
Sep 29, 2011 · Manuel Jaffrin
Sep 29, 2011 · Jason OKeefe
Sep 29, 2011 · Jason OKeefe
Sep 24, 2011 · Daniel Korzekwa
Sep 23, 2011 · Daniel Korzekwa
Sep 23, 2011 · Daniel Korzekwa
Sep 23, 2011 · Daniel Korzekwa
Sep 22, 2011 · Nathan Powell
Sep 22, 2011 · Henk De Boer
Sep 19, 2011 · Dave Rodenbaugh
Sep 19, 2011 · Henk De Boer
Aug 31, 2011 · Paweł Olesiejuk
Aug 04, 2011 · Denzel D.
Aug 02, 2011 · Kabilan Ju
Jul 29, 2011 · Simon Sarris
Jul 21, 2011 · Krishna Srinivasan
Jul 21, 2011 · James Sugrue
Jul 20, 2011 · Mr B Loid
Thanks Reza,
If anyone else is leading a session or participating, let us know which ones!
Jul 20, 2011 · Mr B Loid
"A few months back I did a post about rewriting my site with HTML5. It just got reposted by DZone. It picked up a few reads including one from the Product Manger for BrowserLab, Bruce Bowman.
He took me to task for claiming that you had to be a CS5 customer to use BrowserLab. To quote Bruce:
Awesome, BrowserLab is free. Go forth and correct for the fact that browser companies love features and hate developers!"
Jul 20, 2011 · Mr B Loid
Also,
There are no speakers from Google again. I doubt we'll see any at JavaOne for a long time.
List of Speakers
Jul 20, 2011 · Mr B Loid
Here were some observations by various folks on Twitter after browsing the newly released Content Catalogue:
- An astounding 61 talks on JavaFX
- 53 talks that come up when searching "Cloud"
- Only 3 talks on JMS
- 4 talks on dedicated to Griffon
- A concert with Sting!
Who else found some interesting patterns?
Jul 19, 2011 · prashant.jalasutram
I'd also be interested in hearing what the community thinks about the features on their "wishlist" that may not make it into PHP 5.4. Is there anything not mentioned here that you think PHP needs?
Jul 13, 2011 · Tony Thomas
This Press Release seems to be a response to the Jaspersoft news.
Jul 12, 2011 · Nicolas Fränkel
Jul 07, 2011 · Giorgio Sironi
Jun 23, 2011 · Franco Martinig
Jun 21, 2011 · Bob Lambert
Jun 21, 2011 · Bob Lambert
Jun 13, 2011 · Joseph Randolph
Jun 13, 2011 · Dev Stonez
Jun 13, 2011 · Dev Stonez
May 20, 2011 · Wan Disco
May 18, 2011 · Nikita Ivanov
May 18, 2011 · Alex Miller
May 18, 2011 · Nazar Nano
May 11, 2011 · Patrick Wolf
May 11, 2011 · Patrick Wolf
May 11, 2011 · Patrick Wolf
May 11, 2011 · Patrick Wolf
May 04, 2011 · Denzel D.
Apr 27, 2011 · Tony Thomas
Apr 27, 2011 · Enaviya It
Apr 17, 2011 · Katie Mckinsey
Jean-Baptiste Nizet replied on Fri, 2011/04/15 - 9:05am
I see three other sources of non-determinism in tests:
1. non-deterministic data structures. This happens, for example, when you use java.util.Set or java.util.Map instances in the code, iterate over the collection in the test and expect the first element to be A and the second element to be B. The problem of course is that there is no first or second element in a non-sorted set or map : the order is non-deterministic. The test will often keep passing until you add another element in the set, or switch from TreeSet to HashSet for example.
2. non-deterministic order in database queries. JPA or Hibernate queries return List instances, which are ordered data structures. But if your query doesn't have any "order by" clause, you can't expect the first element of the list to ba A and the second to be B. It's thus often needed to sort the returned list i the test before verifying your expectations over its content.
3. Internationalization. When testing internationalized applications, test results may vary depending on the default locale/timezone of the test JVM/user. It's thus important to choose a specific locale/timezone for tests and don't rely on the default one.
Apr 11, 2011 · Gerd Storm
Apr 11, 2011 · Ken Krugler
Apr 07, 2011 · mitchp
Apr 07, 2011 · Hai Vu
Mar 24, 2011 · Saikat Sengupta
Mar 06, 2011 · Mr B Loid
Mar 06, 2011 · Mr B Loid
Mar 03, 2011 · Mr B Loid
Mar 03, 2011 · Mr B Loid
Mar 03, 2011 · Mr B Loid
Mar 03, 2011 · Mr B Loid
Mar 02, 2011 · Mr B Loid
Mar 02, 2011 · Mr B Loid
Mar 02, 2011 · Mr B Loid
Mar 02, 2011 · Mr B Loid
Feb 06, 2011 · Mateusz Mrozewski
Feb 03, 2011 · Gerd Storm
Feb 03, 2011 · Gerd Storm
Jan 27, 2011 · mitchp
Jan 27, 2011 · Harshil Shah
Jan 24, 2011 · Gerd Storm
Jan 24, 2011 · Gerd Storm
Jan 24, 2011 · Gerd Storm
Jan 24, 2011 · Gerd Storm
Jan 13, 2011 · Eric Warrines
Dec 27, 2010 · Tony Thomas
Dec 23, 2010 · Martijn Dashorst
Dec 17, 2010 · mitchp
Dec 09, 2010 · Remo Gloor
Dec 07, 2010 · Tony Thomas
Dec 07, 2010 · Giorgio Sironi
Dec 04, 2010 · mitchp
Nov 22, 2010 · Sebastien Arbogast
Nov 19, 2010 · John Burns
Nov 18, 2010 · Georg Hammer
Nov 18, 2010 · mitchp
Nov 17, 2010 · Mr B Loid
I'll give it a couple of days until the responses have slowed down and then I'll post another article on the appropriate Zones: JL, .NET, Ruby, PHP, Python, and Web Builder Zones.
Nov 17, 2010 · Mr B Loid
I'll give it a couple of days until the responses have slowed down and then I'll post another article on the appropriate Zones: JL, .NET, Ruby, PHP, Python, and Web Builder Zones.
Nov 17, 2010 · Mr B Loid
I'll give it a couple of days until the responses have slowed down and then I'll post another article on the appropriate Zones: JL, .NET, Ruby, PHP, Python, and Web Builder Zones.
Nov 17, 2010 · Mr B Loid
You could, but that's part of what we're trying to find out. Out of the programming language available right now, which do you think will be the language that everyone uses in the future?
Nov 17, 2010 · Mr B Loid
You could, but that's part of what we're trying to find out. Out of the programming language available right now, which do you think will be the language that everyone uses in the future?
Nov 17, 2010 · Mr B Loid
You could, but that's part of what we're trying to find out. Out of the programming language available right now, which do you think will be the language that everyone uses in the future?
Nov 17, 2010 · Mr B Loid
You could, but that's part of what we're trying to find out. Out of the programming language available right now, which do you think will be the language that everyone uses in the future?
Nov 13, 2010 · Remo Gloor
Nov 12, 2010 · James Sugrue
Nov 11, 2010 · Shawn Poulson
Nov 11, 2010 · Koen Kuipers
Nov 09, 2010 · Jeff Smith
Nov 09, 2010 · Jeff Smith
Nov 09, 2010 · Jeff Smith
Nov 08, 2010 · Tony Thomas
Nov 05, 2010 · Nicolas Leroux
Nov 05, 2010 · Tony Thomas
Nov 04, 2010 · Tony Thomas
Nov 04, 2010 · Christian Felde
Nov 04, 2010 · Tony Thomas
Actually, he helped us do this! :D
Here's lore from the JCP elder's council vote. DZone The Register Now the Duke will move closer.
Nov 03, 2010 · nitin pai
Nov 03, 2010 · nitin pai
Oct 20, 2010 · Eugene Toporov
Oct 18, 2010 · Mr B Loid
Oct 18, 2010 · Mr B Loid
Oct 18, 2010 · Mr B Loid
Oct 18, 2010 · Mr B Loid
Oct 18, 2010 · Mr B Loid
Oct 18, 2010 · Mr B Loid
Oct 18, 2010 · Mr B Loid
Oct 18, 2010 · Mr B Loid
Oct 08, 2010 · J%|-1416521990_1|%rg Buchberger
Oct 06, 2010 · Greg Luck
Sep 20, 2010 · mitchp
Sep 20, 2010 · mitchp
Sep 20, 2010 · Baptiste Wicht
Sep 20, 2010 · [deleted]
Sep 16, 2010 · Sandro Paganotti
Sep 16, 2010 · Sandro Paganotti
Sep 16, 2010 · Sandro Paganotti
Sep 15, 2010 · Cesar Rodas
Sep 15, 2010 · Cesar Rodas
Sep 15, 2010 · Cesar Rodas
Aug 31, 2010 · mitchp
Aug 16, 2010 · Andres Almiray
@ Ryan
You're right, the OpenSolaris is not becoming closed source, but I said that the project was being merged into Solaris, which is adopting "a more closed model," which is the same interpretation that Nexenta had.
You're probably right also about no one trusting Oracle in the first place. :)
Aug 16, 2010 · Andres Almiray
@ Ryan
You're right, the OpenSolaris is not becoming closed source, but I said that the project was being merged into Solaris, which is adopting "a more closed model," which is the same interpretation that Nexenta had.
You're probably right also about no one trusting Oracle in the first place. :)
Aug 16, 2010 · Andres Almiray
@ Ryan
You're right, the OpenSolaris is not becoming closed source, but I said that the project was being merged into Solaris, which is adopting "a more closed model," which is the same interpretation that Nexenta had.
You're probably right also about no one trusting Oracle in the first place. :)
Jul 05, 2010 · Miguel Alvarez
Jun 30, 2010 · Lyndsey Clevesy
Jun 29, 2010 · Joanna Duff
Jun 16, 2010 · mitchp
Jun 16, 2010 · Kevin Kelley
Jun 16, 2010 · Kevin Kelley
Jun 16, 2010 · mitchp
Jun 16, 2010 · mitchp
Jun 11, 2010 · Daniel Spiewak
Jun 11, 2010 · Daniel Spiewak
Jun 10, 2010 · Andrea Ingaglio
Jun 10, 2010 · Andrea Ingaglio
Jun 10, 2010 · Andrea Ingaglio
Jun 08, 2010 · Holly Lamarche
Jun 07, 2010 · mitchp
May 25, 2010 · mitchp
May 25, 2010 · Mr B Loid
May 25, 2010 · Mr B Loid
May 24, 2010 · mitchp
May 18, 2010 · Krishna Srinivasan
I've emailed Oracle representatives several times about the status/roadmap for the Java Store. In true Oracle fashion, they haven't emailed me back at all. I'm guessing they're either still deciding or they haven't bothered to go through their bureaucratic process to give me an answer.
I don't know about the Intel App Store though.
May 18, 2010 · Krishna Srinivasan
I've emailed Oracle representatives several times about the status/roadmap for the Java Store. In true Oracle fashion, they haven't emailed me back at all. I'm guessing they're either still deciding or they haven't bothered to go through their bureaucratic process to give me an answer.
I don't know about the Intel App Store though.
May 13, 2010 · Krishna Srinivasan
May 13, 2010 · Krishna Srinivasan
May 13, 2010 · Krishna Srinivasan
May 11, 2010 · Tony Thomas
May 10, 2010 · Krishna Srinivasan
May 10, 2010 · Krishna Srinivasan
May 10, 2010 · Krishna Srinivasan
May 10, 2010 · Gerd Storm
May 10, 2010 · Gerd Storm
May 10, 2010 · Gerd Storm
May 10, 2010 · Gerd Storm
Apr 29, 2010 · Mr B Loid
Apr 29, 2010 · Mr B Loid
Apr 29, 2010 · Tony Thomas
Now I'm interested in knowing what those same advantages are that the cloud provides when compared to an OSGi runtime, and how OSGi could flourish in the cloud.
Apr 28, 2010 · Tony Thomas
It looks like most of the inaccuracies came from the information here. It's a summary of a previous presentation on Maven 3.
The last point's inaccuracy comes from some confusion about this statement in Jason van Zyl's Eclipse Magazine interview:
"Internally in Maven 3.1 we will expose a security manager and use the settings.xml implementation as the default implementation, but Sonatype is planning on creating an implementation that interacts with Nexus, our repository manager. In dealing with many large organizations we have found that integrating with in-house security systems and custom implementations is necessary so we will be providing an extension point for this with the security manager."
Apr 28, 2010 · mitchp
It looks like most of the inaccuracies came from the information here. It's a summary of a previous presentation on Maven 3.
The last point's inaccuracy comes from some confusion about this statement in Jason van Zyl's Eclipse Magazine interview:
"Internally in Maven 3.1 we will expose a security manager and use the settings.xml implementation as the default implementation, but Sonatype is planning on creating an implementation that interacts with Nexus, our repository manager. In dealing with many large organizations we have found that integrating with in-house security systems and custom implementations is necessary so we will be providing an extension point for this with the security manager."
Apr 22, 2010 · mitchp
Apr 19, 2010 · Mr B Loid
Thanks for the catch Steve. I looked at my resources again:
http://www.beyondcoding.com/2009/03/02/choosing-a-php-framework-round-2-yii-vs-kohana-vs-codeigniter/
and upon closer inspection it says there's no "built-in" unit testing for Yii. So I corrected that on the list.
Apr 19, 2010 · Mr B Loid
Thanks for the catch Steve. I looked at my resources again:
http://www.beyondcoding.com/2009/03/02/choosing-a-php-framework-round-2-yii-vs-kohana-vs-codeigniter/
and upon closer inspection it says there's no "built-in" unit testing for Yii. So I corrected that on the list.
Apr 19, 2010 · Mr B Loid
Thanks for the catch Steve. I looked at my resources again:
http://www.beyondcoding.com/2009/03/02/choosing-a-php-framework-round-2-yii-vs-kohana-vs-codeigniter/
and upon closer inspection it says there's no "built-in" unit testing for Yii. So I corrected that on the list.
Apr 19, 2010 · Mr B Loid
Thanks for the catch Steve. I looked at my resources again:
http://www.beyondcoding.com/2009/03/02/choosing-a-php-framework-round-2-yii-vs-kohana-vs-codeigniter/
and upon closer inspection it says there's no "built-in" unit testing for Yii. So I corrected that on the list.
Apr 18, 2010 · Jennifer Prentice
Apr 13, 2010 · Mr B Loid
Apr 13, 2010 · Mr B Loid
Apr 13, 2010 · Mr B Loid
Apr 13, 2010 · Mr B Loid
Apr 13, 2010 · mitchp
Apr 13, 2010 · mitchp
Apr 13, 2010 · mitchp
Apr 13, 2010 · mitchp
Apr 08, 2010 · Mike Stefanello
Alex,
Thanks so much for keeping us updated on the Groovy ++ project. It's very interesting to see how this technology (which is very significant in the Groovy ecosystem) is progressing over time.
Apr 08, 2010 · mitchp
Apr 08, 2010 · mitchp
Apr 08, 2010 · Mr B Loid
Apr 08, 2010 · Mr B Loid
Apr 08, 2010 · Mr B Loid
Apr 07, 2010 · Gerd Storm
Apr 07, 2010 · Gerd Storm
Apr 07, 2010 · Gerd Storm
Apr 06, 2010 · Mr B Loid
Apr 06, 2010 · Mr B Loid
Apr 06, 2010 · Mr B Loid
Apr 06, 2010 · Mr B Loid
Apr 06, 2010 · Peterson Mark
Hello All,
Your comments have helped me (and surely some other readers) understand this issue more broadly, so thank you. I'll take a look at your blog, Peter. It seems like this is an important topic that requires further analysis. I'd be happy to find more resouces on the subject of Autowiring vs. XML config, and more comments are welcome. It would be interesting to see how the XML config discussion has evolved since autowiring.
@Nicolas
Don't be saddened. I welcome everyone's constructive criticism, and I thank you for it. Glad you like the Dose. :)
Apr 05, 2010 · Jarrod Spillers
Apr 05, 2010 · Jarrod Spillers
Apr 05, 2010 · Jarrod Spillers
Apr 04, 2010 · mitchp
Apr 04, 2010 · mitchp
Mar 31, 2010 · mitchp
Mar 31, 2010 · mitchp
Mar 29, 2010 · Alex Khizhnyak
Mar 29, 2010 · Alex Khizhnyak
Mar 29, 2010 · Alex Khizhnyak
Mar 16, 2010 · Legos Mania
Mar 16, 2010 · Legos Mania
Mar 16, 2010 · Legos Mania
Mar 16, 2010 · Legos Mania
Mar 10, 2010 · Krishna Srinivasan
It is $199 per month. Appcelerator sent me an email where they mistakenly wrote $199 per dev per year. All other signs point to it being $199/mo.
Mar 10, 2010 · Krishna Srinivasan
It is $199 per month. Appcelerator sent me an email where they mistakenly wrote $199 per dev per year. All other signs point to it being $199/mo.
Mar 10, 2010 · Krishna Srinivasan
It is $199 per month. Appcelerator sent me an email where they mistakenly wrote $199 per dev per year. All other signs point to it being $199/mo.
Mar 05, 2010 · mitchp
Feb 23, 2010 · Gerd Storm
Feb 23, 2010 · Gerd Storm
Feb 23, 2010 · Gerd Storm
Feb 16, 2010 · Lebon Bon Lebon
Feb 16, 2010 · Lebon Bon Lebon
Jan 19, 2010 · Robert Breidecker
Jan 19, 2010 · Robert Breidecker
Jan 19, 2010 · Robert Breidecker
Jan 19, 2010 · Robert Breidecker
Dec 18, 2009 · Jawher Moussa
Dec 17, 2009 · Someone Else
Dec 17, 2009 · Someone Else
Dec 17, 2009 · Someone Else
Nov 30, 2009 · Mr B Loid
Nov 30, 2009 · Mr B Loid
Nov 19, 2009 · Lebon Bon Lebon
Nov 19, 2009 · Lebon Bon Lebon
Nov 19, 2009 · Lebon Bon Lebon
Nov 19, 2009 · Lebon Bon Lebon
Nov 18, 2009 · Mr B Loid
Nov 18, 2009 · Mr B Loid
Nov 18, 2009 · Mr B Loid
Nov 18, 2009 · mitchp
Nov 18, 2009 · mitchp
Nov 18, 2009 · mitchp
Nov 07, 2009 · mitchp
Oct 26, 2009 · Mr B Loid
Oct 26, 2009 · Mr B Loid
Oct 26, 2009 · Mr B Loid