My Environment

One of my main Cloudy Models projects is working on the Ser.Aws EA plugin.  Building a plugin for EA involves creating an assembly (DLL file) which EA loads on startup.   The plugin can be written in a number of possible languages, but I have chosen C#.  There are a number of bits and pieces that work hand in had together to make the development process easier, fun or more effective.

Note that although I have a background as a programmer, it's been a while since I've spent 8 hours on a keyboard, cutting code; Also, my background is in C on Unix with smatterings of C++, Java, Perl, Ruby... etc.  I did do a little bit of C# commercially, as part of working with ESRI software, but I wouldn't describe it as being extensive.  Anyway, standard disclaimer, this is just my setup.  It could be all wrong. I could change my environment at any moment, if I learn or realise something new.

Without further ado, below is my environment (both current and whatever is in the works or I have been thinking about).
  • A laptop  - I know you can get some rigs which are specifically geared towards programmers.  Lots of memory, chunky, etc.  I wanted something portable, I didn't want to spend too much money and it needed to double as a family laptop.  I opted for the Inspiron 15 - 7000 Series (7579) model from Dell, and it's worked out fine for me.
  • Internet Access - Seriously, can you do anything these days without an internet connection?
  • Visual Studio Community Edition - I was initially using SharpDevelop until I learned about Visual Studio being available in a Community Edition.  It's pretty much the same as the paid for product but it is licensed for open source, students, etc.  Note however that you need a Microsoft account to use it after an initial trial period.
  • Github - Git repository, needs no introduction.  Allows for the free hosting for open source repositories.  I hadn't tried using Git before, so also using this as an opportunity to learn about it.
  • Spring.Net - This is the .NET equivalent to the popular IOC framework in the Java world.  Note, that I'm aware of Castle Windsor which I've been told is considered more idiomatic for C#.  I don't have any views either way, I'm just familiar with the Spring Framework and hence thought that Spring.Net offered an easier learning curve.
  • Logging - I was all set to use log4net.  Similarly to the choice around Spring.Net, I'm reasonably familiar with log4j and thought that would be the ticket.  However when I started looking into it, I noticed that a Common.Logging framework had arisen and that Spring.Net was using it, so I'm just using this in a combination with log4net without any bells or whistles.
  • Testing Framework - I haven't set this up yet.  Eventually I'd like to move to a relaxed test driven development approach, but haven't done so yet.  There are a number of potential choices here, but will probably go with something in the xUnit family.
  • Continuous Integration - I don't have a lot of hands-on experience with this, but definitely want to get this done at some point.  Broadly speaking my requirements would be that it be free, open source, and that it work with Github.  Any suggestions would be welcome.
  • Database - I have a MySQL database hosted on AWS that I use as an EA repository.  I also keep a number of local EA file repositories on my laptop, which I use for various purposes e.g. trialling new stuff, etc.
  • Sparx Systems EA - I use a corporate floating license of EA.  I chose this specifically, as this is the most common version that I've seen running in organisations that I have worked in.  I have the license key store on my laptop, but I'll probably migrate this to AWS at some point... soon... maybe.
Like I said, this is just my setup, probably far from perfect.  Please get in touch if you'd like to offer your suggestions on how I could improve it.  I can envisage that it will change over time, but I'll talk about any changes in this blog, as they happen.

[Originally posted here.]

Comments

Popular posts from this blog

Creating Items in Sparx EA via Java

Module Management - Part 1 - getModule() Pattern

Traversing a EA Model via Java