It is now on my own domain at http://www.banico.org/
NCommon
September 7, 2009 at 11:45 am (dotnet)
It appears that I do not have to implement multiple data options for my ProtoStack project as there’s another project out there that’s providing a DDD framework over various persistence implementations. It’s called NCommon.
It is a framework for implementing Unit of Work and Repository patterns over NHibernate, Linq-to-SQL and the Entity Framework.
Shifting Gears
September 4, 2009 at 11:03 am (dotnet)
Tags: frameworks
After getting some work started on Orchestra and setting up the initial framework, I decided to step back and look at the possibility of developing the Windows and Web (ASP.NET MVC) versions of the application in parallel. It led me to look for frameworks that is best for this kind of development. With Prism and ASP.NET MVC both relatively new, I’m not surprised that there’s no such thing.
Someone posted a similar question in StackOverflow (“What’s the best way to target both WPF and web apps?“), and there’s no straight “look here!” answer.
After looking at many blog posts about MVVM, MVC, and other presentation patterns, I then thought that maybe I should set up an open-source project in Codeplex that provides a codebase for developers in a similar situation to explore various presentation layer options.
So, ProtoStack was born. I described it this way: “ProtoStack provides a prototype architecture that brings together various presentation patterns (MVVM, MVC, etc.). It is meant to be used in an architectural spike where developers can experiment and learn these patterns and build the foundation for their chosen framework.”
The project will begin with having various presentation layers talking to a common business and data layer, similar to Rockford Lhotka’s CSLA.NET reference implementation, ProjectTracker, except that it is lighter on the business layer side. I will be using the AdventureWorks sample database so that I don’t have to include SQL’s in the project.
The business and data layer will be using Fluent NHibernate, and, since its objective is to provide developers with architectural options, I will be adding other persistence methods to the mix, such as Entity Framework, Linq-to-SQL and even plain old ADO.NET.
Inevitably, there will be some development choices that will have to be made upfront, such as IOC container (Unity) and AOP framework (PostSharp). I might even toss in some Enterprise Library application blocks. The idea is to expose developers to these concepts, while allowing others who are well familiarized with them to make it easy to switch.
I hope that this project will invite peer reviews and generate discussion on which presentation strategy works best on which types of projects.
Orchestra ERP
August 21, 2009 at 3:30 pm (agile, dotnet)
The stock market was getting challenging for technical analysts so I lost motivation in developing the Euclid project (mentioned in the previous post.) Perhaps I will revisit it once the markets and trading get interesting again.
I have instead resumed developing my WPF ERP framework. I am currently using / planning to use the following free frameworks / tools available for my client layer:
- Rich Client Presentation Layer: Composite Application Guidance or Prism – http://www.codeplex.com/CompositeWPF (When I create a web presentation layer, I will most probably be using ASP.NET MVC http://www.asp.net/mvc/, ASP.NET Ajax http://www.asp.net/ajax/ and JQuery http://jquery.com/)
- Data Layer / ORM: NHibernate – https://www.hibernate.org/343.html and ActiveRecord – http://www.castleproject.org/activerecord/index.html (or I might sell out and go for Entity Framework 4, but I’ll need to wait for .Net 4.0 for this)
- Reporting: Crystal Reports for Visual Studio (well, it comes free with the IDE and there’s no popular open source products are out there.)
- IOC: Unity – http://msdn.microsoft.com/en-us/library/dd140117.aspx
- Logging, Configuration, etc: Enterprise Library – http://www.codeplex.com/entlib
- Object Mapping: Automapper – http://www.codeplex.com/AutoMapper
- Unit Testing: NUnit – http://www.nunit.org/index.php
- Mocking: RhinoMocks – http://www.nunit.org/index.php
- Code Quality: FXCop – http://msdn.microsoft.com/en-us/library/bb429476(VS.80).aspx and StyleCop – http://code.msdn.microsoft.com/sourceanalysis
- Automated / Continuous Build: NAnt – http://nant.sourceforge.net/ and CruiseControl.Net – http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET
- Work Management: Trac - http://trac.edgewall.org/
This WPF ERP framework will start off as two-tier, consisting only of a client and a remote database, most probably SQL Express Edition.
The design, however, should be scaleable enough so that I can move the business layer to a server and put a service layer on top of it. When this happens, I will be using WCF, naturally.
Euclid’s Libraries and Frameworks
June 12, 2009 at 3:21 pm (dotnet, stock market)
Tags: prism, ta-lib, zedgraph
I was starting to do coding on generating Simple Moving Averages of Yahoo! Finance quotes when I found out that there already is an extensive technical analysis function library called TA-Lib.
Making use of what’s out there instead of reinventing the wheel, I’m going to use the following libraries / frameworks for Euclid:
- TA-Lib: Technical Analysis Library. It is widely used by trading software developers requiring to perform technical analysis of financial market data.
- ZedGraph. An open source charting library that includes a Candlestick Chart.
- Prism2. A smart client modularity framework.
- WPF Toolkit for the datagrid and WPF Ribbon for that Office UI look.
- AvalonDock. For docking capabilities.
Depending on the need for data persistence, I might also consider tossing in db4o object database into the mix.
Euclid, a Stock Technical Analysis Software Project
June 6, 2009 at 8:43 am (stock market)
On the side, I’ve started studying stock technical analysis to help in my investment decisions. My interest brought me to this nifty site, StockTA.com. It takes technical analysis indicators such as moving averages, highs and lows, MACD and the like, and provides quick indicators whether the stock is bullish or bearish.
The site is quite reliable, but I didn’t want to hinge my future investment decisions on the site, as it may just go away at any time. While I do have NinjaTrader, a stock analysis software with a free version which allows add-ons programmed in C#, I’d like to get a shot at developing my own stock analysis software.
I’m calling it Euclid, named after the stock predicting computer in the movie Pi.
VersionOne and Trac
April 27, 2009 at 10:24 am (agile)
Curious about Agile web tools, I installed VersionOne’s Agile Team Edition (free for up to 10 users) and Trac.
VersionOne is a leading Agile Project Management tool, built with Scrum, XP and agile in mind. Trac is a bug/issue management system with a wiki and Subversion integration.
They both work alright on Vista. For V1, I had to reinstall my SQL Server 2005 Express Edition as it needed the Full-Text Search Service. For Trac, after fiddling around with installing Trac’s individual components and scratching my head with Python version compatibilities and component integration, I went for Visual SVN’s Trac installer which hooked up everything out of the box.
Learning Resource-Event-Agent (REA)
April 21, 2009 at 9:57 am (rea)
While waiting for Pavel Hruby’s Model-Driven Design Using Business Patterns book, I wanted to read up ahead to learn more about the REA paradigm. I found William McCarthy’s speaker presentation materials, which has both slides and audio recording. I plan to set aside time to go through the entire recording (2 hours), following it on the slides and taking notes. It is a very meaty presentation and I hope that it will give me a good headstart on the subject.
Subversion and Live Mesh
April 18, 2009 at 9:40 am (agile)
I’ve always been paranoid about my home code. After doing regular backups at home on a spare hard drive, I always felt that I needed to have an offsite one.
When I discovered Live Mesh, I thought that this was the answer to my need. I immediately connected my project folder and my Subversion folder to the mesh (to have both in-progress and committed copies). The best part is that this is all done in the background. I love it!
It turns out somebody else had the same idea.
I prefer this approach over publicly hosted SVN services, which may require you to post your code publicly for free.
Less is More in Accounting
April 16, 2009 at 11:40 am (accounting software)
I’ve given more thought about my side project’s application features after re-reading Getting Real by 37Signals. So, I went around and looked for Web 2.0 Accounting Apps and found this list of “the most awesome accounting and invoicing applications.” This list represents the anti-Quickbooks crowd, where the point is to simplify accounting software use and move away from the bloat.
They’re all on an ASP (application service provider) business model, delivered over the web. I’m thinking that the same principles should be applicable to rich client applications as well.



