Encryption: It’s For More Than Just Password

Earlier this week John Congdon gave this talk at tek13, one of the top PHP Conferences. I didn't get a chance to attend the conference this year but I did get to see a preview of the talk a couple of times as John practiced his presentation on the SDPHP group. It's very informative and has me really looking forward to a couple new features that should be released in the next version of PHP version 5.5.

Keeping It Simple

simpleI have long since abandoned "The Bank". This is not to say I squirrel away my paychecks under my mattress at home, trust me you don't want to see what is there, but I don't use Banks to hold my money instead opting to use Credit Unions. To be completely honest with you, the first Credit Union I used I don't think I even differentiated between a Bank and a Credit Union. At the time it was more of "who has the lowest fees" approach. Since then, I've worked for and opened accounts with other Credit Unions and the difference is very clear to me now and I doubt I would ever go back to a traditional Bank, at least not as my primary fulltime account.

But this post isn't about the pros of Credit Unions or the cons on the Bank industry. Instead this is a post about my experience , to date, and opinion of a new form of banking and a new service called "Simple".  Simple is not a traditional Bank and in fact is a new approach to Banking. For starters, Simple is a completely virtual bank, with no physical locations. Simple is currently by invitation only and I was just invited sometime back. As of today, my account is still not fully enabled but I will get back to that in a little while.

My primary Credit Union is pretty aggressive and stays on top of a lot of the new offerings. They have a very verbose web site that allows me to do a lot with my account, tons of free ATMs, and features such as mobile check deposit. But Simple promises to take managing you money one step further. It's been described as a blend of  a Bank and Mint.com. Allowing you to closely track and graph how you are spending money and what you are spending money on. It also allows you to do things like set goals and contribute money to those goal, in essence creating what seem to be small virtual savings accounts.

Being the Geek I am, this platform appealed to me hence why I signed up for an invite. Not sure how long ago I had requested and account and I had honestly forgotten about it when I got the email giving me access.  Once I got the invite it took me a couple of days to pull the trigger and deposit some money into the account. I just really didn't have a good reason to create another account with another financial institution. However one thing that has always bugged me with the my current accounts is the fragmentation. To a degree this is self-imposed, I would take a car loan with one because of a better rate, then open a credit card with another for the same reason. We have accounts for our daughters and I have yet another account for my business. Moving money between the various account at the various institutions has proven to be somewhat of a challenge. Bouncing money between different accounts within the same Credit Union is simple and happen instantaneously but I long for being able to move my money around like that between different Credit Unions. I kind of hoped Simple would offer something like this.

To date I don't know if they will or how efficient it will be, one reason for this is because my account as I mentioned earlier is still not 100% enabled. Signing up was  a little challenging. Security is obviously important to Simple and unfortunately security is not historically user-friendly. You also need to make an initial deposit and then your ID needs to be confirmed. It seems this took a couple days to process, but once completed then I needed to create my log in information to my account. Once  you have a log in you still don't have any money in your account because that initial deposit in kind of in limbo until all this effort is completed and have you signed off and acknowledged all their agreements and disclaimers.

This is where I am today, I have an account and my initial deposit is still pending. So far my impression are pretty simple (see what I did there). After creating my account I did experience a day where I had issues logging into the account when Simple kept saying I was using the wrong username and password. As a long time user of LastPass I knew that wasn't correct and the problem did seem to clear itself up the next day. I still don't have any money in my account that I can do anything with, it's still in a pending state. There are a lot of ways to get money into your account but I have yet to see many ways of getting money out however this may be a limitation to my account right now because the account is essentially empty.

Moving forward, I am going to track my money in this account very closely. The main things I am going to look for a fees, see where they are and how much they are. Also how easy is it to get access to my money, and how easily can I use to pay bills or move to other accounts.  If you are interested in some particular aspect of Simple, leave a comment below and if it something I can check out for you I will.

 

2 Weeks as a Programmer

Screenshot_5_13_13_5_46_PM-3I am starting the 3rd week of my journey, you see I am a “seasoned” IT guy. I’ve been working in the IT industry professionally, in some form or fashion, for a number of years. I’ve been tinkering with computers longer than that. My first computer was a TRS80-CoCo2 I got for Christmas, I want to say back in 1984.

The first thing I did was teach myself BASIC. I would spend hours coding small applications that really didn’t do much of anything. I also started to tinker around with how the computer worked, how did it communicate with my dot-matrix printer, or the joy stick. This opened up my vision of the field of computers a lot.

As an adult I found myself in the IT field. This really wasn’t that surprising. I had found myself on the track of an Operations guy. You may ask yourself “What is a ‘Operations Guy’?”, basically anything short of programming or one of the specialized fields like security, databases, etc. Ops is the heart of everything, making the systems talk to each other and typically the guys who work the odd hours, weekends and holiday to make changes and not impact day-to-day production. We are talking networking, hardware, backups, managing, monitoring, patching, so on and so on.

This is a great field to build a career on, my only problem was I love programming. I mean its one of the things I am passionate about. For years I was a hobby developer, building small applications here and there on the side. I was also fortunate in the sense I always seem to manage to have small development task at work. The longer I worked in the IT field the more I wanted to focus on development.

A few years back the phrase “DevOps” was really gaining popularity and I tried to position myself more and more into a DevOps role. At the time I was working for a Fortune 100 company. Very corporate in its ways and very slow-moving. They pretty much had the opposite philosophy, leaning more to people becoming very specialized in a specific field or task. About a year ago I decided to make a change and took on a role with a much smaller company in hopes to develop more of the DevOps role. At first it was very promising but eventually it also turned into a typically Operations role.

All this time I continued to better my development skills. Learning as much as I could from languages to best practices. I got more and more involved with the development community and developed some fantastic connections and friendships. When I expressed how unsatisfied I was with the direction my job was taking it was through their encouragement I decided to take somewhat of a leap and look for a position that was more focused on development.

Today I start my 3rd week as a developer. I will chronicle this adventure here.

New SDPHP Mentoring Program

I am helping organize a mentoring program for the San Diego PHP User group. We officially announced the program at last nights meeting.

The SDPHP Group is always looking for what it can do to better strengthen the PHP community in San Diego. It is in this spirit we are launching a project to help facilitate PHP Mentorship. The purpose of this project is to give individuals looking for guidance and personal development with PHP related topics a clear avenue to find people willing to help them. As well as to help organize individuals who are willing to offer guidance and a support, by giving them network to allow them to give the best help possible.

Feel free to check out the full posting, especially if you are interested in getting involved with the project >> SDPHP Mentoring Program

SCALE 11x Interview: Philip Ballew

I got the opportunity to do another Scale11x interview, this time with Philip Ballew. Philip was a real pleasure to talk to and I even got the opportunity to meet with him in person since he is a San Diegan. Philip is a great guy, very passionate about Open Source.  I am looking forward to catching his talks up in L.A. later this week at Scale.

Video Interview: Philip Ballew | SCALE 11x.

Open Source Ecology

I tweeted and G+ about this story yesterday but I also wanted to add it here for anyone who might stumble onto it. If you thought Open Source was just about free software, limited to maybe something you would run on your desktop or phone, well you couldn't be more wrong. There is a movement of people who are applying Open Source philosophy and licensing to a scale you have probably never considered, Industrial Machines. The creation of physical working solutions for things like farming and agriculture. We are talking things like brick presses, bread ovens, tractors, saws, and cement mixers.

Probably one of the biggest efforts in this field, if not flat-out the biggest, is the Global Village Construction Set

I really encourage you to check it out opensourceecology.org.

SCALE 11x Interview: Mark Hinkle

This is my latest interview for SCALE11x which is coming up of Feb 22nd. This interview is with Mark Hinkle from Citrix.

Mark Hinkle works for Citrix as the Senior Director of Cloud Computing and will be speaking a couple times at SCALE11X. We had some time to talk to Mark about his talk at SCALE11X, Open Source, and Cloud.

This was just a Q&A over email so no video. You can read the full interview on the SCALE11x web site >> Interview: Mark Hinkle | SCALE 11x.

A debit I can never repay

opensourceThere are certain debits that you will simply never be able to payback in full. For me the big ones are being raised and nurtured by my parent, the teachers who educated me, and the one that to this day contributes to me and my family, Open Source. I get way more from Open Source than I will ever be able to give back. I've been so deeply emerged into Open Source culture and philosophy that I've totally lost perspective of the "cool factor". The massive advancements and low barrier of entry is such a normal thing in Open Source I don't really think twice about it. For the most part the battles over the myths around not being able to make money from Open Source, or Open Source not being supported, or that Open Source is generally bad have all be fought and disproven time and time again where it's not even fun engaging in those conversations anymore. I have exposed myself to so many different solutions and platforms which have let me grow so much. Solutions from basic web servers to LDAPs, databases (relational and NoSQL), monitoring, CRM's, File Servers, Firewalls, IDS, Security scanning, Programming (PHP, Rails, Python, Perl, Java), Mail Servers, Proxy, DNS, BackUps, Version Control, Media Servers, Telephony, Analytics, and so many more. All these I've at some point had taken a significant amount of time to really dive into and learn, and all at zero financial cost to me for the experience.

I am not a preachy Open Source zealot who screams about the evils of proprietary solutions. I am very comfortable with my Open Source status and if you ask me my opinion I will give them to you. This has let me retain some very Microsoft focused friends. I forget they are Microsoft people, they forget I am an Open Source person. This lead to a recent conversation in which my MS Friend was frustrated with his MSSQL implementation and was complaining about not being able to afford Oracle or IBMs solutions. No, this isn't going to be another "look you I converted and how" post. I did engage in the typical Open Source database solution conversation with him, of which there was a good amount of "it can't be as good as a 'real' database, it's just not possible" statements made. Yeah there is still this much ignorance on the topic. But it got me thinking about how that is just not an issue in my universe. If I don't like a solution, my main concern if I don't have the time or knowledge to change it, is how long will it take me to migrate to another solution. This event got me thinking more and more about how I take this way of thinking for granted and I started thinking about how I take Open Source for granted.

I am no spring chicken, I've been messing with computers in some form or fashion since my Dad bought me my first, newly released, Radio Shack CoCo TRS-80, and I've been seriously focused on Open Source for the past 15 years. Needless to say, I've been doing this for a while. I recently meet a couple new comers to the Open Source world and they reminded me of the excitement of it all. New desktop, new tools, powerful tools, exploration. I've forgotten how exciting it was booting up my Linux desktop. Not just the first time but for months. Or being in public and having someone seeing me using a Linux desktop and ask me questions about it. I still get asked question from time to time but my "giddiness" of having it is no longer there. It is refreshing to see that this still excites and intrigues people.

There is no real point to this posting, just me rambling and wanting to remind myself when I reread my old post and get to this one; stop, think about what you have and think about what you are doing to contribute back.

Scale11x Interview: Jorge Castro – Juju

I was asked if I would be interested in conducting some interviews of speakers who are going to speak at The Eleventh Annual Southern California Linux Expo (Scale11x) February 22-24, 2013 Hilton Los Angeles International Airport and needless to say I jumped at the opportunity.

This is my first interview with Jorge Castro of Canonical and we discuss Juju, MaaS, Ubuntu Cloud, and his upcoming presentations and workshop.

You can catch Jorge and learn more about Juju at the Eleventh Annual Southern California Linux Expo, February 22-24, http://www.socallinuxexpo.org/blog/interview-jorge-castro-juju

Awesome Free PHP Resources: Web & PHP Magazine

I'm doing a little cross posting here to promote a post I wrote on the SDPHP site:

There are a ton of good PHP resources out on the net, both free and paid. Web & PHP Magazine is one of those resources that raises that bar from your typical smart developer posting blog articles on the weekend to a very polished, well-organized publication. Best of all, IT’S FREE!!

Rest of the story Awesome Free PHP Resources: Web & PHP Magazine.

Asking Github how it’s feeling

One recent project I worked on depended very heavily on Github. If you don't know what Github is it's a hosting service for projects that uses Git version control and if I really needed to explain that to you then the rest of this post probably won't do much for you.

The problem with depending on external services and API is that when they are having a bad day, then you are probably having a bad day. The project I was a part of was a Node application that would have to be built and rebuilt several times on several different machines, we are talking in the thousands. This application would reach out to Github for several modules which were essential to the build process. Needless to say there are ways to architect this solution to remove this dependency but that isn't the point of this post ;-)

Github has a great status page which does a good job at keeping you informed on the current going on with the Github platform but the problem with it is you need to go to the page, get the status, and if there is an issue continually return to see if there are any updates. Thanks to developer Romin Irani (@iromin on twitter) you can now interact with Github over IM and more importantly have his GitHub Status Bot send you notifications whenever Github has any sort of disruption, planned or otherwise.

GitHub Status Bot is pretty simple and easy to use. Its worth noting that GitHub Status Bot is not an "official" Github Bot and is hosted Google AppEngine. Romin Irani also makes his source code available on Github

Using GitHub Status Bot is pretty straight forward

  • First, simply add githubstatusbot@appspot.com to your Gtalk buddy list
  • Once added send a message to the bot by typing 'help'. This will provide you a list of commands that the bot will respond to.

GitHub Status Bot - Help

  • 'status' gives you the current system status

Screenshot_1_26_13_10_17_PM-2

  • 'last-message' gets the last human communication, status, and timestamp.

Screenshot_1_26_13_10_23_PM

  • 'messages' will get you a list of the most recent communications with status and timestamp.

Screenshot_1_26_13_10_28_PM

  • 'subscribe' is a key command, what this does is lets the bot know you want to be notified via Google Talk if GitHub is down.

Screenshot_1_26_13_10_34_PM

  • 'unsubscribe' will remove yourself from any 'GitHub is down' status updates. I've found, unless I was having issues or needed to keep a close eye on Github that the status message will tend to get a little chatty for day to day following.

Screenshot_1_26_13_10_38_PM

  • And finally if you just want to be reminded who you have to thank for this awesome service, and what version you are on, type in 'about'

Screenshot_1_26_13_10_43_PM

That's pretty much it, hope you find the GitHub Status Bot as helpful as I do.

BASH Prompt Pr0n

So I've been asked a couple of times for this post and I keep not getting around to it so thought I would take some time and get this out. My bash prompt is very informative, long, and functional and that is they way I like it. One prompt actually results in 2 lines in my terminal being used. This is my current Bash Prompt in terminal:

BashPrompt

  1. First thing to notice is my command prompt is actually on the second line, below all the information. This is by design.
  2. The first part of the prompt in the typical username and computer name. Nothing special. A lot of people remove this but I keep it. When all the voices in my head start shouting at each other I can always look at my command prompt and remember who I am.
  3. Next is my location on the computer. Again, a lot of people will just have this piece represent only the current folder but I like to see the entire path. Main reason is I might have several Project folders on my system and this helps me to see which Project folder I am in.
  4. Then comes this little piece of magic that I love, my Git Branch. This section only displays when I am in a directory structure related to a Git checkout and shows me which branch of that git checkout I am working on. This section, depending on your system, may require different set ups. Since I am on my OSX system what I am using is git-completion.bash (or git-prompt.sh). One of the better post on how to install this correctly can be found on a StackOverFlow.com thread. Keep in mind, if I am not on a Git branch none of this section displays, not even the []- which makes it is very clean.
  5. Finally I like to add a time stamp to the end of my prompt. This allows me to return to a console and figure out when I last ran something from that window. It's very helpful. The time doesn't stay current, meaning it won't continue to keep time, it will only show you the time when that prompt was created and that is it.

The prompt does include the different colors for the different sections if your system supports it and most Unix type console do support it. Here is the magic that makes this happen.

There are a couple of ways to play around with this, tweak it until you find what you like, without impacting your system permanently until you want to. At the command prompt simply copy and past the entire line including the word "export", you should be able to see the new prompt immediately. Once you've tweaked it to exactly what you want you can add it to either you .profile or .bash_profile files however you can remove the word export when you do that and just start the line at PS1

If you would like a version without the Git Branch indicator this version should work for you

Here is a link to some other helpful and fun Bash Prompts

Enjoy and Happy Bash'ing
Update: My buddy @johncongdon on twitter pointed out by adding export GIT_PS1_SHOWDIRTYSTATE=1 to your .profile or .bash_profile then you will also get the status of the Git branch.

Screenshot_2_7_13_2_55_PM-2

I learned US Airways likes to hold its seats hostage for more money

airline-seats2This is going to be a quick rant about US Airway's Poor Customer Service. I'll try and keep short. I basically just want to rant and vent about what I consider to be a appalling practice and customer service when I attempted to make a purchase of a couple airline tickets with US Airways. You have been warned.

First, let me say I understand and appreciate everything airlines try to do to stay competitive and in business. I personally can't imagine all the logistics and cost involved with running an airline. I also feel as a consumer you need to step up when you feel you are treated unfairly. Typically there is a shared blamed for the scenario, and in that spirit I will share mine.

The week between Christmas and New Year is not typically the best time of year to travel if you don't have to. More importantly you try not to do any "last minute" traveling during this time but unfortunately I had a passing of a close Aunt that put me into a situation where I need fly from California to Maryland with little planning to do so. For the past couple days I've been cursing the various travel sites trying to find the best deal on air fares. I was paying for 2 tickets, my sister and myself, and since this happen unexpectedly and after holiday gift shopping, funds would be an issue. Found an OK price with US Airways of $1500 which would get both of us round trip tickets to Maryland in time to make the funeral and be back in California for work.

On US Airways web site I started the ticket purchasing process, this is where it gets weird. I am a big guy, around 6'5 and over 300 lbs so traveling on planes in general isn't usually a pleasant experience. As such I am pretty insistent that I select my seats, typically an aisle seat and if I can swing it an exit row. This is also one of the reasons why I avoid flying an airline like Southwest unless as an absolute last resort. I believe I was on one of my last clicks to complete the purchase with US Airways when I got to the section to select my seat, however I couldn't select a seat, not without paying an additional fee?

The fees ranged from $45 to $15 depending on which leg of the trip I was purchasing. Yes I would need to preform this process for each layover when I changed planes. This is where I got really confused, what was my $1500 purchasing? There were also seats that could only be reserved by their Preferred Travels, OK I get it all airlines have perks like this but I surely must have been missing something for the rest of the seats. Confused a call was placed to US Airways customer support, which oddly enough had me calling the Philippines.

I explained the scenario as I best understood it to the customer support representative and to my shock they explained to me that in fact US Airways "reserved" 25% of the seats for same day travel. This further confused me and so I asked, was I buying 2 seats on the plan or not? The US Airway representative assured me I would have 2 seats they just couldn't guarantee which seats they would be and that it was "impossible for them to assign seats" at that point. My question in reply was, "Would it be possible if I paid the additional fee?" and their response was "Yes we could then reserve the seats."

So it wasn't impossible, in fact it was very possible, it was more a matter of US Airways trying to scam me out of more money for something I was already prepared to pay for. This practice really seems to boarder on the criminal and racketeering. I was floored and disappointed with this practice from US Airways. Needless to say I opted not to purchase tickets with US Airway because of the very deceptive behavior. And I am still not honestly sure if I had purchased the tickets if we would have actually had seats on the plan or risked being "bumped" for someone who opted to pay the additional fee for the seats.

That's pretty much it, end of rant. Thanks for listening InterTubes.

15 Minutes with CakePHP

I recently gave a quick, and I mean quick, presentation on CakePHP to our San Diego PHP User Group. The presentation consisted of 5 slides of which only 2 were actually about CakePHP. The rest of my presentation was me building a quick blog which I might add I successfully did in about 15 minutes.

SDPHP CakePHP Presentation 1 SDPHP CakePHP Presentation

So the presentation went something like this:

But it probably goes without saying that 2 slides and a quick 15 minute demo really doesn't do a framework like CakePHP justice. CakePHP is an awesome framework with a ton features and of course you can always read the documentation yourself. However, there did seem to be a lot of interest in the command line interface I was using to build my demo code with.

I showed a lot of the functionality of the 'Console/cake bake' command. To recap a little.

> Console/cake bake
---------------------------------------------------------------
App : app
Path: /path-to/project/app
---------------------------------------------------------------
Interactive Bake Shell
---------------------------------------------------------------
[D]atabase Configuration
[M]odel
[V]iew
[C]ontroller
[P]roject
[F]ixture
[T]est case
[Q]uit
What would you like to Bake? (D/M/V/C/P/F/T/Q)
>

I also demonstrated you can run

> Console/cake bake all

and we saw all sorts of auto code generation magic happen.

But there are also other options I didn't touch one.

> Console/cake bake db_config
> Console/cake bake model
> Console/cake bake view
> Console/cake bake controller
> Console/cake bake project
> Console/cake bake fixture
> Console/cake bake test
> Console/cake bake plugin plugin_name

One of my complaints was that CakePHP didn't have built-in migrations. Cake does have a couple commands to make moving database around a little easier.

Now we take a look at Console/cake schema.

We start with

> Console/cake schema generate

This will generate a schema.php of the data in your projects database.

To then use this data on another project or database you run

> Console/cake create create

which uses that schema.php to import the schema.

You can also use the schema command to create a database dump file

> Console/cake schema dump --write filename.sql

Cake Shell also comes with a ACL Shell interface for managing and inspecting Acl databases. We spoke a lot about the need to run PHPUnit test and touched on how cake bake had the option to generate test files. As such the command line interface also includes

> Console/cake test

One of the more interesting commands, and one I have not tried using myself is the Upgrade command.

> Console/cake upgrade all

According to the Cake documentation "The upgrade shell will do most of the work to upgrade your CakePHP application from 1.3 to 2.0." which, if worked as advertised, would make updating projects to the latest version of the framework a lot easier.

The full list of shells available look like this

Available Shells:

[CORE] acl, api, bake, command_list, console, i18n, schema, test, testsuite, upgrade

Hope this perks the interest of some of you to give CakePHP a try.

3 on 3 wheelchair basketball tournament

Had the pleasure to play in a 3 on 3 wheelchair basketball tournament today for the San Diego Adaptive Sports Foundation. Good group of people offering a competitive athletic environment for everyone.