January 18, 2008

Some interesting links

Hope all of my readers have recovered from the holiday season.  Here are a couple links I've come across recently, but neglected to write about during the holidays.

Zed Shaw, author of mongrel which is used by many Ruby on Rails applications, posted an interesting rant about the state of Rails development and the personalities of some of the major players. 

I've never been a huge fan of Rails because I've never been shown a compelling reason to switch away from the more mature Perl equivalents.  Lately I've been working with mongrel and Rails apps more and more as many of my clients have switched to that as their platform of choice.  The more I work with it the less fond of it I am, it really is just immature compared to other platforms out there.  Toward the end he mentions the Rails creator himself has an application that had to be restarted 400 times per day... with some fixes it only has to be restarted 10 times a day.  400 is just insane, but 10 is still very troubling.  If the creator can't make things run better than that it really doesn't speak well for the platform.  Normally I wouldn't link to such a huge rant, but when it comes from a major Rails contributor there has to be at least some truth to it.

My friend Stas Bekman has created a new site where you can make it known how you want a better version of something.  It's called i-want-a-better.com.  I think it's a great way for people to vent their frustrations with products, but I think the really winning idea is that entrepreneurs can peruse the site for new products and untaped markets. Hop on the site and let us all know what's frustrating you!

 


November 14, 2006

More distros should do this...

I was reading this article on the Ubuntu Developer Summit and found this quote:

However, Shuttleworth says that "Feisty will actually warn you that you're running proprietary drivers and point you to alternative hardware ... so you're better educated for your next hardware decision. I don't expect this to be very popular with Nvidia or ATI, or with manufacturers of proprietary-only Wi-Fi cards, but of course the easiest solution for them is to open source their drivers."

While I'm not certain of how well this will work, shaming hardware companies in general is a great new tactic in helping the situation.

So far most peoples experience with closed-source binary drivers is typically one of these:

     
  • "Oh that's a shame Linux doesn't support my card." A common misperception about the whole issue.
  •  
  • Attempting ( and often failing ) to getting the binary drivers to work.
  •  
  • Holding true to your Open Source ideals and not using the binary driver.

Maybe as the user base of Linux on the desktop increases and more users become aware of this situation the hardware companies will come around.

March 10, 2006

Seriously funny

I only have two things to say about this quote from James Gosling regarding how Java is under no serious threat from PHP, Ruby, or C#.

 

  1. HA HA HA HA HA HA HA HA HA HA
  2. Seriously James, do you live in a secret Java cave somewhere?

February 16, 2006

Random musing...

I remember back when I first got into computers reading John C. Dvorak's columns in PC Magazine. But seriously, has this guy lost his mind or what? In a recent opinion piece he posits that Apple has been secretly moving towards adopting Windows in favor of OS X.  Maybe I keep missing it, but I'm still waiting for this guy to be right about something. 

He goes on to bring Linux on the desktop into the mix saying " Linux on the desktop never caught on because too many devices don't run on that OS.".  First off, I think it's safe to say that Linux on the Desktop is far from "done", so it's.... I dunno... several years too early to say it "never caught" on.  Hasn't caught on yet, sure.

No one disagrees that, especially in the early days, getting random hardware to run on Linux was difficult at best.  But those days are gone.  It used to be "I need a X that runs on Linux" and now it's closer to "Are there any Xs that don't run on Linux?".  And just in case Mr. Dvorak ends up reading this, "John, all three of my different DVD burners work just fine on my Linux desktops, just plugged them in and started burning. Thanks for your concern!".

January 05, 2006

Using SSH ControlMaster to speed up your connect times

Awhile back I wrote a short article on how to speed up subsequent connections to the same host via SSH originally I had an issue using the ControlMaster technique with subversion when using svn+ssh. Rob Holland from Inverse Path sent me a messge showing how to fix the issue.  The article has been updated with the fix. Thanks Rob for figuring this out for all of us.

January 02, 2006

Using Apache's mod_deflate for speed

      

If you have a site that sends large textual content ( XHTML, XML, CSS, plain text, etc. ) to a browser via Apache you should investigate using mod_deflate. This Apache module compresses your content at the server, before sending to the browser. This can dramatically speed up the time it takes for your pages to load. Especially for users on slower Internet connections. Many Linux distributions already have mod_deflate installed, but if yours does not you will need to install it by hand.

            

For example, an application I wrote called NewsCloud has some pages that are over 350K of XHTML. This can take awhile even on the fastest of home Internet connections. But by having mod_deflate compress the content before sending it to the browser 350K of XHTML becomes a much more managable 40K. Obviously your results will vary based upon your content. Because NewsCloud is a mod_perl application this is what I added to my config:

             

             <Location /newscloud>
       SetOutputFilter DEFLATE
       ExpiresByType text/html "access plus 2 hours"
      </Location>
      

            

The ExpiresByType instructs the browser to keep cached any content from this particular Location for 2 hours after it was last accessed. This also is useful to ensure a user's experience is good, but obviously varies depending on the nature of the application you are building. It wouldn't be too smart in a shopping cart for instance... "Hey?!?!?! Where the $@#$# did my stuff go?"

      

Tp learn more about mod_deflate you should check out this article, "Apache 2 mod_deflate Benchmark"

         

 

Sendmail Virtual User Trick

One of the things people find difficult about Sendmail is virtual users.  These are defined in the virtusertable file ( usually in /etc/mail/virtusertable ). This file instructs Sendmail to translate a "virtual" user into a real user or alias. The reason I mention aliases here is because, with Sendmail, you can have a virtual user that translates into a alias for multiple local and/or remote E-mail accounts.

A situation some people run into is that they want all usernames at domain2.com to be delivered to the same username at domain1.com, except for a few users.... If you really wanted all users to map to the other domain it would be as simple as adding the domain into the local-host-names.  It is the need to have *most* users map to the other domain where the virtusertable file comes in handy.  For this example, let's assume that we want all users names @domain1.com except for postmaster, webmaster, and support to map to the same username @domain2.com this would be accomplished by adding domain2.com to the local-host-names file to tell Sendmail that we wish to receive mail for that domain and then adding the following to the virtusertable file:

postmaster@domain2.com: mailadmin@example.com
webmaster@domain2.com: webmsater@example.com
support@domain2.com: support@example.com
@domain2.com: %1@domain1.com

The first three lines tells Sendmail to send messages sent to those three usernames at domain2.com to the appropriate remote E-mail addresses. The last line instructs sendmail to send *any* other usernames sent to domain2.com to the same username at domain1.com. Note that this will also include any fake usernames that a spammer might send to. The E-mail server at domain1.com will still be responsible for determining what is or is not a valid username. After you've added those entries to the virtusertable file all you need to do is rebuild it and it becomes active.