Monday, March 26, 2012

You can X...if you X

A friend posted the blog post You can draw...if you draw and I think it is so good I'm going to talk about it!

Replace X in the title with anything you want to do. The Missus and I are in the process of teaching this to our 5 year old using the violin. 3 minutes a day for the last 6 months and she can now play at talent shows at school. She didn't believe us at first. But now she is well on her way to being able to play the violin as good as her Grandpa; with lots of practice. Practice practice practice.

I learned how to ride a unicycle 2 years ago. Now I mountain unicycle all over the Santa Cruz mountains. I hear from people all the time "I could never do that". It turned out to be such a good workout the Missus picked it up, my sister became addicted and our 5 year old is learning as well.

I do think some people are inherently more skilled at certain things, but that doesn't mean with practice and perseverance one can't do anything they set their mind to. Honestly that's one of the reasons I get so annoyed at the current hiring practices for software engineers and alluded to in this post. I've interviewed countless people who I think could do the job. And the question usually isn't "are they smart", the quest that should be answered is "are they a team player". I'd rather have a whole bunch of average people that can learn and work as a team than a couple rock stars with a complex.

So what is it that you want to learn to do?

Thursday, March 8, 2012

New iPad

My take on this is the resolution is pretty awesome, but other than that I see no reason for original iPad or iPad 2 owners to upgrade. Especially since the weight has increased. As far as I'm concerned the size of the battery should have been reduced to decrease the weight. However, if I were buying an iPad today I'd have to go for the new iPad 32GB because 16 fills up rather fast, but that makes it a $200 price increase which is pricy.

By the way, I picked up the "YOOBAO Red Genuine Leather Slim Case Portfolio Case For Apple iPad 2" and it's really nice.

Monday, March 5, 2012

Monitor

It seems that dual monitors has finally hit the mainstream. Article after article comments on research that people are more productive with dual monitors than with one monitor. I really dislike dual monitors. Sure, it's more productive, but nobody ever mentions the whiplash one can get from using the off center monitor too often. No, I prefer one big monitor with a high resolution for most tasks. 24", 27" or 30". I think if they went back and did their research with everyone running a 30" monitor they'd find people are even more productive than with dual monitors. The advantage is price. Small monitors can be picked up for a few hundred bucks while a very large high resolution display is considerably more. But once you factor in the chiropractic bill I'm sure the savings would more than justify the large monitor.

Note: I am in no way benefiting from you buying a large display from the likes of Dell, Viewsonic, Samsug, LG, etc.

Tuesday, February 28, 2012

Bret Victor - Inventing on Principle

Yesterday I posted a little bit about what our ideas of a software developer are. Here is a video that is along those same lines. I warn you, the video is a little long, the concept and analogies are a bit odd but it's still worth watching:

video

Monday, February 27, 2012

What Makes a Good Software Developer

I've been thinking more about the video I posted the other day. It's a good video about what it's like to be a software developer; The current standard for what makes a good software developer is a person that is good at playing computer in their head. Software engineers have to be able to visualize code and data structures in their head, twiddle bits in their head while taking into account the constraints of the particular data type. Interviews are geared toward this mindset. Developer tools support this. We have all become complacent.

There are those who are very good at these things I mentioned above and there is nothing wrong with that. I just have a lot more important things to think about than play computer or to do hex math in my head. That's why we have computers. I like to think that there is room for different kinds of software developers. And I think the tools are still not quite there. Development environments such as Delphi, C++Builder, Visual C# and even Visual Basic are the best development environments that I've used. I haven't used every environment out there but I've looked at a lot of them. There is a reason developers using these environments consistently write applications faster than with any other programming language and environment. The paradigm and environment support quick prototyping without having to play computer in your head. So the bar to become a developer is shifted a bit to support less traditional software developers and different kinds of thinkers. The approach and ideas these people can bring to the software world will only make it better, but for that what we all need to expand our view of what makes a good software developer by changing the interview process and making better developer tools.

Wednesday, February 22, 2012

So You Want to be a Developer

This is a great video on what it's like to be a software developer.

http://penny-arcade.com/patv/episode/so-you-want-to-be-a-developer-part-1

Wednesday, December 21, 2011

Thom on Windows 8 using Delphi

Thom has some great preliminary information on Windows 8 using Delphi. Check out his blog here

p.s. COM will never die.

Tuesday, December 13, 2011

Delphi Mac file system helper functions

I still have a few Delphi posts in the queue that I've been going through and cleaning up. Now that Delphi Mac support has shipped, there were a couple RTL functions that I wrote that may be useful to some people out there interacting with POSIX.

StringToFileSystemString (Mac only)
FileSystemStringToString (Mac only)

Mac stores file names internally as decomposed UTF-8 strings. This means that the diacritic will be a separate character after the character the diacritic is applied to. This is different than other POSIX platforms or Windows. Because of this all strings that are returned from file system functions need to be translated to a Delphi UnicodeString for use with the rest of the application. StringToFileSystemString and FileSystemStringToString will convert between a UnicodeString and a UTF-8 decomposed string.

Friday, November 18, 2011

Delphi Post Build Process

I was just going through the many posts that I haven't posted for various reasons and here was one that I found that someone may find interesting concerning Delphi XE but it should apply equally to Delphi XE2.

Since the beginning the EXE was build in the project directory right next to the .dpr. Now it lives in [Project Name]\Debug\Win32\[Project Name].exe which causes problems with my muscle memory at times so I've added a post build process to create a symlink.

Thursday, November 17, 2011

Review: Bose Noise Canceling Headphones

I've had a pair of Sony MDR-V6 headphones for years. Although according to price the Sony MDR7506 headphones are a little better. But I digress. In March/April 2010 Embarcadero moved the Delphi team from the old Borland facility to an older office building in Scotts Valley. Once we got in there it turned out the fan for the air conditioner/header was super loud. So loud I couldn't discern the difference between going to the office and being on an airplane. Seriously, it was that loud. I first tried out my iPod ear bud headphones because I had them in my bag but had to crank the volume to hear anything. And let's face it, the only thing going for ear buds is convenience because they are so small and fit in your pocket. So I tried my Sony MDRV6 headphones. They were better but not by much. The dull roar of the fan was still there. So I started my pursuit to find a good pair of noise cancelling headphones. After many failed attempts of trying out bargain priced noise canceling headphones from Radio Shack (The new "The Shack" name makes me laugh) and the like I decided to try the expensive ones. I tried out almost all of them and can tell you with confidence that the Bose QuietComfor 15 Noise Cancelling headphones are awesome. If you have a need for noise canceling headphones these are the ones to get. You will only be disappointing with the nearly three c-notes you'll pony up and the occasional AAA battery it takes to run them. We take them on flights and everyone fights for who gets to wear them they are that nice! If you fly, definitely get yourself a pair!

Thursday, November 10, 2011

The Etymology of the Word Geeks

I guess the link is gone. Bummer. It was funny!

Wednesday, November 9, 2011

Clever Code

Every once in a while I run across a bit of code that I find rather clever and I examine it to see if I like it or not. Really it's to see if I ever want to keep it around for my bag of tricks. Sometimes the code is a nice design pattern or sometimes it's rather small, like today's clever bit of code. Today's clever bit of code is this rather simple loop written in Java, but it'd work just fine in C or C++:

  int i = list.size();

  while (--i >= 0)
  {
    list.remove(i);
    //..do something
  }

At first glance I kinda liked it. Simple, elegant does the job in a few less lines than I would have written. Here's is probably what I would have written:
  int i = list.size();

  while (i >= 0)
  {
    i--;
    list.remove(i);
    //..do something
  }

Now after thinking about this bit of code I've come to the conclusion after trying it under a few different C compilers and the Java compiler, I don't like it. i is evaluated then no matter what in all the cases that I tested i is decremented. Not a huge deal, in this small example i will always be in a register, but if the body of the loop contains a bit more in it like the one I was looking at then there's a couple extra mov instructions generated as well.

Am I being picky? Yes, yes I am. I'm not always this picky. I prefer readable code to optimized code, but in this case I don't find it more readable and it is less optimal.