My Blog

My Blog

View All Posts In My Blog »


Jared Anderson – “Live From My Church”

12.22.2009 | 0 Comments

I was blessed to attend the live recording for Jared Anderson’s album on March 15, 2009 at New Life Church.  I was interviewing for my current job at Focus on the Family at the time.  The timing was perfect.  Jared released his album on September 22nd and it is an amazing album!

Jared Anderson “Live From My Church” EPK from Andy Catarisano/beFree Films on Vimeo.

Jared Anderson_ how He loves from Andy Catarisano/beFree Films on Vimeo.


HighEdWeb – General Session with Jeffery Veen

12.13.2008 | 0 Comments

Last month, I wrote a post on my experience at the 2008 High Ed Web Conference. HighEdWeb just released their general sessions through YouTube. Track Sessions are also available via podcast feed. I’ve posted the session on data visualization by Jeffery Veen below:


Test Driven Development

11.27.2008 | 0 Comments

In March of 2008, I had my first presentation I’ve done at a technology conference, NU Technology Day. I had the opportunity to team up with Brett Bieber from University Communications. I was first introduced to the concept of Test Driven Development in November 2007 when Brett presented the concept at a Web Applications Developer’s Meeting on campus. This began to spark some thought in producing better code, code that doesn’t regress, and helps enforce secure code. Since my focus at the College of Business is in e-commerce and application security, this topic became an innovation as a developer. Please note that Test Driven Development does not produce secure code, but can help retain secure code.

For now, I’ve posted the presentation. I hope it will spark some interest as it has done for me. I hope to post notes to the presentation in the near future.


Extensible Markup Language (XML) – Getting Started

11.27.2008 | 0 Comments

Extensible Markup Language was fairly new to web technologies when I first heard of it in 2000. Though at the time the version 1.0 specification from the W3C was only two years old. Since it’s introduction it has many applications. XML has had two applications in my development. The first is SOAP and web services and the other is markup describing data. Such as if I had employee information, I would describe its information with tags: firstname, lastname, address, city, state, and zipcode.

1
2
3
4
5
6
7
8
9
10
<employee>
    <employee>
        <firstname>John</firstname>
        <lastname>Smith</lastname>
        <address>123 West Avenue</address>
        <city>Lincoln</city>
        <state>Nebraska</state>
        <zipcode>68588</zipcode>
    </employee>
</employee>

I won’t get into SOAP and web services here. I’ll do that another time. But, if we were to start with XML, it is best to start with the ideas of XML, XSLT, DTD, and XML Schema.

To get into the importance of XML, let first talk about well-formed markup versus validated markup. Well-formed markup means that for every start tag, there is an end tag. Secondly, that all markup is properly nested. Here are couple examples:
Example: Missing Closing Tag

1
2
3
4
5
6
7
    <table>
    <tr>
         <td>John <!-- Missing Closing Tag -->
         <td>Smith</td>
         <td>Lincoln, NE</td>
    </tr>
    </table>

Example: Improper Nested Tags

1
    <p></b>Employee</p></b> <!-- Improperly nested -->

Valid markup says that this set of markup follows these semantic rules. These rules tells you how the markup should be used. They enforce constraints. For instance, the W3C defines semantic rules for HTML. The two popular ones are Strict and Transitional. There are many other validations, but these seem to be widely used.

Now that we understand these two import aspects of XML, the next topics are XML Schema and DTD. XML Schema and DTD enforce validation. There is a difference between the two documents. XML Schema provides higher abstraction to an XML document. Though, a DTD (Document Type Definition) has a narrow use for enforcing constraints and structure.
Example: DTD

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- Notice: XML, DTD, XML Schema, XSLT start with the XML version and encoding -->
<?xml version="1.0" encoding="UTF-8"?>
 
<!ELEMENT employee (lastname, firstname, address, city, state, zipcode)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT state (#PCDATA)>
<!ELEMENT zipcode (#PCDATA)>
 
<!--Comment describing your root element-->
<!ELEMENT employees ((employee))>

Creating DTDs are simple. Above are the elements that are expected for the XML document. The Employee has children and for each child there is a specification as “#PCDATA”. This tells the parser that the text inside the tag will be parsed. “#CDATA” says the text will not be parsed.
Example: XML Schema

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:complexType name="employeeType"/>
	<xs:element name="employee">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="firstname"/>
				<xs:element ref="lastname"/>
				<xs:element ref="address"/>
				<xs:element ref="city"/>
				<xs:element ref="state"/>
				<xs:element ref="zipcode"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="firstname" type="xs:string"/>
	<xs:element name="lastname" type="xs:string"/>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
	<xs:element name="state" type="xs:string"/>
        <xs:element name="zipcode" type="xs:string"/>
	<xs:element name="employees">
		<xs:annotation>
			<xs:documentation>Comment describing your root element</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="employeeType">
					<xs:sequence>
						<xs:element ref="employee"/>
					</xs:sequence>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
</xs:schema>

As you see, XML Schemas are more complex. There is a definition for a sequence for elements and as you can see the root element is defined at the end. Another point to notice is the definition for complex types. A complex type just enforces constraints on an element.

The last component to XML is XML Stylesheets (XSLT). If you look at the example below, HTML markup is embedded into the stylesheet. The “xsl:for-each” tag contains an attribute that selects what data will be placed in its postion as the dataset is rendered and styled for the browser.
Example: XML Stylesheet (XSLT)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2004/10/xpath-functions" xmlns:xdt="http://www.w3.org/2004/10/xpath-datatypes">
    <xsl:output version="1.0" encoding="iso-8859-1" indent="no" omit-xml-declaration="yes" media-type="text/xml" />
    <xsl:template match="/">
		<html>
		<head>
			<title>Employee Example</title>
		</head>
		<body>
		<table cellpadding="0" cellspacing="0" border="0" width="776" bgcolor="#ffffff">
		<tr valign="top">
	        <td><div style="margin: 5px 5px 5px 5px;">
		<h3>Employees</h3>
                <xsl:for-each select="employees">
                    <xsl:for-each select="employee">
                        Name: <xsl:for-each select="firstname">
                            <xsl:apply-templates />
                        </xsl:for-each>
                        &#160;<xsl:for-each select="lastname">
                            <xsl:apply-templates />
                        </xsl:for-each>
                        <br />Address: <xsl:for-each select="address">
                            <xsl:apply-templates />
                        </xsl:for-each>
                        <br />City: <xsl:for-each select="city">
                            <xsl:apply-templates />
                        </xsl:for-each>
                        <br />State: <xsl:for-each select="state">
                            <xsl:apply-templates />
                        </xsl:for-each>
                        <br />Zip Code: <xsl:for-each select="zipcode">
                            <xsl:apply-templates />
                        </xsl:for-each>
                    </xsl:for-each>
                </xsl:for-each>
	        </div></td>
	        </tr>
	        </table>
		</body>
		</html>
    </xsl:template>
</xsl:stylesheet>

What is shown above are basic concepts to XML. These documents can get long and complicated so therefore I would recommend looking for some software to help you manage these documents. One I would recommend is Altova. Though to use it in the long term, purchase is necessary. Altova does offer a trial period. Altova was very handy in speeding up project completion.


Lincoln .NET Users Group – Agile Sports

11.18.2008 | 0 Comments

Agile Sports HuddleThe Lincoln .NET Users Group is a new gathering in Lincoln, Nebraska of .NET developers.  Once a month, the group schedules a meeting, invites speakers on various .NET topics and discusses how they are used to business application.  In October, I was able to attend the Agile Sports presentation on their product called Huddle.

Huddle is a web application for sports teams to document and analyze games either by their games statistics and game video.  This product increases the interactivity between the coaches and their players.  It is a built from Silverlight, WCF, LINQ from the .NET 3.5 Framework.  The development team also used Prototype and Scriptaculous for AJAX calls.  The interesting aspect of this project was that it was designed around scalability and the presentation descibed how the technologies they chose helped them achieve that goal.

When you look at their overall project in Visual Studio, they are designing their application into a 3-tier architecture such as creating object layers like Business, Core, and Data.  Much of their Data layer is LINQ to SQL.  The interface that contains Silverlight and web application for markup and client side scripts is in a separate project.

Windows Communication Foundation (WCF) is one of the major components that makes this product scalable.  With the use of services, Agile Sports development team utiliized AJAX and Silverlight to process and retrieve their data.  The advantages that WCF gave were higher performance, ease of development, code reuse, and services used as a commodity.

WCF can be deployed in different ways.  At the College of Business, I’ve deployed WCF under IIS, but an ideal deployment maybe writing your own console that monitors the connection to the service.  This can bypass the use of IIS and alleviate consuming more resources especially if your services are heavily consumed.  WCF can use different protocols besides HTTP.  Some other protocols to choose from are:

  • TCP
  • Named Pipes
  • MSMQ (Microsoft Message Queuing)
  • XML
  • Optimized Binary (Binary Version of XML)

WPF (Windows Presentation Foundation) or for the web, Silverlight, was used to annotate on top of game video.  Annotations could also be made in a timeline of the video so step by step notes could be communicated as the play progressed.

The last major component was LINQ to SQL.  Though there were some down sides discovered for LINQ to SQL, LINQ turned out to be of use to the application.  One of the advantages to LINQ was the ability to query data right in the code.  Queries could also be setup as compiled queries to help improve performance.

Some of the downsides or bugs discovered in LINQ at the moment are:

  • Inserts cannot be executed on tables without primary keys
  • “Order By” is sometimes ignored
  • Does not handle many to many relationships across tables
  • Joins on tables cannot occur with more than one parameter

When it comes to debugging LINQ, Agile Sports suggested that you utilize SQL Profiler.

Debugging can also be complicated between these different technologies.  You would think that debugging in Visual Studio can be done at the same time.  Though what Agile Sports found that your debugging process is done separately for each JavaScript, Silverlight, and ASP.NET.

The presentation by Agile Sports was very enlightening for those just getting started or in that indermediate stage in working with .NET 3.5.  What Agile Sports shared definitely set the expectations needed for developers to be aware of these technologies how they are benefitual or in their case give them the edge, but also give us the amount of debugging and areas of attention needed to develop an end product.

What was more exciting was to see someone exceed with .NET in taking a business idea and making it into reality.

Related Links:

  1. Lincoln .NET Users Group – http://www.lincolndev.net
  2. Agile Sports Tech – http://www.agilesportstech.com

2008 High Ed Web Conference

11.04.2008 | 0 Comments

High Ed Web is a conference for web professionals in higher education.  This year’s conference was held at Missouri State University in Springfield, Missouri.  The High Ed Web conference was my first web development conference I’ve been to.  When I was an undergraduate at the University of Nebraska, I was heavily involved in SIFE (Students In Free Enterprise) business competitions and later years I’ve attended the Worship Institute.  What made this conference exceptional was everyone had a laptop.

Laptops. Laptops. Laptops.
Laptops. Laptops. Laptops.

As you went from session to session everyone had their laptop open.  Social networking on Twitter was also used every second of the day.  The most interesting part of it, #HeWeb08 channel was ranked in the upper top 10 of most active channels.

$100,000 per Gigabyte
“$100,000 per Gigabyte”

One of the most inspiring sessions at the conference was the keynote message by Jeffery Veen.  As we constantly work with data sets, the most important aspect of that data set is visualizing it.  Visualizing data is nothing foreign to Jeffery Veen.  Jeff worked for Google in the redesign process for their Analytic products.  As he spent years working on visualizations, he learned of how visuals have been used in history to solve problems.  Jeff shared some people in history that had revolutionized on how we look at numbers or make connections to places or ideas.

The first example Jeff shared was John Snow.  John Snow was a physician who studied the cases of cholera that occurred in London in 1854 or a time known as the Black Death.  Though much speculation of the disease was being spread by the polluted air, John proposed that the source of disease was coming from a water source based from a cases occurred on a map and the use of statistics to prove the connection to the disease.

Following Jeff shared another example of Charles Joseph Minard.  Charles studied the changes in the population of Napoleon’s army during Napoleon’s invasion campaigns.  He stated,

“The aim of my carte figurative is to convey promptly to the eye the relation not given quickly by numbers requiring mental calculation.”

Essentially, as Jeff summarized it, “Don’t make me think.”

A quotation from Chris Jordan creates a further clarity in the importance of the power of visualization,

“Statistics can feel abstract and anesthetizing, making it difficult to connect with and make meaning.”

Chris creates meaning with his visuals of small items to portray the bigger picture.

Though there was so much that Jeff spoke about, Jeff shared the following highlights from his experience:

  • Find a story in the data
  • Assign different visual cues to each dimension of the data
  • Remove everything that isn’t telling the story
  • Enable people to find their stories
  • Create tools to let them manipulate their data
  • Provide filters to enable clarity

You can look through Jeffery Veen’s presentation (http://www.veen.com/heweb08.pdf).

Some recommended reading by Jeff:

  1. “Visualizing Data: Exploring and Explaining Data with the Processing Environment”, Ben Fry.
  2. “The Visual Display of Quantitative Information”, Edward R. Tufte.
  3. “Envisioning Information”, Edward R. Tufte.
  4. “Visual Explanations”, Edward R. Tufte.
  5. “Beautiful Evidence”, Edward R. Tufte.
  6. “Mental Models: Aligning Design Strategy with Human Behavior”, Indi Young.
  7. “The Ghost Map”, Steven Johnson.