Talk by Doug Crockford – JavaScript: The Good Parts

August 5, 2012 by · Leave a Comment 

JavaScript continues to grow in importance and is making inroads on a bunch of platforms.  The days of JavaScript just manipulating the DOM in the browser are gone.  Here’s a nice talk from the author of JavaScript: The Good Parts, Doug Crockford.

 

Connascence What Now?

June 9, 2012 by · Leave a Comment 

I attended the Philly ETE event recently (actually a few months ago) and had the email that they had posted videos of many of the sessions on their site.  Although we’ve been head down on 7 Regent Lane lately and it’s been quiet here, this is one of my favorites.  Aaron “Tenderlove” Patterson presented as well but unfortunately they didn’t post that one.  Enjoy.

ETE 2012 – Jim Weirich – Connascence Examined from Chariot Solutions on Vimeo.

@CodeWisdom

November 24, 2011 by · Leave a Comment 

I just started following @CodeWidsom on Twitter.  Great stuff for any developer.

I was planning on doing something like this, but laziness prevailed.  Snooze you loose.  I guess I’ll just have to set up an auto-retweeter instead.

 

 

Philly Tech Week – Emerging Tech for the Enterprise Conference

May 7, 2011 by · Leave a Comment 

 

Karen and I both got to attend the Emerging Technologies for the Enterprise conference a week or so ago.  Probably not as cool as her trip to Web 2.0, but there were some great speakers.  Here’s some of the talks I sat in on.

  1. Yehuda Katz spoke about Rails engines in Rails 3.1.  Rails is maturing nicely.  This will make it much easier to segment functionality in complex apps.  He also spoke on SproutCore, which I’m increasingly curious about and regret not attending…too many great talks.
  2. Jonathan Stark talked about developing native mobile apps using HTML, CSS and Javascript.  This is a trend we’re really interested in, but were disappointed with our first foray into these frameworks.  The one he discussed directly was PhoneGap and the  JQTouch library.  These frameworks will continue to mature and I’m sure they’ll be more and more viable as time goes on.  PhoneGap fell into the trap of creating XCode templates, which not a public standard, and XCode 4 broke it.  I think it’s time to give these frameworks another look.  Dave Johnson of Nitobi also gave a talk on the history and future of PhoneGap.
  3. I had a chat with Dan Allen and Lincoln Baxter III over lunch about Android development and how Objective-C for IOS makes my brain hurt.  Then I attended their Java EE 6 talk.  I use Java and Java EE extensively in my day job, but don’t touch it otherwise except for Android development.  Java EE used to be a laughingstock and even Java zealots would only touch certain parts of it.  It looks like it’s gotten to the point where it’s quite usable.
  4. Finally, my personal favorite was Ryan Dahl’s talk on Node.js.  I’m growing weary of large, full stack MVC frameworks and getting curious about fast and scalable distributed systems the more our products force us into emphasizing mobile clients and de-emphasizing the actual web app.  Node.js is an awesome took to build systems like that.  Now I’m dying to find a project just to try it out.

I was a bit underwhelmed by the keynote speakers.  Not because they were bad, but the topics weren’t interesting to me.  Judging by the number of people lingering outside of the ballroom over breakfast, I’m not the only one.

All of the code and presentations are available on the sessions page and is well worth a look.

 

 

 

The Great Zombie Migration of 2011 – to Code School

March 23, 2011 by · 2 Comments 

I got an email this morning that Rails for Zombies (a cool introductory tutorial by the guys at Envy Labs) was now hosted at Code School (an Envy Labs product actually).  Naturally, I was lured by the promise of fame and glory, so I went over and got my OZ (original zombie) badge which I felt I had earned at great personal risk (zombies).  I had test driven it a while back for fun…and because zombies are so damn cool.

It looks like the evil geniuses at Envy Labs are broadening the original Zombie concept with more course material on Code School which is nice to see.

Guys…please do a general Java Script course.  My Java Script Fu is weak.

Fun and Adventure on ELance

March 22, 2011 by · Leave a Comment 

ELance is a scary place.  I’ve hired people there and had both very good and very bad experiences.  We’ve even been a contractor there during lulls in our development cycle.  Recently we had to resort to finding someone to outsource a web property to because we’re too swamped to do it ourselves.  Sure enough, the 80:20 rule applies.  80% of the respondees were unqualified, were scared away by subsequent technical questions we asked about their proposed solutions, or got openly hostile when grilled more deeply on their proposals.  Several went so far as to track down our home phone numbers and bug us at home (note that this results in immediate disqualification as a candidate).

Here’s my favorite.  Two companies, different parts of India, different technology stacks, different staffing levels and the price quoted is exactly the same.  Really?  Don’t even get me started on my ODesk experience with the same RFP.

I think I’ll just start stalking coworking spaces to find my developers from now on…:(.

New Product Coming Soon! – kiwitechpress.com

February 14, 2011 by · Leave a Comment 

Ever notice that when you Google for tips and tricks on development topics that you invariably hit ancient posts on blogs which are either shamelessly copied from more legitimate posts or information based on three year old APIs?  It’s the same deal when you buy a book.  Those are much more accurate, but dead tree publications don’t age well and get stale fast.  Not to mention that most tech books cost in the $50 neighborhood and you end up referencing two or three chapters max.

We’ve become addicted to many of the excellent free and premium screen casts such as Railscasts and Peepcode Screencasts.  Oddly enough, not many of those hit topics outside of Rails and web development.

Another downside of screencasts is that you can’t flip through them to find what you’re looking for.  Most have accompanying code and transcripts, but since most of the content is in the video portion it’s hit-or-miss finding what you want in the ancillary info.

So what’s our answer to this?  We think that there’s a niche for detailed how-to documentation focused on specific ‘how-do-I-do-this-one-specific-thing” mini-ebooks which are kept up-to-date.  So, stay tuned for the Cliff’s Notes of software development, launching this May from kiwiluv.

If you want to keep posted, swing by www.kiwitechpress.com and register for updates.

Oh, and if you have any specific topics you want covered, let us know!  Just post a response and we’ll put it in the backlog…anything that we’re competent to write about is fair game!

Email Attachments from Android Apps

December 16, 2010 by · 5 Comments 

Here’s a less ranty Android development post than my last hissy-fit about external storage.  From an Android app, it’s pretty easy to invoke the email application to send something by using an Intent.  If you search the Internet, you’ll see that there are a ton of folks having trouble with attachments in this situation.

I just got this to work and thought I’d share the fun.  Unlike my SD Card rant where the proper way to do things is easily found, programmatically adding an attachment to an email is tougher.  The examples out there don’t always work and there are little traps everywhere.

The Basics

Ok, here’s how I did it.  First I implemented the following method in my main activity.

private void emailFiles(String file) {
    Intent sendIntent = new Intent(Intent.ACTION_SEND);
    sendIntent.setType("application/zip");
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(file));
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "AlpineReplay Data File");
    sendIntent.putExtra(Intent.EXTRA_TEXT, "AlpineReplay data file attached.");
    sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{email.trim()});
    startActivity(Intent.createChooser(sendIntent, "Select Destination"));
 }

Which I call from a menu selection thusly…

emailFiles(zipFilePath);

Where zipFilePath is the path of a zip file I want to attach (seriously people…keep up) passed as the file argument.  However the format of this is pretty important.  It is passed to the function looking something like this:

file://sdcard/myappname/data/myzipfile.zip

In other words, the absolute path to the file. Here’s the two magic things to look out for.

First, you’ll see a bunch of examples on the internet showing exactly this string as the argument for sendIntent.putExtra() for the content, but this may not work in all cases.  Intent.EXTRA_STREAM should be given a properly formatted URI, which is why it looks like this in the example above.

sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(file));

That puts it in the form of a properly formatted URI (probably changing file:// to file:///…gotta have that third ‘/’ on Linux systems like Android or the files will get lost).

The second nuance I discovered was in this line:

 sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{email.trim()});

What the heck is that trim() crap all about? In my case, there was a newline after the email address I got from a EditText control. But you could get other cruft such as trailing whitespace, so trim(), which is a String method, will get rid of it all. I don’t know about all apps that accept file names from an Intent, but gMail can’t deal with those characters and will complain that it’s an invalid email address.

Just one more comment.  The SendIntent will cause a chooser to pop up with a list of applications capable of handling the attachment.  In my case that’s gMail, Bluetooth (file transfer), and DropBox.  If you don’t want those options you may need to whittle it down to just the one you want when you create the chooser.

Rant on Application Files in Android

December 14, 2010 by · 2 Comments 

I was working on an Android app recently that made heavy use of file storage on the SD card.  This required that I browse the SD card using DDMS, shuttle files around, etc.  I was appalled to see the amount of residue and cruft that was littering the SD card on my poor Droid.  It was like a ghetto in there, only not quite as scenic.

I had spent a stint at a small enterprise which had outsourced a lot of Android development (remember, people on the outside always look smarter which is why consulting is such a good career choice).  The developers ranged from offshore code factories in India and Russia to some of the leading research universities in the US (a much lower bar than one would hope).  Without exception, not one of them knew how to handle the Android file system properly.  Although I had long since deleted every single app from this job, their foul stench remained on my poor SD Card.

So, for the sake of posterity here’s what to pay attention to.

Be a Good Citizen

Sometimes I think the barrier to entry for mobile app and lately web development is too low.  It’s too easy to throw an app together without really knowing what you’re doing.  On a mobile device, you’re sharing battery life, memory, SD card space, screen real estate, and many other scarce resources with the OS and all of the other apps on the device.  In the file system, Android has conventions and has recently updated the API to support playing nice in the SD card sandbox with everyone else.  And yet, sadly, nobody seems to care, resulting in storage capacity being slowly eaten up by useless files from long uninstalled apps.

Dave’s SD Card Rules

As a public service, I’m establishing some rules for using external storage because, clearly, the Android API documents are too polite and subtle.  So, much like those at a swimming pool, here’s my rules you should follow for playing in the external storage of your Android device.  Failure to do so will result in your app’s immediate expulsion from the SD card.

This list was inspired by everything that I had to clean up (with very strong bleach) in my SD card.

  1. DO NOT save application files at the top level of the SD Card directory (more on this later).  Do not even create an application subdirectory there…that’s not where it goes.  If you do so, I will find you and take your microSD card away.
  2. DO NOT hard-code file paths to the SD Card root directory.  The Android operating system is very helpful (usually).  Ask it where it is and believe what it tells you.  Failure to do so will result in your app not working across devices.  Read all about it in Environment.getExternalStorageDirectory().  In fact, read this entire API section.  You will find that there are state checking calls to make sure the external storage is actually there plus many other useful things you can find out to make your apps less stupid.  Use it and your apps will be a much smaller pile of suck than they probably are now.  Not checking media state before using it is like jumping into the pool without making sure there’s water in it, forcing me to mop up your entrails and break out the very strong bleach again.
  3. Speaking of mopping entrails, clean up after yourself.  Temp files should be deleted.  Following rule #4 will allow the operating system to clean up your apps remains after it is uninstalled.
  4. Follow the API guidance on where to allow your app to write files (aka crap) in the external storage (aka my pool).  Here’s what it says…just do it!

Pretty clear, huh?  So let’s all take  a break and study up a bit on how this stuff actually works instead of pasting code examples from the Internet into your apps all day.  Please  STOP BEING SUCH FRIGGIN AMATEURS!!!!

Ok…rant over…back to work…nothing to see here.  Once I calm down and buy a new SD Card to replace the one I bit in half, I’ll post some more useful examples of how to peacefully coexist on the Android platform.  Until then, sudo rtfm.

Startup Weekend Philadelphia

December 8, 2010 by · 2 Comments 

I think this video was from a New York event, but this looks like a blast.  Startup Weekend Philadelphia coming to our town this January 28-39.  I’d love to attend this…have to see if I can get excused from housework/errands/kidsitting for the weekend.

Next Page »