Eragon: The Movie

Well, I just went to see the midnight showing of Eragon and I just have to make post about it. Let me sum it up for you,

Horrible.

By the way, Spoilers and complaining ahead.

I’m a geek, a nerd, an enjoyer of movies, and this was bad. I would say B movie bad, but not in the good B movie way. I have read the books, I watched the trailers, I had high hopes. The movie had a big budget, so it had the potential to be a good movie.

Where did they spent their budget? The dragon and helicopters.

Now, even though I have read the books, I can still take myself away from my previous experiences enough to enjoy an adaptation/deviation. This movie, however, I could not. In and of itself, it was horrible. I enjoyed the Dungeons and Dragons (2000) movie, so as some people will tell you, shows how low my standards are for acting/movies. So when I say this was bad, you get my meaning.

It seems like the typical maker of Hollywood movies these days took the book, skimmed through it, picked out some key words like “dragon”, “magic sword”, “some elf chick”, and made the movie from that. It is nothing like the book, with complete changing of characters, plot, time of events, and pretty much the entire story.

Now, before I tell you about all the things I found horrible, here are the few good things I thought about the movie, since its a shorter list.
-I thought the dragon looked good, a different style with the feather wings and good effects.
-The settings looked good, with some nice looking castle types, looming cityscapish towns, and wide wilderness shots.

Thats it. Now the bad
-The dialog was horrible. It was like one-liners with the actors not even talking to each other, but reading cards and trying to imagine someone is in front of them, instead of talking to the person that was actually standing in front of them. Examples are “I know what I have to do now.” and “Yesterday you were but a farmboy, today you are a hero.”
-They seemed to have watched the Lord of the Rings, saw that they used a helicopter to film people riding through the wilderness on horses, and decided to use that. Over, and over. I can imagine someone being like “We rented this helicopter, so damn it, we are going to use it.”
-Acting, horrible. There were a few good parts and Jeremy Irons as Brom was pretty good, but those moments were few and … just few.
-The pacing of the movie was really bad. Entire sections of the book are ignored and you move from one “important” part, fast forward as we travel, to the next “important” part. So it was kinda like “K, with Brom, lets do 1 scene of sword training, k, lets travel now, show some wilderness, k, now where at a town. Some action happens, k, lets travel some, oh wait, we fast forwarded, we are already at the castle.”
-Re-used footage. Thats what their “flashbacks” really were, because they used flashbacks to show you what happened 5 minutes ago! So the 2nd fourth of the movie was really just a flashback to the 1st fourth.
-I was confused as the what was going on for most of the movie because there was no real development or setup. In one part is sunny, cut to the next scene and its raining, then back to sunny again.
-Eragon just seems to hop from best buddy to best buddy. First he has his half-brother and they pretend sword fight, then have a tumble in the hay. But he goes away. So then comes Brom, welcome best buddy. Some training, like 2 fight scenes, then he goes away. Hey there Murtagh, you came out of nowhere, but I need a new best buddy. Let’s go!
-The timeline of the book is just mutilated. We skip entire towns, events happen in different towns at a different time, and they even use stuff from the second book. It is all crammed in a rushed, so its not like it makes sense either, simple “Huh, that chapter looked kinda cool! Oh, a battle! Let’s use that!”
-The characters are different. Eragon runs on teen angst, The Ra’zac are pussies, Arya seems to be in love with Eragon now and flirts with him, Angela is now a young gypsy, and the Twins arn’t even there.
-Cheap battles. 10 Krull, 10 Varden, 3 archers, and go. Oh wait, that sucks, go to Eragon doing something…wait, he just has cheesy lines, lets watch Saphira do stuff cause she is cool and we spent all our money on making her.
-Overuse of the “Big dramatic scene, inspiring/sad line has been said and…..cue the dramatic music”
-There was no real development of story or character. No understanding of magic being taught, no characters playing off each other, no real understanding of what is going on. Example – “Traveling to get the Varden, apparently we have traveled a long way in the span of 10 seconds. Look some waterfalls and rocky cliffs. Oh, and by the way, the Krull ARMY is right behind us now.”

I just wanted to punch myself in the face until I was unconscious so I wouldn’t have to see this horror and stop hearing the cheap one-liners. This is all my personal opinion, but if you want to put yourself through the Gauntlet, go ahead.

+1 complaining blogger point

OWA Forms Based Authentication for Exchange 2003 SP 2 with ASP.NET

Taking a little break from Artificial Life stuff. For those out there that have their own internal systems but use Exchange 2003, this may be of some help, but then again, maybe not. Use the first link to help setup your Exchange to work with forms based authentication and the second link contains the code for the ASP.NET page.

Configure Forms Based Authentication

VB/ASP.NET code to authenticate against OWA

Note - You will only be messing with the code portion of the ASP.NET page, there is no need to modify the HTML portion.

Originally I was going to go over the code piece by piece on how to modify it. This would have involved a great deal of code sections and explinations, so I figure why not give you the final product and simply explain the changes and what the code is doing (plus, for all the lazy people, can be changed and used more easily).

Modified OWA Authentication

Working our way down the modified code, we have a Page_Load function with the first change. I have 2 functions that retrieve the users username and password which are needed to access their mailbox. How you do this in your environment is up to you, since each place is different. Once all the information is set, we create the URL to the user’s mailbox, call the AuthenticateSecureOWA function, and then redirect the user to their mailbox.

The AuthenticateSecureOWA function has a few small changes to it. First, it is no longer a function, but a sub. This means that we no longer have a return value, so all of the return statements have been removed.

Since this is for an ASP.NET page, we can no longer use the VB.NET MsgBox function call for error checking. I simply replaced that with a simple Response.Write call, but I would suggest tailoring the error catching to your work environment standards.

The final change is that instead of returning a string containing the cookie information, we simple push the cookies to the user’s machine.

'Instead of returning a string with the cookie info, we just assign them to a cookie
Response.Cookies("sessionid").Value = strSessionIDCookie
Response.Cookies("sessionid").Expires = DateTime.Now.AddMinutes(20)
Response.Cookies("cadata").Value = strCADataCookie
Response.Cookies("cadata").Expires = DateTime.Now.AddMinutes(20)

You can change the expire time on the cookies, but the user will not be kicked out of their mailbox when they do expire, only if they exit and try to return will they need to be re-authenticated.

To sum it all up, we are taking the information custom to our environment and user, creating some authentication cookies for OWA to access, and then redirecting the user to their mailbox. The changes made to the original article are small, but make a big difference. It is a fairly simple process and the code is all right there, but for someone that has no idea (someone in IT that manages Exchange but is not a programmer), Microsoft’s code makes some assumptions about who will be looking for help.

Cellular Automata

Cellular Automatas were created as a way to study the idea of self-replicating robots. These automatas are useful for studying patterns that emerge from relationships between cells where the rules for such interactions are simple. This is like a step up from the L-system in that it is still applying rules over generations to a starting point, except now we are using a 2-dimensional grid of cells with multiple states.

The cellular automata I had created was a finite, 2-dimensional, 2-state grid of cells that was toroidal (wraps around at the edges). This is one of the simple cellular automatas out there and is still pretty complex. Trying to find a pattern or anything of interest in this automata is fairly difficult, since there are many options for rules and starting points. Many of the rule/starting sets I tried either didn’t do anything at all or came to an unchanging state fairly quickly.

Once again the program I wrote was for a C++ console application simply because I wanted to stick with C++ at the time I created it (though as you will see, I later changed to VB.NET). This program could easily be converted to VB.NET and take advantage of a visual interface and display. It can read from a text file for initial states so that once you find something that works, you can keep it and use it again later. In my program, you set the starting grid from a text file or as a random arrangement, set the generations, and set the rules. The rules are set so that you define the cell to be changed, then the left neighbor, right neighbor, top neighbor, and finally the bottom neighbor. With each generation, the rules are applied to every cell in the grid and changes made based on that, setting the cell to either on or off (1 or 0).

Here is the code if you want to check/try it out. This is a very simple program, but I welcome any ideas on expansion, optimization, and bug fixes.

Cellular Automata code

L-system

The Lindenmayer system was used to model the growth of plant life. This system takes a starting point (axiom), a set of rules, and a number of generations to work. A much more detailed explanation can be found at wikipedia, which goes into some examples and other information.

Wikipedia’s L-system article

This system is very simple, to use and code, but helps get you into the frame of mind for a-life programming if you look at the right way. From the starting point, your run the program and it runs for a certain amount of generations, applying the rules at each generation. It is a very simple process, take the current generation and see where you need to replace something. However, from that can come many interesting and useful items. The Fibonacci numbers, fractals, and others are just some examples of emergence. This emergence concept is used for all the a-life programming I have seen, where simple things come together in complex and unexpected ways.

Now, a brief rundown of the code I’m going to share before I end this post. Really, this program is just a string parser that replaces information as needed. If you run the program, you just enter a starting point, lets say ‘a’. Then you enter some rules with the form of “(from this)->(to this)”, so lets go with the rules “a->ab, b->a”. Then set how many generations you want it to run and then if you want all the generations shown, or just the final resulting generation. This will show us the resulting information –

Axiom: a
1: ab
2: aba
3: abaab
4: abaababa
5: abaababaabaab
6: abaababaabaababaababa
7: abaababaabaababaababaabaababaabaab

Now, this could be something interesting, could be nothing but gibberish, or could be interpreted into something interesting. The results take some time to look at in order to try to find a result in them, or they turn out to just be gibberish and you need to try something else. Where this could be useful, and easier to spot, is if you assigned relevance to these results through visuals. Put this into a drawing program that draws lines based on certain patterns. See what you come up with.

This is a .doc document due to WordPress’s file upload security settings. Still lets you see the code with proper formatting rather than left aligned everything.

L-system code

Artificial Life

I’m using this post as a simple guide for myself and also as a means to summarize the topic of artificial life. This quote is my favorite for the ideal of artificial life studies.

“The study of artificial systems that exhibit behavior characteristic of natural living systems. It is the quest to explain life in any of its possible manifestations, without restriction to the particular examples that have evolved on earth… the ultimate goal is to extract the logical form of living systems.” – Christopher Langton

We use computers to try to simulate the life we experience in order to break it down and understand what elements make up life. Generally a type of artificial life comes around that looks to simulate real life situations and we expand on that to try to make it as real as possible. Some examples of this is the growth of bacteria, flocking birds, and genetic mutation. Since this is a summary, I won’t expand on the subject more, but I’ll give some key words to look up to learn more about artificial life.

Emergence
A-life vs AI
L-system
Cellular Automata
Genetic Algorithm
Agent Based Model
Flocking/Boids
Ant Colony Optimization

HTTPS redirection

HTTPS Redirection code

There are a few variations I have seen for HTTPS redirection with IIS, but they mostly revolve around the same idea. I used the above code in a classic ASP file. The general idea is to take a page that has code to redirect to the same page, but using HTTPS, and use it through IIS’s Custom Errors. For clarification, this is for IIS 6 and you need to have an SSL certification on the site you want to do redirection.

The above code is fairly simple. There is a single function that is called as the page is loaded that does the redirection. Inside the function, it checks to see if HTTPS is enabled. If it is not enabled, then it proceeds to redirect to HTTPS, otherwise it does nothing. The function then pulls some information from the server, which is where I encountered some behavior that I don’t have the knowledge to explain. Then we simply compile a new URL which uses HTTPS and redirect.
When I first used this bit of code, it pulled all the information as I expected. The HTTP_HOST call retrieved the “www.name.com”, the URL got the “/page.html”, and the QueryString retrieved “?variable=blah”. I then compiled the full URL with HTTPS and redirected.
However, after some time spend on other projects, I came back to this and found it wasn’t pulling the same information. Which is why I have commented out a section of code and added a new section. The other calls were returning nothing, where the QueryString was now pulling all of the information, with the addition of an error code number (403;) and a port (:80). So I simply replace the http with https and remove the 403; and :80 values, then redirect.
So if anyone wants/can explain what happened here, please do. At this time I simply have the code working and have moved on to other issues.

Now we have a redirection .asp file. What we need to do with it is place it on the server where your website is located. In the root directory of your website you could create a folder and place it in there.
Now you need to get on the server and open up IIS Manager. Now you can specify what will be redirecting, whether the entire website, a directory, or a single page (though if you are only doing one page, it would be better to put the code on the page with javascript or something). Simply navigate to what you want to protect and open up the Properties. There is a Custom Errors tab, which you want to go to, and select the 403;4 error. Hit Edit and set the Message Type to URL. Then you put in the path to the redirection page, which you can use relative paths such as “/custom/redirection.asp”. In the case of the website or a directory, this change will propagate down to the pages within.
Now that the error page is setup to redirect, we need to allow this error to be triggered. In the Properties of the object you are protecting, go to the File/Directory Security tab. Hit Edit in the Secure Communications section, then check the Require secure channel(SSL) box (you can also check the Require 128-bit encryption, though it is not necessary).
Now, to finish this off, if the folder you created with the redirection page was within the scope of your redirection protection, then some changes need to be made. In IIS, you need to navigate to the folder and uncheck the Require secure channel (SSL) option on this folder. Otherwise the server may try to serve the redirection page over HTTP, trigger the custom error, and create an infinite loop.

If anything is unclear or clearly wrong, I’ll try to make the proper corrections.

Hello world!

Hello, my name is Andre Zeitler. I’m currently a web developer at the University of Advancing Technology. I’ve created this blog as a research project but aim for it to hopefully help others that might come across some of the development issues I have faced.