CodeDog.Net

Filed Under Uncategorized | Comments Off

I’m moved my posts to my new site, which is not hosted at Messiah.

http://www.codedog.net
CodeDog.net

Can’t touch this

Filed Under Uncategorized | Comments Off

MCHammer : Can't touch this

I had an odd realization a while ago and just thougt about it again today as I was looking out at all the construction here on campus. It is this -

I have never been paid to create anything tangible.

I’ve worked in a lab where we tested anti-virus software, wrote reports and produced results of that testing. Went off into the .com era and became a programmer, and that’s what I do today. There isn’t one thing I’ve created in that time that you can touch, physically. Yes you can argue with the new touch technology, you can now touch the applications and websites I build, but if all of a sudden, technology disappeared, I’d have nothing left here to leave my mark. “Oh Jonathan? Yea, he created this killer app that … oh wait, its not around anymore. Well he revolutionized how a website … oh yea, there are no websites. Well he was key in … yea that’s not around anymore either.

hmmm, looks like I’ll have to work harder on making a difference in people’s lives instead of trying to make a difference with technology that could get wiped out in a heartbeat.

Rhomobile Mobile Application Development
I’ve been asked to create an iPhone app for Messiah College. It has to include a campus map (preferably interactive), a campus tour, directions, contact directory for all departments / offices, schedule a visit (which I wrote for our public site), and possibly an events calendar. I have an iPhone, so writing apps is something I’ve wanted to do – so this is a great chance to fufill that ‘dream’. Once I started in on an iPhone app tutorial – using XCode – I knew my dream was over and turned into a nightmare.

If you’re a web programmer (PHP, ASP, JavaScript, AJAX …) then using XCode has a steep learning curve. Apparently if you’re a C programmer or JAVA developer – its quite easy to understand, but I’m not either. So it wasn’t. I’m not saying it was impossible, but it wasn’t a walk in the park like I thought it would be. Plus, now I have this Hello World app in the iPhone simulator that took me 3 hours to code, and it does nothing. I’m supposed to build the full featured app I mentioned above ? Its gonna take me years to do that :)

There was more discussion on campus about the mobile app initiative and I heard “what about Droid?”, “what about Windows mobile?”, “what about Blackberry and Simbian?” … all good questions and I wondered what about them ? It seems like a good idea to NOT limit yourself to one mobile device, so I started looking around for a toolset that would allow me to build for multiple platforms.

There are a few out there, you can google them yourself. The one I decided upon is Rhomobile It allows deployment to all of the platforms I mentioned. PLUS you write the application using Ruby and Gems in the famed MVC format ! This is great news, you write the code in Ruby, and it compiles it out into the app for the iPhone, no XCode !

The best part is that its a free download, feature rich, they do a Friday webinar on some topic whether its the camera, images uploading, rhoSync, PIM access, whatever, you can learn something every Friday. If you miss one you can view them all here.

After a couple hours – I had a fairly nice app, I could modify many features, including styling the buttons, changing screen backgrounds, and adding custom navigation and icons. The tutorial documentation could be better, and there could be more ‘how do I’ content. The API documentation is amazingly good however. If you have a question about some function of the phone, its all spelled out there and code examples you can copy into your app if you need to.

I’m looking forward to building my app with Rhomobile and getting it deployed, because now I can live the dream

Recent Readings

Filed Under AI | Comments Off

So I’m registered for a course this fall.  Yea, I know, just turned 39 and I’m taking a college course.  I have a BS in Economic Crime Investigation with a concentration in Computer security – and I’m working as a programmer for a college, go figure.  I’ve always been interested in Artificial Intelligence, Robotics, computer thinking, logic, etc.  I love remote controlled things (I currently fly RC Helicopters) and schemed up a program and interface to run a model railroad.  Each car is tagged (bar coded or RF-id’d) and the computer knows the location and order of each car stack in the train yard and on the layout.  You want a freight train for coal and lumber? No problem, the switcher take off into the yard and builds the train you want with the proper coal and flat bed cars.  I know the die-hard model train buffs are rolling their eyes because they love the scheduling and control over the trains.  I do too – but I get more of a kick out of the trains ‘knowing’ what to do. Maybe choose a passenger train and a specific destination, the passenger train comes out and heads out to the proper place.

So back to the class, I’m now registered for Artificial Intelligence (COSC 408) taught here at the college.  Cool, right ?  But its a 400 level course which has me a bit worried.  I’m going to be in a room with seniors, probably brilliant seniors that can code circles around me, at least that’s my hope and yet my concern as well.  In certain situations, I like being surrounded by people smarter than me, especially if they’re nice and I can learn from them. On the contrary, I’m a human who doesn’t like to be/feel inferior, so this may become a struggle.

I’m hoping to have some coding projects that will allow me to create some cool things. I don’t know really what to expect. I guess only time will tell.

The textbook we’re using is “Artificial Intelligence : A Modern Approach” fantastic book.  I’ve already started reading it to get an upper hand on the youth in the room.  I figure if I have a good portion read before class, I’ll be able to skim / re-read the assignments and it’ll go faster and I’ll absorb more.  right?  I guess we’ll see.

cat slaps dog

“You still don’t get it ?  Get over  here…”

I want to do it, you know you want to do it, we’ve all wanted to do it.  You’ve explained something to client, customer or user so many times you don’t know how to convey the thought to them in any other way.  I mean the people that publish the Dummies series are thinking, “Man that person is beyond our books, and we have cute comics.”

I realize technology can be intimidating, and sometimes confusing for a normal person. I also realize its our job to dumb down the tech, so they understand it.  I think I do that pretty well.  I once compared memory and drive space (something people screw up ALL THE TIME) to a Christmas tree and square footage.  If your tree is too tall you run out of ceiling space, even though the room may seem empty.  Screen Saver and wallpaper is another one people mess up that drives me up a wall.

So when can the techies rise up and take over?  After all, I could write a program to replace at least half the people I code for.

Vendors are the root of all evil

Filed Under rants | Comments Off

Blame

I’m a programmer and I write code. Granted, I never claim to write 100% bug free code. I do however claim that I bend and root for the customer. If they want something, I generally add it, even if I know they’ll rarely / never use it. unless it is a mistake or really bad idea.

Why? Reputation Ranking.

If you give a client what they want, they’re happy and my ranking goes up, simple as that. If I completely think what they want is a bad idea, I’ll break it to them gently, walking them through my professional opinion. I mean if you let the client do what they want and dictate/mandate design, features, hierarchy, etc you’re not a professional any more, you’re just a code monkey.

Now that you understand that, you can see why I have little patience for a bad vendor. A bad vendor is one whom doesn’t know why their product is producing an error, they don’t know why it won’t behave as advertised, they can’t tell me why its crashing, or they flat out have no idea how the product works at all.

This last one I don’t understand at all. If you’re a paid consultant for the company or a paid customer / tech support person then its your job to help me, period. Helping me doesn’t necessarily mean you’ll solve every issue I have. I understand if you stump a vendor with a problem sometimes. It happens. Heck, I stump myself sometimes with code I’ve written. But when you contact a vendor with log files, error messages and the whole ball of garbage that dumps to your screen when you have a problem, I’d expect _something_ useful from them, or at least some work-around, some calming, soothing bed-side manner to ease my mind. Don’t tell me “it simply won’t work”, ESPECIALLY when it was working and just stopped.

I also don’t understand how a vendor with a terrible product, can wow an institution into spending a pile of money, when in fact the product looks like a grade school programming project, and behaves just as bad. We’re now in the age of RIA applications, been here a while actually. When I compress a box in my interface, log out and come back – is it too much to ask that its still compressed ? I mean, I did that for a reason, do you think that reason has changed since last time ? Are you assuming I now want to see that content? If I have to navigate through a product to get to a specific page (say 5 clicks : this is a true story), a nice bread crumb trail is built for me up top. When I’m done doing what I needed to do, and need to go up a level, I can’t. I have to start at the top and click down (4 clicks this time) to get to the page I need. You have crumbs at the top, you know what page they’re associate with, why aren’t they links ? So I email the vendor. The response .. “that’s how the product works” GET OUT. That’s garbage.

So I’m ranting now, you think. That’s a little issue, and the work around is to just go clicky-clicky. It may be a small thing, but its a time waster. My take on user interface design (coding and graphic) is that if a user attempts to perform an action and it doesn’t behave the way they expect, its broken. If I right click on something in my browser, and the normal browser context menu pops up its broken. We should be writing web applications that behave like desktop applications and that includes context menus if it looks like they should exist.

This is precious. I attempted to log into a 3rd party system to do some work. I could not, because it stated my password was expired. No option to reset it, no contact support notice, nothing. I used it a couple months ago, and its expired already. Holy crap. So I email my contact there to have it reset, and I got a “I can’t change your password due to security procedures”, precious.

I’m laughing so hard now I have to end this post.

I just finished reading Dan Brown’s new novel – the Lost Symbol.  Aside from being a great read, he touches on something that seems incredibly like science fiction, however, if you think about it makes total sense.

The premise goes like this (I’ve added my own points to help explain it further) –

+ The earth has mass, and because of that mass has gravity. (OK we can all agree with this – Earth Science 101, right?)
+ Everything that has a mass has gravity (again sure. – now we’re probably entering Physics 101)
+ Gravity has an effect on the physical world around it (See Issac Newton and the apple).
+ If you get 2 large objects with gravity near each other, the total force of gravity increases (you don’t wanna see the math behind this)
+ Energy waves have mass (however slight – because waves are made up of photons / light waves, radio waves, etc)
+ Brain waves are a form of energy wave, and therefore have mass (there are a ton of sites that argue both sides of this)
If the above are all true (you can see where I’m going)  then :

+ Brain waves have gravity (again however slight) and can therefore have an effect on the physical world.

So if you get a large group of people with the same thought – the associated gravity would not only converge it would actually multiply and have a larger effect, and therefore have an effect on the physical world around them.

Thoughts can move objects.

Take this further if you will.

Note that I am a born again Christian, so please don’t think I’m some terrible person for thinking this as a possibility.

Use the above theory and apply it to group prayer.  Have you ever been to a large  gathering? I went to a Promise Keepers men’s conference one time many years back.  10,000 guys filling a stadium praying all about the same thing.  You could feel it, something palpable.  Ever sit in a prayer meeting and just ‘feel the spirit’ ?  I know it sounds goofy, New-Age-y, mystical, or somehow wrong, right ?  Actually in the novel it is based on old mystical practices, which could arguably be Satanic, and rightfully so.  But I’m not taking God out of the equation.  He gave his disciples the ability to perform miracles, to heal, to cast out demons.  Maybe it was an ammped up thought process that actually gave them the ability to effect the world around them. To focus their thought and ‘aim’ it at the afflicted person.  Interesting, right?
I can’t explain miracles, thoughts, consciousness or the soul and the last thing I want to do is take anything away from God and how he does things, but I thought if the above were true, we’re missing something very cool that God enabled us to do.  Or at least, missing the understanding of how things work in our world.

Just wait till you read my take on the soul …

Tradition

Filed Under ramblings | Comments Off

I have a “Dispair Inc,” calendar.  I love these things, they’re so funny, and actually inspirational in their own way.  The sayings on their merchandise are SO TRUE it’s scary. Anyway, May’s theme is “Tradition”.  It states – “Just because you’ve always done it that was doesn’t mean it’s not incredibly stupid.” – :)

I love that quote, however, that’s a huge deal for programmers with vision.  Granted there are countless people (not just programmers) that have no vision and continue doing things the same old way because it works.  Ya gotta give them credit, what they’re doing works.  Change takes effort (or seems to). It is usually quite difficult to get people to even see the possibility that it may have been the best way to do it years ago, but not any more. If I can even get a sliver of hope through their thick shell of tradition, I’m fairly certain that I can break through and get them to change.

Ahhh, but then what.  Its MUCH easier to build a new process for someone than to build an improved process for someone.  There’s more pressure to make it simpler, faster, cleaner.  The entire time your client will be comparing the new system to the old one.  You’ll get the “well, the other one could…” or “with the old one it was easier because…”.

This is where your professionalism come in and where you get to shine, if you indeed have the vision and abilities.  Plan ahead.  If you’re rewriting an application, you better know 100% of everything it does, because that one feature you didn’t know about, or leave out because its stupid, they’ll rely on.  Trust me. If you are indeed rewriting an application, and you choose to leave out a feature because it is outdated, or the new way doesn’t need it, you better convey that to your client in some obvious way.  Don’t let them come to you and say – “I used to be able to click here to sort it this way”.  Have on screen ques directing them to how it operates now.  Maybe default sort the list, maybe make a header clickable to change the sort order, create a sort wizard, I don’t know, but it better be apparent.

Read more

Smashing Magazine LogoSMASHINGMAGAZINE.COM is my new favorite website, I visit it every day.
This website has become (to me) a core resource, giving tips, tricks, code, demos, thoughts and tutorials about everything web related. Need to know more about CSS ? Check out 70 Expert Ideas For Better CSS Coding or how about some AJAX for your new web application ? 70 New, Useful AJAX and Javascript Techniques

Ok, they’re not all 70’s but you get the idea. The unfortunate thing is the vastness of the site. I have no idea how large it is, it just goes on and on and on. Beware, you’ll spend a lot of time here, sometimes too much time. I still go from page to page like a wide eyed kid in a toy store, clicking on demos, and bookmarking articles. I realize an hour has passed, but the good thing is that you’ll be a better ______ after it (programmer, designer, interface architect … whatever). So to deal with amy slight guilt for cruizing the web, I chalk it up to professional development. No one had to pay for me to drive/fly somewhere, put me up in a hotel for a couple days and attend a boring class. I ‘blew’ 2 hours online and I can almost always instantly improve something I’ve already written or get a head start on accomplishing something I need to do.

Fantastic resource, great reading – I’d recommend to to everyone.

Are they the same, or not?

Filed Under tools | Comments Off

I use Dreamweaver all day long, and if you use it and you’ve ever gotten a synchronization notice, you may have seen a button that allows you to compare files.  This is a fantastic feature, however, recently my BeyondCompare trial timed out.  There’s no budget to purchase it – even though its under $50.  So I asked around, and a co-worker mentioned an open source project called WinMerge.

This tool is a fantastic find.  Granted it isn’t as feature rich as BeyondCompare, but really, I just want to see the differences in files.  Sometimes its just a space that I don’t care about, something minor that trips up the synch algorithm or sometimes an actual code difference I didn’t remember.  Its saved my bacon many times.
I would highly recommend using this open source tool if you don’t have a file compare utility defined in Dreamweaver.  After installing it, simply go to : Edit | Preferences | File Compare and enter the path (for me that was : C:\Program Files\WinMerge\WinMergeU.exe)

You can also compare local files in a site if you select them both in the Files pallet, right click and choose compare files.  This is great if you have Copy[5] of process.php and want to see what’s different in Copy[2] of process.php or even process.php :)