Category Archives: Geek

Everything Geek

Software is Art

I watched Jack Dorsey’s “Golden Gate Speech” today. I was seriously impressed with him, and in particular his view of software products as the output of designers.

Software is Art. I’m not just talking about designing pretty web pages either. I’m talking about code, whether it’s MC68HC11 Assembly, Dylan, Java, or even C#. I’ve struggled my entire life with the frustration of being traditionally uncreative. While I can draw a little, I’m pretty poor at just about every other traditionally creative outlet. The cards are kind of stack against me. I’m red-green color blind. I’m tone def. I can’t seem to keep a beat. I do have good balance on two wheels, but when’s the last time you heard someone say, “that was an inspired way to get down that singletrack today!”

I have a huge appreciation for human creativity and a tremendous amount of respect for artists. I don’t always like their art, but I’m always inspired by their bravery. Actually, envious would describe it better. I’m envious by their ability to think beyond what they observe and to find beauty beneath the obvious. Moreover, I’m envious of their ability to deeply understand that beauty and to materialize it through their pieces in a way that helps others understand it as well.

Macs Make Anyone Feel Creative

I switched to Macs about six years ago. I had a really talented and inspirational designer friend, Lea, who “showed me the way”. I was the typical PC guy that loved to tinker and solve problems. I didn’t realize that I wasn’t really using my computers as much as I was constantly fixing them. I finally decided to rid myself of the Microsoft plaque at home; a boycott prompted by the premature release of the Xbox 360. At that point, I had not decided if I was going to go the Linux or the OS X route.

Lea and I discussed the merits of Macs several times. She couldn’t really break through to me. Largely because of the language barrier. We were both geeks, but very different kinds of geeks. She ended the discussion one day with a seemingly absurd yet wonderfully insightful comment.

“Dave, sometimes you just need to be surrounded by beautiful things.” – Lea

Using a Mac made me feel more traditionally creative, but in all actuality I’m still not a very good photographer or videographer. However, my Mac did open me up to the wonderful world of design. Apple products are both wonderful examples of design as well as super conductors for creativity.

Software Design as Art

Early on in my career, I started to use really abstract terms in code reviews. I sounded more like an art critic to my peers than a software engineer. I would typically describe code as elegant, balanced, structured, aesthetically pleasing, and inspired. These intangible descriptions usually fell on def ears, and often lead me to think I was another wanker with a crappy computer science vocabulary. What I didn’t realize, was that I was solidifying my early intuition that software design is a highly creative pursuit, especially if you pursue software design with as much passion as I did.

Computer Science is an amazing field since it’s largely a made up affair. The realm in which our minds play is rarely observable (blinky LEDs maybe) and is always built upon previously invented constructs that are themselves recondite. They’re always inspired by natural occurrences, but then they’re distilled in order to be made useful. I mean, has anyone ever seen a B-Tree in nature. Fractals maybe, but not a fully-balanced B-Tree. And why would a dining philosophers needs so many forks to eat? Besides, who share’s forks anyhow?

Why Software Design Is Important

I mentored an intern five years ago. I really liked the guy, but I was worried for him. Our company was in the middle of a heavy period of outsourcing. All of the typical entry level engineering jobs like testing, bug fixing, and even implementation was being sent overseas. What kind of work was I going to find for this guy if he accepted a position with us?

I spent a lot of time thinking about the perils of outsourcing. It was primarily a result of our labor-intensive waterfall software development process. We had too few efficient tools, and so we spent lots of engineering hours writing and rewriting documents in Microsoft Word and even Framemaker. We couldn’t get anything done, but our army of overnight elves were making quick time of everything, albeit with a reduction in quality. I was even worrying about my own job to some degree.

I quickly realized though, that my domestic colleagues and I were still vital. We were far more creative and our innovation was unmatched. America’s frontier mentality and self-reliance makes us extremely good entrepreneurs and very good software designers. This intern was no exception. I took him out for coffee one day, away from the cubicles and and fluorescent lights. We sat down in comfy chairs with other presumptuously creative types around us and discussed the merits of software design. I gave him case after case of poorly designed code leading to bugs, misunderstandings, and creating maintenance nightmares. We talked about software design working hand-in-hand with wonderful ui design.

Hopefully he took it to heart. I hope he’s not hitting a roadblock in his current job and thinking of jumping off for an MBA with the hopes of landing a biz-dev job like so many of my other friends.

Best Buy iFails with Customers

I was still on the fence about replacing my iPad with an iPad 2. I was honestly holding out for an Android tablet with a Qualcomm MSM8660 chip. When the iPad 2 was announced, I realized that the competition was once again set back by 9-12 months. At 4:15 pm I headed to the Best Buy in the Brier Creek area of North Raleigh, NC.

Best Buy Fail

This particular Best Buy is somewhat tucked away, so I figured the line wouldn’t be horrible. When I walked in, there was a group of people off the the right and then a line through the center of the store. I figured the line was in two parts due to its length. I joined the line at about 15 deep, with another 20 or so in the first group ahead of us.

I guess I was mildly embarrassed to be in line for an iPad 2, so I didn’t ask any blue-shirts for the status. Neither did anyone else. They just filed behind be, eventually growing in total number to around 60-70.

Blue-shirts came through the line exactly twice. The first time was to offer everyone a Best Buy credit card. The second time was at 5:15 pm. The forward line had been mulling about, but our line had not moved. The blue-shirt was letting us know that he “did not know how many iPads they had in stock”, but that we could reserve one for $100 in the event that they ran out.

I decline the offer, but before he could walk away, I asked him what was taking so long. He said their procedure had some kinks, but things were moving now. They had “tickets” to pass out and… “Tickets?” I asked? We were not offered tickets. We had no idea what was going on. “So if we didn’t get a ticket we are likely not getting an iPad?” I asked. He regretfully confirmed.

Apple Wouldn’t Pull That

We walked out, shocked that Best Buy would keep us there in line without offering an explanation, only a credit card application. This is a dramatically different experience from my friends in the line at the Apple Store at South Point. We were exchanging tweets the whole time. When I told them that we were screwed, they took my order and picked one up for me. So yes I waited in line for an iPad 2, I just received it later that night at their place. Thank you, Jessica and Roger.

Mental Focus: An Argument for Modal UIs

For an Operating System / Window Manager Engineer, focus usually means the application in the foreground. The application with focus is receiving keyboard and mouse events. On some systems, only the application with focus can make sounds. Furthermore, the applications without focus may be running at a lower priority, thus receiving less compute time.

Modal / Full Screen UI

In the mobile space, this question of focus is rather straight forward. Displays are so small, that the window manager will display the application with focus on the entire screen. Although I think it’s a bit of a misnomer, more and more people are refer to such as scheme as a modal UI. These modal, or full-screen, UIs have been getting a lot of news lately. Steve Jobs announced that full-screen apps are going to play a more serious role in Mac OS X Lion.

Apple Aperture for Mac in Full Screen

I was a little apprehensive with fear that he was going to dumb down my Mac desktop user experience. I gained more confidence in the idea when I thought about all of the [semi]-pro apps that I use on my Mac that already had full screen modes. I always figured that those apps were full screen to give creative professionals the maximum amount of real estate. Now, I actually think it has more to do with minimizing distraction and allowing for better mental focus.

Full Screen Equals Full Mental Focus

This point hit me late last night. I bought an iPad yesterday. I bought it primarily for leisure computing. I found that my MacBook Pro was constantly in the middle of 2-3 school/geek projects. I tend to just leave things open when I’m in the middle of them. I feel it encourages me to pick back up more easily. What it actually does is stress me out and distract me. I couldn’t even enjoy a cup of coffee and read RSS feeds without wanting to touch up some OpenCL. My idea for the iPad was to get away from a desk and relax a little. I could ignore all of those open projects and relax for a few minutes.

Papers for iPad

That lasted about an hour last night before I found myself downloading class notes and sitting at the kitchen table with a beer for some late night studying. It was really effective too. When you’re working in a modal UI, all you can do is what’s in focus. And if you turn off status updates, you won’t even be bothered by incoming emails, tweets, calendar notifications, etc. I was easily able to stay on task, only briefly popping over to another browser window to look things up.

Apple Might Be On To Something

I’m definitely going to dwell on this some more and make some personal observations about my usage, but I think Steve might be on to something. We’ve long known that multi-tasking hits a point of diminishing returns after two or three tasks. I personally struggle with the constant context switching. Having a modal UI might help me focus on the task at hand, whether it’s studying, coding, or relaxing.

BTW, Google Reader Play is an absolute joy on the iPad. Too bad it doesn’t use my feeds. :(

Bollocks, Steve

I read this earlier: Thoughts on Flash. It’s basically Steve Job’s stance on Flash and, in a sense, his justification of why Apple isn’t going to be supported in Apple’s embedded devices.

Steve Jobs is acting like a [brilliant] spoiled brat with the coolest toys on the block, and he’s been acting that way for years. I hate closed software systems as much as the next guy, but I completely disagree with limiting developers. The engineer-months and capital investment required to make Flash run well and safely on an iPhone/iPad is absolutely nothing compare to the requirement for the thousands of Flash developers out there to port their apps to Objective C and OS X.

Exclusivity Has It’s Advantages. Agreed.

He’s just being selfish by demanding that things run super smooth on his devices. And you know what, that’s his prerogative. They’re his devices, and consumers should know coming into it that they’re getting into a closed system. Luckily, the devices are more beautiful and popular than a homecoming queen, so developers are happily heading to their nearest Apple Store to buy a new Mac, join the for-pay Apple Developer plan so that they can get a key to sign their junk, and put up with the their App Store policies when submitting their apps into a system that can be harder to get into than a night club in South Beach wearing a pair of cutoff jean shorts and Crocs.

But We’re More Open Than Them. Bollocks.

But there’s no reason for him to be bad mouthing Adobe like this, especially with some of his weak arguments. Like his example of how Apple creates open standards for the web:

“Apple even creates open standards for the web. For example, Apple began with a small open source project and created WebKit, a complete open-source HTML5 rendering engine that is the heart of the Safari web browser used in all our products.”

Kudos for Webkit back years ago, but Webkit is not an open standard…it’s an open source project that supports open standards. Thankfully Google’s got their hands on it and made it way faster. Just like Adobe’s Tamarin is an opensource project that runs an open standard (ECMAScript 4), and Mozilla has used it for the basis of TraceMonkey. Sure Apple participates in plenty of W3C standards committees and more, but so does Adobe.

We’re Thinking of You, Developers. Bollocks.

Then later he tries to talk about how Adobe’s CS5 cross-platform feature will bar Flash developers from unlocking the full feature set of the iPhone when they try to build it for the iPhone. And I say if a developer needs those supposed spiffy new features, then he can port his code to Objective C and use Apple’s Xcode. The other (likely) larger base of developers that don’t need those features would likely be very happy to simply use CS5 to build their existing flash-based programs for the iPhone/iPad. But this really gets my goose. He’s claiming that Adobe will be really slow to add support for these new cutting edge features of OS X. I agree that it might take some time…why? Because Apple won’t document these new features until they come out in Xcode. Heck, there are all sorts of secret APIs that they don’t release that the hacker community has found. They had an entire SDK out before Apple even allowed native development for iPhone. But Steve had this to say as his rationale for why Adobe might be slow to release support for new iPhone/iPad feature:

“And Adobe has been painfully slow to adopt enhancements to Appleā€™s platforms. For example, although Mac OS X has been shipping for almost 10 years now, Adobe just adopted it fully (Cocoa) two weeks ago when they shipped CS5.”

Sure Adobe just moved to Cocoa for CS5. Cocoa is their main API (largely GUI) for Mac OS X. This statement basically means that finally CS5 tools will look 100% like other Mac Apps. This act has absolutely nothing to do with Adobe providing access to OS X features for their CS5 cross-platform development tools. It just means they finally spent all the time to rewrite their apps to use Apple’s Cocoa API. I completely support Adobe’s decision for two reasons. Firstly, they’ve got a lot of freaking apps in CS5. It’s an enormous suite. Secondly, their GUI framework allowed them to do a tremendous amount of specialization in their CS5 apps, that isn’t as simple with Cocoa. If anyone here has ever used a pro app on a Mac, then you’ll realize two things. The fonts are tiny and there are buttons, switches, and windows everywhere. Take Apple’s Final Cut Pro. It looks absolutely nothing like a regular Mac app. Heck it looks radically different than iMovie even. Now Final Cut Pro may use Cocoa, but I speculate that it’s heavily modified to go beyond Cocoa for its GUI.

If Steve really had the developers’ best interests in mind, then he’d help Adobe get Flash10 running silky smooth on the iPad. You can make an argument that the iPhone isn’t powerful enough, unless they start using a GHz class processor in it too. If he’s worried about Flash looking crappy, then they should employ some sort of UI mechanism to let users know right away what is Flash and what isn’t when a page is rendered. Perhaps they could include a selective Flash Blocking feature for Safari…of course that would piss off advertisers.

As much as it pains me to say it… There are a lot of Flash developers as well as significant investments out there. Flash has features and an install base that HTML5 won’t be able to match for years to come. So if some hack developers want to write some sort of sorry farming game using Flash and then haphazardly get that app running as an OS X widget, an iGoogle Gadget, a Facebook App, an iPhone/Android/Blackberry/Pre app, a wordpress plugin, or any other piece of computing real estate that users waste their time on…then I say just let them. But if Steve wants to keep Flash off of his devices, then he can. If developers don’t like it, then they can boycott. If users don’t like it, then they can get an Android phone.

Don’t Get Into a Pissing Match

I’ve got no complaints if he says it’s for the users and the preservation of his platform. But don’t claim that this is for developers and to champion open standards. I think the rhetoric in the blogosphere and in the media has really fueled this battle between Apple and Adobe. Apple is playing a ruthless game, and Adobe is doing the only thing that they can. But Apple shouldn’t let itself be drawn out into a pissing match with Adobe over who’s more open or who has more of the developer community’s interests in mind.

Hey, I Use a Mac

This may be about money, marketshare, control, or ego. We won’t know for some time. However, I think a perfectly legitimate rationale for this is that Apple is shunning Adobe because they think the Flash runtime is still garbage on mobile devices. It doesn’t appear that Steve has any interest in making Flash 10 any better, and he certainly doesn’t want anything “ugly” on his beautiful platforms. And as I mentioned earlier, this is his prerogative. I use a Macbook Pro for precisely that reason. The apps always run fast, have great user interfaces, and always work. If someone says they’re an Apple Developer, then you can be guaranteed that they’ve been assimilated to the Cult of Apple/Jobs. Apple has a history of maintaining their backward compatibility for only a limited time and then forcing their developers to update to their new architectures, APIs, etc. It makes for great apps. Frankly I feel that developers should be doing this for the sake of their users anyway. But they don’t…so Steve make them.

Google Voice for Android

I was finally invited to Google Voice a few weeks ago, along with pretty much anyone who had previously signed up. I was mostly just excited to get a local number in my new area code. I don’t have a landline, and I didn’t really want to change my cell number. So for me, the most appealing aspect of Google Voice is the incredibly flexible phone number migration. For a guy like me who works in the telecom space, that’s good news. I can swap phones and SIMs all I want, and have them all ring from the same number.

The Problem With Caller ID
Everything looked cherry, until I had the realization that I couldn’t call people back from these different cell phone and prevent my different numbers showing up as the caller id. You can, however, use the Google Voice website to place a call, which will ring your phone first, then connect to the callee’s phone. In this case, the callee will see your Google Voice number as the caller id and not the particular phone that you’re using at the time.

Google Voice For Android
Although placing calls through a website is cool, it’s still somewhat impractical. Well now Android and Blackberry users have some good news. Google has just released a Google Voice app for both platforms. I’ve got no experience with the Blackberry, but apparently it’s not quite as nice as the Android app based on my read of a TechCrunch article on the Washington Post. Both will let you place calls from your mobile and have the callee see your Google Voice number in the caller id. However, the Android app integrates fully with the phone’s dialer, making it pretty seamless.

Free SMS From Your Mobile
When you set up the app, you can choose to use Google Voice for all outgoing calls, only for international outgoing calls, or for no calls. Once I dug into the app a little more, it made perfect sense why user may not want to always place calls through their Google Voice number. There’s also a strong SMS aspect of the Google Voice service. I can send and receive free SMSs on my mobile now. Of course, the recipient will see my Google Voice number, but to me that’s a worthwhile trade off for free SMSs. Unfortunately, I don’t seem to get the SMS notices as quickly when using them solely through the Google Voice app. If this is a problem, then you can easily go back to the settings for your mobile phone on their website and change it back to the default where Google Voice will forward all incoming SMSs to your Google Voice number as real SMSs to your mobile number.

Final Thoughts
I’m encouraging a few friends to try using my new Google Voice number for calls and SMS for a few days. I’ll see how it goes. If it works out well, then I’ll likely start to switch everyone over to the new number. That’s when it will really pay off. I can start using features like their voicemail transcription service. Goodie!

Tightening Up gdform.php With A Captcha

Disclaimer: I’m no security expert, but it was obvious that gdform.php can be used to annoy the person who receives the email. So this is an attempt to reduce the SPAM that might be sent to that email address.

Like any good geek, I recently put my resume online; not on any of the numerous job hunting sites, but on my own site. At first I was a little concerned about having my personal and professional information crawled by search engines, so I decided to leave my real name and to remove the things like address, phone number, and email address. However, removing the contact information kind of defeats the purpose of posting a resume.

To solve this little problem, I decided to put a contact form on the site.

Contact Form

Problem solved right, not quite. When I went to go write the PHP that would utilize the mail() function to send me an email, I found out that my hosting company (GoDaddy.com) doesn’t support the underlying connection to sendmail that the PHP mail() function needs. This makes perfect sense. Firstly it prevents GoDaddy customers from turning into spammers, but more importantly it prevents GoDaddy customers from writing/using buggy code that can be compromised by a spammer.

GoDaddy.com doesn’t leave you high and dry though. They have a utility installed in the web directory of every account called gdform.php. The first that that you need to do is to set up the email account that you wish to use as a destination of your form emails (GoDaddy howto). Then you need to set up a form that will use it (GoDaddy howto). I used their example and got it working pretty quickly. For testing, I used GET and constructed my own field/value pairs on the URL. I tried this:

http://www.namelessresumesite.com/gdform.php?email=me@namelessresumesite.com&subject=Well%20Preserved%20Meet%20Product&comments=Yummy

This test worked, but the scary part is that anyone can now sent you spam. They could kit that with a cron job using wget about a thousand times a day if they want. Maybe GoDaddy.com has a way of preventing that abuse, but I didn’t want to take a chance.

I decided to protect this PHP script with a captcha. So I visited phpcaptcha.org and tried out their Captcha. I was pretty impressed. It’s really easy to add a refresh button for users that can’t read a particular captcha. And it even has an audio version of the captcha that users can download and listen too.

For my form, I used some simple Javascript to do some client-side validation of the form.

function validateContactForm() {

  if ( (document.getElementById('email').value == '')
       || (document.getElementById('message').value == '')
       || (document.getElementById('captcha_code').value == '') ) {
    return false;
  } else {
    return true;
  }
}

function handleContactForm() {

  if (!validateContactForm()) {
    alert("Please fill out all fields.");
  } else {
    sendMessage();
  }
}

Then I used a little AJAX to submit the form:

function sendMessage() {

  var email = document.getElementById('email').value;
  var message = document.getElementById('message').value;
  var code = document.getElementById('captcha_code').value;

  // Create and send the request
  var oXmlHttp = zXmlHttp.createRequest();
  oXmlHttp.open("get", "contact.php?email=" + email + "&subject=Daveestes.com%20Contact%20Form&message=" + message + "&captcha_code=" + code, true);
  oXmlHttp.onreadystatechange = function () {
    if (oXmlHttp.readyState == 4) {
      if (oXmlHttp.status == 200) {
	if (oXmlHttp.responseText.search(/\|success\|/) != -1) {
	  alert("Message sent successfully.");
	} else if (oXmlHttp.responseText.search(/\|captcha\|/) != -1) {
	  alert("Security Code didn't match. You can hear the code by pressing the Speaker icon.");
	}
	document.getElementById('captcha').src = 'securimage/securimage_show.php?' + Math.random();
	document.getElementById('captcha_code').value = '';
      } else {
	alert("An error occurred: " + oXmlHttp.statusText); //statusText is not always accurate
      }
    }
  };
  oXmlHttp.send(null);
}

You’ll note that I’m using zxml.js, an AJAX library that handles some of the differences between IE and the rest of the world. When I call oXmlHttp.open(), I don’t use gdform.php though. For security reasons, I renamed gdform.php to something obscure and then created contact.php. Here’s my contact.php:

<?php
include_once 'securimage/securimage.php';

$securimage = new Securimage();

print("|".$_GET['captcha_code']."|");

if ($securimage->check($_GET['captcha_code']) == false) {
  print("|captcha|");
 } else {

  $request_method = $_SERVER["REQUEST_METHOD"];
  if($request_method == "GET"){
    $query_vars = $_GET;
  } elseif ($request_method == "POST"){
    $query_vars = $_POST;
  }
  reset($query_vars);
  $t = date("U");
  
  $file = $_SERVER['DOCUMENT_ROOT'] . "/../data/gdform_" . $t;
  $fp = fopen($file,"w");
  while (list ($key, $val) = each ($query_vars)) {
    fputs($fp,"<GDFORM_VARIABLE NAME=$key START>\n");
    fputs($fp,"$val\n");
    fputs($fp,"<GDFORM_VARIABLE NAME=$key END>\n");
  }
  fclose($fp);

  print("|success|");
 }
?>

I used the captcha check to protect the access to the gdform code that I cut and pasted. I also removed the redirect support from that code and opted instead to send by |success| or |captcha| since this is going to be parsed by my Javascript. The last piece to mention is the actual form. It’s pretty straight forward. Even though the form has an action, the onsubmit property returns false and so the actual for action never happens.

<h3>Contact</h3>

<form id="contact_form" class="contactform" action="contact.php" method="get" onsubmit="handleContactForm(); return false" >

<p>
Your Email<br/>
<input id="email" name="id" class="textbox" type="text" /><br/>
Message<br/>
<textarea id="message" name="message" class="textarea" rows="5"></textarea>
Security Code<br/>
<img id="captcha" src="securimage/securimage_show.php" alt="CAPTCHA Image" /><br/>
<input id="captcha_code" name="captcha_code" class="textbox" type="text" size="10" maxlength="6" /><br/>
<a href="#" onclick="updateCaptchaImage(); return false">
<img src="securimage/images/reload.gif" alt="Reload" align="top" border="0" onclick="this.blur()" />
</a>
<a href="securimage/securimage_play.php">
<img src="securimage/images/sound.gif" alt="Listen" onclick="this.blur()" />
</a>
<input class="button" value="Send" type="submit" />
</p>
</form>

Why Being a Winer is a Good Thing

Wine HQ

I’m running Mac OS X and Linux (Fedora Core) exclusively at home now. I finally pushed Windows out of my home last year. (read more) I’d been considering it for a while, but I couldn’t get over that fear that I wouldn’t be able to run important applications.

That’s a fear that many users have, and luckily there are plenty of options. You can dual boot, use virtualization (Parallels for Mac users), or use a virtual machine (VMWare). These ideas still didn’t sit right with me. I was getting hung up on price. There was one thing common to all three approaches: you need to pay the Microsoft Tax unless you plan on stealing Windows. And that tax could get excessive if you’re using virtualization. I really haven’t had a need to run any Windows apps, so I never seriously looked into any of these approaches.

Fast forward to today; I don’t have a single regret. However, I do have a stinking layout bug with my blog for users of IE. I have a strong dislike of Windows, and to a lesser degree most of Microsoft’s software, but I certainly wish no ill will on IE users. I tried several times to figure out the CSS problem with my theme from win Windows XP laptop in the office, but it’s hard to justify working on your blog on company time. So I started thinking about how to run Windows at home again.

Enter Wine. Wine’s an open source implementation of many of Windows’ APIs…and technically that’s all you need to run many windows applications. This makes perfect sense, because windows applications are simple binaries compiled for an x86 architecture and linked against windows libraries. The problem on Linux is that you don’t have those libraries. Well with Wine, now you do.

WineHQ has plenty of precompiled binaries for various Linux distros. I wanted to try this out on my Intel Mac instead, so I found a link to CodeWeavers’ site and downloaded a trial version of CrossOver for Mac. CrossOver is a commercial version of Wine that has been heavily polished and ported to OS X. I was incredibly easy to install and start up (like any Mac app), but more importantly, they make it really easy to install Win32 apps. Many are directly supported by Wine, do I was able to pick IE 6 from a list and it downloaded and installed it for me.

I’m not sure if my needs to run Windows apps are strong enough to pay $59 for CrossOver, so I may let my trial run out. But if I do find a future need for it, I’d rather give them $59 than pay for a Windows XP license and a virtualization or virtual machine environment.

BTW, my problem with the blog was that I had an image that was wider than 450px. That pushed past the width of my center column, and IE forced it to be rendered below the sidebar column. I just reduced the image size…fixed. Thanks to WordPress Support Forum.

Home Decorating with SketchUp

Third Design

SketchUp has been out for some time, but I never got around to trying it out. I guess I’ve seen too many mechanical engineers with their 30″ LCDs and their massive CAD machines. Well SketchUp is about as intimidating as my dachsund. I didn’t realize this until just recently when I found a good reason to check it out.

Like lots of people this year, I got an LCD HDTV. It’s a perfect fit for my small living room, as it takes up far less space than my old 35″ tube HDTV. I’m using this new purchase as an opportunity to really streamline my livingroom and get rid of a ton of junk. I guess this means that I’m finally actually decorating.

That’s where my problems started. I do have some design sense, but I don’t really have a strong imagination for decorating. I’m pretty sure that I want to mount the TV on the wall, but I was have problems visualizing it…mostly because I still have akwardly large speakers.

This is about the time that it hit me. I’ll just model that wall with SketchUp and see how it looks from just about any angle. It really helped. This image that I’ve posted above it a third draft, and I was sure that I’d like the tables in the first two. But once I saw them next to the speakers, they looked like garbage. I’m not sure if I’ll go with this third design, but it’s certainly much closer.

MAMP – LAMP for Your Mac

MAMP does more than just take the L out of LAMP. MAMP is a single package that include Apache w/ PHP and MySQL. A professor recently suggested something called NetServer for Windows, but it left the Mac guys out in the cold. Luckily, MAMP is much cooler.

Both of these packages include decent web interfaces for checking vital stats of the server and phpMyAdmin for configuring our MySQL server. However, MAMP makes use of Expose by creating a simple little widget that you can use to bring the servers up and down.

As far as features, NetServer is a clear winner. It includes a Mail server and an FTP server. This is fine for my development purposes, as MAMP is not intended to host sites. Actually both packages leave the database wide open, and so they probably shouldn’t be used for public purposes unless you tighten up the admin password.

technorati tags:, , ,

Blogged with Flock