<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>gruchalski.com &#187; Projects</title>
	<atom:link href="http://gruchalski.com/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://gruchalski.com</link>
	<description>just another blog in all that noise...</description>
	<lastBuildDate>Tue, 20 Dec 2011 22:25:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>What I&#8217;ve been up to for over 3.5 years</title>
		<link>http://gruchalski.com/2011/03/23/what-ive-been-up-to-for-over-3-5-years/</link>
		<comments>http://gruchalski.com/2011/03/23/what-ive-been-up-to-for-over-3-5-years/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 22:00:00 +0000</pubDate>
		<dc:creator>radekg</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://gruchalski.com/?p=465</guid>
		<description><![CDATA[I&#8217;m sitting at the Miami International airport waiting for my flight back to London and looking at the past 3.5 years. I had a chance to work on a fantastic project that finally went live, 100% live. 3.5 years ago I joined Monochrome as a contractor to work on a project for a company trading [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sitting at the Miami International airport waiting for my flight back to London and looking at the past 3.5 years. I had a chance to work on a fantastic project that finally went live, 100% live. 3.5 years ago I joined <a href="http://monochrome.co.uk">Monochrome</a> as a contractor to work on a project for a company trading aircraft parts. When starting, late 2007, no one was expecting it will take so much time to complete. So what is this monster?</p>
<p>In short: a CRM, sales support, warehouse management and stock control system. In detail: a system to manage customers, suppliers, create purchase and sales orders, invoices and full stock control system, basically to run the whole company, 2 branches actually. It is built mainly with Adobe ColdFusion 9, Adobe Flex 3 and Microsoft SQL Server 2008 R2. Almost 60,000 lines of ColdFusion code and 25,000 lines of MXML+AS3. This application is used on a daily basis by about 70 people in 2 different locations. The data between these two locations is exchanged in near real-time manner, US and UK offices get better overview of the business.</p>
<p><a href="http://gruchalski.com/wp-content/uploads/2011/03/ics1.png"><img src="http://gruchalski.com/wp-content/uploads/2011/03/ics1-300x293.png" alt="" title="ics1" width="300" height="293" class="aligncenter size-medium wp-image-483" /></a></p>
<p>When we started at Monochrome we had to deal with a totally different creature than what it is now. This new application (called ICS) was about to replace one mans job, a green screen system written in COBOL for over 20 years. The old technology imposed quite a few limitations &#8211; the client really wanted to keep developing new user interface on top of existing database (yes, I know&#8230;) This was achieved with Liant Relativity Data Server, it takes flat COBOL data files and exposes them via ODBC (Liant was bought by Microfocus who recently introduced COBOL for .NET4). As we kept developing we never really experienced any problems with performance. But ICS had to go to live user testing at some point. That&#8217;s where the problems started. We experienced serious performance issues and a lot of server crashes. It turned out that the reason was the database driver, it was slow and couldn&#8217;t handle joins so we ended up running lots of small queries that in ideal world could be replaced with a view or something. It took as over 2 years get to the stage when we were feature complete but with massive performance issues. Phase one was complete anyway, the client was happy, he he expected this sort of problems. Mind you, the company itself evolved a lot to suit to the new processes we were developing and implementing &#8211; this partially is the reason why the initial phase took so long.</p>
<p><a href="http://gruchalski.com/wp-content/uploads/2011/05/ics2.png"><img src="http://gruchalski.com/wp-content/uploads/2011/05/ics2.png" alt="" title="ics2" width="450" height="265" class="aligncenter size-full wp-image-484" /></a></p>
<p>This is where the things changed slightly (from now on &#8220;we&#8221; means me and the client only). Second phase, moving away from the legacy database and putting final touches would happend on site. There was quite a few reasons for this decision but this blog is not the right place to get into the details. I was offered a contract, things got really interesting.</p>
<p>First, we had to decide what the final hardware setup is going to be like. We had 2 old Dell 2950 32 bit servers already &#8211; we needed more. So we have got a couple of Dell R410 64 bit, 8TB storage, 24GB RAM machines &#8211; these are now serving as primary servers while 2950s are used as backups. Each location has its own set of servers. For virtualisation we use VMWare ESXi 4 on 64-bit machines and ESXi 3.5 on 32-bit machines. Each server is running 2 Windows instances, one for the web server, one for the database (Windows 2008 R2 on ESXi 4 and Windows 2008, R2 is 64 bit only, on ESXI 3.5). So 8 Windows instances in total. Each setup is exactly the same (apart from the amount of memory assigned to the VMs). Primary servers have 10GB RAM assigned for SQL Server 2008 R2 and 3GB for ColdFusion 9. US database serves as a backup for UK and UK database serves as a backup for US &#8211; we are using SQL Server log shipping without a mirror server instances. On top of that we have an offsite backup for full and transaction log database backups.</p>
<p><a href="http://gruchalski.com/wp-content/uploads/2011/05/ics3.png"><img src="http://gruchalski.com/wp-content/uploads/2011/05/ics3.png" alt="" title="ics3" width="450" height="266" class="aligncenter size-full wp-image-485" /></a></p>
<p>Software architecture of the core application is pretty straightforward, no real magic there. Flex application created with Flex 3 and Cairngorm 2 talking to ColdFusion 9 using remote objects. Oh, and we have an AIR wrapper for the application so we can use it inside the browser and on the desktop). But I mentioned before: &#8220;It is built mainly with Adobe ColdFusion 9, Adobe Flex 3&#8243;. We also use Java, C#, Ruby and node.js. Quick rundown:</p>
<ul>
<li>Java: we use Jasper Reports for forms printing &#8211; stuff like order acknowledgements, invoices<br />seriously, never thought that reporting software can be used this way, Jasper Reporting with iReport is a fantastic product I would happily pay the money for (if I was the project owner and I was paying the bills&#8230;)<br/>Jasper generates PDFs for us, these get printed using <a href="http://qoppa.com">Qoppa</a> jPDFPrintCLI product. I have to say &#8211; if you ever have to print PDF files I can recommend Qoppa for fantastic support.</li>
<li>C#: we have a scanning process integrated into the workflow, you see, when aircraft parts are coming in they often come with printed certificates. These certificates have to be scanned and stored forever. We are using <a href="http://code.google.com/p/twaindotnet/">Twain.NET</a> desktop application (sitting in the tray) talking to the Flex app via sockets</li>
<li>node.js: our system required a realtime messaging and object locking mechanism. We have initially used Red5 for this but once we learned about <a href="http://nodejs.org/">node.js</a> there was no point keeping Red5 running. Our realtime messaging server was running just fine for last 12 weeks last time when I checked. And it has only 200 lines of code.</li>
<li>Ruby: we use it for a lot of maintenance tasks</li>
</ul>
<p><a href="http://gruchalski.com/wp-content/uploads/2011/05/ics4.png"><img src="http://gruchalski.com/wp-content/uploads/2011/05/ics4.png" alt="" title="ics4" width="450" height="265" class="aligncenter size-full wp-image-486" /></a></p>
<p>Of course every project of such a big scale needs source control. At the beginning of the development SVN was the choice but with time we moved to Git, many reasons behind this decision &#8211; but Git feels much better ;) We have an automated build server running Ubuntu with Apache Ant connecting to <a href="http://github.com">Github</a> and building the application on demand.</p>
<p>And in the end there is an HTML application for mobile devices. It gives access to the most important details of customers, parts, batches, suppliers and so on.</p>
<p>This was an interesting journey. In some spare time I&#8217;ll try to describe most interesting parts in more details.</p>
<p>We are boarding, see you on the other side&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://gruchalski.com/2011/03/23/what-ive-been-up-to-for-over-3-5-years/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Long time no see</title>
		<link>http://gruchalski.com/2010/11/23/long-time-no-see/</link>
		<comments>http://gruchalski.com/2010/11/23/long-time-no-see/#comments</comments>
		<pubDate>Tue, 23 Nov 2010 21:36:38 +0000</pubDate>
		<dc:creator>radekg</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://gruchalski.com/?p=449</guid>
		<description><![CDATA[It has been a long time since I last blogged anything here. There was a lot going on over last year. There&#8217;s been this massive project I was working on, ColdFusion, Flex, .NET, Java, Microsoft SQL Server 2008, moving away from green screen application and even some real time data synchronisation between two different geo [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a long time since I last blogged anything here. There was a lot going on over last year. There&#8217;s been this massive project I was working on, ColdFusion, Flex, .NET, Java, Microsoft SQL Server 2008, moving away from green screen application and even some real time data synchronisation between two different geo locations. It&#8217;s been an interesting, very exciting journey which I&#8217;m going to describe here very soon. Hope some of you will find it interesting and who knows, maybe there&#8217;s some knowledge to take away?</p>
]]></content:encoded>
			<wfw:commentRss>http://gruchalski.com/2010/11/23/long-time-no-see/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL on AIR website is live</title>
		<link>http://gruchalski.com/2009/04/18/mysql-on-air-website-is-live/</link>
		<comments>http://gruchalski.com/2009/04/18/mysql-on-air-website-is-live/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 21:25:45 +0000</pubDate>
		<dc:creator>radekg</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://gruchalski.com/?p=89</guid>
		<description><![CDATA[I have just finished MySQL on AIR project website. It is available here: http://mysqlonair.gruchalski.com/. No release download yet, not all information is there. It is just a first step. First release build should appear there withing next few days.]]></description>
			<content:encoded><![CDATA[<p>I have just finished MySQL on AIR project website. It is available here: <a href="http://mysqlonair.gruchalski.com/">http://mysqlonair.gruchalski.com/</a>. No release download yet, not all information is there. It is just a first step.</p>
<p>First release build should appear there withing next few days.</p>
]]></content:encoded>
			<wfw:commentRss>http://gruchalski.com/2009/04/18/mysql-on-air-website-is-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is MySQL on AIR?</title>
		<link>http://gruchalski.com/2009/04/12/what-is-mysql-on-air/</link>
		<comments>http://gruchalski.com/2009/04/12/what-is-mysql-on-air/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 03:20:48 +0000</pubDate>
		<dc:creator>radekg</dc:creator>
				<category><![CDATA[Adobe Flex/AIR]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://gruchalski.com/?p=9</guid>
		<description><![CDATA[It is an Adobe AIR client for MySQL databases. About 3 months ago I moved to Ubuntu as my primary OS and the only thing I was missing was nice MySQL tool. I found few different projects, most obvious ones are MySQL Query Browser and phpMyAdmin, but there are always these small issues&#8230; MySQL Query [...]]]></description>
			<content:encoded><![CDATA[<p>It is an Adobe AIR client for MySQL databases. About 3 months ago I moved to Ubuntu as my primary OS and the only thing I was missing was nice MySQL tool. I found few different projects, most obvious ones are MySQL Query Browser and phpMyAdmin, but there are always these small issues&#8230; MySQL Query Browser doesn&#8217;t allow resizing query area (really annoying when writing large queries) and phpMyAdmin, well&#8230; it is phpMyAdmin and it is to big for what I needed.</p>
<p>Remembering that someone created MySQL driver in ActionScript (<a href="http://code.google.com/p/assql/">asSQL</a>) I decided to write an application that will be cross platform and is going to offer as much as any other desktop application would.</p>
<p>Now please remember, this is still work in progress, the code is not well structured and it is changing very often but some major functionality is already there.</p>
<p><img class="aligncenter size-full wp-image-13" title="MySQL on AIR interface" src="http://gruchalski.com/wp-content/uploads/2009/04/screenshot-mysql-on-air.png" alt="MySQL on AIR interface" width="400" height="300" /></p>
<p>Following features are currently available:</p>
<ul>
<li>query window with results data grid</li>
<li>new table window</li>
<li>edit table window</li>
<li>SQL editor with code coloring (please check notes on performance below), line numbering and selected query part execution (feature known from MSSQL Management Studio)</li>
<li>multiple windows</li>
<li>connections management, data stored in XML file, passwords in encrypted storage</li>
<li>number of context navigation options (for details please visit following URL <a href="http://wiki.github.com/radekg/mysqlonair/todo">http://wiki.github.com/radekg/mysqlonair/todo</a>)</li>
</ul>
<p>Here is a raw list of options I plan to implement in near feature:</p>
<ul>
<li>query window progress bar and cancelling running query</li>
<li>wire all context navigation options</li>
<li>create and restore CSV, XML, SQL and YAML backups</li>
<li>handling binary files</li>
<li>query result data grid improvements, cell alignment and sort support depending on column data type</li>
<li>query editor improvement &#8211; code hints (similar to what can be found in MSSQL Management Studio 2008)</li>
<li>diagrams and foreign keys support</li>
</ul>
<p>Notes on performance</p>
<p>While developing the application I discovered following performance issues. Code coloring works perfectly on Windows, there is no speed problems even for queries 500 lines long (I didn&#8217;t tested larger ones yet). Unfortunately on Linux with Flash Player 10 I could not get good TextRange performance (more information and sample code soon in separate post) so code coloring is by default disabled on Linux (you can enable it if you want). I had no chance to test it on OSX. Second performance issue is results data grid. I tried running large queries and it appears that asSQL driver handles them very well but ArrayCollection does not. I would not try running queries that return large result sets. Other than that everything seems to be working fine. I&#8217;m aware of some small driver issues that I&#8217;m going to track down and report to asSQL project owner.</p>
<p>License</p>
<p>MySQL on AIR project is available under MIT license, it is free software, you can download, use and modify it free of charge. But please bear in mind that there is no warranty at all and at this stage it is not ready for production environments.</p>
<p>Where is it</p>
<p>If you want give it a try you can check it out from github: <a href="git://github.com/radekg/mysqlonair.git">git://github.com/radekg/mysqlonair.git</a>. You will then need Flex SDK or Flex Builder to build it.</p>
]]></content:encoded>
			<wfw:commentRss>http://gruchalski.com/2009/04/12/what-is-mysql-on-air/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

