Script to Connect to UW-Wireless Automatically Using Lynx

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

TPTP Agent Controller on Arch Linux

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:

  1. 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
  2. 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>
  3. 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
  4. Install the compatibility libraries using the PKGBUILD located in this wiki article.
  5. Ensure your configuration files are writable by the Eclipse user.
  6. 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.
  7. 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 :)

Firefox 3.0, ScribeFire, RadeonHD and other Miscellaneous Goodies

  • I’m making this post from ScribeFire, a Firefox extension for writing blog entries. Give it a try!
  • Firefox 3.0 is in beta now. Tons of change, but the most important ones to me are: Full page zoom, better GTK integration, and the promised Firefox 2.0 bookmarks revamp. I suggest trying out the nightly builds to see the latest and greatest.
  • The open source RadeonHD driver has reached version 1.0!  I have to switch to a VT in order to control the panel brightness, and it consumes more power than the fglrx driver since there is no dynamic clock management, but most important to me is that… suspend and hibernate just work!
  • The KDE 4.0 release has been pushed to January. I can’t blame them, having tried bits and pieces of it so far, it definitely needs the extra time. I much rather wait and have a stable desktop environment.
  • I switched to Arch Linux a couple months ago. I highly recommend it for experienced Linux users who would like a binary distribution, with a simple system management framework, and a great package management system.
  • Kile 2.0 has been released. There are some nice GUI changes, but most noticeable to me is several fixes to the static line wrapping feature.

CodeLink: A Semantic Wiki for Code Documentation

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!

RDF API for PHP 0.9.5: Bug with ResResource and ResModel::find

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-&gt;ontModel-&gt;find($statement-&gt;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.

Customizing EMF XML Serialization

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.

EMF ExtendedMetaData Screenshot

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!

Turn off caching on the PHP SOAP extension

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).

Presentation on Corpus-based Learning of Analogies and Semantic Relations

Presentation slides on the paper “Corpus-based learning of Analogies and Semantic Relations” by Turney and Littman for CS886: Natural Language Computing.

Download CS886 Corpus-based learning of Analogies and Semantic Relations Presentation (188).

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

Enable root account in Ubuntu

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

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.

Generative Software Development Lab Site Launch

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!

The new woggie.net

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 :)

Automatic Ontology Learning Systems Presentation

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).

Retrieving Sequence Diagrams from Aspect-Oriented Systems

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

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).

Older Page 2 of 3 Newer