ChetOS.net

When debugging pages with a lot of JavaScript, Visual Studio can bog down because it sets up/tears down debugging on every single page load.  Also, if you have a lot of anonymous functions it can slow down the page performance in general.

Solution: Disable script debugging in Visual Studio and just use Internet Explorer's F12 Developer Tools to handle JavaScript debugging when you actually need it.

I find Visual Studio's JavaScript debugging to be a pain to work with anyway, althought it does provide some excellent functionality.

To disable it run this from the command line:
reg add HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\AD7Metrics\Engine\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2} /v ProgramProvider /d {4FF9DEF4-8922-4D02-9379-3FFA64D1D639} /f

If you ever need to turn it back on, run this:
reg add HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\AD7Metrics\Engine\{F200A7E7-DEA5-11D0-B854-00A0244A1DE2} /v ProgramProvider /d {170EC3FC-4E80-40AB-A85A-55900C7C70DE} /f

These instructions taken from http://blogs.msdn.com/b/greggm/archive/2009/04/06/disabling-script-debugging-in-vs-2008-ie8.aspx
Posted by Chet at 11:51 AM0 Comments

I just attained "Wizard" rank on Experts Exchange.  One earns this rank after getting 300,000 points, which means I answered about 200 questions in this category.

Overall, I have "Sage" rank with over 500,000 points in all categories.  I have answered 386 questions so far.

The primary reason I keep my score up is because I get to ask questions for free, which comes in handy because by the time I am deperate enough to actually ask a question I need it done quick.
Posted by Chet at 10:10 AM0 Comments

I was helping someone on Expert's Exchange with a web service call to USPS.  When you create a developer account they give you access to the test servers, when you are done testing you email (!) them to get upgraded to production.

Apparently their test servers just don't work.  Even though their docs indicate how to use the test servers, some of the API calls are not available or the version that is documented is not available on the test server.  For example, you can issue a RateV2 request, but not a RateV3 request.  You cannot issue any DeliveryConfirmation requests at all.  They just don't work.

The solution is to forgo the test server altogether and immediately request that you account be upgraded and start testing on the production server.

The only difference in urls is the "Test" portion, but your user id won't work on the production server until it is upgraded.
Posted by Chet at 10:05 AM0 Comments

We had an orange tree in our back yard when I was a kid, so I learned at a very young age that cats don't like the smell of citrus.

This is why those "cat trainer" sprays contain lemon oil.  Apparently they don't like vinegar either.

I wonder how they fight off scurvy.
Posted by Chet at 4:36 PM0 Comments

When using the System.Net.WebClient, I sometimes get an error along the lines of, "cannot deserialize <object>, invalid utf8 character."

This happens when someone copies and pastes text from a word processor, it commonly happens with "smart quotes", which are not ASCII characters, but actually Unicode characters in the 8217 - 8221 range.  The .NET Framework's String class uses Unicode (UTF-16) internally anyway, so this isn't a problem typically.

The WebClient has an Encoding property, which defaults to System.Text.Encoding.Default, which is the Windows 1252 code page.  The Unicode characters get converted to Windows 1252 and their values are wrong.

What you need to do is set the WebClient's Encoding property to System.Text.Encoding.UTF8.  Then, if you were to look at a packet analysis, you would see that the 8217 (right single quote) is sent as 0xe2 0x80 0x99.
Posted by Chet at 1:47 PM0 Comments

IE9 Beta is out now.  It seems to use ClearType better, and it is very fast.  I like it.

Two things I don't like: They have put the tabs and the address bar on the same line, and the search box has been combined with the address bar (like Chrome does).

Hopefully the final version will *allow* me to put the tabs on their own line.  I have too many tabs open to share the line with the address bar (the tab get smaller).  I think I can get over the address bar/search bar being combined.

Also, IE9 has much better CSS3 support, and HTML5 support.  In fact, two CSS features that I have always wanted are now supported: box-shadow and border-radius.
Posted by Chet at 10:06 AM0 Comments

I will start by saying that I don't agree with what they are planning on doing.  However, we need to expand the context here and see what this is and is not.  This cannot be compared to book burning in Nazi Germany at all.  That was an authority seizing and destroying dissenting views with the expressed intent on keeping the views from propagating.  This church is not an authority; it is not seizing the Qur’an, and the intent is not on keeping the views from propagating.  In fact, I would argue that this isn’t a religious statement at all, but a political one.

Also, there is nothing inherently un-Christian about book burning.  In fact, Acts 19:19 commends those who were practicing sorcery and burned their scrolls.  To apply this to the current event, it would need to be former Muslims bringing their Qur’ans to destroy.  Now I ask, why don’t we see this happening more?  Is it 1) that Christians are not converting Muslims, 2) that former Muslims are keeping their holy book even after being converted, 3) that former Muslims are quietly destroying their copies of the Qur’an?

I’ll tell you what is un-American: death threats against a group exercising their legally protected right to free speech.  And I would say the exact same thing regarding a group destroying copies of the Bible that they legally obtained.

I wonder if there would be the same outcry from Christians (and government officials) if they were to gather up and burn copies of the Satanic Bible.

I’ll tell you what is un-Christian: thinking that we can effectively evangelize people of a different religion by burning their holy book.  This is a superficial attack.  Jesus offended with substance, not style.  We need to show the Muslims that Christians have something more to offer.  Part of that is showing their emptiness (lostness).  Part of that is showing the fullness of Christ (through the example we set when living our lives).

What this church is doing does not show the fullness of Christ being lived out.  “But I tell you: Love your enemies and pray for those who persecute you.”  Matthew 5:44

As an aside: I will point out that it is interesting that people are worried about violence by the so-called “religion of peace”.
Posted by Chet at 12:16 PM0 Comments

My brother-in-law, Josh, and one of his friends invented a ball game several years ago.  It is like four square, but is three rectangles.  I built a website for it, and a Facebook fan page.  Check it out.
Posted by Chet at 1:28 PM0 Comments

It seems that I have been 27 forever, but I put that year behind me today.  I am now 28.  Yea me!

I get swedish meatballs for dinner, my favorite.  And we are going to Barnes and Noble tonight.
Posted by Chet at 8:44 AM0 Comments

Went with the youth group to Wonder Works to play Laser Tag last night.  I totally destroyed.  I played five games and had the high score in all but two (came in second and third).

I love laser tag.  I have a dream of opening a laser tag course.
Posted by Chet at 5:20 PM1 Comment

When you serialize an object using BinaryFormatter the type information is stored in the output stream.  During deserialization, the type information is used to load the assembly.

Therefore, if you change the assembly name or strongly sign your assembly, the formatter will not be able to find the assembly.  Fusion will look for an assembly with a null PublicToken, but fail because it is only finding one with a non-null PublicToken.

You can look at the FusionLog.  If you see this pattern you are on to the issue.

LOG: DisplayName = MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
(Fully-specified)

...

LOG: Attempting download of new URL file:///C:/inetpub/wwwroot/bin/MyAssembly.DLL.
WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.


As far as I can tell, there is no "fix" for this, your serialized byte array is trashed and cannot be recovered.  I simply deleted them from the database.  If you are in a pinch you can remove the strong name, recompile the assembly, and try to deserialize again.  Also, if you run the byte array through any of the hex-to-ascii utilities online, you can plainly see the data.

I didn't try to alter the byte array to point to the strongly-named assembly.
Posted by Chet at 4:25 PM0 Comments

CIY has a shirt which has a crest with the words "Regnum factum" written in it.  The literal translation is "rule deed".  How that makes sense, I have no idea.

http://secure.ciy.com/store/pc-199-4-crest-tee.aspx
Posted by Chet at 9:04 AM4 Comments

My father-in-law, Bud Van Tassel, went to be with his Savior, June 27th, 2010, at 6:10pm.  Everyone who knew him loved him.  He will be missed.

In February it was discovered that he had stage four colon cancer.  By May it had spread throughout his body.
Posted by Chet at 5:53 PM1 Comment

If you change a graph traversal algorithm from stack-based to queue-based, you change it from depth-first to breadth-first.

Breadth-first is useful when you want to process siblings before processing their children.  Depth-first traversal processes as deep as it can before backtracking.

Interesting note: although this is clearly a use for recursion, either method can be implemented iteratively to save space on the stack (and sidestep potential stack overflow issues when there are many nodes).
Posted by Chet at 3:17 PM0 Comments

I watched about 6 episodes of Lost during season one.  Amanda and I had just gotten married, our antenna didn't pick up the station, so we had friends record it for us.  After about six episodes they stopped recording it, so we stopped watching.

I remember thinking that every episode got us deeper into the plot, and never resolved any loose ends.  Now that the series finale has aired, we discover that they just kept doing that.  I am glad I stopped when I did.
Posted by Chet at 6:48 PM0 Comments

For our seventh anniversary, Amanda and I went to see Cirque du Soleil's La Noubla at Downtown Disney last Thursday.  The show was excellent and worth every penny.  I particularlly liked the juggler, the silk rope flier guy, and the trampoline finale.

The auditorium (or whatever you call it) was a lot smaller inside than we thought it would be.  The worst seats were still pretty close to the stage.  The show was French based (shock), and had a lot of very cool parts.  All the music is preformed live by musicians partially hidden on the sides of the stage.  The performers do not enter and exit from the sides of the stage, there are large sections in the stage that can be raised about 20 feet and the performers come in by standing on the floor of this section.  These sections can also be lowered deeper than the floor, so a performer can just stand there and be lowered out for his exit.

During each act, there were clowns mimicing the "true" performer.  For example, during the juggler act, a clown was off to the side messing around with the stuff the juggler would need in a minute.

There are four categories of seats: front and center, Category 2, Category 3, and Category 4.  We got Category 2, which is in on the ground floor, but off-center.  It was neat because, for example, when the bicyclist raced to the edge of the stage and stopped, it was right about face level and kinda unnerving.  However, if I were to go again, I would not buy the nice seats again.  I would buy Category 3 seats, which are above the stage and further back.  There was just too much happing on stage to take it all in from as close as we were.  Being further back would allowed us to see more of it without shaking our heads back and forth.

Good luck getting seats though.  I wanted to go during the weekend, but both shows were sold out every night.  Finally settled on a Thursday.
Posted by Chet at 3:37 PM1 Comment

Robbie has officially moved out of our room.  He has been taking all his daytime naps upstairs in his room for about 2 months now.  Sunday night was his first night in his room.  He did great.  We put him down at 8:00, he made a peep around 10:30, and we woke him up at 7:00 in the morning.  Last night he didn't even peep, he just slept :-).

Amanda and I also moved upstairs.  The downstairs bedroom will become a guest bedroom.

It is sad that Robbie is out, but it makes me happy that he is progressing down the road to independence.  I know there will be many more of these occasions, but this was the first big one.
Posted by Chet at 11:05 AM0 Comments

Amanda and I have been married for seven years now... wow.  Love you Amanda!
Posted by Chet at 3:04 PM1 Comment

We use a lot of stored procedures in our applications. I don't like that, but that is how it is.  One of our applications uses Oracle, and the primary method of returning a dataset is through a cursor.

DECLARE
   cv_1 REFCURSOR;
BEGIN
   sp_example(cv_1);
END;


This is fine, but it makes it very annoying to debug because Toad (essentially a low-quality SQL Server Management Studio for Oracle) doesn't know to output the cursor to the datagrid.

I finally found a way around this.

DECLARE
   type cv_1 is REF CURSOR;
BEGIN
   sp_example(:cv_1);
END;


Notice the two changes.  First, cv_1 is now a type, and there is colon before it when it is used as a paramter.  When Toad executes this, it will ask you to bind cv_1 to a variable.  Just choose "cursor" from the drop down list, and press ok.  The output of the stored procedure (which is in cv_1) will be displayed in the datagrid.
Posted by Chet at 3:01 PM0 Comments

Mayor Bloomberg was really quick to speculate that the Times Square car bombing was likely “homegrown” and could have been placed by “somebody with a political agenda who doesn't like the health care bill or something.”

The first thing Bloomberg thinks of are those who don't like ObamaCare, presumably conservatives or Tea Party activists.

Turns out it was a Pakistani-American, and that Pakistan's Taliban has claimed responsibility for it.

But that's right, keep trying to make it look like it is rational to think that conservitive activists are just itching to blow up a supermarket.
Posted by Chet at 12:05 PM1 Comment

Robbie loves to "talk".  He makes noises all the time.  Sometimes he will wake up early and just talk to himself.

If there are strangers around him and they are being loud, he won't talk.  But if you are quiet he will.

Also, if Amanda or I talk, he will start talking.

It is amazing that he knows that the sounds coming from us are 1) something he can mimic, 2) are something he should mimic.
Posted by Chet at 9:31 AM0 Comments

Enabling the php_mssql.dll extension in php.ini might fail silently.  If you look at the output of phpinfo(), there will be no references to mssql.  A cryptic error message can found in the error log.  It says:

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\PHP\ext\php_mssql.dll' - The specified module could not be found.

This makes it sound like it couldn't find the php_mssql.dll file.  It is clear that the dll file is in the correct location.  Firing up Process Monitor, you can see that it has a dependency on ntwdblib.dll.  This file is usually located in the PHP base directory... no problem there.  However, this dll has a dependency on msvcr71.dll, which is not provided by PHP install.  You need to locate the file on your harddrive and do one of the following:

Put the location in your PATH, and reboot.
Copy the file to the PHP base directory.

Until you do this, PHP will run fine, but if you look at the output of phpinfo(), you will not see any references to mssql.
Posted by Chet at 10:06 AM1 Comment

I upgraded the BIOS firmware on my Dell Optiplex 760.  I was trying to get two video cards to work and hoped a firmware upgrade would help.

One of the BIOS options is HDD Acoustic Support, which changes how the drive operates.  There are four modes: Bypass, Quiet, Suggested, Performance.  I had mine on Performance.

I read the changelog for the firmware upgrade, and noticed that one of the "enhancements" is removal of HDD Acoustic Support.  After installing this update, my computer starting making a persistent high-pitch noise.  Not terribily loud, but very annoying.  I figured that I might have messed up the power supply (the usual culprit for high-pitch whines), or unseated the video card.

After a bunch of research I got to thinking that maybe the sound was coming from the hard drive, and that this acoustic support removal was the cause.  So, I reinstalled the A05 version of the BIOS firmware, and the problem went away.  Whew.
Posted by Chet at 9:44 AM1 Comment

Requires every single citizen to have health insurance.  Yeah, that is Constitutional.

What happens when an illegal immigrant needs healthcare?  He will not have been paying into the system, yet will still get full coverage.

Also, taxes start this year, but benefits won't start until 2014.  In addition, unless something big changes in my life, I won't benefit  at all anyway because I already have health insurance.  Just more taxes.

This law opens a whole new set of campaign promises, like: Don't think you are getting enough benefits?  Vote for me and I will increase heathcare spending.

Or, "Congressman John Doe voted against an increase in healthcare spending, he wants you to die."

We have already heard these kinds of statements in relation to Social Security and Medicare.  Now we will hear them for "general" Healthcare.

I would rather have a greedy businessman in charge of my health insurance rather than a greedy/incompetent bureaucrat (who can use the police power of the state to enforce his will... read: IRS).
Posted by Chet at 9:32 AM2 Comments

Fourth Try and Fifth Try have been posted to http://drop.io/UntitledChetZemaProject.
Posted by Chet at 1:16 PM1 Comment

Do not bother trying to create a class that inherits from System.Web.UI.UserControl and put it in a class library.  The .NET Framework compile-time generates code to render the child controls.  You don't get this compile-time generation unless your assembly is a website.

You could go though an manually write when would have been generated, but this gets complicated as you add more controls.
Posted by Chet at 12:17 PM3 Comments

In II6, and in II7 "classic mode", httpModules are defined under:

<configuration>
    <system.web>
        <httpModules>


However, in II7 "integrated mode" (the default mode), they are defined under:

<configuration>
    <system.webServer>
        <modules>


Now, remember that Vista, Windows 2008, and Windows 7 come with IIS7, while XP and Windows 2003 come with IIS6.  This means that if you are developing a website on a machine with one version, and you deploy it to a machine with a different version, you will get errors saying that the module was not specified in the web.config file.

Best practice is to always define the module in both places so it will continue to work no matter what version of IIS is being used.

Some modules are nice enough to indicate, in an exception, exactly what you need to specify in the web.config file.  However, the particular module that I was working on was older and didn't remind you to specify the module in the IIS7-specific section.
Posted by Chet at 10:54 AM0 Comments

I cannot believe it has been three months since he was born.  He likes to "talk" and look around.  He can watch me walk around the room.  When we open up his swaddling, he "pops" open (he stretches his arms and legs out like an X).

He only has an inch or so left before he is too big for his bassinet.  However, we have been putting him upstairs in his crib for many of his naps, this should make the transition easier.

He pretty much refuses to eat from a bottle.  We can get an ounce in him if we are lucky (he should eat something closer to 5-6oz during a feeding).

He loves "Itsy, Bitsy, Spider", "Bears, Bears, They Got No Cares" (Andrew Peterson), and "Little Bunny Foofoo".

He is pretty much the cutest baby I have ever seen.
Posted by Chet at 4:05 PM0 Comments

I am trying out Linux Multimedia Studio.  I made some techno samples.  If you want to hear them, go to http://drop.io/UntitledChetZemaProject.
Posted by Chet at 4:03 PM0 Comments

At work, we have a server that had a single hard drive.  For some reason only 10GB, out of 60GB, was actually allocated.  I didn't want to make the unallocated space into another drive, that is annoying.  Windows 2003 does not come with the ability to resize the boot/system partition.  There are may programs out there that do it, but they are expensive.

I found a reference to a Dell utility that lets you resize the partition.  I tried it and it works great (and very fast).  The only problem is that you must specify the amount to add, you cannot leave it blank and let it add all of the unallocated space.

http://ftp.us.dell.com/App/ExtPart.exe

This utility fits a very niche (but common) purpose.  A single drive with a partition followed by unallocated space.  It doesn't do all the fancy things that commercial partition managers do (like merge, shrink, split, resize, etc).
Posted by Chet at 11:24 AM4 Comments

Is Factcheck.org not going to report on the State of the Union speech?  Or, was the speech completely accurate?

I went to be about 20 minutes into it.  My blood pressure was getting to high.
Posted by Chet at 10:07 AM1 Comment

I went to Skycraft yesterday and got four things.  A surplus LCD screen along with a "helper" board that I cannot figure out, a missile switch cover, a DC Jack (5.5 x 2.1mm) which fits the Arduino and lets me use a 9V battery, and a mono-multivibrator.

The multivibrator was sort of an accident.  I was looking for a 8-bit shifter with ID# 74HC595, but I couldn't find any.  I saw this chip with 74HC211, and hoped that since the numbers were close that they might be kind of the same thing.  Nope, the 74HC series is a whole bunch of chips, so I pretty much had no chance of randomly finding a shifter.

Anyway, I put the missile switch cover on my "nightplay distraction", AKA a camera flash.

I soldered the DC jack to a 9V battery connector.

Now I have to figure out how to get the LCD to work with the Arduino.  I have read a lot about it, but have yet to build the circuit.  It looks pretty straight forward though.
Posted by Chet at 4:19 PM0 Comments

Ffmpeg is a program that sets you convert various multimedia file formats into other multimedia formats.  For example, you can convert Ogg Vorbis to MP3, or back.  You can convert avi video files into divx files, or back.  There are dozens of supported formats.

The particular ability that I care about is converting m4a files to mp3 files.  This is because iTunes provides m4a files, but my Sansa Fuse doesn't play them.  M4a files are unprotected audio files, so it is pretty simple to convert them.  I use something like this ffmpeg -i "input.m4a" -ab 256000 "output.mp3".  This will convert the m4a input file to a 256Kbit mp3 file.

The problem is that the metadata (title, artist, album, etc) is not converted in the process.  However, I found a command line parameter that will allow it to do this.  Just add -map_meta_data 0:0 to the command line (I usually do it before the output filename).  There is another problem though.  For some reason it maps the m4a "composer" field to the mp3 "artist" field, which isn't right.

The biggest drawback to ffmpeg is that you, for the most part, cannot download the executable.  It is only available as source code.  I compiled the executable a few months ago but didn't have my development environment setup anymore.  So, after much searching to see if there was a fix, I decided to install MinGW, MSYS, and the ffmpeg and mp3lame source code (using http://ffmpeg.arrozcru.org/wiki/ as my guide) on my machine and fix it myself.

I don't know the "right" way to fix it, but the method that worked for me involved modifying the libavformat/mov.c file.  In the mov_read_udta_string function is a mapping between the raw data "table of contents" and the human-readable tag name.  In order to get the AAC decoder to give the tags to the MP3 encoder in a way that it would understand, I changed the key name.  I changed "author" to "artist", and "year" to "date", since these are the tag names as MP3 knows them.

I probably could have modified the libavformat/id3v2.c file to change the MP3 names into the AAC/M4A names, but I tried it the first way and it works.

Now, I say that this might not be the right way because other downstream components (that I am not using) might not like the new tag names for the AAC format.  But I don't care because it suits my needs.
Posted by Chet at 7:46 AM0 Comments

I was reading the latest Gallup Poll questions for science.  The second one is: "In fact, Charles Darwin is noted for developing the theory of evolution. Do you, personally, believe in the theory of evolution, do you not believe in evolution, or don't you have an opinion either way?"

This would be more accurate it is said that Charles Darwin is noted for developing a theory of evolution, and that it is a version that nobody (especially scientists) believe today.  

First, Darwinian evolution did not include genetics as we know it, he was only interested in natural selection.  Darwin didn't know anything about genetics.  Darwin's theory included pangenesis, as the method of transferring traits to offspring, which is no longer taught.  The separation of natural selection with pangenesis and then combining it with Mendelian genetics is called neo-darwinism.  This is what is taught in textbooks.  

Amazingly, many "godfathers" of evolution (Eldredge, Gould, Goldschmidt ) who wrote the textbooks do not believe that neo-darwinism works as a theory of evolution (mostly due to the fossil record).  Punctuated equilibium is the most serious contender, with Hopeful Monster also considered a better theory when looking at the facts.

All this to say, Darwin has become more of a mascot than anyone of substance.  He didn't talk about the origin of species, but the survival of species. That is, he wrote about why certain traits continue and others do not--he did not write about how species came to be in the first place.  Not only was his theory of speciation wrong, but so was the mechanism for trait transfer (genetics).  What he wrote about isn't believed by any scientist today.

So stop raising Darwin up as a hero.  He was totally wrong.  He replaced Lamarck's theory of evolution with something even more unworkable.  You cannot even say that he provided the foundation of modern evolutionary theory, because modern evolutionary theory is punctuated equilibrium, not neo-Darwinism.

If you want a good history of evolution from an anthropoligist, go to http://www.crownhillchurch.com/html/roger_chambers_audio.html and do a search for "evolution".  There is around six (low quality) audio files there.
Posted by Chet at 3:36 PM0 Comments

I did a Google search "php vs asp.net speed" just to see what they had to say.  I don't really care since I use ASP.net exclusively nowadays.  However, the first link had this to say:

"ASP.net is compiled into memory in binary code. So, when ASP.net is used for coding, it is evident that it takes much longer time to process since the codes need to be retrieved from memory. However, PHP is not compiled into memory like ASP.net is. It is interpreted at runtime. That is the reason why PHP coding leads to better speed and even efficiency. However, it must be said that both PHP and ASP.net can run at supreme speeds and efficiency when they are coded expertly."

This makes no sense at all.  It reminds me of Senator Ted Stevens calling the internet a series of tubes.  Especially "it takes much longer time to process since the codes need to be retrieved from memory".  Where else are the "codes" supposed to come from?  Here is a very short lesson on interpreted languages vs compiled languages:

Interpreted languages store the human-readable "instructions" *as is* in a file.  The interpreter (like the PHP processor) loads the file into memory (it has to), then reads each line.  Each line essentially tells the interpreter to modify its internal state a small bit (create a variable, add one to that variable you just created, write that variable to another memory location which will eventually sent to the client, etc).  The interpreter does this by converting that instruction into a format that the CPU can understand.  It does this on a line-by-line basis.  The process goes like this: read line, determine what that line is asking for, perform the corresponding action, repeat.

A compiled language converts (compiles) the file into a format that the computer can read directly (without interpretation) and this is stored in the file.  When the program is executed, the entire file is loaded into memory (just like an interpreted language), but then it is run directly against the CPU.  There isn't a layer there converting the human-readable instruction into a machine-readable instruction.

Interpreted languages are notoriously and inherently slow.  There is absolutely no debate about this.  However, they provide big advantages in other areas:
  • They are portable.  You can transfer the plain-text file to another platform (like Windows to Linux) and it will still run.

  • Since they are human-readable, they can be modified directly (executable files cannot)

  • The interpreter provides a layer of indirection from the hardware--which makes programming easier.

  • The interpreter usually handles memory management automatically.

  • The interpreter also (usually) prevents the program from doing anything stupid (like accessing another process's memory).

There are surely more advantages, but none of them are speed.

Now, ASP.net (really, any .NET Application) is compiled, but it is done so at runtime.  This is called "just-in-time compliation" or JIT-compilion.  The .NET "compiler" converts the human-readable source code into "bytecode" which is portable.  This bytecode is then compiled to machine-code (not portable) when the executable is loaded.  This load-time compilation causes the application to startup more slowly than a native application.

People often use this as an attack on .NET's speed.  However, they fail to realize that this speed hit only occurs when the application is first loaded.  ASP.net web applications are loaded on the first request to a page, and then stay loaded.  So, on a brute performance basis they are faster than PHP, which has to be read and interpreted line-by-line on every single execution of the page.

So, the quote above is wrong on many accounts.  ASP.net is not compiled to binary in the traditional sense.  It is, however, converted to binary when the application is run.  Also, binary code *always* runs faster than intepreted code.  This notion that "it has to be loaded from memory" makes no sense.  Both PHP and ASP.net have to be loaded from memory (the CPU can only read from memory).  PHP has the added hurdle of being interpreted.

ASP.net is the clear winner in brute performance, please check a good example of performance benchmarks.  All this to say though, programmers don't determine which language to use based soley on speed.  There is ease of use, how much the language provides "for free", how well it is supported, etc.

According to the cited benchmarks, the only thing faster than ASP.net is C++/CGI.  This makes perfect sense because that is bare metal.  You also get nothing for free when you run C++/CGI.

That article also says that PHP has very good support for object oriented programming but that ASP.net "is also very capable".  This must be a joke.  Just look at the PHP reference and you will see that it is driven by function calls.  I am talking about what PHP platform provides, I know that you can develop objects in PHP.  ASP.net is completely object-oriented.  There are no areas that are not.
Posted by Chet at 5:46 PM0 Comments

Today Robbie is five weeks old.  We are in the process of "weaning" him from the pacifier as a sleep prop.  Basically, we let him fall asleep with it, but if it falls out it stays out and he can either fall asleep again, or cry.  We check on him often while he crys to make sure he is ok.  He is able to sleep well during the night well now (not through the night, he isn't old enough for that yet).

It used to be that we would have to hold the pacifier in his mouth, or keep getting up to put it back in.  Now he just wimpers for a bit and then sleeps.

However, at his 7:00PM nap he still crys.  The last two nights he cried though the entire 7:00 sleep session.  But when Amanda and I are ready for bed he does sleep, which means we are finally getting better sleep.
Posted by Chet at 10:35 AM2 Comments

Looks like I haven't posted in a while.  Amanda got me four things for Christmas

Two-way radio set ("adult walkie talkies"), ideally for capture the flag.
Gettysburg, The Movie
Star Trek TNG Season One.
Brown t-shirt

She probably also got me some small stuff I cannot remember, and candy.

I got her some jewelry and MacGuyver season six, and some other miscellaneous stuff.

My wife's family and we spent Christmas and News Years Eve at our house to make it easier for us.  I pulled out my "marshmallow launcher" and fired it a few times just after 12:00AM (it actually shoots balls of duct tape since marshmallow is too sticky).
Posted by Chet at 12:46 PM0 Comments

© 2014 Chet Zema π