diff --git a/portal.cgi b/portal.cgi
new file mode 100755
index 0000000..3f03edd
--- /dev/null
+++ b/portal.cgi
@@ -0,0 +1,89 @@
+#! /bin/sh
+
+weather () {
+ curl -s 'http://rss.wunderground.com/auto/rss_full/NM/Los_Alamos.xml?units=metric' | \
+ awk -F ' [-:] ' '
+(/Current Conditions/) {
+ print "
" $2 "
";
+}
+
+(c == 2) {
+ print "" $0 "
";
+ exit;
+}
+
+(/CDATA/) {
+ c++;
+}'
+
+}
+
+section () {
+ echo "$1
"
+ echo ""
+ curl -s "$3" | \
+ awk -F '>' -v RS='<' -v m=${4:-5} '
+(/^item[> ]/) {
+ a++;
+}
+
+(/^title/) {
+ title=$2;
+}
+
+(a && a" title "";
+}'
+
+ echo "
"
+ echo "more...
"
+}
+
+cat <
+
+
+ Houyhnhnm
+
+
+
+
+EOF
+weather
+section "Top Stories" \
+ 'http://news.google.com/m?pz=1&cf=all&ned=us&hl=en' \
+ 'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&gwt=on&output=rss'
+section "World News" \
+ 'http://news.google.com/m?pz=1&cf=all&ned=us&hl=en&topic=w' \
+ 'http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=w&output=rss'
+section "CSM" \
+ 'http://www.csmonitor.com/textedition' \
+ 'http://rss.csmonitor.com/feeds/csm'
+section NPR \
+ 'http://thin.npr.org/t.php?tid=1001' \
+ 'http://www.npr.org/rss/rss.php?id=1001'
+section "Ars Technica" \
+ 'http://m.arstechnica.com/' \
+ 'http://feeds.arstechnica.com/arstechnica/index?format=xml'
+cat <
+
+EOF
diff --git a/toys/timer.html b/toys/timer.html
index 73539b2..b071958 100644
--- a/toys/timer.html
+++ b/toys/timer.html
@@ -23,10 +23,6 @@
}