<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9896761</id><updated>2011-04-21T19:59:12.091-04:00</updated><category term='GUI Toolkit'/><category term='games'/><category term='Software Reviews'/><category term='version control'/><category term='Project Management'/><category term='Lucid Dreaming'/><category term='Mercurial'/><category term='Projects'/><category term='programming'/><title type='text'>programming.log</title><subtitle type='html'>I'm currently a junior studying Computer Science, with a minor (possibly to be a major) in Computational Mathematics. I talk about my side projects as well as anything noteworthy going on in my classes. You probably don't care about most of it, but you might find something useful. ;)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9896761.post-8372698107146560994</id><published>2008-02-24T00:52:00.008-05:00</published><updated>2008-04-06T02:15:12.266-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GUI Toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Lucid Dreaming'/><title type='text'>Lucid Dream Journal Project</title><content type='html'>In my free time, which seems to be dwindling lately, I have been working on a cross platform dream journal application to aid people with lucid dreaming. If you don't know what lucid dreaming is, head over to &lt;a href="http://www.ld4all.com/"&gt;ld4all&lt;/a&gt; or &lt;a href="http://www.dreamviews.com/"&gt;dreamviews&lt;/a&gt; and get yourself caught up. You'll be glad you did. This post is not about the application specifically, as only the core is finished and the user interface is just starting to shape up. The details are for another time.&lt;br /&gt;I'm going to talk about the general structure of the application in case anyone is interested.&lt;br /&gt;&lt;br /&gt;I have taken a route that most, if not all software design classes (at least the ones I am familiar with) stress, similar to many other projects. The core functionality of the application is built as a library, and is as coupled as loosely as possible to the user interface. This is of course, partially because I am as of yet undecided of which toolkit to use to implement the interface. However let's pretend that it is all for the sake of good software design ;). I've narrowed it down to the &lt;a href="http://www.fox-toolkit.org/"&gt;FOX Toolkit&lt;/a&gt;, or &lt;a href="http://www.ultimatepp.org/"&gt;Ultimate++&lt;/a&gt;. Both are well established, free and open source. If anyone has any thoughts of why one is preferable, feel free to share your thoughts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-8372698107146560994?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/8372698107146560994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=8372698107146560994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/8372698107146560994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/8372698107146560994'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2008/02/lucid-dream-journal-project.html' title='Lucid Dream Journal Project'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-908876419526973079</id><published>2008-02-20T00:27:00.006-05:00</published><updated>2008-04-06T02:16:56.832-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Project Management'/><category scheme='http://www.blogger.com/atom/ns#' term='Mercurial'/><title type='text'>Distributed Code Management with Mercurial</title><content type='html'>I've been pretty busy the last few weeks and it will probably remain that way for the foreseeable future. Unfortunately that means my more detailed reviews of different revision control systems will have to be delayed. In the meantime for those interested I'll explain the basics of a workflow I've adopted on a few projects using &lt;a href="http://www.selenic.com/mercurial"&gt;Mercurial&lt;/a&gt;. Please keep in mind that you can use this method with most, if not all, of the current distributed revision control tools.&lt;br /&gt;&lt;br /&gt;Since I have more experience with revision control tools than others in my team ("more" being "some"), I decided to set up a repository to help us manage our code and documentation. However, I'm not a fan of leaving my computer on all the time due to little details such as...the electric bill. The workflow we have been using is pretty simple. There is a master repository on my desktop, which is turned on in the evenings. When people make a change to the repository, they create a "bundle" file, and e-mail it to me with a certain subject.&lt;br /&gt;The command in Mercurial is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;hg bundle --base [base revision] -r [end revision] [bundle file]&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The desktop monitors the e-mail account for messages with the appropriate subject from a list of approved senders, and checks for the attached bundle file. If it exists, it is downloaded and applied to the repository. Merge conflicts are handled manually as usual. Once the new changes are successfully merged, a new bundle file is created and e-mailed to everyone so they have an up-to-date version of the repository.&lt;br /&gt;&lt;br /&gt;While this may sound overly complicated, from a usage standpoint it is pretty simple and works well in practice for small groups of people. There is also the added bonus of enabling people to exchange changes with each other directly without going through the main repository, thus improving the quality of the main code. I agree that giving everyone SSH access to push/pull changes would simplify the process, however that is not an option for us, plus it would be boring ;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-908876419526973079?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/908876419526973079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=908876419526973079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/908876419526973079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/908876419526973079'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2008/02/distributed-project-management-with.html' title='Distributed Code Management with Mercurial'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-3492738101051193670</id><published>2008-01-27T03:12:00.001-05:00</published><updated>2008-04-06T02:16:12.689-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Mercurial'/><title type='text'>Distributed Version Control Comparison</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;After reading about several new distributed revision control tools over the past several months, I’ve been testing some out (actually, most of them), and a few have caught my interest: Mercurial, Bazaar, Git, and Darcs.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I seem to have settled on Mercurial for now, as I’ve been using it for both school and personal projects over the past few weeks. However, all of these tools have facilities to make conversions between them possible, and even easy (NO WAY!), in some cases. In addition, they also all have support for reading from Subversion repositories. If I happen to change my mind next week I can convert my repositories to another format and use another VCS, which is pretty cool. I’ve broken down the main differences between these tools below, however don’t worry, I will post a more detailed review sometime next week.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;a href="http://www.selenic.com/mercurial"&gt;Mercurial&lt;/a&gt;: Written in Python and works equally well on both Windows and Linux (apparently under other systems as well), and is used by projects such as NetBeans, Mozilla and OpenSolaris. The UI is well designed and the commands are easy to get used too, especially if you have used Subversion or CVS (if you are still using CVS for the &lt;b style=""&gt;LOVE OF GOD&lt;/b&gt; upgrade to Subversion!) before. The output is completely customizable, which makes it perfect for scripting, and it includes all the repository hooks bells and whistles. My personal favorite.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;a href="http://bazaar-vcs.org/"&gt;Bazaar&lt;/a&gt;: Smaller market share than Mercurial or Git, but I have very few complaints. It is used by Canonical Ltd. to manage the Ubuntu linux distribution, and works great under both Windows and Linux. It does seem a tad less responsive, but not by much, and the performance improves with every release. Bazaar also has direct support for the “centralized” version control model (a la Subversion/CVS/Perforce, etc), which saves you an extra command if you use that model for a project. (In Mercurial/Git/Darcs you need to do an extra “push/pull” to communicate with the “central” repository). The conversion tools are also excellent.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;a href="http://git.or.cz/"&gt;Git&lt;/a&gt;: Originally made of up several C programs stuck together with bash and Perl scripts, this tool adheres to the UNIX philosophy of using several small tools, with each one doing one task really well. Git has since evolved to be a great VCS, and is most notably used to manage the Linux kernel. The main shortcoming is its lack of Windows support. It will run with Cygwin, but that is not an option for the average user. If everyone involved in the project uses Linux, Git is definitely worth a look. There is also a great interface for communicating with Subversion repositories, git-svn.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;a href="http://darcs.net/"&gt;Darcs&lt;/a&gt;: Written in Haskell, and uses a &lt;span style=""&gt; &lt;/span&gt;“patch algebra” for changesets to make merging easier. Performance is on par with the rest, although I’ve heard of a few cases where a merge can take hours where it should have taken seconds. However, Darcs is still in its early stages and has some interesting ideas. Like Git, it does not work well in Windows, but for some people that is not an issue. I wouldn’t trust it with a corporate project, but definitely worth a look.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;While you’re waiting for the more in-depth reviews, check out these other comparisons:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.dribin.org/dave/blog/archives/2007/12/28/dvcs/"&gt;http://www.dribin.org/dave/blog/archives/2007/12/28/dvcs/&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a href="http://www.jukie.net/%7Ebart/blog/git-vs-hg"&gt;http://www.jukie.net/~bart/blog/git-vs-hg&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Enjoy!&lt;a href="http://www.jukie.net/%7Ebart/blog/git-vs-hg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-3492738101051193670?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/3492738101051193670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=3492738101051193670' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/3492738101051193670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/3492738101051193670'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2008/01/distributed-version-control-comparison.html' title='Distributed Version Control Comparison'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-8623518625583571488</id><published>2008-01-16T23:29:00.000-05:00</published><updated>2008-01-16T23:35:31.210-05:00</updated><title type='text'>I'm back!</title><content type='html'>So, as you can see from the title, I'm back. Hopefully with regular updates for a while now. I've got some side projects in the initial planning stages, and some interesting classes this semester. Stay tuned. Or Don't. Your Choice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-8623518625583571488?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/8623518625583571488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=8623518625583571488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/8623518625583571488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/8623518625583571488'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2008/01/im-back.html' title='I&apos;m back!'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-6326433464347958452</id><published>2007-07-22T02:04:00.000-04:00</published><updated>2007-07-22T02:24:34.819-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><title type='text'>Projects that took off (in C++ and Haskell)</title><content type='html'>I originally was going to work on three projects, but I've only been working on two, because...it's summer ;)&lt;br /&gt;&lt;br /&gt;Anyway, here is what is actually going on. My development rate increased significantly when I started using a revision control system (&lt;a href="http://www.selenic.com/mercurial/wiki/"&gt;Mercurial &lt;/a&gt;for now):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Name: &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Not Yet&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Description: &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A journaling program that specializes in recording Lucid Dreams (look it up if you don't know what those are), written in C++ using the &lt;a href="http://www.fox-toolkit.org/"&gt;FOX GUI toolkit&lt;/a&gt; (which I very highly recommend). I'd say this project is about 30% complete, but I'm going to have more time to work on it n the next month or so before school starts, so hopefully I'll get something working.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Name: &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Doesn't need one&lt;br /&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Description: &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;An XML parser written in &lt;a href="http://www.haskell.org/"&gt;Haskell.&lt;/a&gt; Not much to describe here, except that Haskell is awesome for writing parsers. More on this later.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a style="font-weight: bold; color: rgb(0, 0, 0);" href="http://www.haskell.org/"&gt;&lt;/a&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 255, 51);"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-6326433464347958452?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/6326433464347958452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=6326433464347958452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/6326433464347958452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/6326433464347958452'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2007/07/projects-that-took-off-in-c-and-haskell.html' title='Projects that took off (in C++ and Haskell)'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-3421940128934769838</id><published>2007-06-04T21:23:00.000-04:00</published><updated>2007-06-04T21:35:32.554-04:00</updated><title type='text'>Summer! (again)</title><content type='html'>So it's summer, which is cool. I have a new list of things to accomplish, which will hopefully go better than last year. I'm sure it will though, as I've already started on a few of these. Anyway, stay tuned for any stuff I end up posting regarding any of these projects. I mean, &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;I&lt;/span&gt; &lt;/span&gt;am involved in them, so they must be awesome ;).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Name:&lt;/span&gt; &lt;/span&gt;Doesn't have One Yet&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Language:&lt;/span&gt; &lt;/span&gt;C++, using the FOX GUI toolkit&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;Description:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Journal/Organizer software, will store files in an XML format.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;Name:&lt;/span&gt; N/A&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt; Language:&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;Haskell&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt; Description:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Write an XML (or possibly other type) of parser in Haskell to learn how it works. So far it's been awesome. Defining and using a binary search tree in 3 lines is pretty sweet.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;Name:&lt;/span&gt; Doesn't have One Yet&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt; Language:&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;Javascript, PHP&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt; Description:&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; &lt;/span&gt;Web-based organization app (because of course there aren't enough of these yet). Just a basic idea at this point.&lt;br /&gt;&lt;br /&gt;Looking back at this, I need to come up with some names for stuff. I'll work on it. Stay tuned for developments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-3421940128934769838?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/3421940128934769838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=3421940128934769838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/3421940128934769838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/3421940128934769838'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2007/06/summer-again.html' title='Summer! (again)'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-2705967836285606697</id><published>2007-01-23T23:41:00.000-05:00</published><updated>2007-01-23T23:48:39.692-05:00</updated><title type='text'>OpenGL Programming</title><content type='html'>So I'm currently taking a graphics programming course, and its pretty intense even though we just started. Apparently it really helps to learn Linear Algebra even though it's not technically a prerequisite.  So I'm giving myself a crash course in Matrix operations. WOOOHOOO.&lt;br /&gt;&lt;br /&gt;Anyway, you should check out &lt;a href="http://www.opengl.org/"&gt;OpenGL&lt;/a&gt;. It's not object oriented, but it is awesome. Their site has some really good documentation as well. A helpful library to have when using OpenGL is glut. If you use Windows, here is a &lt;a href="http://www.xmission.com/%7Enate/glut.html"&gt;pre-compiled DLL&lt;/a&gt; of glut for you. Otherwise you probably know how to compile it yourself, or can at least find instructions on how to do so much better than I could write. If you use Visual Studio (which seems to work pretty well for some strange reason), you can check out &lt;a href="http://csf11.acs.uwosh.edu/cs371/visualstudio/"&gt;this site&lt;/a&gt; which includes instructions on setting up OpenGL and glut in Visual Studio 2003, but it can be adapted to work with 2005 quite easily.&lt;br /&gt;&lt;br /&gt;So when you have some free time, try some OpenGL programming. It's easier than you think and a lot of fun! I'll be posting some of my projects up here in the near future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-2705967836285606697?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/2705967836285606697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=2705967836285606697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/2705967836285606697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/2705967836285606697'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2007/01/opengl-programming.html' title='OpenGL Programming'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-6713298611636019554</id><published>2007-01-04T23:44:00.001-05:00</published><updated>2008-04-06T02:17:17.775-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Reviews'/><title type='text'>"Prey" - An Awesome Game</title><content type='html'>If you haven't played Prey, you should. It's seriously one of the best games I've ever played. It's got a lot of stuff that makes it unique such as wallwalking, gravity switching, "spirit walking" and "death walking". I wouldn't do these features justice by talking about them here, so why not check out the &lt;a href="http://www.prey.com/"&gt;official website&lt;/a&gt;. It has screenshots and in-depth descriptions of all these things.&lt;br /&gt;&lt;br /&gt;The game also as an awesome story, which I like. Multiplayer isn't everything. So if you have some time, go check it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-6713298611636019554?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/6713298611636019554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=6713298611636019554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/6713298611636019554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/6713298611636019554'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2007/01/prey-awesome-game.html' title='&quot;Prey&quot; - An Awesome Game'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-115397044074065897</id><published>2006-07-26T23:16:00.000-04:00</published><updated>2006-07-26T23:23:05.593-04:00</updated><title type='text'>OpenDarwin Project Closing</title><content type='html'>Yes, OpenDarwin is shutting down. This doesn't surprise me too much, as Apple has been known to have problems divulging any type of information. Apparently this caused a problem when they tried to work with open source developers.&lt;br /&gt;&lt;br /&gt;Fortunately, everyone is trying to move the projects to new locations, so hopefully no one will lose anything. Check out the announcement &lt;a href="http://www.opendarwin.org/en/news/shutdown.html"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-115397044074065897?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/115397044074065897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=115397044074065897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/115397044074065897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/115397044074065897'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2006/07/opendarwin-project-closing.html' title='OpenDarwin Project Closing'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-115389074935359788</id><published>2006-07-26T01:06:00.000-04:00</published><updated>2006-07-26T01:16:14.376-04:00</updated><title type='text'>Happy Day Out of Time!</title><content type='html'>Happy &lt;span style="color: rgb(0, 153, 0);"&gt;Day Out of Time&lt;/span&gt;! &lt;a href="http://www.dreamofpeace.net/index.php"&gt;http://www.dreamofpeace.net/index.php&lt;/a&gt;&lt;br /&gt;Check out the link to find out more.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;In other news...&lt;/span&gt;&lt;br /&gt;With the release of Slackware 11 coming soon (who really knows? ;), I've decided to delay my review of Slackware until 11 comes out. As I don't have a broadband connection I cannot keep up with current, so I cannot comment on new packages.&lt;br /&gt;&lt;br /&gt;I may do a general Slackware review however. Stay tuned.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dreamofpeace.net/index.php"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-115389074935359788?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/115389074935359788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=115389074935359788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/115389074935359788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/115389074935359788'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2006/07/happy-day-out-of-time.html' title='Happy Day Out of Time!'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-115094693002536905</id><published>2006-06-21T23:16:00.000-04:00</published><updated>2006-06-21T23:43:08.816-04:00</updated><title type='text'>Linux Symmetric Multiprocessing</title><content type='html'>If you, like me, happen to have more than one (or a dual-core) processor, consider yourself a priveleged and distinguished person. If those multiple CPU's, like mine, happen to be Celeron 400Mhz or less, then ignore this article and set your motherboard on fire. Seriously.&lt;br /&gt;&lt;br /&gt;If you're still reading this because:&lt;br /&gt;a) You think your CPU's are totally badass, or&lt;br /&gt;b) You have 400 Mhz Celerons but want them to be useful despite my warnings,&lt;br /&gt;then be my guest.&lt;br /&gt;&lt;br /&gt;To take advantage of the &lt;span style="font-weight: bold;"&gt;Symmetric Multiprocessing&lt;/span&gt; features in the Linux Kernel (much improved in the 2.4 and 2.6 series), you'll have to recompile your kernel. If this scares you, don't worry, several guides exist online to help you with this. Try a search on Google. Just remember to always keep a backup kernel that you can boot into so you can mess around until you compile a working kernel.&lt;br /&gt;&lt;br /&gt;Anyway, when you recompile the kernel, enable Symmetric Multiprocessing and the features included with it. Now once you have support for multiple CPU's up and running compiling will go a lot faster. You can check your support by typing &lt;span style="font-weight: bold;"&gt;dmesg&lt;/span&gt; at a terminal and reading the output, making sure it recognized all your CPU's starting with CPU#0.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One really cool thing you can do with multiple CPU's when compiling programs is run make with the arguments &lt;span style="font-weight: bold;"&gt;-jX&lt;/span&gt;, where X is &lt;span style="font-weight: bold;"&gt;number of CPU's + 1.&lt;/span&gt; For example &lt;span style="font-weight: bold;"&gt;make -j3&lt;/span&gt; for a 2 CPU system. Make will run 3 processes at once, taking advantage of all the CPU's. This actually increases performance in single CPU machines too, run &lt;span style="font-weight: bold;"&gt;make -j2&lt;/span&gt;. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-115094693002536905?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/115094693002536905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=115094693002536905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/115094693002536905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/115094693002536905'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2006/06/linux-symmetric-multiprocessing.html' title='Linux Symmetric Multiprocessing'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-114965233228455008</id><published>2006-06-06T23:41:00.000-04:00</published><updated>2006-06-06T23:52:12.296-04:00</updated><title type='text'>Rebirth</title><content type='html'>I've decided to start writing here on a regular basis again. This summer should be full of experiences, as I'm setting up a server so I can mess around with mySQL, Apache, PHP, and IRCD. Should be fun ;)&lt;br /&gt;&lt;br /&gt;I'm also planning on writing some software, such as a &lt;span style="color: rgb(0, 153, 0);"&gt;journal program &lt;/span&gt;and possibly an&lt;span style="color: rgb(0, 153, 0);"&gt; IRC client &lt;span style="color: rgb(0, 0, 0);"&gt;(insert "ooohhhh, aaahhhh" here)&lt;/span&gt;&lt;/span&gt;. So stay tuned for some really cool and hopefully helpful programming/linux tips.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-114965233228455008?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/114965233228455008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=114965233228455008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/114965233228455008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/114965233228455008'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2006/06/rebirth.html' title='Rebirth'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-113952176813022340</id><published>2006-02-09T16:32:00.000-05:00</published><updated>2006-02-09T16:52:11.586-05:00</updated><title type='text'>JAVA Scanner's nextLine()</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;This is a simple concept, but some people may not be familiar with it since it's not used that often. When using JAVA's Scanner class to do standard input/output from the keyboard, make sure you use the &lt;/span&gt;&lt;span style="color: rgb(51, 204, 0); font-weight: bold;"&gt;nextLine() &lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;method of Scanner instead of &lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="font-weight: bold;"&gt;next()&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;when you want the program to do something when the user just hits enter at the console without typing anything.&lt;br /&gt;&lt;br /&gt;Of course, this is only true if you're checking that the input is blank. If you use &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="font-weight: bold;"&gt;next()&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;you have to match the input string with the newline character. For example, to throw an exception (or do whatever you want), when the user hits enter without entering any input:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Scanner&lt;/span&gt; stdin = &lt;span style="color: rgb(51, 51, 153);"&gt;new&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;Scanner&lt;/span&gt;(System.in);&lt;br /&gt;&lt;br /&gt;String inputString = stdin.&lt;span style="color: rgb(51, 51, 153);"&gt;nextLine()&lt;/span&gt;;&lt;br /&gt;if(inputString.&lt;span style="color: rgb(51, 51, 153);"&gt;equals("")&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;   &lt;span style="color: rgb(51, 204, 0);"&gt; //do whatever, mabye throw an exception&lt;br /&gt; //or display a message&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:georgia;" &gt;That little code snippet will work, doing whatever is in the brackets of the &lt;span style="color: rgb(0, 153, 0);"&gt;if &lt;span style="color: rgb(0, 0, 0);"&gt;statement when the user hits enter without typing anything. You can also use &lt;span style="color: rgb(255, 153, 0);"&gt;inputString == "", inputString.charAt(0) == '', &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);font-family:georgia;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;inputString.length == 0, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);font-family:arial;" &gt;&lt;span style="color: rgb(0, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 153, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:georgia;"&gt;etc to test the content of the string. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;This was a real problem for me, I spent 20 extra minutes on a lab because of it. If you want to implement the input this way, be sure to use &lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);font-family:georgia;" &gt;nextLine()&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;, not &lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;&lt;span style="font-family:georgia;"&gt;next(). &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:georgia;" &gt;Enjoy, and stay tuned for more programming tips!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-113952176813022340?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/113952176813022340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=113952176813022340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/113952176813022340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/113952176813022340'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2006/02/java-scanners-nextline.html' title='JAVA Scanner&apos;s nextLine()'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-113159334806704921</id><published>2005-11-09T22:27:00.000-05:00</published><updated>2006-01-23T17:21:57.650-05:00</updated><title type='text'>Python. It's good, real good.</title><content type='html'>&lt;p class="MsoNormal"&gt;At first glance Python may resemble an archaic language, but it’s not. Those of you who think that, well, I respect your opinion, but you’re wrong. Python is extremely powerful, especially for a scripting language, and rivals the functionality of classic compiled languages such as C, C++ and Java. To get a basic introduction to Python check out the links at the official Python site:&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;a href="http://www.python.org/"&gt;Http://www.python.org&lt;/a&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;Python contains some cool basic data structures that make coding with less actual code possible and coding in general much easier. The two data structures I’ll talk about are &lt;b style=""&gt;lists&lt;/b&gt;, and &lt;b style=""&gt;dictionaries. &lt;/b&gt;If you’ve programmed before, think of a list as an array, because it can function like an array, but it so much more. A list is a data structure that can hold a variety of data types, all in one list, which is pretty badass. (Come on, admit it.) For example: &lt;span style="color:green;"&gt;list1 = [“ice”, 9, I, “Kids”, “Joe”] &lt;/span&gt;would be a valid declaration. Items in lists are referenced by index (0,1,2,...etc).&lt;/p&gt;   &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;      &lt;p class="MsoNormal"&gt;A dictionary contains items bound to keys. For example, &lt;span style="color:green;"&gt;dict1 = {“Cheese” : “good”, “Bob” : 92}&lt;/span&gt;&lt;br /&gt;declares a dictionary. To references the object “good”, you would use &lt;span style="color: rgb(51, 153, 102);"&gt;dict1[“Cheese”]&lt;/span&gt;.  Almost any data type can be an item in a dictionary, (integers, string, lists, other dictionaries, tuples, etc), but the types of items that can be keys are limited. It's too complicated to explain here, and you'll probably only want to use basic data types as keys anyway.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-style: italic;"&gt;Another Note:&lt;/span&gt; Python can be extremely fast because many of the modules in the Python library are coded in C. In fact, it's really easy to write your own modules in C or C++ and use them in Python (if you write C or C++ of course).&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;   &lt;p class="MsoNormal"&gt;Stay tuned for more tips on Python and other languages. Code On.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-113159334806704921?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/113159334806704921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=113159334806704921' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/113159334806704921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/113159334806704921'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2005/11/python-its-good-real-good.html' title='Python. It&apos;s good, real good.'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-112900529643491260</id><published>2005-10-11T00:34:00.000-04:00</published><updated>2005-10-11T00:34:56.446-04:00</updated><title type='text'>Transformation</title><content type='html'>I’m in the process of transforming this into a source of interesting tech news, so just chill out while it happens. I have classes and mid-terms to worry about, so it might take a week or so. Don’t get all excited and make porn movies.&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-112900529643491260?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/112900529643491260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=112900529643491260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/112900529643491260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/112900529643491260'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2005/10/transformation.html' title='Transformation'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9896761.post-110860801713216618</id><published>2005-02-16T21:38:00.000-05:00</published><updated>2005-02-16T21:40:17.133-05:00</updated><title type='text'>The Cockfight</title><content type='html'>Today  was normal. Kind of.&lt;br /&gt;Not that you care about my day. I’m sure you don’t, just like I don’t care about yours. But I bet you’d care about it if it were funny, right? Don't lie to me.&lt;br /&gt;&lt;br /&gt;Anyway, I saw a cockfight at this gas station on the way home. Yes, my car uses gas, just like everyone else’s.  I was standing there, pumping gas, trying to look cool like everyone does at gas stations (don’t deny it), and I saw a bunch of chickens come running out from behind the gas station. Two of the males started pecking at each other.&lt;br /&gt;&lt;br /&gt;So let’s review: I’m trying to look cool pumping gas while a bunch of chickens peck the crap out of each other. Some other guy getting gas was watching too. We should've made some bets. Anyway, I got gas and a free cockfight at no extra charge. Life rules.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9896761-110860801713216618?l=programminglog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programminglog.blogspot.com/feeds/110860801713216618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9896761&amp;postID=110860801713216618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/110860801713216618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9896761/posts/default/110860801713216618'/><link rel='alternate' type='text/html' href='http://programminglog.blogspot.com/2005/02/cockfight.html' title='The Cockfight'/><author><name>CheeseOfSteel</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
