My Public Notebook
Last edited June 2, 2009
More by earobinson »
View this notebook on a map
Gmail - perfect, I talked to noah and he said he can have a report together before I sign the
mail.google.com/mail/#inbox/11f2de7eab5bc4d6
Gmail - Compose Mail - earobinson@gmail.com
mail.google.com/mail/#compose
wheelchair Dp Previous Page 17 34   17 43 18 03     18 35 18 43     19 43   Next Page
02  Toronto-Union Bus Term Previous Page             Next Page
02  Exhibition GO Station wheelchair Previous Page   17 49 18 09     18 49     19 49   Next Page
03  Mimico GO Station Previous Page   17 56 18 16     18 56     19 56   Next Page
03  Long Branch GO Station Previous Page   18 02 18 22     19 01     20 01   Next Page
11  Port Credit GO Station wheelchair Previous Page   18 08 18 28     19 06     20 06   Next Page
12  Clarkson GO Station Previous Page 17 55   18 15 18 35     18 56 19 12     20 12   Next Page
13  Oakville GO Station wheelchair Previous Page 18 03   18 23 18 43     19 04 19 19     20 19   Next Page
14  Bronte GO Station wheelchair Previous Page 18 09   18 29 18 49     19 10 19 25     20 25   Next Page
Gmail - re: Support - earobinson@gmail.com
mail.google.com/mail/#inbox/11d9bf8593ed1b09
Index of /ubuntu/pool/intrepid/i386
boisson.homeip.net/ubuntu/pool/intrepid/i386/
 
 

Index of /ubuntu/pool/intrepid/i386

[ICO]NameLast modifiedSizeDescription

[DIR]Parent Directory  -
[   ]camllight_0.77rc1-3_i386.deb31-Oct-2008 09:07 1.8M
[   ]lineo_0.3-4_i386.deb31-Oct-2008 09:07 4.4M
[   ]php5-dbase_5.2_i386.deb31-Oct-2008 09:07 19K

Apache/2.2.3 (Debian) Server at boisson.homeip.net Port 80
Gmail - boxee review - earobinson@gmail.com
mail.google.com/mail/#inbox/11d9167c6ac29f2d
In Flanders fields the poppies blow Between the crosses, row on row ... - Google Search
www.google.com/search?hl=en&q=In+Flanders+fields+t...
In Flanders fields the poppies blow Between the crosses, row on row ... - Google Search
www.google.com/search?hl=en&q=In+Flanders+fields+t...
In Flanders fields the poppies blow Between the crosses, row on row ...
In Flanders fields the poppies blow Between the crosses, row on row ... - Google Search
www.google.com/search?hl=en&q=In+Flanders+fields+t...
In Flanders fields the poppies blow Between the crosses, row on row ...
Streaming Television: Watch CNN Live and Full-screen with VLC
lifehacker.com/5076441/watch-cnn-live-and-full+scr...
The Perfect Desktop - Ubuntu 8.10 (Intrepid Ibex) | HowtoForge - Linux Howtos and Tutorials
howtoforge.com/the-perfect-desktop-ubuntu-8.10
Gmail - Security - earobinson@gmail.com
mail.google.com/mail/#inbox/11d5e638c1610fe1
Linux.com :: Three scripts for package management on Debian and Ubuntu systems
www.linux.com/feature/151125
Code Newbie Articles - http://codenewbie.com/

  » Login With Sessions
      by sde


Page 1

There has been many inquiries/posts regarding login and sessions, I decided to create and test some scripts to share.

I've made a mock-up site consisting of 8 pages:
Code:
// these files should be put in a directory named 'inc'
inc/auth.php      // the meat and potatoes of this subject
inc/connect.php // an excellent connection script
inc/nav.php     // navigation include for site

// these files should be on the web root
index.php  // main page of site
link_1.php // page of site
link_2.php // page of site
link_3.php // page of site
logout.php   // destroy session and re-direct to login
Here is the SQL Schema for the table I Query:
Code:
CREATE TABLE users (
  user_id int(10) unsigned NOT NULL auto_increment,
  username varchar(20) NOT NULL default '',
  password varchar(20) NOT NULL default '',
  PRIMARY KEY  (user_id)
) TYPE=MyISAM;
if you copy and paste these files into your favorite text editor, edit the connect.php with your mysql settings, it should work on your server if sessions are supported.

inc/auth.php
PHP Code:
<?
// Login & Session example by sde
// auth.php

// start session
session_start(); 

// convert username and password from _POST or _SESSION
if($_POST){
  
$_SESSION['username']=$_POST["username"];
  
$_SESSION['password']=$_POST["password"];  
}

// query for a user/pass match
$result=mysql_query("select * from users 
  where username='" 
$_SESSION['username'] . "' and password='" $_SESSION['password'] . "'");

// retrieve number of rows resulted
$num=mysql_num_rows($result); 

// print login form and exit if failed.
if($num 1){
  echo 
"You are not authenticated.  Please login.<br><br>
  
  <form method=POST action=index.php>
  username: <input type=text name=\"username\">
  password: <input type=password name=\"password\">
  <input type=submit>
  </form>"
;
  
  exit;
}
?>
inc/connect.php
PHP Code:
<?
// Login & Session example by sde
// connect.php

// replace with your db info
$hostname="localhost";
$mysql_login="myusername";
$mysql_password="mypass";
$database="test";

if (!(
$db mysql_connect($hostname$mysql_login $mysql_password))){
  die(
"Can't connect to mysql.");    
}else{
  if (!(
mysql_select_db("$database",$db)))  {
    die(
"Can't connect to db.");
  }
}
?>
logout.php
PHP Code:
<?
// Login & Session example by sde
// logout.php

// you must start session before destroying it
session_start();
session_destroy();

echo 
"You have been successfully logged out.

<br><br>
You will now be returned to the login page.

<META HTTP-EQUIV=\"refresh\" content=\"2; URL=index.php\"> "
;
?>
inc/nav.php
PHP Code:
<?
// Login & Session example by sde
// nav.php
?>

<a href=index.php>Home</a> |
<a href=link_1.php>link_1</a> | 
<a href=link_2.php>link_2</a> | 
<a href=link_3.php>link_3</a> |
<a href=logout.php>logout</a>

<br><br>
index.php
PHP Code:
<?
// Login & Session example by sde
// index.php

// connect to database
include("inc/connect.php");

// include auth and nav
include("inc/auth.php");

// begin content
include("inc/nav.php");

echo 
"This is my home page.";

// close mysql connection
mysql_close();
?>
link_1.php
PHP Code:
<?
// Login & Session example by sde
// link_1.php

// connect to database
include("inc/connect.php");

// include auth and nav
include("inc/auth.php");

// begin content
include("inc/nav.php");

echo 
"This is my Link 1.";

// close mysql connection
mysql_close();
?>
link_2.php
PHP Code:
<?
// Login & Session example by sde
// link_2.php

// connect to database
include("inc/connect.php");

// include auth and nav
include("inc/auth.php");

// begin content
include("inc/nav.php");

echo 
"This is my Link 2.";

// close mysql connection
mysql_close();
?>
link_3.php
PHP Code:
<?
// Login & Session example by sde
// link_3.php

// connect to database
include("inc/connect.php");

// include auth and nav
include("inc/auth.php");

// begin content
include("inc/nav.php");

echo 
"This is my Link 3.";

// close mysql connection
mysql_close();
?>




   
Feature: Analyze Your Email Usage with Mail Trends
lifehacker.com/379328/analyze-your-email-usage-wit...

Analyze Your Email Usage with Mail Trends

mailtrends-header1.png
Managing the daily onslaught of incoming email with filing systems, keyboard shortcuts, and batch processing will only get you so far. When a flurry of new email snows you in within an hour of every inbox sweep, it's time to dig in and get to the source of your email traffic. You've accumulated a sizable email archive over the years, and a new breed of analysis tool can extract meaningful statistics from that data to help you conquer email overload. Who sent you the most email messages last year? What hour of the day do you receive the most new messages? Which of all the mailing lists you're on are the most active? A new command line tool called Mail Trends works with Gmail over IMAP and can give you all that information and more.

Let's take a look at what Mail Trends tells you and how to run it on your Gmail account.

What you'll need

To start analyzing your email usage with Mail Trends, you'll need:

  • A Gmail account (Google Apps Gmail accounts work too) with IMAP access enabled.

  • The Python software. (Windows users, download and install it from here; Mac/Linux folks, you've already got it installed. I tested Mail Trends using Python 2.5 without problems.)

What you'll get

After you run Mail Trends from the command line with Python, you'll get a regular web page full of interesting information about your email usage. Mail Trends logs into your Gmail account, grabs the "message headers" (sender, recipient, subject, date) from your Gmail "All Mail" folder, and generates charts and lists with statistics.

See an example of Mail Trends charts based on a set of email from Enron employees.

My Mail Trends results reveal a few too many email addresses to post in full, but here's my daily email traffic chart, which shows I receive the most email around 10-11AM each day:

Here's what the month of March 2008 looked like on my personal Gmail account. Notice the lower activity on weekends. (Not surprising.)

When I ran Mail Trends on my Lifehacker email account, I wasn't surprised to find out that Adam is my most frequent sender and recipient. However, people listed a few lines down on my Top Sender and Top Recipient list did surprise me. Who you email and how often can give you interesting insight into your communication habits.

What's the point?

While it may seem like self-indulgent data-wanking, Mail Trends and tools like it can help you make informed decisions about how you handle email. For instance, you may find out that the person you send the most email to is your co-worker two cubicles down—and decide to meet in person on a regular to discuss more things offline. If that mailing list you lost interest in months ago is generating a lot of inbox traffic, you could unsubscribe. If you want to process your email in batches, at certain times of day, you could use Mail Trends' time of day chart to figure out what hour brings the most email to your inbox on average, and schedule your processing time around it.

Setting up Mail Trends

Before we start with Mail Trends, know that this is a command line operation using the Python scripting language. Judging from the comments on the project homepage, some users have run into kinks setting it up (though I got it down with just a couple of tries.) Comfort with the command line and a little past experience with Python will make using Mail Trends easier. If that all doesn't sound like your cup of tea, check out the lower section on easier-to-setup alternatives to Mail Trends.

Still with me? Ok, assuming you've already got Python installed on your machine, here's how to get Mail Trends going. (Note: these instructions assume you know how to navigate directories from the command line. See also Mail Trend's Getting Started page.)

  1. Download and extract Mail Trends to a convenient directory on your computer. Using your command line, cd into that directory.
  2. Download Cheetah, a template package Mail Trends needs to work. Install it by changing to the Cheetah directory and using the following command:
    python setup.py install
    (Mac users: you may have to prefix that command with sudo.
    Windows users: download the compiled version of Cheetah's NameMapper here. Save to the Cheetah directory—by default, C:\Python25\Lib\site-packages\Cheetah and remove the version from the filename so it's just _namemapper.pyd.)
  3. Now, cd into the mail-trends directory, and execute the Mail Trends command. See the Getting Started page for a rundown of the options. I used the following command:
    python main.py —server=imap.gmail.com —use_ssl —username=example@gmail.com —me=example@gmail.com —skip_labels
    Make sure you substitute example@gmail.com with your email address. (Note: Our publishing system turns double dashes into em dashes; so make sure you have two dashes before the server, use, username, me, and skip_labels parameters.)
  4. If all goes well, Mail Trends will start up and prompt you for your Gmail password. Enter it, and watch the program go. Mail Trends speed will depend on how fast your machine and network connection is and how many messages you've got in your account. The first time I tried Mail Trends it hung up at about 24,000 messages. When I restarted it, it completed successfully—on both Mac and Windows, and both a vanilla Gmail account and Google Apps account.

Note that you can tell Mail Trends what addresses you send mail from (using the me= parameter, and also exclude mail based on criteria (like --filter_out=to:tips@lifehacker.com.) Play with the program options to come up with the best recipe for your Gmail setup.

Once Mail Trends completes processing, simply open the mail-trends/out/index.html file in your favorite web browser to check out your charts and lists.


Other email analysis tools

Previously mentioned Outlook plugin Xobni is still in invite-only beta, but it looks like one of the best up and coming email analysis tools for Outlook users. Check out the video below for a Xobni demo.

The Seek Thunderbird extension adds "faceted search" to the 'bird. While it doesn't generate usage reports a la Mail Trends, it does list frequency numbers based on date and recipient as you search. Here's a video demo of Seek:

Have you given Mail Trends or other similar tools a run on your email archive? Find out anything interesting? Tell us about it in the comments.

Gina Trapani, the editor of Lifehacker, is cutting off email overload at the source. Her weekly feature, Geek to Live, appears every Monday on Lifehacker. Subscribe to the Geek to Live feed to get new installments in your newsreader.

Particletree » How to Add an API to your Web Service
particletree.com/features/how-to-add-an-api-to-you...
Donald Trump Jr. Talks Affliction's Future Plans
mmarated.com/articles/article/news/20080821/donald...

MMARated Radio was rolling with the big dogs today as we welcomed Donald Trump Jr. (left) to the program to talk, what else, Affliction.

Some of the topics we touched on included:

* His role with Affliction

* Why did the Trumps decided to get involved in MMA?

* Why not build their own promotion?

* His take on the inaugural show

* An update on the Tito Ortiz situation

* Was he surprised at how much Ortiz demanded?

* Will Affliction look to secure a network television deal (potentially with NBC)?

* The thought process behind Affliction's large payroll

* What we can expect from "Day of Reckoning" on October 11th

Computer Science Community - My Steps for Setup on Windows/Cygwin
csc.cdf.toronto.edu/bb/YaBB.pl?num=1190059840
Computer Science Community - My Steps for Setup on Windows/Cygwin
csc.cdf.toronto.edu/bb/YaBB.pl?num=1190059840
Here I assume:
1.      You will put the 4 tar files and the shell script to unpack and install the utilities in a folder called C:\cygwin\os161
2.      You will install these utilities in a folder called C:\cygwin\u\csc369h\fall\pub\os161
3.      You chose to put the root of your kernel in C:\cygwin\home (notice here that I don't mean $HOME).
 
I chose these locations so that the directory names will work, binaries won't conflict in $PATH, among other considerations.
 
This is the process I took:
1.      Create a dir in C:\cygwin called os161, and a dir tree called u\csc369h\fall\pub\os161 to end up with C:\cygwin\os161 and C:\cygwin\u\csc369h\fall\pub\os161, respectively
2.      In C:\cygwin\u\csc369h\fall\pub\os161 create a dir called root
3.      Make sure your $PATH variable includes . and C:\cygwin\bin but nothing else related to cygwin or sys/161
4.      Use an FTP client to download the 4 tar files and the shell script into C:\cygwin\os161
5.      Make sure you have the latest version of cygwin (1.5.x), Eclipse Europa (3.3.0), and CDT for Eclipse (4.0) which you can update from http://download.eclipse.org/tools/cdt/releases/europa
6.      You can follow the instructions to check out your repository. Make sure when you’re giving Eclipse the location that you end it at CDFID and that you have a trailing “/”. Make sure you check out the “trunk” dir.
7.      In C:\cygwin\os161, manually unpack the tar files.
8.      Open sys161-1.13\sys161-1.13\configure using an editor provided by cygwin. Line 17 reads
SRCDIR=`echo "$0" | sed 's,[^/]*$,,`. Change it by adding a single quote so it reads:
SRCDIR=`echo "$0" | sed 's,[^/]*$,,’`. Save and exit.
9.      Change the shell script under C:\cygwin\os161 so that it only compiles and installs the utilities (not unpacks them – because you already unpacked them and made changes that would be lost if you don’t modify the script).
10.      Run the script and capture stdout and stderr in different files:
build_all.sh 1> out.log 2> err.log.
Ignore any errors displayed on the screen dealing with pipe/fork/etc errors
11.      When that’s done, very quickly skim the errors file to make sure the output was only warnings and not fatal errors. Quickly scan the output file as well to make sure all three utilities – binutils, gcc, and gdb (in that order) – were configured, compiled and installed (as indicated by the lines with ****)
12.      Make sure C:\cygwin\u\csc369h\fall\pub\os161 has dirs bin and tools and that the bin dir has about 20 executable files and/or shortcuts to them including gdb, gcc, etc
13.      Add that bin dir to your path
14.      Use cygwin to go into the dir in which you checked out your project and go into the src dir
15.      Type: ./configure –ostree=/home/root
16.      Go into ./kern/conf and type: ./config ASST0
17.      Go into src/kern/compile/ASST0 and use make as follows:
make depend
make
make install
18.      Copy src\sbin\mksfs\disk.c, src\sbin\mksfs\support.c and their related header files into src\sbin\dumpsfs\
Alternatively, you can use grep to find all Makefiles in which links are created using ln (e.g., src\sbin\dumpsfs\Makefile). Look for the lines in which ln is used (e.g., ln -s ../mksfs/disk.c .), comment those lines and replace them with the following: e.g., fsutil hardlink create ./disk.c ../mksfs/disk.c
19.      Go back to src and type make  
20.      Copy C:\cygwin\u\csc369h\fall\pub\os161\bin\sys161.conf to C:\cygwin\home\root
21.      In Eclipse, do the project modifications as indicated on the website as well as creating the make targets
56 Windrush Rd, Kleinburg, ON, Canada to 57 Charles St W, Toronto, ON, Canada - Google Maps
maps.google.com/maps?f=d&hl=en&geocode=15320493550...
/tags/boinc_core_release_6_3_5/set-version - BOINC - Trac
boinc.berkeley.edu/trac/browser/tags/boinc_core_re...
The Dell Online Store: Build Your System
configure.dell.com/dellstore/print_summary_details...
  • XPS M1330

  • Date 22/06/2008 5:59:23 PM Central Standard Time
    Catalog Number 70702 Retail cadhs1
    Catalog Number / Description Product Code Qty SKU Id
    Processor:
    Intel® Core™ 2 Duo T7250 (2MB cache/2.0GHz/800Mhz FSB), English
     TH725CH 1 [223-4562] 1
    Operating System:
    Genuine Windows® Vista Ultimate Edition SP1
     VHU31E 1 [310-9281][412-0946][420-5769][420-5924][420-6436][420-8585][420-7098][420-7387][420-7622][463-2282] 11
    System Color and LCD cover Pattern:
    Tuxedo Black
     BLACK 1 [310-9240] 2
    LCD Screen & Camera:
    Slim and Light LED Display with VGA Webcam
     DTHCAM 1 [320-5583] 5
    Memory:
    4GB Shared Dual Channel DDR2 SDRAM at 667MHz
     4GB 1 [311-7311] 3
    Hard Drive:
    250G 5400RPM SATA HDD
     250GB 1 [341-5947] 8
    Video Card:
    128MB NVIDIA® GeForce® Go 8400M GS
     128AC84 1 [320-5603] 6
    Optical Drive:
    8X CD/DVD Burner (DVD+/-RW) with double-layer DVD+R write capability
     8XDVDRW 1 [313-5361][420-8183] 16
    Wireless Networking:
    Dell Wireless 1505 Wireless-N Mini-card
     DW1505 1 [430-2347] 19
    Primary Battery:
    85Whr Lithium Ion Battery (9 cell)
     9BAT 1 [312-0562] 27
    Sound Card:
    Integrated Sound Blaster Audigy HD Software Edition
     ISBADV 1 [313-5014] 17
    Adobe Software:
    Adobe® Acrobat® Reader 7.0
     ADOBER 1 [420-7468] 15
    Processor Branding:
    Intel Core 2 Duo Processor
     IC2DNB 1 [310-8319] 35
    Labels:
    Windows Vista™ Premium
     VPN 1 [310-8628] 7
    Productivity Software:
    Microsoft Works 9. DOES NOT INCLUDE MS WORD
     IWRK9 1 [420-8051] 22
    Internet Access (ISP):
    Please contact me with more details
     NONEIS 1 [465-8687] 40
    Anti-Virus/Security Suite (Pre-installed):
    McAfee SecurityCenter with anti-virus, anti-spyware, firewall, 30-Days
     MC930D 1 [410-1160] 25
    Online Data Storage:
    DataSafe Online Backup 3GB
     DASF3G 1 [987-4817][988-0099][420-7091][420-7092] 31
    Hardware Services:
    1 Year Return to Depot Service, Complete Care and Technical Support
     S11RRC 1 [009-9998][901-0501][920-9986][920-9990][920-5070] 29
    Fingerprint Reader:
    Biometric Fingerprint Reader
     FPRDR 1 [310-9273] 38
    The Dell Online Store: Build Your System
    configure.dell.com/dellstore/print_summary_details...
    pidgin-facebookchat - Google Code
    code.google.com/p/pidgin-facebookchat/

    Minimal Wordpress Theme

    October 6th, 2006

    Minimal is a 2 column Fixed width , Widget Friendly, Right Sidebar Wordpress Theme with minimum design. If you come across any bugs please contact us.

    Preview
    :

    Download Link: Minimal Wordpress Theme

     

    Delete Files Older Than x Days on Linux

    The find utility on linux allows you to pass in a bunch of interesting arguments, including one to execute another command on each file. We'll use this in order to figure out what files are older than a certain number of days, and then use the rm command to delete them.

    Command Syntax

    find /path/to/files* -mtime +5 -exec rm {} \;

    Note that there are spaces between rm, {}, and \;

    Explanation

    • The first argument is the path to the files. This can be a path, a directory, or a wildcard as in the example above. I would recommend using the full path, and make sure that you run the command without the exec rm to make sure you are getting the right results.
    • The second argument, -mtime, is used to specify the number of days old that the file is. If you enter +5, it will find files older than 5 days.
    • The third argument, -exec, allows you to pass in a command such as rm. The {} \; at the end is required to end the command.

    This should work on Ubuntu, Suse, Redhat, or pretty much any version of linux.

    The Geek is the founder of How-To Geek and a geek enthusiast. When he's not coming up with great how-to articles, he's probably writing at his personal blog. This article was written on 02/21/07 and tagged with: Ubuntu, Solaris, Suse Linux
     
    FOSSwire » Create a mirror of a website with Wget
    fosswire.com/2008/04/21/create-a-mirror-of-a-websi...

    GNU’s wget command line program for downloading is very popular, and not without reason. While you can use it simply to retrieve a single file from a server, it is much more powerful than that and offers many more features.

    One of the more advanced features in wget is the mirror feature. This allows you to create a complete local copy of a website, including any stylesheets, supporting images and other support files. All the (internal) links will be followed and downloaded as well (and their resources), until you have a complete copy of the site on your local machine.

    In its most basic form, you use the mirror functionality like so:

    $ wget -m http://www.example.com/

    There are several issues you might have with this approach, however.

    First of all, it’s not very useful for local browsing, as the links in the pages themselves still point to the real URLs and not your local downloads. What that means is that, if, say, you downloaded http://www.example.com/, the link on that page to http://www.example.com/page2.html would still point to example.com’s server and so would be a right pain if you’re trying to browse your local copy of the site while being offline for some reason.

    To fix this, you can use the -k option in conjunction with the mirror option:

    $ wget -mk http://www.example.com/

    Now, that link I talked about earlier will point to the relative page2.html. The same happens with all images, stylesheets and resources, so you should be able to now get an authentic offline browsing experience.

    There’s one other major issue I haven’t covered here yet - bandwidth. Disregarding the bandwidth you’ll be using on your connection to pull down a whole site, you’re going to be putting some strain on the remote server. You should think about being kind and reduce the load on them (and you) especially if the site is small and bandwidth comes at a premium. Play nice.

    One of the ways in which you can do this is to deliberately slow down the download by placing a delay between requests to the server.

    $ wget -mk -w 20 http://www.example.com/

    This places a delay of 20 seconds between requests. Replace that number, and optionally you can add a suffix of m for minutes, h for hours, and d for … yes, days, if you want to slow down the mirror even further.

    Now if you want to make a backup of something, or download your favourite website for viewing when you’re offline, you can do so with wget’s mirror feature. To delve even further into this, check out wget’s man page (man wget) where there are further options, such as random delays, setting a custom user agent, sending cookies to the site and lots more.

    Easily Install Prism Web Apps in Ubuntu 8.04 | Tombuntu
    tombuntu.com/index.php/2008/03/24/easily-install-p...

    Published in March 24th, 2008
    Posted by Tom in software

    Mozilla Prism is a web browser that allows web applications to be integrated with a traditional desktop and act like native applications. Launching a web app using Prism is done in the same way as launching an application installed on your computer, from the Applications menu. The Prism browser is simplified to not get in the way of the web app.

    The integration between desktop and web applications has been taken to the next level in Ubuntu 8.04 Beta; you can now easily install Prism web apps from the Ubuntu repositories.

    Nine familiar sites (mostly from Google) are available at the moment, you can apt-get install or use your package manager to install any of these:

    • prism-facebook
    • prism-google-analytics
    • prism-google-calendar
    • prism-google-docs
    • prism-google-groups
    • prism-google-mail
    • prism-google-reader
    • prism-google-talk
    • prism-twitter

    Setting up a web app with Prism isn’t difficult, so many more convenient packages could be on the way. You can create Prism launchers for your own favorite sites using the official Firefox extension.

    The Google Talk package (prism-google-talk) is terrific. I’ve been using the built-in chat in Gmail instead of a native client like Pidgin. The package uses another Gtalk web interface which is much better than the one in Gmail.

    Using Prism, I can launch Google Talk from my Applications->Internet menu:

    And get a window like this:

    Perhaps Ubuntu should include some web applications installed by default. Anyone else think that offering Google Docs in the Applications->Office menu as well as OpenOffice is a good idea?

    This isn’t the first time I’ve written about Prism. Thanks to Derek Buranen for pointing out these new packages.

    Enjoyed this post and want more news, tips, and how-tos for Ubuntu Linux? Subscribe to Tombuntu now.

    Digg This! (29 Diggs, 2 comments)Stumble It!Save to del.icio.us (64 saves, tagged: ubuntu prism linux)


    Related Posts


    Linux - Lifehacker
    lifehacker.com/tag/linux/
    featured linux download

    RarCrack Opens Protected Archives Without Passwords

    Linux only: Open and extract files from ZIP, RAR and 7Zip archives you've forgotten the password to, or never found at the download location, with RarCrack, a free Linux command line utility. Using a brute-force algorithm, RarCrack simply gets to work determining the password for compressed archives, which, in the case of most downloaded RAR files, isn't all that tough. You can point RarCrack in the direction of any special characters you know were used in creating the password, but the standard use—rarcrack yourfile.zip—works just fine in most cases. RarCrack is a free download for Linux systems only; Source files are available at the home page, and Ubuntu Unleashed explains how to quickly compile them.
    Adjust Volume of Individual Applications with PulseAudio | Tombuntu
    tombuntu.com/index.php/2008/04/10/adjust-volume-of...

    Adjust Volume of Individual Applications with PulseAudio

    Published in April 10th, 2008
    Posted by Tom in software

    PulseAudio is the new sound server that’s being included in Ubuntu 8.04 and other recent Linux distros. A sound server lets changes be made to sound between the applications and sound hardware layers. Among other features, PulseAudio provides per-application volume controls, a plugin architecture, low-latency, networking features, and good application compatibility.

    PulseAudio can do a lot, but one great feature is the ability to adjust the volume of individual applications. This is great for applications such as Flash applets that usually don’t let you adjust volume.

    Ubuntu 8.04 is not currently including a user interface for this feature, but it’s easy to install one. Install the package pavucontrol from your package manager or by using the command below:
    sudo apt-get install pavucontrol

    Run pavucontrol in a terminal to start the PulseAudio Volume Control. (You’ll probably want to add an application menu item through System->Preferences->Main Menu.)

    As new applications that use sound are launched, they will instantly appear in the window. You can adjust the volume sliders for each application and the sound output will also change instantly, different channels can even be adjusted separately. In the other tabs, you can adjust the volume for entire input and output devices just like applications.

    PulseAudio will remember your volume settings when you reopen applications, so don’t forget to change the volumes back to 100%.

    Index of /Tests/Tutorial

    Files shown:0
    Sticky Tag:


    File Rev. Age Author Last log entry
     Parent Directory        
    Step1/        
    Step2/        
    Step3/        
    Step4/        
    Step5/        
    Step6/        
    Step7/        

    CVS Admin
    ViewVC Help
    China vaults past USA in Internet users - USATODAY.com
    www.usatoday.com/tech/world/2008-04-20-Internetuse...
    China vaults past USA in Internet users
    Updated 1d 4h ago | Comments126 | Recommend20 E-mail | Save | Print | Reprints & Permissions |
     Enlarge By Claro Cortes IV, Reuters
    Chinese Internet users go online earlier this month at a Beijing shop. A new grass-roots movement is underway in which technogeeks, Internet addicts, Blackberry owners and compulsive instant-message users hope to wrest back control of their lives by daring to switch off — if only for a day.
    By Calum MacLeod, USA TODAY
    BEIJING — China, already the world leader in cellphone use, has surpassed the USA as the No. 1 nation in Internet users.

    The number of Chinese on the Internet hit more than 220 million as of February, according to estimates from official Chinese statistics by the Beijing-based research group BDA China. The government is likely to confirm the leap at its half-yearly report in July.

    The longtime Internet leader, the USA, which founded and developed the network of computers, had 216 million users at the end of 2007, according to Nielsen/NetRatings.

    The percentage of American users — 71% — still exceeds China's 17%. China has 1.3 billion people, compared with nearly 304 million in the USA.

    China, however, has a higher growth rate, says BDA's chairman, Duncan Clark. By the end of March, for example, Chinese users climbed to 233 million.

    At the end of 2007, China's Internet users reached 210 million, a jump of 53% from the previous year, says Zhang Shanshan, media director for the China Internet Network Information Center, which gathers statistics for the Ministry of Information Industry.

    Clark says the rapid growth is powered in part by China's economic boom. While the government "continues to filter the Net and encourage self-censorship, it also has a mandate to promote cheaper technology and the knowledge economy."

    And there is strong government backing for companies such as China Netcom, which offers broadband service at $10 a month, Clark says.

    At the company's Xibahe branch in north Beijing, dozens of people recently lined up to buy broadband service.

    Sun Xin, 19, a student, was helping his parents sign up for DSL.

    "My friends all agree — no Internet, no life," Sun says. "We use it every day for MSN, and I love playing games like World of Warcraft." The game is so popular that players can pay companies in China to play in their place so they can continue gaining points.

    Peacekeeper-missile-testing.jpg (JPEG Image, 3000x2272 pixels) - Scaled (33%)
    upload.wikimedia.org/wikipedia/commons/5/5f/Peacek...
    Another Random Day :: Life
    www.anotherrandomday.com/?id=191

    POTATOES

    An old man lived alone in the country. He wanted to dig his potato garden but it was very hard work as the ground was hard. His only son Fred, who used to help him, was in prison. The old man wrote a letter to his son and described his predicament.

    Dear Fred,
    I am feeling pretty bad because it looks like I won't be able to plant my potato garden this year. I'm just getting too old to be digging up a garden plot. If you were here, all my troubles would be over I know you would dig the plot for me.
    Love,
    Dad

    A few days later he received a letter from his son.

    Dear Dad,
    For heaven's sake, don't dig up that garden! That's where I buried the BODIES!
    Love,
    Fred

    At 4am the next morning, FBI agents and local police arrived and dug up the entire area without finding any bodies. They apologized to the old man and left. That same day the old man received another letter from his son.

    Dear Dad,
    Go ahead and plant the potatoes now. That's the best I could do under the circumstances.
    Love,
    Fred

    Karen Reid


    Lecturer in Department of Computer Science at the University of Toronto.


    TA Training

    Courses Taught

    Fall 2002

    • csc150 Accelerated Introduction to Computer Science
    • csc209 Software Tools and Systems Programming

    Research

    The general area of my research is in resource management for clusters of computers. I have been looking at how to more efficiently transfer large data sets from external storage servers onto the local disks of the cluster for use during computation.

    "Overlapping Data Transfer With Application Execution on Clusters", Karen Reid and Michael Stumm appeared in the Workshop on Cluster Based Computing at ICS 2000. (postscript, pdf )

    Address

    Karen Reid
    Department of Computer Science
    University of Toronto
    40 St. George Street
    Toronto, Ontario
    CANADA M5S 2E4

    E-Mail: reid@cs.utoronto.ca (Current students should use the course specific email address.)

    Office: BA 4240
    Dept Phone: (416) 978-6025
    Fax: (416) 978-1931
    Office Phone: (416) 978-7797

    If a programming language was a boat…
    compsci.ca/blog/if-a-programming-language-was-a-bo...

    This one is inspired by a recent forum post, that still leaves me in amazement.

    Hi, Im wondering how i can create a boat in turing and if someone can post a example.

    This makes no sense, since one doesn’t normally make water vehicles in Turing, the programming language. Though this got me thinking — if a programming language was a boat, what would it be?

    Turing

    Turing would definitely be a kayak (thank you for comments). It’s small. It’s human powered. It’s often used as a beginner “boat”. And it’s also very Canadian.


    Original photo by naokomc

    Java

    Java is a cargo ship. It’s very bulky. It’s very enterprise~y. Though it can also carry a lot of weight. Will carry a project, but not very fun to drive.


    Original photo by cfarivar

    Perl

    Perl is a tugboat. Powerful enough to tug Java around, in 80 characters or less.


    Original photo by xeeliz

    Ruby

    Ruby is difficult to describe. It’s sleek, sexy, and very fun to drive. Here’s a picture. Very trendy.


    Original photo by Tony Falcon

    PHP

    PHP is a bamboo raft. A series of hacks held together by string. Still keeps afloat though.


    Original photo by permanently scatterbrained

    C

    C is a nuclear submarine. The instructions are probably in a foreign language, but all of the hardware itself is optimized for performance.


    Original photo by Ryan C. McGinley

    HTML

    HTML isn’t really a programming language boat.


    Original photo by ascendeddaniel

    There’s a lot more to this, and it’s all up for discussion. How would your favourite programming language fare in open waters?

    Jonathon Edington - Wikipedia, the free encyclopedia
    en.wikipedia.org/wiki/Jonathon_Edington

    Jonathon Edington

    From Wikipedia, the free encyclopedia

    Jump to: navigation, search

    Jonathon Edington (b. 1977) is a Fairfield, Connecticut, United States, patent lawyer who achieved national notoriety when, on August 28, 2006, he murdered his neighbor, Barry James, after being told that James had molested Edington's two-year-old daughter. There has been no evidence found that Barry James molested Edington's daughter or anyone else.[1] On August 30 Edington was released on $1 million bond. It was widely expected that Edington would attempt to mount a psychiatric defense at his murder trial [2], however Edington instead pled guilty to the crime and was sentenced to 12 years in prison on August 31, 2007.[3]

    The story had generated a large amount of press coverage in the United States and overseas.

    Bahen Centre for Information Technology (BA)
    40 St. George Street
    Toronto M5S 2E4
    UofT Building#: 80
    Year of Construction: 2001
    Gross Area: 49,752.36 sq meter

    Occupant Departmental Offices
       
    Knowledge Media Design Institute
    Main Office located at BA Room #: 7214

    Mathematics, Dept of
    Main Office located at BA Room #: 6290
    http://www.math.toronto.edu/

    Engineering Science, Division of
    Main Office located at BA Room #: 2110
    http://www.ecf.toronto.edu/apsc/engsci/


    Bahen Centre for Information Technology (BA)
    40 St. George Street
    Toronto M5S 2E4
    UofT Building#: 80
    Year of Construction: 2001
    Gross Area: 49,752.36 sq meter

    Occupant Departmental Offices
       
    Knowledge Media Design Institute
    Main Office located at BA Room #: 7214

    Mathematics, Dept of
    Main Office located at BA Room #: 6290
    http://www.math.toronto.edu/

    Engineering Science, Division of
    Main Office located at BA Room #: 2110
    http://www.ecf.toronto.edu/apsc/engsci/


    Bahen Centre for Information Technology (BA)
    40 St. George Street
    Toronto M5S 2E4
    UofT Building#: 80
    Year of Construction: 2001
    Gross Area: 49,752.36 sq meter

    Occupant Departmental Offices
       
    Knowledge Media Design Institute
    Main Office located at BA Room #: 7214

    Mathematics, Dept of
    Main Office located at BA Room #: 6290
    http://www.math.toronto.edu/

    Engineering Science, Division of
    Main Office located at BA Room #: 2110
    http://www.ecf.toronto.edu/apsc/engsci/


    kiwitobes.com » Blog Archive » Walmart Growth Video
    blog.kiwitobes.com/?p=51

    Walmart Growth Video

    March 20th, 2008 toby |

    The other day at work, I made this video showing the opening of Wal-mart retail locations over time. It’s pretty fun to watch how it starts very slowly with the first location in Arkansas in 1962 and then spreads into different regions over time.

    [Javascript required to view Flash movie, please turn it on and refresh this page]


    (you can download a high-resolution AVI version here)

    It actually is built entirely from data that’s in Freebase, including the map itself.

    Here’s how it works:

    Freebase has a topic for every zip code, along with it’s longitude and latitude. Here’s one example. One query pulls out all the ZIP codes along with their longitudes and latitudes. You can turn longitudes and latitudes into graphical coordinates with some simple transformations (which will vary based on the region you’re plotting and how big your image is) — here are the ones I used:

    x=(longitude+127)*16
    y=(50-latitude)*20

    If you plot all the ZIP codes using a library like PIL, you get a nice map with dots that roughly match population density, which has the advantage of looking a little bit like a night-time satellite photo of the United States.

    Freebase also contains a list of Wal-mart locations, along with their addresses and the year that they opened. Here’s an example. One query pulls all of these out of Freebase.

    To create the animation, I generated 30 images for each year starting with 1962. I spread all the Wal-marts that opened that year over the 30 frames. To show the appearance of a Wal-mart, all I had to do was plot a large white dot over the small yellow dot for the appropriate ZIP code. I turned the 1380 images into an animation using MEncoder.

    I’ve had a lot of suggestions for how to improve this, perhaps also showing ZIP code median income or overlay the spread of Starbucks at the same time. We’re trying to build a massive store of interconnected public data, so there are many many possibilities for visualizations. So, what would you guys like to see?

    Update: I’m getting a lot of traffic right now for this post, the site was down for a while, but seems to be working now. Those who like fun data analysis might also be interested in my craigslist w4m city analysis.


    You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

    TracOnUbuntu – The Trac Project – Trac
    trac.edgewall.org/wiki/TracOnUbuntu

    Trac on Ubuntu

    These instructions were written for a fresh install of Ubuntu. This documentation suggests performing custom install when installing Ubuntu to create a base system without an X server or other graphical niceties. These instructions, however, should work reasonably well if you already have Ubuntu installed or you have performed a full install.

    Breezy users: See comments below for some of the problems encountered.

    Dapper users: should work fine with the following instructions.

    Note: For an alternative Ubuntu experience, using apache and configuring for multiple projects, see TracUbuntuMultipleProjects

    Also see: https://help.ubuntu.com/community/UbuntuTracHowto

    Installation

    1. Install Software Packages

    To install Trac on your system, install the trac and libapache2-svn packages:

    sudo apt-get install trac apache2 libapache2-svn
    

    2. Create the Trac Environments Directory

    You'll need a directory for Trac's environments to live that should be writable by the default Apache user:

    sudo mkdir /var/lib/trac
    sudo chown www-data:www-data /var/lib/trac
    

    If you put your environment somewhere else, make sure to note that and use that location in the appropriate places in the next step.

    3. Setup Apache2

    Next, create a new Apache-2 virtualhost by saving the following as /etc/apache2/sites-available/trac :

    <VirtualHost *>
            ServerAdmin webmaster@localhost
            ServerName trac.example.com
            DocumentRoot /usr/share/trac/cgi-bin/
            <Directory /usr/share/trac/cgi-bin/>
                    Options Indexes FollowSymLinks MultiViews ExecCGI
                    AllowOverride All
                    Order allow,deny
                    allow from all
            </Directory>
            Alias /trac "/usr/share/trac/htdocs"
    
            <Location /trac.cgi>
                SetEnv TRAC_ENV "/var/lib/trac/YourProjectNameHere"
            </Location>
    
            DirectoryIndex trac.cgi
            ErrorLog /var/log/apache2/error.trac.log
            CustomLog /var/log/apache2/access.trac.log combined
    </VirtualHost>
    

    Note: If you get errors later that pertain to environment look at SetEnv TRAC_ENV. You can also use SetEnv TRAC_ENV_PARENT_DIR "/var/lib/trac" to host multiple projects.

    You also need to uncomment the AddHandler line in /etc/apache2/apache2.conf so that the Trac CGI program will be executed:

    # To use CGI scripts outside /cgi-bin/:
    #
    AddHandler cgi-script .cgi
    

    Now, disable the default virtualhost, enable the Trac virtualhost, and restart Apache2:

    sudo a2dissite default
    sudo a2ensite trac
    sudo  /etc/init.d/apache2 reload 
    

    If you are going to want to login, you're going to need authentication. I added the following to my virtual host file to get this to work:

            <Location "/trac.cgi/login">
                AuthType Basic
                AuthName "Trac"
                AuthUserFile /etc/apache2/dav_svn.passwd
                Require valid-user
            </Location>
    

    This will share the password with your subversion install. You'll also need to grant each user rights using trac-admin.

    Alternately, you can use htpasswd to create an htpasswd file, and point AuthUserFile? at that location.

    4. Creating Environments

    I installed my Subversion repository at /var/lib/svn/YourProjectNameHere. So I did a quick starting config of subversion with the following commands:

    sudo mkdir /var/lib/svn
    sudo mkdir /var/lib/svn/YourProjectNameHere
    sudo mkdir /tmp/YourProjectNameHere
    sudo mkdir /tmp/YourProjectNameHere/branches
    sudo mkdir /tmp/YourProjectNameHere/tags
    sudo mkdir /tmp/YourProjectNameHere/trunk
    sudo svnadmin create /var/lib/svn/YourProjectNameHere
    sudo svn import /tmp/YourProjectNameHere file:///var/lib/svn/YourProjectNameHere -m "initial import"
    sudo rm -rf /tmp/YourProjectNameHere
    

    Some permissions changes and an apache restart are now needed:

    sudo chown -R www-data /var/lib/svn/YourProjectNameHere
    sudo chown -R www-data /usr/share/trac
    sudo apache2 -k restart
    

    Test by web-browsing to http://servername/svn/YourProjectNameHere

    If you see a simple web page which says Revision 1: / and lists branches, tags, and trunk, your Subversion install is up and running!

    Here's what to do if you see 404 Not Found

    Check you Subversion installation, specifically /etc/apache2/mods-available/dav_svn.conf and make sure you really have a valid configuration. Still having problems see Ubuntu SVN documentation

    Now let's finish the Trac install (but don't go on to Trac install until you have the above working properly).

    I put my trac environment at /var/lib/trac/YourProjectNameHere. Of course you could use any other path or name - something a little more descriptive of your project would probably be a good idea. First I ran these commands:

    sudo mkdir /var/lib/trac
    sudo trac-admin /var/lib/trac/YourProjectNameHere initenv
    sudo chown -R www-data /var/lib/trac/YourProjectNameHere
    

    The "trac-admin" command shown above prompted me to enter:

    • the project name (YourProjectNameHere)
    • the path to svn repository (/var/lib/svn/YourProjectNameHere)
    • the path to the Trac templates directory (/usr/share/trac/templates)

    ... then it prints out a bunch of stuff. If there are no errors you should now be able to surf to your Trac site at http://servername/trac.cgi

    At the time I did my install, there was one glitch in the Ubuntu Universe Trac installer. It doesn't install the neo_cgi.so file needed in the python2.4 directory space. So when I surfed to my Trac site, I got the error ImportError: No module named neo_cgi. I was able to fix this by symlinking the python2.3 version like so:

    sudo ln -s /usr/lib/python2.3/site-packages/neo_cgi.so /usr/lib/python2.4/site-packages/neo_cgi.so
    

    Voila! Your Trac system & website should be up and running.

    1zx6ttt.jpg (GIF Image, 320x288 pixels)
    i29.tinypic.com/1zx6ttt.jpg
    A Mac OS X-style Dock In JavaScript
    www.safalra.com/web-design/javascript/mac-style-do...

    ac S -style ock n avaScript

    Apple’s Mac OS X operating system is renowned for its fluid graphical effects. One impressive feature is the dock’s ‘fish-eye’ effect, whereby icons expand and contract as the mouse moves over them. Achieving this effect in JavaScript is difficult, but the MacStyleDock function allows this feature to be implemented easily. An example is shown below (a larger demonstration is available on a separate page).

    Compatible browsers

    The code has been tested and works in the following browsers:

    • Firefox 1.5 on Mac OS X
    • Firefox 2 on Ubuntu Linux
    • Firefox 2 on Windows (slightly jerky due to event handlers being given a higher priority than intervals)
    • Internet Explorer 6
    • Internet Explorer 7
    • Konqueror 3.5 on Ubuntu Linux
    • Opera 9 on Windows
    • Safari 2 on Mac OS X

    Implementing the Mac-style Dock

    FileSizeDescription
    MacStyleDock.js6285 bytesFull version with comments
    MacStyleDock.compressed.js2632 bytesCompressed version

    Download one of the files listed above and upload it to your website. Link to it from your page with code such as:

    <script type="text/javascript" src="MacStyleDock.js"></script>
    

    The code for the dock is added to the document tree under an existing node, so create an element to contain with code such as:

    <div id="dock"></div>
    

    The dock can then be created as a new JavaScript object. Note that the dock’s document tree node must already exist when the constructor is called. This can be done either by including the JavaScript code below the node in the document source, or by calling the constructor when the document has loaded — one way to do this is by using the OnloadScheduler.

    The constructor takes five paramaters:

    node
    The node at which to create the Mac-style dock.
    imageDetails

    An array each of whose elements are object with three properties:

    name
    the basename of the image
    sizes
    an array of pizel sizes available
    extension
    the image extension
    onclick
    the function to call when the image is clicked

    Requested file names consist of the concatenation of the name property, one of the values of the size property, and the extension property.

    minimumSize
    The minimum size of icons in the dock.
    maximumSize
    The maximum size of icons in the dock.
    range
    The range of expansion, measured in icons. This need not be an integer.

    For example:

    <script type="text/javascript" >
      var dock = new MacStyleDock(
          document.getElementById('dock'),
          [
            {
              name:      'mac-icon-0-',
              extension: '.jpg',
              sizes:     [32,64],
              onclick:   function(){
                           alert('You clicked on the first icon');
                         }
            },
            {
              name:      'mac-icon-1-',
              extension: '.jpg',
              sizes:     [32,64],
              onclick:   function(){
                           alert('You clicked on the second icon');
                         }
            }
          ],
          32,
          64,
          2.5);
    </script>
    

    Multiple icon sizes should be supplied for operating systems such as Windows that scale images poorly. The function will scale down the next larger image from the size it requires.

    Further reading

    If you’re looking for a JavaScript book, one of the best is the 1000-page JavaScript: The Definitive Guide by David Flanagan, published by O’Reilly and now in its fifth edition. It covers all aspects of JavaScript and details the most common browser compatibility issues that you may encounter:

    This article was last edited on 20th February 2008. The author can be contacted using the form below.
    Your e-mail address:
    Your message: Enter your message
    Send message
    My solution planet earobinson, this lets me put any content I have with a rss feed onto my own personal planet its kinda what I’m up to everywhere and until ...
    iss_sts122_big.jpg (JPEG Image, 3032x2064 pixels) - Scaled (37%)
    apod.nasa.gov/apod/image/0803/iss_sts122_big.jpg
    YouTube - Evolution of Dance
    youtube.com/watch?v=dMH0bHeiRNg
    Evolution of Dance
    Fundrace 2008 Campaign Donations - Huffington Post
    fundrace.huffingtonpost.com/neighbors.php?g_lat=31...
    Your Account | February 28, 2008
    • Home
    • Politics
    • Media
    • Business
    • Entertainment
    • Living
    • More on Huffpost...     Politics         HuffPolitics         OffTheBus         Fundrace     Media         Eat The Press     Business     Entertainment     Living     All Blogs     All News     23/6
    • 23/6
    ADDRESS: ZIP:*  
    CITY:*
    LAST NAME:* FIRST NAME:  
    OCCUPATION: EMPLOYER:
    Imagery: © 2007 Huffington Post, Map data ©2008 LeadDog Consulting, Tele Atlas - Terms of Use
    Parties
    Candidates
    Obama
    Clinton
    McCain
    1 mi
    2 km
    Drag&Zoom
    Drag&Zoom Back
    loading new results... data refreshed to the right of map

    Welcome to FundRace 2008.

    Want to know if a celebrity is playing both sides of the fence? Whether that new guy you're seeing is actually a Republican or just dresses like one? If your boss maxed out at that fundraiser or got comped? Whether your neighbor's political involvement stops at that hideous lawn sign?

    FundRace makes it easy to search by name or address to see which presidential candidates your friends, family, co-workers, and neighbors are contributing to. Or you can see if your favorite celebrity is putting their money where their mouth is.

    FundRace gives you the technology to do what politicians and journalists have been doing for years: find out where the money's coming from, see who it's going to, and solve the mystery of why that crazy ex-roommate of yours is now the Ambassador to Turks and Caicos.


    Fundrace was originally created at Eyebeam.
    Donate to Eyebeam. Support non-profit art and technology

    All calculations are based on public records filed with the FEC of contributions by all individuals totaling more than $200 (and some totaling less than $200) to a single Republican or Democratic presidential campaign or national committee for the 2004 and 2008 election cycles.

    FundRace is updated according to the reporting schedule set by the FEC. Public contribution data is geocoded using public U.S. Census Bureau data. Dynamic maps are powered by Google Maps.

    Site map: State, Zipcode

    Close Window

    Send the link


    To:
    Separate emails with ,
    From:
    Send a copy to my email
    Message:
    Hi, I'd like to share a HuffingtonPost Fundrace Maps link with you. Link: <##link_here##>



    Grab the official FundRace widget!

    Wide:
    <script type='text/javascript' src='http://fundrace.huffingtonpost.com/widget/?w=widget.php'></script>
    Thin:
    <script type='text/javascript' src='http://fundrace.huffingtonpost.com/widget/?w=thin_widget.php'></script>

    See examples →

    Fundrace 2008 Campaign Donations - Huffington Post
    fundrace.huffingtonpost.com/neighbors.php?g_lat=31...
    Your Account | February 28, 2008
    • Home
    • Politics
    • Media
    • Business
    • Entertainment
    • Living
    • More on Huffpost...     Politics         HuffPolitics         OffTheBus         Fundrace     Media         Eat The Press     Business     Entertainment     Living     All Blogs     All News     23/6
    • 23/6
    ADDRESS: ZIP:*  
    CITY:*
    LAST NAME:* FIRST NAME:  
    OCCUPATION: EMPLOYER:
    Imagery: © 2007 Huffington Post, Map data ©2008 LeadDog Consulting, Tele Atlas - Terms of Use
    Parties
    Candidates
    Obama
    Clinton
    McCain
    1 mi
    2 km
    Drag&Zoom
    Drag&Zoom Back
    loading new results... data refreshed to the right of map

    Welcome to FundRace 2008.

    Want to know if a celebrity is playing both sides of the fence? Whether that new guy you're seeing is actually a Republican or just dresses like one? If your boss maxed out at that fundraiser or got comped? Whether your neighbor's political involvement stops at that hideous lawn sign?

    FundRace makes it easy to search by name or address to see which presidential candidates your friends, family, co-workers, and neighbors are contributing to. Or you can see if your favorite celebrity is putting their money where their mouth is.

    FundRace gives you the technology to do what politicians and journalists have been doing for years: find out where the money's coming from, see who it's going to, and solve the mystery of why that crazy ex-roommate of yours is now the Ambassador to Turks and Caicos.


    Fundrace was originally created at Eyebeam.
    Donate to Eyebeam. Support non-profit art and technology

    All calculations are based on public records filed with the FEC of contributions by all individuals totaling more than $200 (and some totaling less than $200) to a single Republican or Democratic presidential campaign or national committee for the 2004 and 2008 election cycles.

    FundRace is updated according to the reporting schedule set by the FEC. Public contribution data is geocoded using public U.S. Census Bureau data. Dynamic maps are powered by Google Maps.

    Site map: State, Zipcode

    Close Window

    Send the link


    To:
    Separate emails with ,
    From:
    Send a copy to my email
    Message:
    Hi, I'd like to share a HuffingtonPost Fundrace Maps link with you. Link: <##link_here##>



    Grab the official FundRace widget!

    Wide:
    <script type='text/javascript' src='http://fundrace.huffingtonpost.com/widget/?w=widget.php'></script>
    Thin:
    <script type='text/javascript' src='http://fundrace.huffingtonpost.com/widget/?w=thin_widget.php'></script>

    See examples →

    //Code based on page 46 of Interprocess Communications in Unix by John Shapley Gray #include <iostream> #include <unistd.h> using namespace std; extern char *optarg; extern int optind, opterr; int main(int argc, char *argv[]) { int c; static char optstring[] = "abs:"; opterr=0; while ((c=getopt(argc, argv, optstring)) != -1) { switch(c) { case 'a': cout << "Found option a" << endl; break; case 'b': cout << "Found option b" << endl; break; case 's': cout << "Found option s with an argument of "; cout << optarg << endl; break; case '?': cout << "Found an option that was not in optstring"; cout << endl; } } if (optind < argc) cout << "Left off at " << argv[optind] << endl; return 0; }
    | Threat Chaos | ZDNet.com
    blogs.zdnet.com/threatchaos/

    The telecom company that carries most of Pakistan’s traffic, PCCW, has found it necessary to shut Pakistan off from the Internet while they filter out the malicious routes that a Pakistani ISP, PieNet, announced earlier today. Evidently PieNet took this step to enforce a decree from the Pakistani government that ISP’s must block access to YouTube because it was a source of blasphemous content.

    I cannot let the irony pass with out commenting. A religious state, Pakistan, identifies a content provider, YouTube, as the source of blasphemous, seditious content and orders, King Canute style, that the Internet tides be stopped. A zealous ISP ignorantly decides the best way to comply with the decree is to re-route all of YouTube’s IP addresses to whatever site they thought was more appropriate. The first repercussion was that YouTube disappeared from the Internet for almost an hour. I suspect the second repercussion was that Pakistan’s Internet access crawled to a halt as all of a sudden they were handling IP requests for one of the busiest sites in the world. As of this writing YouTube has announced more granular routes so that at least in the US they supercede the routes announced by PieNet. The rest of the world is still struggling. So, while working on a fix that will filter out the spurious route announcements, PCCW has found it necessary to shut down Pakistan’s Internet access. The leadership of Pakistan just created a massive Denial of Service on their own country.

    I could say: “be careful what you wish for” to those elements that object to free and open access to information and expression of ideas. But to put it in terms they might understand better: Do not anger the Internet gods or you will suffer their wrath!

    Update:  This blog points out that the “blasphemous content” claim may be a red herring. There may be more political motivations behind it.

    Creative Commons Attribution-Noncommercial-Share Alike 2.5 Canada
    creativecommons.org/licenses/by-nc-sa/2.5/ca/
    Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar licence to this one.
    212269main_s122e008104_hires_full.jpg (JPEG Image, 3032x2064 pixels) - Scaled (37%)
    www.nasa.gov/images/content/212269main_s122e008104...
    Labels: pic
    800379272_de0817d41a.jpg (JPEG Image, 500x337 pixels)
    farm2.static.flickr.com/1037/800379272_de0817d41a....
    Labels: pic
    b8847094c07b3dccc1bb97ae230c6a4b010e07aa.jpg (JPEG Image, 308x458 pixels)
    darkstr77.mirror.waffleimages.com/files/b8/b884709...
    Labels: pic
    eef37b6298df7d4d8b2f88dec009de7994b6e51a.jpg (JPEG Image, 300x450 pixels)
    j4cbo.mirror.waffleimages.com/files/ee/eef37b6298d...
    Labels: pic
    6620051829149vl.jpg (JPEG Image, 499x653 pixels)
    i78.photobucket.com/albums/j111/SupremeWu/66200518...
    Labels: pic
    6620051829149vl.jpg (JPEG Image, 499x653 pixels)
    i78.photobucket.com/albums/j111/SupremeWu/66200518...
    Labels: pic
    cd3aae462f669ddee9e5b6f0bc1905c64e94d5a4.jpg (JPEG Image, 866x593 pixels)
    wwwp.mirror.waffleimages.com/files/cd/cd3aae462f66...
    Labels: pic
    8111a6ff378b462a24b5ee94877e7de5f4f76178.jpg (JPEG Image, 1024x664 pixels)
    legalcondom.mirror.waffleimages.com/files/81/8111a...
    Labels: pic
    attachment.php (JPEG Image, 640x443 pixels)
    forums.somethingawful.com/attachment.php?s=&postid...
    Labels: pic
    Enceladus_PIA06254_full.jpg (JPEG Image, 3237x3812 pixels) - Scaled (20%)
    solarsystem.nasa.gov/multimedia/gallery/Enceladus_...
    Labels: pic
    2b83c6e37f4780eddcf6d535a12b5e7b12caa523.jpg (JPEG Image, 800x532 pixels)
    logan-1.mirror.waffleimages.com/files/2b/2b83c6e37...
    Real pictures that look like photoshops - The Something Awful Forums
    forums.somethingawful.com/showthread.php?threadid=...
    Salar_uyuni_01.jpg (JPEG Image, 1600x1200 pixels) - Scaled (65%)
    upload.wikimedia.org/wikipedia/en/0/0e/Salar_uyuni...
    Amazon Web Services Developer Connection : Massive (500) Internal Server ...
    developer.amazonwebservices.com/connect/thread.jsp...
    Re: Massive (500) Internal Server Error.outage started 35 minutes ago
    Posted: Feb 15, 2008 8:56 PM PST   in response to: Michael
      Reply

    Here’s some additional detail about the problem we experienced earlier today.

    Early this morning, at 3:30am PST, we started seeing elevated levels of authenticated requests from multiple users in one of our locations.  While we carefully monitor our overall request volumes and these remained within normal ranges, we had not been monitoring the proportion of authenticated requests.  Importantly, these cryptographic requests consume more resources per call than other request types.

    Shortly before 4:00am PST, we began to see several other users significantly increase their volume of authenticated calls.  The last of these pushed the authentication service over its maximum capacity before we could complete putting new capacity in place.  In addition to processing authenticated requests, the authentication service also performs account validation on every request Amazon S3 handles.  This caused Amazon S3 to be unable to process any requests in that location, beginning at 4:31am PST.  By 6:48am PST, we had moved enough capacity online to resolve the issue.

    As we said earlier today, though we're proud of our uptime track record over the past two years with this service, any amount of downtime is unacceptable.  As part of the post mortem for this event, we have identified a set of short-term actions as well as longer term improvements.  We are taking immediate action on the following:  (a) improving our monitoring of the proportion of authenticated requests; (b) further increasing our authentication service capacity; and (c) adding additional defensive measures around the authenticated calls.  Additionally, we’ve begun work on a service health dashboard, and expect to release that shortly.

    Sincerely,
    The Amazon Web Services Team
    Linux kernel 2.6 local root exploit! It works everywhere! - Ubuntu Forums
    ubuntuforums.org/showthread.php?t=693387
    Linux kernel 2.6 local root exploit! It works everywhere!

    http://it.slashdot.org/it/08/02/10/2011257.shtml

    xoai@MacBuntu:~$ gcc -o exploit exploit.c
    xoai@MacBuntu:~$ ./exploit
    -----------------------------------
    Linux vmsplice Local Root Exploit
    By qaaz
    -----------------------------------
    [+] mmap: 0x0 .. 0x1000
    [+] page: 0x0
    [+] page: 0x20
    [+] mmap: 0x4000 .. 0x5000
    [+] page: 0x4000
    [+] page: 0x4020
    [+] mmap: 0x1000 .. 0x2000
    [+] page: 0x1000
    [+] mmap: 0xb7e56000 .. 0xb7e88000
    [+] root
    root@MacBuntu:~#

    Only 2 minutes to get root. I am sure thousands of system out there have this bug and I have to say out loud: holy sh!t! it works.

    Quick (not so quick) fix: upgrade kernel to 2.6.25-rc1
    __________________
    It is hard to tell the world we live in is either a reality or a dream!
    If this shows up it has started working 
    Labels: test
    just incase the test works2 
    Labels: test
     just incase the test works
    Labels: test
    I am now pipeing stdou and std err 
    Labels: test
    another suer note
    Labels: test
    another test note
     
    Labels: test
    HIS AND HERS KEY HOLDERS
    The key to a peaceful home!

    His & Hers key holders. These chrome plated key holders add a fun element to the home whilst providing a convenient place to store your keys - ensuring you'll never have to spend hours frantically looking for them again!

    The contemporary design of the "his & hers" key holder incorporates either a male or female form, which is raised up against its background forming an interesting design aspect and clearly identifying who's keys are whose!

    The key holder is supplied with its own unique key, which is then attached to your own set of keys. Never lose your keys again!

    Measures: 4.25" tall x 3" wide. Your choice of "His" or "Hers"

    test 2 
    this is a test for planet.earobinson.org 
    Linux Socket Programming In C++ LG #74
    linuxgazette.net/issue74/tougher.html

    "Linux Gazette...making Linux just a little more fun!"


    Linux Socket Programming In C++

    By Rob Tougher


    Contents

    1. Introduction
    2. Overview of Client-Server Communications
    3. Implementing a Simple Server and Client
    3.1 Server - establishing a listening socket
    3.2 Client - connecting to the server
    3.3 Server - Accepting the client's connection attempt
    3.4 Client and Server - sending and receiving data
    4 Compiling and Testing Our Client and Server
    4.1 File list
    4.2 Compile and test
    5. Conclusion

    1. Introduction

    Sockets are a mechanism for exchanging data between processes. These processes can either be on the same machine, or on different machines connected via a network. Once a socket connection is established, data can be sent in both directions until one of the endpoints closes the connection.

    I needed to use sockets for a project I was working on, so I developed and refined a few C++ classes to encapsulate the raw socket API calls. Generally, the application requesting the data is called the client, and the application servicing the request is called the server. I created two primary classes, ClientSocket and ServerSocket, that the client and server could use to exchange data.

    The goal of this article is to teach you how to use the ClientSocket and ServerSocket classes in your own applications. We will first briefly discuss client-server communications, and then we will develop a simple example server and client that utilize these two classes.

    2. Overview of Client-Server Communications

    Before we go jumping into code, we should briefly go over the set of steps in a typical client-server connection. The following table outlines these steps:

    Server Client
    1. Establish a listening socket and wait for connections from clients.  
      2. Create a client socket and attempt to connect to server.
    3. Accept the client's connection attempt.  
    4. Send and receive data. 4. Send and receive data.
    5. Close the connection. 5. Close the connection.

    That's basically it. First, the server creates a listening socket, and waits for connection attempts from clients. The client creates a socket on its side, and attempts to connect with the server. The server then accepts the connection, and data exchange can begin. Once all data has been passed through the socket connection, either endpoint can close the connection.

    3. Implementing a Simple Server and Client

    Now its time to dig into the code. In the following section we will create both a client and a server that perform all of the steps outlined above in the overview. We will implement these operations in the order they typically happen - i.e. first we'll create the server portion that listens to the socket, next we'll create the client portion that connects to the server, and so on. All of the code in this section can be found in simple_server_main.cpp and simple_client_main.cpp.

    If you would rather just examine and experiment with the source code yourself, jump to this section. It lists the files in the project, and discusses how to compile and test them.

    3.1 Server - establishing a listening socket

    The first thing we need to do is create a simple server that listens for incoming requests from clients. Here is the code required to establish a server socket:

    listing 1 : creating a server socket ( part of simple_server_main.cpp )
    #include "ServerSocket.h"
    #include "SocketException.h"
    #include <string>
    
    int main ( int argc, int argv[] )
    {
      try
        {
          // Create the server socket
          ServerSocket server ( 30000 );
    
          // rest of code -
          // accept connection, handle request, etc...
    
        }
      catch ( SocketException& e )
        {
          std::cout << "Exception was caught:" << e.description() << "\nExiting.\n";
        }
    
      return 0;
    }
    
    
    

    That's all there is to it. The constructor for the ServerSocket class calls the necessary socket APIs to set up the listener socket. It hides the details from you, so all you have to do is create an instance of this class to begin listening on a local port.

    Notice the try/catch block. The ServerSocket and ClientSocket classes use the exception-handling feature of C++. If a class method fails for any reason, it throws an exception of type SocketException, which is defined in SocketException.h. Not handling this exception results in program termination, so it is best to handle it. You can get the text of the error by calling SocketException's description() method as shown above.

    3.2 Client - connecting to the server

    The second step in a typical client-server connection is the client's responsibility - to attempt to connect to the server. This code is similar to the server code you just saw:

    listing 2 : creating a client socket ( part of simple_client_main.cpp )
    #include "ClientSocket.h"
    #include "SocketException.h"
    #include <iostream>
    #include <string>
    
    int main ( int argc, int argv[] )
    {
      try
        {
          // Create the client socket
          ClientSocket client_socket ( "localhost", 30000 );
    
          // rest of code -
          // send request, retrieve reply, etc...
    
        }
      catch ( SocketException& e )
        {
          std::cout << "Exception was caught:" << e.description() << "\n";
        }
    
      return 0;
    }
    
    
    

    By simply creating an instance of the ClientSocket class, you create a linux socket, and connect it to the host and port you pass to the constructor. Like the ServerSocket class, if the constructor fails for any reason, an exception is thrown.

    3.3 Server - accepting the client's connection attempt

    The next step of the client-server connection occurs within the server. It is the responsibility of the server to accept the client's connection attempt, which opens up a channel of communication between the two socket endpoints.

    We have to add this functionality to our simple server. Here is the updated version:

    listing 3 : accepting a client connection ( part of simple_server_main.cpp )
    #include "ServerSocket.h"
    #include "SocketException.h"
    #include <string>
    
    int main ( int argc, int argv[] )
    {
      try
        {
          // Create the socket
          ServerSocket server ( 30000 );
    
          while ( true )
    	{
    	  ServerSocket new_sock;
    	  server.accept ( new_sock );
    
    	  // rest of code -
    	  // read request, send reply, etc...
    
    	}
        }
      catch ( SocketException& e )
        {
          std::cout << "Exception was caught:" << e.description() << "\nExiting.\n";
        }
    
      return 0;
    }
    
    

    Accepting a connection just requires a call to the accept method. This method accepts the connection attempt, and fills new_sock with the socket information about the connection. We'll see how new_sock is used in the next section.

    3.4 Client and Server - sending and receiving data

    Now that the server has accepted the client's connection request, it is time to send data back and forth over the socket connection.

    An advanced feature of C++ is the ability to overload operators - or simply, to make an operator perform a certain operation. In the ClientSocket and ServerSocket classes I overloaded the << and >> operators, so that when used, they wrote data to and read data from the socket. Here is the updated version of the simple server:

    listing 4 : a simple implementation of a server ( simple_server_main.cpp )
    #include "ServerSocket.h"
    #include "SocketException.h"
    #include <string>
    
    int main ( int argc, int argv[] )
    {
      try
        {
          // Create the socket
          ServerSocket server ( 30000 );
    
          while ( true )
    	{
    
    	  ServerSocket new_sock;
    	  server.accept ( new_sock );
    
    	  try
    	    {
    	      while ( true )
    		{
    		  std::string data;
    		  new_sock >> data;
    		  new_sock << data;
    		}
    	    }
    	  catch ( SocketException& ) {}
    
    	}
        }
      catch ( SocketException& e )
        {
          std::cout << "Exception was caught:" << e.description() << "\nExiting.\n";
        }
    
      return 0;
    }
    
    

    The new_sock variable contains all of our socket information, so we use it to exchange data with the client. The line "new_sock >> data;" should be read as "read data from new_sock, and place that data in our string variable 'data'." Similarly, the next line sends the data in 'data' back through the socket to the client.

    If you're paying attention, you'll notice that what we've created here is an echo server. Every piece of data that gets sent from the client to the server gets sent back to the client as is. We can write the client so that it sends a piece of data, and then prints out the server's response:

    listing 5 : a simple implementation of a client ( simple_client_main.cpp )
    #include "ClientSocket.h"
    #include "SocketException.h"
    #include <iostream>
    #include <string>
    
    int main ( int argc, int argv[] )
    {
      try
        {
    
          ClientSocket client_socket ( "localhost", 30000 );
    
          std::string reply;
          try
    	{
    	  client_socket << "Test message.";
    	  client_socket >> reply;
    	}
          catch ( SocketException& ) {}
    
          std::cout << "We received this response from the server:\n\"" << reply << "\"\n";;
    
        }
      catch ( SocketException& e )
        {
          std::cout << "Exception was caught:" << e.description() << "\n";
        }
    
      return 0;
    }
    

    We send the string "Test Message." to the server, read the response from the server, and print out the response to std output.

    4. Compiling and Testing Our Client And Server

    Now that we've gone over the basic usage of the ClientSocket and ServerSocket classes, we can build the whole project and test it.

    4.1 File list

    The following files make up our example:

    Miscellaneous:
    Makefile - the Makefile for this project
    Socket.h, Socket.cpp - the Socket class, which implements the raw socket API calls.
    SocketException.h - the SocketException class
    Server:
    simple_server_main.cpp - main file
    ServerSocket.h, ServerSocket.cpp - the ServerSocket class
    Client:
    simple_client_main.cpp - main file
    ClientSocket.h, ClientSocket.cpp - the ClientSocket class

    4.2 Compile and Test

    Compiling is simple. First save all of the project files into one subdirectory, then type the following at your command prompt:

    prompt$ cd directory_you_just_created
    prompt$ make
    
    

    This will compile all of the files in the project, and create the simple_server and simple_client output files. To test these two output files, run the server in one command prompt, and then run the client in another command prompt:

    first prompt:
    prompt$ ./simple_server
    running....
    
    
    
    second prompt:
    prompt$ ./simple_client
    We received this response from the server:
    "Test message."
    prompt$
    

    The client will send data to the server, read the response, and print out the response to std output as shown above. You can run the client as many times as you want - the server will respond to each request.

    5. Conclusion

    Sockets are a simple and efficient way to send data between processes. In this article we've gone over socket communications, and developed an example server and client. You should now be able to add socket communications to your applications!

    Rob Tougher

    Rob is a C++ software engineer in the NYC area. When not coding on his favorite platform, you can find Rob strolling on the beach with his girlfriend, Nicole, and their dog, Halley.


    Copyright © 2002, Rob Tougher.
    Copying license http://www.linuxgazette.net/copying.html
    Published in Issue 74 of Linux Gazette, January 2002

    Let's Watch Documentaries! - The Something Awful Forums
    forums.somethingawful.com/showthread.php?threadid=...
    This Film is Not Yet Rated
    Google Video, Wikipedia
    A fairly critical documentary on the MPAA ratings system. The film outs several of the, formerly anonymous, raters showing them to not fall within the stated guidelines that the raters are supposed to be, as well as various filmmakers who discuss their opinions on how their film was rated. The film talks about the arbitrary breakdown between the NC-17 and R ratings.
    Let's Watch Documentaries! - The Something Awful Forums
    forums.somethingawful.com/showthread.php?threadid=...
    Jey
    Oct 25, 2004



    The Half-Ton Man
    http://video.google.com/videoplay?d...73171&hl=en

    quote:

    Patrick Deuel is the world's heaviest man - almost 1100 pounds. This documentary opens with paramedics removing a wall of his house in Valentine, Nebraska and transporting him six hours to a hospital where he spent months trying to lose weight to qualify for a gastric bypass operation. This documentary moves among (primarily) Patrick and two others who are morbidly obese and their loved ones, neighbors and doctors. It examines how they got that way, what made them that way and how they have succeeded and failed in their struggles to change.

    Patrick Deuel is the male version of MissJackie. I like how people blame Leptin. Leptin doesn't make you sit on your bed and not move for seven years. Shit, some of these people are over 7' wide.

    The Boy With The Incredible Brain
    http://video.google.com/videoplay?d...196365903075662

    quote:

    This is the breathtaking story of Daniel Tammet. A twenty-something with extraordinary mental abilities, Daniel is one of the world’s few ... all » savants. He can do calculations to 100 decimal places in his head, and learn a language in a week. This documentary follows Daniel as he travels to America to meet the scientists who are convinced he may hold the key to unlocking similar abilities in everyone. He also meets the world’s most famous savant, the man who inspired Dustin Hoffman’s character in the Oscar winning film ‘Rain Man’. (2005)

    This kid is bad ass -- he learns enough Icelandic in one week to have a suitable listening comprehension and a large enough vocabulary to have a conversation on live television. I like how people become so eager to pin him with autism.

    Dangerous Knowledge
    http://video.google.com/videoplay?d...877302082311448

    quote:

    In this one-off documentary, David Malone looks at four brilliant mathematicians - Georg Cantor, Ludwig Boltzmann, ... all » Kurt Gödel and Alan Turing - whose genius has profoundly affected us, but which tragically drove them insane and eventually led to them all committing suicide.

    Gotta love Google Video and the BBC.

    If you have any links to kick ass documentaries, post away. Feel free to relate material or have a dis
    gpw-20050129-NASA-ISS016-E-006333-Earth-from-space-blue-water-white-clouds-Space-Shuttle-Discovery-S
    chamorrobible.org/images/photos/gpw-20050129-NASA-...
     
    h
     
    Life & Computing » Blog Archive » OS 161 on ubuntu 7.10 Gusty Gibbon
    www.rusticgeek.net/logbook/2007/10/17/os-161-on-ub...

    One line description : installs like a dream

    here is how you can set it up on your machine.

    Binutils for MIPS os161-binutils.tar.gz [13MB]

    MIPS Cross-Compiler os161-gcc.tar.gz [14MB]

    GDB for Use with OS/161 os161-gdb.tar.gz [16MB]

    sys/161 sys161.tar.gz 0.1 2

    OS/161 os161.tar.gz 0.2 3

    Step 1: Install the Binary Utilities (Binutils)

    untar tar -xzf os161-binutils.tar.gz
    cd cs161-binutils-1.4
    build : ./toolbuild.sh
    you will have a new directory : $HOME/cs350/tools[compiled utilites] and $HOME/cs350/bin[symbolic links].add to bash : export PATH=$HOME/cs350/bin:$PATH

    Step 2: Install the GCC MIPS Cross-Compiler

    untar: tar -xzf os161-gcc.tar.gz
    cd cs161-gcc-1.4
    Build : ./toolbuild.sh

    Step 3: Install ncurses-dev

    apt-get install ncurses-dev

    Step 4: Install GDB

    untar: tar -xzf os161-gdb.tar.gz
    cd cs161-gdb-1.4
    Build: ./toolbuild.sh

    Step 5: Install the sys/161 Simulator

    untar tar -xzf sys161.tar.gz
    cd sys161-1.13
    ./configure –installdir=${HOME}/cs350/bin –docdir=${HOME}/cs350/man mipseb
    make
    make install

    Step 6: Install OS/161

    untar tar -xzf os161.tar.gz
    cd $HOME/os161-1.11
    ./configure --ostree=$HOME/cs350/root –toolprefix=cs350-
    cd kern/conf
    ./config ASST0
    cd ../compile/ASST0
    make depend
    make
    make install

    Finally, build the OS/161 user-level utilities:
    cd $HOME/os161-1.11
    make

    running OS161:
    cd $HOME/cs350/root
    cp ../bin/sys161.conf.sample sys161.conf
    sys161 kernel

    Thilina Gunarathne: Installing CS161 (OS161, SYS161) on my Ubuntu Gutsy Alpha Laptop
    thilinag.blogspot.com/2007/09/installing-cs161-os1...

    My current Operating Systems course requires us to use the OS161,SYS161,CS161-gcc,CS161-gdb bundle for the assignments. I was able to install the above things in my laptop which is running Ubuntu Gutsy Alpha (Tribe5) after going through few bumpers. Following are the problems I faced and the solutions I used (mostly found from WWW) to overcome them. Hope those will help somebody in the future.

    • Download the distros from ftp://ftp.eecs.harvard.edu/pub/os161/toolchain/. Sometimes you may find it easier to use the guide and the distro's available in Waterloo Uni site.
    • I came across the first bumper when building the binutils.
      • Error > crt1.o: No such file: No such file or directory
      • Solution install libc6-dev
        • On Debian/Ubuntu
          #sudo apt-get install libc6-dev
    • Next one occurred was when compiling cs161-gcc
      • Error > invalid lvalue in increment
      • cs161-gcc requires gcc-3.4 or compatible for compiling.
        • On Debian/Ubuntu
          #sudo apt-get install gcc-3.4
        • Before running the toolbuild.sh
          #export CC=gcc-3.4
    • Following error was thrown when building the cs161-gdb.
      • Error > no termcap library found
      • Solution is to install ncurses-dev.
        • On Debian/Ubuntu
          #sudo apt-get install libncurses-dev
    • I also came up with another compiler error with the sys161 downloaded from Harvard site. But downloading the sys161.tar.gz from Waterloo solved it.
    If you are using bash shell ,make sure to add the following to the PATH using the .bashrc in your home directory.
    • /home/<you>/cs161/bin:/home/<you>/cs161/root:/home/<you>/cs161/utils

    1 comments:

    1. Graham said... 5:21 AM

      They helped me. Thanks alot!
      I am a CS student as University of Waterloo and setting OS161 up on my kubuntu system had proved difficult. Then I stumbled upon this blog entry and got it to work.
      Thank again
      Graham  

    Post a Comment

    Subscribe to: Post Comments (Atom)

    Blog Archive

    Computer Science Community - unable to install the toolchain
    csc.cdf.toronto.edu/bb/YaBB.pl?num=1190136580
    Hey c5shenha,
     
    This may be of interest to you if you are trying to setup OS161 on Ubuntu (a linux distribution) Version 6.10+.
     
    http://thilinag.blogspot.com/2007/09/installing-cs161-os161-sys161-on-my.html
     
    It answered a lot of the problems regarding the installation of OS161 as well as providing the solutions.
     
    For the problem above, you are missing some library files (libc6-dev).  You simply have to install them.
    The command line to do so: sudo apt-get install libc6-dev
     
    Hope this helps.  
    You could try installing the nautilus-script-collection-svn package. After it is installed, you need to run nautilus-script-manager (in a terminal)
    Code:
    nautilus-script-manager enable Subversion
    It's not as good as tortoise, but it's usable.
    OLPC News: Are You a Cool "First Day" G1G1 Donor Too?
    www.olpcnews.com/sales_talk/g1g1/olpc_first_day_do...

    Are You a Cool "First Day" G1G1 Donor Too?

    Posted on November 28, 2007 by Wayan Vota in Sales Talk: G1G1, Countries: USA, Laptops: XO-1

    Are you this OLPC G1G1 cool? Did you just get a "first day" donor email from One Laptop per Child that says:
    Thanks to your early action, your XO laptop is scheduled to be delivered between December 14 and December 24. Our "first day" donors are our highest priority and we are making every effort to deliver your XO laptop(s) as soon as possible. We will send you an update upon shipment.
    If you did, give a shout out in the comments below with your order date. Let's see who is going to be the first kids on their block to get an OLPC XO laptop.

    CANADA UPDATE: If you are a Canadian G1G1 participant but didn't get a FDD email, a commenter suggests you try calling OLPC G1G1 toll free at 1-877-705-2786 to confirm that your online PayPal payment has been received. A quick call to OLPC's donation line can get you a confirmation number and assurance of December 14-24 delivery.

    FRAPPER MAP UPDATE: Thanks to Joe we now have a OLPC Community Frapper map

    USA XO SHIPPING UPDATE If you are a G1G1 particpant in the USA, here's your shipping schedule. Sorry Canada.

    The edges can be represented in Prolog as facts:

    edge(1,2).
    edge(1,4).
    edge(1,3).
    edge(2,3).
    edge(2,5).
    edge(3,4).
    edge(3,5).
    edge(4,5).
    

    To represent the fact that the edges are bi-directional we could either add eight more 'edge' clauses (edge(2,1),etc.) or we could try a rule like:

     (*)      edge(X,Y) :- edge(Y,X).
    

    This is not a good idea, however. To see why it is not a good idea, try the following goal.

    ?- edge(5,1).
    

    Notice that the rule (*) will be tried over and over in an infinite loop, so the goal will not terminate. Try it! A better way to handle this is to use a rule such as the following.

    connected(X,Y) :- edge(X,Y) ; edge(Y,X).
    

    Note the use of disjunction ';' in this rule. This rule could have been written as two rules:

    connected(X,Y) :- edge(X,Y).
    connected(X,Y) :- edge(Y,X).
    

    We wish to develop a Prolog definition which generates paths between any two nodes of the graph. More specifically, we require the following (kind of) behavior for the predicate 'paths'.

    ?- path(1,5,P).
    P = [1,2,5] ;
    P = [1,2,3,5] ;
    P = [1,2,3,4,5] ;
    P = [1,4,5] ;
    P = [1,4,3,5] ;
    P = [1,4,3,2,5] ;
    P = [1,3,5] ;
    P = [1,3,4,5] ;
    P = [1,3,2,5] ;
    no
    

    The paths are represented by the list of nodes through which one must travel to get from node 1 to node 5. Here is a definition for paths:

    path(A,B,Path) :-
           travel(A,B,[A],Q), 
           reverse(Q,Path).
    
    travel(A,B,P,[B|P]) :- 
           connected(A,B).
    travel(A,B,Visited,Path) :-
           connected(A,C),           
           C \== B,
           \+member(C,Visited),
           travel(C,B,[C|Visited],Path).  
    Installing Vista Fonts in Ubuntu « Ubuntu Blog
    ubuntu.wordpress.com/2007/09/16/installing-vista-f...

    Getting them installed in Ubuntu is a breeze, thanks to a script I found.
    To install the Vista ClearType fonts in Ubuntu, you need to install cabextract first. Cabextract is a utility found in the universe repository, so before you run the following command, make sure you have universe enabled in your repository list. Once this is done, install cabextract using:
    $sudo apt-get install cabextract

    Then, once that is done, use this script to install the Vista fonts. Create a file called “vista-fonts-installer.sh” in your home (~) directory.
    Then open up a text editor and copy and paste the script into that file.
    Do a chmod a+x ~/vista-fonts-installer.sh to make the file/script executable.
    Then run the script using:
    $ ~/vista-fonts-installer.sh

    The script downloads the Powerpoint Viewer installer from microsoft.com, and then extracts the Vista cleartype fonts using cabextract. These fonts are then installed in the ~/.fonts directory.

    Please remember that the ClearType Vista fonts are not free as in they are not GPL-ed or made available under a re-distributable license. Since you are downloading the fonts from the MS website, and since you might already have a Windows XP/Vista license, this is not a crime, but consider yourself warned against the perils of supporting closed systems

    Update::

    1. Looks like the use of these fonts are restricted to only Microsoft Windows/Vista operating systems according to the terms of the license. I am sorry, but you’ll be installing them at your own risk.
    2. Also, please make sure you use the bash shell, or change the first line of the code to #!/bin/bash
    3. In retrospect, this was a bad post - I think we’re better off not using stuff folks don’t want us to use - let’s use the better, freer, easier to install fonts.
    Calibri - Wikipedia, the free encyclopedia
    en.wikipedia.org/wiki/Calibri

    Calibri

    From Wikipedia, the free encyclopedia

    Jump to: navigation, search
    Typeface Calibri
    Category Sans-serif
    Designer(s) Lucas de Groot
    Foundry Microsoft
    Sample
    An example of Calibri Regular, Bold and Italic

    Calibri is a humanist sans-serif typeface family, best known as the new default typeface for the Microsoft Office 2007 suite of applications. It replaces the previous defaults Times New Roman (for Microsoft Word) and Arial (for PowerPoint, Excel and Outlook).

    Calibri is one of six new western (Latin, Greek and Cyrillic) ClearType Collection typefaces that come with Microsoft Windows Vista and is the first sans-serif type to be designated the default face for the word processing application Microsoft Office Word. Earlier releases of Microsoft Word have consistently used Times New Roman as the default typeface.

    Calibri was designed by Lucas de Groot for Microsoft to take advantage of Microsoft's ClearType rendering technology. The typeface won an award in the Type System category at the Type Directors Club's Type Design Competition in 2005. It includes characters from Latin, Latin extended, Greek, and Cyrillic scripts.

    In a survey conducted by researchers at Wichita State University, Calibri was the most popular font for e-mail, instant messaging and PowerPoint presentations. It also ranked highly for use in website text. The survey asked participants to rate images of sample text in various fonts.[1]

    hughsient: Flipping angry with Ubuntu
    hughsient.livejournal.com/46484.html
    Flipping angry with Ubuntu
    Ubuntu maintainers - why do you fix important bugs in gnome-power-manager and then don't even bother sending me or the mailing list a two minute email mentioning it? Have I ever rejected a patch? Do you guys enjoy patching stuff in private without sharing? I know.... You are really busy before releases.... blaaa blaa blaa. Sorry - I've heard that excuse once too many times.

    Seriously, I've ranted about this before. After reading this blog post I figured "I wonder how they are patching gnome-power-manager now" and checked out the link to gnome-power-manager.

    Guys, what are you doing? This is not a way to make upstream maintainers happy, and is basically a really bad way to support the Linux ecosystem long term. It makes me really angry when Ubuntu sits pretty and goes with a stance they just can't be bothered with (or have time for) upstream development.

    Consequently, some of the bugs that were fixed in the latest release of Ubuntu didn't get into 2.20.1 and so all the other distros have these bugs. This is yet another reason not to recommend Ubuntu to my friends and relatives and shows how little things have really changed. Sorry to be so negative but I'm really ticked off.

    EDIT: Okay, maybe this was a bit harsh, it appears the problems were that gnome-power-manager has no maintainer in ubuntu, and hence patches were not getting through. Things look a bit more positive now.


    Ubuntu: Just how popular is it? - Starry Hope Productions
    www.starryhope.com/linux/ubuntu/2007/ubuntu-just-h...

    starry hope productions

    A blog covering technology, Linux, Macs, Ruby on Rails, and other stuff.

    Subscribe to Starry Hope

    Ubuntu: Just how popular is it?

    November 3rd, 2007

    There is no doubt that Ubuntu’s popularity has grown dramatically over the past few years, but just how popular is Ubuntu? How many people have ever heard of Ubuntu? How many people visit the Ubuntu site each month? How many people have tried Ubuntu, and more importantly, how many people are actually using it?

    According to Canonical’s official press release for Gutsy Gibbon, Ubuntu has a “strong and growing user base of over 6 million people.” Where Canonical got this number is not clear, and they have provided no evidence to back up this claim. Nobody really knows how many people are using Ubuntu, but we found some interesting statistics online that show Ubuntu’s popularity is growing. From these statistics, it looks like Ubuntu has become far more popular than any other Linux distribution.

    Note: this article is in no way a scientific study of Ubuntu’s popularity, it is just a collection of interesting stats from around the net. Have fun with it!

    So, where can we look online to judge Ubuntu’s popularity?

    1. DistroWatch.com

    Traditionally, people have turned to DistroWatch.com’s ranking of different versions of Linux to judge a distro’s popularity. This is simply a ranking of the average number of hits per day that each distro’s page gets on the DistroWatch.com site. This ranking system is obviously not a very accurate representation of a Linux distro’s popularity, but it is the generally accepted by the community as an indication of what distros are most popular. Ubuntu has been at the top of this list for some time, and only in the last six months has been surpassed by PCLinuxOS.

    DistroWatch.com’s most popular linux distributions for the past 6 months

    1. PCLinuxOS
    2. Ubuntu
    3. openSUSE
    4. Fedora
    5. Sabayon
    6. Mint
    7. Debian
    8. Mandriva
    9. MEPIS
    10. Damn Small

    Does this mean that PCLinuxOS is now more popular that Ubuntu? As the following stats show, this is hardly the case.

    2. Website popularity

    There are several companies that specialize in ranking websites. None of these sites are perfect and many people discount them all together. We thought it would be interesting to see how some of the top Linux distribution websites stack up in these net rankings. Here are current rankings for the top 10 distros (from the Distrowatch list). When a distro has a corporate sponsor, we’ve included their website ranking in parentheses.

    Netcraft Rankings

    1. www.ubuntu.com: 1,649     (www.canonical.com: 88,013)
    2. www.debian.org: 1,719
    3. fedoraproject.org: 4,314     (www.redhat.com: 1,273)
    4. www.OpenSUSE.org: 4,622     (www.novell.com: 630)
    5. www.mandriva.com: 7,691
    6. www.mepis.org: 8,021
    7. www.damnsmalllinux.org: 8,605
    8. www.pclinuxos.com 11,144
    9. www.sabayonlinux.org: 28,549
    10. www.linuxmint.com: 41,331

    Alexa Rankings

    1. www.ubuntu.com: 2,445     (canonical.com: 119,849)
    2. www.debian.org: 3,499
    3. www.OpenSUSE.org: 7,878     (novell.com: 9,154)
    4. fedoraproject.org: 11,127     (redhat.com: 7,089)
    5. www.mandriva.com: 18,497
    6. www.damnsmalllinux.org: 49,544
    7. www.pclinuxos.com: 57,390
    8. www.sabayonlinux.org: 72,331
    9. www.linuxmint.com: 69,753
    10. www.mepis.org: 82,654

    Update: As someone pointed out on Digg, Gentoo’s website should probably be included in this list. We didn’t include Gentoo in our original numbers because we used the Distrowatch.com top 10 as our starting point (you have to start somewhere). To be fair, let it be noted that Gentoo’s Netcraft ranking is 859 and their Alexa ranking is 8,919 which would place gentoo.com in 1st place and 4th place respectively.

    Blogging Trends

    Sites like Technorati and BlogPulse allow you to track how often people are blogging about a certain topic. We compared Ubuntu’s blog buzz to other top Linux distros and found that people are writing about Ubuntu far more than any other Linux distro.

    BlogPulse

    We took the top 3 Linux distros from the above website rankings and compared them on BlogPulse. As you can see, people are blogging about Ubuntu far more often. There is also a large surge in blog posts about Ubuntu surrounding the recent October 18th release of Gutsy Gibbon.

    Technorati

    Technorati shows very similar results when comparing Ubuntu, Debian and Fedora over the last 30 days (note the scale difference in these graphs).

    Ubuntu Debian Fedora

    Google Trends

    Perhaps the most interesting statistics come from Google Trends. This tool allows you to compare different terms and see how often people search for them. The tool is far from perfect and is still in Google’s “labs”, but it does give some interesting insight into how often people search for different Linux distros. Of course, there is a lot of room for error as someone could be searching for the philosophy of Ubuntu, for a new Fedora hat, or for The Red Hat Society.

    First we compare our top 3 distros from above. You can clearly see that from the second half of 2006, there are far more searches for Ubuntu than for Debian and Fedora (including Fedora Core, and Red Hat searches).

    Next we compare Ubuntu to the rest of the top 10 distros combined (including variations of the distro names such as Red Hat). As you can see, for the last few months, Ubuntu has been searched for more often than all the other top 10 combined.

    We found another interesting trend when comparing Ubuntu to Linux, Unix, FreeBSD and Solaris. Clearly Linux has the lead, but Ubuntu is not far behind.

    Finally, just to be fair, we compare Ubuntu, Linux, Mac, and Windows.

    DIGG

    Then there’s always Digg.com. How many times have these popular Linux distros made it to the front page of Digg in the last 6 months (stories containing the distro’s name in the title)? We did some searching and found the following information very interesting.

    1. Ubuntu: 163
    2. Fedora: 10
    3. Mandriva: 8
    4. SUSE: 8
    5. Debian: 6
    6. PCLinuxOS: 3
    7. MEPIS: 1
    8. Sabayon: 1
    9. Mint: 0
    10. Damn Small: 0

    Conclusion

    So what do all these statistics really mean? Honestly, probably nothing. They can’t tell us anything about real Ubuntu usage. However, they do seem to show that Ubuntu has managed to gain a large portion of the Linux mind share, at least amongst the tech community. We enjoyed uncovering and compiling these stats, but please remember that it’s just a bunch of unscientific data, it’s just for fun. We hope you enjoyed this article, now back to your favorite OS (whatever that might be).

     

    21 Responses to “Ubuntu: Just how popular is it?”

    1. jeje9 Says:
      November 3rd, 2007 at 6:07 pm

      The distrowatch ranking of distros means absolutely nothing outside distrowatch.. and the distrowatch folks have stated that time and time again. I know of lots of people who go to the Distrwatch page on a daily basis and click on a specific distro’s link (PCLinuxOS) just to raise the hit count for that distro. That rating system is flawed and I feel that it should not even be mentioned. I wish they would take that silly rating off their site and leave it off.. it’s misleading to a lot of people.

    2. jeje9 Says:
      November 3rd, 2007 at 6:19 pm

      1) Blogs:
      “Sites like Technorati and BlogPulse allow you to track how often people are blogging about a certain topic.”

      Are you counting the negative blog entires as well as the positive blog entries? I have seen blogs that state Ubuntu is the worst distro some people have used.

      2) Number of installs:
      I install and use many distros when a new version is released. But, most of them are uninstalled within days because due to bugs and the like. So gauging popularity by number of installs is not accurate either.

      3) Searching Google (and other search engines) does not equate to distro popularity:
      Many times I search for a distro, read about it, and decide it’s not for me.. so that distro never gets installed on my machine - but I did search for it.

      4) Digg.com:
      I have used more than 28 distros at one time or another, but I don’t have a Digg.com account, so gauging popularity that way is also inaccurate.

      Conclusion:
      There’s really no accurate way to gauge a distro’s popularity because one man’s trash is another man’s treasure. Use the distro that works for you and stop worrying about the numbers.

    3. Anonymous Says:
      November 3rd, 2007 at 6:40 pm

      In the Alexa rankings the third and fourth place seem to be swapped.

      And imo there is a huge difference between “having heard about” or even “tried” and actual usage. Still haven’t seem any resilient number about actual usage/installations.

      The “6 million users” number of Canonical seems to be made up: http://spevack.livejournal.com/31016.html

    4. Tim Hodkinson Says:
      November 3rd, 2007 at 6:54 pm

      Great posting. I assume you’re probably trying to deflect flaming comments by saying all these numbers are just for fun, but I think together they give the clearest and most balanced view possible of Ubuntu adoption. Anyone familiar with webstats will know that you can’t really measure what you want to know directly (ie. do people like my site?), so those folks (like myself) are accustomed to inferring from a number of related indicators (like blog activity, search string activity…).

      Personally, I think the Google Trends data is the strongest. Why do people enter search stings with Ubuntu in them? I think it’s because they’re interested in Ubuntu and at the core of all that search activity is people actually using the OS. It’s not a 1:1 relationship, obviously, but it’s best used to compare OSs to get a indication of the relative popularity of an OS. Like you said, we can’t figure out the actual number of users, but we can determine the relative number of users, and in the end that’s what everyone is really interested in: rankings.

      Just to add to the confusion of stats. Mozilla recently stated that half of those who download Firefox don’t end up actually using it. I wonder how many people download Ubuntu to test it out and don’t actually end up using it either. Or triple or quadruple boot?

    5. Doug Rosbury Says:
      November 3rd, 2007 at 7:20 pm

      With all I have read about linux and Ubuntu, I would like to try Ubuntu,
      however I can’t get past a certain requirement by windows xp, so I can’t do it
      on my own and I need help but no one, so far will help me. i have asked for help but no one I have asked ever responds to my request. Oh well, xp works ok.
      Can this be done remotely? I’m surprised that no one will help me. too bad so sad.
      Thanks,—Doug Rosbury

    6. ssam Says:
      November 3rd, 2007 at 7:24 pm

      why not add things like size of forums/mailing lists.

      also there are the popcon rankings for debian and ubuntu, not sure if other distros have similar systems. http://popcon.ubuntu.com/ http://popcon.debian.org/

    7. ddcc Says:
      November 3rd, 2007 at 8:04 pm

      The size of forums was published in a recent issue of Linux Format Magazine.
      Here was the results:
      ———————
      Ubuntu: 376,200
      Gentoo: 109,000
      Fedora: 100,000
      Mandriva: 58,800
      OpenSuse: 52,000
      Kubuntu: 21,000
      Freespire: 18,600
      PCLinuxOS: 11,700
      Arch Linux: 10,600
      Sabayon: 8,500
      Puppy: 7,000
      Mint and Zenwalk: 3,400

    8. Bob Says:
      November 3rd, 2007 at 10:49 pm

      I have been using Ubuntu for some time. Very interesting stats - I am happy to see it making headway.
      More impressive than Ubuntu’s gains is your post. I am really impressed with your use of stats tools and how you put the post together. All in all - well said.

    9. Bil-E-daKid Says:
      November 3rd, 2007 at 10:51 pm

      Ok Doug, I’ll bite. What’s the issue that’s holding you to Windows XP that is preventing you trying Ubuntu?

      private message me on the Ubuntu forums with your repsonse.

    10. John Says:
      November 3rd, 2007 at 11:21 pm

      Doug, same here. You can contact me via the Ubuntuforums private messaging system, as Bil-E-daKid says, username p a p a t r p t 8 9 (without the spaces)

    11. bucK Futter Says:
      November 4th, 2007 at 12:41 am

      No mention of Dell and their Ubuntu option?

    12. baracuda Says:
      November 4th, 2007 at 2:43 am

      I would think that the count would be more accurate if you counted UbuntuForums.org hits instead of Ubuntu.com hits. There is more registered users at the forums than the main site. I know I visit the forums more than the main site. Also does this include the *buntu derivatives(Kubuntu,Xbuntu,etc)?

    13. grigio Says:
      November 4th, 2007 at 2:46 am

      I did a similar experiment looking at some statistics of websites and a/emule
      http://grigio.org/quanti_sono_utenti_linux_statistiche_ottobre

      Normal Linux users are lesser than 1%, but among “techie” users, Linux beat Mac.

    14. ubuntu user Says:
      November 4th, 2007 at 2:51 am

      Ubuntu provides automatic software updates, which should theoretically provide a good estimate of how many people are using their OS regularly. I don’t know if that’s how they got their numbers, but it makes sense to me. There’s also a package you can install to allow them to use your package list to help determine package popularity, if you want them to do that.

    15. David Says:
      November 4th, 2007 at 2:54 am

      Well it seems to me the best way to calculate usage is with the patch/update downloads. Again not totally accurate as I guess some people won’t keep there machines patched, but I tend to think it would be about the most accurate way we have. just my 2 cents worth.

    16. Dave Says:
      November 4th, 2007 at 4:26 am

      Comparing google trends with the word ‘windows’ is misleading. Most windows are made of glass.

    17. Landor Says:
      November 4th, 2007 at 5:42 am

      I agree with 14 & 15. The easiest way to discern a distro’s popularity is updates. Of course this depends on two factors, A) the distro in question has an update system, B) the person using said distro has an internet connection. I think it’s fairly accurate since most distros that do have an automatic update system have it set to connect with the server to look for updates automatically, regardless if the person chooses to update or not. This would show “at least” that x-amount of people used said distro at least once.

      Keep your stick on the ice…

      Landor

    18. maarten kooiker Says:
      November 4th, 2007 at 7:23 pm

      Nice statistics. It is indeed hard to draw conclusions, but alltogether these numbers say something about the popularity of the different distro’s! (though this does not imply correlations with quality, look for example at the popularity of the distro called windows…..)

    19. Old School Hacker Says:
      November 5th, 2007 at 8:56 am

      Parachute pants were popular, but still quite lame.
      I’ve tried several versions of Bloatbuntu, and I have yet to be impressed.

    20. Chris Says:
      November 6th, 2007 at 5:37 pm

      STOP! Hammer time!

    21. Bryan Says:
      November 6th, 2007 at 10:18 pm

      The most helpful marker would be the number of discreet computers accessing the ubuntu repositories over a short span of time (2-4 weeks), which would catch people who only update occasionally, without double-counting folks who have reinstalled (maybe changing the identification of their computer).

      I don’t know if any distros really make this possible, since it is a potential privacy breach.

    Leave a Reply

    Name (required)

    Mail (will not be published) (required)

    Website

    Copyright © 2004 - 2007 Jim Mendenhall

     

     

    Installation instructions for Ubuntu Edgy Eft/Feisty Fawn/Gutsy Gibbon users

    Open /etc/apt/sources.list and add:

     deb http://hendrik.kaju.pri.ee/ubuntu edgy screenlets
     deb http://hendrik.kaju.pri.ee/ubuntu feisty screenlets
     deb http://hendrik.kaju.pri.ee/ubuntu gutsy screenlets
    

    depending on your version of Ubuntu. Then run this in a terminal:

     wget http://hendrik.kaju.pri.ee/ubuntu/hendrikkaju.gpg -O- | sudo apt-key add - && sudo apt-get update
    

    and install package 'screenlets' with:

     sudo apt-get install screenlets
    

    [edit] What are the requirements/dependancies for running the screenlets?

    First of all you need python (tested with 2.4 and 2.5). Further you need pygtk (at least version 2.10), pycairo, python-xdg and the package python-gnome2-desktop. The latter is unfortunately needed for the wnck/rsvg bindings (hopefully this will change sometime).

    Note

    Debian Repository

    Note: An official package for SSHMenu has recently been added to Debian Unstable and Testing thanks to the efforts of Debian maintainer Kevin Coyner. If you're running either of those distributions then simply install SSHMenu from your standard repository rather than the one listed here.

    SSHMenu is available pre-packaged for Debian and Ubuntu (etc) Linux systems, as two .deb packages:

    sshmenu
    The core code with no GNOME dependencies (runs as a standalone application in its own window)
    sshmenu-gnome
    The GNOME-specific additions to the core (including the panel applet)

    If you like doing things the hard way, you can go and grab the latest .deb files directly from here.

    Or you can add this entry to your /etc/apt/sources.list:

      deb http://sshmenu.sourceforge.net/debian stable contrib

    Import our repository key:

      gpg --keyserver subkeys.pgp.net --recv-keys 4CC00851
      gpg --export --armor 4CC00851 | sudo apt-key add -

    And then install the relevant package and dependencies with these commands:

      sudo apt-get update
      sudo apt-get install sshmenu-gnome

    Using Synaptic

    If you use Synaptic to manage your packages, you can add the repository as follows. On the Settings menu, select Repositories. Then press the Add button followed by the Custom button. Fill in the box labelled 'APT Line' as shown below and press the Add Channel button. Use the Close button to return to Synaptic and then press the Reload button on the toolbar to download package listings.

    11 phenomenal images of earth « deputydog
    deputy-dog.com/2007/11/01/11-phenomenal-images-of-...

    below are 11 incredible photos taken from space which illustrate just a few of earth’s fascinating geographical features and nature’s frightening unpredictability.

    click on all pictures for humongous versions.

    1. sri lankan coast, 26th december 2004

    (above) the ocean rapidly retreats 400 metres on the south-western coast of sri lanka, just 5 minutes prior to the arrival of a devastating tsunami.

    (above) the swirling waters continue to batter the coast just moments after the main wall of water has hit.

    2. an alluvial fan, xinjiang province, china

    (above) covering an area 56.6 x 61.3 km and taken on may 2nd, 2002, this photo shows an alluvial fan that formed on the southern border of the taklimakan desert in china. an alluvial fan usually forms as water leaves a canyon, each new stream eventually closing up due to sediment - the result being a triangle of active and inactive channels. the blue ones on the left are currently active.

    3. retreating glaciers in the bhutan-himalaya

    (above) a beautiful but clear sign that glaciers are slowly melting due to global warming. easily visible are the ends of most of these glacial valleys’ surfaces turning to water to form lakes, a trend which has been noticed only in the last few decades.

    4. hurricane isabel, 2003

    (above) this terrifying photo of hurricane isabel was taken on the international space station in 2003 and illustrates the immense size of the hurricane’s eye. this particular hurricane was the deadliest of 2003 and winds reached 165 mph at its peak.

    5. greenland’s eastern coast, august 21st, 2003

    (above) the fractal coastline of greenland and its numerous fjords as seen from space.

    ‘little spots of white in the water seem to be ice originating from the deeper fjords that reach all the way to the icecap covering most of the island.’ link

    6. aurora borealis

    (above) an astounding and spooky photo of the natural phenomenon known as aurora borealis, taken on-board space shuttle atlantis during the sts-117 mission.

    7. a total solar eclipse from space, 1999

    (above) the shadow of the moon covers part of earth on august 11th, 1999 in this photo taken from mir space station. this shadow raced across earth at 2000 km/h, all areas under the centre of it plunged into darkness during a total solar eclipse. this was apparently one the final photos taken from mir.

    8. egmont national park, new zealand

    (above) mt. egmont volcano last erupted in 1755 and is now situated at the centre of egmont national park. park regulations have ensured the survival of a forest which extends at a 9.5 km radius from the summit of the volcano, the result of which can be seen from space in the form of huge dark green disc. this photo was taken during the sts-110 mission, april 2002.

    9. mt. etna eruption, october 2001

    (above) taken from the international space station in 2001, this is a photo of a particularly violent eruption on the island of sicily which produced a cloud of ash that travelled as far as libya. on the humongous version of the photo lighter coloured smoke can be seen near the volcano - this was caused by lava igniting nearby forests.

    10. richat structure, mauritania

    (above) the cause of the richat structure in the sahara desert of mauritania has been debated for many years. at first it was thought to be a meteor impact crater due to its circularity but this has since been disproven due to the lack of shock-altered rock in its vicinity. this massive (30 mile diameter) oddity is now believed to have been a rock dome sculpted over time by erosion. this incredible image was taken by the advanced spaceborne thermal emission and reflection radiometer (aster) on october 7th, 2000.

    01:09:57 PM) Josh Yaw: Hey, not sure when you're gonna get this but I ahd some time to work on the client today from home (go pico editor) and came to a problem
    if you have the letters "baat"
    it will place the word "bat"
    then let's say you say find me all the positions it can put the word "at"
    it'll use the "a" in "bat" and then check it's right "at" and then say "at" and return "a" horizontal to the right as a valid...

    (01:11:53 PM) Josh Yaw: position, and then the board it will submit will be "bat"
    when if anything should be
    " a"
    "bat"

    so was wondering if you could modify the board to somehow change that, make it return perhaps the difference of the letters? or maybe onlyy where it doesn't overlap like that?

    but as of right now I can create a validboard and stuff, no heap issues and ya, so it's progress and I gotta head out now

    Ubuntu Case Studies

    Here are just a few of the ways Ubuntu is being used in businesses and schools around the world. We'd also love to hear how you are using Ubuntu in your workplace, at home, or in your school or college.

    Ubuntu supports technology-enabled teaching at The Johns Hopkins University

    Cost-effective, easy-to-use and reliable, Ubuntu proved to be the open source platform of choice on which to build a support system for technology-enabled classrooms at The Johns Hopkins University.

    Read the full story or download the PDF.

    Locatrix Deploys Mobile Applications on Ubuntu

    Stability and managability helps Locatrix deploy mobile applications to thousands of new users each week.

    Read the full story. 

    Ubuntu provides a secure and easily accessible system for German Pilots

    Enhanced security, outstanding support and maintenance times - Ubuntu was the optimal choice for Contact Air GmbH.

    Read the full story or download the PDF.

    Ubuntu enables advanced computer research into killer diseases

    Delivering training coursers to researchers in developing countries - Ubuntu was the first choice for The Wellcome Trust Sangar Institute.

    Read the full story or download the PDF.

    Ubuntu delivers significant cost-savings for specialist sports school

    Stability, reduced maintenance times and significant cost savings - Ubuntu proved an outstanding choice for Skegness Grammar School.

    Read the full story or download the PDF.

    Ubuntu proved the optimal choice for a non-profit radio station

    Simplicity in switching, ease-of-use, great client/server side management and outstanding reliabilty - Ubuntu proved the best choice for KRUU-FM radio station.

    Read the full story or download the PDF.

    gutsy + dual-head nvidia + compiz fusion - Ubuntu Forums
    ubuntuforums.org/showthread.php?t=563809
    Just Give Me the Beans!
     
    Join Date: Apr 2007
    Beans: 54
    Gutsy Gibbon Testing User
    gutsy + dual-head nvidia + compiz fusion

    i am trying to get my dual-head nvidia card to work. I cant even get it to work without compiz but i would like to eventually get it set up with compiz. Can anyhone help?
    heres my xorg.conf
    Code:
    # xorg.conf (xorg X Window System server configuration file)
    #
    # This file was generated by dexconf, the Debian X Configuration tool, using
    # values from the debconf database.
    #
    # Edit this file with caution, and see the xorg.conf manual page.
    # (Type "man xorg.conf" at the shell prompt.)
    #
    # This file is automatically updated on xserver-xorg package upgrades *only*
    # if it has not been modified since the last upgrade of the xserver-xorg
    # package.
    #
    # If you have edited this file but would like it to be automatically updated
    # again, run the following command:
    #   sudo dpkg-reconfigure -phigh xserver-xorg
    
    Section "Files"
    EndSection
    
    Section "InputDevice"
            Identifier      "Generic Keyboard"
            Driver          "kbd"
            Option          "CoreKeyboard"
            Option          "XkbRules"      "xorg"
            Option          "XkbModel"      "pc105"
            Option          "XkbLayout"     "us"
    EndSection
    
    
    Section "InputDevice"
            Identifier      "Generic Keyboard"
            Driver          "kbd"
            Option          "CoreKeyboard"
            Option          "XkbRules"      "xorg"
            Option          "XkbModel"      "pc105"
            Option          "XkbLayout"     "us"
    EndSection
    
    Section "InputDevice"
            Identifier      "Configured Mouse"
            Driver          "mouse"
            Option          "CorePointer"
            Option          "Device"        "/dev/input/mice"
            Option          "Protocol"      "ImPS/2"
            Option          "ZAxisMapping"  "4 5"
            Option          "Emulate3Buttons"       "true"
    EndSection
    
    Section "InputDevice"
            Driver          "wacom"
            Identifier      "cursor"
            Option          "Device"        "/dev/input/wacom"
            Option          "Type"  "cursor"
            Option          "ForceDevice"   "ISDV4"# Tablet PC ONLY
    EndSection
    
    Section "Device"
            Identifier      "nVidia Corporation NV34 [GeForce FX 5200]"
            Driver          "nvidia"
            Option          "AddARGBGLXVisuals" "True"
            Busid           "PCI:3:0:0"
            Option          "AddARGBVisuals"        "True"
            Option          "AddARGBGLXVisuals"     "True"
            Option          "NoLogo"        "True"
    EndSection
    
    Section "Monitor"
            Identifier      "ENVISION"
            Option          "DPMS"
    EndSection
    
    Section "Screen"
            Identifier      "Default Screen"
            Device          "nVidia Corporation NV34 [GeForce FX 5200]"
            Monitor         "ENVISION"
            Defaultdepth    24
            SubSection "Display"
                    Modes           "1280x1024"     "1280x960"      "1024x768"     $
            EndSubSection
    EndSection
    
    Section "ServerLayout"
            Identifier      "Default Layout"
      screen "Default Screen"
            Inputdevice     "Generic Keyboard"
            Inputdevice     "Configured Mouse"
    
            # Uncomment if you have a wacom tablet
            #       InputDevice     "stylus"        "SendCoreEvents"
            #       InputDevice     "cursor"        "SendCoreEvents"
            #       InputDevice     "eraser"        "SendCoreEvents"
    EndSection
    
    Section "ServerLayout"
            Identifier      "Default Layout"
      screen "Default Screen"
            Inputdevice     "Generic Keyboard"
            Inputdevice     "Configured Mouse"
    
            # Uncomment if you have a wacom tablet
            #       InputDevice     "stylus"        "SendCoreEvents"
            #       InputDevice     "cursor"        "SendCoreEvents"
            #       InputDevice     "eraser"        "SendCoreEvents"
    EndSection
    
    Section "Module"
            Load            "glx"
    EndSection
    what do i do to het my 2nd moniter working
     
    2 Weeks Ago   #2
    Quad Shot of Ubuntu
     
     
    Join Date: Jan 2007
    Location: Missouri
    Beans: 501
    Ubuntu 7.10 Gutsy Gibbon User
    Debian User
    Re: gutsy + dual-head nvidia + compiz fusion

    This post could be related to an Ubuntu bug filed at: https://bugs.launchpad.net/ubuntu/+s...22/+bug/144777
    ----------------------------


    I was able to get it working... but not without pulling some hair out. So the ultimate question is how is this attainable without the loss of hair.

    First things first, make a backup of your /etc/X11/xorg.conf file. Install the nvidia-glx drivers (or nvidia-glx-new if you have a 7 series or newer card). Go to the restricted drivers manager and enable the card. Then you will need to open the nvidia settings
    Code:
    gksudo nvidia-settings
    with admin rights. On the second option, you will notice that "Xinerama" is enabled. Disable this option. Select one of the monitors in the display and configure it to use Twinview. You will then need to
    Code:
    Save to X Configuration File
    and restart xorg (ctrl-alt-backspace).

    From here, you can enable compiz-fusion through System : Preferences : Appearance

    If you want to configure how compiz runs, apt-get the compizconfig-settings-manager and you can access it through System : Preferences : Advanced Desktop Effects Settings.

    Post your findings on this if you could please.
    Computer Science Community - Post Reply
    csc.cdf.toronto.edu/bb/YaBB.pl?action=post;num=119...
    Index of /~sak/courses/ics/sml-programs
    www.cse.iitd.ernet.in/~sak/courses/ics/sml-program...

    Index of /~sak/courses/ics/sml-programs

     Name                    Last modified      Size  Description
    Parent Directory - arith-seq.sml 07-Mar-2004 21:19 739 bintree.dat 04-Apr-2004 22:08 448 bintree.sml 04-Apr-2004 22:07 2.7K comb-with-fact-1.sml 03-Feb-2004 20:16 183 comb-with-fact-2.sml 03-Feb-2004 21:45 263 comb-with-fact-3.sml 03-Feb-2004 21:47 263 comb.sml 28-Jan-2004 22:19 243 days.sml 25-Mar-2004 12:30 118 euclidean-composites..> 15-Feb-2004 16:14 1.5K fact.sml 03-Feb-2004 20:11 115 fastpower.sml 04-Feb-2004 23:31 333 fibonacci.sml 26-Feb-2004 12:12 705 gcd.sml 14-Jan-2007 17:08 70 higher-order.sml 14-Mar-2004 12:26 1.2K imperative/ 12-May-2004 11:36 - intsqrt.sml 15-Feb-2004 15:57 1.0K lists.sml 11-Mar-2004 11:37 531 matrix-mult.sml 04-Nov-2005 23:26 2.7K perfect.sml 29-Jan-2004 01:30 1.5K perfect2.sml 08-Feb-2004 22:53 591 perfect3.sml 08-Feb-2004 18:29 626 polynomial.sml 21-Mar-2004 19:51 399 power1.sml 26-Jan-2004 14:48 130 primes2.sml 03-Mar-2004 23:55 609 primes3.sml 03-Mar-2004 23:55 895 propLogic/ 30-Apr-2004 09:12 - queens.sml 06-Apr-2004 15:28 2.2K queues/ 30-Apr-2004 18:11 - rationals/ 30-Apr-2004 18:09 - resistors.sml 31-Mar-2004 17:24 584 reverse-integer.sml 20-Mar-2004 14:29 470 shapes.sml 25-Mar-2004 12:17 521 sieve.sml 15-Feb-2004 15:10 708 sort/ 22-Apr-2004 13:46 - transpose.sml 25-Mar-2004 18:49 811
    Apache Server at www.cse.iitd.ernet.in Port 80
    Computer Science Community - A4 Question A
    csc.cdf.toronto.edu/bb/YaBB.pl?num=1191624484

    my.utoronto.ca | UofT | A & S | DCS | CDF | my CDF | UGA
     
    Hey, Edward A Robinson, you have 0 messages.
    10/08/07 at 13:45:40
    U of T Undergraduate
    Computer Science Community


    Pages: 1
    A4 Question A (Read 56 times)
    c5taijoh

    Student





    Posts: 11
    A4 Question A
    10/05/07 at 22:48:04
     
    Can numbers be repeated in the list of 5 natural numbers?
    i.e. is [1,1,1,1,1] a list of 5 natural numbers?
     
    And also does the order of the list matter?
    i.e. is [1,2,3,4,5] one list and [5,4,3,2,1] another?
    Back to top
     
     
      IP Logged
    François Pitt
    Administrator
    Instructor



    Don't Worry, Be
    Happy!

    Posts: 55
    Re: A4 Question A
    Reply #1 - 10/06/07 at 21:24:40
     
    I was going to post a hint about that question anyway, so let me do it at the same time as I answer your question.
     
    Let me start with something related: there are countably many pairs of natural numbers, by an argument similar to what we used to show that the positive rational numbers are countable.  This yields the following list of all pairs of natural numbers:
           (0,0), (0,1), (1,0), (0,2), (1,1), (2,0), (0,3), (1,2), (2,1), (3,0), ...
    Now, consider triplets of natural numbers.  Think about how to extend the system used for pairs.
    Next, consider quadruplets of natural numbers.
    Finally, for the Exercise, consider quintuplets of natural numbers (that's what I meant by "lists of 5").
     
    With that explanation, I hope it is clear that the answers to your questions are all "yes".
    Back to top
     
     

    François Pitt, Senior Lecturer
      IP Logged
    c5taijoh

    Student





    Posts: 11
    Re: A4 Question A
    Reply #2 - Yesterday at 18:44:47
     
    Yup, thanks
    The hint was very helpful.  
    Back to top
     
     
      IP Logged
    Pages: 1
    Forum Jump: ----------------------------- General CS Community -----------------------------  - Announcements   - General Chat   - Technical Q&A   - Jobs and Professional Experience   - Buy, Sell, and Trade   - Study Groups ----------------------------- First Year Community -----------------------------  - General Chat   - Program of Study (POSts)   - Ask an Upper-Year Student   - Study Groups ----------------------------- Computer Science Student Union -----------------------------  - General Chat   - Suggestion Box ----------------------------- Contact Us -----------------------------  - Ask a Professor   - Ask the Undergraduate Office   - Ask the CDF Admins   - Suggestion Box ----------------------------- Fall 2007 Course Boards -----------------------------  - CSC108H1F: Introduction to Computer Programming   - - Announcements   - - General   - - Find a Partner   - - CodeLab and Labs   - - Assignment 1   - - Assignment 2   - - Assignment 3   - - Assignment 4   - - Project   - - Tests   - CSC148H1F: Introduction to Computer Science   - - Closed Laboratories   - - Assignment 1   - - Assignment 2   - - Assignment 3   - - Assignment 4   - - Past exams discussion   - CSC150H1F: Accelerated Introduction to Computer Science   - - Tools   - - Assignment 1   - - Assignment 2   - - Assignment 3   - - Assignment 4   - CSC165H1F: Mathematical Expression and Reasoning for Computer Science   - - Tutorial Exercises   - - Problem Solving   - - Assignment 1   - - Assignment 2   - - Assignment 3   - CSC209H1F: Software Tools and Systems Programming   - - General   - - Assignment 1   - - Assignment 2   - - Assignment 3   - - Assignment 4   - - Tests   - CSC236H1F: Introduction to the Theory of Computation   - CSC263H1F: Data Structures and Analysis   - CSC301H1F: Introduction to Software Engineering   - CSC309H1F: Programming on the Web   - - Assignment 1   - - Assignment 2   - - Assignment 3   - - Assignment 4   - - Midterm and Exam   - CSC324H1F: Principles of Programming Languages   - CSC336H1F: Numerical Methods   - - Student Discussions   - CSC343H1F: Introduction to Databases   - - PostgreSQL   - - Assignment 1   - - Assignment 2   - - Assignment 3   - CSC350H1F: Numerical Algebra and Optimization => CSC363H1F: Computational Complexity and Computability   - CSC369H1F: Operating Systems   - - OS161 and tool chain   - - Assignment 0   - - Assignment 1   - - Assignment 2   - - Assignment 3   - - Finding partners   - CSC411H1F: Machine Learning and Data Mining   - CSC418H1F: Introduction to Computer Graphics   - CSC443H1F: Database Systems Technology   - CSC469H1F: Advanced Operating Systems   - CSC487H1F: Foundations of Computer Vision   - SCI199H1Y: Computational Reality, Illusion, and Deception   - Test Zone ----------------------------- Summer 2007 Course Boards -----------------------------  - CSC108H1Y: Introduction to Computer Programming   - - Prelab (Codelab) and Labs   - - Assignment 1   - - Assignment 2   - - Assignment 3   - CSC148H1Y: Introduction to Computer Science   - - Closed Laboratories   - - Assignment 1   - - Assignment 2   - - Assignment 3   - - Assignment 4   - - Past exams discussion   - CSC263H1Y: Data Structures and Analysis   - CSC320H1Y: Introduction to Visual Computing   - Test Zone

    Computer Science Community » Powered by YaBB 2.1!
    YaBB © 2000-2005. All Rights Reserved.





    The Third Bit » Blog Archive » Distinguished Lectures at U of T
    pyre.third-bit.com/blog/archives/1161.html

    www.pkix.net/~chuck/clockspeed/ftime.c
    www.pkix.net/~chuck/clockspeed/ftime.c
    /*
     * Charles Swiger (cs4w@andrew)
     * 15-347 HW1, Problem 4
     *
     * This implements a timer to measure the running time of an arbitrary
     * function.
     */
    
    #include "etime.h"
    #include "ftime.h"
    
    
    /* This function returns a reasonable estimate of delta, the clock period of a
     * machine.  It works by waiting for one tick to pass and returns that time.
     */
    
    double
    compute_delta() {
        int i,n;
        double start, time;
    
        init_etime();
    
    /* We'll start somewhere within a tick and loop until the time changes. */
        start = time = get_etime();
        for (i = 0; time == start; i++) {
            time = get_etime();
        }
        
        return (time - start);
    }
    
    
    /* This function uses the doubling method described in the homework assignment
     * to compute the running time of an arbitrary function to within a specified
     * accuracy.
     */
    
    double
    ftime(test_funct P, double E) {
        int i,n;
        double start, time, tprime, delta, pprime;
    
        delta = compute_delta();
        n = 1;
        tprime = 0;
        init_etime();
    
        while (tprime < (delta * (1 - E) / E)) {
            start = get_etime();
            for (i = 0; i < n; i++) {
                P();
            }
            time = get_etime();
            tprime = time - start;
            n *= 2;
        }
    
        n /= 2;                     /* we doubled n one time too many */
        pprime = tprime / n;
        
    /*  printf("\nn = %d, tprime = %f, ftime = %f\n", n, tprime, pprime); */
        return pprime;
    }
    
    
    
    
    
    www.pkix.net/~chuck/clockspeed/ftime.h
    www.pkix.net/~chuck/clockspeed/ftime.h
    /* function timer */
    
    typedef void (*test_funct)(void); 
    double ftime(test_funct P, double E);
    
    
    
    www.pkix.net/~chuck/clockspeed/etime.h
    www.pkix.net/~chuck/clockspeed/etime.h
    #define MAX_ETIME 86400   
    
    void init_etime(void);
    double get_etime(void);
    
    void init_etime_real(void);
    double get_etime_real(void);
    
    
    www.pkix.net/~chuck/clockspeed/etime.c
    www.pkix.net/~chuck/clockspeed/etime.c
    /*
     * etime.c - timer package that uses the Unix interval timer
     *           to measure elapsed time in seconds.
     */
    #include <stdio.h>
    #include <sys/time.h>
    #include "etime.h"
    
    /* static variable that holds the initial value of the interval timer */
    struct itimerval first_u; /* user time */
    struct itimerval first_r; /* real time */
    
    /* 
     * elapsed user time routines 
     */
    
    /* init the timer */
    void init_etime(void)
    {
        first_u.it_interval.tv_sec = 0;
        first_u.it_interval.tv_usec = 0;
        first_u.it_value.tv_sec = MAX_ETIME;
        first_u.it_value.tv_usec = 0;
        setitimer(ITIMER_VIRTUAL, &first_u, NULL);
    }
    
    /* return elapsed seconds since call to init_etime */
    double get_etime(void) {
        struct itimerval curr;
    
        getitimer(ITIMER_VIRTUAL, &curr);
        return (double) ((first_u.it_value.tv_sec - curr.it_value.tv_sec) +
    		     (first_u.it_value.tv_usec - curr.it_value.tv_usec)*1e-6);
    }
    
    /* 
     * elapsed real time routines 
     */
    
    /* init the timer */
    void init_etime_real(void)
    {
        first_r.it_interval.tv_sec = 0;
        first_r.it_interval.tv_usec = 0;
        first_r.it_value.tv_sec = MAX_ETIME;
        first_r.it_value.tv_usec = 0;
        setitimer(ITIMER_REAL, &first_r, NULL);
    }
    
    /* return elapsed seconds since call to init_etime_real */
    double get_etime_real(void) {
        struct itimerval curr;
    
        getitimer(ITIMER_REAL, &curr);
        return (double) ((first_r.it_value.tv_sec - curr.it_value.tv_sec) +
    		     (first_r.it_value.tv_usec - curr.it_value.tv_usec)*1e-6);
    }
    
    
    New Kernel Hacking HOWTO/Subsystems/Exceptions and Interrupts Handling - Linux Kernel Newbies
    kernelnewbies.org/New_Kernel_Hacking_HOWTO/Subsyst...

    New Kernel Hacking HOWTO/Subsystems/Exceptions and Interrupts Handling

    Parent Node : Subsystems

    Exceptions and Interrupts Handling

    This section will cover the internals of Interrupt Handling in Linux Kernel (all explaination is related to i386 platform). This section is under development and might be incomplete right now.

    I will cover the following topics in this section, explaining the hardware as well as software part of it, How the interrupts are generated, routed and then handled by the low level code of Linux Kernel.

    1. Introduction
    2. Interrupt Routing
      1. Details of Programmable Interrupt Controller
    3. Details of Interrupt Descriptor Table
      1. Task Gates
      2. Trap Gates
      3. Interrupt Gates
    4. Hardware Checks for Interrupts and Exceptions
    5. Linux Kernel support for Handling Interrupts - Details of do_IRQ() function, core of Interrupt Handling

    Introduction

    This section will discuss the hardware prospective of interrupt handling from the CPU, the Linux Kernel's Interrupt Routing subsystem and Device Drivers's role in Interrupt handling.

    Term Interrupt is self defined, Interrupts are signals sent to a CPU on an INTR bus (providing the connection to the CPU), issued whenever any device wants to get attention of the CPU. As soon as the interrupt signal occurs, CPU defer the current activity and service the interrupt by executing the interrupt handler corresponding to that interrupt number (also known as IRQ number).

    One of the classifications of Interrupts can be done as follows: - Synchronous Interrupts (also know on as software interrupts) - Asynchronous Interrupts (also know as hardware interrupts)

    The basic difference between these is that, synchronous interrupts are generated by CPU's control unit when some abnormal condition is faced; these are also know as exceptions in Intel's termenology. Synchronous interrupts are interrupts which are generated by the CPU itself, either when the CPU detects an abnormal condition or when the CPU executes some of the special instructions like 'int' or 'int3' etc. On other hand, asynchronous interupts are those, which actually are generated by the outside world (devices connected to CPU). As these interrupts can occur at any point of time, these are known asynchronous interrupts.

    It's important to note that both synchronous and asynchronous interrupts are handled by the CPU on the completion of an instruction during which the interrupt occurs. Execution of a machine instruction is not done in one single CPU cycle, it will take some cycles to complete. Any interrupt occurring in between the execution of an instruction, will not be handled immediately. Rather, the CPU will handle interrupts after completion of the instruction.

    Interrupt Routing

    There are few things we always expect the CPU to do on the occurence of the handling of an interrupt. Whenever an interrupt occurs, the CPU performs some hardware checks, required to make the system secure. Before discussing the hardware checks, we will explaining how interrupts are routed to the CPU from the hardware devices.

    Details of Programmable Interrupt Controller

    On Intel architecture, system devices (device controllers) are connected to a special device known as PIC (Programmable Interrupt Controller). CPUs have two lines for receiving interrupt signals: NMI and INTR. the NMI line is to recieve non-maskable interrupts; non-maskable indicates that the interrupt can not be blocked. These interrupts have the hightest priority and are rarely used. INTR line is the line on which all the interrupts from system devices are received. These interrupts can be masked (blocked). Since all the interrupt signals need to be multiplexed on a single CPU line, we need some mechanism through which interrupts from different device controllers can be routed to a single line of CPU. This routing, or multiplexing is done by PIC (Programmable Interrupt Controller). PIC sits between system devices and CPU and have multiple input lines; each line connected to a different device contoller in the system. On the other hand IPCs have only one output line which is connected to the CPU's INTR line on which it sends a signal to the CPU. There are two PIC controllers joined together and the output of the second PIC controller is connected to the second input of first PCI. This setup allows maximum of 15 input lines on which different system device controllers can be connected. PICs have some programmable registers, through which the CPU can communicate with it (give command, mask/unmask interrup lines, read status). Both PICs have their own following registers:

    Mask Register

    Status Register

    A mask register is used to mask/unmask a specific interrupt line. CPU can ask the PIC to mask (block) the specific interrupt by setting the corresponding bit in the mask register. Unmasking can be done by clearing that bit. When a particular interrupt is being masked, PICs do receive the interrupts on its corresponding input line, but do not send the interrupt singnal to a CPU in which case the CPU keeps on doing what it was doing. When an interrupts is being masked, they are not lost, rather PIC remembers those and does send the interrupt to the CPU when the CPU unmasks that interrupt line. Masking is different from blocking all the interrupts to the CPU. CPUs can ignore all the interrupts coming on INTR line by clearing the IF (Interrupt Falg) flag in the EFLAGS register of CPU. When this bit is cleared, interrupts coming on an INTR line are simply ignored by the CPU, we can then consider it to be blocking interrupts. So now we understand that masking is done at PIC level and individual interrupt lines can be masked or unmasked, whereas blocking is done at CPU level and is done for all the interrupts coming to that CPU except for NMIs (Non-Maskable Interrupts), that are received on a NMI line of the CPU and can not be blocked or ignored.

    Nowdays, interrupt architecture is not as simple as shown above: machines use the APIC (Advanced Programmable Interrupt Controller), which can support up to 256 interrupt lines. Along with APIC, every CPU also has an inbuilt IO-APIC. I won't go into details of these right now.

    Once the interrupt signal is received by the CPU, the CPU performs some hardware checks for which no software machine instructions are executed. Before looking into what these checks are, we need to understand some architecture specific data structures maintained by the kernel.

    Details of Interrupt Descriptor Table (IDT)

    The kernel needs to maintain one IDT (Interrupt Descriptor Table), which actually maps the interrupt line with the interrupt handler routine. This table has 256 entries and each entry has 8 bytes. The first 32 enteries of this table are used for exceptions and the remaining are used for hardware interrupts received from the 'outside world'. This table can contain three different type of enteries; these three different types are as follows:

    Task Gates, Trap Gates and Interrupt Gates

    Lets see what these gates are where these are used.

    a). Task Gates

    Format of task gates is as follows:

    • 0 to 15 bits : reserved (not used)
    • 16 to 31 bits : points to the TSS (Task State Segment) entry of the process to which we need to switch.
    • 32 to 39 bits : these bits are reserved and are not currently used.
    • 40 to 43 bits : specify the type of entry (its value for task gate is 0101)
    • 44th bit : always 0, not used
    • 45 to 46 bits : this specifies the DPL (Decsriptor Previlege Level) level of gate entry.
    • 47th bit : specifies if this entry is valid or not (1 - valid, 0 - invalid)
    • 48 to 63 bits : reserved (not used)

    Basically the task gates are used in IDT, to allow the user process to make a context switch with another process without requesting the kernel to do this. As soon as this gate is hit (interrupt received on line for which there is a task gate in IDT), The CPU saves the context - the state of the processors' registers - of currently running processes to the TSS of current processeses, whose address is saved in the TR (Task Register) of the CPU. After saving the context of a current process the CPU sets the CPU registers with the values stored in the TSS of a new process, whose pointer is saved in the 16-31 bits of the task gate. Once the registers are set with these new values, the processor gets the new process and the context switch is done. Linux does not use the task gates, it only uses the trap and interrupt gates in IDT. I will not explain the task gates any further.

    b). Trap Gates

    Format of trap gates is as follows:

    • 0-15 bits : first 16 bits of a pointer to a kernel function which need to be invoked when this gate is hit
    • 16-31 bits : indicates the index of segment descriptor in GDT (Global Descriptor Table)
    • 32-36 bits : these bits are reserved and are not currently used.
    • 37-39 bits : always 000, not used
    • 40-43 bits : specify the type of entry (its value for trap gate is 1111)
    • 44th bit : always 0, not used
    • 45-46 bits : this specifies the DPL (Decsriptor Previlege Level) level of gate entry.
    • 47th bit : specifies if this entry is valid or not (1 - valid, 0 - invalid)
    • 48-63 bits : last 16 bits of a pointer to a kernel function which need to be invoked when this gate is hit

    Trap gates are basically used to handle exceptions generated by CPU. 0-15 bits and 48-63 bits together form the pointer (offset in segment identified by 16-31 bits of this entry) to a kernel function. The only difference between trap gates and interrupt gates is that, whenever an interrupt gate is hit, the CPU automatically disables the interrupts by clearing the IF flag in the CPU's EFLAG register. In case of trap gate, on the other hand, this is not done and interrupts remain enabled. As mentioned earlier, trap gates are used for exceptions, so in the Linux Kernel the first 32 enteries in the IDT are initialized with trap gates. In addition to this, the Linux Kernel also uses the trap gate for an system call entry (entry128 of IDT).

    c). Interrupt Gates

    Format is as follows:

    • 0-15 bits : first 16 bits of a pointer to a kernel function which need to be invoked when this gate is hit
    • 16-31 bits : indicates the index of segment descriptor in GDT (Global Descriptor Table)
    • 32-36 bits : these bits are reserved and are not currently used.
    • 37-39 bits : always 000, not used
    • 40-43 bits : specify the type of entry (its value for interrupt gate is 1110)
    • 44th bit : always 0, not used
    • 45-46 bits : this specifies the DPL (Decsriptor Previlege Level) level of gate entry.
    • 47th bit : specifies if this entry is valid or not (1 - valid, 0 - invalid)
    • 48-63 bits : last 16 bits of a pointer to a kernel function which need to be invoked when this gate is hit

    Format of interrupt gates is same as trap gates explained above,expect the value of type field (40-43 bits). In case of trap gates this has a value 1111 and in case of interrupts it has 1110.

    Note: whenever the interrupt gate is hit, interrupts are disabled automaticly.

    Hardware Checks for Interrupts and Exceptions

    Whenever an exception or interrupt occurs, the corresponding trap/interrupt gate is hit and the CPU performs some checks with fields of these gates. Things done by the CPU are as follows:

    1). get the ith entry from the IDT (the physical address and the size of an IDT is stored in the IDTR register of the CPU), here 'i' means the interrupt number.

    2). read the segment descriptor index from the 16-31 bits of the IDT entry, lets call this 'n'

    3). get the segment descriptor from the 'n'th entry in the GDT (the physical address and the size of an GDT is stored in the GDTR register of the CPU)

    4). the DPL of the nth entry in the GDT should be less than equal to the CPL (the Current Priviledge Level, specified in the read-only lowermost two bits of the CS register). Incase DPL > CPL, the CPU will generate a general protection exception. We will discuss later what this check will mean and why this is done. In short:

    general protection exception IfDPL (of GDT entry) < CPL, we are entering the higher previlege level (probably from user to kernel mode). In this case CPU switches thehardware stack (SS and ESP registers) from currently running process'suser mode stack to its kernel mode stack. We will see ahead, how this stack switch is exactly done. Note: stack switching idea has been mentioned here, but it actually happens after the 5th step mentioned below.

    5). for software interrupts (generated by assembly instructions 'int'), one more check is done. This check is not performed for hardware interrupts (interrupts generated by system devices and forwarded by PIC). Simply saying:

    • DPL (of IDT entry) >= CPL : ok, we have permission to enter through this gate

    • DPL < CPL : genreal protection exception

    6).switches the stack if DPL (of GDT entry) < CPL. In addition to this mode of CPU (least significant two bits of CS) is also changed from CPL to DPL (of GDT entry)

    7). if the stack switch has taken place (SS and ESP registers reset to kernelstack), then pushes the oldvalues of SS and ESP (pointing to user stack) on this new stack (kernel stack)

    8). pushes the EFALGS, CS and EIP registers on the stack (note: now we are working on kernel stack). This actually saves the pointer to user application instruction to which we need to return back after servicing the interrupt or exception

    9). In case of exceptions, if there is any harware code, processor pushes that also on kernel stack

    10). loads the CS with the value of GDT entry and EIP with the offset entry of IDT (0-15 bits + 48-63 bits)

    All the above action is done by CPU hardware without the execution of any software instruction. Checks performed at step 4th and 5th (mentioned above) are important.

    4th checks make sure that the code we are going to execute (Interrupt Service Routine) does not fall in a segment with lesser previlege. Obivously the ISR can not be in lesser previlege segment than that what we are into. DPL or CPL can have 4 values (0,1,2 for kernel mode and 3 fo user mode). Out of these four only two are used, that is 0 (for kernel mode) and 3 (for user mode).

    5th check makes sure that application can enter the kernel mode through specific gates only, in Linux only through 128th gate entry which is for system call invocation. If we set the DPL field of IDT entry to be 0,1 or 2,application programme (running with CPL 3) cannot enter through that gate entry. If it tries, CPU will generate general protection exception. This is the reason that in Linux, DPL fields of all the IDT enteries (except 128th entry used for system call) are initialized with value '0', this makes sure only kernel code can access these gates not application code. In Linux 128th entry (used for system call) is of trap gate type and its DPL value is initialized to 3, so that application code can enter through this gate by assembly instruction"int 0x80"

    Now lets see how does the stack switch happens when the DPL (of GDT entry) < CPL. CPU have TR (Task Register) register,which actually points to the TSS (Task Sate Segment) od currently running process. TSS is an architecture defined data structure which contains the stae of processor registers whenever context switch ofthis process happens. TSS include three sets of ESS and ESP fields, one for each level of processor (0,1 and 2). These fields specifies the stack to be used whenever we enter that processor level. Lets say the DPL value in GDT entry is 0, in this case, CPU will load the SS register with the value of SS field in TSS for 0 level and ESP registerwith the value of ESP field in TSS for 0 level. After loading the SS and ESP with these values, CPU starts pointing to the new kernel levelstack o current process. Old values of SS and ESP (CPU remembers them somehow) are now pushed on this new kernel level stack; this is done as we need to return back to old stack oncewe service the interrupts,exception or system call. Prudent readers must be wondering, why there is no field for level 3 stack in TSS. Well the reason for this is that we never use the CPU's stack switching mechanism to switch from higher CPU level (kernel mode - 0,1 and 2) to lower CPU level (user mode - 3).This is the reason that CPU while entering the higher level (kernel mode) saves the previously used lower level stack (user mode) on thekernel stack.

    Once all this CPU action is done, CPU's CS and EIP registers are pointing to the kernel functions written for handling interrupts or exceptions. CPU simply start executing the instructions at this point (now we are in kernel mode - level 0)

    Linux Kernel support for Handling Interrupts - Details of do_IRQ() function, core of Interrupt Handling

    As this is the software part related to handling of Interrupts and maybe interest of wider audience so I wrote this on a seperate page, please find this here.

    Parent Node : Subsystems

    Installing The IBM Lotus Symphony Beta 1 Office Suite On Ubuntu 7.04 | HowtoForge - Linux Howtos and
    www.howtoforge.com/ibm_lotus_symphony_ubuntu_7.04

    1 Get IBM Lotus Symphony

    Download the software from http://symphony.lotus.com/software/lotus/symphony/home.jspa.

    Note: You have to register first.

     

    2 Installation

    There is currently a bug, which prevents the installation if you have desktop effects enabled (Compiz/Beryl).
    So be sure that you have disabled the desktop effects before you proceed.

    chmod +x IBM_Lotus_Symphony_Linux.bin
    ./IBM_Lotus_Symphony_Linux.bin
    cd IBM_Lotus_Symphony_Linux/
    sudo ./setup.bin

    Next the installation wizard will pop up:

    (JavaScript must be enabled in your browser to view the large image as an image overlay.)

    The following window contains the license agreement:

    (JavaScript must be enabled in your browser to view the large image as an image overlay.)

    Choose a location for the installation - I recommend to use the default:

    (JavaScript must be enabled in your browser to view the large image as an image overlay.)

    Now the software is ready to be installed:

    (JavaScript must be enabled in your browser to view the large image as an image overlay.)

    The software is being installed:

    (JavaScript must be enabled in your browser to view the large image as an image overlay.)

    When the install is complete, choose Exit and open later:

    (JavaScript must be enabled in your browser to view the large image as an image overlay.)

     

    3 Bugfix

    After the installation finished, you'll see that the lotus folder in your home directory belongs to root. So you have to change the ownership:

    cd /home/%yourusername%/
    sudo chown -R %yourusername%:%yourusername% lotus/

     

    4 Use

    Currently the software is very slow (depending on your hardware). It is accessible via the Applications menu in the gnome panel:

    (JavaScript must be enabled in your browser to view the large image as an image overlay.)

    (JavaScript must be enabled in your browser to view the large image as an image overlay.)

     

    5 Deinstall

    If you want to uninstall the software, simlpy run the uninstaller:

    cd /opt/ibm/lotus/Symphony/_uninst/
    sudo ./uninstaller.bin

     

    6 Links

    B* Probability Based Search

    Abstract We describe a search algorithm for two-player games that relies on selectivity rather than brute-force to achieve success. The key ideas behind the algorithm are:
    Stopping when one alternative is clearly better than all the others, and Focusing the search on the place where the most progress can likely be made toward stopping.
    Critical to this process is identifying uncertainty about the ultimate value of any move. The lower bound on uncertainty is the best estimate of the real value of a move. The upper bound is its optimistic value, based on some measure of unexplored potential. This provides an I-have-optimism-that-needs-to-be-investigated attitude that is an excellent guiding force. Uncertainty is represented by probability distributions. The search develops those parts of the tree where moving existing bounds would be most likely to succeed and would make the most progress toward terminating the search. Termination is achieved when the established real value of the best move is so good that the likelihood of this being achieved by any other alternative is minimal.

    The B* probability based search algorithm has been implemented on the chess machine Hitech. En route we have developed effective techniques for:

    Producing viable optimistic estimates to guide the search,
    Producing cheap probability distribution estimates to measure goodness,
    Dealing with independence of alternative moves, and
    Dealing with the Graph History Interaction problem.
    This report describes the implementation, and the results of tests including games played against brute-force programs. Test data indicate that B* Hitech is better than any searcher that expands its whole tree based on selectivity. Further, analysis of the data indicates that should additional power become available, the B* technique will scale up considerably better than brute-force techniques. Keywords: Probabilistic B*, Computer Chess, Selective Search, Two-Person Games

    Postscript

    CS540 Machine Learning Project - SCRABBLE
    pages.cs.wisc.edu/~jerryzhu/cs540/project/report/s...

    IV. Method

    The algorithm we used to implement a fast Scrabble player has several components to it. First, we reduced the entire problem to one dimension. All moves are either horizontal or vertical. We then look at all plays as horizontal because we can just rotate the board to make horizontal words vertical. Now we have a series of rows, instead of a complete two dimensional object. Now when you form a word you have to check to see if you have letters above or below, that could potentially form other words or render the move illegal because it would make a non-word out of those letters. Since you can only add one tile in a spot on the board it is easy to compute this ahead of time. So we just compute all valid letters that would form a down word, and since the number of letter is small we use a string of bits to represent which letters can go there. Now when comes to searching for a word that we can form we created a data structure that will make things faster. We use a letter tree, where essentially words are a path from the root. That is to say all terminal nodes in the trees are words. All leaves are terminal nodes but not all terminal nodes are leaves. For example, cat is a word and thus a terminal node, but is not a leaf because cats is a child of cat. Now because the full tree is so large we would not want to handle it every time. So, we compile the tree ahead of time in a separate file before the program is ever ran. Then when we need a part of the tree to find a word the AI can request only the relevant part of the tree. Now for each spot where we could possibly create a move, which is either to the right or left a placed tile, we extend with valid letters leading to a word in both directions are record the store eventually returning the highest point move. So the AI operates on a several different principles, the first being a data structure that allows it to search effectively with minimum overhead. Second, a backtracking algorithm that stops when it no longer has the letters to continue, and then backtracks to check the rest of the tree. Lastly, as many precomputations as possible to limit the amount of calculations needed during a computer move.
    Medibuntu - Community Ubuntu Documentation
    help.ubuntu.com/community/Medibuntu

    Adding the Repositories

    Below are the instructions to add the Medibuntu repository to your system's list of APT repositories.

    Add Medibuntu to your sources.list, as well as its GPG key to your keyring. Make sure to use the correct sources.list that corresponds to your current distribution.

    What is Weather wallpaper?

    Weather wallpaper is a program which connects to NOAA each hour to get the current weather at the specified location and creates and sets a wallpaper with the data retrieved.

    Installation

    If you use Debian, Ubuntu, or another distro which uses deb packages, you can download the deb (weather-wallpaper-0.2.0.deb) and simply double-click on it to launch the installer, or you can add my repository to your sources.list file, so that your distro can inform you of new releases.

    If you choose for the second method, open the file /etc/apt/sources.list with your favorite editor as root and add this line:

    deb http://mundogeek.net/repo feisty all
    Update the list of packages writing sudo aptitude update on the terminal, and install the application by writing sudo aptitude install weather-wallpaper.

    If you use Archlinux, you can find the PKGBUILD at the ArchLinux User-community Repository.

    If you use Gentoo, you can find the ebuild at Gentoo's Bugzilla.

    If you use other distribution, download the tar.gz: weather-wallpaper-0.2.0.tar.gz, uncompress it, and execute the command make install with root privileges.

    Yes, we do. You do need to install some additional software. Check out the Tribler readme.txt in the source code available from this server and our SourceForge page.

    Alternatively, you can try our Ubuntu package, by adding our Ubuntu repository to the Synaptic Package Manager, as follows:

    1. Start the package manager from the System / Administration menu
    2. Open the Repositories menu from the Settings menu
    3. Click on the Third-Party Software tab
    4. Click on the Add+ button
    5. Type deb http://ubuntu.tribler.org/ feisty main
    6. Click the Add Source+ button
    7. Close the Repositories menu
    8. Click the Reload button to retrieve the package info from the Tribler repository
    9. Click Search and search for "tribler"
    10. Mark Tribler for installation by clicking
    11. Ignore the warning about authentication, it is harmless
    12. Install Tribler by clicking the "Apply" button at the top

    You can now start Tribler from the Applications / Internet menu.

    How do I make a deb package of a ruby script? - Ubuntu Forums
    ubuntuforums.org/showthread.php?t=406069
    ere is one way to create a .deb file, using the program epm. First, install epm with the command
    Code:
    $ sudo apt-get install epm
    As an example, I will create a package for a very simple python program called helloworld.py:
    Code:
    #!/usr/bin/env python
    
    #
    # helloworld.py
    #
    
    print 'Hello, World!'
    In the directory that contains helloworld.py, create a file called helloworld.list that looks like this:
    Code:
    %product Hello World
    %copyright 2007 by Yours Truly
    %vendor Yours Truly
    %description This program prints "Hello, World!"
    %version 0.1
    %readme README
    %license LICENSE
    %requires python
    
    f 755 root sys /usr/bin/helloworld.py helloworld.py
    Then, in the same directory, create the files README and LICENSE. At a minimum, do this:
    Code:
    $ touch README
    $ touch LICENSE
    (Of course, you should really put useful information in those files.)

    Finally, we use epm to create the package:
    Code:
    $ epm -f deb helloworld
    You might see this warning:
    Code:
    epm: Warning - file permissions and ownership may not be correct
         in Debian packages unless you run EPM as root!
    but the package will work fine (well, it has for me so far).

    The package will be created in a subdirectoy; the name of the subdirectory and the package depend on the architecture of your computer. On an Intel computer (running the 2.6 kernel), the directory is linux-2.6-intel, and the package is helloworld-0.1-linux-2.6-intel.deb.

    If you don't want to include "linux-2.6-intel" in the filename of the package, you can use the -n option:
    Code:
    epm -n -f deb helloworld
    This will create a package called helloworld-0.1.deb. (It will still be in the directory linux-2.6-intel.)

    You can find out more about epm here: http://www.easysw.com/epm/

    I don't know anything about setting up a repository, so I can't help you with that.
    Howto: Access GetDeb.net packages through Apt-get/Synaptic « Xubuntu Blog
    xubuntu.wordpress.com/2007/08/05/howto-access-getd...

    Howto: Access GetDeb.net packages through Apt-get/Synaptic

    August 5, 2007 at 7:02 pm | In xubuntu, tips and tricks |

    Ok, so it’s not really Xubuntu-related, but it is something that I think will be helpful to a lot of people. If you’re a GetDeb.net user, you can use this tip to sync your GetDeb packages with the update manager and Synaptic.

    1) Open up a terminal (Xfce Menu > Terminal) and run the following:

    gksudo mousepad /etc/apt/sources.list

    2) Put in the following on a new line at the end of the file:

    deb http://ubuntu.org.ua/ getdeb/

    Save the file and exit.

    3) Now run the following in the terminal:

    sudo apt-get update
    sudo apt-get upgrade

    If all works well, you should get updates for the programs you downloaded through GetDeb.net, and be able to install GetDeb.net programs through the Synaptic package manager.

    From my experience, the site has occasional downtime. If running sudo apt-get update gives you 404 Errors relating to http://ubuntu.org.ua/, don’t panic. Simply be patient and try rerunning sudo apt-get update later in the day.

    Enjoy!

    Google Reader (100+)
    www.google.com/reader/view/

    Grandr: Panel Applet that allow you to select screen resolution and orientation

    from Ubuntu Linux Blog of ralph by nospam@example.com (ralph)


    Grandr
    is a GNOME Panel Applet that allow you to select screen resolution and orientation from your GNOME Panel.

    It allows you to select screen resolution and orientation from you GNOME Panel. Unfortunately with my ATi X1400 I don't have the option to choose the orientation of the Panel.

    You can get a deb file from here

    After you install it, select the panel you want to add it to, right
    click and select "Add to Panel" then scroll thru the list and select
    "Display Geometry Switcher". A panel applet should appear

    Feed2JS

    Cut and Paste JavaScript

    Below is the code you need to copy and paste to your own web page to include this RSS feed. The NOSCRIPT tag provides a link to a HTML display of the feed for users who may not have JavaScript enabled.

    cut and paste javascript:

    Intro to Algorithms: CHAPTER 17: GREEDY ALGORITHMS
    serghei.net/docs/programming/Cormen/chap17.htm

    17.4 Theoretical foundations for greedy methods

    There is a beautiful theory about greedy algorithms, which we sketch in this section. This theory is useful in determining when the greedy method yields optimal solutions. It involves combinatorial structures known as "matroids." Although this theory does not cover all cases for which a greedy method applies (for example, it does not cover the activity-selection problem of Section 17.1 or the Huffman coding problem of Section 17.3), it does cover many cases of practical interest. Furthermore, this theory is being rapidly developed and extended to cover many more applications; see the notes at the end of this chapter for references.

    17.4.1 Matroids

    A matroid is an ordered pair satisfying the following conditions.

    1. S is a finite nonempty set.

    2. is a nonempty family of subsets of S, called the independent subsets of S, such that if and A B, then . We say that is hereditary if it satisfies this property. Note that the empty set is necessarily a member of .

    3. If , and |A| < |B|, then there is some element x B - A such that . We say that M satisfies the exchange property.

    The word "matroid" is due to Hassler Whitney. He was studying matric matroids, in which the elements of S are the rows of a given matrix and a set of rows is independent if they are linearly independent in the usual sense. It is easy to show that this structure defines a matroid (see Exercise 17.4-2).

    As another illustration of matroids, consider the graphic matroid defined in terms of a given undirected graph G = ( V, E) as follows.

    The set SG is defined to be E, the set of edges of G.

    If A is a subset of E, then if and only if A is acyclic. That is, a set of edges is independent if and only if it forms a forest.

    The graphic matroid MG is closely related to the minimum-spanning-tree problem, which is covered in detail in Chapter 24.

    Theorem 17.5

    If G is an undirected graph, then is a matroid.

    Proof Clearly, SG = E is a finite set. Furthermore, is hereditary, since a subset of a forest is a forest. Putting it another way, removing edges from an acyclic set of edges cannot create cycles.

    Thus, it remains to show that MG satisfies the exchange property. Suppose that A and B are forests of G and that |B| > |A|. That is, A and B are acyclic sets of edges, and B contains more edges than A does.

    It follows from Theorem 5.2 that a forest having k edges contains exactly |V|-k trees. (To prove this another way, begin with |V| trees and no edges. Then, each edge that is added to the forest reduces the number of trees by one.) Thus, forest A contains |V| - |A| trees, and forest B contains |V| - |B| trees.

    Since forest B has fewer trees than forest A does, forest B must contain some tree T whose vertices are in two different trees in forest A. Moreover, since T is connected, it must contain an edge (u, v) such that vertices u and v are in different trees in forest A. Since the edge (u, v) connects vertices in two different trees in forest A, the edge (u, v) can be added to forest A without creating a cycle. Therefore, MG satisfies the exchange property, completing the proof that MG is a matroid.

    Given a matroid , we call an element x A an extension of if x can be added to A while preserving independence; that is, x is an extension of A if . As an example, consider a graphic matroid MG. If A is an independent set of edges, then edge e is an extension of A if and only if e is not in A and the addition of x to A does not create a cycle.

    If A is an independent subset in a matroid M, we say that A is maximal if it has no extensions. That is, A is maximal if it is not contained in any larger independent subset of M. The following property is often useful.

    Theorem 17.6

    All maximal independent subsets in a matroid have the same size.

    Proof Suppose to the contrary that A is a maximal independent subset of M and there exists another larger maximal independent subset B of M. Then, the exchange property implies that A is extendable to a larger independent set A {x} for some x B - A, contradicting the assumption that A is maximal.

    As an illustration of this theorem, consider a graphic matroid MG for a connected, undirected graph G. Every maximal independent subset of MG must be a free tree with exactly |V| - 1 edges that connects all the vertices of G. Such a tree is called a spanning tree of G.

    We say that a matroid is weighted if there is an associated weight function w that assigns a strictly positive weight w(x) to each element x S. The weight function w extends to subsets of S by summation:

    for any A S. For example, if we let w(e) denote the length of an edge e in a graphic matroid MG, then w(A) is the total length of the edges in edge set A.

    17.4.2 Greedy algorithms on a weighted matroid

    Many problems for which a greedy approach provides optimal solutions can be formulated in terms of finding a maximum-weight independent subset in a weighted matroid. That is, we are given a weighted matroid , and we wish to find an independent set such that w(A) is maximized. We call such a subset that is independent and has maximum possible weight an optimal subset of the matroid. Because the weight w(x) of any element x S is positive, an optimal subset is always a maximal independent subset--it always helps to make A as large as possible.

    For example, in the minimum-spanning-tree problem, we are given a connected undirected graph G = (V, E) and a length function w such that w (e) is the (positive) length of edge e. (We use the term "length" here to refer to the original edge weights for the graph, reserving the term "weight" to refer to the weights in the associated matroid.) We are asked to find a subset of the edges that connects all of the vertices together and has minimum total length. To view this as a problem of finding an optimal subset of a matroid, consider the weighted matroid MG with weight function w', where w'(e) = w0 - w(e) and w0 is larger than the maximum length of any edge. In this weighted matroid, all weights are positive and an optimal subset is a spanning tree of minimum total length in the original graph. More specifically, each maximal independent subset A corresponds to a spanning tree, and since

    w'(A) = (|V| - 1)w0 - w(A)

    for any maximal independent subset A, the independent subset that maximizes w'(A) must minimize w(A). Thus, any algorithm that can find an optimal subset A in an arbitrary matroid can solve the minimum-spanning-tree problem.

    Chapter 24 gives algorithms for the minimum-spanning-tree problem, but here we give a greedy algorithm that works for any weighted matroid. The algorithm takes as input a weighted matroid with an an associated positive weight function w, and it returns an optimal subset A. In our pseudocode, we denote the components of M by S[M] and and the weight function by w. The algorithm is greedy because it considers each element x S in turn in order of nonincreasing weight and immediately adds it to the set A being accumulated if A {x} is independent.

    The elements of S are considered in turn, in order of nonincreasing weight. If the element x being considered can be added to A while maintaining A's independence, it is. Otherwise, x is discarded. Since the empty set is independent by the definition of a matroid, and since x is only added to A if A {x} is independent, the subset A is always independent, by induction. Therefore, GREEDY always returns an independent subset A. We shall see in a moment that A is a subset of maximum possible weight, so that A is an optimal subset.

    The running time of GREEDY is easy to analyze. Let n denote |S|. The sorting phase of GREEDY takes time O(n lg n). Line 4 is executed exactly n times, once for each element of S. Each execution of line 4 requires a check on whether or not the set A {x} is independent. If each such check takes time O(f(n)), the entire algorithm runs in time O(n lg n + nf(n)).

    We now prove that GREEDY returns an optima1 subset.

    Lemma 17.7

    Suppose that is a weighted matroid with weight function w and that S is sorted into nonincreasing order by weight. Let x be the first element of S such that {x} is independent, if any such x exists. If x exists, then there exists an optimal subset A of S that contains x.

    Proof If no such x exists, then the only independent subset is the empty set and we're done. Otherwise, let B be any nonempty optimal subset. Assume that x B; otherwise, we let A = B and we're done.

    No element of B has weight greater than w(x). To see this, observe that y B implies that {y} is independent, since and I is hereditary. Our choice of x therefore ensures that w(x) w(y) for any y B.

    Construct the set A as follows. Begin with A = {x}. By the choice of x, A is independent. Using the exchange property, repeatedly find a new element of B that can be added to A until |A| = |B| while preserving the independence of A. Then, A = B - {y} {x} for some y B, and so

    w(A) = w(B) - w(y) + w(x)

     w(B) .

    Because B is optimal, A must also be optimal, and because x A, the lemma is proven.

    We next show that if an element is not an option initially, then it cannot be an option later.

    Lemma 17.8

    Let be any matroid. If x is an element of S such that x is not an extension of , then x is not an extension of any independent subset A of S.

    Proof The proof is by contradiction. Assume that x is an extension of A but not of . Since x is an extension of A, we have that A {x} is independent. Since is hereditary, {x} must be independent, which contradicts the assumption that x is not an extension of .

    Lemma 17.8 says that any element that cannot be used immediately can never be used. Therefore, GREEDY cannot make an error by passing over any initial elements in S that are not an extension of , since they can never be used.

    Lemma 17.9

    Let x be the first element of S chosen by GREEDY for the weighted matroid . The remaining problem of finding a maximum-weight independent subset containing x reduces to finding a maximum-weight independent subset of the weighted matroid , where

    the weight function for M' is the weight function for M, restricted to S'. (We call M' the contraction of M by the element x.)

    Proof If A is any maximum-weight independent subset of M containing x, then A' = A - {x} is an independent subset of M'. Conversely, any independent subset A' of M' yields an independent subset A = A' {x} of M. Since we have in both cases that w(A) = w(A') + w(x), a maximum-weight solution in M containing x yields a maximum-weight solution in M', and vice versa.

    Theorem 17.10

    If is a weighted matroid with weight function w, then the call GREEDY(M, w) returns an optimal subset.

    Proof By Lemma 17.8, any elements that are passed over initially because they are not extensions of can be forgotten about, since they can never be useful. Once the first element x is selected, Lemma 17.7 implies that GREEDY does not err by adding x to A, since there exists an optimal subset containing x. Finally, Lemma 17.9 implies that the remaining problem is one of finding an optimal subset in the matroid M' that is the contraction of M by x. After the procedure GREEDY sets A to{x}, all of its remaining steps can be interpreted as acting in the matroid , because B is independent in M' if and only if B {x} is independent in M, for all sets . Thus, the subsequent operation of GREEDY will find a maximum-weight independent subset for M', and the overall operation of GREEDY will find a maximum-weight independent subset for M.

    GOOD COPY BAD COPY
    - a documentary about the current state of copyright and culture
    Download Free Political Documentaries And Watch Many Interesting, Controversial Free Documentary Fil
    freedocumentaries.org/
    Bowling for Columbine

    Michael Moore investigates the 1999 massacre at Columbine High School in Littleton, Colorado. He looks into the causes for such violent crimes, focusing on guns as a symbol of both American freedom and its self-destruction.
    Ubuntu Feisty Repository - Avant Window Navigator
    awn.wetpaint.com/page/Ubuntu+Feisty+Repository

    Ubuntu Feisty Repository

    f you are running Ubuntu Feisty Fawn 7.04, you can install AWN and Affinity from an Ubuntu repository.

    First, edit your apt sources: gksudo gedit /etc/apt/sources.list

    Add these lines to the bottom:

    ## Avant Window Navigator
    deb http://download.tuxfamily.org/syzygy42/ feisty avant-window-navigator
    deb-src http://download.tuxfamily.org/syzygy42/ feisty avant-window-navigator


    Then do this in a terminal:

    wget http://download.tuxfamily.org/syzygy42/8434D43A.gpg -O- | sudo apt-key add -
    sudo apt-get update
    sudo apt-get upgrade


    Now to install the stable AWN version do

    NOTICE: No stable AWN at this time. It will be added at the next release

    Or for AWN SVN do
    sudo apt-get install avant-window-navigator-svn

    The Affinity in this repo requires Tracker to work properly:
    sudo apt-get install tracker

    For the stable Affinity version do
    sudo apt-get install affinity

    Or for Affinity SVN do
    sudo apt-get install affinity-svn

    Post any questions about this repo in this thread on the Ubuntu Forums: http://ubuntuforums.org/showthread.php?t=385981
    What's Your Biggest Secret - Page 4 - Ubuntu Forums
    ubuntuforums.org/showthread.php?t=503492&page=4

    Windows (n): A 32 bit shell for a 16 bit operating system,
    originally written for an 8 bit processor on a 4 bit bus by a 2 bit company
    that can't stand 1 bit of competition!
    - Anon
    Main Page - Pyro Desktop
    pyrodesktop.org/Main_Page

    What is Pyro?

    Flickr Add-on
    Exposé-alike
    Window Picker

    Pyro is a new kind of desktop environment for Linux built on Mozilla Firefox. Its goal is to enable true integration between the Web and modern desktop computing.

    By merging the Web with the desktop, Pyro offers the first big step toward a new future for the Web and the applications built for it.

    In Pyro, Web content is no longer confined to the browser's window. Instead, trusted Web sites and extensions are given access to the full range of interactivity and control enjoyed by native applications today.

    Imagine...

    • Rich Web pages running side-by-side with native applications
    • Single programming environment for the whole desktop
    • Desktop-wide mashups, killer Web integration
    • Novel desktop effects

    Pyro enables a desktop that tracks the latest in Web technology, and helps mold

    Computer Science Community - Capstone courses this coming year
    csc.cdf.toronto.edu/bb/YaBB.pl?num=1183062014/9#9
    Capstone courses this coming year
    Jun 28th, 2007, 4:20pm
     
    As I've announced previously, we'll have three capstone courses running this year:
        490 in the fall by Steve Engels.  
        491 in the fall by Karan Singh.  
        490 in the winter by Greg Wilson.
     
    We'd like you to consider taking these courses, so I've asked the three instructors to provide "blurbs" describing their plans. They're not all in yet, but here's what we have so far.
     
    Steve Engels: Introduction to Game Design
    An introduction to the process of game design. This course provides a comprehensive look at the software engineering, artificial intelligence, graphics and human-computer interaction in video games. Topics include the history, social issues and story elements behind video games, and the business of game development and promotion. The main focus is a team implementation of a complete video game as a course project, with smaller deliverables that correspond to milestones in real-world game development.
     
    Greg Wilson
    In this section, students will be matched up with real customers from local companies, non-profits, open source organizations, and university departments other than CS, and tasked with building real, useful software.
     
    Past projects (done under the CSC494/495 banner) are summarized at
    https://stanley.cs.toronto.edu/reports/reports.html , and include brain scan visualization, mail clouds, a genealogical data viewer, and an inventory tool for a local foodbank.
    Back to top
     
     

    Jim Clarke, Senior Lecturer and Associate Chair for Undergraduate Studies

    How To Raise Money From VCs

    Duncan Riley

    30 comments »

    The following video “How To Raise Money From VC’s” comes from 5min.com, an instructional video site we covered in May, and is currently getting a lot of attention in Israel. The video (in Hebrew with English subtitles) provides some fun advice for anyone looking at raising money from VC’s. Content aside I was just impressed at not only the quality of the video playback, but the built in support for switching subtitles on and off as well. If quality is the defining point of differentiation amongst instructional video sites, 5min has positioned itself very well. Enjoy.

    This entry was posted on Saturday, July 14th, 2007 at 11:13 pm and is filed under Company & Product Profiles. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

    Trackbacks/Pings (Trackback URL)

    Comments

    RSS feed for comments on this post.

    1. Search*Engines WEB

      July 14th, 2007 at 11:41 pm

      It will be interesting to see if the Techcrunch conference helps some of the more promising StartUps get funded

      If the Winner is unfunded at the time of winning - it will likely the publicity will change that situation in mere days

    2. Chee Kui

      July 15th, 2007 at 12:01 am

      Obviously, 5min.com have better interface than Youtube. And yeah, the video is short and sweet :p
      I might try it for my blog one day.

    3. Michael Arrington

      July 15th, 2007 at 12:09 am

      nice interface. what a total piece of crap from the content perspective.

    4. John Ambrof

      July 15th, 2007 at 12:11 am

      that dude was hilarious!!!

    5. Judd

      July 15th, 2007 at 12:16 am

      The subtitles don’t do justice to this content. (Do they ever?). This is much more entertaining than the english subtitles reveal.

    6. sam madino

      July 15th, 2007 at 12:21 am

      Tip 0,

      Your chances of getting VC money is 2-3X higher if you are a member of the tribe

      But the video is in Hebrew so I guess this is assumed…

      I agree that guy is hilarious.

    7. Cem

      July 15th, 2007 at 12:30 am

      This guy rocks! Absolutely hilarious! *LOL*

    8. Chee Kui

      July 15th, 2007 at 12:39 am

      lol.. well, Mike, he got some points there. Don’t be too harsh. We don’t want any fallen angel lurking around here. lol!
      I went to 5min.com and have a look. They have lots of good videos in it.

    9. Duncan Riley

      July 15th, 2007 at 12:40 am

      Also (and I didn’t notice this until after the post) click on the smart player button for more interface goodness

    10. Ouriel Ohayon

      July 15th, 2007 at 12:58 am

      Mike, Duncan, i guess Quality of content is relative to the context. I posted this video on my personnal blog a few days ago and the reactions were quite different

      http://ouriel.typepad.com/mybl.....-vcs-.html

      Actually i mentionned to someone at 5min the video was hilarious but only if you really know the israeli culture and mentality as it is full of references to typical local social behaviours and expressions impossible to translate.

      Obviously did not work with you, and that’s fine. If this was not for the features you mentionned i am not sure i would have posted the video here.

    11. Michael Arrington

      July 15th, 2007 at 1:05 am

      I’m open to cultural interpretation, but sometimes something sucks in all cultures.

    12. HH!

      July 15th, 2007 at 1:05 am

      hey! I don’t think that was “a total piece of crap from the content perspective.”, he made some good points… not very technical, but he went for the acting part of the presentation.

      good job, and yes 5min.com is really good

    13. aandarian

      July 15th, 2007 at 1:09 am

      “what a total piece of crap from the content perspective.” Somebodies mad at something. Too witty for you Arrington??? Come on it was great.

    14. John Rose

      July 15th, 2007 at 1:16 am

      He is fucking funny!!

    15. Jan Postter

      July 15th, 2007 at 1:24 am

      At the very least, it was entertaining and mildly humorous. Some crude (and controversial) points in there, but I suppose each man paves his own road to success!

    16. Israeli

      July 15th, 2007 at 1:24 am

      Obviously the vid is exaggerated for humor purposes, but it still struck a cord with a lot of people so I guess there’s a kernel of truth to it in addition to the hilarity.

    17. Chee Kui

      July 15th, 2007 at 1:27 am

      Let’s just say the video is entertaining. I don’t know if the tips he shared would work, so maybe we need to try it to find out if it’s really just a piece of crap. Anyone? :p

    18. lawrence

      July 15th, 2007 at 1:38 am

      he could be talking about how tasty crap is - and he’d still convince many

      he’s quick, witty, and confident - the perfect salesman trifecta

    19. Antonello

      July 15th, 2007 at 1:42 am

      As a Sicilian guy, I liked it very much: it is really hilarious and according to the Mediterranean humor!
      Anyway, being in the industry, I don’t believe that everything he says about VCs is true: get funded is an hard job, but it’s not impossible and a VC doesn’t really get shocked if you use a competitor’s logo in your presentation, or if you use terms that are not understandable, or if you put estimations in a spreadsheet that don’t mean anything: that would mean you found the dumbest one. A good VC, in fact, will ask you about the meaning of the not understandable acronym, he/she will ask you about the full explanation of the estimations before letting you continue, and will be aware of tricks like putting a rival’s logo in the presentation.

      Anyway, as I said, it wa hilarious…

    20. sam madino

      July 15th, 2007 at 1:54 am

      I though the video was funny, but I do agree with MA, the content was crap!

      If you act like this guy in a VC meeting, you most likely will tarnish your reputation in the valley for a long time, unless you are some genius with some new technology that is very defensible. Otherwise, VCs invest in teams and what they can do. It’s mainly about reducing their risk and they have to feel confident that the team can deliver. I do agree with the guy in video, VCs want to invest in google pre IPO, however, that wasn’t one of his points, it was just a side note.

      BTW, 5min UI is cool…but good luck. It reminds of ehow.com back in the days. I remember going to a program with the ceo as their main speaker. I asked her how scalable would it be to build all this how to instructions. She said oh very scalable. I knew she was full of it, and the company later closed.

      The 5min.com guys are targeting instructional videos. The killer app here is not a cool UI, but good content. This is where they are going to fail. Since they do not have the distribution of youtube. So anyone who can create high quality content, would go with youtub and make money off the revenu share that they’ll get off youtub. The much higher distribution rate just mean a lot more revenu for the content creator.

      If I were them, I would instead license their UI to all the other youtube wannabes and make money off of them.
      Just $.02 from someone who lived through the first bubble.

    21. other

      July 15th, 2007 at 2:41 am

      this video and guy was hilarious, quit whining mike.

    22. Nicholas Macias

      July 15th, 2007 at 2:51 am

      RE #20: “This is where they are going to fail.”

      I would say that is their challenge, but hardly that they’re doomed. YouTube is optimized for general use, and the “instructional” market (as it were) has different needs. Video quality, for one example, can make or break certain types of tutorials.

      Sclipo seems to be working on slightly more novel functionality so far (i.e. live classrooms), but 5min has great brand potential and better UE. Either of these companies would do well to concentrate on nuturing their community over the trap of one-hit-wonder material. To Sam’s point, a Mentos-and-Diet-Coke tutorial will always have more potential on YouTube.

    23. Ah Yer!

      July 15th, 2007 at 2:54 am

      Based on my experience with VC’s, or more accurately consistent lack thereof, he’s 100 percent right. Clearly my earnest and uncool and businesslike approach isn’t working, so I’ll try this dude’s approach next. Gotta go work on my cool. Can somebody please tell me how I become the “vibe”?

      Nick

    24. Eric Rice

      July 15th, 2007 at 3:25 am

      @Nick: Cigar, glass of scotch, and uh, Prada on his head?

      Also, becoming the ‘vibe’ includes not deconstructing every nuance.

      I mean, what, no one has posted 48 comments about the passage of time throwing off the continuity along with the cigar and glass switching hands.

      FAIL all of you, especially the VCs.

    25. Ali

      July 15th, 2007 at 3:32 am

      Arrington, Unfortunately - Shit Sells as much as Sex!

    26. Allen Stern

      July 15th, 2007 at 4:44 am

      If you wanted to do the “wrong vc logo” bit, there is a better way to do it:

      – Have two versions of the presentation ready.
      – Load incorrect logo version
      – When the slide appears, explain that you rushed over and that you made a mistake on loading the presentation
      – then take off the screen, change the presentation to the correct one

      (not suggesting that this is a good idea by any means)

    27. Michael Vu

      July 15th, 2007 at 5:28 am

      This was a hilarious video.

    28. PLYmedia

      July 15th, 2007 at 5:36 am

      The subtitles are provided by PLYmedia’s subtitling full service tool and service which adds added value to this 5min video by combining the old and the new (subtitles with internet video). Now, online video is more interactive by allowing the viewer to switch between languages just like a DVD (www.plymedia.com/subply).

    29. Sameer

      July 15th, 2007 at 8:19 am

      What a funny that was….

    Leave a Reply

    Continue the conversation in TechCrunch Forums

    Name (required)

    Mail (will not be published) (required)

    Website

    1. Google Notebook - a simplified version of Google Notebook that lets you access your notes and easily add new notes. It's a good idea to use it if you don't want to install the extension.

    2. Google Talk - the Flash gadget for Google Talk is a good replacement for the desktop client if you don't use more advanced features like voice chat or file sharing.

    3. Google Search - this page was designed for Internet Explorer and it's useful if you want see the list of search results in the sidebar.

    4. Google Docs & Spreadsheets - the list of your files sorted by the last modified date.
    "Hello Ubuntu" in every programming language - Ubuntu Forums
    ubuntuforums.org/showthread.php?t=497579
    "Hello Ubuntu" in every programming language

    I've just been inspired by a webpage with 193 examples of "Hello World!" programs.

    I want to make something a just slightly more useful for the beginning programmer.

    Write the most concise, but clearly readable program (call it helloubuntu) according to this specification:
    1. Say: "Hi! What's your name? "
    2. User enters name.
    3. Say: "Hello, (username)! Welcome to Ubuntu!"
    You can also use a simple GUI, like a dialog box, to ask the question, input name, etc. Just make sure the code is elegant and easy-to-understand.

    You can use programming languages, markup languages, shell scripts, or even SQL statements.

    Try not to hog too many languages. Give other posters a fair go at posting their example too. If you are posting an alternative version of code for a language that has already been posted, mention that it is an alternative version.


    I'll start off:

    Ada (using normal fixed-length string)
    Code:
    with Ada.Text_IO;
    
    use Ada.Text_IO;
    
    procedure helloubuntu is
    	username : String(1..30);
    	lastchar : Integer;
    begin
    	Put_Line("Hi!  What's your name?");
    	Get_Line(username, lastchar);
    	Put_Line("Hello, " & username(1..lastchar) & "!  Welcome to Ubuntu!");
    end helloubuntu;
    Ada (using the 2005 standard's unbounded-string)
    Code:
    with Ada.Text_IO, Ada.Text_IO.Unbounded_IO, Ada.Strings.Unbounded;
    
    use Ada.Text_IO, Ada.Text_IO.Unbounded_IO, Ada.Strings.Unbounded;
    
    procedure helloubuntu is
    	username : Unbounded_String;
    begin
    	Put("Hi!  What's your name? ");
    	Get_Line(username);
    	Put_Line("Hello, " & username & "!  Welcome to Ubuntu!");
    end helloubuntu;
    Can we beat 193?
    Invite Share - Everyone is invited!
    www.inviteshare.com/
    Have some invitations that you want to get off your hands? Why not share them with others.

    If you have an account with us please login below. If not, please register now.

    Remote access - Page 2 - Ubuntu Forums
    ubuntuforums.org/showthread.php?t=465538&highlight...
    from another thread:

    http://ubuntuforums.org/showthread.p...t=xhost&page=2

    The trick was in setting on your local machine (the one you want to display TO):

    System -> Administration -> Login Window -> Security -> Deny TCP Connections to Xserver

    to OFF. Then restart your local window manager/xserver or just reboot.

    After that, ssh with X Forwarding (as you mentioned) to your remote desktop (at home), set your DISPLAY variable to the correct IP address:0.0 of your local machine and execute your command.

    Note: you will also have to open an xterm on your local machine and type 'xhost +' or some more secure form of that and/or make a permanent setup which file name escapes me at the moment...

    P.S. This has irritated me for some time and I only just now found the above mentioned thread with the answer, so I feel your pain...
    sendmeon.com - 'to promote all good things'
    www.sendmeon.com/childproofpc_manual#installparent...

    How to set up a childproof PC using Linux

    This guide is designed to help with setting up a PC from scratch to be freecycled off to a family with children. It is part of the 'Give away a childproof PC' campaign. It tries to cover all aspects and provide links to resources on the web. If you would like to add anything, please contact us through the contact form.

    Overview

    Why do it?

    If you are reading this, chances are you know a thing or two about Linux and are not afraid of pulling your PC apart. This is a skill that could be put to good for someone else. The main reward will be a warm feeling inside once you're done.

    Linux distributions have come a long way recently. I'd even say that they are now easier to own than a Windows machine if you consider the bother with viruses and spyware. It therefore makes sense to set up a machine so that it will be useful for more years to come.

    Get a PC or bits for a PC off Freecycle

    First you need a PC. The place to get it is off your local Freecycle network. PCs normally go like hot cakes, so don't expect a top system. You will probably be able to get a PC without a hard drive, a broken computer or a very slow one which isn't fast enough to run Windows XP. If you tell people what you are doing you might be surprised by how helpful people can be. Some will even offer to drop the parts off when they are in your area.

    Some words of wisdom: Try to build one system at a time and don't collect large boxes of random hardware. Chances are they are not working or are not of use to you. You could get stuck with a lot of hardware knocking around.

    Make sure you know who gave you what so you can acknowledge them later.

    It is probably a good idea to get a monitor for your system. If you set it up using your own monitor and freecycle it without one, the new owner might run into trouble with setting that up. Thanks to flat screens, good CRT monitors are easy to come by these days.

    Install a lightweight Linux. XUbuntu, KateOS, or whatever you think will work

    This section describes how to install Xubuntu on the computer. This is a good choice because it runs on low spec machines quite well. Also it is easy to maintain by someone who knows little about Linux. Edubuntu is geared towards children, but it needs a more powerful computer and parental control doesn't come as standard yet. Ubuntu CE (Christian Edition) comes with parental control but also needs better spec.

    KateOS works better on lower spec computers. It's more difficult to install and doesn't have as good a package management as Ubuntu.

    Puppy Linux will run on computers with lower spec than XUbuntu and runs with impressive speed. It's a cutdown no-frills in-memory version. It requires the user to want to learn about Linux. It uses it's own package management.

    Your aim is to install a system that runs comfortably on the machine. There is no point in pushing it to it's limit. If it can run Ubuntu, install Xubuntu anyway. This way the computer will be fast for longer.

    Installing Xubuntu is easy to do. You download a LiveCD, boot, make sure you like it and tell it to install. The LiveCD requires 128MB of RAM. To install on a 64MB machine, there is an alternative install CD. The alternative install CD assumes you know a bit more about Linux. This document assumes you are installing Xubuntu 7.40. It can be downloaded from the Xubuntu website. (If you only have 64MB of RAM it might be an idea to request more memory on the Freecycle group.)

    You will be asked for the account name of the first user. This user will be an administrator. As you don't know who is going to get the PC, I usually go for 'me'.

    Installing DansGuardian on Xubuntu

    To get parental control working you'll need to install the following packages:

    • Dansguardian
    • TinyProxy
    • Firehol

    Firehol is a firewall that will redirect all traffic directed at the internet through TinyProxy which will use Dansguardian to apply parental control rules. It's a bit of a fiddle to install this manually.

    Thankfully there is a script which does this for you. You can download the script from the Ubuntu CE download area. Extract it and follow the instructions in the README file. The default setting seems to work well.

    The only problem with this script is that because it's designed for Ubuntu and not Xubuntu it results in a broken dansguardian package. This is easily fixed by starting Synaptic Package Manager and under Edit you can tell it to fix broken packages.

    Another thing is that you need to run the following command to fix a problem with Firehol.

    sudo chmod o+x /lib/firehol/firehol
    sudo /etc/init.d/firehol restart

    The script will also install a GUI for parental control under System->Configure Parental Control.

    Make sure your /etc/firehol/firehol.conf looks like this:

    version 5
    iptables -t filter -I OUTPUT -d 127.0.0.1 -p tcp --dport 3128 -m owner ! --uid-owner dansguardian -j DROP

    transparent_squid 8080 root

    interface any world
    policy drop
    protection strong
    client all accept
    server cups accept
    server webcache accept

    If you want to allow the server to be connected to via ssh, then you must edit this file accordingly. There seems to be a problem with Firehol making it impossible to enable samba (Windows File Sharing) if protection is set to 'strong'.

    Remember to restart Firehol for any changes in the config file to take affect.

    There is a helpful thread if you need more information.

    You can test the parental control by pointing Firefox at www.playboy.com.

    Firefox will have been configured to use the local proxy. To make sure all browsers will work try the following:

    wget http://www.playboy.com
    grep DansGuardian index.html
    If gr