People Jeff Hates – My Blog of (Mostly) Lies

A few weeks ago while discussing a tech issue with my officemate (@thomaslangston), I realized that the best way to convey my thought was to draw it on our whiteboard in Venn diagram form.

We were discussing the issue of mobile location tracking that had just made it into headline news as something that seemed to be universally agreed upon as “bad,” yet I was convinced that there had to be some subset of those complaining people that also use social location services such as Foursquare.  I determined that whoever that subset is, should it exist, is worthy of my hatred.  Thusly, the center, overlapping piece of the Venn diagram in this instance was labeled “People Jeff Hates.”

Now I want to be clear on this point: I’m not a hateful person.  I might curse and use a certain finger at other drivers in traffic on occasion, but really, I’m a pretty agreeable guy.  That’s why we got a good laugh out of the overlap of “People Jeff Hates.”  I’m just not hateful.

The diagram stayed on our whiteboard for a couple of weeks until one day, in another conversation with the same officemate, I realized that I could comically make my point yet again simply by erasing the two outer labels (“People complaining about location tracking”, and “People who use Foursquare”) and replace them with new labels that were relevant to the current conversation.  The humorous bit, again, was that the overlap in the center remained “People Jeff Hates.”

Now that two of these diagrams had been thought up, it became a game to think of more.  The challenge for me is like I said- I’m just not a hateful person.  But, after much effort, I was able to come up with several more ideas, almost entirely tech themed.

Next thing I know, my coworker is drawing them crudely in Gimp and creating a blog for them to live on.  And that’s how People Jeff Hates came into being.

It gets updated each week on Wednesdays and now holds a couple months’ worth of content.  I only have a few more weeks’ worth thought up so I’ll have to go think up more people to hate.  I’ll likely have to occasionally break from the tech-theme and I may even mix it up with some non-Venn diagrams, but we’ll just have to wait and see.

A Year of Launching Later

A Year ago today I released my LaunchLater project into the wild as open source software.  This has been one of the most fun adventures in my career as a software developer.

Since its initial launch, it has gone through several versions.  There have been bug fixes, new features, and improved user interface design.  It has been mentioned on blogs in the U.S., Russia, Brazil, Italy, Slovakia, Japan, Turkey, and even shown up in a video blog from Spain.

It has included code written by one of my coworkers, who added one of my most desired features to the app: the ability to import existing Windows startup items.  Another coworker has forked the project to play with his own ideas of where the app could go.

The app itself has been downloaded over 4,500 times as of this writing, and its source code has been downloaded by over 70 developers.

I’ve gotten to receive and respond to feedback via Twitter, blog comments, Reddit, messages over Codeplex, and conversations with friends and coworkers.

Most importantly though- it does its job well for me.  My Windows-based computers boot faster because of it, and I love that.

Happy Birthday, LaunchLater!

LaunchLater 2.0 Released

That’s right- finally released the new LaunchLater!

This release embodies my original vision of what the application should be.  With help from partner programmer Jabrown85, you can now import your existing Windows startup applications directly into LaunchLater.  This makes initial configuration a cinch for any user.  image

A few aesthetic improvements have been made, including a new LaunchLater icon inspired by some graphics work that my wife put together for me.  She’s awesome.

image

So, if you’re looking to optimize your Windows experience, grab a copy of LaunchLater and plot a better boot process.

LaunchLater Mentioned in Spanish Video Blog

Seriously, this has just blown my mind!  LaunchLater was just featured in a Spanish language technology video blog.

The full article can be found at http://www.redusers.com/noticias/nave-geek-012/?utm_source=twitterfeed&utm_medium=twitter

Wow, just… wow.

Want to Earn A Nerd Merit Badge?

Have you ever heard of Nerd Merit Badges?  If have haven’t I highly recommend checking out their site.

The first badge they ever produced and sold was the Open Source badge.  It is earned by making an accepted commit to any open source software project, and subsequently purchasing it for a sum of $5.99 plus shipping.

With my recent release of LaunchLater, I fulfilled the first half of these requirements.  So I bought myself one!  It’s pretty great!  It’s so great, in fact, that I bought a second one!  See?

opensourcebadge

Why did I buy a second one?  Well, in all honesty, I bought it for you!

That is, assuming that you, the current reader, is the person who is first to download the LaunchLater source code and add a feature or bug fix!

You read correctly:  if you go download the source at http://launchlater.codeplex.com/ and make a productive change, I will give you this badge!  You don’t even have to pay $5.99 or shipping!

The badge itself is Velcro-backed and has an image of the Github mascot, Octocat.  Pretty stylin’, if I do say so myself.

Please contact me if you are interested in being added as a registered developer within the CodePlex LaunchLater project.

Thanks, and good luck!

LaunchLater Has Officially Launched

My previous blog post, written just over a month ago, described the idea that I had for an open source handy little Windows tool.  I named it LaunchLater and I had hoped to deliver a beta within two weeks.  I missed my two week window, by almost three weeks, but tonight I can proudly say that Version 1.0 is ready.

It has a long way to go.  There are one or two known bugs.  I don’t have any custom graphics or icons done yet.  I have some skeleton code in place for several features that don’t yet exist.  It has dependencies that could potentially be factored out.

But it works.

At least within the initial scope of the application, it works.  As described in my previous post, it allows you to create a schedule of apps to defer execution of at startup.  The app that has been my prime candidate for deferred launch is Dropbox and by deferring its launch my laptop boots much faster.  And I know that my hard disk is allowed to get the boot process out of the way before starting that index.

Application Overview

LaunchLater consists of two executables.  The first is the process that actually interprets the schedule of apps to run at login.  I call this app the LaunchPad.  Its user interface is currently nothing more than an icon in the notification area that messages you when it is launching another app.

The second app is the configuration tool (pictured below).  It allows you to add, edit, and remove applications from the launch schedule.  All of the LaunchLater code is written in C# 4.0, but this app is specifically written using Windows Presentation Foundation 4.0 (WPF).  The reason I chose WPF is that it allows for a much more graphically enhanced user experience.  If you’ve never experienced WPF or Silverlight, I suggest looking into it.  It is sort of like all of the pretty good ideas behind web development coupled with the fun of managed .Net code.  My only real problem with it is its reliance on eXtensible Application Markup Language (XAML), simply because I hate all things that look like XML.  Once you dig into it though, it’s not that bad, and Visual Studio 2010 (along with the Community Preview of Blend 4) does a lot of the heavy lifting for you.

LLManagerLLManager2

I have made the application installer along with all source code available on CodePlex (http://launchlater.codeplex.com).  It is released under the GNU General Public License.  I have put a lot more time and thought into my decision on software licensing than I expected to, and to my surprise it has been quite interesting.

Licensing (A Moral Quandary)

This license appealed to me for two reasons.  The first is simple: it grants everyone in the world the right to download, use, modify, and redistribute my software at no cost.  Open source software has saved my neck many times and I feel wonderful about releasing my own. 

The second reason is a bit more complicated.  There is a difference between general free software and what is referred to as “copyleft”ed software.  If my code were completely free, it would allow someone to develop a spin off of the application, and then sell it for potentially millions of dollars (I flatter myself to dream that this application could be worth as much).  I really don’t feel that I have a problem with this.  If someone finds a way to make money off of this, I honestly respond with, “more power to you, sir!”  That person clearly took the time and effort to put a business plan behind my code, and I haven’t.  Not with this software anyway.

But copyleft prevents users from doing this.  It restricts all future child applications of this app to use the exact same license, ensuring that every derivative application is also free to use, modify, and redistribute.

This is quite a moral dilemma.  On the one hand, I don’t want to limit anyone’s freedoms, include that of profiting off a modified version of my code.  On the other hand, by ensuring that future versions of the software are free I am benefiting the community by making sure that software is available to everyone.

I settled on the latter.  Copyleft benefits everyone, where as allowing a future copyright, even with credit to me in the license, only benefits the one who sells it.  I feel bad about putting a restriction on free software, but the restriction is what will keep it free.

Give It A Try

If you would like to give LaunchLater a shot, you can do so by downloading the installer on this page.

If you would like the source code, go here and click the “Download” link on the left hand side.

Please comment and offer any suggestions or critiques.  I appreciate all of it.

So as I said last time, stay tuned. 

I have a plan.

LaunchLater, My First Open Source Project

A couple of weeks ago, while talking with a friend and coworker about how much we love Dropbox, we came to the conclusion that our only real complaint with the software was how long it takes to start up.  Every time the Dropbox application runs, it indexes the files in its local repository, and I’m assuming compares the index hash to that of the cloud repository to determine if there are changes.

The problem is that once you have as many files as we do in our respective Dropbox accounts (5,886 files in mine at the time of this writing), that indexing process becomes time consuming and really slams your hard disk.

And when does the Dropbox application launch?  At startup.  Right when your hard disk is being slammed with your OS loading, and whatever other applications you use that run when you first log in.

This makes boot time take forever, and I worry about my poor non-solid state hard disk getting beat up by having its attention split in so many simultaneous directions.

One fix is to simply take Dropbox out of my list of startup applications.  The problem there, however, is that I will inevitably forget manually run it, then modify a file that I think is being backed up but isn’t, and finally my laptop will spontaneously combust and I’ll lose all my work.

Another way, far more practical, is to use the Task Scheduler built into Windows to trigger the app to launch at logon after a short delay.  This isn’t terribly difficult since I’m a developer and have worked with scheduled tasks for years, but the UI is a bit clunky and is designed to do far, far more than merely delay the startup of an app at runtime.  I don’t expect less savvy users to figure this out anyway.

My proposal is LaunchLater.  An app with a sleek UI (think Zune or Steam here) that allows users to select which startup apps they want to defer at boot time, and even add new apps to the deferred launch list.

Its a pretty simple straight-forward idea.  I honestly thought it was too petty a notion to turn into an open source project, but then I brought it up in conversation with several developer and non-developer friends and got some wonderful feedback, including some terrific ideas for directions to expand towards.  This means I might have some other developers lined up to contribute already.

I hope to have my first beta version working in the next couple of weeks and then I’ll line up the open source hosting.  I’m currently leaning toward CodePlex, but I want to research BitBucket, GitHub, and good ole SourceForge first.

Stay tuned, this might get interesting soon!

Flash Hatred Seems Very Unfortunate

Lately it seems as if the whole tech world has gone anti-Flash and I really don’t think it wise.  Apple is leading the charge and plenty of users seem to be following.  But why?  Flash used to be pretty well accepted and the ability to create Flash apps and code ActionScript used to be pretty well coveted.

From my perspective, doing some light Googling and talking with my tech coworkers and friends, it all started after Adobe bought Macromedia.  Once Adobe held the reigns of Flash, the subsequent version of the Flash player didn’t perform well under MacOS.  Apple users quickly began hating Flash implementations because they ran slowly and hogged their system’s resources.  I would probably hate that too, but since I don’t own a Mac, I really don’t care.  Linux has had a fair share of difficulties running Flash, but those have largely been taken care of now.

It didn’t help Flash’s case that so many developers were using it to create some of the most annoying ads ever conceived.  The stupid dancing silhouettes and pre-animated renderings that became the inexplicable staple of a certain debt management company were some of the worst ads ever inflicted upon mankind.  You can get around them with simple ad-blocking plugins for the prominent browsers, so I really don’t see why I should care about these either.

Plugin development didn’t stop at ad-blocking though.  It has extended into Flash blocking plugins that only allow the Flash object to run once the user has clicked on its region of the page, thereby acknowledging that it is OK to run this Flash app.  Since major sites such as YouTube, Hulu, Shacknews, IGN, and many others that I frequent based their core content on Flash video streaming and user interface, I just don’t see the point in having to make an extra mouse click for each piece of content I want to see.  So again, I just don’t care to deal with this.

For most of its life, Flash had little competition.  Its primary original competitor was Shockwave, which just happened to also be developed by Macromedia.  Things have changed though in recent years with the advent of several alternatives:

1.  Microsoft Silverlight is a direct rival and has the advantage of letting .Net developers make use of it without having to learn a new language. (Flash –> ActionScript ; Silverlight –> All .Net languages)

2.  The rise of sophisticated UI-centric JavaScript libraries, such as jQuery and many others has removed the need for the dynamic controls that Flash traditionally provided.

3.  JavaFX is another competitor released in the last couple of years by Sun.  Its goal is to provide a Java based alternative to Flash and Silverlight.

4.  HTML 5 is on the rise and will be replacing many of the video streaming Flash apps.  YouTube is currently beta testing the HTML 5 version of their site and player.  It’s pretty nice actually.

But the worst blow Flash has been dealt is from Apple.  The iPhone, iPod Touch, and iPad all prohibit Flash from running.  This is partially to ensure that native applications running on the iPhone are governed by the App Store nazis.  The result though is that there are now millions of people browsing the web that can not run Flash. 

Web developers have had to create mobile versions of their sites so that non-Flash-enabled phones can still make use of their functionality.  As more and more sites lean away from Flash and toward alternatives, such as the soon-to-be prevalent HTML 5, the need for Flash and Flash developers will continue to dwindle.

I actually am very disappointed by this.  Through the years, I’ve played with several versions of Flash, although I’ve never deployed any of my work to production web.  Well, a few tests here and there, but nothing that ever made me or my company any money.  But I enjoyed it; I enjoyed the simple but deep language of ActionScript, only lamenting that the code seemed to be distributed in all sorts of corners of my app on the timeline.  Calling web services couldn’t be simpler and Flash doesn’t force you into asynchronous calls the way Silverlight does; I like having the option to go either way.

What I see happening is that a company with a well established product that has a history nearly as long as the web itself is being forced into defeat because it didn’t provide an efficient client to another company’s OS.  An OS that has less than 10% of market share

Please comment on this post if you disagree with me, but I can’t help but see this as a shame.

Twitter-Induced Introspection

UPDATE:   Since writing this blog post many months ago, I have come to be an avid user of Twitter and can’t imagine my online life without its offerings.  Tweetdeck is my client of choice for the iPhone and I used Chromed-bird in Google Chrome at my desktop (since I always have a browser window open anyway).  My @libdsoftware account never really took off but my personal one, @jeffcox111, is thriving.  Feel free to follow and say hello.  And now, my original article, which I largely disagree with after further inspection…

Twitter sure is a cool service, but I’m just not quite sure how to use it for myself. I have had an account for over a year and have only updated my status five times. I’m neither proud of this nor ashamed.

There are two primary reasons for my lack of tweeting thus far. One is that a good deal of my tweets would be work related and a good deal of them would very much not be work related. Some of my coworkers follow me and could see my non-work-related tweets and think to themselves, “why’d we hire this clown?” And honestly, I would do most of my tweeting while at work simply because I’m on my computer more while at work. Sure I can tweet from my phone, but would I? I don’t know.

The other reason is that I’m not sure that I have anything of very much interest to say. Therefore, anyone who would follow me avidly has got to be a weirdo and I don’t necessarily want them following me. I mean sure my blog posts rock but there’s no way I can maintain this level of awesomeness in a constant stream of 140 character snippets.

What interests me though in the Twitter system is the idea of a corporate presence. Maybe corporate isn’t the best word for it, but what what I basically mean is when a Twitter user doesn’t represent a single human person, but a group of people or an idea. This could manifest as a corporate entity, or a club, or a newsletter, etc. I guess this notion is what has led to much of the field known as Social Media.

The easy-to-use and freely available Twitter API is, in my opinion, the true reason Twitter has gained so much momentum. It’s not only easy to tweet, it’s easy to write new software that let’s you tweet. Most of the apps out there right now that let you interface with the Twitter system are the same- a fancy cool UI front end that lets you tweet and organize your friends’ timelines. What I haven’t seen (much of anyway) is an app that let’s you work with Twitter from the standpoint of a corporation, or any entity that is larger than just yourself.

So now I’m putting together plans for a Social Media Dashboard application. Initially it will be aimed square at Twitter and its uses, but I wanted it named Social Media Dashboard and not Twitter Dashboard because I want it to be extended to Facebook and other API’s as well. It will act as a single client that lets you manage your company or group’s social media profile.

I’ve been gaining some added insight recently through the book Twitter Power, by Joel Comm (@joelcomm). Despite some wordy and repetitive moments and ideas in his writing, I’ve enjoyed the read and its given me some great ideas for key features in my app.

If anyone has plans for something similar, would like to colaborate, or would just like to pitch ideas for functionality, please comment on this post! Alternatively, you can DM or reply to me on Twitter at @libdsoftware.

Hope to hear from you!

Karecards.com Now Open For Business

Over the weekend I got to aid in the deployment of the site Karecards.com with the site’s owner, Karen Sudduth.

Karen is a cancer survivor, but more importantly she is a strong woman with an amazing talent for all things artistic.  While going through her treatments to overcome her illness, she turned to painting as a means of relaxing and expressing herself and her feelings.  Her paintings are beautiful and she has turned them into a series of 16 “get-well” themed cards which can now be purchased on her site.

She donates a large portion of the money made from card purchases to the Wings Cancer Foundation.  At the time of this writing, the Wings website has a story featuring Karen and her incredible artistry on the front page.  The foundation is a non-profit organization whose mission is to “provide hope, education, research and support without charge to anyone touched by cancer.”  In short, this is a noble organization doing some very important and wonderful work.

Please visit her new website and consider contributing to this very worthy cause!  The world will be a better place for it.

Follow

Get every new post delivered to your Inbox.