Linux Journal
My article on LaTeX Equations and Graphics in PHP has been published in the March 2005 print issue (131) of Linux Journal. Citations available here, and I sincerely hope that I haven’t left anyone out.
My article on LaTeX Equations and Graphics in PHP has been published in the March 2005 print issue (131) of Linux Journal. Citations available here, and I sincerely hope that I haven’t left anyone out.
using System; class Hello {
public static void Main()
{
Console.WriteLine( "Hello, World!" );
}
}
As an experienced Java developer, learning the syntax and grammar of the C-Sharp language was a pleasant task and took only a few days. There’s a lot of things I like about the language that are definite improvements over the Java 1.4 Language Specification: delegates and events as a modern-day interface callback mechanism, properties as a shorthand for accessors and modifiers, boxing and unboxing, and my favorite, the return of enumerations and declarative, iterative constructs.
The bad news is that C-Sharp has also brought back many of the annoyances of the C++ language. These include operator overloading, the infamous goto, structures, and non-automatic dynamic binding. I’ll just pretend that these features don’t exist. And for the most part, you aren’t required to use any of these language constructs in your code anyway.
The best part, of course, is the open source Mono .NET Compiler for Linux. Sponsored by Novell, Mono includes both developer tools and the infrastructure needed to run .NET client and server applications. Even Windows Forms support is currently in the works. This technology has a lot of potential, but I’m still, understandably, just a little bit skeptical of Microsoft.
It’s the first day of work at Objectware and most of the day wasted away with routine installation tasks and system configuration. On the J2EE end, I installed and configured Resin, and wrote a quick JSP page to make sure that everything was up to snuff. Works every time.
But since we’re a multiplatform development shop, it seems that I’ll also be doing a fair amount of Microsoft .NET development, primarily with ASP.NET in conjunction with Microsoft SQL Server, and my personal enemy, Visual SourceSafe. It also gives me a great excuse to attend the upcoming Atlanta .NET User Group, and might help me understand just what the heck Michael is talking about all the time.
Being a huge open source advocate, you’d think that I’d somehow be upset with this decision. I’m not. And to be perfectly honest, it doesn’t really matter to me any more. When you’re working at the Enterprise level like I am, you’re always selling out to someone. Whether it’s Microsoft, Sun, Oracle, or even Red Hat is completely irrelevant. As long as our major clients are willing to dish out the dough, I’m perfectly happy to program in whatever environment they want me to. And though I hate to admit it, there’s a dark side to me that’s really looking forward to trying out all the great features I’ve always been reading about in Microsoft Visual C#.
Unofficially stopped by work early this morning to prepare my cubicle and install Fedora Core 3. Red Hat is no doubt the dominant player in the Enterprise Linux market, and consequently, I think it would be worthwhile to ultimately complete the Red Hat Certified Engineer program. As of now, it appears that next week will be spent getting up to speed with Resin and Hibernate. And possibly a lot more.
I’m in North Carolina for the weekend to get one last trip in before I start work on Monday. I’m staying with Stacie and her incredibly cute cats. Met with Naomi and her roommate Veronica to play Nintendo games and have dinner at Squid’s seafood restaurant, with post-dinner at the Jacksprat Cafe, where Stacie’s former roommate Collin works. Saturday, Stacie and I had lunch at Sal’s Italian Ristorante, coupled with yet another coffee break at Caribou Coffee before Sravanthi reluctantly joined us for dinner at Cosmic Cantina. Sure, the weather’s cold, but it’s nowhere near as bad as the news reports made it out to me. Sunday, a brief lunch at Jimmy John’s before returning to Atlanta in the evening.
Well, that certainly got your attention, didn’t it? While German magazine PC-WELT broke the story in mid-November of last year, I’m surprised that it hasn’t gotten more press coverage. PC-WELT reports that Microsoft used an illegal copy of SoundForge 4.5 for editing Wave files shipped with Windows Media Player.
Microsoft has issued two official statements, one from Microsoft Deutschland, and the second in English from BetaNews by Erin Cullen, Lead Product Manager of the Windows Consumer Division:
It bears mentioning that Microsoft has licensed copies of all software used by the User Assistance teams in building these tours (both in past and present). Microsoft has copyright to use the .wav file in question and did not use a cracked version of this software in development of the tour in Windows XP.
While I’m sure that Cullen’s statement is entirely true, the fact still remains that somewhere in the course of production, a cracked copy of Sound Forge 4.5 was utilitized. And regardless of whether or not the product in question was licensed, this is an embarrassing oversight on the part of the software giant.
If you’re running Windows XP, you can actually verify this yourself by entering the following directory and opening any one of the nine audio files in that folder in any text editor, such as Notepad:
%SYSTEMROOT%\Help\Tours\WindowsMediaPlayer\Audio\Wav
On the last line, you’ll see the relevant metadata, and things suddenly get much more interesting:
LISTB INFOICRD 2000-04-06 IENG
Deepz0ne ISFT Sound Forge 4.5
Deepz0ne is a member of Radium, a world-wide software piracy group whose primary goal is to crack and release audio applications. Radium was intentionally disbanded in 2001 to avoid the Business Software Alliance, who had them listed as their number one target. Ironically enough, Microsoft is also a member of the BSA. Just goes to show that sometimes, fact is stranger than fiction.
The XHTML Friends Network is a simple way to represent human relationships using hyperlinks. It’s almost trivial to add and appears to be a good idea from a semantic markup perspective, though there are very few XFN tools that actually utilitize it at this time. XFN enables web authors to indicate their relationships to the people in their weblog entries and blogrolls by simply adding a rel attribute to their anchor tags:
<a href="http://www.barik.net"
rel="friend met">Titus Barik</a>
Additionally, modify the profile attribute in the header to let browsers and search engines know that your pages officially support XFN:
<head profile="http://gmpg.org/xfn/11">
That’s all there is to it. But the best part is that the XFN standard uses the already existing W3C Recommendation to do its work:
**rel = link-types [CI]** This attribute describes the relationship from the current document to the anchor specified by the href attribute. The value of this attribute is a space-separated list of link types.
And also:
**profile = uri [CT]** This attribute specifies the location of one or more meta data profiles, separated by white space. For future extensions, user agents should consider the value to be a list even though this specification only considers the first URI to be significant. Profiles are discussed below in the section on meta data.
Welcome to the XHTML Friends Network. Looking forward to seeing XFN implementations in more weblog systems in the near future.

While I rarely do Windows development, I recently had the opportunity to experiment with different Windows installation products such as InstallShield Professional and Paquet Builder, when I stumbled upon the Nullsoft Scriptable Install System (NSIS) and never looked back.
Unlike other systems that can only generate installers based on a list of files and registry keys, NSIS has a powerful, domain-specific scripting language. And with the use of the HM NIS Edit tool, one can utilize a user-friendly wizard interface to generate scripts within minutes.
To illustrate, let’s look at a simple script that copies a file into the installation directory that the user specifies in a dialog box:
Name "Example Installer"
OutFile "example.exe"
InstallDir $PROGRAMFILES\Example
Page directory
Page instfiles
Section ""
SetOutPath $INSTDIR
File example.exe
SectionEnd
The text script is compiled by NSIS into a fully working Windows executable. Simply right-click on the NSI script and select the compile option. Best of all, it’s released under an open source license and is completely free for any use, including commercial applications.
DLX is a full featured Linux system running on Intel architectures. Its design is simple enough that it can be used as a litmus test for Bochs networking with minimal configuration. First, you’ll need DLX Linux with Networking support. Second, you’ll have to run as root in order to utilize the sending and receiving of raw network packets. Finally, you’ll need to add networking support on the simulator end by modifying the bochsrc configuration file:
# sample for Linux, put on single line
ne2k: ioaddr=0x240, irq=9, mac=b0:c4:20:00:00:00,
ethmod=linux, ethdev=eth0
Run Bochs to load DLX. You’ll see that the NE2000 card is detected and successfully loaded within the running kernel. As far as I know, DLX does not have DHCP support. So, to setup networking in DLX Linux, use the following instead:
dlx login: root
Linux 1.3.89.
dlx:~# ifconfig eth0 192.168.15.100
dlx:~# route add -net 192.168.15.0
dlx:~# route add default gw 192.168.15.1
Networking is now complete. If you intend to use the DLX Linux demo system much you can add the ifconfig and route commands to /etc/rc.d/rc.local so they’ll be run at every startup. There’s one caveat, however: for all UNIX host platforms, Bochs networking cannot talk to the host machine.
While DLX Linux is not entirely useful by itself, having a second guest system may help you to determine whether the problem you see is specific to your emulated operating system, or whether it is a more general problem with Bochs itself. And it’s particularly handy for diagnosing any networking issues in MINIX that may arise from late night hacking sessions on the operating system source code.
Through rain and traffic, I eventually met up with some local Atlanta bloggers this evening at the Righteous Room. It was a first-rate social experience, despite our inability to supress our inner geek yearnings. Hey, it happens. In attendance, in no particular order: Hollis MB, Lori, Mary, her husband Andrew, Scott, and his wife Lisa. A big thanks to Lori for organizing the whole event and getting us all together. It’s always great to meet new people, and I hope that this turns out to be a monthly event. Scott has more details, while Mary and Lori have some embarrassing pictures to blackmail us with.