A/UX Penelope

Very cool informational site about the pre-OSX version of Apple Unix (A/UX). Totally piques my obscure hardware/software interest. 😉


From the author’s site:

Between the years 1987 and 1995, Apple Computers, Inc. developed a distribution of System V Unix for the Motorola 680×0-based Macintosh. Much of the initial porting work was performed by UniSoft Corporation, with the project being gradually handed over to Apple Engineers. (UniSoft ported several versions of Unix to Motorola 680×0-based platforms, including the early Sun workstations.)

Apple’s Unix (A/UX) was based on AT&T System V Release 2.2, as the industry had not yet “standardized” on SVR4. However, later versions of the operating system included features from SVR3, and SVR4, as well as BSD Unix 4.2 and 4.3 – TCP/IP networking, streams, Fast File System, job control, lpr, NFS, NIS (Yellow Pages), SCCS, and sendmail. It was a full-featured Unix OS. All of these features, along with a development package (fortran and C) and the X11R4 environment, were included in the base package. Note that these were costly add-ons in many contemporary Unix distributions such as Xenix and SCO Unix.

On top of this solid Unix foundation sat a Macintosh Finder – A full System 7 graphical environment that allowed the system to run both Unix and Macintosh programs, while providing a user-friendly interface. (Sound’s vaguely familiar, doesn’t it?) I’ve included some screenshots to satisfy the curiosity of casual visitors, and to whet the appetite of those who might install the operating system…


Wired: Bell Labs Kills Fundamental Physics Research

Another shitty move by (Alcatel-)Lucent, who wrecked Bell Labs and blew all of my stock money…


Bell Labs Kills Fundamental Physics Research

By Priya Ganapati

After six Nobel Prizes, the invention of the transistor, laser and countless contributions to computer science and technology, it is the end of the road for Bell Labs’ fundamental physics research lab.

Alcatel-Lucent, the parent company of Bell Labs, is pulling out of basic science, material physics and semiconductor research and will instead be focusing on more immediately marketable areas such as networking, high-speed electronics, wireless, nanotechnology and software.

The idea is to align the research work in the Lab closer to areas that the parent company is focusing on, says Peter Benedict, spokesperson for Bell Labs and Alcatel-Lucent Ventures.

“In the new innovation model, research needs to keep addressing the need of the mother company,” he says.

That view is shortsighted and may drastically curtail the Labs’ ability to come up with truly innovative discoveries, respond critics.

“Fundamental physics is absolutely crucial to computing,” says Mike Lubell, director of public affairs for the American Physical Society. “Say in the case of integrated circuits, there were many, many small steps that occurred along the way resulting from decades worth of work in matters of physics.”

(continued at http://blog.wired.com/gadgets/2008/08/bell-labs-kills.html)

In case you weren’t previously aware, here’s a list of some of the great inventions to come out of Bell Labs in the past:

At its peak, Bell Laboratories was the premier facility of its type, developing a wide range of revolutionary technologies, including radio astronomy, the transistor, the laser, information theory, the UNIX operating system, and the C programming language. There have been six Nobel Prizes awarded for work completed at Bell Laboratories. [1]


Yes, that’s the transistor, the laser, UNIX, and the C programming language, let alone everything else they invented.

Thanks again, (Alcatel-)Lucent. Great job. 😦

Hard Link vs. Symbolic Link

In reference to the last article I posted about NTFS Junction Points, here’s some more related information:

Hard link – Wikipedia, the free encyclopedia

In computing, a hard link is a reference, or pointer, to physical data on a storage volume. On most file systems, all named files are hard links. The name associated with the file is simply a label that refers the operating system to the actual data. As such, more than one name can be associated with the same data. Though called by different names, any changes made will affect the actual data, regardless of how the file is called at a later time. Hard links can only refer to data that exists on the same file system.On Unix-like systems, hard links can be created with the link() system call, or the ln utility.On Microsoft Windows, hard links can be created only on NTFS volumes, either with fsutil hardlink or mklink. Also, the Cygwin set of utilities has a Unix-like ln command.The process of unlinking disassociates a name from the data
on the volume without destroying the associated data. The data is still accessible as long as at least one link that points to it still exists. When the last link is removed, the space is considered free. A process ambiguously called undeleting allows the recreation of links to data that is no longer associated with a name. However, this process is not available on all systems and is often not reliable.

NTFS symbolic link – Wikipedia, the free encyclopedia

An NTFS symbolic link (symlink) is a file-system object in the NTFS filesystem that points to another file system object. The object being pointed to is called the target. Symbolic links
should be transparent to users; the links appear as normal files or directories, and can be acted upon by the user or application in exactly the same manner. Symbolic links are designed to aid in migration and application compatibility with POSIX operating systems.Unlike an NTFS junction point, a symbolic link can also point to a file or remote SMB network path. Additionally, the NTFS symbolic link implementation provides full support for cross-filesystem links. However, the functionality enabling cross-host symbolic links requires that the remote system also support them, which effectively limits their support to Windows Vista and later Windows operating systems.

NTFS junction point – Wikipedia, the free encyclopedia

NTFS junction point – Wikipedia, the free encyclopedia:

An NTFS junction point (JP) is a feature of the NTFS file system version 3.0 or later. It is a type of NTFS reparse point. Junction Points can be used in a similar way to symbolic links — allowing the creation of a link to a folder that is, for most intents and purposes, the same as the folder itself. This has many benefits over a Windows shell shortcut (.lnk) file, such as allowing access  to files within the folder via Windows Explorer, the Command Prompt, etc. Junction points can only link to directories, and moreover, local directories only; junction points to remote shares are unsupported.[1] For linking to files, possible alternatives to junction points (aside from shortcuts) include hard links (which have the restriction that the file must belong to the same logical volume), and symbolic links (which are only included in Windows Vista and newer, but do work over network shares). The Windows 2000 and XP Resource Kits include a program called linkd to create junction points; a more powerful one named Junction was distributed by SysinternalsMark Russinovich.[1]

While I’m still limited to using NTFS Junction Points (versus Symbolic Links, available in Windows Vista), I do really like the idea of having C:\Users\ link to C:\Documents and Settings\ (who the hell came up with that naming convention anyway?) – similar to how C:\Documents and Settings\ is a symbolic link to C:\Users\ in Windows Vista.

Luckily, there is a utility for just that purpose, available here:


(more info, including earlier code and screenshots here: http://elsdoerfer.name/=ntfslink)

[g++] warning: deprecated conversion from string constant to ‘char*’

Just stumbled on to this problem/fix while writing some C++ code for my CS courses…

warning: deprecated conversion from string constant to ‘char*’

I hadn’t really thought about this much, as previous versions of g++ (such as the 3.4.3 version we’re using on our university systems) never complained about this issue, but g++ 4.2.3 does. The fix, as I found from multiple posts around the web, is to change all function arguments that will be expected to take a string constant from “char *” to “const char *”. For example:

Function Call:


Original Function Prototype:

void class::someFunction(char *);

Updated Function Prototype:

void class::someFunction(const char *);

I’m somewhat new to C++ (OSU taught Java and I code in C# for the day job), so please give me a bit of slack on this one if you’re a seasoned pro. 😉

As always, comments and questions are welcome via my comment box. Thanks for reading!