SyntaxHighlighter
Sunday, October 12, 2008
Update (Brush Maestro Spotlight)
I'm really proud of this WPF application, I've delivered exactly what was spec'd out to me.
If it were n't for WPF I would have never been able to pull it off. Below are some screenshots of the application in use.
(Product) in List Mode
(Product) in Thumbnail Mode
(Product) List Mode re-ordering a single brush in the list
(Product) Thumbnail Mode re-ordering a single brush in the list
(Product) Resizing the brushes using slider at the top of screen & selecting a single brush for edit.
This project was a lot of fun... and I really learned a lot more about WPF in the process. ;-)
On a side note, I'm still pressing forward with the other two side projects focused on silverlight and the day job which I get to use JQuery ,JQueryUI, and my personal favorite right now....
Desklighter silverlight in a desktop application. To give you a better comparison it's the equivalent of exporting flash content to an executable. ;-)
Until next time...
-Develop with Passion
Jean Paul S. Boodhoo
Sunday, September 14, 2008
Yet Another Deep .NET Web Dev Reference
Project 1) WPF Application that integrates with Creative Suite v 2&3 specifically... Photoshop.
It's essentially a Brush Manager application that allows designers to manage(create/edit) Photoshop Brushset files... otherwise known as .ABR files. This project has been smooth sailing until the requirement came in to support earlier versions of Photoshop... which means I have to reverse engineer the binary file that makes up a .ABR File. Calling all devs that can reverse engineer a binary file!!! I need to know the structure of this file so I can re-create it with my own set of brushes. I've been in a hex editor for the last 3 weeks and all I can do is load it in photoshop with out getting errors. ;-)
Project 2) Silverlight 2 application that is a Wizard style application which will be used by many people. It will be service oriented... I'm still debating whether or not it will be WCF or pure REST with HTTP(S) calls, this will depend entirely on the load test results. Anyhow I'm using Windows WorkFlow to drive it which will be nice... and I have a lot good code to read from a codeplex project I found which goes by the name of Drop Things. This is an AJAX web portal which is built on ASP.NET 3.5 and it also uses WorkFlow. The creator Omar Zabir is one of the brightest devs I've come across (that doesn't work for MS) in a long time. He's got a ton of articles and code samples on how to do a lot of advanced stuff in ASP.NET... lots of great topics such as CDN(Content Delivery Networks), Performance Tips, AJAX Performance Tips, Proper Browser Caching, etc. The code that he posted on codeplex above is very good code as well... I'll definitely be using some of his helper classes for windows workflow in my project. ;-)
Project 3) Day Job- I'm in the second sprint which end on the 30th of this month. So far it's been a lot of refactoring, and performance improvements to an existing asp.net 2.o web site. I'm adding a light weight inversion of control container and using MVP on a few pages to speed up performance as well as bring clarity to the logic, also I'm adding quite a bit of LINQ to SQL, and LINQ to XML. The team is in complete aww of the techniques that I'm bringing in. After the sprint we move to silverlight 2 and that's when the fun starts. ;-)
Very busy right now, but fun busy. This week I start my first day working from home... which will be nice.
-Develop with Passion
Jean Paul S. Boodhoo
Wednesday, August 27, 2008
Say so long to HTML,CSS, and Javascript
So lately, I've been really busy with the new gig, the two side projects, and of course the family.
The new gig is getting better, I've been writing lots of LINQ with respect to xml, and sql. Also, they want to leverage my xaml skills with respect to silverlight. Luckily, I've been working with WPF for the last 3 years and silverlight for the last 6 months. Their will be quite a few new modules that will be added to the suite of online products, but with the help of a new found framework that's built on top of ASP.NET... it should make development a little smoother and quicker. Recently I was searching around codeplex for a lightweight, secure, modular, dnn like portal which allowed me to plug in my own feature set relatively quickly. I need something like this for one of the side projects as well as the day job. After some searching around I found several really cool frameworks that met the above requirements, but they all required knowledge of HTML,CSS, Javascript, etc. Now don't get me wrong... I like working with these technologies, it's just sometimes the debugging experience can be a nightmare. So I found VisualWebGUI... this product gives you a winform like development experience but in the end it's a ASP.NET web application. Imagine a stateful web experience, no data exposed to the client, and everything runs on the server with an AJAX engine underneath to handle client to server communication. This is way to cool not to look at... the best part about it is it's recent support for silverlight as a view engine. With major players like(NetworkD and SAP)already having their own case studies it's sure to get swallowed up by Microsoft very soon. So get this free open sourced framework while it's not a bazillion dollars and discover for yourself what web application development could be like with out client side scripting. ;-)
Develop with Passion
-Jean Paul S. Boodhoo
Wednesday, August 13, 2008
Wrox Does It Again!!
This one rocks... er... Wrox!
Bill, Scott, and Devin really did a great job pulling together key topics in ASP.NET 3.5.
This book is huge... weighting in at 1,584 pages not counting the online resources and index.
It basically covers everything any developer would want to brush up on or learn completely from scratch. I was only looking to learn about caching for scaling issues( and it was a great chapter 23), but I learned about so much more. I recently got a new job as a Lead ASP.NET developer and the site I have to fix is a poorly written asp.net 2.0 site with lots of table adapter code, custom role management based on a nasty switch statement, custom logging based on a file and poor threading synchronization, etc. It's bad... not to mention all the ASMX stuff. :-(
Anyway, every time I flipped to a new section of the book it had a solution to the problem I was facing with the nasty 2.0 site. For instance, I can use LINQ to SQL to get rid of the table adapter code, role based management is obvious and should have been leveraged from the beginning, custom logging is cool because now I can leverage System.Web.Management.EventLogWebEventProvider which handles writing to the eventlog and database at the same time... for free! Not to mention System.Web.Management.SimpleMailWebEventProvider which handles emailing me about any warnings or errors. A few more chapters in the book that I really like are IIS7, Membership and Role Management (might as well be under the hood), and of course... LINQ.
LINQ to Objects, LINQ to XML, and LINQ to SQL. The book even ends with a chapter on Silverlight. Awesome stuff!
Theirs so much in this book that I couldn't possibly due it justice by listing it all here in this blog post. All I can say is go pick it up if you're a Dev... or at least thumb through it the next time your in the book store. :-)
Develop With Passion
-Jean Paul S. Boodhoo
Wednesday, August 6, 2008
How I Got Started In Software Development
Have I even started really programming yet? I guess I got my first taste when I was around fifteen, The year of Windows 95. This was the birth of Windows Explorer... the predecessor to FileManager. My programming experience back then was fairly basic. I mostly spent a lot of time creating 3D virtual environments in 3DSR4 before it was 3D studio max, and Lightwave 3d v5. I also wrote simple scripts in the 3D environment simply because it was another way of creating models on a more precise scale.
How Did You Get Started In Programming?
My good friend Tom Zymescal (Tom... Tom... Tommmm) He taught me everything from the dark side of chatting in ICQ/Message Boards/IRC, downloading/uploading online, and of course my first OOP language.VB5. Even then, the programs I wrote were not “real world” programs, but simple applications that automated some tasks in windows. In high school I took a C++ class my senior year, but didn't really learn anything significant. After that I went to college for a single semester majoring in computer science and deciding that it was not for me. So I picked up my life and headed some where different where no one knew me or could judge me. I headed to a place were the Windows logo that I grew up with (since 1988 when I got my first computer) was born... Microsoft land (Seattle,WA) It wasn't till after arriving that I realized the playing field was much rougher and more competitive than Houston, TX. So I went to school at night while raising a family to learn C# in The .NET Framework. It was then that I got a rude awaking about how much I needed to learn to be any good... so after school it was time to get a J-O-B! It was then that I learned how to really program. And it was a rough start, writing the most knotty coupled code that was very low in cohesion. It wasn't till I discovered free seminars, meeting expert Microsoft Developers, blogging, and continuing to learn that I realized that I was finally becoming a good developer. ;-)
What Was Your First Language?
My first programming language was LScript for LightWave3D . My first professional language was C# My first Object Oriented language was VB5.
What Was The First Real Program You Wrote?
Man, I can barely remember that far back. It was when I was working in a call center while going to school at night. I built a C# windows application to help Customer Service Representatives manage their callers better! This got me noticed in the company's software developer department. They still use the code that I wrote to this day. ;)
What Languages Have You Used Since You Started Programming?
What is this? Some sort of interview? The programming languages I’ve used professionally are: C#, C++/CLI,JAVA,Javascript,VB.NET, IronRuby, IronPython.
What Was Your First Programming Gig?
internetadvancement.com... a small Internet hosting company were I spent many hours building web sites and managing hosting accounts. They're actually still around. ;)
If You Knew Then What You Know Now, Would You Have Started Programming?
Well I definitely would have finished my computer science major, but yes, absolutely! I love to write code and write about code.
If There is One Thing You Learned Along the Way That You Would Tell New Developers, What Would It Be?
Learn to write and communicate well. Software development is mainly about ideas and being able to communicate your ideas well. It will definitely get you places. Also, compromise your ego. When you have an open mind and can come to grips with the fact that you don't know everything you actually open yourself up to learn more.
What's the Most Fun You've Ever Had ... Programming?
My work on the Media Center product during my days at Microsoft. And building prototypes for start up companies looking to get their ideas out on the market. ;)
Thursday, July 3, 2008
Update
Well... tomorrow is the 4th of July and as I type this my new neighbors are popping fireworks because they spent way to much money on them and can't possibly pop them all in one night. ;)
Anyway, so much is happening it's difficult to find time to blog. The day job has me busy with developing a program to generate an excel report which sucks because I don't have VSTO. The target machines that will ultimately run the app are completely locked down and can't be modified, so I have to deploy an executable and dlls that just work. Which means dropping down to Type Library Import... yuck. A side from that I finished my POC (proof of concept) for a future client and they loved it. I built a WPF application that parses Photoshop brush sets and displays all the brushes with in the brush set in a nice Wrap Panel which can be resized, dragged around, etc. Prior to this week long project I had no previous experience with programming against Photoshop's SDK so it was excititng and fun to build something that works with Photoshop 5 - CS3. Also, I bought a Chumby, and Head First Design Patterns. The chumby is going to replace my alarm clock that I've had since high school... so no more loud beeping sound when I wake up. From now on it's the local weather display for the day while the jazz music plays in the background. ;) As for the design patterns book... I literally have not been able to put it down. It's so amusing yet insightful... I love learning about patterns this way, it's actually starting to stick. So far I've only gotten through the first couple of chapters with covering Strategy and Observer, but man... now I think I know them well enough to be able to recognize when to use them. I've already marked a few places in a couple of projects that need to be refactored. One other thing that I'm excited about is hearing about what people where talking about at TechEd 2008 this year. I didn't attend, but what I did hear is that LINQ to Objects is supported in .NET 2.0 SP1 via LinqBridge.dll. Looks like I have more refactoring to do on Monday when I get back to work. ;)
Develop With Passion
-Jean Paul S. BoodHoo
Thursday, June 5, 2008
Revisiting The Castle Project (Specifically... Active Record)
A few years ago at my last job an x/co-worker (now friend of mine) introduced me to the castle project. I remember taking a look at it and feeling really stupid because I didn't understand it or it's pieces. Well... fast forward a few years and several development projects later. I came across it again on InfoQ. I'm happy to report that it was better understood this time around... I even found myself guessing(correctly) how a feature would be implemented as the presenter was explaining it. :-)
I really like Active Record because it's built on top of NHibernate a port of the java's Hibernate Core. NHibernate even has it's own query syntax known as HQL which is expressed like the sample below.
Since Active Record is built on top of NHibernate it does a really good job of abstracting away the complexity of NHibernate... leaving you with less to worry about and more power to leverage.
Needless to say I'll be spending a few hours this weekend playing around with Active Record now that I actually understand it. :-)
Develop with Passion
-Jean Paul S. Boodhoo
Tuesday, June 3, 2008
Solving Application/System Wide Issues With Sysinternal Tools
Tuesday, May 27, 2008
Keeping code DRY by using your .NET Umbrella
Some days the day job is like getting caught in a Seattle rain/thunderstorm without an umbrella. We've all found ourselves writting plumbing code just to get data flowing in the right direction... just so that we can get the product working so that we can move on to the next product/project. Recently I came across the open source project above (which is now on codeplex) and have discovered some really cool additional API's that can be used with the .NET Framework. :-) Some of their API's actually help prevent developers like myself from having to write plumbing code. Everyone always says to keep your code DRY (Don't Repeat Yourself). By using free open source API's like this one... we can give new meaning to the term DRY by leveraging the Umbrella project. :-)
-Develop With Passion
Jean Paul S. Boodhoo
Monday, May 26, 2008
The House That .NET Built (Complete!!)
This completes the series of posts on the new house.
It has been a unique and rewarding experience building my first home... I'd definitely recommend this approach to anyone who's interested in building a home.
Now that it's complete, the real fun can start. Well... sort of.... the lawn is my first attempt a mowing with a push mower, all apart of going green where ever I can. :-)
And in case your wondering... yes... that is my new 2008 Honda Pilot. As I look back on my experiences I realize that I've come along way from that small town outside of Houston,TX.
My passion and devotion to software and .NET has really paid off... which is why I'll continue to push myself to develop faster, higher level, compact code. :-)
-Develop with Passion
Jean Paul S. Boodhoo
Sunday, April 27, 2008
Tuesday, April 22, 2008
ALT.NET Wrap-up
More sessions... more learning.... more experiences.... etc. It was one of the best developer experiences I've had thus far in my career. I managed to sneak a couple of pictures (below)from some of the guys Flickr sites. :-)
Here is day one... kick off meeting.... Sitting right in front of me are a few guys on the Mono team, and just off to the left of them is Brad Abrams(Brown Jacket)
Here I am (lower left corner)listening in on Phil Haack's (Upper right corner) discussion on ASP.NET MVC.
Since ALT.NET is one of those conferences where the agenda isn't decided until the first day...
I thought it'd be cool to show my signature on one of the sessions (Distributed Domain Driven Design) that was finally decided on by the entire attendee list. Mine is the big C.F. :-)
Always good to be a fly on the wall in these kinds of conferences... can't wait until the next one.
Develop with Passion
-Jean Paul S. Boodhoo
Saturday, April 19, 2008
ALT.NET End of Day 2
Still, it's the end of day one... so I get home and brush up on the topics that I will learn about today. End of day two (as the title of this post reads) was an amazing experience to say the least. 10:30am first session of the day I kick off with Iron Ruby (talk given by John Lam), Then it was on to the next session... a new tool (Spec#)I haven't heard of before today. So listening to the guys who wrote it and having a chance to interact with them was very cool... I left the talk feeling the same way as everyone else who attended it. We all have high hopes that spec# will find it's way into C# 4.0. After that we broke for lunch and then back to the sessions. When I returned to the sessions I decided to go hang out and listen to a discussion about ASP.NET MVC with Scott Gu, Phil Haack, and Brad Abrams to name a few. It was a good talk, and I certainly gained more insight than I previously had about the framework itself.... however, I wanted to change topics... so I went to a different hall and discovered a topic on DSL's or Domain Specific Languages. This was one of the better talks of the day since it was facilitated by Martin Fowler. Quite a few issues were brought up and addressed on the subject which made for an interesting discussion... with guys like Oren Eini (creator of Rhino Mocks), Roy Osherove(who did not bring his guitar), and Scott Hanselman. After that I caught Scott Bellware's talk on BDD(Behavior Driven Development) which was very insightful. Finally I finished up the day chatting with one of the Mono Framework team members about the pain points I've experienced with getting .NET applications to run on the MAC, and Charlie Pool creator of the NUnit testing framework. Whew! Quite a day... can't wait for the final wrap up day tomorrow.
Develop with Passion
-Jean Paul S. Boodhoo
Tuesday, April 8, 2008
Civil Engineering or Virtual Bridge Builder
That's right dear reader... Another challenge that I will once again rise to. There is a .net application that makes network calls to a database that resides on a Linux box. It's an old
application since it's written in .NET 1.1 and is problematic due to strange code and network issues. The Linux box is from what I hear... an 8 proc box. That's right... 8 processors. I'm thinking right away that I can use .NET 3.5 parallel libraries to make use of those 8 processors.
I just need to get it working first. :-)
So... there are a couple of ways to accomplish this, and they are as follows:
1) Install an Add-In to VS2005/VS2008 which will allow the C# compiler to adjust for Mono.
2) Use the IDE above and leverage the mono compiler that way.
Either way I look at it... I have to compile down to Mono so that the Mono Runtime can execute the application. That's basically how it works... so as a comparison... Windows loads mscorlib along with the .NET framework and it's corresponding version during application launch.
However, in a Linux/Unix environment... Mono loads and launches the .NET application.
So first things first, I have to install the Mono runtime just like I'd have to install .NET on windows. My first attempt is on a Unix platform since I have a powerful Mac machine at my disposal. :-) The runtime installs smoothly... so far so good. Now the development environment above... install worked great, but when I went to run it I got a mono runtime error. It gave me a mozilla error... something about MOZILLA_FIVE_HOME path not set to mozilla install directory. After searching around I found two things... one...that mozilla is a direct dependency on the IDE above and must be installed in order to do development. two... the environment variable must be set which I could not figure it out in the 20min of playing around with it while my five year old daughter kept harassing me to get off and let her play games. Ahhhhhh!!! Well, needless to say it has begun and I will ultimately rise to the challenge... even if that means falling back to VS to do development. :-)
-Develop with Passion
Jean Paul S. Boodhoo
Friday, March 28, 2008
I AM ALT.NET
(AltNetPedia)
A week or so ago I listened to Scott's weekly podcast as I do every week, and the topic was ALT.NET. After listening to it... I went over to altnetpedia(the link above) to learn more.
It is so refreshing to learn that a lot of what I'm doing and what I'm striving to do actually has a name and meaning. As I gear up for the conference next month I'll be going over the major principles and practices that I try to incorporate in my daily development efforts. It'll just be a review, but again I want to be sure I'm covering as much as I can.
Practices and Principles like the following: (These will be referenced from Agile Principles Patterns and Practices in C#)
1) Single Responsibility (SRP)
2) Open-Closed (OCP)
3) Liskov Substitution (LSP)
4) Interface Segregation (ISP)
5) Strategy
6) Facade and Mediator
7) Singleton and Monostate
In addition to the list above... I'll also be digging around in Spring.NET a little more since I got the hang of the IoC container. That along with daily development efforts should be enough to find myself ready for the event.
So what does all this mean? What does it mean to be ALT.NET? On a daily basis I find myself being a little frustrated at the fact that I'm apart of a large organization and yet... I'm the only one in my group who is employing fresh, innovative design ideas. As a contractor I came in and built a bridge between existing legacy C++ and Modern .NET with the help of CLI. I had no previous C++ skills.... the only thing I had at the time was passion, confidence, and the will to make the .NET platform play a key role in enhancing the legacy code base. This got me noticed, and so I became a part of the team full time. Even though I'm apart of the team, the fact still remains... I'm the only one implementing TDD, BDD, MVP,IoC, SRP,ISP, etc. I mean I've even tried to employ XP style approaches to some of the projects that I'm working on. Nothing formal, just some basic techniques like index cards for user stories, breaking up two weeks worth of work into two iterations. Even though I'm doing all this... it's completely going unnoticed.... mainly because no one knows about this stuff at all. Sigh... what does it all mean?
I'll continue to push myself and the .NET platform to the edge... because that's what's made me the developer that I am today. A lot of great development coming with emphasis on home automation, Micro Framework(embedded devices), integration with Media Center (Vista Ultimate) , Windows Home Server (mControl add-in), etc.
The way things are going I've decided to give it a little more time to see how it goes. They're finally making plans to migrate some legacy C++ code over to C#, and seeing as how I've got experience in Migration, Porting, and Total Re-Writes... I'd say it's right up my alley. :-)
Anyway, I'm gearing up for ALT.NET!! (A little over two weeks to go)
-Develop with Passion
Jean Paul S. Boodhoo
Tuesday, March 25, 2008
The House That .NET Built (Part 5)
Below are a few pictures of the outside completed... minus the landscaping. Below the pictures are a few videos of the inside of the home insulated and dry walled.
All in all... it was a good Easter Sunday. :-)
(Up-stairs) 2nd floor
(Down-stairs) 1st floor
(Garage/Front) Outside
Sunday, March 16, 2008
Becoming a better Developer
Saturday, March 8, 2008
The House That .NET Built (Part 4)
I'm definitely making notes along the way for devices to be strategically placed in certain areas to monitor climate, watts, water, etc. :-)
The Winner Is... Spring.NET!!!!
After playing around with a few different Inversion of Control Containers I've come to the conclusion that the Spring.NET framework is definitely the way to go.
Not only does if give me a mature (IoC), but it has so much more....
Spring.Core – Use this module to configure your application using Dependency Injection.
Spring.Aop – Use this module to perform Aspect-Oriented Programming (AOP). AOP centralizes common functionality that can then be declaratively applied across your application in a targeted manner. An aspect library provides predefined easy to use aspects for transactions, logging, performance monitoring, caching, method retry, and exception handling.
Spring.Data – Use this module to achieve greater efficiency and consistency in writing data access functionality in ADO.NET and to perform declarative transaction management.
Spring.Data.NHibernate – Use this module to integrate NHibernate with Spring’s declarative transaction management functionality allowing easy mixing of ADO.NET and NHibernate operations within the same transaction. NHibernate 1.0 users will benefit from ease of use APIs to perform data access operations.
Spring.Web – Use this module to raise the level of abstraction when writing ASP.NET web applications allowing you to effectively address common pain-points in ASP.NET such as data binding, validation, and ASP.NET page/control/module/provider configuration.
Spring.Web.Extensions – Use this module to easily expose a plain .NET object (PONO), that is one that doesn't have any attributes or special base classes, as a web service, configured via dependency injection, 'decorated' by applying AOP, and then exposed to client side java script.
Spring.Services – Use this module to adapt plain .NET objects so they can be used with a specific distributed communication technology, such as .NET Remoting, Enterprise Services, and ASMX Web Services. These services can be configured via dependency injection and ‘decorated’ by applying AOP.
Spring.Testing.NUnit - Use this module to perform integration testing with NUnit.
With the all the modules above I can take baby steps with integration testing... once complete I can just add a DLL and I'm good to go. I also feel especially good about this framework because it's a direct port of Java's Spring Framework, which has been around for a while and very successful in major industries... including Financing. :-)I'll be sure to post some example uses of the Spring.Core assembly which offers the Dependency Injection stuff. :-)
-Develop With Passion
Jean Paul S. Boodhoo
Wednesday, March 5, 2008
Which (IoC) Should I Use?
Sample of poor mans dependency injection
-----------------------------------------------------
public class Presenter
{
IService m_service;
Presenter()this() //Constructor Chaining
{
//Default Implementation
}
Presenter()
{
m_service = new Service(); //Constructor Injection
}
}
VS. Unity Sample Below
------------------------------------------------
IUnityContainer container = new UnityContainer();
container
.Register<IService, Service>();
IService service = container.Get<IService>();
Unity is a much cleaner approach... unfortunately, not many people would be able to maintain my code if I were to go on vacation with out some major documentation... so I need to do the best I can with making this approach understandable to other developers on the team.
Until Next Time.....
Jean Paul S. Boodhoo