Things I Learned in 2013

December 14, 2013 Leave a comment

Last year I had a series of things I learned in 2012.  I decided not to continue the monthly posts this year but was still keeping track of things as I came across them. Here’s a short list from the year.

Technologies

  1. SAML 2.0 (utilizing OneLogin‘s ruby-saml gem)
  2. Salesforce Development (APEX, SOQL, REST/SOAP API, Chatter, Single Sign-On, etc.)
  3. Wrote soapforce gem based on Savon2 and restforce gem
  4. elasticsearch
  5. EngineYard – Excellent PaaS Provider
  6. Learned a number of things about MySQL and Postgres that I didn’t know before.
  7. Numerous remote APIs for integrating with service providers (Box, DocuSign, EasyPDFCloud, ConvertApi, DocRaptor)

HTML/CSS/Javascript

  1. fontawesome.io
  2. CSS content property
  3. HTML5 download attribute
  4. HTML5 Demos  – contenteditable, storage, history
  5. CSS:   user-select: none;
  6. $x(“//input[@type=’checkbox’]”)  – Locate elements with XPath in FireBug
  7. IE has a maximum number of style tags and CSS rules it will load.
  8. Fire custom event with pure javascript: document.addEventListener(‘myAwesomeEvent’, function() { alert(‘hello world’); }); var evt = document.createEvent(“Event”);  evt.initEvent(“myAwesomeEvent”,true,true);  document.dispatchEvent(evt);
  9. @cc_on – IE specific conditional property
  10. href=”javascript:void(0)” triggers onbeforeunload event in IE (*sign*)

Rails/Ruby

  1. rake db:migrate:status
  2. Tire gem for elasticsearch
  3. Rails Model.update_all
  4. Time.now.xmlschema
  5. rails runner
  6. guard (jasmine, rspec, rails, cucumber, etc)
  7. gems: bulletmailcatcherquiet_assets, better_errors
  8. bundle outdated
  9. Gemfile: gem ‘name’, github: ‘user/repo’
  10. ActiveRecord Batches
  11. delayed_job
  12. respond_to_missing?

Development Support

  1. requestb.in – Great debugging tool for http requests
  2. base64decode.org & base64encode.org
  3. cssclean.com & codebeautifier.com
  4. xmlprettyprint.com
  5. jsonviewer.net
  6. www.downforeveryoneorjustme.com
  7. Freenode web chat
  8. findicons.com
  9. cssarrowplease.com
  10. www.email-standards.org

Products/Services

  1. sendgrid.net
  2. logentries
  3. Crocodoc – HTML5 Document Viewer (Acquired by Box May 2013)
  4. http://www.ilightbox.net
  5. http://getfractal.com/
  6. https://bitdeli.com/
  7. http://imperavi.com/redactor/
  8. http://www.neo4j.org/
  9. https://www.paywithatweet.com
  10. https://www.inkfilepicker.com/

Random

  1. CMD+L takes you to address bar in Google Chrome on OSX
  2. Option+Enter to duplicate a tab in Google Chrome on OSX
  3. Generate the public portion of the key:  ssh-keygen -y -f <name of key>
  4. Email notes to Evernote
  5. Argument Dependent Lookup (ADL) (C++)
  6. Dump/Load over SSH:  mysqldump <dbname> | ssh <new_db_master_host> “mysql <dbname>”

Life

  1. Made my first strawberry rhubarb pie. Rhubarb was ruled (by a New York court) to be a fruit in 1947 although technically a vegetable.
  2. Learned a lot about baseball after becoming a St Louis Cardinals fan this year.
  3. Bought my first motorcycle and have learned a lot about riding and taking care of a bike.
  4. Learned a bit about Seattle during my 6 week stay.
  5. Learned how to make a killer Egg Nog!
  6. Learned how to make soft pretzels
Categories: Uncategorized

Introduction to SAML

November 24, 2013 Leave a comment

I recently introduced myself to SAML, Security Assertion Markup Language, and thought I’d pass along what I learned.  These two [1 and 2] YouTube videos by PingIdentity were a helpful introduction to SAML from a high level view.

The parties involved:

  1. Identity Provider (IdP) – OneLogin, Salesforce, Okta, etc.
  2. Service Provider (SP) – TinderBox, Box, Concur, etc.
  3. You (Me)

SAML Transaction

To see the following steps in action, check out this great walk through with more detail about the messages.

Step 1:  Unauthenticated user (You) tries to access a hosted service (SP).

GET https//www.hostedservice.com/login

Step 2: SP generates an Authentication Request (AuthnRequest)

[gist https://gist.github.com/jheth/7961957]

Step 3: SP submits request to IdP (HTTP Redirect)

GET https://app.onelogin.com/trust/saml2/http-post/sso/XXX?SAMLRequest=[encoded]

Step 4: IdP handles SAML Request and Authenticates User

In most cases the authentication step is done through the typical username/password login form. Since login was initiated with a SAML Request the IdP knows it must send the desired SAML Response.

Step 5: IdP generates SAML Response XML Document

[gist https://gist.github.com/jheth/7962107]

Step 6: IdP submits response to SP

POST https//www.hostedservice.com/sso/saml/acs SAMLResponse: [base64 encoded XML]

Step 7: SP consumes and validates assertion

The XML document is checked for validity, which includes the conditions NotBefore and NotOnOrAfter (timestamps) and AudienceRestriction.  Note: Watch out for clock-drift with the timestamp attributes, you may need to account for slight variations.

Step 8: SP grants or denies access based on the response.

Once determined to be a valid request your application is responsible for logging the user in without prompting for additional information.  Once authenticated the user is redirected to the resource they originally requested.

 

Configuration

As you can see above, there are specific URLs used by both the IdP and SP during the request/response phase.  This is where configuration and an exchange of information is necessary and where some of the security of SAML comes into play.

The SP at a minimum needs to know the following, which is provided by your IdP when you register with them.

  • IdP SSO Target URL:  https://app.onelogin.com/trust/saml2/http-post/sso/XXXXXX
  • IdP Certificate Fingerprint (SHA-1):  8D:96:A0:99:BC:11:F7:2D:70:…
  • Name Identifier Format:  urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress

The IdP at a minimum needs to know where to send the assertions.

SAML uses public/private key combination to sign and verify requests and their response.  If a fingerprint is not provided you can generate it from the x.509 certificate.

openssl x509 -noout -in cert.pem -fingerprint

ruby-saml

Now that you understand the transaction and configuration, try adding SAML support to your Rails/Sinatra application.  I chose the ruby-saml gem created by OneLogin to handle the technical details.  The README has all the instructions you need to get started.  ProTip: A helpful development tool for watching the request/response exchange is the SSO-Tracer plugin for Firefox.

The two routes you need are for initiating login (AuthnRequest) with the IdP (Ex./sso/saml/login) and for consuming the assertion messages (Ex. /sso/saml/acs).

User Provisioning with SAML

Not only can we authenticate existing users but we can auto-provision accounts for first-time logins. This is a great way to reduce account administration between systems.   The SAML Response to the Service Provider can contain a list of user attributes (email, username, first/last name, etc) that can be used to provision a new account.   In your assertion consumer method (/sso/saml/acs), if you find that the user does not exist in your system you can redirect to a new user workflow or auto-provision based on the provided attributes.

Categories: Uncategorized Tags: ,

External routing to localhost

May 5, 2013 Leave a comment

Over the last couple months I’ve thought many times: “How can I get public/external access to my local machine?”  I’ve been working with OAuth providers that want a callback URL and integrating a Rails application with Salesforce.  I wanted those public applications to talk to my local machine for ease of development.  Sure I could push my project to Heroku or some other public server but it’s just so much easier to have things local for quick development and debugging.

These instructions assume you are connected to a router (probably wireless), that you can administer, which is connected to your ISP’s cable modem.

1) Enable the DMZ function of your router. I’m using DD-WRT which gives me some additional functionality so hopefully you can find a DMZ option in your configuration.  NOTICE:  “Enabling this option will expose the specified host to the Internet. All ports will be accessible from the Internet.”  It’s recommended to have a firewall enabled on your machine to protect yourself.

The configuration should ask for a specific IP to route all public traffic to.  Find the IP address assigned to you (typically in the 192.168.x.x range) and punch it in.

2) Now that you’re machine is accessible you need to know the external IP to use. The easiest way is to find the WAN IP listed in the admin console of your router.  If your router allows shell access you can also ssh in and run ifconfig or some variant to get the external IP.

You should now be able to visit that external IP from your browser and it will resolve to port 80 on your local machine.  Yay!
If you don’t have anything running on port 80 you’ll likely get an error response. If you’re running a rails server, use pu.bl.ic.ip:3000.

3) Taking it a step further is routing an official domain name to the public IP we found in step 2.  I purchased a domain for personal use and then created a new DNS A Record that points a specific subdomain (localhost.mydomain.com) to the public IP of my cable modem.

Now I can just type in a domain name and I’m routed directly to my laptop.

Yes, my locally assigned IP could change and I’d need to update the router DMZ configuration.
Yes, it’s possible that my cable modem IP will change and I’d need to update the DNS A Name record.

 

Categories: Uncategorized

Apache Virtual Host and Rails

February 15, 2013 Leave a comment

I started working on a new rails project and wanted to use specific domain names and route traffic through port 80.  There are several ways to setup Apache as front to your Rails application but I only wanted stock Apache and a standalone rails instance.   I didn’t want to hassle with anything else.

1) Start your Rails server as you normally would.  Let’s assume it’s running at http://localhost:3000

2) Create an Apache Virtual Host that proxies requests to  http://localhost:3000

<VirtualHost *:80>
ServerName test.application.vhost
ProxyPreserveHost On
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>

3) Edit your /etc/hosts file to route test.application.vhost to 127.0.0.1

Notes for Mac OS Lion
Virtual Hosts are configured in /etc/apache2/extra/httpd-vhosts.conf
If necessary, modify “/etc/apache2/httpd.conf” and uncomment the line “Include /private/etc/apache2/extra/httpd-vhosts.conf”
sudo apachectl configtest
sudo apachectl restart

Categories: Uncategorized

Things I Learned in December

January 3, 2013 1 comment
  1. Got sucked into Downton Abbey. Watched Season 1 using Amazon Video On Demand. Thanks to the 30 day Amazon Prime trial.
  2. Learned about the engineyard gem for command line deployments (ey deploy).
  3. Introduced to Librarian-Chef and the Cheffile for managing infrastructure repositories (gem install librarian).
  4. Static analyzer tool for numerous languages – Code Surveyor
  5. Learned that Google is offering all these services from their Cloud Platform
  6. Linter for Opscode Chef cookbooks: foodcritic
  7. Learning how to make sourdough bread from a starter.
  8. https://testflightapp.com/
  9. Learned how to do a many-to-many relationship in Rails using both has_many => :through and has_and_belongs_to_many
  10. The screenshot.png file in your WordPress theme is displayed when selecting a theme.
  11. Learned that oci_fetch_all doesn’t respect the OCI_BOTH flag but oci_fetch_array does.  Boo.
  12. How to deploy to Heroku via TravisCI
    1. Ace Editor
  13. Learned the formula for converting between Celsius and Farhrenheit:  (C * 9/5) + 32 = F  and the opposite is (F – 32) * 5/9 = C
  14. Learned about http://pygments.appspot.com/ while learning about Resque for Rails.
  15. The YUM package manager stands for “Yellowdog Updater, Modified”.  A rewrite of Yellowdog Updater (YUP).
  16. Learned about the sudoku-like kenken
  17. Used GitHub OAuth Plugin to setup authentication on a local Jenkins instance.
  18. Implemented DbalSessionStorage object for Symfony 2.0, based on the 2.2 version
  19. Learned how to make homemade flour tortillas.
  20. Learned about __PHP_Incomplete_Class and that I needed to autoload a class to avoid it.
  21. Signed up for NewRelic.com and got a free Nerd Life t-shirt.
  22. Got a history lesson about Hanakkah, never knew much about it.
  23. Experienced Raclette for the first time.
  24. Made croissant dough from scratch on my way to making egg souffles.
  25. Learned that a movie runtime includes the closing credits.
  26. How to setup custom domains with Heroku.
  27. Learned why NORAD started tracking Santa.
  28. LEGO – Comes from Danish words LEG GODT (play well).  LEGO in Latin means “I put together”
  29. YARD – Ruby Documentation
  30. NatGeo LEGO is impressive.
  31. 12 Days of Christmas has more meaning than I realized. The 12 days are between Dec 25 and Jan 6.

Things I Learned in November

December 1, 2012 Leave a comment
  1. Learned about Ruby’s & operator to switch between a Proc to block and block to Proc.
  2. dbms_utility.format_error_backtrace();
  3. Learned how to create a custom UIViewTableCell and respond to different static table rows.
  4. Rails Authorization with CanCan
  5. iPhone SDK: NSUserDefaults
  6. https://codeclimate.com/
  7. http://www.cherrypy.org/
  8. Learned about mod_rpaf and passing client ips to apache from nginx.
  9. Learned about rails_upgrade plugin for converting app from Rails 2 to Rails 3
    1. Attended my first Virginia Tech football game (VT vs FSU)
  10. Ate at Biscuitville for the first time
  11. Indonesia consists of ~17,500 islands and ~742 different languages and dialects.
  12. Learning about Rails after_find and after_initialize callbacks and their usage difference with Rails 2 and 3.
  13. Used UISwitch and NSUserDefaults in an iPhone application to create a Favorites table view.
  14. Learned how to use savon to talk to the MindBody API
  15. Learned how to use UIView tag property to store an integer value and pass it along to the next view controller when performing a segue.
  16. Learned about http://platform.fatsecret.com/ and the fatsecret Ruby gem for talking to their RESTful API.
  17. Used devise gem in a rails application for the first time.
  18. Made my first real pumpkin pie from scratch. Included roasting the pumpking and making the crust by hand.
  19. Cryptic Ruby Global Variables and Their Meanings
  20. http://www.fleetio.com/
  21. Learned about gettinderbox.com for proposal and contract management.
  22. Learned that letting dough rise all day causes the yeast and sugar to ferment and make perfectly good cinnamon rolls taste bad.
  23. Signed up for Amazon CloudDrive (5G free and dirt cheap for larger plans)
  24. Discovered ‘Send to Kindle‘ Chrome plugin.
  25. Shot a SigSauer P229 9MM, GLOCK .45 and S&W 38 Special revolver for the first time.
  26. Learned about some really cool work being done at http://www.invincea.com/ for threat prevention and detection.
  27. Learned that Jenkin’s LDAP managerPassword is stored base64 encoded.
  28. Learned about http://www.browserstack.com/ for cloud based browser testing.
  29. Learned about rack-offline and html manifest file to support offline browsing.
  30. https://www.cubby.com/

Things I Learned in October

October 30, 2012 Leave a comment

October

  1. KnpLabs/snappy and mreiferson/php-wkhtmltox based on wkhtmltopdf
  2. Learned how to associate a filetype for VIM syntax highlighting.
  3. Learning how to write a PHP extension in C.
  4. http://geekli.st/
  5. http://thebrooklyngarage.com/about_new.html
  6. Visited local motorcycle dealer and learned about rear, mid and forward controls. Since I’m tall, forward is preferred.
  7. Motorcycle Lingo: Hardtail has no rear suspension, Softtail does.
  8. Learned how to work with PHP ZVALs and resources when writing an extension in C.
  9. JavaScript on the Command Line via the wat talk.
  10. HATEOAS
  11. SQLPlus: NEW_VALUE
    1. git archive ––format=zip
  12. Learned of Oracle’s DBMS_SQL package.
  13. Learned “basima” means thank you (to a man) in Assyrian. Their language has specific words when directed towards men or women.
  14. Yonanas
  15. Learned Little Nemo by Winsor McCay was a comic strip before it was an NES game. Thanks Google.
  16. Learned more about Symfony2 custom authentication providers.
  17. Learned what a Tail call is.
  18. Switch between Mac Terminal windows using CMD+1, CMD+2, CMD+N
  19. HTTP Status Code 418
  20. Learned from a friend how iPhone Application submission and acceptance/rejection works.
  21. http://mosh.mit.edu/
  22. http://lxr.php.net/
  23. Twitter’s recess project
  24. Learned about XCode’s Storyboard functionality (iPhone).
    1. Learned how to use NSURLConnection to fetch JSON data and then parse and display it on the screen.
  25. Learned how to use the MapView object and plot locations on a map (iPhone).
    1. Used Google’s Geocoding API to turn an address into a Coordinate.
  26. Watched first Stanford University iPhone Development course on iTunes. Learning Objective-C syntax.
  27. Learned how to use NSNotificationCenter to notify controllers when data is available (iPhone).
    1. Learned how to post JSON data to a Rails create endpoint from an iPhone application.
  28. Learned and used Ruby Geocoder via Railscast.
  29. Learned how to pass data between view controllers with segue (iPhone).
  30. http://smarterer.com (Skills Tests) and http://typing.io (Typing Test for Programmers)
  31. GitHub’s http://get.gaug.es/

Things I Learned in September

October 2, 2012 Leave a comment

September

  1. Wine is stored on its side to keep the cork moist so it doesn’t shrink and let in oxygen which ruins the flavor.
  2. Rails gems: versionistdoorkeeper
  3. http://www.devswag.com/
    1. MooTools : periodical function
  4. Signed up for Hosted Chef
    1. Rails gem: http://brakemanscanner.org/
  5. Started using AWS Free Usage Tier with Hosted Chef
    1. Ant Tasks: include and import
    2. ember.js
  6. Created my first Chef Cookbook
  7. PL/SQL – Turn a list of numbers into a table:
    create type number_tab as table of number; 
    SELECT column_value AS my_id FROM TABLE(number_tab(1, 2, 3, 4, 5, 6));
    1. Oracle Error
      • Error: A Partition Maintenance Operation (PMOP) has been performed on the materialized view, and no materialized view supports fast refresh after container table PMOPs.
      • Solution:  dbms_mview.refresh(‘my_mview’, ‘C‘);
  8. Learned the differences between coffee, espresso, cappuccino, and latte. Also learned how they do Latte Art, which is now on my list to conquer.
  9. Ruby: Details on exit, exit!, at_exit
  10. Learned a lot about RSpec internals (matchers, use of method_missing, mocks/stubs), the features shared_examples_for, it _behaves_like, expect{}.to change, and explicit vs implicit subject().
  11. SQL*Loader Conventional vs Direct Path Loading.
  12. YouTube query string parameter to start video at a certain time.: Ex. t=7s and t=2m7s
  13. PL/SQL can pass parameters by reference or value.
  14. How to use RSpec with Rails Views (render, rendered, contain, assign) and Controllers (mock_model, stub_model).
  15. How to setup Autotest with RSpec using Bundler and Autotest with Cucumber.
  16. How to integrate Twitter’s Bootstrap project with Rails using bootstrap-sass.
  17. Learned about Rosetta Stones new TOTALe program and tried out the demo.
  18. Vapiano gives out gummy candy instead of mints as you walk out.
  19. vim file +100 – Jump directly to line 100
    1. vim -O file1 file2 – Opens files side by side
  20. Check load average on Unix: cat /proc/loadavg
    1. https://flowdock.com/
    2. https://github.com/fabpot/Goutte
  21. Test::Unit : ruby some_test.rb -n test_specific_method
  22. Incorporated HAML into an existing Rails application using haml-rails gem.
  23. Learned how to assemble several different items from Ikea. I have a brand new standing desk!
  24. http://mmonit.com/monit/
    1. Since PHP/PDO can’t return custom Oracle types. Use XMLTYPE to convert the type to a string so you can test against it:
      SELECT XMLTYPE(get_custom_type()) as xml_string from dual;
  25. https://www.ruby-toolbox.com/
  26. Goats have square pupils.  Nutmeg is poisonous. My Proof
  27. https://www.coursera.org/
    1. Show *nix port usage (I’ve learned this probably 10x but still have to look it up each time): netstat -lpnt
  28. Learned that suhosin.session.cryptkey is determined by docroot and can be different on each vhost (unless specifically set). This caused session replication between servers to fail since data was being encrypted with two different keys.
  29. Google: do a barrel roll
  30. Learned there are a number of people speculating on the Iraqi Dinar as an investment opportunity.  I’m not one of them.

Things I Learned in August

September 2, 2012 Leave a comment
  1. PL/SQL – EXIT leaves a LOOP, RETURN immediately leaves a subprogram
    1. Unix: lsof
  2. Libero – Volleyball
    1. The World – Residential Cruise
  3. Native PL/SQL Compilation
    1. alter session set plsql_code_type=’NATIVE’;
  4. CSS adjacent child selector can be used to target specific child: columnLayout > div + div + div. Nice way to remove right margin/padding from the last column
  5. CSS “position: absolute” respects all four corners: top, left, bottom, right
    1. WordPress Functions: make_clickable, get_page_link, wp_list_pages
  6. http://apt-mirror.sourceforge.net/
  7. Oracle query using INTERSECT
    1. First time exchanging money and having Euros and British Pounds. Thanks Amex.
    2. Thunderbolt Interface
  8. CSS vendor specific prefix for IE: -ms-
    1. Interesting tidbit on memory allocation for stringstream.str().c_str()
    2. http://linux-mm.org/OOM_Killer
  9. When Oracle 11.2 Client and 11.2 Server have different timezone configuration it raises ORA-01805
  10. NetWrix Account Lock Examiner
    1. opensrs.com wholesale unit of Tucows.com
    2. Twig Merge: []|merge(array) and {}|merge(hash)
    3. HTML5 required attribute cannot be used on HIDDEN elements
  11. Travertine
  12. If This Then That – http://ifttt.com/
    1. Belkin WeMo
    2. Pushover
    3. NZB
  13. Oracle NVL2
  14. List javascript properties (Mootools): for (a in $(‘element_id’) { console.log (a); }
  15. Open files in tabs: vim file1 file2 -p
    1. Ruby load vs require
  16. Learned about different language concat operators.
    1. Heard about Perl 6 for the first time.
  17. ~4 hours of motorcycle classrom training on my way to being licensed.
  18. ~5 hours of motorcycle driving time
  19. Passed the DMV driving and written exams for my motorcycle license.
  20. Screen’s aclchg command
    1. First flight on Icelandair on my way to England
  21. First time in Iceland and England (London).
  22. Visited Bath, England – Saw Roman Baths
  23. Learned quite a few words that have different meaning between America and UK. (Ex. pants = underwear, trousers = long pants, bin = trash can, boot = car trunk)
  24. Learned a bit about Marlborough College
  25. Saw Platform 9 3/4 (Harry Potter) at London’s King Cross station
    1. Took The Original Tour bus all around London and saw some great sights.
  26. Took train from London to Durham, England
    1. Visited Durham University and Durham Cathedral
  27. Saw and stepped in the North Sea
  28. First time to Edinburgh, Scotland, visited Edinburgh Castle
  29. National Museum of Scotland and National Portrait Gallery
  30. Saw Holyrood House and Scottish Parlament buildings.
    1. Flew out of Glasgow International Airport
  31. MooTools Class.refactor

Things I Learned in July

August 4, 2012 Leave a comment
  1. How It’s Made Baseballs
  2. Chrome for iPhone
  3. Andy Griffith Died
  4. Derecho
  5. Searching for tabs:  grep -rl -P ‘\t’ –exclude-dir=.svn *
  6. http://www.omnigroup.com/products/omnifocus/
    1. http://www.omnigroup.com/products/omnifocus/videos/
  7. Dynamo Magician Impossible
  8. Tour of the US Naval Academy in Annapolis, MD
    1. The goat is their mascot
    2. plebe is a latin term for common person or “low order”.
    3. plebes cannot walk on curved sidewalks
    4. Bancroft Hall is the largest college dormitory in the world and houses all ~4500 midshipmen.  Has 8 wings and 5 miles of corridor.
    5. All 4500 students eat their meals family style at the same time in < 30 minutes.
  9. chrome://flags/
  10. A tilde (“~”) represents Nil / Empty in YAML (Ruby and PHP Symfony)
  11. curl -b/–cookie and -d/–data
    1. Moved to previous directory: cd –
  12. http://www.codeschool.com/courses/try-git
  13. Include javascript files directly: https://developers.google.com/speed/libraries/devguide
    1. CSS Selectors: h1 + p (adjacent sibling) and h1 ~ p (general sibling)
  14. http://jqueryair.com/
  15. Learned how to create a Custom WordPress Template and Custom Static pages for Home and Blog pages.
  16. https://github.com/facebook/codemod/
  17. https://stripe.com/
  18. Oracle: Pipelined functions require SQL types to be able to pipe collections of data to the consumer. Oracle will generate these SYS_PLSQL_* types on you behalf.  http://www.oracle-developer.net/display.php?id=423
  19. MooTools: Cookie.write(‘XHPROF_PROFILE’); and Cookie.dispose(‘XHPROF_PROFILE’);
  20. Created first Symfony Console class and a Composer script class.
  21. http://en.wikipedia.org/wiki/Sitemaps
  22. Learned to make Bananas Fosters
    1. Vasodilation and Vasoconstriction
  23. Oracle 11g SecureFiles
  24. git stash pop
    1. http://sequel.rubyforge.org/rdoc/classes/Sequel/Plugins.html
  25. Hops are what make beer taste bitter.
  26. http://www.phparch.com/
    1. NTFS = New Technology File System…. probably should have known that by now.
  27. Disable specific Oracle patches: alter session set “_fix_control“=’11814428:off’;
  28. Dotted Notes and Rests
    1. Olympic Symbol – 5 rings for the inhabited continents and 6 colors for all the nations flags in 1931.
  29. Learned about jacketed rounds and non-jacketed.  Flat nose and round nose bullets.
  30. Oracle: select * from v$version;
    1. Four Commonwealths in the US: Kentucky, Virginia, Pennsylvania, Massachusetts.
  31. http://www.kickstarter.com/projects/ouya/ouya-a-new-kind-of-video-game-console
    1. Logic Lab