jump to navigation

The joys of video editing (WPF Intro) February 29, 2008

Posted by gcorbin in C#.
Tags: ,
3 comments

One of my favorite past times that I enjoy the most is video editing. It’s been a long time hobby of mine. There are many different software packages out there that have tons of functionality that can make even an amateur appear like a pro. Recently, I’ve discovered windows media encoder. It’s a nice package that Microsoft gives away for free. For free, it does a decent job of editing, although many of the paid for packages are by far much better. One task that I found it can do that the other packages don’t is that is can do real-time screen video and audio captures. I’ve never played around with this stuff too much before, so I figured I’d research it a bit. I found that there is again other packages out there that do real-time screen capture, but the free ones had poor quality and generated large files. The paid for packages have great quality and decent file sizes, but they are also quite costly.

Any way, I figured I’d give the Microsoft media encoder a try. I’ve always wanted to try to create an online tutorial for some of the new and cool technologies out there, so I spent a bit of time creating a “Beginning WPF” tutorial. It’s only about 8 minutes long, but I think it gives a nice simple introduction to WPF and shows some of its power. So, if you’re up to learning a bit about WPF you can start the video by clicking the link below.

Beginning WPF” – by Greg Corbin (best viewed at 1024×768)

Enjoy. J

The latest technology January 30, 2008

Posted by gcorbin in Commentary.
Tags: , ,
add a comment

Technology changes so often that sometimes it can be overwhelming to try and keep up. This is most noticeable when dealing with software. Since software is made from nothing but thoughts, it is a technology that can have a lot of new concepts and techniques within a very short time frame. This is most obvious for people that work within the Microsoft technologies. Microsoft has been releasing new software platforms, frameworks, and APIs at a crazy rate over the last 10 years. Within that time, we’ve seen complete paradigm shifts from desktop client/server apps to distributed smart clients that live in the web. The technology to do this has also change drastically. We saw everything from the introduction of Xml to 5 released versions of the .NET platform. This leaves many software engineers struggling to keep up with the latest craze from Redmond. I find the best solution for this problem is to stay informed at a high level. If a new technology turns out to become a big hit, then it’s worth the time to really understand it in depth. The best way to stay informed it through technical web sites and magazines. The list of content that I regularly read is listed below:

                       Web Sites

                        http://www.asp.net

                        http://msdn.microsoft.com/asp.net/

                        http://msdn.microsoft.com/

                        http://www.codeproject.com/

                        http://sourceforge.net/

                        http://slashdot.org/

                        http://blogs.msdn.com/ie/default.aspx

                        http://www.dotnetrocks.com/

                        http://www.dnrTV.com/

                       

                        Magazine subscription

                        ASP.NET Pro             

                        Visual Studio.Net

                        MSDN Magazine

                        User Groups

                        http://beantowndotnet.org/

As you can probably tell from this list, I’m mostly interested in web development. The web sites I try to read at least 3 times a week and the magazine subscriptions are once a month. The user group is a meeting that occurs once a month. It’s a great place to interact with other .NET developers. This is something new to me, but highly recommended. Of all the sites listed above, my favorite is dotnetrocks. This site release a pod cast on every Tuesday and Thursday that discusses so .NET technology. Each pod cast is 60 minutes in length. I like to download them and listen to them whenever I’m offline. They are a great way to keep informed with the constant changes in .NET.

Anyway, the point I’m trying to make here is that you should have some strategy for staying up to date with the latest stuff. Without one, you’ll go crazy with the constant flood of new things.

 

Great Inventions December 28, 2007

Posted by gcorbin in Commentary.
Tags: , ,
add a comment

            Great inventions in history are very rare. Over the past century, there have been many inventions, but how many can we really say are great? I like to define an invention as great based on the overall impact that it has on the world. If an invention improves the lives of the majority of the people of the world, then I’d say it’s great. With this definition, I’d say that there are only about a dozen inventions within the last century that meets this requirement.  Most would agree that the automobile, airplane, and light bulb would meet these requirements. All three of these items drastically changed the world. The automobile and airplane made the world a smaller place and the light bulb brought an end to the stranglehold that the night has had on us since the dawn of time. Now how about the computer? Could we say that it meets the requirements of a great invention? I’d say yes. While the automobile and airplane made the world a smaller place, the computer has brought us all a lot closer. Everything from communications to financial transactions can be done between two people on the opposite sides of the world in an instant. Like the automobile, airplane, and light bulb the computer exists in every facet of our lives. We have them integrated in everything from coffee makers to internal deliberation devices that help extend some peoples lives. If we were to ask who invented these great things? Most people would easily identify the automobile, airplane and light bulb to Henry Ford, the Wright brothers, and Thomas Edison respectively. (They’d be wrong, but that’s another topic). But how about the computer? Who invent that? Some people would guess IBM, which it’s not. Most people would not be able to put an individual name to this invention. So who was it? The answer to this question is the source of intense controversy. In the early 1940’s, there was a lot of work happening to create the first digital computer. Many Scientists and engineers were working on this goal from all points of the globe. Many of them had similar ideas and concepts, but who was the first? Based on my reading, the first all digital computing machine was built by two men named, John Mauchly and J. Presper Eckert. It was called the ENIAC, which stood for, Electronic Numerical Integrator And Computer. The history of these two men and there great invention is amazing. It’s the story of enormous trials and sacrifices in order to give birth to the computer age. Unfortunately, for the two of them, the immense sacrifices required of them ultimately lead to the ruin, but not before their new invention had taken hold.

        I’d highly recommend that anyone working in the computer industry take the time to learn its history. When learning about the difficult tasks that the founding fathers of the computer age had to endure and solve, it tends to make some of the issues we face today seem trivial. Like all other fields of science, its much easier to see where the future of the field is going, if you know where its been.

Truth, Lies, and History… November 27, 2007

Posted by gcorbin in Commentary.
Tags: ,
1 comment so far

      Over the past few months, I’ve digressed from my studies of computing and spent some time focusing on history. Specifically, I spent some time reading about the truth and myths in American history. The book I read help to confirm some of the truths that I’ve known about American history, but more important it helped to shed some light on many of the horrors that are well hidden with outright blatant lies. The reasons for hiding many of the horrors of American history aren’t so obvious. I’ve found thou, if you do enough digging and think through the facts of some of these hidden truths, you’ll always find some sort of motive for hiding it. This got me to thinking about how modern computing will be recorded throughout history. How will the history books of two hundred years from now present where the Internet came from? Will it present its true history starting back with the days of ARPANET and the DoD? Or will it be presented as the creation of a former presidential hopeful Al Gore? I think it will depend on the impact that it has on world over the next two hundred years. If it’s positive, then I’m sure there will be plenty of people lying claim to be the original inventor. The question still remains thou, who will it be? Based on looking back into American history, I’m going to hedge my bets with the people in power. They have always been the ones to write history. So, if you ever get a chance to travel to this future, don’t be surprised if your told about the great inventor Al Gore and his marvelous invention called the Internet.

MMC 3.0 – Build Snap-ins with C# and.Net September 23, 2007

Posted by gcorbin in C#.
Tags: , , ,
2 comments

Microsoft Management Console no longer belongs in the realm of C++ developers only. Microsoft has released a new version of the popular MMC framework. This version fully supports managed and unmanaged code. The new MMC 3.0 SDK finally gives .NET developers the ability to create snap-ins. In prior versions of MMC, we were able to use some of the .NET framework, but all that code needed to be embedded into a C++ framework that provided a sort of communication bridge between MMC and .NET. With that architecture there was plenty of cases where .NET coding was limited in what could be done. The way it worked was the C++ snap-in hosted the .NET program in an ActiveX container. This is would cause all the .NET code to be in a sort of island that could not easily communicate with the outside MMC framework. All that is now behind us. Now that we have an MMC framework that is fully .NET compliant, we can ditch all the old C++ hacks in favor for the simplicity and power of C#.

To get started with writing snap-ins using C#, you will need 2 items. First you will need the MMC 3.0 console. Next you will need the .NET 3.0 framework. If you are working on windows Vista, you will already have these. The operating systems supported by this are Windows XP, Windows 2003, and Windows Vista. If you want your snap-in to work on anything older than that, then you’re out of luck. Once you get these pieces installed, I would recommend visiting the MSDN. There are several good samples that show how to write snap-ins using C#. There are samples that are as simple as a “Hello World” and there are some that are as complex as some of the Microsoft snap-ins.

Regardless to how you choose to use this, it is a great new technology that I would recommend you add to you portfolio. One last side note that I discovered is that this framework is even flexible enough to allow us to scrap winforms and use all the cool animation that WPF gives us. This is a great framework for creating any desktop administrative tool.

WPF – The downfall of the tyrannical form layout August 3, 2007

Posted by gcorbin in Uncategorized.
4 comments

Microsoft has done it again. I guess I shouldn’t be surprised any more. Dot Net 3.0 has been released and with it another new, cool, set of technologies. You guessed it; I’m referring to Windows Presentation Foundations or WPF for short. I always get so excited when something new and cool comes along. I enjoy digging my teeth into a new technology, especially if its one that have practical uses in the office environment. WPF gives us lots of practical uses in the real world. The fact that we can now define our form layouts the same way, regardless if it’s a web form or win form is an enormous benefit. The new language for defining this is XAML (eXtensible Application Markup Language). It has freed from the constraints of how a form must be laid out. No longer do we need to conform to the standard table, grid, or battleship gray rectangle button. WPF exposes the full flexibility of the DirectX graph engine for manipulating how controls and forms are displayed. The APIs for using this power is very simple. In many cases, twisting the layout of a control to bend to our will is simply a matter of using the right XAML attributes. With this power we now can wield a wonderfully new and exciting type of application. We also have to be cautious of this, for now we also have the power to create frightful abominations that would terrify the most open-minded developers. Lets now take a look at some code that shows how to uses this. The sample below shows a simple form that has a few standard buttons and textboxes. Remember for this sample to work, you will need to have .Net 3.0 framework installed.

 

blog6a1.jpg 

 

[CODE]

 

<Window x:Class=”XamlWindowsAppProject.Window1″
xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation
xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml
Title=”XamlWindowsAppProject” Height=”213″ Width=”262″>
<Grid>
       <TextBox Name=”test1″ Margin=”16,15.5,93,0″ Height=”23″ 

VerticalAlignment=”Top” Text=”Sample Textbox”></TextBox>
       <Button Content=”Click Here” Margin=”44,49,0,80″  

HorizontalAlignment=”Left” Width=”78″>
       </Button>
      <ListBox Margin=”127,59,5,57″ Name=”listBox1″>
        <ListBoxItem Name=”listBoxItem1″>ListBoxItem 1</ListBoxItem>
        <ListBoxItem Name=”listBoxItem2″>ListBoxItem 2</ListBoxItem>
        <ListBoxItem Name=”listBoxItem3″>ListBoxItem 3</ListBoxItem>
        <ListBoxItem Name=”listBoxItem4″>ListBoxItem 4</ListBoxItem>
        <ListBoxItem Name=”listBoxItem5″>ListBoxItem 5</ListBoxItem>
        <ListBoxItem Name=”listBoxItem6″>ListBoxItem 6</ListBoxItem>
      </ListBox>
  </Grid>
</Window> 

 

 

Now lets take that ordinary looking form and lets get freaky with it. In the sample below, you can now see that we’ve twisted the textboxes, change the buttons shape and opaqueness, and gave the form itself an unusual shape.

 

blog6b1.jpg 

 

[CODE]

 

<Window x:Class=”XamlWindowsAppProject.Window1″ xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation
    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml
    Title=”XamlWindowsAppProject” Height=”213″ Width=”262″>
    <Grid>
    <TextBox Name=”test1″ Margin=”16,15.5,93,0″ Height=”23″
             VerticalAlignment=”Top” Text=”Sample Textbox”></TextBox>
      <Button Content=”Click Here” Margin=”44,49,0,80″
              HorizontalAlignment=”Left” Width=”78″>
        <Button.RenderTransform>
          <RotateTransform Angle=”45″ />
        </Button.RenderTransform>
      </Button>
      <ListBox Margin=”127,59,5,57″ Name=”listBox1″>
        <ListBox.RenderTransform>
          <RotateTransform Angle=”15″ />
        </ListBox.RenderTransform>
        <ListBoxItem Name=”listBoxItem1″>ListBoxItem 1</ListBoxItem>
        <ListBoxItem Name=”listBoxItem2″>ListBoxItem 2</ListBoxItem>
        <ListBoxItem Name=”listBoxItem3″>ListBoxItem 3</ListBoxItem>
        <ListBoxItem Name=”listBoxItem4″>ListBoxItem 4</ListBoxItem>
        <ListBoxItem Name=”listBoxItem5″>ListBoxItem 5</ListBoxItem>
        <ListBoxItem Name=”listBoxItem6″>ListBoxItem 6</ListBoxItem>
      </ListBox>
  </Grid>
</Window> 

   

Pretty Cool huh! The sample above is just a small taste of the multitude of ways that the graphical representation of the form can be changed. In this discussion, I only touched on one aspect of the WPF framework. For more details on what WPF can do for you, check out the Microsoft docs on it here.

The end of life’s journey, the beginning of true salvation July 20, 2007

Posted by gcorbin in Uncategorized.
5 comments

            So often in life, it takes a sad and tragic event to unite people. Nothing does this more than the loss of a friend. Recently, a co-worker of mine named Bob Hug has past way. He had a heart attack while riding his bicycle home from work. His manner of death was sad and tragic. However, let make no mistake about it, there is nothing sad and tragic about our friend Bob. I decided to write this tribute to Bob, not to focus on the unhappy moments in his life, but rather the joy and passion that he expressed to us all everyday. I only knew Bob for about 9 months, but working closely with him everyday gained me enough knowledge to feel I truly knew him. Inside the office, Bob was our resident MS SQL Reporting guru. He really had mastered this technology. There were no questions or issues with reporting that Bob could not solve.

He was a quite individual, but had no problems expressing how he felt too the people that knew him on any given day. I think that he enjoyed expressing himself most by the choice of whichever colorful T-shirt that he would wear to work that day. Most days it would be a typical all black shirts with some expression written across it that I just didn’t get. The expressions would often change based on his mood. One particular shirt I remember him wearing had the Intel logo on it with the wording “Geek Inside” instead of “Intel Inside”. I think he was trying to say that he was a geek and proud of it. As of lately, his t-shirts were all different variations on types of adverting for the Tour d’France. He loved cycling. Over the last few weeks he was so excite about the current running of the Tour d’France. He couldn’t wait to update us all on the current status of the race; even thou I had no idea what he was taking about I would try to listen.

            As far as I knew of his home life, he was really into working around the house. He loved to work on his cactus garden. I remember him telling me how excited he was when he found some special cactus that grew even in the cold winter. I wish I could remember some more about various conversations that we had, but unfortunately these details have since faded away.

            During the announcement of Bob’s death at our company, our department head Gene, had brought to light an old American Indian believe. “To speak the name of the dead, is to bring them back to life.” Perhaps with this tribute to Bob flowing throughout the Internet, he’ll be able to live on better in our memories. Although his journey though life has ended, he has most definately moved on to a better place and found true salvation.

 

God bless you Bob. You will be missed

Summer Reading List July 9, 2007

Posted by gcorbin in Commentary.
4 comments

I’ve been spending a bit of time lately catching up on a lot of reading. I’ve been diving into a pile of books and articles that supposedly all software engineers read. Some of the topics are common sense and others are eye opening. The list of topics range from high level overviews on software engineering to very specific technical manuals. The techie books have always been great for learning new technology. I find that the most enjoyable part of the tech books is when you can take what you’ve learned there and apply it into some real code. It doesn’t matter if its sample code that I’m working on or an actual production level product, either way learning a new technology is fun.

 

The books and articles that focus on software engineering in general are great to read also. I really enjoy the high level picture of how things should work. I find it very refreshing to know that so many software engineers have similar issues when it comes to attempting to create that perfect masterpiece. However, the most frustrating aspect of these books is when you try to put to practice what you’ve read. It turns out to be much easier to try out a new technology than it is to use a new programming technique or methodology.  All these books offer ideas on how to create ideal software and what’s the mark of a good software engineer, but very few of them provide any information of how to truly measure it. Without know that, how can you possibly determine if any change is needed. In any case, I find all these books to be real page-turners and I can’t wait to get a few minutes to sit down and start that next chapter. I would recommend all these items to every inspiring software engineer. If you’re interesting in my current book list, you can find it below. Give a few of these a try and see how you feel about them.

 

Book List (in no particular order)

1.      Dreaming in Code (Scott Rosenberg)

2.      The Pragmatic Programmer (Andrew Hunt and David Thomas)

3.      The Mythical Man-Month (Fred Brooks)

4.      The Cathedral and the Bazaar (Eric Raymond)

5.      No Silver Bullet – essence and accidents of software engineering (Fred Brooks)

6.      Software Aspects of Strategic Defense Systems (David Parnas)

7.   Software Design Manifesto (Mitch Kapor)

8.      Essential Windows Presentation Foundation (Chris Anderson)

9.      Joel on Software (Joel Spolsky)

10.   Software Estimation: Demystifying the Black Art (Steve McConnell)

11.  Code Complete, Second Edition (Steve McConnell)

12.  Microserfs (Douglas Coupland)

13.  Peopleware (Tom DeMarco and Timothy Lister)

14.  The singularity is near : when humans transcend biology (Ray Kurzweil)

15.  Zen and the art of motorcycle maintenance (Robert Pirsig)

“Dreaming in Code”: book review May 19, 2007

Posted by gcorbin in Review.
add a comment

Many times, in my career as a programmer, I’ve found myself lying awake at night thinking about the code. My thoughts would slowly fade away as I began to fall asleep. That’s when it would happen. That’s when I realized that I’ve been thinking so much about the code that I started to dream about it. I would be “Dreaming in Code”. After reading this book, I’m sure that I’m not the only programmer that dreams in code. The author of this book, Scott Rosenberg, begins this documentary by discussing his experiences as a programmer. He describes the excitement and frustrations of one of his first programs, a game called Sumer, which he wrote some extensions for. He raises the same questions that all programmers have been asking since the dawn of time. Why is creating good software so hard? He then moves on from chapter 0, to begin following a company named OSAF. He chronicles the process that they go through as they attempt to create a new product called Chandler. This product is to be the next ‘killer app”. A P.I.M (Personal Information Manager) that does not limit the type of data or how that data is organized. The main goal of Chandler is to remove the limitations of what, where and how our personal data is managed. “To tear down the silos”, as the author puts it. This story revolves around a software pioneer named Mitch Kapor. His big contribution to software engineering came in the form of the company he founded called Lotus and a great application he created called Lotus 123. His passion for software engineering shows in chapter 2 as we follow his early days at Lotus all the way through to his departure in the late 80’s due to his uneasy feelings about creating such a large corporate environment. Even with the great fortune and success that he had at Lotus, he could not find happiness within his role there without the unrestricted freedom he had when the company was a startup.

The author then takes us back in time for a bit to explore some of the greatest failure in software history. We explore the failures of the FBI and FAA software projects and move on to look at some of the largest software crashes of all time.

In chapters 3 through 5, we begin exploring the design decisions that the managers, designers and engineers at OSAF make to start work on Chandler. The author follows their story as they decide which language and tools to use. We see the OSAF team force the first 0.1 release of Chandler due to a purely time-based schedule. We move on from here to reflect on several past interview with software greats such as Linus Torvalds, creator of Linux, and James Gosling, creator of Java. We explore their opinions on the difficulties in software engineering and personal feelings on the open source movement. By the end of chapter 5, we find that the OSAF crew is flip flopping on many of the design choices they started out with and ultimately, it will cause them to fall further and further behind schedule.

            In chapters 6 we get an inside look at the trials and rewards that programmers face as they attempt to implement their projects design and craft it into work of art. One of the common follies that we explore is the decision to “Build” or “Buy”. Since most programmers see the building of a new application as a form of art, it’s difficult for them to accept foreign piece of code and integrate it into their own. Most often, if given the choice and time, many programmers will give a whole pile of excuses as to why it would be better to “Build” rather than “Buy”. Not to say that “Buying” doesn’t have its own problems, but in most cases this can be a big time saver.

In chapter 7, we find our OSAF team choosing to “Build” a framework for generating their User Interface. One can only wonder how much time might have been saved if they had only utilized what already existed.

In chapter 8, the OSAF team had decided it was time for reorganization. Kapor removes himself as CEO / Project manager and they hire some new people. The surprise here is that when these new people come into OSAF, Kapor allows them to radically change the design of Chandler, which is now 2 years underway. I suppose this shouldn’t be a shock, as new people always bring new ideas, but to find that the project’s CEO / venture capitalist would allow this was quite a surprise. The chapter comes to a close with the OSAF crew on a new feature/time driven schedule, already deeply behind it, and learning that Google has launched a new product called GMail, which includes many features that Chandler is driving to deliver.

Chapters 9 and 10 the author diverges away from following OSAF and begins to review project management and it evolution within software history. We spend some time discussing the foundation of the Software Engineer Institute and how the CMM standards evolved into what they are today.

In the final chapter, we revisit the OSAF team to find out what type of progress they had made, have they caught back up with their schedule? Or have they slipped away into the archives of software irrelevancy? I don’t want to ruin the ending for anyone, so you’ll just have to read the book to find out.

Overall, I really enjoyed this book. It comforts me to know that I’m not the only programmer that experiences all the joys and pains of my profession. There are many great references to classic books and essays on software engineering that all programmers should be required to read. I felt that I was able to enjoy the journey of the OSAF team as they struggled to wield there skills to sculpt a beautifully thought out and designed work of art. I also felt that there were many lessons that I learnt and new ideas that I will be able take with me to apply in my own endeavors.

If your interested in thi book, you can find more info about here.

My new skills as a columnist April 18, 2007

Posted by gcorbin in Commentary.
1 comment so far

During the past few years, I’ve found myself becoming more interested in writing good documentation for the code I write. I’ve learned that it’s not enough to create a great piece of software without providing easy to understand documentation that explains how to use it. I’ve also discovered the immense value in providing excellent comments within the code itself. As I’ve pushed myself to write better documentation and comments for my code, I’ve found that my skills for documenting and discussing how a piece of software functions have become much better. I’ve decided to put my new skills to good use by sharing my thoughts on how to create great software. I began by writing responses to newsgroups for issues that needed some type of resolution. My responses would sometimes be in vain, but more often than not they would be helpful and appreciated. I moved on to starting this blog and although I’ve only been writing here for the last four months, I’ve found that it has really help hone my skills in this craft. My most recent move was to start working as a freelance columnist. I started writing for ASP.NETPro as a guest columnist. My first article was published in the January 2007 edition. It can also be found here. The topic of that article was “Express Yourself” and it discusses how to use data column expressions. I’m now working on my next article. The topic has not yet been determined, but the column is complete and it discusses how to use expression builders and build your own custom expression builders. My initial rough draft and source code for this article can be found here. With a bit of luck, I’ll have it refined enough in time to make the July press date. Anyway, if nothing else I hope you find the source code that accompanies these articles helpful.