CSS Blocks: Box, Column and Flow

Buy this book at Amazon.com! With an established ‘Biggest Box’ strategy, more detail reveals the three kinds of block-level containers of my concern: Box, Column and Flow containers. These are composed within the biggest box—these names will serve as suffixes for a new naming convention used for CSS selectors.

Box Container: The box container is proportionate box to the biggest box. The box that is most useful to me is the one-third box—for my WSVGA convention, this is 341×200 ((1024/3.0) = 341.33333333333331). I see these boxes being used for holding the main navigation menu and displaying the results of AJAX calls.

Column Container: This container makes vertical slices in the biggest block. The width is usually two-thirds or one-third the biggest-box width. My design prefers no more than two columns.

Flow Container: While the Column and Box have exact, pixel-unit, proportionate dimensions, the Flow container works inside of Box or Column containers to handle typographic flow issues in relative em units. One unexpected variation here (for me) is to use flow containers for containing small, box containers. This idea comes to me from the “List View” concept in .NET client technologies.

Songhay.Data Status

The horrible news is the discovery that something converted all code files out of UTF-8 to ASCII. This was revealed to me when a possible employer could not compile my code for errors related to LatinGlyphs.cs. A PowerShell script is now in my toolset that converts text files. Nevertheless, each file had to be checked by hand for glyph loss.

I am almost sure that it was something running in Visual Studio—maybe that Team Foundation Server client crap—did this mass conversion. It is also possible that Visual Studio 2008 before or after some Service Pack did the dirty deed. This little problem could have cost me a job.

The next move here is to my update CodePlex.com projects with the new/old UTF-8 code. By the way, I do not connect to CodePlex.com directly from Visual Studio. I have a somewhat elaborate PowerShell script that copies by Visual Studio ‘live’ code to a staged ‘public’ project folder. The script also preserves/uses tf.exe commands to do the dirty work.

Songhay.Wcf.DataActivity

The NetNamedPipeBinding binding feature in WCF will be exploited to formalize the service orientation of the Data Activity Runner. Named pipes allow me to work with WCF without opening ports all over the place (a trivial psychological barrier but a barrier nonetheless).

I get the idea that WCF services should be controlled through WPF-based applications that minimize to the System Notification Area.

Other Issues

  • Songhay.Data.Activity.KinteWriteHits has to be redesigned to harmonize with advances in Songhay.Data.Ssrs.Log.
  • I’m almost certain that Songhay.Data.GenericWeb.Procedure.KinteSpace needs a shared (external?) resource file—which I assume can be shared with other projects. Using a shared Resource file should be better than ‘sharing’ individual resource items by linking.
  • Work on Songhay.Data.Linq.GenericWeb.* needs a revival…
  • By the way, it should be possible to build the namespace Songhay.Extensions.Xml and use XmlUtility stuff for extension methods. This looks like a graceful way to use .Net 3.0 features without needlessly deprecating the past.

Songhay System Zend Sample Online (Part 2)

The content of this message is used by the SonghaySystem.com sample “Zend Framework Sample: Default Application.” The content of this message comes from an AJAX call against a server running the Zend Framework. This message should be reached from a link in the content of another Blog post. The Zend Framework sample is intercepting links indexed in OPML and rewriting them for rerouting. This ‘interception’ is taking place within the AJAX/YUI Client—it overrides the default behavior of selected links (anchor elements) in this Blog content.

The selection of links to override is driven by a subset of OPML ‘index’ data passed to the Client. In this particular example, any link containing the base URI of the Blog site where this content originates will be overridden. This allows the SonghaySystem.com sample Client to link among any number of Blog posts—all within a single, custom, aggregating ‘view.’ Clicking on a link in the ‘Related Resources’ section below demonstrates this capability…

Related Resources

Songhay System Zend Sample Online

Buy this Book at Amazon.com! The content of this message is used by the SonghaySystem.com sample “Zend Framework Sample: Default Application.” The content of this message comes from an AJAX call against a server running the Zend Framework. The Zend_Feed_Rss class is used to read a WordPress news feed, containing this message—this Blog post. This feed class instantiates and object that contains one or more Zend_Feed_Entry_Rss objects.

Both the Zend_Feed_Rss class and the Zend_Feed_Entry_Rss class inherit from the Zend_Feed_Element class. The Zend_Feed_Element->saveXml() method can be used to return the raw XML of the item element in the RSS feed (conventionally stored in the PHP variable called $item).

For WordPress RSS 2.0 feeds, you should see the content:encoded element extending RSS in the ‘raw’ XML. The content of the message you are reading now is stored in this element. There are two of many ways to access this element directly from PHP. One is found in a Zend “bug” report called “Zend_Feed (RSS) Does Not Provide Access To <content:encoded>”—Kevin Golding in a comment refers to the $item->encoded() method.

The other way comes from the Zend documentation for Zend_Feed_Element->__get(). The documentation states that this method will “enable read access to content:encoded element.” An expression like $item->__get('content:encoded') should produce the expected results.

Related Resources

Are you still building that SonghaySystem.com MP3 player?

Yes. I am still building that custom MP3 player as a replacement for the one being used at kintespace.com. This project predates YouTube.com and still exists in full view of great tools like XSPF Jukebox, JW FLV Media Player and ASTRA AudioPlayback from Yahoo! Also, I would still build my custom solution and use a promotional tool like ReverbNation at the same time.

The number one reason why I am still devoted to my little project is because of my use of Flex and my decoupling of “concerns” in the application. In my audio application there are three major concerns: (i) loading data about audio files, (ii) playing and controlling the audio files and (iii) showing the player interface.

My work intends to cleanly separate these three concerns. You can see (and hear) this in my latest raw sample presentation at SonghaySystem.com. This Flex sample has no visual interface. All you can do is click links in a text box to control the audio. You should assume that I am using XSPF as the data format to load the audio. I have waited and worked for years to finally see this work done—but the timing is somewhat ‘right’ because this work depends on Flash 9 (which was born in June 2006 so “waiting” upwards of three years for this version to get around the Web is not that horrible).

These (known) items must be complete before I really celebrate:

  • Connect my Flex-based GUI to my player and release that as a sample.
  • Use JavaScript to connect XHTML playlist data to my Flash player and release a sample with this working.

That’s a total of three samples to establish this new audio player as a viable replacement for my old code that I announced in 2005 and upgraded in 2006. And it is important to explain to me (because I do forget you know) why I do not consider myself as one “reinventing the wheel”:

  • Almost all Flash audio players are presented as solutions for artists and publishers who do not have any concern for traditional software developer practices—only the Yahoo! Flash tools come close to this particular form of professionalism.
  • My solution uses the Adobe Flex SDK directly from Eclipse. No Flash. No FlexBuilder. I would throw out a figure like 99% to describe the percentage of the Adobe customer base not working like this—and Adobe will mostly like continue to discourage this vendor-independent behavior in spite of their Open Source relations.

Strangely, I would not recommend using my solution for the “average Joe” who wants to get audio up on the Web. I would tell them to do what millions are already doing on YouTube.com: they just upload a single-frame video (with an audio track of course) to ‘smuggle’ the audio into the YouTube.com system. You can then use the YouTube.com APIs to “skin” a custom audio/video player as a frontend to YouTube.com. I’ve got a rudimentary sample on SonghaySystem.com that just scratches the surface of this investigation. So I will take the YouTube.com route as well as my own…