Wednesday, June 27, 2007

Bunny Pen :(

Unfortunately I've decided to completely scrap the bunny pen. Several reasons for this:
  1. We would never lock her in, since she is fully trained and accustomed to having run of the apartment (Edit: We've taken to locking her up at night, and I've made a crude but much more functional pen for this purpose)
  2. The thing would be huge and use up even more space than her designated area already uses
  3. The main reason is the wood is shit. It's bowed and bent, and when trying to make frames this doesn't go well at all :( I've learned not to buy cheap wood, unless you plan to plane it yourself.

(NOTE WILL PUT UP PICS LATER)

Also another woodworking blow this week: IKEA!! I was thinking about making some very simplistic furniture to replace some of our old stuff, and then looked at IKEA for ideas. It seems nuts to spend $30 on wood to make a simple shelf when something like this exists. Or chairs like this. The thing is $100 may seem like you could make it cheaper(And hell you could probably find one for $20 at walmart), until you consider all of IKEAs wooden furniture is made with solid pine, as opposed to garbage like particle board. So even for a simple chair like that you can figure probably $35 for wood, $30 for batting and foam, and $25 for fabric if you made it yourself. So you may save $10, but would probably go over from screw ups and just the hardware needed. Some of their stuff isn't as god-awful cheap(sofas mainly), but they are still very competitive to building it yourself. More elaborate furniture would be much better to make yourself, but since I live in an apartment I can't really use the big power tools that would be needed.

Right now I'm just working on making some sawhorses and such for my workshop using the crappy wood, since who cares how that looks as long as it works. After that I'm not really sure, I may work on a couple of my electronics projects.

Saturday, June 16, 2007

ROTN Look and Feel

Okay, I know it's bad to work on the front-end before the backend. But I've went ahead and done some of the basic stylistic stuff, just for fun. This is far from done, but shows how easily themeable the thing is(Each theme took less than 5 minutes). Also it is slow due to google pages, it will be blindingly fast when run locally as it is meant to.

Here are 3 themes I whipped up(Using public domain images of course):
(Edit: These in no way reflect my personal preferences, just attempts to make very different styles. Tux was the test theme, green was a 'teen' theme, flower was a feminine theme)

The only image differences are the top image and the status bars on the download page. Obviously this will mostly be dynamically generated(Save for the css and images) by the local web server gui monstrosity.

Friday, June 15, 2007

P2P Apps

Seems like lately I've been talking alot about P2P applications and looking into some of the internals of them, for various reasons. Basically I'm just posting my thoughts for anyone to refute/confirm them, and also if there are any major contenders I'm not thinking of.

Napster
Pros: Easy to use, lots of users with lots of content.
Cons: Died due to centralized servers being the target of litigation

Gnutella/decentralized P2P apps
Pros: Easy to use, lots of content, no centralized server to litigate out of existence.
Cons: Arms race between hostiles and developers, as well as a legal liability that encourages leeching, with no barrier to prevent it.

Usenet
Pros: Incredibly fast, lots of content, legal problems are very minimal right now.
Cons: ISP dependant, and legal troubles are only minimal due to the small user base arising from difficulty for the average idi...user

Bittorrent
Pros: Can be very fast for popular content, no centralized servers to attack.
Cons: Large legal worries for protected content. Unpopular content can be very slow. Edit: Central servers to host trackers

Direct Streaming
Pros: Fast, safe legally for users
Cons: Requires a central server with large bandwidth and paying royalties

P2P Streaming
Pros: Grey legal area compared to normal P2P, can be very fast for popular content
Cons: Requires a lot of collective bandwidth or video quality reduction, unpopular content would lag or take hours to start playing

WASTE/Darknets/Etc.
Pros: Can be completely safe legally
Cons: Always slow and usually a technical barrier that's too high for average users thus causing a lack of content

IRC
Pros: None
Cons: It's IRC :-D

Really I think any new P2P app that would be successfull needs to be:
(1) At least as fast as gnutella
(2) Madly user friendly to keep from frightening the great unwashed
(3) Have content already in place
(4) Have legal protection to make it safer to share

I'm trying to make ROTN to address each of these:
(1) Cut out the deniability to begin with to keep speed
(2) Web Server GUI to keep people in their browser
(3) Have it able to leech off of existing Gnutella networks
(4) Use headless random data in blocks so that no person is sharing files

The only main problem I've found is that to do 4 will require at least 2 other parties to be involved(One to distribute the head, and the other to distribute content).

Also I had a cool idea for even further headless data randomness, make the head variable length, which if you use that as an encryption method makes it even harder to crack.

For example lets say you have a seed from 0 to 100,000 for the RNG so if you know the size of the chunk you are missing you can still get away with trying 100,000 times if there is known text from what you are retrieving. BUT! With a randomly variable sized head you could improve upon this by how many ever bytes the head is. For example if a head can be between 1kb to 101kb, you get 100kb*100,000 seeds = 100,000 ^2 = 10,000,000,000 possible combinations of seeds and header sizes. You could do alot more fun stuff too, like make the head also have itself be an XOR key, driving this up into an insane number of tries needed to break it. The big problem with this as encryption is that it's a shared secret. Really though I'm just talking about cryptography academically as opposed to anything particularly practical. Also this assumes that the psuedo RNG is NP hard to determine the next bit of output...I have no clue if this is true or not for normal RNG algos.

Saturday, June 09, 2007

Local Web Server GUI

Here is simple proof of concept for using a local web server as a GUI. The code is here and yes I know it's freakin' Java. The reason being is that socket stuff in C and C++ isn't cross platform(Windows throws away standards and uses garbage like WinSock, and yes it is completely stupid and anti-competitive of them). To run it simply do the following:
  1. javac WebServer.java
  2. java WebServer
  3. Then point your browser to localhost
  4. To kill the server type murder in the text box
It's a very silly little program, but at least it does what it's supposed to(Take input locally from the browser). Below is a screenshot of it running in all it's glory:



Another nice thing about this setup as opposed to a normal application, that instead of minimizing, iconifying, or putting it in the system tray to get rid of it but still have it running, you can simply navigate away from the page and then come back later.