Blog posts by Geekyboy – Adam Culp

  • PHPMyAdmin blank whitescreen (414 Request-URI Too Long)

    Ran across an interesting issue where PhpMyAdmin on a newly installed CentOS server was not rendering in a browser. Or more accurately, it was rendering but the CSS kicked in and caused the browser to display a blank page rather than the desired login screen. (Doing a View Source on the page showed that the login form was in fact there, but hidden by CSS.)

    After checking the obvious things: PHP running (with error reporting on), file permissions, Apache working, VirtualHost definition correct, I was stuck. There were no indications of a problem, and PHP reported nothing. (Because, as we will see, there were no errors to be displayed…or was there?)

    Finally, I turned on Firebug and refreshed the page. Voilà! There were actually two issues, but they were hidden within additional calls in the backend:

    Screenshot from 2016-05-05 17-29-03

    Wow, those two long URL strings! One URL was:

    A quick search uncovered a possible fix. The default Apache limit of the request line needed to be made longer to accomodate PhpMyAdmin. Doing this was simple. I added the directive to ‘/etc/httpd/conf/httpd.conf’ like so:

    LimitRequestLine 800

    I tried a few different lengths and found that 700 was too short, but 800 worked fine. Also, though I simply added this to the conf file, according to the docs you can add this within the VirtualHost rather than making it blanket covering the entire server.

    Hope this helps others.

  • Ubuntu 16.04 and PHP 7 not rendering

    After reloading my work laptop with Ubuntu 16.04 LTS (I prefer to do a reload versus an upgrade, for each LTS version) I was very excited to install PHP 7, and installed using the standard Ubuntu repositories using typical commands:

    $ sudo apt-get install apache2
    $ sudo apt-get install php7.0

    However, after doing the installs I discovered PHP scripts would not render in a browser. After a small amount of digging I realized that doing the base installs did not include one important piece. The package ‘libapache2-mod-php7.0’ was not automatically installed as expected, as it did in the past. (I don’t remember needing to install it separately in the past.) Hopefully the package maintainers fix this at some point. Your mileage may vary.

    $ sudo apt-get install libapache2-mod-php

    So one quick install like shown previous and all is working fine.

    Happy PHP’ing.

  • Using an SSH tunnel to step debug through a firewall

    In a previous post I covered how to set up PHP step debugging in Zend Studio. But if that doesn’t work there may be a firewall in between the server and the debugging client, or IDE, preventing the connection. Here is a possible way to get around that.

    Note: Of course there is no way to avoid the firewall, but this post assumes a connection to the server using SSH is possible. What we’ll do is allow communications from the server to the client using the Zend Studio default debugging port (10137) forwarded through an SSH tunnel which uses port 22 by default. For this to work an SSH connection must be possible from the client to the server.

    While it is possible to do this using command line from Linux or Mac, or using PuTTY on Windows, this example will use the built-in SSH capabilities of Zend Studio 13. For older versions of Zend Studio I recommend using command line or PuTTY linked above.

    Assuming step debugging in Zend Studio was already set up as outlined in my previous post we will continue using that setup, but enhance it with an SSH tunnel.

    In Zend Studio open the preferences. (Windows|Preferences) With the preferences open, expand the PHP node to get to Servers. Highlight the server configuration to work with, and click Edit.

    Screenshot from 2016-04-18 15:07:40

    When the Edit Server dialog opens select the SSH Tunneling tab. Check the box to Enable SSH Tunneling, and populate the desired Username and Password. If your server requires the use of an SSH Private Key in order to login, please supply that.

    Screenshot from 2016-04-18 14:41:34

    Now that the SSH connection is set up we need to add the Port Forwarding for the debugging port. Do this by clicking the Add button in the Port Forwarding section.

    Screenshot from 2016-04-18 14:43:45

    NOTE: The SSH command would look like this:

    $ ssh -R 10137:127.0.0.1:10137 user@debugserver: -p 22

    Select ‘remote’ to specify which side of the tunnel will be sending communication on the forwarded port, enter the local address the remote side (server) will use and port number to send to. Then enter the port number on the receiving end (the client). Now click Finish to apply the setup, and click finish to exit the preferences.

    In the PHP Servers view (Windows|Show View|PHP Servers) right-click the server we just added SSH Tunneling support to and select Open SSH Tunnel. You should then see a brief dialog letting you know the connection was made.

    Screenshot from 2016-04-18 14:52:41

    We are ready to debug!

    Since I was using Zend Server in this example I have Z-Ray available, and while on a page I wished to debug I could simply click on the debug icon and select any of the debugging options.

    Screenshot from 2016-04-03 15:24:13

    This will cause Zend Debugger to contact Zend Studio for debugging, which in turn will ask the user if they wish to open the debugging perspective.

    IMPORTANT NOTE: Debugging over an SSH tunnel is not fast. Therefore you may notice a lag between initiating the debug session and your IDE reacting. After that things speed up, but the initial connection is slow on many networks.

    Screenshot from 2016-04-03 15:24:44

    If Yes is selected the IDE is now ready to perform any debugging the user desires.

    Screenshot from 2016-04-03 15:27:24

    Happy debugging!!!

    This post is one in a series on debugging. For others click below:

    PhpStorm and debugging issue
    Setting up step debugging in Zend Studio
    Setting up local debugging with PhpStorm

  • Setting up remote step debugging with Zend Studio

    Recently I was helping someone set up step debugging of PHP in Zend Studio to debug a remote site, and had some difficulties. So I decided to create this post to remind me later, and perhaps help others get it set up.

    I was doing this on an Ubuntu laptop, so while menus may vary slightly the process should be very similar regardless of OS. Also, I did this using a local VirtualBox virtual machine, using Bridged networking mode to simulate a remote server. In Zend Studio I had a project created with the Zend Framework Skeleton Application, and created a virtualhost in the virtual environment that mirrored that.

    NOTE: If the desire is to use a local server the setup is much simpler.

    Server setup

    While this post doesn’t cover how to install Zend Debugger or Xdebug, ensure one of these are set up correctly. Also, ensure the debugger of choice “knows” where to find the IDE to be debugging from. Zend Debugger can try to do this automatically, or an IP can be manually specified within Zend Debugger or Xdebug. Also, if using Zend Debugger ensure the IP of the client is added to the whitelist. More on how to verify this IP from the client later.

    Aiming at the server

    The first step, assuming you already have a project created in Zend Studio, is to add a server to the project configuration. Do this in the preferences. (Windows|Preferences)  With the preferences open, expand the PHP node to get to Servers.

    Screenshot from 2016-04-03 15:17:07

    From there click “New”, and follow the wizard for setup. The first step is to specify the type of server. In my case I was using an install of Zend Debugger that comes with Zend Server, so selected Remote Zend Server. Alternatively I could have easily selected Generic PHP Server to arrive at the same endpoint later.

    Screenshot from 2016-04-03 15:17:47

    Next, after giving this server a name and URL (ensure the URL actually hits the server), I am prompted for the Zend Server login credentials to gain access to the Zend Server Web API.

    Screenshot from 2016-04-03 15:19:09

    Entering the user and password authorizes Zend Studio to pull down an API key for interacting directly with Zend Server if I desired to later. (This creates a new Zend Server Web API Key on the server specifically for this client.) Alternatively it is possible to click Cancel and enter the credentials manually.

    Again, this is not really required for simply debugging, but I’m including it for completeness sake.

    Screenshot from 2016-04-08 09:25:43

    At this point a test can be run to ensure we are hitting the server as expected by clicking the Test button.

    NOTE: If this doesn’t end in a success you may have some network issues to overcome. See my post on using an SSH Tunnel if you need to.

    Screenshot from 2016-04-03 15:20:12

    After a success, click OK and then Finish the wizard. If you had troubles, please see my post for using an SSH tunnel.

    Enable debugging for the project

    With the server set up it is now possible to set up debugging for the Zend Studio project.

    In the Preferences (Windows|Preferences) click on the Debug within the PHP node.

    Screenshot from 2016-04-03 15:21:16

    Though it is possible to specify the PHP Server globally from the resulting option screen I prefer to set up preferences for each project, since most of my projects may be different in any way. So I click Configure Project Specific Settings… link at the top of the dialog and am prompted to specify which project I desire to configure.

    Screenshot from 2016-04-03 15:21:57

    After selecting the appropriate project I can then appoint the server I just added above, and then specify the Base Path and ensure the Auto-generated Base URL is correct in the lower section.

    Screenshot from 2016-04-03 15:22:26

    After approving and closing the Preferences, we are ready to debug!!!

    Test: If the following step doesn’t work it may be because the debugger on the server cannot find the IDE. In a browser check what ports the IDE is listening on by entering the following URL to hit Zend Studio’s built in web server.

    Screenshot from 2016-04-08 09:48:52

    If the debug_host doesn’t show an IP address reachable by the server then it may be necessary to manually specify the IP in Zend Studio by altering the server configuration we created previously.

    If the IP address should be reachable by the server the issue may be in the configuration on the servers end, or perhaps a firewall or load balancer in between is limiting. Please see my post on how to get around this with an SSH tunnel.

    Since I was using Zend Server in this example I have Z-Ray available, and while on a page I wished to debug I could simply click on the debug icon and select any of the debugging options.

    Screenshot from 2016-04-03 15:24:13

    This will cause Zend Debugger to contact Zend Studio for debugging, which in turn will ask the user if they wish to open the debugging perspective.

    Screenshot from 2016-04-03 15:24:44

    If Yes is selected the IDE is now ready to perform any debugging the user desires.

    Screenshot from 2016-04-03 15:27:24

    I hope this helps others. Happy debugging!!!

    This post is one in a series on debugging. For others click below:

    PhpStorm and debugging issue
    Using an SSH tunnel to step debug through a firewall
    Setting up local step debugging with PhpStorm

  • PHPStorm and debugging IP issue

    Recently I was helping someone troubleshoot an issue using PhpStorm and Zend Debugger. In this case Zend Studio was able to debug an application using Zend Debugger while PhpStorm was failing unless an SSH tunnel was used. The error received was:

    Host ‘127.0.1.1’ is not allowed to open debug sessions – please configure zend_debugger.allow_hosts in the ini file.Failed to connect to host ‘127.0.0.1’, reason: ‘Connection refused’.

    The person experiencing this issue was attempting to debug a site in a VirtualBox virtual machine from the host machine. Both the host machine and the virtual machine were running Ubuntu 14.04. At first glance I thought adding 127.0.1.1 to the allowed hosts would do it. But turns out it was more than that.

    In this case we knew there was not a firewall blocking access, so it had to be networking.

    To start things off I wanted to take a look at what PhpStorm was listening to, so I used the broadcast port 20080 to see this in a browser:

    Screenshot from 2016-04-04 16:13:09

    So it appears PhpStorm was attempting to use the IP addresses linked to the host systems ‘localhost’ and ‘hostname’, but not an IP address accessible via the network. This meant the server would never be able to send information back to the IDE without the use of an SSH tunnel, because it could not reach 127.0.1.1 or 127.0.0.1 of the host.

    Unfortunately PhpStorm doesn’t provide a way to alter the listening IP addresses in the preferences, so we were left with either using an SSH tunnel to allow port forwarding of the listening port (10137) back to the host, or manually informing Zend Debugger where the IDE would be located.

    Zend Debugger Tweak

    By default Zend Debugger will automatically attempt to detect the IDE settings, as shown below:

    Screenshot from 2016-04-04 16:23:04

    However, this wasn’t working because PhpStorm was not reporting a usable IP address, so we needed to update the settings manually:

    Screenshot from 2016-04-04 16:22:37

    NOTE: Checking the box “Use browser’s IP Address” did not fix the issue. The IP address needed to be entered.

    With this done, the server now knew where to reach the IDE for debugging sessions. One downside to this is if the host machines IP address changes, this setting will need to be updated.

    This post is one in a series on debugging. For others click below:

    Setting up step debugging in Zend Studio
    Using an SSH tunnel to step debug through a firewall
    Setting up local step debugging with PhpStorm

    Edit: Please head out to the PhpStorm ticket system and +1 this fix to make this a thing of the past. https://youtrack.jetbrains.com/issue/WI-7465

  • SunshinePHP 2016 Recap

    The Good

    SunshinePHP 2016 was an awesome event! Not only were we sold out of tickets for the 4th year in a row, but the attendee list was truly amazing! Each year more and more companies in South Florida send most if not all of their PHP developers to the conference. This year we saw at least 20 companies in South Florida send 5 or more of their developers, and around 8 of those sent around 10. We love seeing our work take hold, and with this many companies embracing the conference it is obvious we are doing a good job. Thanks to all for participating.

    SunshinePHP CrowdsThis year we had 14 of our amazing 19 sponsors represented in the exhibitor area, handing out Lego pieces and speaking with developers about how they could help them enhance their careers in one way or another. We are happy that every sponsor raved about the event, attendees, the amount of contacts they made, and the overall organization of the conference.

    SunshinePHP exhibitor areaAttendees told us they loved the Lego puzzle idea, and really enjoyed collecting the Legos from the sponsors.

    We had some amazing talks and keynotes this year, and really pulled some topics that were outside the box we typically see at PHP conferences. Two talks were about the brain and mental functionality, and how rest and downtime can affect our thought processes and how we learn. There were talks about dealing with customers, and how to help them help us. The keynote speakers shared tips on collaboration and teamwork while sharing stories about Pacific Ocean crossing, and growing up with physical and/or mental disabilities.

    Or course these off-the-wall, but very valuable, subjects joined our already mind blowing lineup of topics and speakers.

    We also had a very gender diverse attendee and speaker lineup with 16 female speakers (or 36%) and around 20% female attendees! This is a step in a very positive direction, and SunshinePHP continues to lead the way through non-biased speaker selection and responsible marketing.

    The menu each day was slightly altered from previous years, with some healthier choices. The quality of the food was another nice touch as the venue really stepped up to provide some tasty items.

    Evening events went well with games and panel discussions about API building indoors, and an open bar with some food items outdoors on the pool patio. (Yes, it was nice and warm.)

    SunshinePHP tasty food

    Overall the event went amazingly well.

    The Bad

    We didn’t receive too many complaints in our feedback from the event. Some mentioned that the temperature in one room was a bit cold for awhile. Others mentioned that we could have added the technical levels of the talks on the printed schedule. (We had them on the site, but overlooked adding it to the printed materials.)

    One complaint, which we loved, was that we made it very difficult to improve the event for next year. 😉

    The Ugly

    Yes, unfortunately there was some ugly. With the recent awareness of codes of conduct and with the increase in gender diversity there is bound to be more visibility as victims come forward rather than remaining hidden. (Because even though we didn’t hear about these incidences in the past, they were already happening.) We are relieved to report that each incident below was handled professionally, and to the satisfaction of the victims.

    One report was about a male attendee offering 2 separate female attendees a private sampling of relaxation techniques in his room. And when the women refused the man did not continue or push. When the incidences was brought to the man as being inappropriate he apologized and said he meant well, and he would not do it again.

    A second report was made about a man in the pool area, long after the conference had ended for the day, who approached the girlfriend of an attendee and flirtatiously claimed that she could do better than her current boyfriend. We recommended that the man retire to his room (to prevent an assault) and get some rest for the next day, which he did. Nothing further was said, and no additional actions were taken.

    There was a third incident reported which took place before the conference actually started, but was reported after the conference ended. A male offered to take a female shopping some distance away from the venue. Allegedly, while they were shopping the man touched the woman in an inappropriate manner. Because of the lateness of the report there were no further actions.

    In a fourth report, allegedly a woman was swimming with a group, long after the conference had ended for the day, and one of the men in the group touched her in an inappropriate manner. The following morning this was brought to our attention as a 3rd party story by someone who was not present. We spoke with the man, who remained in his room except for meals over the remainder of the conference.

    And finally in a fifth incident, also reported by a woman but late into the following day, it was stated that a man in the pool area the night before was over-aggressively tugging on the straps of her swimsuit. The apologetic man was questioned and promised to refrain from such activities in the future. The woman said this was an acceptable outcome.

    My desire, and the reason I am being open about these incidences is to help others. Other conferences need to be aware this happened, so they can also keep their attendees safe. And attendees need to know about these things so they can watch for it, report it early, and help keep each other safe. Because whether we admit it or not, these types of activities happen everywhere. If you organize an event or group, please do not fool yourself into thinking your event is immune.

    Conclusion

    While SunshinePHP was very organized, and was an awesome event, sometimes things can happen that are out of an organizer’s control. I feel the SunshinePHP staff did everything in their power to ensure the safety of our attendees. We are looking forward to next year.

  • 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 http://jobs.soflophp.org. 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 Meetup.com 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 Meetup.com 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 https://rungeekradio.com, and also on iTunes at https://itunes.apple.com/us/podcast/run-geek-radio/id985617062?mt=2&ls=1. 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 in 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.