The 2015 Slack vs IRC debate rages on

irc-v-slackIt seems that 2015 will likely be partially remembered as the year IRC zealots raged against those using Slack instead of the old reliable, and still growing daily, IRC chat. And it is turning out to be as lively as the “tabs versus spaces” debate that never seems to end.

Of course this means I am only left with one solution…it’s time for me to create a blog post to commemorate this seemingly HUGE issue, and make my thoughts known.

The answer is, I use both depending on circumstances.

For those who aren’t aware (shame on you), IRC (internet relay chat) allows the creation of “chatrooms” where folks can get together to share common interests. And thanks to many individuals and companies providing servers for the cause, it is free. Freenode has been around for more than 15 years.

IRC for all of it’s greatness is also fairly bland, and is pretty much just chat, and while many people use it there is still not much to make it “sticky”. For some this may be perfect because there is less “noise”, but for others there is not enough to warrant their attention.

Lately there is a new kid on the block called Slack.

Slack had a bumpy beginning as a failed startup. The app was likely doomed to be discontinued and never see the light of day as a private resource for companies, because nobody was using it. So as a last ditch effort the company decided to open it to the public, where it boomed to become a regular part of many projects by companies and open source projects and/or communities.

Not only does Slack perform the same activities as IRC, but it also includes the ability to integrate information from outside sources. For instance, via connectors you can pull in RSS feeds from pretty much anything that provides RSS, Tweets and Retweets by certain accounts, Facebook content, IRC content, Github comments and notices, news and announcements from virtually anywhere, and much more. In short, you can create a one stop portal with tons of information relevant to your “Team” which makes Slack a place where everyone can get together and share at a much higher degree than with traditional IRC.

So, what is the problem you may ask? The answer would be that Slack is not entirely free (though there is a free level), and if Slack were to change their pricing model or if they closed entirely all is lost. Communities, projects, and all these things created around this great platform disappears. There are no options to kick up your own server retaining the content, or any other alternative to carry on without the Slack company.

Those who are speaking up against using Slack for things like User Groups and OSS projects are voicing a valid concern because history and entire communities could be lost forever if Slack were used and evil things happen. This is a valid concern, and I was one of those people, until recently, which I will share in a moment.

However, on the other side of the issue is this: Though IRC is still growing and is not really being hurt by Slack, a vast majority of people simply don’t want to use it. Not because of anything malicious, but because a well set up Slack Team can become such a wonderful thing.

I organize the South Florida PHP User Group (SoFloPHP), and a long time ago I created the #soflophp chatroom on IRC Freenode. Then I promoted it heavily to the group of 800 members over and over and over again, and even posted it on the group website. Yet, at best we only had 2 or 3 people in the chat at any one time…BORING!

Recently a member, and now co-organizer, of the group asked if we could create a Slack team for the SoFloPHP user group. I was initially against it and voiced my concern as well as pointing out that there was already an IRC chatroom for the group. But the member was persistent, so I reluctantly agreed. And WOW!

Now to be fair, the Slack Team likely would have been a failure also because in Slack you need to invite every person into the team. There is not a way for folks to just join in, as with IRC. However, there is a handy app (Slackin) you can post on a server that allows people to enter their email address for an auto invite to the Team. We simply posted the app on a free Heroku instance and were off and running.

The problem of getting people into the Slack Team was handled, but how to make it better than IRC and ensure it was used? I then created a couple of Channels within the Team. One was for “Social” which I then created a couple of connectors to some relevant Twitter accounts. This kept fresh content, announcements, and relevant updates automatically flowing in to keep everyone informed and encourage discussion. Then I created a “Jobs” Channel to do the same, but with posts from our user group jobs board at And I also created a feed to the “Random” Channel from the Reddit /r/php hot board to infuse news and updates relevant to PHP. (Note: While Reddit can create an overload of posts, it does seem to promote chat around some of the posts in the General Channel.)

Now that we are using Slack as the user group communication portal (in addition to for the group management) we’ve noticed a much higher level of activity in the group. There are 50’ish members after only a couple of months, and the usage is growing instead of staying stagnant as the IRC did for a few years.

So the bottom line for me: Without paid services like our user group would not be what it is, and it seems that Slack has enabled us to become more active. I will continue using both, until they no longer work. Because the bottom line is that the group was created to serve the community, and Slack seems to do that for now.

Run Geek Radio launch

Run Geek Radio
Run Geek Radio

Last week was the official release of Run Geek Radio, and my first podcast episode. The podcast can be found at, and also on iTunes at On the site behind the podcast you can also go to the Subscribe page for more subscription options.

My plans behind the podcast is to bring together two things I love to do…programming, and running. It only makes sense that I would want to share in both areas, and a podcast is a great way to do that. With the resurgence of podcasts lately I felt a little bit of peer pressure to attempt my own, and so far I have received wonderful reviews from PHP developers who also run, or runners who are also programmers.

So please go and check it out, and let me know what you think. Thanks.

Are Conference Talks Getting Too Soft?

For a few years I’ve participated in various conference CFP processes, and have been asked to speak via CFP submissions (I speak at about 10 conferences each year). Then after the conferences are over I’ve read attendee feedback about the content shared by speakers, including myself. This has caused me to take a second look at talks in general, and to take a closer look at my own talks.

To go into more details, I’ve read and heard feedback from attendees who voiced concern due to the high number of talks that border on being too “soft” for the topic area they cover. Ultimately they are asking, “Where’s what I paid for?” which may be a valid question.

Don’t get me wrong! I’m not saying that all talks should be highly technical, or that soft talks do not carry value. Instead what I’m concerned about is whether talks in certain topics are covered too soft or abstract, or perhaps are a bit shallow to allow more broad coverage, and do not carrying their weight on a conference schedule.

Case of Novices

We all boast that conferences are great places for beginners to learn quickly. I know when I was learning PHP I often felt like I was drinking from a fire-hose at a conference. But the content I heard at conferences taught some items I could use immediately, and the rest became fodder for learned over the rest of the following year. Which worked out well because as a non-speaker I could really only afford a single conference each year.

Fast forward to today. There are community level conferences in almost every region of the U.S. and around the globe. It has never been easier for a beginner to find and attend a conference containing the same speakers and talks that previously were ONLY at the large conferences. Yet, it appears that talks themselves are carrying less and less “meat”. Beginners may leave the conference with some content and ideas, but then need to search for more details to actually learn. But should they? Or should there be a fair mix of practical content to use immediately mixed with ideas to research for the future? I personally lean toward the latter.

It is hard to teach a great amount in a 1 hour talk, but if there is not some immediately usable content an attendee will have a tough time proving to their short sighted boss that it was worth their time.

Case of Veterans

In the community I often hear the mantra “Everybody should go to at least one conference a year”. With the recent explosion of regional conferences there are now many veterans venturing out of the office in search of…more. These well paid high level devs need to justify their time at a conference more than a novice level developers because it’s more expensive for their company to give up a few days of productivity and salary from them.

These developers are able to drink from two fire-hoses, and have a thirst for everything that can be thrown at them. They are ready to see code samples, and even live coding by the experts in the field. However, too often a talk does not live up to the expectations built by the talk abstract which eluded to more. The abstract said they would learn how to do something, but the talk may actually bounce around concepts and possibilities. The veteran walks away vindicated in their current knowledge, but gains nothing new.

The Hallway Track

If I hear another person say the hallway track is the best value of a conference I’m going to PUKE!

Again, let me clarify. I’m a firm believer in a strong hallway track. To have exploration time between talks, during meals, at hack events, and at the end of the day, is priceless. But the best part of a conference should be the talks. Those talks should promote discussions in the hallway track where attendees, speakers, and others continue the conversations and perhaps learn more fine points.

How Does This Happen?

I think there are various reasons why the talks have become softer than traditionally. However, I will only name a few that jump out, and leave the rest to the readers own realization.

First, there is laziness. It’s easier to verbally talk about something rather than create code samples and examples. It takes a great deal of time and effort to generate code that only serves the purpose of demonstration. However, it is much easier to present a bunch of bullet points and remain abstract.

Second, there may be a lack of preparation. I think that many speakers do not spend nearly enough time preparing new talks, or rehearsing them. Therefore it is somewhat thrown together and lacks the refinement of in-depth content and examples. If the talk is not prepared ahead of the CFP, which is fine in some cases, I have seen speakers wait far to long after they are selected to actually create the talk.

Third, the speaker may lack true passion on the topic but was able to get it accepted by a conference. Unfortunately knowledge does not always equal passion. Therefore the attendees suffer, because the talk lacks conviction and quality of someone who truly cares.

Fourth, a talk doesn’t live up to it’s potential the first time it’s given. It gets better with repetition. The talk is not bad the first time it’s given, but it is not 100% either. As a user group organizer I am saddened that so many do not consider speaking at a user group to make sure a talk is vetted before giving them at a conference where attendees are paying for “higher quality”.

The Challenge

Based on the above lines of thinking I’m going to be doing the following moving forward, and encourage others to take on this challenge:

  • Tweak my own existing talks to ensure they carry value. Add code examples where they should have been to begin with, include more resources to enforce my words, and even include more live coding and demos to provide deeper understanding.
  • Be tougher when rating talks I attend at conferences. I should walk out of a talk feeling like I truly learned something.
  • Be more critical when selecting talks to be presented at conferences. I owe it to the attendees, and to the conference organizers to ensure the best talks are chosen.
  • Ask to see slides and code for talks in advance if available, and at a minimum set a deadline of when these should be ready if the talk is selected. To ensure the talk lives up to the abstract.
  • I will not submit talks to conferences I have not prepared in advance and given at least once to a user group. See the blog post by Cal Evans titled “Airfare and Two Nights in the Hotel” where he writes about this very thing.

Final Thoughts

I am friends with many developers (or used to be :P) who speak at conferences pretty often. I know many of them take great pride in their talks and the preparation of them, and not all of the points discussed in this post applies to everyone. However, I would encourage you, the reader, to consider your own talks and see if you can apply some of these things. I believe that we can all improve in some way, and I personally strive to improve each day.

Delayed anxiety, never forgotten

Today I read a blog post from a local developer, Chris Russell, in which he describes how he is struggling with anxiety, stress nightmares, and sleeplessness due to a past job and the stress it caused. I wrote a blog post about this in the past, but will share more personal experiences here because Chris’s experience led me to recall something I deal with on a daily basis, and have dealt with for the past 17 years. (No, it never goes away.)

As we grow older the memories of the past become more and more clear, and 17 years “feels” like yesterday. Even as I say that number it’s hard to believe it was that long ago, yet here we are in 2015. So recalling this is not a problem. Well, actually it is a problem because the memories suck, though the fact I can recall it is sweet.

At that point in my life I was on the verge of closing a failed business. I was smoking 2 packs of cigarettes and drinking 2 pots of coffee each day, and dealing with the stresses of bill collectors, not being able to pay employees, and possibly being homeless soon. All while living on a single meatball sub each day because I couldn’t afford anything else to eat. My life had become one HUGE ball of stress and failure.

One evening I was trying to relax, and was sitting on my couch watching something stupid on TV (most things on TV are stupid), and felt a sudden heat in my chest. I felt as if I had a pool of warm water right where my heart was, and fully expected to look down and see exactly that. There wasn’t any pain, just a warm “oozy” feeling. Following this I was filled with sudden feelings of TERROR! No, not the scared feeling we get from watching a frightening movie or riding a roller coaster. This was sheer TERROR ripping through my body and mind. I “knew” I was about to die at 32 years old. Not knowing what else to do I called 911 for an ambulance. (I was alone, because nobody wants to be around a failure.)

After a night in the ER, of which I had a couple more over the following month as I finished closing the business, I was diagnosed as having a panic attack driven by anxiety. They prescribed some anxiety drugs and sent me home. (I only took the drugs a couple times because they caused feelings of paranoia, so I flushed them.)

On one trip the ER I had a fairly attentive doctor who actually talked with me about what was happening. He said that these attacks were likely spurred on by previous months of high stress, rather than what I was experiencing at the moment. It turns out that anxiety builds over time, and attacks can be the result of stress experienced up to 6 months prior as a delayed response. So things like divorce, job stress, fights with loved ones, unsolved problems, auto accidents, past due bills, disgruntled employees, and pretty much anything else that can cause stress doesn’t manifest itself immediately. Our minds and bodies can take up to 6 months to fully process it and manifest them in physical ways.

All of this is what led me to change my life. I stopped smoking, stopped drinking coffee (caffeine free herbal tea became my friend), got a new job, and moved in with family until I got back on my feet, and started doing things proactively rather than waiting for things to happen to me.

Times are brighter now, and I have experienced many successes. But the anxiety always remains and NEVER goes away. I opened the Pandora’s box by allowing stress to run me and will pay the piper for the rest of my life. Terror is only one missed indicator away from taking over. But I manage it by keeping stress levels low, keeping busy, staying physically fit, and recognizing symptoms before they escalate. My journey continues.

To those of you who have not experienced this, please do not let stress build up. Handle things early, because this is not the way to live. For those who do experience this, relax, it does get easier with time and alertness.

Mirror mobile device screen to your computer

I needed to perform a demo of a tool where I would utilize my mobile device (phone) to perform an action, and it caused a reaction on my laptop.  However, part of the “WOW” factor is to mirror my mobile device screen onto my laptop so the viewer can see both the mobile device and the web browser.

Thanks to Apple’s AirPlay this is relatively easy for the iPhone with the purchase of 3rd part software like Air Squirrels Reflector, but I don’t have an iPhone. (I can never figure out how to switch between apps, or how to go back if the app developer didn’t include a back button in the app.  But I digress.)  Instead I have an Android device, which has a much larger user base, and I really didn’t want to switch.  Unfortunately nobody has created a 3rd party application that utilizes the Cast Screen functionality of Android in the same manner as the AirPlay.

In searching I found many solutions that required the user to “root” their mobile device.  This really wasn’t an option for me.  I have a Google Nexus device, so I’m not really held back by mobile vendor limitations, lock downs, or pre-installed software.  No need to “root” my device.  I’ve rooted/unlocked other mobile devices in the past, and since I’m not a mobile developer, I feel no need to tinker with what works for me.

I did manage to find a couple other solutions (one with the help of my co-workers) that did work without altering my device software, or installing applications on my laptop.  Well, that is not entirely true.  Both of the solutions I’m about to share did require the Java runtime environment to be installed, but I consider that a mute point since most computers these days already have it installed for one reason or another. (Most developer IDE’s already require it, so I already had it.)

Step 1 – Ensure you have JRE

As I said, for this to work you will need to have the Java Runtime Environment of some sort installed on your system.  If you don’t already have the JRE installed you can do it at

Step 2 – Connect with USB

You must connect your Android device to your PC via USB connection for this to work.  As of this writing I have not found a way to make this wireless.

Step 3 – Enable Developer Mode

By default Android devices do not come with Developer Mode enabled.  This mode is needed so we can take advantage of debugging via USB tether.

On Android devices prior to 4.2 you could set USB Debugging from the settings…easy-peasy.

To enable this on Android 4.2+ go into Settings->AboutPhone and tap the Build Number 7 times.  The device will inform you that Developer Mode is now enabled.  Click back to hit the previous screen and you will now see Developer Options available.  Check the box for USB Debugging and you’re done.

Step 4 – Download the Android developer tools

For simplicity sake I only downloaded the standalone Android SDK Tools Only. (I had no use for the Studio.) I did this at the URL, then unzipped the file to a place of my liking.

After making the file ‘/tools/android’ executable I ran it on the system.  This opens the Android SDK Manager window.  The purpose for this is to download and install the needed packages to allow us to “develop” Android apps.  I didn’t change a thing and simply clicked the button that said “Install n packages”. (Note: n will be some sort of number.)

It took awhile for the manager to do the update/download, but after it was completed I simply closed it.  This would have downloaded a bunch of things, but the most important for us is ‘/platform-tools/adb’ which is required to mirror our device screen to the PC. (Make sure this file is executable as well.)

Step 5 – Add locations to the PATH

For this screen sharing to work you will need to add two folders of the Android SDK to your PATH: ‘/platform-tools’ and ‘/tools’.  I did this by editing my .bashrc file as follows:

export PATH=$PATH:/home/aculp/android-sdk-linux/platform-tools:/home/aculp/android-sdk-linux/tools

Step 6 – Download Apps

There are two possible apps to use to do this:

Both carry the same sorts of functionality, however Droid @ Screen is a bit more mature and makes additional options a little easier.  One thing I didn’t like was the need to have an extra window open for the settings.  Due to my being a fan of simplicity I have been using Android-Screen-Monitor.

Both apps are a simple matter of executing the jar file using java and they just work.

Step 7 – Launch it!

Now it is simply a matter of launching either the Android-Screen-Monitor or Droid@Screen application. I did this via CLI like so:

$ java -jar asm.jar

NOTE: This command assumes we changed directory to where we downloaded the Android-Screen-Monitor jar file.


If you have questions or comments please post them.  I will return to this post and tweak it a bit more to become really easy to use, but for now this is mostly what I did.