Archive for category Geekiness

Good Thoughts for this New Year

“People do not drift toward holiness. Apart from grace-driven effort people do not gravitate toward godliness, prayer, obedience to Scripture, faith or delight in the Lord. We drift toward compromise and call it tolerance; toward disobedience and call it freedom; toward superstition and call it faith. We cherish the non-discipline of lost self-control and call it relaxation; we slouch toward prayerlessness and delude ourselves into thinking we have escaped legalism; we slide toward godlessness and convince ourselves we have been liberated.”

D. A. Carson, For the Love of God, Volume Two (Wheaton, Ill.: Crossway, 1999), 23.

(thanks to Nate Hoeldtke for forwarding this via email)

,

4 Comments

Pricing?

I was annoyed by a recent post to Slashdot. It references an article that makes the claim that the iTunes App Store (which sells applications for the iPhone and iPod touch) is hurting developers because of the pricing model that’s allowed. Basically, the pricing model is open. Applications must be approved before Apple will list them but you can price them between $.99 and $999.99 (or they can be free). Developer’s are apparently whining that with the availability of cheap (usually $.99 applications) it’s hard to support serious development.

Stack of Money by Dani SimmondsThe request is that Apple “do something” to fix this.

This is bizarre. The claim is that because so many free or cheap applications have flooded the market, no one can compete. The analysis looks at cost to bring an iPhone application to market and the expected sales depending on its price.

Maybe the problem is simply that iPhone users aren’t willing to drop as much money as developers would like. Maybe the current glut of free and cheap apps is a poor anticipation of actual demand by the developers. Some developers made free apps, sold the idea and hooked users and then migrated to $1 or $5 applications. These developers are making SOME money. Maybe not a lot, and maybe the iTunes App Store will never be a lucrative business for developers (although Apple seems to be doing quite well).

The success that small programming outfits have had is that they can leverage a nice API to work with that users can use in novel ways. At $1, many users are willing to buy without recognizing a brand name or being suspicious of a poorly made product. For independent software developers, this is probably enough to pay the bills. For larger products, the source of income is likely to be in the form of some integrated service (free iPhone application that interfaces with a $40 desktop application).

I don’t see the dilemma. Isn’t this what the free market is all about? If customers aren’t willing to pay $20 for most applications for the iPhone, maybe developers shouldn’t make them. On the other hand, if developers really can make a much more complex product with almost universal appeal, then even pricing it at $1 or $5, it will almost surely pay for the higher development costs. This is the way the world works.

, ,

4 Comments

Cell Phones

Well my new position has been keeping me busy writing software for Symbian, Nokia’s primary phone operating system. I hate it. It’s fun to learn new stuff and it’s probably a good thing to be learning. But it’s still awful. Documentation is terrible. Developer forums have lousy support. Two unique programming elements: descriptors and the cleanup stack just make life agonizing.

I’ve never appreciated C# so much.

On the bright side, it’s drawn me back into C/C++ coding which I haven’t done in years. That part is fun. It’s funny how many things I take for granted with C#. I’ve even gotten lazier considering some of the wonderful upgrades to C#  3.0. For example:

List<string> list = new List<string> { "Susie", "Lucy", "Bobbie" };

This makes sense to me. It’s easy and straightforward. It saves [development] time.

At work things have been interesting because I’ve been working with developers firmly set in an embedded mindset. They think in terms of saving bytes. My .NET programs take up 20MB of RAM just in basically displaying a simple window with a few controls. It bugs them.

I don’t know — I see the point of using assembly, C, even the horrible descriptors of Symbian for situations where you are highly concerned with efficiency. However, it does seem that you’re going to be forced to spend more development time (by a huge amount) and the code will almost by necessity be much more difficult to maintain. When there’s no clear single way to convert a descriptor to a char * every developer will do it differently and the code will be more and more complex and incomprehensible. It might run fast, but it’s not flexible.

In the world of mobile development, optimization for speed seems important but if you take 6 months to update your application when new feature sets become available, your product likely isn’t selling.

Along these lines of thought, I’m considering pouring a bit of time into iPhone development. I’ve always shuddered at Objective C but I need to bite the bullet and get into it. My assumption is that I’ll be happy with it since from what I’ve heard it balances maintainable,  understandable and easy-to-write code with reasonable performance/stability.

I’ll keep you posted.

, , , ,

2 Comments

Coding Well

I don’t usually do this, but here’s a verbatim excerpt from a post on LifeDev that I just love. Having goals in the pursuit of software engineering and design is a good thing. I’ve heard most of these expressed before but not as well as this. (original post by glen on July 23rd, 2008)

Programmers are a great example of thinking outside the box because, well… programmers can actually create the box. Here are some of the ways that we can learn from programmers on how to boost our creativity.

1. Learn a new language

Programmers are constantly learning new languages, either for fun or necessity. Don’t limit yourself to what just what you know and are comfortable with. Branch out and learn a new skill.

2. Start from the ground up

If you’re going to write software, you can’t just start halfway through the project. You have to start at square one. Sometimes this is the best way to find a creative solution for a problem is to go back to the beginning and work forward.

3. Question everything

Questioning everything means taking every assumption and making sure it’s correct. All programming starts with making the most basic assumptions, and then building on those basic assumptions. If something is wrong with the code at the base, then the software isn’t going to work well at all.

Sometimes creativity is limited by assumptions. New solutions arrive when we tear down assumptions and start with fresh perspectives.

4. Do it for fun

If you know any programmers, they’re constantly building something. Even when they’re done for the day on work-related projects, they’ll spend hours of time working on fun projects for themselves. Their work is also their hobby.

Continually mulling over new ideas and solutions is something that shouldn’t be a chore. It should be something that you find yourself doing constantly, like a reflex. And it should excite you.

5. Never stop testing ideas

Programmers are constantly benchmarking code to make sure that it’s as efficient as possible. Even the smallest change can bring a program or Web site to it’s knees, so constant testing and improvement is important to any bit of software.

Ideas should be tested rigorously and refined on a consistent basis. Your ideas will change over time, it just depends how much. Constantly evaluating them and just plain thinking them through is a great way to “benchmark” your idea.

6. Find a passion

If you’ve ever spent more than two minutes talking with a programmer about his work, you’ll find out very quickly that programmers have a passion for what they do. They eat, sleep and breathe programming.

Do you have a passion for your ideas and projects?

7. Master your tools

Programmers constantly improve their knowledge and usage of their tools. A great coder keeps tabs on software and is constantly finding ways to improve his usage of them. You’ll seldom find a programmer who doesn’t tweak his toolbox regularly.

No matter what your skill set, you’re limited to your skill with the tools you use to create. The more of an expert you are with your tools, the more you’ll be able to create.

8. Start making abstract associations

The people behind projects like Skype, Google Docs and Twitter all have one thing in common: They fused seemingly abstract concepts together. Taking what-ifs and testing them is a great way to start thinking of things in a different, more creative light.

9. Think of structure as a tool, not a limitation

People associate creativity with taking a giant, blank canvas and letting our ideas flow without any sort of limiting structures. However, there’s a huge problem with this type of thinking: It’s a great big creativity myth.

See, limitations are everywhere. We can’t avoid them, we can only hope to work with them. A programmer embraces the limitations of his programming language or tools and works around them. These limitations help him as they make a foundation to work from. Sometimes discovering a new workaround will lead to an even bigger idea. Necessity is the mother of invention.

10. Don’t rule anything out until you try it.

Your kindergarten teacher was right: There is no such thing as a stupid question. If you’re adhering to #3 and dismissing all assumptions, you can’t be certain it’s not going to work until you’ve tested it. How do you know it won’t work unless you try it? You might be surprised. Even if the proposed solution doesn’t work, it may help you find a solution.

Sometimes it’s just best to start with a prototype and try it out. If your prototype doesn’t work, then trash it. If it does, you’ll have stumbled upon something that just might work.

11. Always look for a simpler and more elegant solution.

A good programmer is one that understands that finding the simplest solution is always going to be better. Complicated solutions lead to… complications. A practical approach to programming always works best in the long run.

Our ideas sometimes become too complicated. We get caught up in the novelty of the idea that we ignore how practical it really is. The simplest way to solve a problem is often the best way to solve a problem.

12. Don’t be afraid to build off the code of others.

The beauty of the Internet is that the solution your looking for has probably already been done by someone else. When building a new site I almost always use pre-existing open source code. Why recreate the wheel?

Putting a great idea into motion doesn’t mean you have to start from scratch to create it. Use existing ideas and turn them in to something better. Sometimes a great idea is only modifying something that’s already been done. Gmail is a great example. They “reinvented” email by adding useful features to traditional email.

13. Don’t be afraid to collaborate.

Some of the best coding — or any creative projects for that matter — are done not just by one coder but by many excellent people inspired to work toward the same goal. Assemble a great team, use the most brilliant ideas no matter who they come from, and let everyone contribute.

14. From the very basic, create the beautiful.

Programmers often use some very basic code over and over, and while those small bits of programming language aren’t necessarily beautiful in and of themselves, they can come together to create a final product that is amazing. No matter what creative project you’re working on, pay attention to the details, but most especially pay attention to the effect those details have on the overall picture.

, , ,

No Comments

CrossOver Chromium

I was pretty bummed when I saw that Chrome (Google’s shiny new web browser) was Windows only. But yesterday afternoon, I was amazed to see that the folks at CodeWeavers had already ported it to Linux and OS X. It was a proof-of-concept porting, but still extremely impressive. Especially when you consider that they pulled it off in 11 days and the thing actually appears to be fairly stable.

CodeWeavers isn’t calling it stable yet, but to me this is a huge step forward with Windows and Linux/OS X integration. I’ve tried it for OS X but not for Linux yet… Here’s the link.

1 Comment

Fun With Video

Think Photoshopping people out of pictures is pretty high-tech? This video-processing technology is amazing… (from Centripetal Notion)

, , ,

3 Comments

What’s new

Well. It’s been ages since I’ve posted. Things are really busy here in Puyallup. Here are some accomplishments:

  • Got a feeling of smug satisfaction when it took me less than 30 seconds to upgrade ALL of my WordPress installations to 2.6 using my new fancy script despite the fact that it took me almost 3 weeks to notice that there was an update out.
  • Enjoyed a nice, calm hike up to the Enchanted Valley on the Olympic Peninsula and a hurried, blistery trek down. Enjoyed the time with a good friend, enjoyed testing out some new hiking/camping equipment, and enjoyed getting back.
  • Went on a very relaxing trip to Victoria w/ DW for our 5-year. Despite our 5-mile walk we still never found the Wal-Mart.
  • Forgot to update my blog.
  • Bought some fun and exciting books for .NET 3.0 and 3.5 (and LINQ and some other fun things).
  • Got the yard into working order only to have it mangled the one week I hire someone to mow.
  • Ordered a bunch of books, received a box-load more of hand-me-downs but barely had time to even read the titles let alone the actual contents.
  • Forgot to update my blog.
  • Set some new objectives in life (sort of medium-length goals — the next few years).
  • Planned travel for more D.C. trips for work and the first actual D.C. “vacation” that I’ll have taken so far.
  • Helped the wife with her burgeoning online business.

Lots of stuff. I’ll post with real content later. Maybe.

3 Comments

I’m getting old…

Today on the way back from work I stopped at the wonderful oasis of Fry’s. I was kind of stressed out from a long and not terribly rewarding week of work and I figured that for once I’d actually just buy a game.

Well, I ended up with two games! I drove home, slightly faster than usual. After some much-needed mowing in the back and dinner I figured I’d get down to installing them. But wait, the computer I intend to install them on is in pieces after I’d tried swapping some parts around. 45 minutes later it’s all assembled (I had to reattach the motherboard and everything) and booted it up. But wait, I had Ubuntu on these disks, not Vista or XP so I’ve got to install the wonderful Microsoft product before I can start. Vista installs quickly (I was actually sort of impressed. But not that much.) But wait, although the video card is detected and installed, the audio drivers aren’t. A hardware scan doesn’t even see them I power off and pop in a spare sound card that I have lying around. The audio drivers get installed and the game begins. I start with the tutorial. Patrick (who has been very patient this whole time) is interested. He especially likes when the guys I’m controlling open fire on an opposing team. Explosions, gun fire, this is great stuff. We finish up the tutorial and start the first mission. Within 30 seconds the sound card starts crackling and 10 seconds later the sound dies. I check the connectors and then check the software settings. When I try to save the software settings, the game crashes.

So, despite being home by about 7:45pm, it is now 11:45pm and I’ve barely even started playing the game since I’ve been too busy working (again). How depressing.

The worst thing is that the game felt a little confusing and difficult (I’m sure it’s not — it’s just me getting old). I’m pretty sure that Patrick understood it. If I’d let him, I’m sure he’d be on there for the rest of night.

Or maybe the worst part is that I just spent the last 10 minutes writing this blog entry. So much for crazy wild 7+ hour gaming sessions. I’m lucky if I can clean out my inbox.

I’m exhausted. Time for bed.

, , , ,

1 Comment

TechEd 2008 Orlando

This is my second post to Illusory Follies, and I wanted to extend my thanks to Andrew for allowing me to post on his blog, Thank you Andrew.

This year TechEd was again in Orlando, FL. For the first time they split it up into two weeks; the first for developers and the second for IT Professionals. This was my third TechEd (I went to San Diego in 2004, and Boston in 2006. I guess I only hit even years).

The keynote was interesting. It was delivered by the man himself; Bill Gates, and was his last one as he retires July 1st. There was a funny video they put together called “Bill’s last day” that was rife with cameos of everyone from Jay-Z to George Clooney to Steven Spielberg and a workout session with Matthew McConaughey. The rest of the keynote talked about Internet Explorer 8 (due in August), Silverlight Beta 2 (releasing this week at TechEd), VS2008 extensions for SharePoint, to name a few. This link has video of the keynote if you want to watch it, and several other blogs have details of the keynote, so I won’t repeat them here.

One other new thing they did this TechEd was not to provide bottled water. Apparently Microsoft is going green and as a result of thousands of empty water bottles going into the landfills in previous TechEds they decided this year to give everyone a nice refillable bottle to carry around with them, and provided water dispensers throughout the convention center. There was no shortage of water available, and they still had soft drinks and juice. At first I was apprehensive as I love my bottled water, but after a few refills I adapted to the idea, and rather enjoyed being able to refill anytime I wanted. Green is a good thing after all.

Another thing I noticed was the lack of snacks. In past TechEds there were tables throughout filled with fruit, granola bars, chips, etc., things to boost your energy throughout the day. This year, not so much. Around 3 PM or so they started rolling out some popcorn and a few snacks, and some fresh baked cookies (they baked them right at the table in little easy bake ovens at around 6 at a time). Of course there were 200 people waiting in line for their shot at chocolate chippy goodness (I happened to walk by a table just as they put some out and snagged one, they were warm, chewy, and indeed delicious).

Breakfast and lunch were decent as they usually are. They had their selection of fresh items, cereal, yogurt, eggs, bacon, bagels, etc. For lunches they had salads, and the prerequisite starches, vegies, and meats. The convention center employees took their jobs way too seriously though. Their job was to usher the TechEdies around like cattle, and they did it well. They stood shoulder to shoulder in lines to make sure no stray geeks escape the herd, imaginary tasers in hand just hoping for the lone non-conformant to decide they want to get their food from “this” table instead of “all the way to the end”, as though they were told if anyone allowed a nerd to wander, they would be docked a day’s pay. On two occasions my colleague and I defied them and stood in a line we were walking by, they weren’t quite sure what to do, so they frantically yelled to everyone else, “All the way to the end!” in hopes others wouldn’t revolt as well. Most were compliant.

At the keynote Bill commented that the developer week was more successful than they had anticipated. They estimated around 3000-4000 would register, but instead it was more than 6000. Yet, without the additional IT people around, it seemed more like the last day of a traditional TechEd, where most people have jumped on their planes home, and the remaining stragglers are wandering around searching for scraps of techie treasures left behind. There just weren’t as many people as I am used to. Also, to me, it just seemed like there was not a lot of excitement this year (maybe it’s the missing IT people, I don’t know, maybe it’s just me), it just seemed like something was missing this year. Although, the last couple days did seem to pick up in the energy level a bit. I guess it makes sense though, as traditionally developers are more low key, and IT people are more intense.

The breakout sessions I have gone to were mostly full, as I obviously picked the same topics everyone else did, and every room I have been in was extremely warm. A couple of the sessions that were so full they were standing room only, however, the over zealous room monitors would not allow anyone to stand this year, as the fire marshal may pop in any time and shut down the convention as a fire hazard. I was tossed out of one room as there were no more seats available, and I wasn’t allowed to stand in the back. As a result, I spent a fair amount of time in the Hands On Labs this year, and happy I did, I learned a lot about Silverlight and Windows Presentation Foundation as a result. I must say, the HOL were my favorite part. Other than a fairly slow network (at one point it took 20 minutes to restore a saved session), the labs were done very well. And there were no shortage of helpers around to assist and train. Well done on the labs MS.

A couple years ago I tried my hand at Windows Presentation Foundation development using XAML, and while it was interesting, everything was manual (i.e. you had to edit the XAML files directly). In VS2008 however they have built a XAML designer, and it’s pretty nice (except you can’t sort properties yet). In addition, XAML has Intellisense! If that wasn’t enough, they have added Intellisense to Javascript for Silverlight 1.0. Also, they added Ruby to the .NET family, and it also has Intellisense (see here)


Silverlight 2.0 beta now has the ability to use the .NET code, so you can develop in C# or any other .NET language, which is pretty cool. I went to a couple sessions about Silverlight 2.0 and media, and it looks like it will be pretty easy to create very robust web sites with great controls and media capabilities.

Other areas of focus for many have been on the new Visual Studio 2008 extensions to SharePoint, Microsoft has created a web site here that gives details.

So, was it a good TechEd? I think it was actually. While it felt more empty without the IT people, it was a pleasant change not having to compete with so many people. I like the Orange County Convention Center (MS must too as they did it two years in a row here). It was laid out just right, easy to get around, Breakout Sessions were all grouped together (unlike San Diego in 2004, where everything was on opposite ends of the center from each other), and the ambiance was very nice. TechEd 2009 will be in Los Angeles.

Also, with the time I spent in the labs, I really have a new appreciation for Silverlight. I came in not really knowing much about it, and now am excited about creating a few Silverlight projects. Also, I met some great people this time as well. With all developers this week, there were more like minded people to interact with, and isn’t that what it’s all about, finding like minded people to connect to?

,

3 Comments

Pizza without the GUI

Well this is priceless… Someone has written (apparently a while back) a console-based front-end for Domino’s QuikOrder web-based system allowing you to order pizza with a simple command-line. Here‘s the site. Here’s an example of a command to order (this assumes that you have initially set up an account with Domino’s):

pizza_party -p -m 1 medium

This will order 1 medium pizza with pepperoni and mushrooms.

But just think of the options… you could plug this command in as a cron-job and run it daily (or even multiple times a day!) More pizza quicker and even less human interaction! What’s not to like??

Update: Users beware! There’s a multiple vulnerabilities post on Insecure.org!

2 Comments