data != information != knowledge != wisdom != truth

Whilst reading this fun posting on the subject of Intelligent Design (surely, something we in the OpenSolaris universe know a lot about!) I was taken with the blog’s heading:

  • DATA IS NOT INFORMATION
  • INFORMATION IS NOT KNOWLEDGE
  • KNOWLEDGE IS NOT WISDOM
  • WISDOM IS NOT TRUTH

I like it because it speaks to little things (such as the blogosphere), and big things (such as the answer to the ultimate question of life, the universe, everything).

Another posting
explains the caption’s origins. As a blog disclaimer, it is rather more useful than this:

THE INDIVIDUALS WHO POST HERE WORK AT SUN MICROSYSTEMS. THE OPINIONS EXPRESSED HERE ARE THEIR OWN, ARE NOT NECESSARILY REVIEWED IN ADVANCE BY ANYONE BUT THE INDIVIDUAL AUTHORS, AND NEITHER SUN NOR ANY OTHER PARTY NECESSARILY AGREES WITH THEM.

A Blogging Roller-Coaster Ride!

Why do I spend so much time fighting Roller? Why can’t I just get on and do my blogging thang? My patience is wearing thin. Shouldn’t the default environment just work? Why do I have to become and HTML/CSS expert? I didn’t sign up for this!

And judging by the quality of the OpenSolaris blogs, I’m not alone in my frustation. The content is great, but the presentation is often poor.

So, in the absence of better advice I have decided on the following:

  • I will use the “Basic” theme with minimal hacks (see below)
  • I will hijack <h4> … </h4> for my own subheading use
  • I will mark all my paragraphs with <p> … </p> containers
  • I will never use <p> as a separator
  • I will spurn the use of <br> separators
  • I will employ <pre class=”code”> … </pre> for code quotes

I’ve modified the “Basic” theme’s default _css file to ensure that “h4” headings have margins which match standard “p” paragraphs, and that preformatted code has a readable font size …

#set( $theme = "basic" )
#parse("/WEB-INF/classes/themes/css.vm")
<style type="text/css" media="print">
.rWeblogCategoryChooser{ visibility: hidden; }
.entries{ width: 100%; float: none; }
.rightbar{ visibility: hidden; }
</style>
<style type="text/css">
h4 { margin:10px; }
pre.code { font-size: 10pt; }
</style>

I didn’t like the way the “Basic” theme’s default _day file adds <p> … </p> containers around each day entry because this forces nesting of the “p” tags within the final HTML. Nor did I like the way the entry title was just marked with the “b” tag. So this is what I now use …

<div class="box">
<div class="entry">
#showDayPermalink( $day )
#showEntryDate( $day )
</div>
#foreach( $entry in $entries )
<a name="$utilities.encode($entry.anchor)" id="$utilities.encode($entry.anchor)"></a>
<h3>$entry.title</h3>
#showEntryText($entry)
<span class="dateStamp">(#showTimestamp($entry.pubTime))</span>
#showEntryPermalink( $entry )
#showCommentsPageLink( $entry )
#end
#showLinkbacks( $day )
</div>

For such an advanced blogging environment I find it absolutely incredible that I have to edit both the bookmarks database and the main weblog template jsut to get rid of the default (and useless) “News” links! Here’s my revised “Basic” theme weblog template …

<div class="entries">
<h1>#showWebsiteTitle()</h1>
<h2>#showWebsiteDescription()</h2>
#showWeblogCategoryChooser()
#showNextPreviousLinks()
#showWeblogEntries("_day" 15)
</div>
<div class="rightbar">
<h2>Calendar</h2>
<div class="sidebar">
#showWeblogCalendar()
</div>
<h2>RSS Feeds</h2>
<div class="sidebar">
#showRSSBadge()<br>
#showRSSLinks()
</div>
<h2>Search</h2>
<div class="sidebar">
#showSearchForm()
</div>
<h2>Links</h2>
<div class="sidebar">
#showBookmarks("My Sites" true false)
#showBookmarks("Blogroll" true false)
</div>
<h2>Navigation</h2>
<div class="sidebar">
#showCssNavBar()
</div>
</div>

Well, there you are. That’s what I did. I just wish it was a simple matter for others to use the above, but unless you are also using the “Basic” theme it almost certainly won’t work for you! However, the principles should be applicable to other themes.

I have also taken the precaution of downloading the current Roller distro just incase someone fiddles with the “Basic” theme in a later release. Sigh!

Initial Thread

Hopefully this won’t become YASCRIBE (yet another self conscious readerless initial blog entry), but so far it’s not looking that promising, is it?

After 16+ years at Sun I’m still having plenty of fun, so maybe Multiple Threads will allow me to spread some of the fun around? Of course, your idea of fun may differ significantly from mine. But here goes anyway …

Multithreading has been my thing for the past decade, and so much has been happening in this space! Here are some of the highlights:

  • Solaris 2.0 (1992) multithreaded kernel (for scalable SMP)
  • Solaris 2.2 (1993) libthread (for multithreaded applications, and based on an MxN model)
  • Solaris 2.5 (1995) libpthread (for applications written to the Pthread APIs)
  • Solaris 2.6 (1997) preemption control, scheduler activations, adaptive mutexes (for performance)
  • Solaris 7 (1998) libmtmalloc (for improved heap performance), 64-bit address space (for lots more threads!)
  • Solaris 8 (2000) alternate libthread implementation based on a 1-1 model (more scalable, improved semantics, simpler to maintain and extend)
  • Solaris 9 (2002) removed MxN implementation altogether, added Thread Local Storage support (allows C compilers to implement __thread directive efficiently)
  • Solaris 10 (2005) rolled libthread into libc (i.e. threads are now first class citizens), added various POSIX APIs (e.g. posix_spawn() and spin locks)

My technical whitepaper Multithreading in the Solaris Operating Environment reviews most of the above in much greater detail — up to and including Solaris 9 (being written for that release). I hope to use this blog to fill in many of the gaps concerning the exciting stuff we have done since then, not least what we did to make threads first class citizens in Solaris 10.

I hope to be back before too long to share more of this really interesting stuff — probably starting with how I made getenv(3C) lockless in Solaris 10. So watch this space!

Tag: ,