Monday, December 30, 2013

running Python scripts on double click

I've been writing some software to interface with a camera. This had to be done on Windows because of the equipment drivers. In the end, I wanted to deliver a product to my research group that was easy to use-- e.g. double click on this icon and a camera gui will come up that allows you to view and save images streaming from the camera.

The secret to getting the double-click to work was to make a shortcut to the master script, put the shortcut on the desktop, then right click and choose "open with", "choose default program." You want to set the default program to pythonw.

If that is not in the list of suggested programs, you will need to browse for it. To avoid browsing, you can go to the start menu and search for pythonw. Then right click on pythonw and choose "open file location." Copy the file location and then use that as the location of the program when you click "Browse..." to associate a program with this type of file.

That's all!

If you ever want to edit the .py file instead of running it with the python interpreter (pythonw), you can right click and open with your favorite text editor. I had to make the shortcut because the actual python file is in a directory with other files it needs to access-- I didn't want to put them ALL on the desktop.

Tuesday, November 19, 2013

drafting with CAD and DraftSight

For my research, I needed to learn how to make CAD drawings as a step towards making some micro-devices. The procedure for making the devices involves ordering a transparency with high-precision, high-detail designs on it. Mine came from http://www.outputcity.com/. This "mask" is used in a photo-polymerization step to make micro-devices with the right ins and outs.

In any case... I needed to learn CAD. Luckily, my friend Don gave me the 1-hour lesson. Here is what I learned:

CAD is a very methodical, logical way way to make precise drawings. BUT, it's entirely different than any other computer drawing software I used. I had to learn the new paradigm. Once I realized how different it is, I learned quickly. Here are my notes.

commands and tips (type, then hit enter or space):
Type commands, and they will appear after the : at the bottom panel of DraftSight. Hit enter or space to run the command.
pan - to grab the workspace and move it around
*or move around drawing by zooming in and out with mouse wheel
trim - to cut off excess bits of lines
copy - to copy features
move - to move features
array - to create a grid replicating a single unit already drawn
offset - to replicate a feature some distance away
fillet - extends to lines to a point where they meet
mirror - create a mirror image of an existing feature (keep or remove original)
rotate  - rotate a feature
zoom - followed by e zooms out to show the full extent of the drawing
can set up reference lines to use to guide real lines, then trim references
right and left drag boxes are different-- to the left selects any object that partially sticks into the area selected. dragging to the right only selects objects entirely within the selected region.
use esc to deselect what you have selected

details for my application:
can't print features less than 7 microns
nothing smaller than 50 to 75 microns is cheaper
wide and flat features are easy, features with a 1x1 aspect ratio are good
the printers are 10,000 dpi and 25,400 dpi, and you want to have 7 dots per feature
in the proof, check for polarity (dark vs. clear) and check for missing features
the edge of the drawing will be clear, crossing the first line coming in from an edge brings you into a dark region
dimensions are in microns
20 micron text is OK, height = 800 is readable by eye
around height = 100 is good for my 90x magnified microscope with 120 micron x 100 micron field of view
save as 2007-2009 .dwg, send a dxf to the printer

Tuesday, October 8, 2013

Fresh Install

I ran into problems with my computer after some updates on Friday and tried to fix them. But, no luck. So, I decided to save everything and then do a fresh install. Having to reinstall after just a couple months of use was annoying... but it did fix my computer! Everything is working again.

I learned that I did not need to flash the bios again-- bios are lower level and don't get modified by the operating system.

The following are what I need to do when I configure a new system for myself:

1) Reenter wireless passwords
2) Install additional software
3) Configure settings and accounts (e.g. sync Dropbox account)
4) Configure Ubuntu settings to my liking
5) Get network resources working

To make all easier next time, I'm saving my .config, .thunderbird, and .mozilla directories as well as making a text document with a list of all the software that I install so that I can just run:

sudo apt-get install `cat packages.txt`

I'm glad to be up and running again.

Thursday, September 12, 2013

PyQt, building my first GUI

The lab I'm in wrote and maintains a software package for analyzing microscope images generated with a laser microscope. The software is all command line and would really benefit from guis in a couple key spots. Towards this end, I'm writing my first gui! I decided to work in PyQt, and there's a lot to learn! Most of all, I need to get familiar with the modules available and their options (best reference I've found so far: http://pyqt.sourceforge.net/Docs/PyQt4/classes.html):

So far, I've played with:

QtGui.QLabel
QtGui.QSlider
QtGui.QLCDNumber
QtGui.QFrame

Here is how I'm using them:

I'm using QLabel just to display some text in my window:
# number of pixels are measured from top left corner
red = QtGui.QLabel(self)
red.setGeometry(10,10,100,30) # pixels over, pixels down, pixels wide, pixels tall
red.setText('Red')

Note, it seems oddly hard to change the color of the text, fontsize, etc. It is strange that it is not a clear option, but at least, I can get plain, black text displayed!

I'm using sliders as a way for the user to change the input, QtGui.QSlider:
sld = QtGui.QSlider(QtCore.Qt.Horizontal, self) # slider horizontal rather than default vertical
sld.setGeometry(60,40,100,30) # pixels over, pixels down, pixels wide, pixels tall
sld.setMinimum(0) # redefine what numbers the endpoints of the slider stand for
sld.setMaximum(255)
#EVENT HANDLERS
sld.valueChanged.connect(lcd.display) #connects the value of the sld to the lcd display

The lcd-style number display had to be defined before the slider was connectd to it:
lcd = QtGui.QLCDNumber(self)
lcd.setGeometry(60, 80,100,30)

I used QtGui.QFrame to display a solid purple square in the window:
square = QtGui.QFrame(self)
square.setGeometry(100, 100, 30, 30)   
square.setStyleSheet("QWidget { background-color: %s }" %  
         QtGui.QColor(100, 0, 100).name() ) 

Note, using the style sheet, I was able to change the color via the QColor module!

Thursday, August 29, 2013

Network File Access 2

Ok, so I left off yesterday satisfied with branching from bazaar repositories on the network, but not with file mounting. I'll figure it out!

mkdir <local directory>
sudo mount -t nfs <network>:/<share name> <local directory>

Great! But when I try to cd into the <local directory>, I get permission denied. Apparently this is an id problem.

Running id at the command line gives me a uid and a gid. These need to be the same as my uid and gid on my network account. I also need to make my own computer be a member of the lab group.

To check id's locally or after ssh'ing into the network:
id
getent passwd <username>

I logged in as root and changed the id's following instructions from l0b0 and Esteis:
http://askubuntu.com/questions/16700/how-can-i-change-my-own-user-id

Alternatively, you can edit the documents directly:
cd /etc
sudo gedit group
sudo gedit passwd

Important!
To unmount drives:
umount <path to drive>

Don't delete the directory.... that really deletes it from the network.



Wednesday, August 28, 2013

Network File Access

One of the most frustrating things about my existence as a graduate student is figuring out how to access files that are on the schools network. My desktop was helpfully set up by trusty Tom. BUT, I want to be able to use my new laptop to smoothly deal with network files. So, here is how the setup goes:

1) I set up an ssh key pair and places the public half on in my home directory on the network
I know this worked because I can: ssh rperry@login.<network name>
ssh -v rperry@login.<network name> shows you more verbose information about the completed process of logging into the ssh session
The ssh key is important for almost all ways of accessing the network.

2) bzr with network files. There is a paper written in latex that is on the group share in a bazaar repository that I would like the edit. I thought bzr+ssh would work, but it did not since the server doesn't have bazaar installed. Instead, I can use sftp:
after cd'ing to the directory where I wanted to put the branch:

bzr branch sftp://<username>@login.<network name>/group/<rest of path to directory>

Ok, so now I want to make this tied back to the main repository so that I can make changes and check them in:

Workflow:
In my lab, we use a "decentralized with shared mainline" workflow:
bzr pull
...[make changes]...
bzr commit -m "commit message here"(commits to local branch)
bzr push :parent --remember (pushes to main branch, can just use bzr push in the future)
...[if there are conflicts it will tell you]...
bzr merge (or if you are the sole owner and are confident that you want your version, bzr push --overwrite)

This main repository shouldn't have a working tree associated with it, but it does and it tells me that it will not be updated since I am pushing remotely. If you want to update it and work from there (not suggested), then you can update the working tree by doing something like this:
ssh rperry@login.<network name>
cd <repository>
bzr update

In practice, you should just branch from the main repository rather than accessing the main repository to see the files.

Yay!!!!! I can work on tex files from the lab network share from anywhere!

3) When on campus, it would be really nice just to have the whole network folder mounted. For this, I'm going to figure out how to do NFS or CIFS... but that's for the next post.





Monday, August 26, 2013

Zenbook Surgery

I bought an ASUS Zenbook UX32VD! My toughest criteria in picking an ultrabook was that I need an NVIDIA graphics card for parallel computing. I think it's awesome that I have this parallel computing power in a light little ultrabook! Here are the specs as it arrived, but I quickly did some surgery to upgrade it!
Screen Size13.3 inches
Screen Resolution1366 x 768
Max Screen Resolution1920x1080 pixels
Processor1.9 GHz Core i7-3517U
RAM4 GB DDR3
Memory Speed 1600 MHz
Hard Drive500 GB
Graphics CoprocessorNVIDIA_GeForce_GT_620M
Chipset BrandIntel, NVIDIA
Wireless Type802.11bgn
Number of USB 3.0 Ports 3
Brand NameAsus
SeriesUX32VD
Item model numberUX32VD-DH71
Hardware PlatformPC
Operating SystemWindows 8
Item Weight3.2 pounds
Item Dimensions L x W x H12.80 x 8.78 x 0.71 inches
Color Silver Aluminum
Processor BrandIntel
Processor Count2
Computer Memory TypeDDR3 SDRAM
Flash Memory Size24
Hard Drive InterfaceSerial ATA
Hard Drive Rotational Speed5400 RPM
Optical Drive TypeNo
Audio-out Ports (#)1
Battery TypeLithium Polymer (LiPo)
Batteries:1 Lithium ion batteries required. (included)

I had  never opened up a laptop before, but I wanted to upgrade the HD to completely SSD and replace one of the 2GB RAM sticks with an 8GB stick for a total of 10GB of RAM. (good instructions here: http://youtu.be/8xC-osS0scU) I installed Ubuntu 13.04 on this new hard drive and had no trouble booting!

Checked the ram with this terminal command:
free -m
and I have 9.999 GB. It's recognizing the new RAM!

When it was installing it asked if I wanted to use the 250.1 GB drive. So, it's recognizing that too!

Saturday, June 22, 2013

Software Carpentry

I'm taking a Software Carpentry bootcamp on Monday and Tuesday. It is a two-day workshop to make you a more productive programming. I'm most comfortable programming in Ubuntu (what we use in lab), so I'm borrowing my friend's laptop for the course (until I get my own dedicated Ubuntu programming machine). I need to install required software for the course. I'll be installing this on my machine once I get it, so I'm keeping a record of how to do the installations here:

6 required packages:
1) Bash. This is the default shell in linux! Win #1 for using linux! No intallation needed here.
2) Git. I checked the version with "git --version" and got "git version 1.8.1.2" Latest stable release is 1.8.3.1. I'll run "sudo apt-get upgrade" just to make sure there isn't a newer version in the Ubuntu package manater.
3) Code editor. I've been looking for a better code editor. The course staff recommends Kate. I'll download that and give it a try. "sudo apt-get install kate." I also want gedit... my old stand-by, just in case. It was already installed! There is a warning when I start it, but other people in web forum say just to ignore.
4) Python version 2.7. They recommend Anaconda for an all-in-one installation. I have used enthought before. I have Python 2.7.4 ("python --version"). But, I don't have ipython. I'll try installing Anaconda and see if that gets me all the way. Download took about 20 minutes, but the installation is running well after accepting a user agreement.
5) SQL. Install SQLite manager (requires firefox). This is just a firefox add on. Needed to make the bookmarks toolbar visible before I could see the SQLite icon.
6) Lastly, virtual box and a virtual machine in case the rest didn't work.

The test script passed! Success!

The only other things I know I want are LaTex and Mayavi.

Thursday, June 20, 2013

"The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()"

I see the error in the post title a lot when I'm trying to check values in arrays. I'm finally going to really figure out what it means by a.any() and a.all()!

I have a four element array, and I want to know if it has any 1's in it:

a = array([2, 3, 3, 2])
a.any()

This will return True, because it is checking to see if any of the elements in a are greater than zero. This is not helpful. We need to define an intermediate matrix that has truth values for the condition we want to test.

a = array([2, 3, 3, 2])
b =  a==0
b.any()

works!

Or,

a = array([2, 3, 3, 2])
any(a>0)

works!

a.all()  and all() should work in the same way, but be testing for ALL the values to be true.



Wednesday, April 10, 2013

Customizeable Shell Prompt!

When I move around to different directories in terminal, I end up with really long prompts with the full directory path of my current working directory. This is a lot of extra clutter when I really just want an active terminal in that directory and can remember where I am. How do I modify what is shown in the prompt? I'm going to find out!

Current:
xxxxx@xxxxx:/xxxxx/xxxxxxxxx/xxxx/xxxxxxxx/xxxxxxxx$

What I'd like is probably just the name of the current directory without the full path.

It turns out that the prompt is very easy to modify! You just edit your .bashrc to add a line:

cd
gedit .bashrc (I'm not on board with emacs yet)

Here are some cool options I found on various forums:

This one removes all directory information and makes the prompt be an arrow:
export PS1="-->"

This one prints the full path, but then gives you a new line with a simple > for the prompt:
export PS1="\w\n>"

This does exactly what I want! I'm so used to the $ as a prompt that I want to keep it, but this gives me just the current directory without the full path! I also learned that the part of the path I am interested in is called the "basename of the current working directory."
export PS1="\W$"

New  prompt:
xxxxxxxxx$

I might decide that I want the xxxxxx@xxxxx part back in the prompt, but for now, I'll keep the prompt short.

source:
http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html


Friday, April 5, 2013

ipython went and changed the way they do configuration files

When I start ipython, I get a much longer returned message than I should:

ipython
/usr/lib/python2.7/dist-packages/IPython/utils/path.py:420: UserWarning: Found old IPython config file u'/home/rperry/.ipython/ipy_user_conf.py' (modified by user)
  warnings.warn("Found old IPython config file %r (modified by user)"%f)
/usr/lib/python2.7/dist-packages/IPython/utils/path.py:420: UserWarning: Found old IPython config file u'/home/rperry/.ipython/ipythonrc' (modified by user)
  warnings.warn("Found old IPython config file %r (modified by user)"%f)
/usr/lib/python2.7/dist-packages/IPython/utils/path.py:432: UserWarning:
  The IPython configuration system has changed as of 0.11, and these files will
  be ignored. See http://ipython.github.com/ipython-doc/dev/config for details
  of the new config system.
  To start configuring IPython, do `ipython profile create`, and edit
  `ipython_config.py` in <ipython_dir>/profile_default.
  If you need to leave the old config files in place for an older version of
  IPython and want to suppress this warning message, set
  `c.InteractiveShellApp.ignore_old_config=True` in the new config.
  `c.InteractiveShellApp.ignore_old_config=True` in the new config.""")
Python 2.7.3 (default, Aug  1 2012, 05:14:39)
Type "copyright", "credits" or "license" for more information.

IPython 0.12.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.


So the problem here is that when I had an older version of ipython, I made some config files-- apparently ipy_user_conf.py, and ipythonrc which are not outdated by my current ipython 0.12.1. What were those configuration files doing anyways? How do I change the configurations in the current version? I'll find out!

ipy_user_conf.py seems to be all factory settings. I removed it:
rm -r ipy_user_conf.py
ipythonrc seems to be all factory settings. I removed it:
rm -r ipythonrc

Now when I start ipython, I don't get so much text returned!
ipythonPython 2.7.3 (default, Aug  1 2012, 05:14:39)
Type "copyright", "credits" or "license" for more information.

IPython 0.12.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.




But, what configurations can I modify if I want to? Following the directions from the original, lengthy printout to the screen:
ipython profile create
creates
~/.ipython/profile_default/ipython_config.py which can be modified

there is also a startup directory in which you can place python scripts that you want run every time you start ipython!
~/.ipython/profile_default/startup (there is a README there explaining)
I put a script there that says:
import holopy as hp
this will make startup slower, but I won't have to type that again!!! Plus, if I just want a python session to use as a simple calculator, then I can always just run:
python instead of ipython.

You can make non-default configurations as well... for now, I'll just stick to the one. Hopefully I won't be bothered by the extra time it takes to start ipython.

Thursday, April 4, 2013

Latex symbols with other meanings

% is the character to start a comment in LaTex, so I always have to look up how to include the actual % in the text of my document. It's simple:

\%

Latex/Revtex problems

I'm writing a paper that has to follow revtex style. I'm getting errors about the citations when I try to compile (but the output looks fine). Let me try to get the most recent version of texlive:

apt-get install texlive
 
tex --version
 
TeX 3.1415926 (TeX Live 2009/Debian)
kpathsea version 5.0.0
Copyright 2009 D.E. Knuth.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.
hrm. This might be too outdated.
 
solved! see update in comment. 

Python, oh how you care about spaces and tabs, and intro to Emacs

Python is really picky about indentation (spaces and tabs). Because of this, the resulting code is very readable. The internet seems to somewhat agree that 4 spaces = one indent level. I would like to be able to make my tabs always be 4 spaces so that I don't have to hit the space bar so much.

I have been using gedit, so I'll figure out how to do it there!

Edit--> Preferences--> Editor--> Insert spaces instead of tabs
and change the Tab width to 4

oooh, Display line numbers! That's an option I'll select as well. Gedit shows you the current row and column at the bottom of the window, but I'll see how I like always seeing the line numbers.

Ok, but really, I should graduate to Emacs... I find Emacs very intimidating for all it's shortcut keys and how it doesn't use the microsoft-era shortcut keys I'm used to. One step at a time though.

Dash Home --> type Emacs, Enter

Now I'm going to lock it to my toolbar. What a commitment!

The tutorial is telling me that two main keys are Control and Alt (Meta). The abbreviations for these are C and M.

C-<chr> means the same thing as Ctrl+<chr> (in all the programs I'm used to)
M-<chr> means Alt+<chr>

To quit:
C-x C-c

It worked! Hrm, but that exited  my session, okay, starting it back up to get back to the tutorial.
C-g quits a command partway through typing it

There are three major commands for paging up and down a text document:

C-v see one screenful further down
M-v see one screenful further up
C-l center the screenful on your current cursor (just top to bottom, not left to right)

Continuing to type C-l moves the line with the cursor in it progressively to the
1 time: center
2 times: top
3 times: bottom
and it keeps cycling through.

That's enough for now! C-x C-c



Bzr, what revision number are you at?


In a terminal in the directory where your branch is,
bzr log -r-1
You can increment the number to see the most recent commit messages and revision numbers (bzr log -r-1, bzr log -r-2, etc.).

Wednesday, April 3, 2013

Bazaar version control, commit messages

I use Bazaar for version control with the team I wrote code with. This team likes Bazaar so much that we even use it for Latex documents in which we are writing up papers. Today when I went to commit changes I got an error about my commit message being empty even though I hadn't had any time to edit it yet! I learned a work around:

bzr commit -m "Type message here"

alternatively, this should work if you have a saved text file of the commit message:

bzr commit -F commitmessage.txt

Wednesday, March 27, 2013

Installing Holopy

With the dependencies in place, I should have no trouble installing HoloPy from Launchpad right? I'll try.

I want to put HoloPy in /code/dhm/dev2:
bzr branch lp:holopy dev2

I get all kinds of bad messages about public key and stuff. But, I remember that launchpad has really good directions for setting that up.
https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair

Ok, now the branching with bazaar worked (bzr stands for bazaar).


bzr branch lp:holopy dev2
Branched 406 revisions.

Dependencies: check
Code: check
Installed?

python setup.py build_ext --inplace

It worked!!!!! From ipython, I ran the simple example from here:
http://manoharan.seas.harvard.edu/holopy/users/calc_tutorial.html#calc-tutorial
and it calculated a hologram and displayed it!

Tuesday, March 26, 2013

Dependencies, Holopy

Ok, so the software I most want to be comfortable with installing is Holopy. It is the software that my research lab wrote and maintains--- I'm a coauthor, but I still struggle with installation. So frustrating. The software is hosted on launchpad:

https://launchpad.net/holopy

And there is a manual here:

http://manoharan.seas.harvard.edu/holopy/

So, what do I need?
Python 2.7
numpy
scipy
PyYAML (3.10 is the current release)
ipython (0.13.1 is the current stable release)
matplotlib (1.2.1 is the current stable release)
mayavi2 (4.2.0 is the latest)

What do I have?
python --version
Python 2.7.3
good

python
import numpy
numpy.version.version
'1.6.1'
ok, but I'd rather have 1.7 for the enhanced polyfit that allows weights
1.7 is listed as a stable release, so I will try to update to that

python
import scipy
ImportError: No module named scipy

First, trying the line recommended from the manual:
sudo apt-get install python-scipy ipython python-matplotlib python-yaml mayavi2

Great, this fixed the scipy problem
python
import scipy
scipy.version.version
'0.9.0'
0.11 is the most recent stable version, but I think 0.9.0 should be fine

What about PyYAML?
python
import yaml
yaml .__version__
'3.10'
Great.

What about ipython?
ipython
returns IPython 0.12.1 along with some warnings about my configuration file. I should look into this sometime. This is an ok version to use I think.

What about matplotlib?
ipython
import matplotlib
matplotlib .__version__
'1.1.1rc'
Hm. This is a couple versions out of date. I should think about updating this.

What about mayavi?
ipython
import mayavi
mayavi .__version__
'4.0.0'
Hm. IS that good or not? Is that Mayavi or Mayavi2?
pip search mayavi
mayavi INSTALLED: 4.0.0
LATEST: 4.2.0
Ok... but is that Mayavi2 or not?
aptitude search mayavi
mayavi2
Ok, so Mayavi2 is the only version installed, so I guess Mayavi 4.0.0 is really a type of Mayavi2. You can also test Mayavi2 by typing
Mayavi2
from a terminal.
This pops up a window for me, but the colors make all the titles unreadable. Hrm. I can't see how to fix this. Annoying.

This packages a lot of these all together... for future reference and installing on a blank computer:
http://www.enthought.com/products/epd.php

Numpy is still lower than the version I want though. How do I upgrade to 1.7? I'm going to find out!
cd ./tmp
sudo pip install --upgrade numpy

python
import numpy
numpy.version.version
'1.7.0'
Great!

Ok, so the dependencies are all in place. My understanding is that you also need compilers if you want to use the code straight from launchpad. If you want to contribute code to launchpad, then you need a way of authenticating yourself. Those steps for later. For today, the dependencies are in place!

Monday, March 25, 2013

Python, installing the right version

I do all my programming in Python. I make heavy use of scipy, numpy, and matplotlib. I also like to do 3D plots in Mayavi. So, these are the packages that I need to make sure are up to date with the versions I want. How do I check this? If they are wrong, what's the best way to update the version? I'm going to find out!

Click on Dash Home
Type terminal
Hit Enter
Run python --version

(while the terminal is open, right click on the icon on the tray and choose to lock it there-- terminal is the starting point for most of my work.)

It turns out, I have
Python 2.7.3


There is a newer production version: Python 3.3.0 (Sept. 29, 2012) From what I read, it looks like it is not a good idea to erase 2.7.3. Rather, one may install 3.3.0 alongside 2.7.3.


I followed the instructions in this answer:
http://askubuntu.com/a/244550 (except with sudo in front of each line, and answered Y to each question)
The tar command takes quite a while (~2 minutes)

except instead of py, I called it py3

I got this error along the way:

running build
running build_ext
sh: 1: cannot create build/temp.linux-x86_64-3.3/multiarch: Permission denied
error: build/temp.linux-x86_64-3.3/multiarch: No such file or directory
make: *** [sharedmods] Error 1


I'm not sure what to make of that... is it a real problem?

Hm, per another website, I tried installing python3 like this:
sudo apt-get install python3

now:
python --version
Python 2.7.3

python3 --version
Python 3.2.3

Hrm. That's the version from April, not the most recent version. Maybe if I update and upgrade.

When I've tried a bunch of stuff like I did here, I'm never sure if it is the most recent line I ran that finally made the change, or all of the steps combined.

I'm surprised that 3.2.3 installed instead of 3.3.0 given that 3.3.0 is the "production version."

Hrm. Well, now I would expect to be able to run things with python and with python3, so that's good. But, I don't like feeling mystified by my inability to install 3.3.0. I also can't figure out how to make all the fonts in this entry identical. How annoying.

--> update, the font problem was with firefox, go to Edit -> Preferences -> Content -> Advanced -> Allow pages to choose their own fonts ... err... not quite fixed

Ubuntu: How to check OS version and get computer info

Linux-- I want to learn to love it, but there are just some serious annoyances at not knowing my way around. I'm going to figure them out and post them here so that I remember them, have a reference to go back to, and might even help someone else too.

I am looking at my desktop computer with the Ubuntu operating system installed. To get help, you often have to tell someone stats about your system. How do you find them? Let's see...

Click on the desktop
Mouse over the upper black bar
Click Help
Click Ubuntu Help

A window pops up that says "Welcome to Ubuntu 12.04 LTS," so that's the version I have. Ok, so that was easy to figure out and easy to remember. The more official way to check it is:

Click on Dash Home (top icon in the tray of icons)
Type system settings
Hit enter
Click details (bottom row)

Now I can see all kinds of details about my machine.

Ubuntu 12.04 LTS
Memory: 1.8 GiB
Processor: Intel Core 2 Duo DPU E8400 @ 3.00 GHz x 2
Graphics: Unknown
OS type: 64-bit
Disk: 155.6 GB

From here: https://wiki.ubuntu.com/LTS I learned that 12.04 is the most recent "Long Term Support" version, so I'm happy with that.The next version comes out in 2014.