I completed my steganography project last night ([[Steganosaurus 1.0]]), and tonight, I blogged about it. I posted it on Blogger (<html><a href="http://jeffreyscudder.blogspot.com/2006/11/steganography-scheme-part-2.html">A Steganography Scheme - Part 2</a></html>) and also copied it below. \n><html>\nMy text based <a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html#%5B%5BSteganosaurus%201.0%5D%5D">steganography program</a> is here! I completed the program yesterday, and Vanessa came up with a great name: <a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html#%5B%5BSteganosaurus%201.0%5D%5D">Steganosaurus</a>. Get in touch with me if you would like me to send you the program and the source code. I'm still considering publishing it on an open source hosting site.<br/><br/>\n\nYou may recall my <a href="http://jeffreyscudder.blogspot.com/2006/09/steganography-scheme-part-1.html">previous post</a> about this steganography scheme, and I said I would tell you how it all works. So here goes:<br/><br/>\n\nMy steganography program needs 4 pieces of information to embed or extract a secret message, it needs a file which will be converted, the base, the shift value, and a filename to which the converted message will be stored. The base and shift need a bit of explanation.<br/><br/>\n\nBase: All data on a computer is a number, and a number can be expressed multiple ways. I wrote about this in "<a href="http://jeffreyscudder.blogspot.com/2006/09/steganography-scheme-part-1.html">A Steganography Scheme - Part 1</a>". So the base tells Steganosaurus how to express the data. Should each number in the source file be converted into a series of values between 0-10, 0-50, 0-200? The choice is yours.<br/><br/>\n\nShift: My program outputs a range of values from the source file, and each of them is between 0 and Base. How does this become readable text? That is the purpose of the shift, it is a value added to each piece of the converted file to make it into a character. So the result of the whole process is the contents of the original file expressed as numbers in the range Shift to Base + Shift. These numbers are converted into <a href="http://en.wikipedia.org/wiki/Unicode">Unicode</a> characters (<a href="http://en.wikipedia.org/wiki/Utf-8">UTF-8</a>) so the end result is a readable file. You can see an example in my <a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html">wiki</a> entry about <a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html#%5B%5BSteganosaurus%201.0%5D%5D">Steganosaurus</a>. (It's probably easiest to see an example.) <span style="font-weight: bold;">By using different shift values, you can hide the data from your original file in text from any language in the world.</span><br/><br/>\n\nSo check it out, give it a shot, and ask me to send Steganosaurus to you.\n</html>
I've been doing a bit of C programming as part of my learning to create a new programming language. If you suspect that I've been working on my [[Skutter]] project, you would be correct. This blog post has an added twist, but you'll have to read all the way to the end to find out what it is. Be sure to check out the comments people leave on [[my blog|http://jeffreyscudder.blogspot.com/2007/01/simulating-classes-in-c.html]].\n><html>I have to admit, I like to program in C. In some ways, it is simpler than some of the newer, high level languages, and I really enjoy being closer to the machine code. Perhaps I'm a bit obsessive about efficiency. Still, I sometimes long for classes and objects in my C programs, (This is where you tell me that I should use C++ or Objective-C.) so I decided to figure out how I could simulate classes in plain old ANSI C.\n<br/><br/>\nIt turned out to be quite easy. After I read up on function pointers, I created a struct which contains references to functions (kind of like class methods). Here's a simple example of what I'm talking about:\n<pre>\n#include&lt;stdio.h&gt;\n\ntypedef struct {\n int (*test)(int); /* This is the function pointer */\n} functionholder;\n\n/* At runtime, I will point to this function */\nint thefunction(int x) {\n printf("thefunction says %i\sn", x);\n return 0;\n}\n\nint main() {\n functionholder fholder;\n fholder.test = &thefunction;\n (*fholder.test)(7);\n return 0;\n}\n</pre>\nWhen I run the above, the program prints "thefunction says 7".\nFrom there, I decided to create a family of structures which would simulate classes, objects, and allow polymorphic function calls.\n<br/><br/>\nOne way to divide up data and methods in an OO way is to say that the class dictates the methods which can be used with the data in an object instance. So we could say that a class contains a list of functions. Using function pointers, the method called can be changed at runtime, as long as all of the functions have the same stack profile. Have I lost you yet? So what I needed to do was create a generic function prototype which abstracts the parameter list into a common format. While I was at it, I decided to lose the restriction that methods return only one value, so the results of a method call will be stored in a structure which is passed in as a parameter. (The method should probably be called a procedure instead of a function.) Perhaps it would be simpler to show you the code.\n<pre>\ntypedef struct {\n void* type; /* This will point to a JSClass. */\n void* data;\n} JSObject;\n\ntypedef struct {\n int object_count; /* number of objects in the array */\n JSObject** objects; /* An array of pointers to JSObjects */\n} JSListOfObjects;\n\ntypedef struct {\n char* name;\n /* Each JSClass contains a list of pointers to the methods which belong\n * to that class. */\n int method_count;\n /* strings naming the functions (allow method lookup by string) */\n char **method_names;\n /* An array of pointers to functions */\n void (**methods)(JSObject* x, JSListOfObjects* y, JSListOfObjects* z);\n} JSClass;\n</pre>\nI was going to discuss the functions I created to streamline "class" method invocation, but this post is getting a bit long. So I've decided to try something fun. I'm going to ask you, gentle reader, to suggest a design for a function which simplifies invocation of an object method. I will mail $1 (USD) to the person who posts the "best" working solution in the comments below. (I'll be compiling using gcc -ansi. Oh, and US residents only, I don't want to run into any strange rules.). In addition to a dollar, you'll have won bragging rights for the first of my blog challenges. After a week or two, I'll post my solution and we can all compare notes. Happy coding!</html>
Another day, another new web page. I created a <html><a href="http://del.icio.us/">del.icio.us</a></html> page to collect links and bookmarks. If you haven't heard of del.icio.us, it is a web site that mixes tagging and web page bookmarking. Think of it as a way to organize all of your bookmarks and share them with others. \n\nCheck out my del.icio.us page here: http://del.icio.us/jaguarjaws\n\nMy list of web pages has been growing so I decided to dedicate a new tiddler to MyWebPages. I made some other small updates here and there.
Vanessa and I are back from China and I'm writing a series of blog posts about some of the neat things we saw while we were there. \n><html><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_54HtFT6yBFI/RfTZKOi02HI/AAAAAAAAAB4/HdI9uFyV17k/s1600-h/China+2007+137.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_54HtFT6yBFI/RfTZKOi02HI/AAAAAAAAAB4/HdI9uFyV17k/s200/China+2007+137.jpg" alt="" id="BLOGGER_PHOTO_ID_5040892652660512882" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_54HtFT6yBFI/RfTYfOi02FI/AAAAAAAAABo/zeWLPxq22FQ/s1600-h/China+2007+026.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_54HtFT6yBFI/RfTYfOi02FI/AAAAAAAAABo/zeWLPxq22FQ/s200/China+2007+026.jpg" alt="" id="BLOGGER_PHOTO_ID_5040891913926137938" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_54HtFT6yBFI/RfTYfei02GI/AAAAAAAAABw/ZMElNtah2_8/s1600-h/China+2007+003.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_54HtFT6yBFI/RfTYfei02GI/AAAAAAAAABw/ZMElNtah2_8/s200/China+2007+003.jpg" alt="" id="BLOGGER_PHOTO_ID_5040891918221105250" border="0" /></a>Vanessa and I just got back from our trip to China and I'm going to spread out some of the details over several days. We took over eight hundred pictures, so I'll be sharing a few from each of the days. In this first (of many) posts about the China trip I'll talk about our first day of sight seeing in Beijing.<br/><br/>\n\nIt snowed on our first morning in China and it was a welcome if not shocking change from the weather back home. I've been missing the snow since I moved to California so it was good to be in it again, even if it made walking around a bit difficult. We started the day with a short tour of the Summer Palace, which was a gift from the emperor to his mother for her 60th birthday. It was quite a gift, a man made lake and acres of gardens.<br/><br/>\n\nAfter seeing the palace, we traveled to the Ming Tombs and visited the largest tomb. The buildings were massive and filled with artifacts buried with the emperors of days long gone by. The styles and designs of the ancient crowns and armor were very interesting and not quite what I was expecting. If you'd like to see more pictures, I'll point you to a place where you can view them. Tune in for more details from the trip in the very near future.</html>
<html>I wrote a new blog entry today. It's posted in the <a href="http://jeffreyscudder.blogspot.com/">usual</a> <a href="http://blog.myspace.com/jaguarjaws">places</a>.</html>\n\n><html>Simplicity. Life can so easily get too complicated. I often feel that it is so already, and there is still so much ahead of me. So I've been thinking about how to simplify my life, I've even been reading about it. If you are looking for a good book to read, check out <a href="http://books.google.com/books?vid=ISBN0060628391&id=FR4z93ezwqwC&pg=PA79&lpg=PA79&dq=celebration+of+discipline&sig=g-WCbI_w2mkc-mBJUf2sz7RXPvk">Celebration of Discipline</a> by Richard Foster. I read through it a couple of years ago and found it to be extremely refreshing. The perspective offered by Richard Foster is quite different from that we usually find in our affluent, consumer culture. <br/>\n<br/>\nSpeaking of simplicity, I've been complicating my web presence by creating a <a href="http://jeffrey.scudder.googlepages.com/homepage">new webpage</a> and signing up for <a href="http://del.icio.us/jaguarjaws">del.icio.us</a>. I wrote <a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html#%5B%5B10%20October%202006%5D%5D">more</a> about it a couple of days ago on my <a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html">wiki page</a>. \n</html>\n\nI'm still working on [[A Steganography Tool]] and a blog post to accompany its completion. Stay tuned.
I've written another installment of my series on our trip to China. \n><html><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_54HtFT6yBFI/RfdXuui02KI/AAAAAAAAACQ/KZ7NwY50LIo/s1600-h/China+2007+211.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_54HtFT6yBFI/RfdXuui02KI/AAAAAAAAACQ/KZ7NwY50LIo/s200/China+2007+211.jpg" alt="" id="BLOGGER_PHOTO_ID_5041594768144259234" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_54HtFT6yBFI/RfdYHui02LI/AAAAAAAAACY/ZntVG9bFl2E/s1600-h/China+2007+221.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_54HtFT6yBFI/RfdYHui02LI/AAAAAAAAACY/ZntVG9bFl2E/s200/China+2007+221.jpg" alt="" id="BLOGGER_PHOTO_ID_5041595197640988850" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_54HtFT6yBFI/RfdVxOi02II/AAAAAAAAACA/v9oheab-dhA/s1600-h/China+2007+171.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_54HtFT6yBFI/RfdVxOi02II/AAAAAAAAACA/v9oheab-dhA/s200/China+2007+171.jpg" alt="" id="BLOGGER_PHOTO_ID_5041592612070676610" border="0" /></a>I'm picking up my narrative on the second half of the first full day in which we visited the Great Wall. It was absolutely breathtaking and the pictures don't do it justice. You could see the wall winding through the mountains for miles standing dark against the new fallen snow.<br/><br/>The next morning, we visited Tiananmen Square and the Forbidden City. It was extremely cold when the wind picked up, but the sights were impressive. The Forbidden city is quite a palace, and the bold colors and detailing have been recently restored in preparation for the Olympics. One of the largest buildings was still under wraps. I was struck by the size of the palace. As I walked through the last few corridors I thought I was nearing the end only to walk into a massive courtyard. I think it was about seven courtyards, but don't quote me on it. (<a href="http://maps.google.com/maps?f=q&hl=en&amp;q=beijing+china&layer=&amp;ie=UTF8&om=1&amp;z=16&ll=39.916468,116.390855&amp;spn=0.011998,0.029697&t=k&amp;iwloc=addr">Check out the satellite image on Google Maps</a>.) In my next post, I'll write about our rickshaw ride through Beijing and our visit to the Temple of Heaven.</html>
Another post on our China trip, we're nearing the end now.\n><html><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_54HtFT6yBFI/RiWKshAUZWI/AAAAAAAAADc/M8H6lOiYel4/s1600-h/China+2007+413.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_54HtFT6yBFI/RiWKshAUZWI/AAAAAAAAADc/M8H6lOiYel4/s200/China+2007+413.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5054598654171833698" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_54HtFT6yBFI/RiWKsBAUZVI/AAAAAAAAADU/v281k_t15BM/s1600-h/China+2007+322.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_54HtFT6yBFI/RiWKsBAUZVI/AAAAAAAAADU/v281k_t15BM/s200/China+2007+322.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5054598645581899090" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_54HtFT6yBFI/RiWIaRAUZUI/AAAAAAAAADM/TRL2iqEQCD0/s1600-h/China+2007+321.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_54HtFT6yBFI/RiWIaRAUZUI/AAAAAAAAADM/TRL2iqEQCD0/s200/China+2007+321.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5054596141615965506" /></a>We begin this installment of our ongoing series on our China trip in my favorite location. The Lingering Garden is a masterpiece of architecture and oriental style gardens complete with bonsai trees (However, it was devoid of <a href="http://www.shorty.com/bonsaikitten/">bonsai kittens</a>). I'm not surprised that Chinese poets came to this garden to find inspiration in beautiful Suzhou. I could have easily spent a few more hours walking around the pond and I can't believe that the entire complex of gardens and buildings once belonged to one family.<br/><br/>The third picture in this post is from the leaning Huqiu Tower in Suzhou. The brick work on the structure was amazing and it is older than the Leaning Tower of Pisa. Vanessa took this one from a plaza to the side of the tower. Next time, I'll write about the very end of our trip in Hangzhou and Shanghai.</html>
I added a new link to the list of MyWebPages, [[twitter|http://twitter.com]]. Twitter is a web site dedicated to allowing you to tell the world what you are doing right now.
I added a tiny bit more information about [[A Steganography Tool]] and made a few small (probably imperceptable) changes to the underlying HTML.
<html>I made another blog entry. If you would like to leave a comment, post it on <a href="http://jeffreyscudder.blogspot.com/">my blog</a>.</html>\n\n><html>Usually, my blog posts center on one theme or one idea which I try to explore in depth. Tonight I'm not feeling so focused, so here is a scatterbrained snapshot, developed from my tired mind. It has been a long week.<br/>\n<br/>\nWhat am I up to?<br/>\n<br/>\nI wanted to write a quick update, because it has been a while. I'm still working on my <a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html#%5B%5BA%20Steganography%20Tool%5D%5D">steganography project</a>. I decided to build UTF-8 support into it, and this has complicated things slightly, but it's good because I'm learning new things. I spend an hour or two on it a couple of days a week and it is coming along quite well.<br/>\n<br/>\nI'm reading a book. <a href="http://en.wikipedia.org/wiki/Neverwhere">Neverwhere</a> by Neil Gaiman and I'm really enjoying it. Many thanks to m3tus for letting me borrow it. I will probably finish it on the flight tomorrow.<br/>\n<br/>\nAnd where is this flight taking me you might ask. Well, homecoming of course (this is for my University, just to clarify). I'm looking forward to meeting old friends and hanging out in the old haunts, so to speak.<br/>\n<br/>\nAnd now I will close with a random link: <a href=""></a>. I don't know if you have heard about the upcoming Transformers movie. I'm mildly interested because this was one of my favorite shows when I was very young. Apparently, they are having a contest to choose a line which will be said by Optimus Prime during the movie. The whole thing seems like a giant publicity stunt (and a way to collect email addresses), but it is kind of fun to watch people try to hijack the election to choose the line. One individual was campaigning to get the line "<a href="http://www.l-o-2.com/blog/2006/10/i_guess_ill_transformer_into_a.html">I Guess I'll Transformer Into A Truck Now.</a>" entered into the contest. Unfortunately his line didn't make it. Personally, I'm pulling for "These pretzels are making me thirsty!"<br/>\n<br/>\nRandom.</html>
Today's blog is hot off the presses. I tried out the notes feature on facebook and imported my blogger posts. I guess that means this blog entry can be viewed in four places. Take your pick.\n\n><html>It's good to be back on the Internet. My wonderful wife and I relocated a couple of weeks ago to our new domicile and our connection was set up today. A lot had happened while I was out. The facebook <A href="http://blog.facebook.com/blog.php?post=2208562130">newsfeed situation</A> was addressed, new <a href="http://homestarrunner.com/sbemail.html">Strong Bad emails</a> were released, and, best of all, my uncle <a href="http://www.myspace.com/uncadoug">Doug</a> signed up on myspace and has written a mighty fine <a href="http://blog.myspace.com/blog/rss.cfm?friendID=108507265">blog (rss feed)</a>. It seems that my return to <a href="http://en.wikipedia.org/wiki/Neuromancer">cyberspace</a> was none too soon:<BR/><BR/><I>So, I've been on myspace for a couple of days now. My profile echos when it loads, a soft lonely sound. Tom's still smiling away like a leprechaun (I should be having so much fun), lovin' you Tom, you haven't removed yourself from my page, yet. Off in the distance I hear crickets or is that my knees? Anyway, I'm waiting in breathless anticipation for at least my wack-job nephew and his lovely, vivacious bride to answer my request to be their friend. Maybe someone in an induced stupor of some sort will accidently stumble upon my page and be touched by my incessant whining and think to themselves "that poor bastidge, I'm gonna be that fargin' Snuncle_Fudge's friend!!"*</I><BR/><BR/>Good show Uncle!<BR/><BR/>* Quoted directly from Doug's blog, a Doug's blog production, copyright Doug 2006, all rights reserved, available for a limited time only, while supplies last, act now and get two for the price of one, a $50 value for only $19.99.</html>
Here's my blog post for today. I've continued to work on [[Skutter]] and some of the things I've been learning in these exercises may make their way into that project.\n><html>Well the $1 C contest has come to an end after generating lots of interest but no full blown solutions. I'm okay with that, thanks to all of you who expressed interest and started on it. From conversations with several of you over chat, I know that there were some great ideas out there. If you don't mind taking the time, please describe your idea in the comments section. As my friend Matt can attest, I love discussing software, ideas, designs, and just about anything related to creative problem solving. This is probably why I really enjoyed math in high school and college. I looked at each problem as a logic puzzle which could be solved multiple ways. Finding the most elegant solution made me feel like I had just written a poem of supreme beauty.\n<pre>\n/* JSObject functions */\nvoid InvokeObjectMethod(JSObject* object, char* methodName,\n JSListOfObjects* inputParams,\n JSListOfObjects* outputParams) {\n int i;\n JSClass* class_of_object;\n int method_index = -1;\n\n /* Impossible to invoke a method on a NULL pointer */\n if(object == NULL) {\n /* ToDo: send a "NULL object" error code in the outputParams. */\n return;\n }\n\n class_of_object = (JSClass*)(object->type);\n\n if(class_of_object == NULL) {\n /* ToDo: send a "NULL class" error code in the outputParams. */\n return;\n }\n\n /* Find the index of the methodName in the object's class. */\n /* This part of the code is O(n) efficient, but this could be \n improved if the function names were sorted or if a hash \n algorithm was used. Hashing could reduce to O(1). */\n /* I could also allow the calling code to specify the desired \n method directly by index to avoid requireing a string \n lookup for each invocation. */\n for(i = 0; i < class_of_object->method_count; i++) {\n if(strcmp(class_of_object->method_names[i], methodName) == 0) {\n method_index = i;\n break;\n }\n }\n\n /* If the method name was not found in the list of class methods, \n return an error code. */\n if(method_index == -1) {\n /* ToDo: send a "method not found" error code in the \n outputParams. */\n return;\n }\n\n /* Invoke the method at the index corresponding to the method \n name. */\n (*(class_of_object->methods[method_index]))(object, inputParams, \n outputParams);\n} \n</pre>\nI wrote my solution a few weeks ago, then started researching how other object oriented schemes are implemented. I found out that my code has several disadvantages and some significant advantages as well. For example, I started to comapre the likelyhood of missing the RAM cache to solutions in C++ and Java. There were a few other intersting comparisons but I won't go into all of the nitty gritty details. Overall, I'm very pleased because I learned a lot. Lets discuss!</html>
I created this page and posted it on googlepages. This is the first version of what will hopefully be an often updated site.\n\nI posted a blog entry on myspace today as well. Here is what I wrote:\n\n>So my last blog was a bit complex, er, well incomprehensible, or hmm poorly written. But I have something new to say. It's TiddlyWiki. No not tiddlywinks, I'm talking about tiddlywiki.com. I have to say I've found it to be quite useful and I have used it to create a new home page for your viewing pleasure. It's humble and simple, and I hope to keep it that way. No need for flashiness or grandious effects. Just a place to organize some of my thoughts to share them with the world out there.\n>\n>TiddlyWiki is quite a nice tool. I've been using it for brainstorming and organizing my thoughts. I tend to have quite a few ideas floating around, and oragnizing them quickly can be a real pain. I like simplicity and speed, so I often recorded my thoughts in notepad or vim (my laptop runs linux). But here is a handy little web page that turns your browser into a text editor with tagging and hierarchical organization. Pretty nifty I think. I'm using it on a USB flash drive at the moment and keeping a private wiki to track all of the many things I have going on. From to do lists to notes on my personal software projects, I'm carrying it with me in my pocket. So yeah, check it out. \n>\n>TiddlyWiki: http://www.tiddlywiki.com\n>My new webpage: http://jeffrey.scudder.googlepages.com/PublicWiki.html\n>\n>Feel free to break my page, let me know if you find anything wrong.
My blog now contains part three of our trip to China. \n><html><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_54HtFT6yBFI/RgC2PumsGkI/AAAAAAAAACw/fY3wl6jSzDc/s1600-h/China+2007+266.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_54HtFT6yBFI/RgC2PumsGkI/AAAAAAAAACw/fY3wl6jSzDc/s200/China+2007+266.jpg" alt="" id="BLOGGER_PHOTO_ID_5044231963979553346" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_54HtFT6yBFI/RgC2POmsGjI/AAAAAAAAACo/7xjHSxG9yNc/s1600-h/China+2007+257.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_54HtFT6yBFI/RgC2POmsGjI/AAAAAAAAACo/7xjHSxG9yNc/s200/China+2007+257.jpg" alt="" id="BLOGGER_PHOTO_ID_5044231955389618738" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_54HtFT6yBFI/RgC2-emsGmI/AAAAAAAAADA/rsX0Abesokk/s1600-h/China+2007+245.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_54HtFT6yBFI/RgC2-emsGmI/AAAAAAAAADA/rsX0Abesokk/s200/China+2007+245.jpg" alt="" id="BLOGGER_PHOTO_ID_5044232767138437730" border="0" /></a>There were only a few moments where we caught a glimpse of what everyday life is like for the people of China and a couple of them came on this day of traveling. We continued our journey with a rickshaw ride through some of the older areas of Beijing and then we took a trip to the Temple of Heaven. As we walked the long corridor to the temple, we saw a large group of people playing cards, dancing, and making music. It was a glimpse of life that I would like to have taken part in, but I felt like an outsider. I'm still not sure what card games they were playing. The Temple of Heaven was a breathtaking structure and from the top of the hill you could see the entire city.</html>
I made some changes to the color scheme from the original settings on http://www.tiddlywiki.com. The new colors are different, but I would hesitate to say better. I will be making more changes in the coming days. I'm also planning to add visual elements along the left side of the page. I also made an update to my TiddlyWikiGuide. Ideas, recommendations? ContactMe and let me know what you think.
Good news everyone! I've started a blog (http://jeffreyscudder.blogspot.com/). That's right, one more place to post my ramblings and shamblings. I've added it to my list of websites and while I was at it I made some minor changes to the color scheme and added tags to some of the tiddlers. I've copied the contents of my blog below.\n\n>I recently tried out TiddlyWiki (http://www.tiddlywiki.com) and I've used it to created a simple page which I plan to update periodically (http://jeffrey.scudder.googlepages.com/PublicWiki.html). It has some information about the projects I'm working on in my spare time, other web real estate on which my face is pasted, and it serves as a collection of blogs and posts in other domains. I've become almost addicted to TiddlyWiki while using it for brainstorming and organizing my thoughts. As I'm writing, I can easily mark a topic for further explanation by writing a WikiWord. It turns my browser into a rich text editor. Quite a nifty little doodad. I'm curious to see what happens when the HTML file grows to a massive size.
This past weekend, I worked on one of my recreational projects: [[Skutter]]. I wrote quite a bit about my plans and the work I have done so far. Stay tuned for more details.
Two blog posts today. I discoverd the badge feature on facebook and wrote a blog about it on blogger. Of course then I had to blog about my blog on myspace, because I don't think anyone knows about my blogger account at this point. So now below, my blogger blog and my myspace blog about my blogger blog. Blog!\n\nBlogger:\n>I stumbled across Facebook's badge feature today. It's pretty nice I must say. Simple, easy to use, and in keeping with Facebook's clean style. I'm on both Facebook and Myspace and I must say I have preferred Facebook thus far. Who knows, maybe Myspace will change for the better. I could do without audio and video clips embedded on Myspace pages. I want to control the noise that comes out of my computer and I make a point to disable all sound effects, warning bells, audible chat alerts, etc. Nothing should get in the way of my music while I'm surfing the web.\n>\n><html><a href="http://www.facebook.com/p/Jeffrey_Scudder/9218859" title="Jeffrey Scudder's Facebook profile" target="_TOP"><img src="http://badge.facebook.com/badge/9218859.257.1337067779.png" alt="Jeffrey Scudder's Facebook profile" border="0" /></a></html>\n\nMyspace:\n>My online empire is expanding. I've recently signed up for blogger. I guess I just can't get enough. Feel free to check it out at http://jeffreyscudder.blogspot.com. I'm keeping this one short and sweet so you can spend all of your time reading my blogger posts. Oh and while you're reading, check out Vanessa's blog too. I know you won't want to miss our pizza adventure. That's right adventure!
Vanessa and I are leaving for China soon so I announced our trip on [[my blog|http://jeffreyscudder.blogspot.com/]]. Here's the contents of the blog post:\n><html>My wife and I leaving for China in the very near future. We're both really excited, I've never been to the eastern hemisphere before and I'm looking forward to experiencing a different culture. The trip will also give Vanessa plenty of opportunities to practice her Chinese.<br/><br/>\n\nI'll have a vast array of experiences to share with you, gentle reader, upon our return. So for now I'll leave you with some half finished thoughts. I started no less than three blog posts over the past two weeks, but they are all sitting as unfinished drafts. Here's a brief summary of one of the things I started to talk about. (In the end it turned out to be not quite so brief.)<br/><br/>\n\n<b>Cellular Automata</b><br/>\nI've been looking into <a href="http://en.wikipedia.org/wiki/Cellular_automaton">Cellular Automata</a> recently as a source for complex data interactions. There has been some discussion among cryptographers about the use of cellular automata as possible <a href="http://en.wikipedia.org/wiki/Pseudo-random_number_generator">pseudo random number generators</a>. The best known example of a cellular automata is <a href="http://www.ibiblio.org/lifepatterns/">John Conway's Game of Life</a> and I think it illustrates the kind of complex interactions which can occur within a cellular automaton, even though it is a "universe" with very few rules.<br/><br/>\n\nI started to look at the behaviors in Wolfram's rule 30 and rule 110 cellular automata because those have been selected as possible candidates for cryptographic systems. I wrote a program to evaluate patterns produced by these rules in a finite two dimensional field which wraps on both ends. I think I may have found other rules which may also prove promising for cryptographic use, but I need to do more evaluating. I'd ultimately like to use a three, four, or five dimensional system to see if I could build a useful <a href="http://en.wikipedia.org/wiki/Pseudo-random_number_generator">PRNG</a> but I will need to spend considerably more time ensuring that the patterns created by the rules remain complex. In the 2D system I evaluated, the vast majority of rules produces very predictable patterns.<br/><br/>\n\nSee you when I get back.</html>
Oh look, another blog entry. And this one is about food!\n><html><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://jeffrey.scudder.googlepages.com/Pomegranatesection.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://jeffrey.scudder.googlepages.com/Pomegranatesection.jpg" alt="" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://jeffrey.scudder.googlepages.com/Pomegranateinbowl.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://jeffrey.scudder.googlepages.com/Pomegranateinbowl.jpg" alt="" border="0" /></a>A couple of weeks ago I had a pomegranate for the first time. Eating it was quite an intricate task, made all the more so by the challenge in keeping pomegranate juice off of my clean white shirt. (It's a new favorite of mine and states proudly "Debugging Sucks. Testing Rocks.", but I digress.) If you have the chance to try one, do it! I've never eaten anything quite like it. I think I would describe the inside as if someone shrank red (seeded) grapes and made the grow on the inner wall of a squash. Check out the pictures.</html>
I installed [[Fluxbuntu|http://fluxbuntu.org/]] on my old and underpowered laptop last night. The performance is quite good for an old machine, and my modern operating system only uses a small percentage of the very limited RAM on my machine. \n\nI added the packages and libraries I will be using for software development using [[aptitude|http://packages.ubuntulinux.org/hoary/admin/aptitude]]. Aptitude works like a dream and it has made package management so much easier than systems I've dealt with in the past. I had a hard time finding a good description for aptitiude online, so here's my brief explanation:\n\nAptitude is a program which allows you to select open source programs you would like to install. It automatically checks dependencies then downloads everything needed to install the programs you want. It also allows painless updates when new versions of a program are released and it allows you to easily remove a program if you no longer need it.
Here's my final post on our China trip. \n><html><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_54HtFT6yBFI/RjlocjJKEXI/AAAAAAAAAEM/dDUsEa8h-dk/s1600-h/China+2007+125.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_54HtFT6yBFI/RjlocjJKEXI/AAAAAAAAAEM/dDUsEa8h-dk/s200/China+2007+125.jpg" alt="" id="BLOGGER_PHOTO_ID_5060190496006738290" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_54HtFT6yBFI/RjlobjJKEVI/AAAAAAAAAD8/YzvJb5dw-48/s1600-h/China+2007+014.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_54HtFT6yBFI/RjlobjJKEVI/AAAAAAAAAD8/YzvJb5dw-48/s200/China+2007+014.jpg" alt="" id="BLOGGER_PHOTO_ID_5060190478826869074" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_54HtFT6yBFI/RjlocDJKEWI/AAAAAAAAAEE/yuXjgF8GzbE/s1600-h/China+2007+152.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_54HtFT6yBFI/RjlocDJKEWI/AAAAAAAAAEE/yuXjgF8GzbE/s200/China+2007+152.jpg" alt="" id="BLOGGER_PHOTO_ID_5060190487416803682" border="0" /></a>I&nbsp;will&nbsp;close&nbsp;my retelling of our China trip with our days in <a href="http://en.wikipedia.org/wiki/Hangzhou">Hangzhou</a> and <a href="http://en.wikipedia.org/wiki/Shanghai">Shanghai</a>. (The Wikipedia articles have great pictures of many of the sites I took pictures of, including the tea plantations and Shanghai's waterfront.) In Hangzhou, we began with a boat ride on the West Lake and took a walk through the gardens nearby. We also visited a tea house and sampled traditional green tea. The next day, we traveled to Shanghai. There, Vanessa and I saw the new developments and skyscrapers which have sprung up over the past few years. It is a city which is growing extremely rapidly, yet all of the land is still owned by the government. They have started a lease program, in which an entity can get a lease from the government to use the land for 70 years. When property changes hands, the lease isn't renewed, you only have the remaining time on the original lease. Some of the real estate prices were outrageous (even by California standards) if you consider that you may only have your property for 50 years before the government can take it back. I imagine this system will seem extremely odd to most Americans. While we were in the waterfront we saw the construction of what will be the tallest building in the world, when it is completed before the 2008 Olympics.<br/><br/>In closing, I offer some reflections on the trip. We saw amazing sights, experienced a different culture, and met new and interesting people. Several thoughts occurred to me as I think over my journey, I noticed that their culture had common themes and ideas. Similar stories, values, and ideals, it seems that in some ways, the core of most societies is very much alike. I was also struck by the pace of growth, it seems that China is an economic force to be reckoned with, and they appear to be rapidly expanding. Perhaps I saw only the "good parts"; my view may be inaccurate. Perhaps my view was colored by the pessimism which people say is characteristic of my generation when it comes to our nation's future. Perhaps I was just tired of the Chinese food ;)</html>
I posted a blog today on both Myspace and Blogger. Is there any rule against posting the same content in multiple places? I sure hope not. My blog entry is copied below. (This will be location number three.)\n\n><html>I have an old laptop which I would hate to see go to waste, an Intel 796 megahertz processor with 128 megabytes of ram and the weight of Windows XP has become too much for it to bear. I want a system that will run quickly and smoothly. I need a web browser and programming tools (<a href="http://gcc.gnu.org/">gcc</a>, <a href="http://www.gnu.org/software/make/">make</a>, <a href="http://www.python.org/">python</a>, <a href="http://www.perl.org/">perl</a>, <a href="http://subversion.tigris.org/">svn</a>, etc.) and an mp3 player might be nice too. I had been running <a href="http://en.opensuse.org/Welcome_to_openSUSE.org">OpenSUSE</a>, but the performance was still a bit sluggish. Then I tried <a href="http://www.damnsmalllinux.org/">Damn Small Linux (DSL)</a> and it had almost everything I need. <a href="http://fluxbox.sourceforge.net/">Fluxbox</a> is a great windowing system and it ran extremely well. Things started to break down when I tried to install make, a series of dependencies and library downgrades prevented me from being able to get everything I needed. The problems continued the more I tried to modify the system. So I've tried others, five distributions so far, but none seem to work just right. This is turning into quite the weekend project.</html>\n
I've written some brief instructions on determining which tiddlers are displayed when your TiddlyWiki page first comes into view. You can find it under TiddlyWikiGuide (just click on [[Default Tiddlers and Permaview]]). You can always find more instructions on the <html><a href="http://www.tiddlywiki.com/">official TiddlyWiki website</a></html>. I also made a few minor changes to the list of tiddlers which are visible when you first arrive.
I've been quite busy today. First, I updated my blog post about [[setting up my laptop|http://jeffreyscudder.blogspot.com/2006/09/reviving-my-laptop.html]]. It is running quite well now. Then, I wrote about a new steganography idea I have been working on. I'm writing code too, so check out the new project in MyProjects. After that, I added to the running story on [[Vanessa's blog|http://blog.myspace.com/index.cfm?fuseaction=blog.view&friendID=46125515&blogID=173668383]]. Who knows what I [[will|http://homestarrunner.com/sbemail156.html]] [[do|http://homestarrunner.com/sbemail157.html]] [[next|http://homestarrunner.com/sbemail158.html]]. Here is the blog I wrote about my steganography tool. (Posted, as usual, [[here|http://jeffreyscudder.blogspot.com/]] and [[here |http://blog.myspace.com/jaguarjaws]].)\n\n><html>\nI've been thinking lately about <a href="http://en.wikipedia.org/wiki/Steganography">steganography</a>. Previous tools have hidden information in images, videos, sound files, and other large chunks of information. But I have not seen many examples of steganography with text <a href="http://en.wikipedia.org/wiki/Null_cipher">(here is one)</a>. I decided to put together a simple and flexible text steganography tool just for fun.\n\nThe secrecy in a stegonography scheme rests in a shared algorithm between the sender and receiver which is not known by those trying to intercept the message and the fact that a hidden message is not apparent in the message being sent between the individuals. Anyone trying to find the hidden message faces two challenges:\n<ol><li>How do I know when a hidden message is present?</li>\n<li>How do I extract the hidden message?</li></ol>\nBecause I am explaining my stegenography idea to the world at large, item number two is no problem. I hope that the first question will not be so easily answered. In any case, you should not rely on this, or any other steganographic method to keep a secret. For that, you need <a href="http://en.wikipedia.org/wiki/Cryptography">encryption</a>.\n\nNow, on with the scheme!\n\nI wanted users of my system to be able to send any kind of data by hiding it in a plaintext message. In order for the information to be hidden in text, it may have to be converted from one form to another. The same information can be expressed in multiple ways. For example, the number 14 can also be expressed as 1110 (binary), 16 (octal), and E (hexadecimal), depending on the <a href="http://en.wikipedia.org/wiki/Hexadecimal">encoding or base</a> of the information. When information is converted into another form, someone who is decoding or reconstructing the information needs to know what form it is stored in. In many steganography schemes, the form of the data is constant and is a secret shared only by those who are supposed to be able to read the hidden message. I wanted to allow flexibility in the encoding, or alphabet, which is used to express the hidden message, so a message from my system will include a definition of the alphabet used to hide the secret message. Here are the steps for using my scheme:\n<ol><li>Write the secret message</li>\n<li>Choose an alphabet to encode with</li>\n<li>Convert the secret message to the desired alphabet</li>\n<li>Embed the converted secret message into an innocuous public message.</li></ol>\nNow I've shared with you what it is that my steganography scheme will do. In my next post, I'll talk about how.\n</html>
I completed my steganography program today, and Vanessa came up with a great name for it: //Steganosaurus//. I've written instructions for using it in [[Steganosaurus 1.0]]. If you are interested in getting a free copy, let me know.
Wii've been enjoying some new Nintendo fun recently.\n><html><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_54HtFT6yBFI/RaC5hWhz7UI/AAAAAAAAABI/UjTsgDtrYCU/s1600-h/Wii_vouchers.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp2.blogger.com/_54HtFT6yBFI/RaC5hWhz7UI/AAAAAAAAABI/UjTsgDtrYCU/s200/Wii_vouchers.jpg" alt="" id="BLOGGER_PHOTO_ID_5017213967524949314" border="0" /></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_54HtFT6yBFI/RaC5Vmhz7TI/AAAAAAAAABA/kZKQlZXh3J4/s1600-h/V_with_Wii.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_54HtFT6yBFI/RaC5Vmhz7TI/AAAAAAAAABA/kZKQlZXh3J4/s200/V_with_Wii.jpg" alt="" id="BLOGGER_PHOTO_ID_5017213765661486386" border="0" /></a>This weekend my wife and I joined some friends to wait in line to buy a Nintendo Wii. My friend m3tus had a hot tip that the local Circuit City had exactly 27 units which they were going to sell on Sunday morning. Vanessa and I arrived at 2:30 AM for place number 18 in line. (Two friends of ours had arrived earlier.) It was quite cold, but we came prepared with a tent, sleeping bags, camp chairs, and quite a few layers of clothes. We even managed to catch some zzz's in the wee (wii?) hours of the morning. I think line member number 27 arrived at 4:30. He almost left, but Vanessa told him that the two of us were only getting one, so he would be the last to get one.\n<br/><br/>\nA couple of trips to a 24 hour Safeway and a nap later, some of the Circuit city employees arrived to hand out vouchers. I think it was around 8:00 AM (the store opens at 10:00). We packed up our gear and hit Denny's! Ah sweet food.\n<br/><br/>\nWe returned to the store to find a long line of customers all waiting to get a Wii and Wii accessories. Some employees announced that they had already given out vouchers, and that all ticket holders should move to the front and form their own line. They called out tickets in order and we paid for our Wiis. My friend m3tus wanted to make sure that no one tried to take his. So he claimed it the old fashioned way and licked it! This would have made a great picture, I wish I had known he was going to do it. The whole line had a good laugh. Then it was time to head home and get some proper sleep. Are we getting too old for this?</html>
For the literary minded...\n>I just finished reading A Clockwork Orange by Anthony Burgess and I would recommend it. If you decide to read it, be prepared for a rip roaring ride of emotions and strange slovos (words). At times, it can be difficult to stomach and after the second chapter, I was ready for the main character to be killed off. (I'd have tolchoked his merzky litso all on my oddy knocky, oh my brothers, 'til the krovvy flowed real horrorshow and his zoobies come all out.) There are some comic moments, (it can be a malankey bit silly) but at it's core, this book explores the deep topics of morality and free will (and all that cal). I've never viddied the movie, but I tend to think that it wouldn't come off so well. Some things just work better in print.
I created a new web page using <html><a href="http://pages.google.com">Google's page creator</a></html>. My new home page lives here: http://jeffrey.scudder.googlepages.com/homepage, and it has a list of links and resources which I tend to use. This list will likely grow over time, but at the moment it stands as follows:\n<html>\n<p>My web real estate.</p>\n\n<ul>\n<li><a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html">My Wiki</a>&nbsp; A collection of my projects, blogs, and other content.</li>\n\n<li><a href="http://jeffreyscudder.blogspot.com/">My Blog</a> Read what I write.</li>\n\n<li><a href="http://baylor.facebook.com/profile.php?id=9218859">facebook</a> You will need to log in to see this one.</li>\n\n<li><a href="http://www.myspace.com/jaguarjaws">myspace</a> More social networking.</li>\n</ul>\n\n<p>Friends.</p>\n\n<ul>\n<li>empressness: <a href="http://www.myspace.com/scudderette">myspace</a>,&nbsp;<a href="http://blog.myspace.com/scudderette">blog</a>&nbsp;&nbsp;&nbsp; <br></li>\n\n<li>scud: <a href="http://fly.to/scudmissile">home page</a>,&nbsp;<a href="http://www.flickr.com/people/scuddr/">photos</a>,&nbsp;<a href="http://www.last.fm/user/ScudScrobbler/">music</a> &nbsp; &nbsp;</li>\n\n<li>yed: <a href="http://fierceyed.com/blog/">blog</a>&nbsp;&nbsp;&nbsp;&nbsp; <br></li>\n\n<li>doug: <a href="http://www.myspace.com/uncadoug">myspace</a>, <a href="http://blog.myspace.com/uncadoug">blog</a><br></li>\n\n<li>m3tus: <a href="http://www.myspace.com/m3tus">myspace</a>&nbsp;</li>\n</ul>\n\n<p>Places I go.</p>\n\n<ul>\n<li>Information: <a href="http://www.google.com">Google</a> ,<a href="http://www.wikipedia.org">WikiPedia</a>, <a href="http://slashdot.org">Slashdot</a>, <a href="http://digg.com">Digg</a>&nbsp;&nbsp;&nbsp;&nbsp; <br></li>\n\n<li>Friends: <a href="http://www.facebook.com">Facebook</a>, <a href="http://myspace.com">Myspace</a>, <a href="http://blogger.com">Blogger</a>&nbsp;&nbsp;&nbsp; <br></li>\n\n<li>Fun: <a href="http://homestarrunner.com">Home Star Runner</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br></li>\n</ul>\n</html>\nThe fact that Google is listed under information may or may not surprise you. I found out a couple of months ago that you can do more than just find web pages when you enter a query into your search bar. For example, try entering define:exanimate. No more need to go to ~Merriam-Webster Online. \n\nThank you for stopping by.
I posted a description of this project on [[my blog|http://jeffreyscudder.blogspot.com/2006/09/steganography-scheme-part-1.html]]. \n\nThe tool itself is a simple program written in C and it is designed to embed raw data in a text file. It is able to read raw bytes from an input file and produce an output file containing UTF-8 encoded text.
I have a blog on blogger.com. You can read it here: http://jeffreyscudder.blogspot.com/
If you want to get in touch with me. Send an email to my Yahoo account: jaguarjaws. I check it from time to time but please be aware this isn't my primary email address.
When a visitor first arrives on your page, what would you them to see? Choose your default tiddlers by listing them in DefaultTiddlers. Anything you put in this list will be visible from the get-go. \n\nNow you have a handy web page whose address you promptly spread all over the Internet. What happens when you want to link users to your site and have them begin with tiddlers which are not in the list of defaults? Why, use permaview. It's a small tiddler in the top right of the page. Make sure all of the tiddlers that you want the link-clicker to see are open (and any you don't want closed), then click the permaview tiddler. The URL in the address bar will change to the web page with the open tiddlers listed at the end. Try it here: http://jeffrey.scudder.googlepages.com/PublicWiki.html#%5B%5BDefault%20Tiddlers%20and%20Permaview%5D%5D\n\nSo now, when you want to send your friends to your page and show them your latest projects, you can just post a link like this: http://jeffrey.scudder.googlepages.com/PublicWiki.html#MyProjects%20ScuddersPocket%20Skutter\n\nOf course, these look a bit ugly, so you probably want to make them into a link, like <html><a href="http://jeffrey.scudder.googlepages.com/PublicWiki.html#%5B%5BDefault%20Tiddlers%20and%20Permaview%5D%5D">this</a></html>. Stay tuned for more.
[[Index]]\n[[3 May 2007]]\n[[17 April 2007]]\n[[20 March 2007]]\n[[17 March 2007]]\n[[13 March 2007]]\n[[11 March 2007]]\n[[28 February 2007]]\n[[3 February 2007]]\n[[2 February 2007]]\n[[10 January 2007]]\n
The [[SKIL Interpreter]] is an executable program which can be installed on your system. You can execute code by providing a file as a command line argument, or by entering it in an interactive mode. On a Linux system, SKIL code can also be executed like a script. The [[SKIL Interpreter]] recognizes shell comments, so you can use #! notation to tell the shell how to execute your code. For example, if you had a file containing SKIL code, the first line of the file could be {{{#!/usr/bin/skil}}}.
One of many social networking sites I'm a part of, but this one is my favorite. You can see my profile page here: http://baylor.facebook.com/profile.php?id=9218859
Welcome to the wiki of JeffreyScudder. MainMenu is to the left, SiteUpdates are below. Happy browsing!
If you are interested in getting to know me, then this is one place to start. But if you really want to know me, this page will not tell you enough. I don't really think you can every really get to know someone through a page, even a nifty interactive one like this.\n\nFeel free to look at my other web pages, you can find a list in MyWebPages.\n\nYou can also do some digging on this wiki page. I'm always dreaming up new projects, so take a look at MyProjects. \n\nIf you would like, you could always ContactMe.
I am a software engineer who is addicted to coming up with new ideas and working on creative projects. I'm working on a couple of projects right now. I am listing them below.\n\nScuddersPocket: a cryptography program.\n[[Skutter]]: a new programming language. Because the world needs //another// programming language.\n[[Steganosaurus 1.0]] a toy application to compose hidden messages.
Another social networking site. My page is here: http://www.myspace.com/jaguarjaws
Here are some other places you can find more about me:\n* [[My blog|http://jeffreyscudder.blogspot.com/]]\n* [[My home page|http://jeffrey.scudder.googlepages.com/homepage]]\n* [[Facebook|http://baylor.facebook.com/profile.php?id=9218859]]\n* [[Myspace|http://www.myspace.com/jaguarjaws]]\n* [[My del.icio.us page|http://del.icio.us/jaguarjaws]]\n* [[My twitter page|http://twitter.com/jaguarjaws]]
A NewTiddler is a tiddler which has no information in it. When you click on a tiddler you will be asked to provide contents for it. At which point you are free to create any number of SubTiddlers.
<div class='header' macro='gradient vert #FFCC80 #FF9900'>\n <div class='headerShadow'>\n <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n </div>\n <div class='headerForeground'>\n <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n </div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n <div id='messageArea'></div>\n <div id='tiddlerDisplay'></div>\n</div>
Short for [[SKutter Interpreted Language]]
A program which interprets SKIL code and excutes the instructions contained within it.
A series of instructions which are interpreted at runtime by the [[SKIL Interpreter]]. The concept is similar to Java Bytecode in that one peice SKIL code can be run on any platform. Target platforms currently include Linux and Windows. Fro more information, check out my instructions for [[Executing SKIL Code]].\n\nEach chunk of SKIL code begins with the language version number. I want to allow future refactoring and improvements to the syntax of the interpreted language without breaking old code. For this reason all code has a version number, and future interpreters will be capable of recognizing, and interpreting old code. The version number can also be used to indicate alternate encodings for SKIL code. Normally, SKIL code is a series of bytes stored ina file, but I think it would be quite handy to post some code on a web page or forum for others to execute. In such a situation you could publish SKIL code which is in a hexadecimal or base64 format and the interpreter would recognize the alternate encoding.
Scudder's Pocket is a user friendly crypto program which I am developing. It's not ready for public use, but if you would like to help me test it, ContactMe. \n\nCryptography is often described in analogies and the name of this project is inspired by a situation in which I hope you have never found yourself. Have you ever put an important scrap of paper in your pocket and sent it through the wash? Or perhaps you happened to have a pack of gum in your pocket on that particular fateful day. Quite a sticky mess, and quite difficult to untangle. Scudder's Pocket should make your secret messages difficult for others to untangle. Of course the actual processes involved are nothing like leaving gum in your pocket, it is just a clever name. Oh, er, um, just a name.
a rapidly created page about me.
The wiki of JeffreyScudder
The updates to this site:\n[[3 May 2007]]\n[[17 April 2007]]\n[[20 March 2007]]\n[[17 March 2007]]\n[[13 March 2007]]\n[[11 March 2007]]\n[[28 February 2007]]\n[[3 February 2007]]\n[[2 February 2007]]\n[[10 January 2007]]\n[[6 January 2007]]\n[[4 December 2006]]\n[[29 November 2006]]\n[[1 November 2006]]\n[[31 October 2006]]\n[[19 October 2006]]\n[[18 October 2006]]\n[[12 October 2006]]\n[[10 October 2006]]\n[[9 October 2006]]\n[[30 September 2006]]\n[[24 September 2006]]\n[[19 September 2006]]\n[[3 September 2006]]\n[[30 August 2006]]\n[[26 August 2006]]\n[[23 August 2006]]\n[[21 August 2006]]\n[[20 August 2006]]
Yes the world needs //another// programming language. [[Skutter]] is composed of two peices, a low level language which can be interpreted or compiled into native machine code, and a high level, object oriented language which is compiled into the low level language. Objectives are efficiency, easy library management, and cross platform compatability. Yes, these are not original objectives. It you are interested in lending a hand, please ContactMe.\n\nI am creating the language from the lower level up, and am currently working out the design for the [[SKutter Interpreted Language]] or [[SKIL]] for short.
I posted a description of this project on [[my blog|http://jeffreyscudder.blogspot.com/2006/09/steganography-scheme-part-1.html]]. \n\nThe tool itself is a simple program written in C and it is designed to embed raw data in a text file. It is able to read raw bytes from an input file and produce an output file containing UTF-8 encoded text. \n\nIn the encoding process, you specify the base in which the data will be represented, and a shift value, which will be added to each encoded character. It's difficult to understand without an example. \n\nLets say that I take the message {{{Hello Steganosaurus!}}} and encode it using a base of 65 and a shift of 20. It then becomes\n{{{\nMDBFIFIFLFMBDEQFBFDFREKFLFPFRERFOFRFPFNBKA\n}}}\nI can easily convert this back to the original message by decoding the encoded message with a base of 20 and a shift of 65. So far this may be a bit boring, the fun starts when you hide the secret message in harmless looking text. The decode operation will ignore anything outside of the range 65 to 85. Here an example of how you can hide this message in text:\n//\nM.D. Bela Ford hosted the 2006 International Film Investor Forum. Leading into the screeing, the audience viewed last years favorite: ZUF MUZ BUDEZ by director Quinton F. Bedford. Youthful star Frederick Davenport wowed the audience in ~FRE4K ~FL0W, a short about Frederick P. Filmore's book of poetry: Radiant Elephants Ride Free On FaiR Weather Flood-plains. Purchase tickets now for the next season. We're all looking forward to next years theme: FUN at BUKA island.\n//\nLet me know if you would like a copy of this program, I'd be happy to send you the program and source code.\n
/***\n!Colors Used\n*@@bgcolor(#809FFF): #809FFF - Background blue@@\n*@@bgcolor(#0033CC): #0033CC - Top blue@@\n*@@bgcolor(#00248F): #00248F - Mid blue@@\n*@@bgcolor(#B36B00):color(#fff): #B36B00 - Bottom blue@@\n*@@bgcolor(#FFE6BF): #FFE6BF - Bright yellow@@\n*@@bgcolor(#FFCC80): #FFCC80 - Highlight yellow@@\n*@@bgcolor(#FF9900): #FF9900 - Background yellow@@\n*@@bgcolor(#0033CC): #0033CC - Border yellow@@\n*@@bgcolor(#00248F):color(#fff): #00248F - Title red@@\n*@@bgcolor(#BFCFFF): #BFCFFF - Subtitle grey@@\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #00248F;\n}\n\na:hover{\n background: #00248F;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #00248F;\n background: #809FFF;\n}\n\n.button {\n color: #B36B00;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #B36B00;\n background: #FFCC80;\n border-color: #FF9900;\n}\n\n.button:active {\n color: #fff;\n background: #FF9900;\n border: 1px solid #0033CC;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #00248F;\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #0033CC;\n}\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected{\n color: #B36B00;\n background: #eee;\n border-left: 1px solid #ccc;\n border-top: 1px solid #ccc;\n border-right: 1px solid #ccc;\n}\n\n.tabUnselected {\n color: #fff;\n background: #999;\n}\n\n.tabContents {\n color: #B36B00;\n background: #eee;\n border: 1px solid #ccc;\n}\n\n.tabContents .button {\n border: 0;}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid #00248F;\n}\n\n#sidebarOptions .sliderPanel {\n background: #809FFF;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #00248F;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #00248F;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #00248F;\n background: #fff;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border: 1px solid #0033CC;\n background: #FF9900;\n color: #B36B00;\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #B36B00;\n background: #fff;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #0033CC;\n border: 1px solid #00248F;\n}\n\n.popup hr {\n color: #B36B00;\n background: #B36B00;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #00248F;\n}\n\n.popup li a, .popup li a:visited {\n color: #eee;\n border: none;\n}\n\n.popup li a:hover {\n background: #B36B00;\n color: #fff;\n border: none;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #BFCFFF;\n}\n\n.title {\n color: #00248F;\n}\n\n.subtitle {\n color: #BFCFFF;\n}\n\n.toolbar {\n color: #00248F;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: #ddd;\n border: 1px solid #bbb;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #B36B00;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #809FFF;\n border: 0;\n}\n\n.sparktick {\n background: #B36B00;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: #eef;\n color: #aac;\n border: 1px solid #aac;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #FF9900;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #FF9900;\n border: 1px solid #666;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #FFCC80;\n background: #FFE6BF;\n}\n\n.viewer code {\n color: #00248F;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #FFCC80;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #00248F;\n}\n\n.editor textarea {\n border: 1px solid #00248F;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/
/***\n!Sections in this Tiddler:\n*Generic rules\n**Links styles\n**Link Exceptions\n*Header\n*Main menu\n*Sidebar\n**Sidebar options\n**Sidebar tabs\n*Message area\n*Popup\n*Tabs\n*Tiddler display\n**Viewer\n**Editor\n*Misc. rules\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n position: relative;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n/*}}}*/\n/***\n''General Link Styles'' /%-----------------------------------------------------------------------------%/\n***/\n/*{{{*/\n.externalLink {\n text-decoration: underline;\n}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n/*}}}*/\n/***\n''Exceptions to common link styles'' /%------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n/*}}}*/\n/***\n!Main menu /%==================================================%/\n***/\n/*{{{*/\n#mainMenu {\n position: absolute;\n left: 0;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n/*}}}*/\n/***\n!Sidebar rules /%==================================================%/\n***/\n/*{{{*/\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n/*}}}*/\n/***\n''Sidebar options'' /%----------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n/*}}}*/\n/***\n''Sidebar tabs'' /%-------------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n/*}}}*/\n/***\n!Message area /%==================================================%/\n***/\n/*{{{*/\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: underline;\n}\n/*}}}*/\n/***\n!Popup /%==================================================%/\n***/\n/*{{{*/\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n/*}}}*/\n/***\n!Tabs /%==================================================%/\n***/\n/*{{{*/\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n/*}}}*/\n/***\n!Tiddler display rules /%==================================================%/\n***/\n/*{{{*/\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n/* I'm not a fan of how button looks in tiddlers... */\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\npadding-top: 0px; padding-bottom: 0px;}\n\n.fieldsetFix {border: 0;\npadding: 0;\nmargin: 1px 0px 1px 0px;\n}\n/*}}}*/\n/***\n!Misc rules /%==================================================%/\n***/\n/*{{{*/\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
A tiddler which is contained within a tiddler. I don't know if that's what people call them. But hey, whatever works.
TiddlyWiki is what I've used to create this page. Check out http://www.tiddlywiki.com/ for more details.
It is quite easy to create a page using TiddlyWiki. Check out the TiddlyWiki webpage (http://www.tiddlywiki.com/) for complete details. I'm using TiddlyWiki to create a read only page which is not open for editing. You can only edit the page on your own computer, so posting the html file on the Internet makes the page read only. Get started by saving empty.html from http://www.tiddlywiki.com/#DownloadSoftware.\n\nOnce you have an empty TiddlyWiki, check out the lessons below.\n\nMy first lesson: [[Default Tiddlers and Permaview]]\n\n
A character encoding which is capable of expressing unicode characters using 1 to 4 byes. You can read more about [[unicode on wikipedia|http://en.wikipedia.org/wiki/Utf-8]].