Monday, September 10, 2012

Development universe - what works for me



  1. Cygwin/X
    1. Free
    2. Works for most of my uses, mainly for xterms but also including running jvisualvm on some remote servers
    3. Not very pleasant running this over VPN/DSL. 
  2. Java 7
    1. Numerous good improvements over Java 6
    2. Could do without the security holes
    3. Missing closures and reified generics
    4. This is the day to day work horse
    5. Looking forward to Java 8 closure and lambda support.  I do have some code for which a good amount of boiler plate code should go away. 
  3. Scala 
    1. version 2.10.x - This version is where I see it finally having enough features to be of more general use.
    2. Using for some utilities and batch data maintenance.
    3. Currently have a utility using squeryl for database access.  There are a number of alternatives technologies which I have not looked closely at - this was just the first I was able to get working reasonable quicklu.
  4. Eclipse Juno (started using Eclipse at version 2)
    1. Working pretty good since I upgraded a month or so ago
    2. Have not installed all the plugins I had before but the day to day ones are there
    3. Pretty heavy memory requirement
    4. Not always the fastest response times during some activities
    5. Have CAS server and custom application running in Tomcat 7 launched in Eclipse.  Given enough memory this works but speedy.
    6. Have a number of plugins/features I tend to use
      • Pydev 
      • JDepend4Eclipse
      • GrinderStone 
      • Data Hierarchy 
      • Apache Directory Studio LDAP Browser UI 
      • Apache Directory Studio LDIF Editor 
      • Apache Directory Studio Schema Editor 
      • Eclipse memory Analyzer 
      • Subversive SVN 1.7 
      • CXF WebServices
      • PMD plugin 
      • Recently installed Eclipse Modeling Framework and Papyrus 
  5. Tomcat 7
    1. Been very stable
    2. Caught off guard initially by a cookie handling difference between version 6.  Fortunately, some configuration parameters exist which make it compatible with prior versions
    3. Been scalable enough - especially when combined with a HW load balancer. 
    4. Nice being able to deploy on shared storage (NFS) and have multiple servers use it
  6. Glassfish 3.1
    1. This is nice for some internal applications, compatibility testing and some other uses
  7. Redhat Enterprise Linux  3-6
    1. Finally got off the ancient version 3 a year or 2 ago for some legacy apps
    2. Version 4 is ok but missing a few features
    3. Version 5 has been decent.  Wishing some of the functionality required less configuration.  Most of the issues have been inflicted by things like "features" on certain hardware, default features and occasionally problems by base VM image configurations provided by another group.
    4. Just received my first version 6 VM.  Have had issues already with problem of interaction between server auth mechanism and OS/setup - profiles not being run on login.  Had a problem with NFS mount hanging when doing an "ls" on it - server group worked around it but they don't know the root cause/fix.  Apparently, disabling jumbo frames was the work-around.  I am going to try and see if the transparent huge page support works as well as the "regular huge page" support.  I saw some reports that it wasn't working all that well but without testing it is hard to tell.  If it does work, it will certainly simplify requests for servers.  A downside is I don't that this always helps because we use virtualization heavily so the underlying server can affect results significantly.  Virtual servers moving between hosts of different configurations causes obvious performance changes.
  8. WinMerge
    1. This has made working with code generated from PeopleSoft app designer almost bearable.  When 7000+ files are involved you really need tools.  Of course, other tools/utilities were needed as well to make the process fully bearable.  
  9. SQLDeveloper 3
    1. Fairly nice tool
    2. Can't beat the price - free.
    3. Gives me 80% of the functionality I need
    4. The 20% lacking means I still get to interact with our DBA group and utilize their skills (they like to be needed too and they are very skilled).
  10.  Notepad++
    1. Nice tool and free
    2. The various plugins are helpful - especially some the XML and search/replace items
  11. PeopleSoft AppDesigner - PeopleTools 8.51
    1. Not a lot of options for working in PeopleSoft.  Use it for creating Component Interfaces and a few things like that.  The fewer things done directly in PeopleSoft, the better off we are.
  12.   Visio
    1. The "normal" tool for diagramming by most in current organization.  Ok for documenting DB designs, OO Class diagrams, etc.
  13. Subversion 1.7
    1. I have used this for a number of years.  It has its warts but improves a little each year.  I have used a number of commercial systems over the years and this is better than 99% of them.  We don't really have a reason to move to a different system like Git, Mercurial, etc.  Changing source control systems based on current trends is just silly if what you have works for you and a new system is not a much better fit for your work flows/environment.  I look forward to future versions of subversion and am grateful for what the development team has done.
    2. I am looking forward to converting to version 1.8 now that it is out.  I am hoping that some aspects of merging will be a little simpler.  A lot of the time, the issue is just a lack of adequate planning on my part which is rooted in lack of project planning at the enterprise level.
  14. Gimp
    1. Not an everyday need but useful on occasion.  I think some other tools are easier to use for simple needs (mainly trying fix/update icons every so often).
  15. BIRT reporting
    1. I typically use the BIRT version of Eclipse although at one point I had to use separate installations because some things just were not compatible.  At the moment, I am able to do ad-hoc reports and development in the same IDE instance which is nice.  Not the most exciting looking reports but VERY useful for the amount of time/money invested.
  16. Artifactory
    1. This is a recent addition and appears easy to use.  I was able to hook it up with our Active Directory with very few problems.  I have another more detailed post on it but it is a nice product.  
    2. Related to this is the Jenkins Artifactory plugin - nice as well but wish some specific features were available in the free version (like generic artifact resolution).  The good news is that the Nexus Repository Connector plugin did what I needed.
  17. Jenkins (previously Hudson) build server
    1. Very useful for maintaining build stability/reliability and provides useful plugins which help automate many other batch like tasks (small support tools, metrics gathering/reporting, operational/support tasks)
    2. Have some Groovy/SQL jobs - these work but I have some issues working in a transactional manner which I am still trying to sort out.  It  may require new versions of some jars.
    3. The plugins are working together pretty well at the moment which is nice.  Was able to create a job which did some scp copies, grabbed a jar application out of Artifactory via Nexus Repository Connector Plugin and then executed it on the copied files with an email sent on failure, etc.  Really straight forward - hoping to leverage the features a  lot more soon.
  18. Ant
    1.  Currently Jenkins builds are setup to use ant.
  19. Maven
    1. Only using for dependency management within Jenkins ant builds.  May revisit this now that Artifactory is running.
  20. Various libraries/frameworks
    1. Apache DBUtils
      1. created other useful features on top of this
    2. Oracle Universal Connection Pool (UCP)
      1. Switched from the delivered Tomcat pool and haven't had a need to go back
    3.  Oracle ojdbc6.jar
    4.  hsqldb.jar
      1. Typically use for unit testing
    5. sqltool-hsqldb-2.2.5.jar
      1. Integrated with my Apache DBUtils wrapper; Allow running scripts from within our applications
    6. Apache CXF 
      1. for some minor web service integrations.  Likely use directly for other services or as part of implementation using Apache ServiceMix in the future
    7. Apache HTTPComponents client/core
    8. Log4j and a few others now
    9. Caching - both of these work fine but I am leaning toward Infinispan at the moment unless some other option I am investigating steals the show (note, created wrapper around these using cache-api-0.5-20120125.003444-41.jar).
      1. JBoss Infinispan cache
      2. Ehcache
    10. Apache Struts2
    11. struts2-jsf-plugin
    12. JSF 2
    13. mockito
    14. junit-4
      1. Unit/integration testing
    15. commons-cli
      1. Provide a command line interface to utility code
    16. Primefaces 3.x
      1. Slowly working on integrating some new functionality with this.  Fairly nice results.
    17. StringTemplate (http://www.stringtemplate.org/) - 
      1. Terence Parr has done a lot of great work over the years (especially with ANTLR).  
      2. Works perfect and easy to use
      3. I could use this for a lot more stuff but mainly use it for some email templates for some operational reporting (300k+ emails a year)
    18. JASIG CAS
      1. Slowly working to get this setup 
      2. Working on getting a distributed cache integrated for its tickets
    19. Apache Shiro
      1. This is looking like a viable solution for securing custom apps and integrating with CAS as well.
    20. Spring 2 framework
      1. Using in a lot of places but most of the apps didn't start with it so it has a grafted on feel in those apps.
      2. Very useful in combination with moving configuration outside of WAR files (to shared NFS storage) and using custom code along with "environment type" environment data (i.e. prod, test, dev, etc) as part of the bean naming/lookup process.
      3. Note, I had considered CDI briefly but my show review seems to indicate that there isn't a good way to externalize configuration outside of the WAR file and that was totally counter to the path I am taking to make operations more robust.
    21. spring-ldap
      1. Used to simply some code as we convert from DB backed auth data to AD
    22. QAS
      1. Commercial product - Address cleansing support; works well enough - more features than we currently use.
Many more items and eventually links to include.

No comments:

Post a Comment