Mike Austin's Blog

Saturday, November 26, 2005

EA blunders again with latest BF2 patch

First, the patch will not install because it says it requires at least 3000MB. I have BF2 installed on a drive with 52GB free, my profile and temp folders also on this drive. But no, it has to look at my system drive which has about 2GB free, and conclude that I don't have enough space.

Second, people who own the expansion pack "Special Forces" are allowed to use new unlocked weapons on regular Non-Special Forces servers. This creates an unfair advantage... although you can actually pick one of these kits after someone dies, you do not have access to these weapons from the spawn screen. What it comes down to is those who own the SF expansion pack have an advantage, and you are forced to buy it if you want to compete. Evil EA, evil.

"EA support is pathetic"

EA's message forum with lots of unhappy customers
I'd have to agree. I tried getting support and got absolutely nowhere.

Thursday, November 24, 2005

Close call

MPEG of a 500 kV disconnect switch

http://205.243.100.155/frames/mpg/500kV_Switch.mpg

The toothpaste isle


http://inferno999.blogdrive.com/archive/213.html

Jam with others on the net in real-time

There's a tiny bit of latency when playing together but it's not noticable once you get into the groove. I played guitar with 3 or 4 other people - piano, bass, another guitar, and someone can turn on the drum machine. It was pretty fun. It works on the 3 major platforms - Mac, Windows and Linux, so maybe it could be used as a communications app also.

http://www.ninjam.com

Wednesday, November 23, 2005

Unspeakable Vault of Doom

More...

Frag, an FPS game written in Haskell

I'm not a Haskell expert, but I find it interesting to write a very state-heavy domain, games and OpenGL, in a purely functional language. The problem is, you must know Haskell to discern what is going on. It's not something you can't grok easily if all you know is non-functional languages. There seems to be a lot of imparative constructs - monads and IORefs (mutable values I believe), so in the end, it's actually not using much of functional programming. If I'm wrong here, let me know.

Source | Images

Sunday, November 20, 2005

Diggin Jazz Internet radio

There are a few Jazz Internet radio stations that I really like. I'm somewhat new to Jazz, but I am picky and know what I like. I can't stand elevator or 'smooth' Jazz, nothing beats Miles Davis, John Coltrane and Herbie Hancock.

I'm not sure if these links are permanent, but the main sites are so cluttered I coudn't find a linkable link:

RadioIoJazz
PKLU.org

Invariants and Design by Contract

I've just been doing a little reviewing of languages that support DBC programming, such as Eiffel. DBC programming allows you to structure your debugging code without littering it with assert()s. With a few macros I think it would be possible to achieve this in Dylan, while not mutilating the syntax as you would have to in C++. Also, the contracts could be moved out of the methods and act more like aspects in Aspect Oriented Programming.

// Define counter instance methods

define invariant-method increment (counter :: <counter>)
  counter.value := counter.value + 1;
end;

define invariant-method decrement (counter :: <counter>)
  counter.value := counter.value - 1;
end;


// Define method and class invariants

define invariant increment (counter :: <counter>, old)
  counter.value == old.value + 1;
end;

define invariant increment (counter :: <counter>, old)
  counter.value == old.value - 1;
end;

define class invariant (counter :: <counter>)
  counter.value >= 0;
end;


The implementation would look something like this:

define method increment (counter :: <counter>)
  let old = counter.shallow-copy;
  counter.value := counter.value + 1;
  increment-invariant (counter, old);
  class-invariant (counter, old);
end;

San Francisco International Auto Show

http://www.sfautoshow.com/

Friday, November 18, 2005

And the worst part it, I never learned to read

Thursday, November 17, 2005

Language ideas

Impulse is language idea I've been toying with based on predicate blocks – lexical closures that have properties similar to generic functions. I dislike special syntax for pattern matching, list comprehention, etc., and predicate blocks allow me to do both without extra syntax.

A simple block
a, b -> a * b

A predicate block
a, b [a < b] -> a * b

A predicate block passed to range.map:
1..10 map: n [% 2 == 0] -> n * n
>> 4,16,36,64,100

A multiple-predicate block passed to stream.map:
lexer-stream map: char
  [is-digit?] -> stream read-identifier
  [is-alpha?] -> stream read-number


A few more details: impulse-language.html

Wednesday, November 16, 2005

Possibly the worst code ever written

Local variables are your friend. Or are they?

http://thedailywtf.com/forums/50765/ShowPost.aspx

Wednesday, November 09, 2005

Can we save it?

Tuesday, November 08, 2005

Dyaln Inertia update

Well, I've now got a rudimentary text-editor, and most of the event-system is finished. The "It's Alive" window was generated from a ui description file. I guess I should work on a scrolling widget next.

List of catch phrases

http://en.wikipedia.org/wiki/List_of_catch_phrases

Sunday, November 06, 2005

Building ui hierarchies from a file

I looked at XML, YAML and a bunch of others [XML Alternatives] to do simple object persistence. But in the end, I'd have to create a binding (for Dylan) and learn the api, or use XML, so I borrowed the format for Borland's C++ Builder and tweaked it a bit. It only takes around 50 lines of code to read in and create the ui hierarchy.
let window = make (<window>, caption: "Window 1",
width: 600.0, height: 400.0);
build-hierarchy (window, "test.ui");

test.ui
-------
shape-left: 10
shape-top: 10
object button: <push-button>
caption: "It's Alive!"
shape-left: 10
shape-top: 10
end

Saturday, November 05, 2005

Dylan Inertia update

Added window resizing, reshape and mouse-enter/exit events, effect layers, simple drop-shadow, and shape-editor refinements. Oh, and clock. :)

Thursday, November 03, 2005

Structure and Interpretation of Computer Programs

http://swiss.csail.mit.edu/classes/ 6.001/abelson-sussman-lectures/

Wednesday, November 02, 2005

No news is good gnus...