The uw-wireless authentication web page that shows up when connected to a UW network started to get on my nerves, so I wrote a little script using the lynx text browser to automatically authenticate when connecting to the network. It also performs a simple check to see if the first two numbers of your IP belong to UW.
#!/bin/sh
IP=$(ifconfig eth0 | grep 'inet addr' | awk '{print $2;}' | cut -d: -f 2)
TOP2=$(echo $IP | cut -d. -f 1-2)
if [[ $TOP2 = '129.97' ]]; then
echo 'Connected to UW Network...'
lynx -dump -accept_all_cookies -post_data https://uw-wireless.uwaterloo.ca/login/index.php < ~/.uwwireless | grep 'Successfully Connected' | awk '{print $5;}'
else
echo 'Not connected to UW Network...'
fi
Create the file ~/.uwwireless and place the following in the file, replacing the YOUR_USERID and YOUR_PASSWORD with your own:
userid=YOUR_USERID&password=YOUR_PASSWORD&mode=Connect
Depending on your version of Lynx, the script may fail if the SSL certificate from uw-wireless.uwaterloo.ca is not recognized. I don’t know of a better solution than simply removing the check. Make the following change in /etc/lynx.cfg (or wherever your lynx.cfg may reside) to remove the SSL certificate prompt:
FORCE_SSL_PROMPT:=yes
Installing Eclipse TPTP using the Update Manager creates several problems under Linux.
- First, the permissions are missing for the native Integrated Agent Controller code. Symbolic links were also not created for the Integrated Agent Controller libraries, resulting in a “File too short” error message when running the executable.
- Second, since the Integrated Agent Controller is native code, it requires shared libraries which may or may not be installed on your system.
- Third, several configuration files need to be writable by the user which executes Eclipse. I installed Eclipse using my own user (not root), so I did not run into this problem, however, there are several posts on the mailing list addressing this problem.
As a result, executing the Profiler within Eclipse would result in a cryptic “Unable to connect to localhost (port 10002)” message.
In order to get the Integrated Agent Controller running, we’ll need to fix the mentioned problems, here’s how to do it on Arch Linux:
- Change your working directory to where the TPTP agent controller is installed:
cd eclipse/plugins/org.eclipse.tptp.platform.ac.linux_ia32_4.4.1.v200709261752/agent_controller
- Fix the permissions of the executables:
cd <tptp_agent_controller_dir>/bin
chmod +x ACServer ACStart.sh ACStop.sh ACVersion.sh ChkPass RAServer RAStart.sh RAStop.sh SampleClient SetConfig.sh TimeCollector readme.txt tptpFileTransferAgent tptpProcessController</tptp_agent_controller_dir>
- Fix the symbolic links for the linked libraries. The following list of files should point to their .so.4.4.0 counterparts. The easiest way to do this is just to download a copy of the standalone Agent Controller and to copy the
lib directory to the lib directory of the Integrated Agent Controller:
./libtptpClient.so ./libjavaBaseAgent.so.4 ./libtptpUtils.so.4 ./libtptpAgentBase.so.4 ./libtptpUtils.so ./libtransportSupport.so.4 ./libbaseTransport.so.4 ./libhcclsm.so ./libhccldt.so.4 ./libhccls.so.4 ./libnamedPipeTL.so ./libhcclsm.so.4 ./libhcclco.so.4 ./libhccls.so ./libtptpACTL.so ./libtptpClient.so.4 ./libtransportSupport.so ./libtptpCmdExtr.so ./libhcjbnd.so ./libhcbnd.so ./libtptpCmdExtr.so.4 ./libtptpConfig.so ./libnamedPipeTL.so.4 ./libhcclco.so ./libpiAgent.so.4 ./libtptpCCTL.so ./libsocketTL.so ./libtptpCCTL.so.4 ./libjavaBaseAgent.so ./libprocessControlUtil.so.4 ./libtptpConfig.so.4 ./libcompSupp.so ./libtptpLogUtils.so ./libsharedMemTL.so.4 ./libtptpACTL.so.4 ./libprocessControlUtil.so ./libbaseTransport.so ./libpiAgent.so ./libhclaunch.so ./libsocketTL.so.4 ./libhcthread.so ./libcompSupp.so.4 ./libtptpLogUtils.so.4 ./libtptpAgentBase.so ./libhcthread.so.4 ./libsharedMemTL.so ./libhcbnd.so.4 ./libhcjbnd.so.4 ./libhclaunch.so.4 ./libhccldt.so
- Install the compatibility libraries using the PKGBUILD located in this wiki article.
- Ensure your configuration files are writable by the Eclipse user.
- Occasionally, the Agent Controller leaves behind profiling data in the
/tmp/IBMRAC directory which causes problems with subsequent executions of the Agent Controller. Delete /tmp/IBMRAC in order to remove the temporary files.
- Note: Occasionally, a Java process may prevent the Agent Controller from exiting properly. Killing the appropriate process will allow the controller to be restarted. A ‘killall java’ generally does the trick
Documentation maintainence is a difficult and costly process. Existing forms of software documentation exist independent from the code it describes. As a result, problems arise when source code evolves since there is no traceability between the documentation and code domains.
CodeLink, a semantic wiki designed for code documentation attempts to address this problem. CodeLink provides a platform for establishing traceability links between developer documentation and code concepts. Traceability links between documentation and code can be explicitly created by the user through annotations, or inferred through the use of natural language analysis. CodeLink employs an ontology as its knowledge model and a semantic wiki as its user interface. Annotations on traceability relations in the ontology serve to connect natural language phrases with formal ontology concepts. In this paper, the motivation, design and implementation of CodeLink are described. Particular focus is placed on the natural language processing (NLP) component of CodeLink. The process in which the NLP component infers traceability links from the natural language text in the semantic wiki is described in depth. Several methods of querying and retrieving information from the knowledge model are discussed, followed by a summary of related and future work.
Download CS886 CodeLink A Semantic Wiki for Documentation (247), course project for CS886: Natural Language Computing.
Zachary Quinto will play Spock in the upcoming Star Trek movie. Sylar is definitely one of the most memorable characters in Heroes, so I have high hopes for the new Spock! ★
I ran into a problem when using the statement-centric find(…) query using the OntModel with the RDF Vocabulary. The specified RDF resources were treated like NULL in the find function. In order to fix this, create a ResProperty instead of a ResResource, and all will be well. This can be done like so:
$rest = $this->ontModel->find($statement->getObject(), new ResProperty(RDF_NAMESPACE_URI . 'rest'), NULL);
References
My open source contribution, a bug report
: ResResource as parameter for ResModel::find does not work.
It’s unfortunately that much documentation on the Eclipse Modeling Framework (EMF) is scattered around the ‘net. After digging through the EMF newsgroups (which are immensely useful, and full of useful information!) and several articles, I pieced together how XML serialization of an Ecore model can be customized using ExtendedMetaData EAnnotations.

However, when saving the model the XMLResource.OPTION_EXTENDED_META_DATA option must be set to true in order for the EAnnotations to be effective. To do this:
Map options = new HashMap();options.put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
options.put(XMLResource.OPTION_XML_MAP, xmlMap);
Finally, saving the model with the specified XML resource options:
resource.save(options); //Save with the options map
References
Check out some photos of a real life Kwik-E-Mart! ★
WSDL not being updated from your PHP SOAP app?
After struggling for three hours trying to figure out what was wrong with my web service, it turned out that the WSDL was being cached by the PHP SOAP extension. To disable WSDL caching, add the following lines to the php.ini configuration file:
[soap]
soap.wsdl_cache_enabled = "0"
You should also delete the cached WSDL (located in /tmp/ for me).
Crazy. I don't know why there's this obsession over thin electronics (like the Moto RAZR), but the Intel Metro laptop is insane. Take a look. I love my chunky Thinkpad Z61p, but hey, if Intel can pack as much power as my Z61p into that small package, then I'm all for thin :P ★
Ubuntu disables the root account by default. One simple command can re-enable it:
sudo passwd root
To switch to the root user in the shell:
su
Alternatively, you can switch to the root user in the shell without enabling the user account by using the following command:
sudo -s
The Suspend2 project has been renamed TuxOnIce in order to differentiate itself from the actual process of suspending to ram and suspending to disk. TuxOnIce screams geekiness. ★
The Lenovo Thinkpad T61p has just been announced. It has the option of a WUXGA (1920x1200) screen, and comes with UWB, the successor to Bluetooth, which allows for 100 megabit transfer speeds... meaning the possibility of wireless port replicators. Imagine hooking up the laptop with your desktop keyboard and monitor, wirelessly. That's cool. I think that the WUXGA screen is an IPS screen still, but don't count on future models having IPS displays. ★

Eternal Sunshine of the Spotless Mind is one weird movie. It’s one of those movies that get you thinking. It’s also one of those movies that doesn’t really make sense until the end. There’s just so much detail packed into it. Definitely recommended if you’re into strange artsy movies with a touch of sci-fi and romance.
I’m part of the Generative Software Development Lab and also the designer of the lab website (also powered by Wordpress!)
It’s still a work in progress. We still need a new header image that actually reflects the work in our lab (instead of a badly cropped photo of the Midnight Sun). The publications list is still MIA. If you have any suggestions, feel free to leave a comment!
Welcome to the new woggie.net. I will be adding more content in the future, so stay tuned!
Update: I started transferring some of the Linux guides from my old site, but found that many of them were outdated and obsolete. It’s great to find that a lot of things just work now with most Linux distributions 
Presentation for CS886: Natural Language Processing, on the paper “The state of the art in ontology learning: a framework for comparison” by M. Shamsfard and A. A. Barforoush.
Download CS886 Automatic Ontology Learning Systems Presentation (141).
Aspect-oriented programming is built on the concept of separating concerns. While separation of concerns reduces textual scattering and tangling by encapsulating concerns within a localised module, the behaviour of an aspect-oriented program becomes scattered. Capturing the sequential behaviour of an aspect-oriented program is essential for the validation of the program’s run-time semantics.
SequenceRetriever, a tool for retrieving UML sequence diagrams during the execution of a program is presented. The SequenceRetriever tool is built on top of an extensible framework which facilitates the development of additional trace components and diagram types. An AspectJ trace component and an Eclipse TPTP trace component is implemented. Using the two trace components, sequence diagrams of several programs is presented. A comparison between the AspectJ and TPTP sequence diagrams reveal the ajc weaver implementation of several aspect-oriented constructs.
Download Retrieve Sequence Diagrams from Aspect-Oriented Systems (177), course project for CS842: Aspect-Oriented Programming.
Presentation on “Pegasus – First Steps Towards a Naturalistic Programming Language” by Roman Knoll and Mira Mezini for CS842: Aspect-Oriented Programming.
Download CS842 Pegasus Presentation (143).