1

The cool thing about baby shoes

The cool thing about baby shoes is that they only have to look nice, they don’t have to be functional, since the babies can’t walk, nor do they have to be durable, since they out grow them in 4 weeks or less (and shoes that you don’t walk in take far longer than 4 weeks to wear out).

Oh crud, I think I forgot to blog about my new baby!

Hey, I’ve got a new baby… well, she’s over 5 weeks old now. Baby Mia (mee-yah) was born on July 2nd. Baby is sleeping well through the night, waking up once to eat then heading back to sleep. Lyss is doing well too. Here are some pics…

![baby shoes](http://www.bearfruit.org/files/mia-with-shoes.jpg)

![mia is cute](http://www.bearfruit.org/files/mia-bath-towel.jpg)

4

The new Matt

The Dr. says I should loose 30lbs. I actually told her I felt I was putting on some weight and asked her about dieting. She looked up my BMI and said my target weight was something like 125-169. On her scale I weighed 196lbs.

So, I’m going to start doing more exercise. Two 15 min walks a day. And I’ll eat better. Less junk food, try to decrease my portion size (which I know is where I can improve greatly) and drink more water. I’m thankful she didn’t say I had to stop drinking soda. C’mon, a guy’s gotta have at least one bad habit, right? I asked her and all she said is I need to drink more water. Fair enough. Right now I’m drinking about one glass a week, so improving should be a piece of cake.

Well, I know few people who read this blog care, but since I know some people read this blog, I’m going to use you to keep me accountable. I’m setting my goal of losing 30 lbs in 20 weeks. That should bring me right up to the end of the year. This is based on my Dr’s urging not to do a diet, but to make a lifestyle change. A change where I eat better and exercise more and doesn’t end when I reach my target weight.

I’ll post my current weight and my success at staying active here each week, if not more frequently. If you don’t see an update, harass me, please.

Status:

* Aug 3, 2007 – 196lbs (dr’s scale)
* Aug 7, 2007 – 196lbs (my scale), walked one mile (once) yesterday and today so far

9

The best programming language is…

Microsoft has squarely positioned .Net (C# primarily, but other flavors such as VB, J#, Iron Python, Jscript, etc) as the programming language for Windows. I realize its not a language, but pretend it is for a minute.

The Linux community really loves C and Python. Lets just focus on high-level languages (if you think C is a high level language, you’re too old) so we’ll say that Python is the language of choice for Linux.

Mac users are increasingly rallying behind Ruby and Ruby on Rails. Note that a lot of influential people in the Web development community use Macs, and since they know that they’ll never have enough market share to attract big desktop application vendors, they’re a driving force behind the movement to make all major productivity apps go web 2.0, which is a place where Ruby sparkles.

Lets discuss these three languages. Ruby is primarily used for web apps. You can write shell scripts and simple programs in Ruby, but who does?

Python is primarily a glue language. A lot of excellent non-web productivity apps have been written in Python. However until very recently, it has been non-trivial to write web-apps in python. Writing GUI apps is tricky, because Python lacks a standard, or even de facto GUI toolkit that looks and works like other modern kits. And unfortunately, there has been little commercial adoption of Python because its difficult to protect your IP if you write your app in Python. This doesn’t matter in web apps where you don’t distribute your program to your customers, but as mentioned, Python has not been a big contender in the world of web apps.

.Net is a great platform for developing both Desktop apps and Web apps. It’s only disadvantage is that when you choose .Net, you lock yourself into using Microsoft as your primary vendor for dev tools, productivity software, server software and operating systems. Replace a single component with a non-Microsoft tool and you loose a major portion of the benefits of using .Net.

So, when choosing a high level language, you are forced to either:

* Tie into a single vendor, or
* Limit yourself to only web apps, or
* Limit yourself to desktop apps

OK, so you astute developers reading this have likely noticed that I have left out one major high level language from my evaluation above. That is Java.

* Java works excellently on Windows, Mac and Linux,
* Java is great at writing desktop applications and command line/batch processing applications
* Java powers some of the webs most pervasive and high-powered web applications

Seems like Java is the perfect language… what’s the catch?

Early on, Microsoft hamstrung Java by creating a version that was slightly incompatible with other versions of Java. Sun had to change the license to ensure that developers could write code that would run anywhere Java would run. This license restriction made it hard for Linux vendors to include it.

Additionally, the Java community seems to love obscure acronyms, which makes it very difficult for new developers to jump in. You’ve got to first learn JINI, Jar, War, Ear, JCP, JDBC, AWT and a lot of other stuff.

Fortunately, Java’s license is changing to be compatible with Linux. Java comes pre-loaded on Macs and it is easy to install on Windows. There is plenty of free and commercial development tools. There is a dearth of entry to medium level documentation on the web, but you can go to your local book store and find at least a couple books.

As you know, I like Linux and OSS. I don’t like it because I’m anti-Microsoft, I like it because it provides a choice. I can choose to use Firefox browser, I can choose to use PostgreSQL, I can choose to use Ubuntu, etc.

I like the *idea* of Java, because of all the programming languages, it offers the widest variety of choices. Web? yes. Desktop? yes. Server? yes. Windows? yes. Mac? yes. Linux? yes. Commercial software? yes. Open source software? yes. For each of these options, Java provides a top-notch tool you can choose without making compromises in quality. This makes it truly unique.

Now I just wish I actually liked Java.

0

How web applications irritate users

I think I’m going to be sick. I can’t believe I have the energy to even type this message out. Be forewarned, this is going to be a major rant.

I’m writing a howto explaining using google analytics to track outgoing links. A couple times through the article I hit the preview button to see how I was doing (mostly to ensure the newly installed markdown plugin was working). After the article was about half done, I hit a zone and the words just started flowing. I got nearly done with the article and hit some keyboard shortcut on accident… no idea what I did. The page refreshed and I was starting at my blog’s homepage.

I started to panic… I thought, its OK, I can just hit back and it’ll be still there. I hit back and up popped that awful message… “this page contains post data, hit OK to resubmit your form…” I knew then that my data was gone. The form would post and I’d be looking at the data I’d submitted last time I hit the preview button.

I hit cancel and looked for another alternative. However, it was for naught. I hit my back button, hit OK to resubmit the form and hoped that I would be wrong. Alas, exactly what I’d expected happened. Half my article was *gone*. :-(

Shame on Drupal for not redirecting after posts. Shame on me for not hitting preview more often. Shame on me for even composting a lengthy article in a web application.

I’m going to bed… I suspect I’ll dream of content management systems with sharp teeth chasing me through the night.

0

A Bad Sign

I woke up today with “Toccata and Fugue in D minor” stuck in my head. I think that’s a foreboding sign. On an unrelated note, my cat disassembled a bird in my living room last night. That’s always a pretty sight to see when you walk down the stairs in the morning.

0

The silliest name for a baby sister

At bedtime the other night, my son announced he’d thought of the silliest name for a baby sister. He’s 6, so I was not expecting a ROFL, but I was surprised. I chuckle now just thinking about it.

I’ve never tried communicating second hand humor through a blog before, so I don’t know how well this will work. If it doesn’t sound funny to you after reading it, try saying it out loud, or imagine using it to address a young sibling, niece or daughter.
The silliest name for a baby sister (according to my son) is: Grandma.

13

Observe the sabbath?

Let’s see, God made the universe, the earth, the plants, animals, sun, moon… then he made a man, whom he assigned the task of naming the animals, then he made a woman and created the institution of marriage. All of this in six days. Then he invented the “day of rest.” What did God do on this day? He rested and blessed the seventh day, making it holy. Some years later, Moses had a conversation with God and He gave Moses 10 commandments to share with “the people.” One of these was specific instructions to do no work on the sabbath.

So, the sabbath is the last day of the week. Traditionally, this has been Saturday. However, few people in the Christian community observe the ordinances of this special day, and those that do tend to observe it on Sunday, the first day of the week. What is the story with this?

I’ve spent quite a bit of time reading and researching it. It seems that by the time of Jesus, the laws for observing the sabbath were quite strict, comprising 26 chapters and 150 pages of very detailed rules outlining exactly what can and can’t be done and what is and isn’t work.

What did Jesus have to say on the matter? Apparently there are things more important than the sabbath law. But his answer to the pharisees is difficult to understand on its own. Fortunately, God provided a clarification elsewhere in the scriptures. Romans 6 (esp 14, but don’t take that without 15ff) says we are free from the law. Titus 3:9 re-enforces this idea. Hebrews 4:1-13 tells us that there is a sabbath, but it is not on the seventh day of the week for Christians. We will get that day of rest, but not until after we die.

So what should we do to observe the sabbath now? What is the intent of God’s word, is it to force us into strict rule following? No, remember the most important commandment as expressed by Jesus: Love the Lord your God with all of your heart, all of your soul and all of your strength, and likewise love your neighbor as your self. Also, remember the command taught throughout the old and new testaments to teach your children about God’s word. Spending time with friends and family and worshiping God in a Bible preaching church are all excellent applications of these commands.

However, I think that saying that we (Christians) should do no work on Sunday (or Saturday) is a gross misapplication of scriptures. I would love to have your comments on the issue.

27

The New Ubuntu Website

OK, soon the new ubuntu website will release.

That is such a heavy statement. For the last three months, my sole focus at work has been getting this site ready. It has involved a major redesign, a major architectural change and dramatic streamlining of the content.

This process has been a lot of work. We decided to switch away from the Moin Moin platform (we still use it on all of our wikis and for several smaller websites though). As you may know, we at Ubuntu love Python and use it whenever possible. However, we had a bad taste in our mouth from a haywire Plone incident, and decided we just couldn’t use plone again. There are no other major oss python CMSs out there. That means we needed to consider Java or PHP based CMSs as well.

The fact is, we don’t have that much in-house java expertise. Several of us have done a bit of java coding, but collectively we have a much greater pool of PHP experience. I personally have been coding primarily in PHP for over 5 years and invested 4.5 years writing a commercial CMS. Taking this into consideration, we narrowed the list down to a few choices and began evaluating and contacting the devs and security teams for each of our final choices.

The decision was difficult. We finally chose Drupal. They have excellent documentation, the cms is easy to extend through modules, they have a responsive security team and it’s easy to learn to edit and add content.

By mid February we had the new theme in place. I found it quite easy to create themes for Drupal. I started from scratch and referenced a few of the included themes. I had to ask for some layout advice in #css on freenode. After some discussion about equal height columns, Zeroes (correct me if I got your nick wrong) suggested using a sliding doors layout. This blew my mind at first because I’d only used sliding doors for tabs, but it was brilliant. It works perfectly. You’ll notice if you inspect the code that I have equal height columns inside equal height columns. The outer columns use sliding doors, the inner columns are created using “skidoo too“, which is the way I’ve been using for years to achieve equal height columns. The benefit of sliding doors over skidoo is that sliding doors can use a background image for the columns.

Around this time I also started noticing a few problems in the layout for IE 6. I was faced with the choice of using CSS hacks or adding a few lines of javascript. I opted to use javascript. This led me to search out a js library that could make my life easier. I found mootools by way of transcorners. What a find. I’ve used prototype, scriptaculus, jquery/behavior and mochikit. I fell in love with mootools because of its small size (35k packed) and complete functionality. It’s fast, has a ton of time-saving helper functions/classes, easy ajax/json (and I mean *easy*) and some beautiful special effects. I’m only barely scratching the surface of this library, but I’m so impressed with it I will definitely be using it more soon.

The biggest challenge has been migrating content. We’ve been working on it, working on it and working on it. I don’t think we can get it all done perfectly before release, but that’s ok, because a lot of our content is fluff. We know it, we have plans to do something about it and it will work for now.

Also around mid-Feb we begin doing a burn in of Drupal on the new website. The fabulous Canonical sysadmins found a problem. Drupal was not able to handle more than about 75 simul connections with our configuration. That’s not good. However, the sysadmin’s skills are eclipsed only by their tenacity and they soon worked out a solution. In the final analysis, each server can now handling 5,000 to 6,000 simul connections. You guys rock.

So as the site releases, my favorite part is the new download page. Right now you’ll just be impressed by its vastly simplified layout. However, I’ve already written the code to enable automatic mirror detection. When we release, you’ll have to choose a mirror. However, shortly after we’re sure everything is OK, we’ll turn on the mirror detection code which will use a little AJAX to randomly choose a mirror that is close to you and pre-select it. We’ll still give you the choice to change the mirror but most likely you won’t need to. The brilliant launchpad devs have written some code that probes the mirrors to see which ones have gone away. The new site will benefit from this information to help prevent problems with dead mirrors, something that was a painful tragedy when 6.10 released.

We use launchpad to track bugs with the website. There are some known glitches. I’m eager to hear about any others that turn up. You can also e-mail me or /msg me on freenode (I’m newz2000). If I’m online, you can always find me in #ubuntu-matt.

I could go on and on. I’d love to discuss some of the design decisions and go into details over technical hurdles, but this post is long enough now and I really need to focus my time on getting the site out.

0

In defense of PHP

Slashdot has a post about a popular PHP security expert leaving the PHP community.

I get a little peeved when I hear people quote silly reasons why PHP is insecure. For example:

When I looked at Zend’s introduction to PHP, the first sample PHP program was Hello World, and the second was a cross-site scripting vulnerability.

OK, I’ve developed web apps professionally in PHP, Python, Java and others, and I’ve used several app servers. No tool I’ve used makes it easier to remove XSS exploints than PHP. Python has no “strip tags” feature built in, neither do Perl or Java. C/C++? No way.

In addition to strip_tags, PHP has htmlspecialchars, which converts all >, < and other tricky chars into their safe equivs.

Now, what I feel is ridiculous, is why don’t tools have a built in function for removing xss exploits but leaving otherwise safe markup? At the least it should take a list of acceptable tags and for each tag a list of acceptable attributes. Then any unacceptable attributes are removed from acceptable tags and unacceptable tags are removed.

PHP doesn’t have this. Neither do Python, Ruby, Perl, Java, Rails, Zope… I don’t know if Asp.net has this feature, but it wouldn’t surprise me if it was the only one that does.

0

The *other* other kind of free

I stand corrected. There is yet another kind of free. While visiting the local computer user’s group I was reminded that there is also, “free, as in ‘don’t get caught.’” This was made apparent because at every mention of a software package that was discussed as being free voices raised to clarify what exactly was meant by ‘free.’

Evolution annoyance #643: Evolution with disabled snooze nearly every day I somehow do something to the reminder window that disables the “snooze” button. This means I cannot dismiss the window, nor can I ignore it, since it remains always on top. Argh!