Scraps of Life
Posted by Eric Stein - April 27, 2008 CE @ 19:36:59 UTC
Today, I need to do a few things. I woke up relatively early for a Sunday, at 9AM. Feeling the monetary pinch of needing to feed myself, I did a couple hours of consulting work before breakfast - strangely, even though I was working, I felt like I was putting off my schoolwork. I'm not sure how it happened, but I am actually on top of things. It might have something to do with the ridiculous amount of work I did last week.
Back to my original point. I have to do some things today. Amont them are:
Get
Do
It's all pretty managable. I guess junior year is almost done, then. I'll be taking a few weeks before starting my full time job at Mercury to do some consulting work from home, spending time with family, and probably doing not a little bit of open source work on my personal projects. I have a few interesting ideas that I haven't started on yet.
To the comments...Back to my original point. I have to do some things today. Amont them are:
Get
- Some blank tshirts
- Poppy seeds
- Deoderant
- Lemons
- Toothpaste
Do
- Update IQP presentation for tomorrow's meeting
- Same with the report
- Do databases homework (due tomorrow at 9)
- Create a framework for multiple lexical scopes for my Compilers class
- Bake
It's all pretty managable. I guess junior year is almost done, then. I'll be taking a few weeks before starting my full time job at Mercury to do some consulting work from home, spending time with family, and probably doing not a little bit of open source work on my personal projects. I have a few interesting ideas that I haven't started on yet.
Shell Meme
Posted by Eric Stein - April 11, 2008 CE @ 04:02:18 UTC
I found an interesting meme at stopped clock.
My desktop:
To the comments...My desktop:
$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s\n",a[i],i}}'|sort -rn|head
119 cd
43 rvid
40 l
21 ssh
15 rm
15 mplayer
13 sudo
12 wget
12 ls
9 eog
And my server:119 cd
43 rvid
40 l
21 ssh
15 rm
15 mplayer
13 sudo
12 wget
12 ls
9 eog
$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s\n",a[i],i}}'|sort -rn|head
74 svn
69 l
57 pwt
57 cd
44 vim
35 ./publish
27 s
20 screen
12 rm
12 cat
Interesting, eh?74 svn
69 l
57 pwt
57 cd
44 vim
35 ./publish
27 s
20 screen
12 rm
12 cat
Amateur Radio
Posted by Eric Stein - April 7, 2008 CE @ 02:13:44 UTC
Many of my friends at WPI use handheld radios to communicate frequently throughout the day. I've realized that it would be much more cost effective and convenient for me to just get a radio rather than using my cell all the time. Radio is also a much more group-friendly communications medium, so organizing things would be that much easier.
So, I'm looking to get licensed as a Technician Class operator by the FCC. The WPI Wireless Associaion is holding a testing on the 17th, when I'm going to try for my license. I hear I can get a decent starter radio on eBay for 60 bucks or so. Radio ahoy!
So, I'm looking to get licensed as a Technician Class operator by the FCC. The WPI Wireless Associaion is holding a testing on the 17th, when I'm going to try for my license. I hear I can get a decent starter radio on eBay for 60 bucks or so. Radio ahoy!
Last Edited April 16, 2008 CE @ 20:00:53 UTC
To the comments...So I Heard What I Did This Summer
Posted by Eric Stein - April 1, 2008 CE @ 19:15:40 UTC
As to what I'm going to do with the rest of my life, I haven't the faintest idea. This summer is a different matter - I know what I'll be doing.
I've accepted an internship position at Mercury Computer Systems, where I will be working on networking projects & multiprocessing. It should be a very interesting and educational job that'll look good on my resume - not to mention that it pays well, so I'll live less like a starving college student next year.
I may be living in Worcester this summer, at the apartment I'm leasing for senior year. Depending on how I work out the transportation issue, I may be living at home for part of the summer, too. Hopefully there will be other WPI people living in Worcester this summer.
To the comments...I've accepted an internship position at Mercury Computer Systems, where I will be working on networking projects & multiprocessing. It should be a very interesting and educational job that'll look good on my resume - not to mention that it pays well, so I'll live less like a starving college student next year.
I may be living in Worcester this summer, at the apartment I'm leasing for senior year. Depending on how I work out the transportation issue, I may be living at home for part of the summer, too. Hopefully there will be other WPI people living in Worcester this summer.
Using PGP Again
Posted by Eric Stein - March 26, 2008 CE @ 17:46:19 UTC
I've decided to start using PGP again. Here's my key:
To the comments...-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.7 (GNU/Linux)
mQGiBEfqbSIRBAC/xj2ICQ11lXsyBxzZWWYvH+LUa2LcCrEatisw5WN9SSKhAKNu
vu0nhMkRrZsZnBz31MqRvJWVjHhOtV39Xf3Xh0oekyUzu99U9+tCa5sl1wy+Izfc
Ze6mii9AZLQ3jVTTaVEhK7UQ+g1JZCMqRx3WJYyf9l722WBf2TSq+ATmfwCgz+GQ
wTxyNp636AyWW4l67HEl/NUD/3lz1LKM14vTqGb0hHKxLMnlXwlyeHD7szZ0FYJz
eEf4d3dL6l6f8ntil+KxFplZAH/axClJtxgKeAL6tquLD4NQq8jCMXeHzUFoX6s3
GBgU7WjDigSZGoXzk3YFx0E/l8O/D9VRuBdCq0IhhCi1ubMQGk3iYLkWK3VIFkr4
uQUGA/9/tvB95Nx/gC+42jeIgl6cYLkOj/zRiTJMhUzp/H7BHcp3/Q1VWJn+17Qk
ihCHsDPweft6FEZdxpo/n5DpJ2/HlpLWXbDehoVoUOGUUS+d2Jg7aECAX22NtFXd
3rXsAm4ln06ZdgwhHzgkgFXcUbTfOKLOUEklnn8kwG/l2mTByLQfRXJpYyBTdGVp
biA8dG9iYUBkZXMudHJ1Y3Qub3JnPohmBBMRAgAmBQJH6m0iAhsjBQkJZgGABgsJ
CAcDAgQVAggDBBYCAwECHgECF4AACgkQg+42HCu88Jws6wCfboVTGlvY05fqTydD
pC1RZiLzHBIAoJwjhMuR1Q1n+Txkp8Q1hjdDaS/cuQINBEfqbSIQCADGj29UkFD0
FiVvWc79LgBfwIALy5A7iM6Cfv04OmraEhc0clf7FqIdQXVOvFgCdONdkEGKSvTh
c4NYaE6ZNlpgL07fm4dLikSi9CIsWK0pLf4cpnjE9+gnwrkbojmIDbHqINeIG/Ao
i+AUZdwIyRCFMZBIbOTO7i7ZAyPLd6Qtl6pdfJwizKiHGsWNFsw97mvTAclqCSRP
dgBjQywLJFHLMqztUXlt/xIkdmukqoehqto6UZZXOm/Hjjezbkx1lYGoNUK28zAD
4R6oP4KrFmg0vTZSqaFXzv4vZKBGZOh76+nk41cRQWjonNVBobzwEme6D4qp64Ze
d8D1jDczl90/AAQNB/4qNANBe3pzqT7puuroUN76tjWFoo8+maNYE2QXR1ZZOQlT
MQPydqE9HVXaWy1mXe6Fh8UU026+qf2LmeNYcNnzIIRlrL97AVhT8NQpNyrMxV+e
uXH03vuJbI/SOTFBzme5GdSXHQR9UlNw593MRuv+ngaQkifrmSS/WK7taGMwZjDd
xLRNGep6xQirKmTr5QgZ55EZVyq8vjdyGkR0tmx191LwkV6CmDF6uQBayEHWNlQr
DGmvCmnnuvchgOXTLqu2Wx7XkmNC0qTidQcmrpvO4PTe1p71GRvnCPXuzwjBOJLk
lJh9Ak2lR69qAg5Bqo1mk+jt/KULbyKj6R14wmmDiE8EGBECAA8FAkfqbSICGwwF
CQlmAYAACgkQg+42HCu88JxUzACgpBwdgkRAzoJ+BFNe8CzBr2cfGFMAnjPsdmJG
5MMtPuV/oqQym6sxr2tM
=RQAZ
-----END PGP PUBLIC KEY BLOCK-----
That's about it. A useful program for using PGP is Enigmail, a plugin for Thunderbird.Version: GnuPG v2.0.7 (GNU/Linux)
mQGiBEfqbSIRBAC/xj2ICQ11lXsyBxzZWWYvH+LUa2LcCrEatisw5WN9SSKhAKNu
vu0nhMkRrZsZnBz31MqRvJWVjHhOtV39Xf3Xh0oekyUzu99U9+tCa5sl1wy+Izfc
Ze6mii9AZLQ3jVTTaVEhK7UQ+g1JZCMqRx3WJYyf9l722WBf2TSq+ATmfwCgz+GQ
wTxyNp636AyWW4l67HEl/NUD/3lz1LKM14vTqGb0hHKxLMnlXwlyeHD7szZ0FYJz
eEf4d3dL6l6f8ntil+KxFplZAH/axClJtxgKeAL6tquLD4NQq8jCMXeHzUFoX6s3
GBgU7WjDigSZGoXzk3YFx0E/l8O/D9VRuBdCq0IhhCi1ubMQGk3iYLkWK3VIFkr4
uQUGA/9/tvB95Nx/gC+42jeIgl6cYLkOj/zRiTJMhUzp/H7BHcp3/Q1VWJn+17Qk
ihCHsDPweft6FEZdxpo/n5DpJ2/HlpLWXbDehoVoUOGUUS+d2Jg7aECAX22NtFXd
3rXsAm4ln06ZdgwhHzgkgFXcUbTfOKLOUEklnn8kwG/l2mTByLQfRXJpYyBTdGVp
biA8dG9iYUBkZXMudHJ1Y3Qub3JnPohmBBMRAgAmBQJH6m0iAhsjBQkJZgGABgsJ
CAcDAgQVAggDBBYCAwECHgECF4AACgkQg+42HCu88Jws6wCfboVTGlvY05fqTydD
pC1RZiLzHBIAoJwjhMuR1Q1n+Txkp8Q1hjdDaS/cuQINBEfqbSIQCADGj29UkFD0
FiVvWc79LgBfwIALy5A7iM6Cfv04OmraEhc0clf7FqIdQXVOvFgCdONdkEGKSvTh
c4NYaE6ZNlpgL07fm4dLikSi9CIsWK0pLf4cpnjE9+gnwrkbojmIDbHqINeIG/Ao
i+AUZdwIyRCFMZBIbOTO7i7ZAyPLd6Qtl6pdfJwizKiHGsWNFsw97mvTAclqCSRP
dgBjQywLJFHLMqztUXlt/xIkdmukqoehqto6UZZXOm/Hjjezbkx1lYGoNUK28zAD
4R6oP4KrFmg0vTZSqaFXzv4vZKBGZOh76+nk41cRQWjonNVBobzwEme6D4qp64Ze
d8D1jDczl90/AAQNB/4qNANBe3pzqT7puuroUN76tjWFoo8+maNYE2QXR1ZZOQlT
MQPydqE9HVXaWy1mXe6Fh8UU026+qf2LmeNYcNnzIIRlrL97AVhT8NQpNyrMxV+e
uXH03vuJbI/SOTFBzme5GdSXHQR9UlNw593MRuv+ngaQkifrmSS/WK7taGMwZjDd
xLRNGep6xQirKmTr5QgZ55EZVyq8vjdyGkR0tmx191LwkV6CmDF6uQBayEHWNlQr
DGmvCmnnuvchgOXTLqu2Wx7XkmNC0qTidQcmrpvO4PTe1p71GRvnCPXuzwjBOJLk
lJh9Ak2lR69qAg5Bqo1mk+jt/KULbyKj6R14wmmDiE8EGBECAA8FAkfqbSICGwwF
CQlmAYAACgkQg+42HCu88JxUzACgpBwdgkRAzoJ+BFNe8CzBr2cfGFMAnjPsdmJG
5MMtPuV/oqQym6sxr2tM
=RQAZ
-----END PGP PUBLIC KEY BLOCK-----
Dangerous Cryptoloop Voodoo
Posted by Eric Stein - March 22, 2008 CE @ 02:27:04 UTC
Today, I wondered whether I could use cryptoloop to encrypt an already existing partition, in place. This could be useful if you have a large hard drive that you want to encrypt, but you don't have anywhere to copy the files as an intermediary. To test the theory that it was possible, I backed up my flash drive and tried. Here goes!
sting ~ # dd if=/dev/sdb1 of=/dev/loop3
1969632+0 records in
1969632+0 records out
1008451584 bytes (1.0 GB) copied, 449.473 s, 2.2 MB/s
sting ~ # losetup -d /dev/loop3
It works. Of course, I make no guarantees that this will work for you. If you're willing to risk it, good luck. Mind you, doing this while the drive is mounted is an even worse idea.
Encrypting
We're using losetup to create a virtual block device piped through the encryption algorithm to the original partition. That's pretty easy.sting ~ # losetup -e aes-256-cbc /dev/loop3 /dev/sdb1
Password:
Password:
Danger, Will Robinson!
This is the dangerous step. We're block by block copying each original block and immediately sending it back through the cryptoloop device, whch encrypts the data and puts it back on the device itself.sting ~ # dd if=/dev/sdb1 of=/dev/loop3
1969632+0 records in
1969632+0 records out
1008451584 bytes (1.0 GB) copied, 449.473 s, 2.2 MB/s
sting ~ # losetup -d /dev/loop3
Using The Device
Now that we've in-place encrypted the device, we can try mounting it again.sting ~ # losetup -e aes-256-cbc /dev/loop3 /dev/sdb1
Password:
sting ~ # mount /dev/loop3 /mnt/flash
sting ~ # cd /mnt/flash
sting flash # ls
helloworld.txt
sting flash #
Password:
sting ~ # mount /dev/loop3 /mnt/flash
sting ~ # cd /mnt/flash
sting flash # ls
helloworld.txt
sting flash #
It works. Of course, I make no guarantees that this will work for you. If you're willing to risk it, good luck. Mind you, doing this while the drive is mounted is an even worse idea.
Last Edited March 23, 2008 CE @ 23:37:22 UTC
To the comments...PWT - Command Line Twitter Updater
Posted by Eric Stein - March 17, 2008 CE @ 19:53:04 UTC
I just spent about an hour writing a small twitter updater script in python. It was quite easy, since I used python-twitter to do all the heavy lifting.
You can follow me on twitter or check out PWT.
To the comments...You can follow me on twitter or check out PWT.
Using git-svn For Fun and Profit
Posted by Eric Stein - March 17, 2008 CE @ 09:27:01 UTC
For the last few weeks I've been using git-svn while developing offline. It's optimal for me because SVN supports all my online coding flow & I run an SVN server already.
Given git's reputation as a bit of a challenge to use, it's surprisingly easy to get started with git-svn.
This will check out the entire history of your repository into a local git repository. Now, I know that git has a reputation as being large, scary, and complicated, so I'll include a quick primer on how to use git for everday SCM tasks.
Quite easy, really. A little more verbose than svn, but understandable.
That's along the same lines. Nothing that hard!
So you're back from your sojourn in the desert now, and you've been productive. Now it's time to merge your changes into the SVN repository. But first, we need to do the equivalent to svn up before committing:
Looks like it's all clear. Time to actually commit those changes:
Now all your changes are in the main SVN repository as individual commits. Now put git-svn into your toolbox to end the days of shuffling files about by hand, worried that you'll break something.
Cloning an SVN Repository
Given git's reputation as a bit of a challenge to use, it's surprisingly easy to get started with git-svn.
~ $ git-svn clone svn://svn.example.com/project
Initialized empty Git repository in .git/
A FILE
r1 = 30c7f86823da99538fae8afca5ca46d3d43c32f7 (git-svn)
Checked out HEAD:
svn://svn.example.com/project r1
Initialized empty Git repository in .git/
A FILE
r1 = 30c7f86823da99538fae8afca5ca46d3d43c32f7 (git-svn)
Checked out HEAD:
svn://svn.example.com/project r1
Using Your Git Repository Offline
This will check out the entire history of your repository into a local git repository. Now, I know that git has a reputation as being large, scary, and complicated, so I'll include a quick primer on how to use git for everday SCM tasks.
Adding Files
~ $ cd project
~/project $ touch newfile
~/project $ git add newfile
~/project $ git commit -a -m "adding a new file"
Created commit 4312745: adding a new file
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 newfile
~/project $ touch newfile
~/project $ git add newfile
~/project $ git commit -a -m "adding a new file"
Created commit 4312745: adding a new file
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 newfile
Quite easy, really. A little more verbose than svn, but understandable.
Modifying Files
~/project $ cat >> newfile
added a line to the new file
~/project $ git commit -a -m "wrote some data"
Created commit 58efa1c: wrote some data
1 files changed, 1 insertions(+), 0 deletions(-)
added a line to the new file
~/project $ git commit -a -m "wrote some data"
Created commit 58efa1c: wrote some data
1 files changed, 1 insertions(+), 0 deletions(-)
That's along the same lines. Nothing that hard!
But I'm Online Now...
So you're back from your sojourn in the desert now, and you've been productive. Now it's time to merge your changes into the SVN repository. But first, we need to do the equivalent to svn up before committing:
~/project $ git-svn rebase
Current branch master is up to date.
Current branch master is up to date.
Looks like it's all clear. Time to actually commit those changes:
~/project $ git-svn dcommit
Committing to svn://svn.example.com/project ...
A newfile
Committed r2
A newfile
r2 = 4f50219cbf276ed6cf6a94641e1bbce94c2f44a6 (git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn
newfile: needs update
M newfile
Committed r3
M newfile
r3 = 518ba784aa23241e74297fd62406591e8d433922 (git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn
Committing to svn://svn.example.com/project ...
A newfile
Committed r2
A newfile
r2 = 4f50219cbf276ed6cf6a94641e1bbce94c2f44a6 (git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn
newfile: needs update
M newfile
Committed r3
M newfile
r3 = 518ba784aa23241e74297fd62406591e8d433922 (git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svn
Now all your changes are in the main SVN repository as individual commits. Now put git-svn into your toolbox to end the days of shuffling files about by hand, worried that you'll break something.
Last Edited July 29, 2008 CE @ 03:45:31 UTC
To the comments...Why I Bake
Posted by Eric Stein - January 19, 2008 CE @ 23:35:48 UTC
Today as I sat at the kitchen table, mixing poppy seeds into cookie dough, my house mate Lynda asked me what motivated me to bake cookies so often. I thought about it for a second, and told her that "I guess they taste good, are cheaper than the ones I could buy, and it's fun." But as I deployed the dough into formation on the cookie sheet, it got me thinking. Really, why do I enjoy baking so much?
Part of it may be my interest in chemistry, which was until a few years ago more important to me than computer science. There's a strong parallel to chemistry in baking; watching all the ingredients combine and react until I've created something that's larger than the sum of its parts.
Both chemistry and programming create something new, but there is much more unpredictability to code - the underlying reality can vary from installation to installation, and it can even change under your feet. Chemistry is solid and predictable. So is baking, now that I've achieved a certain level of skill at it. It's solid, real, and tactile.
When I bake my mind can wander free, unconscious of the worries and stress of the world. I don't have to plan for problems and the unexpected; everything just works.
To the comments...Part of it may be my interest in chemistry, which was until a few years ago more important to me than computer science. There's a strong parallel to chemistry in baking; watching all the ingredients combine and react until I've created something that's larger than the sum of its parts.
Both chemistry and programming create something new, but there is much more unpredictability to code - the underlying reality can vary from installation to installation, and it can even change under your feet. Chemistry is solid and predictable. So is baking, now that I've achieved a certain level of skill at it. It's solid, real, and tactile.
When I bake my mind can wander free, unconscious of the worries and stress of the world. I don't have to plan for problems and the unexpected; everything just works.
Skiing & Stolen Cars
Posted by Eric Stein - December 24, 2007 CE @ 03:27:28 UTC
The plan was this: to go skiing at Mad River Glen over the weekend. We planned to drive starting at 6am to get there about when the lifts opened on Saturday. We packed the car with skis and equipment and went to bed.
Then we hallucinated vividly for several hours and forgot the details of the whole experience.
Upon waking up, we took the last few bags, and went out to the car. That's where our troubles began. The car was not there. And although we considered it as a possibility, it had not moved several hundred feet up the road for fun, either. We were forced to conclude that the car had been misappropriated by strangers while we slept.
At this point we called the police and reported it stolen. Mel and I thought there was no use being up at the ungodly hour of 6AM anymore, so we went back to bed. Dad drove town hoping to spot the car.
Fast forward to 10AM. Status of family members:
Who should call us, but the police? A rough reconstruction of the conversation that ensued:
*ring*
<Mom> hi
<Police> could I speak to David Stein please?
<Mom> who is this?
<Police> This is the police department.
<Mom> what? Are you pulling a prank?
<Police> this really is the police.
<Mom> okay...
<Police> let him know that we found the stolen vehicle.
<Mom> WHAT?!
<Mel, from downstairs> THEY FOUND IT!?
Strangely, the thieves didn't take our skis. They had gone off the road into a snowbank and left the car running, sans radio (and a pair of slippers).
The moral of the story: car thieves like slippers and not all stolen cars are never found.
To the comments...
Then we hallucinated vividly for several hours and forgot the details of the whole experience.
Upon waking up, we took the last few bags, and went out to the car. That's where our troubles began. The car was not there. And although we considered it as a possibility, it had not moved several hundred feet up the road for fun, either. We were forced to conclude that the car had been misappropriated by strangers while we slept.
At this point we called the police and reported it stolen. Mel and I thought there was no use being up at the ungodly hour of 6AM anymore, so we went back to bed. Dad drove town hoping to spot the car.
Fast forward to 10AM. Status of family members:
- Me: sleeping
- Mel: sleeping
- Ken: hiking in New Hampshire
- Dad: driving around town, attempting to find our stolen car
- Mom: sleeping
Who should call us, but the police? A rough reconstruction of the conversation that ensued:
*ring*
<Mom> hi
<Police> could I speak to David Stein please?
<Mom> who is this?
<Police> This is the police department.
<Mom> what? Are you pulling a prank?
<Police> this really is the police.
<Mom> okay...
<Police> let him know that we found the stolen vehicle.
<Mom> WHAT?!
<Mel, from downstairs> THEY FOUND IT!?
Strangely, the thieves didn't take our skis. They had gone off the road into a snowbank and left the car running, sans radio (and a pair of slippers).
The moral of the story: car thieves like slippers and not all stolen cars are never found.