<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:borndigital</id>
  <title>If I Can't Say Something Nice...</title>
  <subtitle>Troy Hurteau</subtitle>
  <author>
    <name>Troy Hurteau</name>
  </author>
  <link rel="alternate" type="text/html" href="http://borndigital.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://borndigital.livejournal.com/data/atom"/>
  <updated>2009-12-31T03:24:03Z</updated>
  <lj:journal userid="16647448" username="borndigital" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://borndigital.livejournal.com/data/atom" title="If I Can't Say Something Nice..."/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:borndigital:8266</id>
    <link rel="alternate" type="text/html" href="http://borndigital.livejournal.com/8266.html"/>
    <link rel="self" type="text/xml" href="http://borndigital.livejournal.com/data/atom/?itemid=8266"/>
    <title>2009 going going...</title>
    <published>2009-12-30T22:25:29Z</published>
    <updated>2009-12-31T03:24:03Z</updated>
    <content type="html">Just a few days left, not like it matters. The division drawn that ends one year and starts another is 100% arbitrary. I've never been one to put too much stock in "new year's resolutions". For one thing, anything worth changing is worth starting now, not later. I also don't think sudden change is often the best approach. I've bought clothes before thinking it would motivate me to change. It doesn't work. I've been fighting my weight for a while now and motivation is the number one weak spot for me. My weight isn't even really all that bad, back below 200 (barely) and if I can just stay at that point for a while I'll be happy. If I can find ways to cut things out and cram in exercise to lose a pound a month I'll be deliriously happy.&lt;br /&gt;&lt;br /&gt;Christmas was pretty nice. I made a shawl for one grandmother this year since I made one for the other last year. That is one example of change being difficult, I keep intending to make more presents for christmas every year, but usualy end up running out of time and buying stuff instead. I made a clock that I wasn't really happy with how it turned out (but the recipient seemed to like it) and a couple of bead necklaces that did pretty well. On the other end of the giving-receiving spectrum I got some Copco cups (Eco-First, Acadia Mug) to further encourage my cost savings attempt at not buying coffee every morning (making it communally in office instead). I also got some games and books I really wanted. Now I just need time to play said games ;D A couple were portable, so I've been able to play them more, Little Big Planet for PSP and Scribblenauts.&lt;br /&gt;&lt;br /&gt;Tonight is my second D&amp;D session with 4th Edition. The first went OK. We're using the RPTools software and it is Java based which I really hate. The interface is pretty good, it is just a ridiculous memory hog. I'm live tweeting my character at: &lt;a href="http://twitter.com/oroborios"&gt;http://twitter.com/oroborios&lt;/a&gt; . He uses some strong language, so be warned :D&lt;br /&gt;&lt;br /&gt;He isn't that angsty in game (at least not out loud), but some of my JL Friends know how our little game groups can get with the ridiculousness.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:borndigital:7775</id>
    <link rel="alternate" type="text/html" href="http://borndigital.livejournal.com/7775.html"/>
    <link rel="self" type="text/xml" href="http://borndigital.livejournal.com/data/atom/?itemid=7775"/>
    <title>Playing with fire... I mean technology.</title>
    <published>2009-12-14T05:07:03Z</published>
    <updated>2009-12-14T05:07:03Z</updated>
    <content type="html">&lt;img src="http://pics.livejournal.com/borndigital/pic/000053hy" align="right" width="160" height="120" border="0" /&gt;In my never ending quest for the next great thing I've been playing around with a lot of stuff lately. Google Wave has some interesting potential, but it is mostly useless right now. A lot of people I know complain that there are just not enough people on it... I have over two dozen invites now and no one that is interested. Part of the problem is a lot of people don't want yet another thing to deal with and I can't blame them.&lt;br /&gt;&lt;br /&gt;Beyond the social buy-in issue there is an egregious lack of functionality. Sure, it's a "preview", but some of the things you can't do are just inane. Maybe some day it'll be a neat communication tool. Right now it's a bit lame, and annoyingly slow in Firefox.&lt;br /&gt;&lt;br /&gt;That takes me to the next point of exploration: Chrome. I've long said I was going to try out Chrome when they had a Mac version, but that was back when I used a Mac on a regular basis. In the time it has taken them to get the Mac version into a public Beta (I think it's been at least 6 months now...) I switched to hardly ever using a Mac unless I need to use Omnigraffle (and if anyone can recommend a good Windows/Mac alternative to that lovely app I'm all ears).&lt;br /&gt;&lt;br /&gt;Two or three months ago I switched from Mac as my primary operating system to Linux (Ubuntu). Aside from some ongoing issues with dual screen support it has been mostly great. I've been hearing about the Chrome Beta for Linux now so I guess the time is right.&lt;br /&gt;&lt;br /&gt;I'm also exploring Linux flavors. Aside from some very early versions of Red Hat my first real experience with Linux was Ubuntu and it looks like I picked the right one. I tried to switch to Red Hat recently because it was what the inventory system we have at work supports (supposedly) and it was a complete failure. Fedora wasn't too bad, but I still had issues. I tried Open SUSE this week but it had some show stopping problems, and at the recommendation of a Facebook friend finally tried Linux Mint. The last option was certainly decent, but it is based on Ubuntu and I haven't really found a reason to pick it over the upstream yet.&lt;br /&gt;&lt;br /&gt;All this switching around, in operating systems, web browsers, and other programs reminds me of my initial adjustment period switching from Amiga to Microsoft. I tried everything to make the new operating system feel more at home. What I really wanted was something that just worked without having to switch the way I operated too much. By now I've become somewhat accustomed to switching how I operate. I just want something that runs smoothly once I settle in.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:borndigital:7279</id>
    <link rel="alternate" type="text/html" href="http://borndigital.livejournal.com/7279.html"/>
    <link rel="self" type="text/xml" href="http://borndigital.livejournal.com/data/atom/?itemid=7279"/>
    <title>How Windows Makes Me Feel</title>
    <published>2009-12-04T19:10:07Z</published>
    <updated>2009-12-04T19:10:07Z</updated>
    <category term="computers"/>
    <category term="art"/>
    <category term="angst"/>
    <content type="html">Even Windows 7 (contained virtually in Mac with a Sun Product) can't alleviate my Microangst.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pics.livejournal.com/borndigital/pic/00004y6e/"&gt;&lt;img src="http://pics.livejournal.com/borndigital/pic/00004y6e/s320x240" width="320" height="205" border="0" /&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:borndigital:6039</id>
    <link rel="alternate" type="text/html" href="http://borndigital.livejournal.com/6039.html"/>
    <link rel="self" type="text/xml" href="http://borndigital.livejournal.com/data/atom/?itemid=6039"/>
    <title>Chuck Code 1</title>
    <published>2009-10-14T22:00:02Z</published>
    <updated>2009-10-14T22:01:53Z</updated>
    <category term="utf-16"/>
    <category term="source code"/>
    <category term="chuck code"/>
    <category term="open source"/>
    <category term="string conversion"/>
    <category term="php"/>
    <category term="code"/>
    <content type="html">So I am working on a project, and I do a little investigation down a particular path, start writing some code, and we decide not to go that route.&lt;br /&gt;&lt;br /&gt;Throwaway code, fine. But, it is actually something I made small improvements on based on someone else's shared code. So I figured contribute it rather than totally throw it away.&lt;br /&gt;&lt;br /&gt;PHP UTF-16 to UTF-8 conversion based on source from &lt;a href="http://www.moddular.org/log/utf16-to-utf8"&gt;http://www.moddular.org/log/utf16-to-utf8&lt;/a&gt; (which was based on some JavaScript code... also potentially useful.):&lt;br /&gt;&lt;br /&gt;Lets say you have something in UTF-16. PHP is not very UTF-16 friendly yet (STILL).&lt;br /&gt;&lt;br /&gt;Based on the code from moddular, I decided being able to defect for BOM would be good so I pulled that into a separate function. I just use 'be' and 'le' to indicate big and little endian (and '' to indicate neither), but one could define constants instead.&lt;br /&gt;&lt;br /&gt;Also, my little bit of research indicated that BOM is optional in UTF-16, and that big endian is generally the safer of the two assumptions. I extended the original method to be configurable, but retain the default assumption that no BOM means the string is not UTF-16. If you force conversion, the default endian is big, but can be overridden to little ('le').&lt;br /&gt;&lt;br /&gt;Have fun.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
&amp;lt;?php
function getUtf16Bom($str)
{
	$c0 = ord($str[0]);
	$c1 = ord($str[1]);
	return(
		$c0 == 0xFE &amp;&amp; $c1 == 0xFF
		? 'be'
		: (
			$c0 == 0xFF &amp;&amp; $c1 == 0xFE
			? 'le'
			: ''
		)
	);	
}

function utf16ToUtf8($str,$forceConversion = false, $assumedEndian = 'be') {
	$type = getUtf16Bom($str);
	if('' == $type &amp;&amp; !$forceConversion){
		return $str;
	}
	$str = substr($str, 2);
	$len = strlen($str);
	$dec = '';
	for ($i = 0; $i &amp;lt; $len; $i += 2) {
		$c = 
			('be' == $type || '' == $type &amp;&amp; 'be' == $assumedEndian) 
			? ord($str[$i]) &amp;lt;&amp;lt; 8 | ord($str[$i + 1]) 
			: ord($str[$i + 1]) &amp;lt;&amp;lt; 8 | ord($str[$i]);
		if ($c &amp;gt;= 0x0001 &amp;&amp; $c &amp;lt;= 0x007F) {
			$dec .= chr($c);
		} else if ($c &amp;gt; 0x07FF) {
			$dec .= chr(0xE0 | (($c &amp;gt;&amp;gt; 12) &amp; 0x0F));
			$dec .= chr(0x80 | (($c &amp;gt;&amp;gt;  6) &amp; 0x3F));
			$dec .= chr(0x80 | (($c &amp;gt;&amp;gt;  0) &amp; 0x3F));
		} else {
			$dec .= chr(0xC0 | (($c &amp;gt;&amp;gt;  6) &amp; 0x1F));
			$dec .= chr(0x80 | (($c &amp;gt;&amp;gt;  0) &amp; 0x3F));
		}
	}
	return $dec;
}

//lets say we want to open a UFT-16 Spreadsheet exported from Excel...
$dataFile = utf16ToUtf8(file_get_contents('config/sfxdata.txt'));
//split it into lines...
$dataList = split("\n",$dataFile);
$dataTable = array();
foreach ($dataList as $lineNumber=&amp;gt;$dataLine){
//split each line into cells...
	$dataTable[] = split("\t",$dataLine);
}
print_r($dataTable);&lt;/pre&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:borndigital:2412</id>
    <link rel="alternate" type="text/html" href="http://borndigital.livejournal.com/2412.html"/>
    <link rel="self" type="text/xml" href="http://borndigital.livejournal.com/data/atom/?itemid=2412"/>
    <title>Accessiblity Presentation</title>
    <published>2008-11-25T18:43:24Z</published>
    <updated>2008-12-03T17:36:19Z</updated>
    <content type="html">The technology this morning was uncooperative. Unfortunately my demo hinged on a locally hosted web server, and I couldn't get the laptop to output video to the projector.&lt;br /&gt;&lt;br /&gt;So now the demo is uploaded to my old Engineering space (because they support PHP) and here is the content of the slides:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Presentation?id=dchj7cv_43fk2d63hr"&gt;Slides&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Transcript:&lt;br /&gt;&lt;br /&gt;My name is Troy Hurteau, I am the Interface and Applications Development Specialist for NCSU Libraries.&lt;br /&gt;&lt;br /&gt;This presentation was a small part of a larger panel on the current landscape and future movement of accessibility on the web.&lt;br /&gt;&lt;br /&gt;So, when we talk about sharing information on the web there are several things to consider from the personal perspective (thinking non-technically).&lt;br /&gt;&lt;br /&gt;The visitors accessing your site or application come from a variety of geographical and cultural environments . They also have a diverse set of capabilities: language, vision, education, and computing platform to name a few.&lt;br /&gt;&lt;br /&gt;Accessibility impacts how these visitors will be able to interact with or through the web. Depending on how your site or application are built, they may have challenges with authoring contributed content, reading or finding content, understanding the information you are trying to convey. These can all affect the quality of the experience then encounter.&lt;br /&gt;&lt;br /&gt;Rich interfaces can be impressive, and very satisfying when well designed. So long as they don't create unnecessary barriers to the information, using them is a good thing, even if they benefit some users more than others.&lt;br /&gt;&lt;br /&gt;One consideration is making the act of contributing, collaborating, and generally interacting with other people online accessible. A fairly common example of this is the rich-text editors used in web mail, internet forums, blogs, and content management systems.&lt;br /&gt;&lt;br /&gt;If the buttons, images, and form elements that make up the text-entry interface are all marked up properly, and keyboard navigation of the interface is possible then there usually won't be a problem. Even just providing a "source view" can make the task workable for most users. &lt;br /&gt; &lt;br /&gt;When the needs involve complex markup, the outcomes may not be comparable. The goal is to make the experiences as positive as possible. Often even a reasonable effort will rise far above what most sites attempt.&lt;br /&gt;&lt;br /&gt;It is also important that the information authored in these systems conform to best practices for markup. Proper use of headers, paragraphs, lists, and other tags helps users with assistive technology navigate within the page.&lt;br /&gt;&lt;br /&gt;Most developers know about things like alt text for images, but there are many markup standards that can be applied. &lt;br /&gt; &lt;br /&gt;The link in this slide (&lt;a href="http://people.engr.ncsu.edu/jthurtea/access08/"&gt;http://people.engr.ncsu.edu/jthurtea/access08/&lt;/a&gt;) illustrates two very similar pages. The first example uses tags correctly, the second uses the wrong tags in almost every aspect. It is styled to look identical, but the second page is  significantly harder to use with a screen reader. It also would not perform as well with search engines.&lt;br /&gt;&lt;br /&gt;Aside from the application of tags, there are other authoring practices, such as descriptive link text with a title attribute as a backup that can make a huge difference. Generally speaking links like "More" and "Click Here" are bad form. When this type of link label is unavoidable, a title attribute on the link is an acceptable substitute.&lt;br /&gt;&lt;br /&gt;From another angle, some of the more recent developments in web technology have enabled whole new ways to share information that go beyond basic text displays and inaccessible images that require alternative text.&lt;br /&gt;&lt;br /&gt;Sharing data through the web is a huge area of opportunity.&lt;br /&gt;&lt;br /&gt;The thing to keep in mind is that while rich web interfaces may be cool and effective for a portion of the web population, there are users that will have problems using such approaches for a number of technical, situational, and personal reasons.&lt;br /&gt;&lt;br /&gt;If harnessed poorly, this new technology is little different that the &amp;lt;blink&amp;gt; tag, or table based layouts. Misapplied technology causes more issues than it solves.&lt;br /&gt;&lt;br /&gt;These three examples explore the same set of data through different methodologies.&lt;br /&gt;&lt;br /&gt;The first (&lt;a href="http://people.engr.ncsu.edu/jthurtea/access08/3.php"&gt;http://people.engr.ncsu.edu/jthurtea/access08/3.php&lt;/a&gt;) is just a table rendering of the data. It is properly marked up, though since it is four dimensional data there are opportunities to apply even more useful header hierarchies.&lt;br /&gt;&lt;br /&gt;The visual approach (&lt;a href="http://people.engr.ncsu.edu/jthurtea/access08/4.php"&gt;http://people.engr.ncsu.edu/jthurtea/access08/4.php&lt;/a&gt;) pulls the data in to a Google visualization application, in Flash. This is an attractive way to display the data, but if it is the only way to access the data there is a missed opportunity and not just for users with disabilities.&lt;br /&gt;&lt;br /&gt;Any methods that give more access to the data improve the application of the information to a variety of uses. The third example (&lt;a href="http://people.engr.ncsu.edu/jthurtea/access08/5.php"&gt;http://people.engr.ncsu.edu/jthurtea/access08/5.php&lt;/a&gt;) shows how a simple script can be used to customize the data view. This isn't even using AJAX, though it just as easily could.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:borndigital:978</id>
    <link rel="alternate" type="text/html" href="http://borndigital.livejournal.com/978.html"/>
    <link rel="self" type="text/xml" href="http://borndigital.livejournal.com/data/atom/?itemid=978"/>
    <title>Current Mesh of Projects</title>
    <published>2008-10-01T19:31:43Z</published>
    <updated>2008-10-01T19:31:43Z</updated>
    <content type="html">This is the latest update in my ever shifting mesh of projects:&lt;br /&gt;&lt;br /&gt;Work Projects  (development time) - &lt;br /&gt;&lt;br /&gt;Journey is my top priority at work for October.  Journey Version 1 ships at the end of the month and should handle all data on people and positions at that point. Ad-hoc/Committee group management is high on the wish list for Version 2. Version 1 includes a full migration of LDAP data  from the Netscape LDAP to the AD.&lt;br /&gt;&lt;br /&gt;Still working on Telecom Request forms. Goal is to have a demoable version ready the week of October 6th. A fully functional version won't be ready until Journey Version 1 is finished, so tentatively Version 1 would be in November.&lt;br /&gt;&lt;br /&gt;Planning Technical Services/Remedy Phase 2 now. I think "Phase 2" will be "Version 1" for that project. Does not currently hinge on Journey. No time table has been set yet.&lt;br /&gt;&lt;br /&gt;I have a few Jiras for Reserves Direct bug fixes that are supposed to be "easy".&lt;br /&gt;&lt;br /&gt;All other projects are in "support time mode".&lt;br /&gt;&lt;br /&gt;Journey Version 0.5 and Spam protection for Forms have both been folded into a personal project called Quepie.&lt;br /&gt;&lt;br /&gt;Personal Projects - &lt;br /&gt;&lt;br /&gt;Still trying to get enough time to push the &lt;a href="http://blogs.lib.ncsu.edu/page/fabulousit?entry=refactoring_an_example"&gt;TwitterRdf for Sysnews&lt;/a&gt; into a version 0.9. Wanted to have it done Monday. Maybe by end of week? Unfortunately personal development time continues to be short. This would be a stable/clean version that runs manually, 1.0 would be the cronable version.&lt;br /&gt;&lt;br /&gt;Want to get back to SAF/E and Flora, but so far these remain too pie-in-the-sky.&lt;br /&gt;&lt;br /&gt;Quepie is a newer project to offload some work development time. It is a set of Zend Framework extensions including everything from my LDAP adapter (can search and write to LDAP, unlike the built-in Zend_Ldap), to utility objects, to an MVC alternative framework.</content>
  </entry>
</feed>
