Corner of Seven Helping Tech and People to Get Along

28Jan/101

Why Apple Chose iPad

As everyone is quite aware, Apple's release of their tablet, now known as the iPad, was announced yesterday.  With their own System-on-a-chip processor, near-10" screen, and storage sizes ranging from 16-64 GiB, these pieces of technology are impressive at their price point, even for a non-macHead.

However, the overwhelming response to the announcement yesterday was that of its name: "iPad." Throughout the afternoon, the 2nd-highest trending topic on twitter was 'iTampon,' a not-so-subtle play on the name. Many jokes set in along the same lines:

http://www.fastcompany.com/blog/alissa-walker/designerati/apple-ipad-name-not-winning-women

http://bits.blogs.nytimes.com/2010/01/27/the-ipads-name-makes-some-women-cringe/

http://online.wsj.com/article/SB10001424052748704094304575029603030082186.html?mod=WSJ_Small+Business_sections_management

This led people to question: "Who in their right mind would use this name?  Especially considering this MADtv Clip?"

Others: "Were there NO women on Apple's naming board?"

Personally, I think Apple knew EXACTLY what they were doing.  It thrives off of the idea that "any publicity is good publicity." Everyone now has the name iPad stuck in their mind, even if it was because they heard it in a joke somewhere.  They know what the device is, and they knew about the MADtv sketch.  As these things get passed around more and more, it will create more interest in the actual device.

On top of that, Apple's fans are the some of the most extreme technology followers, even worse than Stallman, et. al. in the GNU/Linux world. These people, who would buy the device anyway, coupled with the tech world, who is actually impressed with the functionality, makes me think that even with the interesting choice of name, they've still got a hit on their hands.

26Jan/100

Resume Available

Hello All -

I put my resume up for availability as I'm not quite certain how much longer I can stay at my current job.  I'll be looking around for things to work on in the Dubuque area, so if anyone knows of any open positions, please let me know.

The resume itself can be found here, or just use the link at the top of the page.

22Jan/100

DNN Module Creation, Explained. (part 2)

Let's assume for the sake of presenting this, that you have a copy of SQL server Express 2008, and Visual Studio 2008. Not that this is the only system you can run DNN on, but the only one I've ever tried doing this with. Once finished, we will have an instance of DNN running, and the default compiled module, with a LINQ Data Access Layer added in Part 3. Thanks to Mitchel Sellers for his description on how to build DNN modules here: http://www.mitchelsellers.com/blogs/articletype/articleview/articleid/179/developing-a-c-wap-module-in-dnn.aspx .


  1. Get a copy of DNN. We can't really use it without getting it, now can we? From this page, pull down the Visual Studio starter kit. After installing, you should be able to build DNN sites and projects from Visual Studio.
  2. Create a new Web Site project. Open up Visual Studio, and create a new Web Site project (WSP). Make sure that 'Visual Basic' is chosen as the language (don't worry, you won't have to write much VB), and choose 'DotNetNuke Web Application Framework' as the project type. Give it a place to live, and verify that everything looks right: Site Creation Dialog
  3. Build. The site comes ready to go out-of-the-box, so either hit 'Start without Debugging' from the 'Debug' menu (thanks VS), or press Ctrl+F5. After building, a browser window will pop up, and you will be face-to-face with the DotNetNuke Installation Wizard: DNN Install WizardClick on the "Auto" option to have the site automatically set up a SQL Server database file, and default administrator and host user credentials. NOTE: If you don't have the "Auto" option selectable, because of a SQL Server error (it'd show up in red on the bottom of the screen), something's up with your sql server install. Either hand configure your server (outside the scope of this tutorial), or fix SQL Server (also outside of the scope of this tutorial).
  4. Open a new instance of Visual Studio. There might be a better way around this, but I haven't found it yet. The instance holding our web site project needs to stay up, so we keep the web site running.
  5. Create a new Compiled Module Project. In our new instance of VS, go to 'File -> New -> Project...' Pick your preferred language (I'm going with C#), and under 'Project Types:', select "Web." In the 'Templates:' window, under My Templates, select DotNetNuke Compiled Module. Give the module a meaningful name. IMPORTANT! Follow these next steps TO THE LETTER, or this doesn't work. Make the project's location point to the DesktopModules folder inside our web site, and DESELECT the checkbox that says 'Create Directory for Solution'. It should look something like this: DNN Module Creation Finally, Create the solution by pressing "OK".
  6. Run the database script. One of the files created along with the rest of the Compiled module project (or WAP project) is 'xx.xx.xx.xx.sqlprovider', where the xx represents a version number. This script generates the SQL tables and stored procedures for handling the new module. We need to run this so our Data Access Layer has something to access. In the web site, log on as host, with the default username and password 'host' and 'dnnhost'. Once logged in, go to the host menu, and find SQL. Copy the contents of the sqlprovider file, and paste them into the text box. Important: check the box below the text box that says "run as script." This allows DNN to replace generic pieces in the script with their specific counterparts provided by DNN. Run the script by pressing 'Execute.'
  7. Install the module. In the website, go to host->Module Definitions. From here, at the bottom of the page, there should be a link that says 'Create New Module'. Click that, and this menu pops up: Module Creation Page in the Dropdown, select 'Manifest', and the page will reload, with more options. Under Module folder, select your module, and the page refreshes again. a modulename.dnn file should be in the 'resource' dropdown. Hit 'create module' to put the module into your website.
  8. Hope that this helped anyone needing it.

22Jan/101

DNN Module Creation, Explained (part 1).

Since I haven't shown up here for a while, I should talk a little bit about what's been going on in my life. I'll keep it short.
December: Left my job in Rock Island, was in a musical at Quad City Music Guild, Found a job in Dubuque at 365Advantage, lived in a suitcase until I found an apartment, worked on mobile phone development.
January: found an apartment, continued phone development until our other two developers left, was told in a week to learn DotNetNuke module development.

So here we are.

I've had some consternation in trying to figure this framework out (I come from the Java n-tier and Ruby on Rails MVC worlds). The biggest is getting my head around WebForms. For some reason, carrying state of pages between each other seems dirty to me, compared to handling everything by referencing the entities themselves (a la REST). I've even googled it:
Turns out that's not how they do things in the DNN world.

Through some aid via the book Professional DotNetNuke Module Programming and the books author, Mitchel Sellers, I think I've slowly gotten a hang of the basics.

On the face, DNN is a CMS. Compare a default install with something like vanilla Radiant or WordPress. But most people forego that aspect of it, and use the portion of DNN that they've become known for: pluggable modules.

You would think that a system that was built to be completely modular would make it easy to build modules, right? I WISH. Maybe it's just me, but I shouldn't NEED Visual Studio, SQL Server Management Studio, and some magic to build a module. Then again, I come from Java and Ruby, where I'm not tied to an IDE. DNN Module building requires it, though.

Now that I've finished complaining, Part 2 will demonstrate how I've managed to get around this, and use the services that .NET provides (like LINQ to SQL) to make DNN Module building as painless as possible.

10Nov/091

Quandary (part 1)

I wish to pose a question to the masses, particularly to other available software developers. Take this statement:

"The more screwed up the process, the longer you have a job."

How does that make you feel? Does it bother or amuse you? Would you feel uncomfortable hearing it from a coworker? A boss? When does the statement cross the line, if ever? As a programmer, you strive to produce the best product possible. When is there a "good enough" point? If something is broken, but acceptable, is that ethically capable of being released? Is a project that has no (unit, acceptance, ui, etc.) testing capable of release?

Let me know in the comments.

(PS: wrote this post from my Motorola Droid, which I'm having an absolute blast with)

3Nov/092

RbEQ update

Not really an update of the software per se, just letting everyone know I haven't forgotten about it. I have two computers at home; one desktop mainly purposed for gaming and general usage, the other is an older, low-powered notebook that I end up doing most of my development on. In the past few months, things have slowed down with rbeq because both of those systems have been outside of the GNOME environment. That's right, I've moved to KDE4. I know quite a few people who find this odd, but it's because of the new direction that GNOME is taking with G3.0, and I don't necessarily want to be a part of it. I know some of those on the team, and I wish them the best, but the new changes, like Gnome Shell, frighten me off, like the initial releases of KDE4 did for me. I was a long time KDE3.5 user, and when they took the plunge, I got off of the boat. Things have been settling in nicely now at KDE4.3, which I'm running on Kubuntu 9.10.

That being said, I saw that someone was having trouble with the recent release of Ubuntu, and so I thought, as maintainer, I should, well, maintain. :) I've got Rhythmbox pulled down onto the laptop, and I'll throw a couple of songs and the plugin on there, to see how everything behaves. Hopefully, there should be an update with some added functionality (saving and loading preferences was a big request) by the end of November.

31Oct/090

Eclim and Android

Since deciding to start working with Android and see just what I would be able to accomplish with the SDK and devices, my biggest hurdle so far has been Eclipse.

Now that most of the Java developers have now either cringed, cried, or shot themselves, I'll explain why. From the outset, I have never liked Eclipse. Something about the way the program is presented, coupled with the fact that I could never seem to get it to act the right way (either something was going haywire, or breaking, or the IDE would crash in front of me). During college, there was a brief push to get us to try Eclipse, and that's where my dislike of it began. We were moving from BlueJ (which, although it serves as a nice Java text editor, doesn't really count as an IDE in my mind) to Eclipse, roughly around the same time that Netbeans 5.0 was coming out (late 2005, for those keeping track). Once I started working in Netbeans, I saw no reason to move back - things behaved when I asked them to do something. When I made a new class, it automatically put it in the right package (Eclipse: Default package? What?), When I added a wsdl reference, it allowed me to edit it on the fly, and auto-generate the interface class for me. It was perfect for any big Java job I needed. Anything smaller, and I'd drop to a text editor, like KDE's Kate, or vim. I essentially lost any reason to go back to eclipse.

Fast forward 4.5 years. Android is coming out big. I mean, Really Big.Phone announcements like the HTC Hero, Motorola Droid, and Sony Ericsson XPeria X3 have captivated the tech world, and even some people outside of it. It's around this time that I decide to buckle down and really start on some Android development (it gave me a reason to buy a new phone, too, but that's beside the point :) ). Unfortunately, I found that Google, in their infinite wisdom, had chosen Eclipse as their base platform for Android development.

Naturally, I first tried it on it's own again, to see if anything had improved. Certainly it did in the four years of not using it. But things still felt uncomfortable. Load times were atrocious, and the interface was not nearly as snappy as what Netbeans provided. When I tried a plugin for Android in Netbeans, though, things were shaky at best. I wasn't sure whether or not the correct things were loaded, it didn't have AVD controls, and other issues kept me at bay.

It wasn't until this morning that I found the answer. Often times, when I'm faced with editor anger, I turn to a more lightweight friend: VIM. I know that there is a lot of power packed inside this text editor, I've just never had the energy to learn about all of it. That may change, as I stumbled upon this page in my android search today: http://jyro.blogspot.com/2009/05/android-development-with-vim-eclim.html. Go ahead - visit. Take a while to soak in all that it says and provides. I'll be here when you get back.

See, that's awesome. I went out and immediately pulled down this Eclim extension, which acts as a handshake between what Eclipse provides on the back end (error checking, dependency resolution, and automatic imports) without the headache and body of running eclipse on it's own. I've been working with this for the better part of the day so far, and let me tell you, it's been fantastic. I've been working on the Sudoku example given in Ed Barnette's book "Hello, Android!" (get it if you're interested in Android Development), and can't believe how fast it's being put together. Best of all, it lets you do this in VIM:

Now, if you ask me, that's pretty cool.  Back to code. :)

28Oct/090

Don’t Break the Chain

After reading this post on LifeHacker, I couldn't escape the feeling that I should start doing something like this.  I mean, it works for Jerry Seinfeld, it can't be all that bad. :)

Basically, as described on the link above, the idea is that you keep a daily calendar of all the specific goals you want to accomplish.  Every time you do something related to a goal,  mark off the day on the calendar.  Once you have a few days consecutively, that is a chain.  The object of this motivational strategy: Don't Break the Chain. Seems like a simple enough thing.

In the spirit of bringing in new ideas in order to make things work, I'm going to use a modified schedule, but the chain still takes effect.  Different days for me will be devoted to different goals/tasks.  Mondays and Thursdays I tackle some Ruby code, so I can stay fresh and learn about some of the newer developments that I've missed, having been out of the Ruby loop for a while.  Tuesdays and Saturdays are devoted to Corner of Seven.  That's right, you might actually see more blog posts. In addition, I'm looking at building new and experimental pieces onto the domain, including rails and Java webapps, and playing around with php and python, so I can apply these to the blog, and keep the site as a form of digital portfolio.  All of my things will be up here, so it makes it more centralized.

Motorola Droid

Motorola Droid

Finally, the big hurdle in my calendar, and what is to be the biggest chain - Android.  I've been looking at the mobile phone operating system for a while now, but haven't had the drive to fully enter in and create things for it.  That is, until I saw (and afterwards, held) one of these.So, starting today, once a day I will try to do something new in terms of Android development, in an effort to increase my skill and knowledge in the mobile OS.  Hopefully we'll get to see some neat little apps come out of this "Don't break the chain" mentality.  Hope you're along for the ride - I guess we'll see come every Tuesday and Sunday.

Cheers for now.

12Aug/092

The Job Hunt is Over, and RBeq moves!

I've found a place to work, and it's right around where home is.  I'm currently working as a contractor on the Rock Island Arsenal, as a contractor through a company based in Virgina called Sysorex.  Essentially, I'm reviewing and cleaning up code written for a transportation system.  Outside of that, Rhythmbox EQ has found a more permanent home over at Google Code: Check it out here to see it in all it's new, shiny, google-fied glory.

Outside of that news, not much new going on here.  I'm single again, as Laura has decided she no longer feels anything for me.  I'm still a bit pissed off about the whole thing... it doesn't seem like she's losing much out of the arrangement (her parents never really liked me anyway, to the point of her dad saying that he wouldn't come if we got married), where it's been the second time I've contemplated giving her a ring.  Hooray for putting too much emotional attachment on something that doesn't work.  But, in the process of that recovery, I've found a fantastic music group and group of friends that I couldn't have ever imagined.  Toting the name I Fight Dragons, their music is part rock band, part 8-bit NES game, all crazy fun and awesome rolled together.  I suggest heading over to theSixtyOne and listening to them.  I've gone to one of their concerts, and am planning on going to another one at the end of this week. I've also made lego figurines of their 8-bit caricatures; some of the results of that:

Packy - Guitar, NES

Packy - Guitar, NES

Dave - Drums

Dave - Drums

Bill - Plays what I refer to as the Octo-pod

Bill - Plays what I refer to as the "Octo-pod"

Laura - Vocals and Controllers

Laura - Vocals and Controllers

There are two more of the band members, Brian and Hari.  I didn't forget them, I just ran out of legos. :)

I do need to get on here and put up some more things on occasion; I just don't always have something to talk about, and so things get lost in the process.  I was humbled when I realized this comic was talking about me: http://xkcd.com/621/.

Have a good day, and I'll catch you guys on the wire sometime. :)

11Jul/0923

Rhythmbox EQ update!

Update: Today RBEQ 1.3 was released.  Find it on the google code page.

Yes, a month plus later than expected, RBEQ version 1.1 is out. :)

Updates since the last release:

  • The window for the equalizer no longer wrests control away from Rhythmbox itself.  This makes it easier to change the EQ and play with volume and songs to get things working optimally.
  • Added GConf hooks to allow persistent states for the equalizer between sessions.  Most requested feature from the previous release.
  • Full base-code rewrite, much cleaner to work with and understand.

Next up, adding a load-save functionality to the EQ so that you can swap settings on the fly.

As always, the download is located here, and the install instructions are the same.

Download from http://rbeq.googlecode.com

Installation instructions:

  • Open a terminal, and enter this:

tar -xvzf rbeq-1.3.tar.gz -C ~/.gnome2

  • That's it!  You're set.

Hope that this release is as popular as the last.

Chris