Tuesday, October 13, 2015

Apex Candidate Forum for Nov. 2015 Elections

Totally different topic than technology, but this is another topic I care about - my government. I'm raising two young daughters and am interested in providing them with an environment where they can be safe and thrive. Our town has gotten a little bit of attention; it has definitely grown since we moved here in 2002. Tonight was a candidate forum for the local elections, which I assert means more in my day-to-day life than any other little election going on. With the growth going on here, there's definitely an increased interest in the races. When I originally registered for the event, it was going to be held at the town hall, but they soon changed it to a new high school auditorium when it was apparent there was going to be a large crowd. I would estimate there were about 300 people in attendance.

There's a mayor race with 2 candidates and a town council race with 2 spots and 5 candidates.


Town Council Forum

The town council was first up. There were five candidates and they were given 90 seconds to make opening remarks and then the moderator (WRAL's Ken Smith!) would ask five questions (pre-selected, no audience interaction), giving each candidate 90 seconds to answer the question. After the five questions, each candidate would be given 90 seconds for closing remarks. Candidates were not able to challenge or address each other. This was a forum just to give the voting public an insight into their approaches.

The candidates talked about smart growth, using our #1 ranking and attraction to be more selective with the homes & businesses that want to come here. They saw a need for better roads and more water/sewer. There's an upcoming bond on the ballot that most (all?) candidates supported. It also seems like the Land Use plan needs to be updated.

Here are my notes from the question session:

  1. What steps would you take to manage the influx of new residents?
    • Helton: Invite more businesses. Don't say no to all opportunities.
    • Jensen: Manage subdivisions with infrastructure. Incentivize businesses. Parks (called out Pleasant Park w/ 93 acres)
    • Lassiter: Sustainable growth. Use land use plan. Strict standards/high fees for builders.
    • Moyer: Set standards. Don't have to say Yes to all. Bring business to 540/64. Non-residential growth.
    • Xavier: Managed growth. Keep eye on density.
  2. What are your top two infrastructure challenges and how would you address them?
    • Jensen: Roads. Called out Kelly Rd/Olive Chapel Rd as a problem. $50M bond coming up to provide bridge over Salem St. for Peakway. Sewer/water.
    • Lassiter: Roads. Approve transportation bond. Says it won't raise taxes. He sponsored the bill of getting out of the power business and says it saves the consumers money.
    • Moyer: Traffic. Bond to help Peakway. Partner more with the DOT.
    • Xavier: Roads. Annexation needs to include sewer/water. Avoid being in the business of provider power and implement it quicker.
    • Helton: Bond. Sewer/Water is lifeblood. Looking at history, the $2M bond for sewer/water helped support the whole Beaver Creek Common shopping area.
  3. Would you support bond for Pleasant Park, even if it increases taxes?
    • Lassiter: Would need concrete plan.
    • Moyer: Agree. Would like to see plan tap into private funding. Let the public decide on the bond.
    • Xavier: Fiscal conservative. No Bond. Wants senior center before a park.
    • Helton: Needs to see a plan.
    • Jensen: Need a plan. Voters will decide.
  4. What specific role should the council play when recruiting business?
    • Moyer: Land Use Plan. Incubator.
    • Xavier: Work proactively. In unison w/ builders and residents. Facilitate/manage process.
    • Helton: Untie the hands of the economic development department. Allow them to offer incentives, such as free water/sewer for a year.
    • Jensen: Revise land use plan. Add more business to the plan. Preplan infrastructure (water/sewer), so they can have it ready when a business shows up and ready to move in.
    • Lassiter: He seemed more resistant, thinking we're fine w/ the residential percentages.
  5. Would you support a grant to match new investments for existing, expanding businesses?
    • Xavier: Works elsewhere, even w/ Dell. Yes
    • Helton: Yes. It's the right thing.
    • Jensen: 80% of our growth comes from existing businesses, so yes, we need to support that.
    • Lassiter: Skeptical, but if it's proven and ironclad, he would support it. Also if it didn't mean raising taxes. We already have a pretty good incentive with our workforce, open spaces, etc.
    • Moyer: Invest in infrastructure.
In closing, Moyer seemed to get a dig into Lassiter by saying he's not using the council race as a stepping stone (Lassiter is rumored to run for higher office next). Lassiter was thankful to everyone and wanted to remind folks he's a fiscal conservative. Jensen stressed that we need more employers and a senior citizen center. Helton wrapped it up by saying we need to take some risks and that his mother-in-law is a great chef, so he's not going anywhere.

Mayor Forum

There are two candidates. Same format as the town council, but with six questions. Even with an additional question, they were done in less than half the time it took to field five questions to five candidates.

Olive opened that he's been here for 45 years and back then, the population was 1500. He's seen the downtown whither and then revitalize. Wilkie moved here in 1990 and wants to maintain our strong sense of community.
  1. How will you support the council when there's conflict?
    • Olive: Unify council. Stop bickering and personal attacks. Work to find common ground. Meet with each member and find out what are their top five things they want to accomplish.
    • Wilkie: The mayor is the CEO of the town. Represents the residents. Bring consensus.
  2. What do you want to accomplish?
    • Wilkie: Economic development. Help small businesses grow.
    • Olive: Hold public meetings to gather feedback. Election districts to make sure all areas of Apex are equally represented. Unique shops in downtown. No chains.
  3. How would you represent Apex in state or national venues?
    • Olive: Work with Capital Area Metro to make sure Apex traffic is represented in overall plan.
    • Wilkie: Work with DOT on roads.
  4. Businesses can't find space in Apex - how would you handle this?
    • Wilkie: We should target 30% commercial tax base. Let them know we'll step up to help with infrastructure. Business-friendly.
    • Olive: We're currently 82% residential. We need to review the plan, which should be derived from vision.
  5. Explain vision of economic development.
    • Olive: It's going to come because of the #1 ranking. Need to work with existing businesses.
    • Wilkie: Show businesses that we have the talent pool already, such as the academies in the high schools.
  6. Strategies for keeping up with being the best place to live?
    • Wilkie: Being selective about businesses/subdivisions. Temper growth and selecting quality businesses and houses.
    • Olive: Need to cast a vision for 20 years out. Insist on quality.
In closing, Wilkie said that Apex has a great staff and wants to support and use them. She's unaffiliated and so she doesn't have any party agenda. She wants to keep taxes low and businesses strong. Olive talked about breaking down his candidacy into three sections: Vision (history of working across party lines), Leadership (Cisco leadership, business school as an adult, and no party agenda, just an Apex agenda), and Experience (6 years on the planning board and 4 years on the council).

There's a local Apex Voter's Guide website that's pretty good, where you can get some more information. Don't forget to vote on November 3rd!

Monday, May 19, 2014

Talks submitted to IPC/WTC



I just submitted two talks for the +International PHP Conference.
Take your PHP app to the Cloud with Google AppEngine

Do you worry about not having the right amount of servers and configurations to handle your PHP app's success? Or do you worry about paying too much money for an over-architected solution? Google’s AppEngine only charges you for what’s used and can automatically scale up & down to meet your app’s demands. It’s a great way to deploy your PHP application into the cloud with managed scalability, performance and reliability. This session will guide you through a typical implementation as well as show you how to migrate your existing applications over.
I was thinking I can use the experience I gained from the Google Cloud Developer Challenge to build upon for this talk.

I also submitted a workshop idea for +Drupal. I figure I'm still recently engaged enough with Drupal to tap into an outsider's perspective and at the same time, have the years of experience to share.
Building Your Web Presence with Drupal

If you’ve been considering using Drupal for your website, but find the documentation and vastness of the platform overwhelming, this workshop will give you a guided introduction that will give you the confidence you’re looking for. We’ll start with an overview and then go through the steps of building a site or migrating an existing site. Then we’ll highlight contributed modules & themes that can take your site to the next level. We’ll also cover how to extend Drupal by writing your own custom modules to extend Drupal farther. Finally, we’ll talk about some typical server configurations to ensure your website can handle its traffic.

And for good measure, I also submitted a talk I've given before on +Google Analytics to +WebTech Conference:

Making Cents from Google Analytics

Google Analytics is a free and powerful tool that should be utilized by every website. At first glance, you can easily retrieve common metrics, such as pageviews, visitors, etc, but if you don't dig deeper, you're missing out on some really powerful ways to monetize your website even further. This session will guide you through these deeper layers, helping you monetize your traffic.

What do you think? Sound like something you're interested in?

Monday, April 14, 2014

How to work with confirm_form in Drupal 7

Screen capture of the confirmation screen.
Either my google-fu is losing its kung-fu grip or no one has really good documentation on confirm_form. This post hopes to change that (on both respects, since I hope to be able to find my own post later ;)). I have someone who's writing some custom Drupal module code to delete an object, but we want to confirm it with the user before actually deleting the object and she's running into a wall trying to understand how to accomplish that.

The trick is to use $form_state['rebuild'] = TRUE in your submit function. This kicks it back to your form method. So the form method should have two branches, one if it's the initial request and one if it's the confirmation request. Then your submit method should also have two branches, one for the initial submission and one for the confirmation submission. You should also use $form_state['storage'] to store the underlying states and data required for state discernment and form completion. Here's a simplified gist of what I'm getting at:

The healthy dose of dpm()'s are useful to help figure out what's going on, too. If you don't know, dpm() is a great function that's provided by the devel module.

I also uploaded the example module on GitHub for your perusal, download and adoption. :)

Tuesday, December 31, 2013

My Favorite 2013 Videos

I submit my favorite 15 videos from 2013. Not necessarily that they were created in 2013, but that I became aware of them in 2013. Why 15? Why not? Let's go!

#15: Flying Eagle POV

It's one thing to imagine this or to see a CGI rendering from the LOTR movies, but it's another thing altogether to see it for real.

#14: Dream of the 90's - Portlandia on IFC

Ok, so this is not safe for work or safe for kids, but as a teenager of the 90's, I can relate to a lot of this. I just wish I watched this before going to DrupalCon in Portland back in May ... it would have explained a lot.

#13: Zachary Quinto vs. Leonard Nimoy

Battle of the Spocks. A commercial, but to hear Nimoy sing the Ballad of Bilbo Baggins again is priceless.

#12: Most Expensive Starbucks Drink

This should probably be stricken from the list for its hedonistic and consumer values, but if you were wondering how much you could spend on a Starbucks drink, look no further.

#11: Two Monkeys Demand Equal Pay

Good to see that humans aren't the only selfish species.

#10: Feynman on trains

My wife is ahead of me on appreciating Feynman and how he can make previously unapproachable subjects not only approachable, but understandable to the point where you could teach it. I enjoyed this talk on trains and had no idea they worked like this. Never really thought about it before, but now I get it.

#9: Chompy the Shark

Yeah, I couldn't paddle fast enough and never (ever) go into that body of water again.

#8: Billy Joel singing with a student accompanist

It took some stones to request this, but the guy has chops and the end result is pure magic.

#7: Speed Painter on Anderson Cooper

I had to watch this multiple times.

#6: Volvo Trucks Stunt with Jean-Claude Van Damme

Crazy stunt. Of course, Chuck Norris had to top that.

#5: Latte for SharShar

SNL has really stepped up their game this year with some great comedy, including this great parody skit on the new Starbucks Verismo system. This video is no longer available on Hulu, but it looks like you can watch it on Vimeo.

#4: Almost Pizza

Another SNL gem. This is available on YouTube ... for now. I miss Bill Hader & Kristin Wiig.

#3: What Does the Fox Say?

I'm sure I lose some hipster points for this, but it is so great and bonus points for being something I can play (& dance) with my kids.

#2: New Hotspurs Manager

When NBC got the rights to the Premier League, they made a promo video with Jason Sudeikis.

#1: Jaws recut

I will never look at Jaws the same way again and if anyone ever brings up the Jaws movie around me, I will start laughing (at least on the inside). Sooo good.


I created a playlist of the 13 videos available on YouTube for your viewing pleasure.

Thursday, November 14, 2013

Well, that was fun

So I completed work on my Google Cloud Developer Challenge project and it's live and submitted for consideration. I even put together a quick video walkthrough. Now it's time to sit back, cross my fingers and hope for the best.

The last few days have been a mad scramble, as I was done earlier, but when it came to deploying the project on the real live AppEngine, I ran into a series of production issues. The big one I posted about on StackOverflow, but after not getting any help there, I stumbled across this brilliant AppEngine/CodeIgniter boilerplate on GitHub, so I restarted the project from that and copied my controllers, models and views over there. That worked, so then it was small polish things.

+Ian Barber wrote a great post about improving the credential flow, so that inspired me to come up with a logo, which I did with the Drawing app in Google Drive. I also took out the Drive scope since I wasn't yet using Drive, although I think I will at some point, so the users can pull in files from Drive as well as save their results there.

Then when it time to submit the app, I realized the domain had to be in the format gcdc2013-X.appspot.com. D'oh! Since you cannot rename the instance name, I then had to go and create a new application, configure it, setup billing, etc for the new (& proper) name.

So now we wait & see.


Saturday, November 9, 2013

Great news, even! [appengine project]

Not sure why I didn't stumble upon this until now, but I'm glad that I waited to develop the user aspect to my project. The PHP AppEngine folks have an unofficial blog with some neat tips & tricks, including this dandy to get the Google PHP API client library working inside of your AppEngine app. This is huge because with the library, you can take advantage of some of Google's modern systems.

So now instead of using AppEngine's native User class, I can now use my OAuth login approach. The old (2007!) User class was ok, but you aren't able to do much with the resulting user, beyond getting their nickname and ID #. With OAuth, you can get their profile picture to slap into your header, ask them to integrate with their other services (which you can use the library for, too).

My guess is that Google's working towards getting the library integrated into the runtime, but there's probably some dust that needs to settle somewhere.

Wednesday, November 6, 2013

Fun with AppEngine Task Queues

So AppEngine Task Queues are fun and I say that without really digging deeply in the matter. As part of my project, I incorporated them because I figured my app may take a while to crunch through the data. You have a 60 second limit to normally respond to a user's request, which is probably sufficient enough for my needs, but just in case, I decided to use a Task Queue. That increases the crunching time limit to 10 minutes, which should totally be fine for my needs. If you need more than 10 minutes, I would suggest breaking your crunching into smaller tasks.

One of the issues I ran into was that my task would not execute. I set up the code in its own CodeIgniter controller and I was able to directly access it with my web browser, but when I added the URL to the task queue, it would just sit there. It would try to execute, but nothing would happen. I found my first clue in my AppEngine logs, which read something like this:

INFO     2013-11-06 02:52:10,700 module.py:608] default: "POST /worker/process_set HTTP/1.1" 302 -WARNING  2013-11-06 02:52:10,700 taskqueue_stub.py:1980] Task task4 failed to execute. This task will retry in 0.800 seconds


A task has to return a status between 200 and 299 (inclusive), so that 302 was the clue. 302 is the code for Found and usually is followed by an HTTP redirect Location header. I tried several different things, but what finally worked was declaring the worker path explicitly in my app.yaml (vs. letting the default handler take care of it). This is something I would have to do eventually to lock down the URL from any external requests.