Why is my connection to Google, Gmail or HSTS Site Untrusted?

Connection to Google untrusted? Fix below!

Lately, I have had issues connecting to Google, Google Mail and other random services over the last few months. I did some digging today and fixed (I believe) the issue. If you are having problems with security messages like the below, try these steps to see if it fixes the problem. I'll put some narrative/background info below if you are curious as to my findings.

Here's an example of what I would see if I dug into the Untrusted Message:

How in the world is accuweather the actual cert for google?

Solution: Here's what I did.

In short, you need to remove the offending certificates. Your browser will re-ask for them and get the right ones

Google Chrome: (screen shots below)

  1. Click on the 3 horizontal lined Hamburger menu
  2. Click on Advanced Settings
  3. Click on HTTPS/SSL Manage Certificates
  4. Click on Untrusted Certificates Tab
  5. Remove all that said Fraudulent

Mozilla Firefox (screen shots below)

  1. Click on the 3 horizontal lined Hamburger menu
  2. Click on the Options button
  3. Click on the Advanced Menu on the right
  4. Click on the Certificates Tab
  5. Click on the View Certificates Button
  6. Click on the Servers Tab and remove the expired certificates

Google Chrome Screenshots

Mozilla Firefox Screenshots

Ok, so what is this all about?

From my research, certain sites using HSTS (HTTP Strict Transport Security) are throwing security alerts upon connection to pages on the domain. In March 2011 an HTTPS/TLS Certificate Authority (CA) was tricked into issuing fraudulent certificates. Patches to the major web browsers blacklisted a number of TLS certificates that were issued after hackers broke into the Certificate Authority. These were high value certs and likely state sponsored cyber-attacks from Iran. Below is the list of domains affected:

  • mail.google.com
  • www.google.com
  • login.yahoo.com
  • login.skype.com
  • addons.mozilla.org
  • login.live.com
  • global trustee

The weird thing about this, is my computer wasn't even manufactured in 2011. I purchased it in 2013! There must have been a recent update to either the servers matching the domains above, or to my browsers or operating system a few months ago. Regardless, connecting to the domains in the above list has been problematic with random security warnings and even blockages on my own computer.

Let me know if this fixed the problem for you!

Update: 11/21/2016

This problem has never really gone away. In fact, it drives me nuts! I did find some other things to do to help this go away.... try these steps if you are on windows:

  1. From the Control Panel, open network and sharing center
  2. On the left side- click on "Change advanced sharing settings"
  3. Click on home or work
  4. Check "turn off" for the first three questions.

Depending on the specifics you may also have to turn on password

The best way to develop and run NativeScript projects in an emulator

I develop NativeScript on Windows. As in most new, shiny technology, developing on Windows has it's quirks. In this post, we'll talk about 3 different ways to run your NativeScript project in an emulator, as well as the pros and cons of each method. I'm also going to use the Android platform. The iOS commands are the same, except for swapping iOS for the keyword android in the command.

All methods assume you have an emulator for your platform, with a device profile created. Additionally, at least on Android, it is necessary to start the device emulator you wish to target using the Android Virtual Device Manager, or some other mechanism.

Basic: tns run android --emulator

Run this command every time you want to push the latest version of your code to the emulator.

Pros:

  • You get to see any console output. This means you can debug your application using console.log("foo") statements and see the output.
  • You will stay up to date on your facebook feeds. See Cons below for explanation.

Cons:

  • The console logs are VERY chatty. There are heaps of measurement logging and other things not immediately relevant to the application. The sheer amount of logs, can make it hard to find your output.
  • You'll pay a 2 minute tax, at least, waiting on the emulator to get your changes. Change a single character and use this method again? Then you'll pay the 2 minute tax again. (I'm using an SSD laptop with 16GB of RAM.)
  • Because of the latency between updates, I am painfully reminded of my poor typing skills.
  • If this was the only option to write Native mobile applications, I'd probably decide it wasn't for me and go do something else.

Tip:

At this stage, I can not see a single positive reason to use tns run android --emulator that can't be achieved with one of the below options. In short, you probably don't want to use the workflow tns run android --emulator. As a stretch, perhaps you need to see the Native logs, like all of the measurement logging. Right now I don't need that, so this method is pointless and masochistic.

Interactive: tns livesync android --emulator --watch

This process watches for source code changes and will automatically build and push the latest version of your code to the emulator.

Pros:

  • The time between making a source code change, and seeing the effect of the change in the emulator, is WAY faster than tns run android --emulator. This is somewhat comparable to running a browser based application.
  • I prefer this method when I'm working on layouts, visual changes, or light work inside view-models.
  • Did I mention how fast changes are propagated?
  • If there is an error, you will get a stack trace on your emulator screen.
  • As of NativeScript 1.5, you will see console.log() outputs in your terminal window. YAY!

Cons:

  • You get NO console output. All console.log() statements are /dev/null'd.This is no longer true as of {N} 1.5. Console.log() output is streamed to the terminal, without the chattiness of the above method.

Tip:

If you want more options with how to deal with non-visual logging in NativeScript, write a custom TraceWriter and push the output you want into a frame of your application, or send it over an API or whatever. You can find out more here: tracing-nativescript-applications. Just search for Writing a Custom TraceWriter for an example of your options.

Genymotion: tns debug android --geny "Google Nexus 4 - 5.1.0 - API 22 - 768x1280" --debug-brk

This process watches for source code changes and will automatically build and push the latest version of your code to the emulator and start a debugging session in Google Chrome.

Pros:

  • Changes are propagated quickly, much like tns livesync android --emulator --watch
  • You have introspection, breakpoint and other tools using Google Developer Tools.
  • From my informal testing, the time to complete the initial build and show the app on the screen is less with Genymotion, than it is with the tns livesync android --emulator --watch process.

Cons:

  • This requires a separate account with Genymotion. There is a free personal account and several paid options.
  • No matter what I do, this doesn't work on my platform. It's the albino tiger of debugging. If you can see it working, then you have something special. However, Genymotion never comes out of the cave to perform for me.

Which one should you use?

Once your environment is successfully set up, spend some time to get Genymotion installed. If you can get it working on your system, then you have the Holy Grail of NativeScript debugging. Fast change propagation, interactive debugging, variable inspection and so on. If this does not work for you, then you are probably best served using tns livesync android --emulator --watch. Now that console.log() statements are sent into the terminal, you can debug iteratively, though without the breakpoints and introspection you'd get in a Google Chrome debug session.

Appendix: why doesn't Genymotion work on your platform?

If I knew the answer to that, I wouldn't have been inspired to write this article. I'd just use Genymotion and be happy.

On my system, I can start the Genymotion emulator, connect with a debugging session in Google Chrome and see my application successfully deployed. What does not work is the debugging session. I get the following error in my javascript console:

view plain print about
1Page.getResourceTree failed.
2ReferenceError: process is not defined

While googling for a resolution, I can see others report a similar issue, however no combination of repudiation steps makes this error go away. Thus, the debugging session is not enabled and I get none of the benefits of using Genymotion.

It is a shame, but I make do with the combination of tns run android --emulator and tns livesync android --emulator --watch as needed.

How to fix a Node.js package error when installing NativeScript

NativeScript is a free open source offering from Telerik allowing mobile development in Javascript with 100% Access to Native Platform APIs in iOS, Android and Windows Phone. With NativeScript, the entire native platform functionality is available in the JavaScript layer. I've finally found the packaging and tooling I want to use to develop native applications in iOS and Android, while using a single language.

I develop in Windows and I love it for my daily work. However, occasionally, using Node.js on windows is a bit more complicated than on other platforms. While following the very comprehensive Getting started guide for NativeScript, I ran in to a sticky issue. Here is the issue and resolution in case it helps you, my weary web traveler friend.

Firstly, the root cause of the error was my fault. Even though the Getting Started Guide stated I needed to install "The latest Node.js 0.10.x or 0.12.x stable official release", I went off-script and installed Node 4.x. Surely this would work, right?

After spending a fair amount of time struggling with the CLI command to install NativeScript, I re-read the install docs and figured out my Node version was not the right version, so I uninstalled Node.js 4.x and installed Node 0.12.x.

After running the installer again, I still ran into issues. Part of the issue was the C++ compiler not being available. The standard way to get a C++ compiler is to install Visual Studio, though through research, I found Microsoft is offering a standalone C++ compiler specifically to help out with node. This comment by Sara Itani, discusses the new compiler, how it was tested and has the links to download what you need.

I applaud the new and improved Microsoft for their work to support the more modern development platforms like Node.

Once I had the compiler installed, I hit another error. This error was caused because the earlier version of Node.js 4.x left some paths out there that no longer resolved. Once I fixed the paths in the \nodejs\nodevars.bat, and ensured they pointed to the current install of Node 0.12.x, I was able to complete the install. Below is an example of the NativeScript install script output before the error.

view plain print about
1[C:\Users\DanWilson]npm i -g nativescript
2npm WARN excluding symbolic link docs\stylesheets\hightlight.css ->
../../node_m
3odules/highlight.js/src/styles/solarized_light.css
4npm WARN excluding symbolic link docs\assets\ir_black.css -> ../../node_modules/
5highlight.js/src/styles/ir_black.css
6npm WARN excluding symbolic link docs\stylesheets\hightlight.css -> ../../node_m
7odules/highlight.js/src/styles/solarized_light.css
8npm WARN engine xmlbuilder@2.2.1: wanted: {"node":"0.8.x || 0.10.x"} (current: {
9"node":"0.12.7","npm":"2.11.3"})
10|
11
12
13> utf-8-validate@1.0.1 install C:\Users\DanWilson\AppData\Roaming\npm\node_modul
14es\nativescript\node_modules\utf-8-validate
15> node ./build.js
16
17`win32-ia32-v8-3.28` exists; testing
18Binary is fine; exiting
19npm WARN excluding symbolic link examples\TestFramework\Test Framework.framework
20\Resources -> Versions/Current/Resources
21npm WARN excluding symbolic link examples\TestFramework\Test Framework.framework
22\Test Framework -> Versions/Current/Test Framework
23npm WARN excluding symbolic link examples\TestFramework\Test Framework.framework
24\Versions\Current -> A
25npm WARN excluding symbolic link docs\stylesheets\hightlight.css -> ../../node_m
26odules/highlight.js/src/styles/solarized_light.css
27
28
29> bufferutil@1.0.1 install C:\Users\DanWilson\AppData\Roaming\npm\node_modules\n
30ativescript\node_modules\bufferutil
31> node ./build.js
32
33`win32-ia32-v8-3.28` exists; testing
34Binary is fine; exiting
35
36> fibers@1.0.6 install C:\Users\DanWilson\AppData\Roaming\npm\node_modules\nativ
37escript\node_modules\fibers
38> node build.js || nodejs build.js
39
40`win32-ia32-v8-3.28` exists; testing
41Binary is fine; exiting
42-
43
44
45> ref@1.1.3 install C:\Users\DanWilson\AppData\Roaming\npm\node_modules\nativesc
46ript\node_modules\ref
47> node ./build.js
48
49`win32-ia32-v8-3.28` exists; testing
50Binary is fine; exiting
51npm WARN excluding symbolic link docs\assets\ir_black.css -> ../../node_modules/
52highlight.js/src/styles/ir_black.css
53npm WARN excluding symbolic link examples\TestFramework\Test Framework.framework
54\Resources -> Versions/Current/Resources
55npm WARN excluding symbolic link examples\TestFramework\Test Framework.framework
56\Test Framework -> Versions/Current/Test Framework
57npm WARN excluding symbolic link examples\TestFramework\Test Framework.framework
58\Versions\Current -> A
59npm WARN excluding symbolic link docs\stylesheets\hightlight.css -> ../../node_m
60odules/highlight.js/src/styles/solarized_light.css
61npm WARN excluding symbolic link docs\stylesheets\hightlight.css -> ../../node_m
62odules/highlight.js/src/styles/solarized_light.css
63-
64
65
66> ws@0.4.32 install C:\Users\DanWilson\AppData\Roaming\npm\node_modules\nativesc
67ript\node_modules\node-inspector\node_modules\ws
68> (node-gyp rebuild 2> builderror.log) || (exit 0)
69
70if not defined npm_config_node_gyp ( node "%~dp0\..\..\node_modules\node-gyp\bin
71\node-gyp.js" %* ) else ( node %npm_config_node_gyp% %* )
72\
73
74
75> ffi@2.0.0 install C:\Users\DanWilson\AppData\Roaming\npm\node_modules\nativesc
76ript\node_modules\ffi
77> node ./build.js
78
79`win32-ia32-v8-3.28` exists; testing
80Binary is fine; exiting
81npm ERR! Windows_NT 6.1.7601
82npm ERR! argv "C:\\Program Files (x86)\\nodejs\\\\node.exe" "C:\\Program Files (
83x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "i" "-g" "nativescript"
84npm ERR! node v0.12.7
85npm ERR! npm v2.11.3
86npm ERR! code ELIFECYCLE
87
88npm ERR! ws@0.4.32 install: `(node-gyp rebuild 2> builderror.log) || (exit 0)`
89npm ERR! Exit status 1
90npm ERR!
91npm ERR! Failed at the ws@0.4.32 install script '(node-gyp rebuild 2> builderror
92.log) || (exit 0)'.
93npm ERR! This is most likely a problem with the ws package,
94npm ERR! not with npm itself.
95npm ERR! Tell the author that this fails on your system:
96npm ERR! (node-gyp rebuild 2> builderror.log) || (exit 0)
97npm ERR! You can get their info via:
98npm ERR! npm owner ls ws
99npm ERR! There is likely additional logging output above.
100
101> nativescript@1.4.3 preuninstall C:\Users\DanWilson\AppData\Roaming\npm\node_mo
102dules\nativescript
103> node preuninstall.js
104
105Trying to kill adb server. Some running Android related operations may fail.
106
107npm ERR! Please include the following file with any support request:
108npm ERR! C:\Users\DanWilson\npm-debug.log

What I found annoying about this error, and the reason why I'm posting it here, is because the error points to a failure in the ws package.

view plain print about
1npm ERR! ws@0.4.32 install: `(node-gyp rebuild 2> builderror.log) || (exit 0)`
2npm ERR! Exit status 1
3npm ERR!
4npm ERR! Failed at the ws@0.4.32 install script '(node-gyp rebuild 2> builderror
5.log) || (exit 0)'.
6npm ERR! This is most likely a problem with the ws package,
7npm ERR! not with npm itself.
8npm ERR! Tell the author that this fails on your system:
9npm ERR! (node-gyp rebuild 2> builderror.log) || (exit 0)
10npm ERR! You can get their info via:
11npm ERR! npm owner ls ws
12npm ERR! There is likely additional logging output above.

However, I could install the WS package separately with no issue.

Good luck and happy developing with NativeScript!

How to get Oracle 8i to Start on Windows XP

Oracle Error - Oracle Not Available

I'm working on a client project that uses an Oracle 8i database. We'll eventually convert this database to another platform at some point, but for now, we need to make some much needed changes to the existing platform.

Oracle 8i doesn't seem to run on modern Windows Operating Systems so I installed it on Windows XP. This worked fine until I restarted the machine. Upon restart, the once functioning database service would not open. Connecting to the database gave the error "Oracle not available".

It turns out, this is a common issue and after researching and exploring various options, I finally got the database to start up with a series of steps.

Here's what to do:

Since this process involves starting services in a particular order, we need to change the 5 Oracle services below to start up manually: (Administrative Tools > Services )

  1. OracleOraHome81TNSListener
  2. OracleOraHome81DataGatherer
  3. OracleOraHome81ClientCache
  4. OracleOraHome81Agent
  5. OracleWebAssistant0

While you are in there, change the name of your particular database service "OracleServiceWhateverYourServiceNameIs" to Manual also.

After a reboot, start all 5 services in the order listed above. Once all services are up and running, start your database service: "OracleServiceWhateverYourServiceNameIs"

It'll probably complain with an error afterwards, but that's ok.

Go to Task Manager and kill the ORACLE.exe process running and restart the service for your database instance: "OracleServiceWhateverYourServiceNameIs".

Try to connect to the database. Sometimes the service will be up and ready for service after these steps. If it is not, perform the following steps:

  1. Open the Database Configuration Assistant ( start>Programs>Oracle-oraHome8i>database administration> database configuration assistant )
  2. Choose "Change Database Configuration"
  3. After pressing Next, choose the instance you want to connect to.
  4. Press next 2 more times and the database will be ready for service then

At this point, you should be able to connect to your database with SQLPlus, or any other preconfigured connection. I hope this works as well for you as it worked for me.

How to solve error: [Oracle JDBC Driver]Transliteration failed, reason: invalid UTF8 data

I got a strange error "[Oracle JDBC Driver]Transliteration failed, reason: invalid UTF8 data" while working on a client system. I spent a reasonable amount of time trying to work out what caused this.

The Oracle database was a restore of an Oracle 8.1.6 system onto the new Oracle XE 11.2. During the import, the character sets changed.

  • export client uses WE8ISO8859P1 character set (possible charset conversion)
  • export server uses WE8ISO8859P1 NCHAR character set (possible ncharset conversion)
  • import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
  • import server uses AL32UTF8 character set (possible charset conversion)

So, I'm guessing since the new database did a conversion of NCHARSET from WE8ISO8859P1 to AL16UTF16, the size of the characters threw off something. Thus, there were problems and none of the queries on certain tables worked.

The Solution

The DataDirect Oracle Driver that ships with ColdFusion 9 has an error in it. It appears the error is fixed and if you have an agreement with the provider, you can download an update. However, I don't have an agreement so I downloaded fresh Oracle JDBC Drivers to fix the problem. Here's what I did:
  • Download the drivers here: http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
  • I used the ojdbc6.jar one.
  • Copy the ojdbc6.jar file to /JRun4/lib (or, if you wanna be fancy, put it somewhere else and update the class path in the jvm.config pertaining to the instance you want to update)
  • Restart ColdFusion
  • Enter the following in the JDBC URL field: jdbc:oracle:thin:username/password@IP.Address.Of.Database.Server:PortOfDatabaseServer:OracleSID
  • Enter the following in the Driver Class field: oracle.jdbc.driver.OracleDriver
  • Add the user name and password in the appropriate boxes
  • Save the datasource. It should verify if you did everything correctly.

If you got an error, remember these things:

  • Usernames, passwords and seemingly the Oracle SID are case sensitive
  • The JDBC Url Field is particular and must be exactly right.
  • The default port for Oracle is 1521

Thinking Like a Cupcake Kingpin

As you know, my company ChallengeWave is a tool for healthy challenges at work. at ChallengeWave, we've got a number of very large prospects (VLPs) in our sales pipeline. These prospects represent many millions of dollars of revenue. Each sale is complicated and requires approval at numerous levels. Each sale also requires a significant budgetary appropriation. These factors increase the sales cycle, or the length of time it take to close the deal and start receiving funds.

Dealing with complex sales is a work of art. It requires skills in information gathering, positioning and patience. Many months pass before we get to an implementation. This is not only frustrating, but it causes delay in verifying our newest capability with users. We've been looking at ways to increase our feedback loop with our customers. We've chosen to do this by finding customers with smaller sales cycles.

Now, the good things about smaller markets is the shorter line to decision makers and budget wranglers. We can get feedback on our business much quicker. We can validate our results without going through a 9-18 month sales cycle.

This presents us with an interesting problem. As we compete with companies many times our size, our nimbleness and ability to deliver customized solutions is a large asset for us. This asset isn't of great interest for smaller markets who may not even have a wellness strategy at all. Much less, have complicated systems to integrate with. We need to carve out a compelling, simplified offering to help small business.

Cupcake Kingpin

Getting to an understanding of this problem and defining a strategy has taken many months. When running a daily business one gets mired in details and it can be tough to see the forest for the proverbial trees. One trick I use to help me step back from details and focus on the big picture is to imagine I'm a cupcake kingpin in the cupcake business. (My years of making cupcakes for my nieces makes me an expert :) ) So I ask myself, if I ran a cupcake business, how might I handle this problem?

The first thing we must do is rephrase the issues in cupcake-ese. This helps us to over-simply the details and look at the bug picture from an outsiders perspective.

My Problem in Cupcake-ese

In cupcake-ese, the problem is we have a new, unproven recipe and we need to see if people like it enough to buy it.

How would you approach this if it was your cupcake business?

  • Would you hire an army of SEO consultants to build link backs and press releases?
  • Would you hire a market research firm to ascertain which part of the Gartner Magic Quadrant you fit into?
  • Would you just discontinue your current offerings and just offer your new product to the public at large? ( Ha Ha, you may laugh at the absurdity of this, but that is what happened with New Coke in the '80s)

My Solution In Cupcake-ese

The way to solve this problem for the cupcake business is to just make up a few batches and hand them out on the street. If people vomit in the nearest garbage can after ingesting your newest cupcake treat, your mix needs adjusting. However, if the test subjects come back with their friends, you have a winner.

So, we at ChallengeWave have a new cupcake recipe and we are looking for suckers a trial group. Group members will get 2 months of ChallengeWave for their use. Employees will be able to track their activities, challenge other employees, compete on teams and compete against other companies.

In exchange for the free service, ChallengeWave wants unvarnished feedback and help with case studies or press releases as appropriate. If you think your company might be interested in giving ChallengeWave a shot and your company is:

  • 10-50 employees
  • flexible
  • somewhat motivated (especially to change their lifestyle)
  • somewhat competitive
  • computer literate
  • team oriented

If your organization is interested in applying for a trial of ChallengeWave for your organization, let us know.


Have you considered the cupcake kingpin approach to problem solving? Have you solved problems with the cupcake (or similar) method? Tell me about it in the comments....

Job Opportunity Near Boston for Mid-Level CF Developer

I'm posting this job opportunity for a friend. This opportunity is for a mid-level ColdFusion developer who is entrepreneurially minded and wants to be a key member of a growing and exciting team. Slackers need not apply! If you are interested, Contact Me with your resume text and contact info and I'll pass the information on to the right person.

Job Description

We need a mid-level programmer to aid in the development on our Coldfusion platform. The system was developed in 2005 as a Content Management, Ecommerce, and Ticketing system. The Company has been growing very quickly over the past 2 years, with explosive growth in 2010. In order for the Company to continue to grow they must increase their efficiency and build more automated processes into the platform.

This programmer will report to the team lead and will be responsible for delivering well-written, quality software as a team member both on time and within scope.

Responsibilities

  • Function both independently as well as within a team, participating in on-going prioritization, management, development, testing and delivery of internal and external-facing web applications
  • Consult with management to identify requirements and priorities for web product development, as well as opportunities to improve Paid's performance of this function. Administer, tune and troubleshoot any of the applications in our web applications portfolio
  • Estimate, justify, and communicate budget requirements for projects
  • Aid in post-project documentation
  • Keep abreast of industry trends and developments. Research new technologies and provide recommendations

MINIMUM QUALIFICATIONS

  • 3+ years experience with ecommerce platforms & content management systems
  • Experience dealing with large-scale order processing and manifesting systems a plus
  • Direct experience in high-volume, large-scale, web-based applications
  • 3+ years building web applications in a code managed, multi-tier development environment with process release management in place
  • 1+ years experience with SQL Server specifically, including experience with: Relational Database design, along with creation of stored procedures and user-defined functions
  • 3+ years experience with ColdFusion specifically, including experience with: Coldfusion specific development - CFCs, custom tags
  • Understanding of ColdFusion Server development environment (mappings, application architecture, variable scoping, client/session management, error handling, transactions, etc.)
  • Proficiency with Subversion
  • Ability to handle multiple competing priorities in a fast-paced environment
  • Position available in our new Westborough, MA offices. While the role will require interaction with the actual day-to-day processes and individuals performing those tasks, we are flexible and allow for day(s) of telecommuting per week.

Direct candidates only at this time. (No agencies please)

Linux gaining on Apple - Current Visitors By Operating System

I happened to be researching which platforms visit my web properties. I found some unexpected trends and thought some of you might be interested.

First, the obvious. Windows (the much maligned operating system) is firmly in 1st place with 85% of traffic.

In second place, Apple, with 7.4%. Then Linux in third, with 6.44%

Linux trails Apple by less than 1%?!?!

By mindshare and mouthshare, I would have thought Apple would command a much larger lead. Especially since I write almost exclusively on technology topics.

What trends are you seeing on YOUR web properties?

IgniteRaleigh2 Our talk on Health

IgniteRaleigh was a smash success! A big thanks to Our Hash Tag LLC and Phonebooth.com for putting on a well run, creative event. A big thanks to M.C. Zach Ward (@zachward) for his skill in creating a fun, positive mood and keeping it going all night. He's a true professional.

As some of you know, I was very pleased to be chosen out of the herd to present at IgniteRaleigh 2 on Why Your Health Is The Most Important Thing You'll Ignore All Day. Having watched a number of Ignite style talks before, I knew it would be challenging to stay on message and on timing. Not much room for creative expounding when the slides auto-advance, is there? I also knew the other speakers would set a high bar by being dynamic, funny, creative and inspirational.

As I was presenting, I missed a good bit of the show. I did catch a few of the sessions, though like:

  • Janet Kennedy (@jkennedy93), 5 Bucks is Change. Her presentation was inspirational, approachable and the presentation most likely to change my life in some way. Take a look at her website http://www.5bucksischange.com/ for more information. When the recording comes available, I'll post it here.
  • George Smart's (@georgesmartTMH) great presentation on Mayberry Modernism – Why the Triangle is America's Hotspot for Way Cool Houses. I enjoy modern architecture and had no idea there were 100 noteworthy houses in the area.
  • Jess Commins (@renewabelle) made saving money sexy with her talk on How to save $100+ with a DIY energy audit. Great use of imagery to hammer the point home.
  • Elizabeth Gardner (@WRALweathergal) spoke on A day in the life of a meteorologist who gets up at 3am. This behind the curtain look into her daily routine was funny and well delivered. I might have a new favorite weatherperson.

My tips for presenting at Ignite

  • Every second counts. Either you are making your point, or wasting time.
  • Plan Plenty of Preparation. A 5 minute talk about something you are passionate about, is 20 times harder to prepare for a 1 hour talk. I give lots of 1 hour talks and I definitely had to work more at crafting this short pointed message.
  • Pick good images for your slides. I had over 100, which was whittled down to 16.
  • Double up on a slide if it deserves more than 15 seconds.
  • You will be out of sync with your slides at some point. No one will care.
  • Make recordings of your talk and listen to them for practice.
  • Put the best recording on an iPod and listen to it before your talk. It'll help you stay focused.
  • Love the crowd. The vibe at an Ignite is positive and supportive.

Special thanks go to:

  • My wife (@shannonscarlett) for helping me prepare
  • Jim Priest (@thecrumb) for adding a great deal of polish to my slides
  • Brian Erman for taping the event.

More Info

Here is a write up of IgniteRaleigh 2 by Indyblogs. Here is a Delicious page of book marks with blog recaps. Here are pictures from the event.

Watch My Presentation

Ignite: Dan Wilson from Brian Erman on Vimeo.

Get My Slide Deck

My slides are available on SlideSix, view Slide Deck for Why Your Health Is The Most Important Thing You Will Ignore All Day

A Side Effect of ySlow and Firebug

A Side Effect of ySlow and Firebug

I spent a number of hours researching a bug in a Model-Glue application. Each time a form was submitted successfully, a duplicate record showed up in the database. This application uses a number of frameworks and it wasn't very clear which layer was causing the problem.

I started to dig into the issue, looking for any rhyme or reason and pinged my good buddy Ezra Parker for some sanity checks. After some intense debugging, we found out that the second record in the database showed up after the ColdFusion request ended. I tried all sorts of programmer sorcery to find out why this second request happened and did not get much useful information. This duplicate request problem defied all logic!

Through the course of working through the information and issues, we explored many potential causes and questions like:

  • Was Model-Glue possibly adding a second redirect somewhere?
  • Was there a CFThread buried in Model-Glue, ColdSpring, Transfer or CFUniform that caused this?
  • Was there some javascript call being fired off, and replicating the request?
  • Were space hackers infiltrating my computer?
  • Am I on Candid Camera?
  • Should I just quit programming and open a Bakery?

[More]