├── themes └── griffin │ ├── layout │ └── partials │ │ ├── footer.hbs │ │ ├── styles.hbs │ │ └── scripts.hbs │ ├── source │ ├── plugins │ │ ├── rs-plugin-5 │ │ │ ├── index.php │ │ │ ├── css │ │ │ │ ├── index.php │ │ │ │ ├── openhand.cur │ │ │ │ ├── closedhand.cur │ │ │ │ └── navigation-skins │ │ │ │ │ ├── custom.css │ │ │ │ │ ├── persephone.css │ │ │ │ │ ├── hephaistos.css │ │ │ │ │ └── uranus.css │ │ │ ├── fonts │ │ │ │ ├── index.php │ │ │ │ ├── revicons │ │ │ │ │ ├── index.php │ │ │ │ │ ├── revicons.eot │ │ │ │ │ ├── revicons.ttf │ │ │ │ │ └── revicons.woff │ │ │ │ ├── font-awesome │ │ │ │ │ ├── index.php │ │ │ │ │ └── fonts │ │ │ │ │ │ ├── FontAwesome.otf │ │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ │ └── pe-icon-7-stroke │ │ │ │ │ ├── css │ │ │ │ │ └── index.php │ │ │ │ │ ├── index.php │ │ │ │ │ └── fonts │ │ │ │ │ ├── index.php │ │ │ │ │ ├── Pe-icon-7-stroke.eot │ │ │ │ │ ├── Pe-icon-7-stroke.ttf │ │ │ │ │ └── Pe-icon-7-stroke.woff │ │ │ ├── js │ │ │ │ ├── index.php │ │ │ │ ├── source │ │ │ │ │ ├── index.php │ │ │ │ │ └── jquery.themepunch.enablelog.js │ │ │ │ ├── extensions │ │ │ │ │ ├── index.php │ │ │ │ │ └── source │ │ │ │ │ │ └── index.php │ │ │ │ └── jquery.themepunch.enablelog.js │ │ │ ├── assets │ │ │ │ ├── svg │ │ │ │ │ ├── index.php │ │ │ │ │ └── svg.zip │ │ │ │ ├── loader.gif │ │ │ │ ├── coloredbg.png │ │ │ │ ├── gridtile.png │ │ │ │ ├── sources │ │ │ │ │ ├── fb.png │ │ │ │ │ ├── fr.png │ │ │ │ │ ├── ig.png │ │ │ │ │ ├── tw.png │ │ │ │ │ ├── vm.png │ │ │ │ │ ├── wc.png │ │ │ │ │ ├── yt.png │ │ │ │ │ ├── post.png │ │ │ │ │ ├── revolution_slide1.png │ │ │ │ │ └── revolution_slide2.png │ │ │ │ ├── gridtile_3x3.png │ │ │ │ ├── gridtile_white.png │ │ │ │ └── gridtile_3x3_white.png │ │ │ ├── info.cfg │ │ │ └── php │ │ │ │ ├── instagram │ │ │ │ └── class-instagram.php │ │ │ │ ├── vimeo │ │ │ │ └── class-vimeo.php │ │ │ │ ├── twitter │ │ │ │ ├── connection │ │ │ │ │ └── Application.php │ │ │ │ └── RestApi.php │ │ │ │ └── youtube │ │ │ │ └── class-youtube.php │ │ ├── morphext │ │ │ ├── morphext.css │ │ │ ├── morphext.min.js │ │ │ └── morphext.js │ │ ├── jquery.countdown │ │ │ ├── img │ │ │ │ ├── countdownLED.png │ │ │ │ └── countdownGlowing.gif │ │ │ ├── js │ │ │ │ ├── jquery.countdown-cy.js │ │ │ │ ├── jquery.countdown-ja.js │ │ │ │ ├── jquery.countdown-nb.js │ │ │ │ ├── jquery.countdown-ko.js │ │ │ │ ├── jquery.countdown-he.js │ │ │ │ ├── jquery.countdown-uz.js │ │ │ │ ├── jquery.countdown-da.js │ │ │ │ ├── jquery.countdown-de.js │ │ │ │ ├── jquery.countdown-hu.js │ │ │ │ ├── jquery.countdown-id.js │ │ │ │ ├── jquery.countdown-el.js │ │ │ │ ├── jquery.countdown-ro.js │ │ │ │ ├── jquery.countdown-sv.js │ │ │ │ ├── jquery.countdown-tr.js │ │ │ │ ├── jquery.countdown-vi.js │ │ │ │ ├── jquery.countdown-zh-CN.js │ │ │ │ ├── jquery.countdown-zh-TW.js │ │ │ │ ├── jquery.countdown-hy.js │ │ │ │ ├── jquery.countdown-kn.js │ │ │ │ ├── jquery.countdown-ms.js │ │ │ │ ├── jquery.countdown-sq.js │ │ │ │ ├── jquery.countdown-th.js │ │ │ │ ├── jquery.countdown-ca.js │ │ │ │ ├── jquery.countdown-ar.js │ │ │ │ ├── jquery.countdown-gl.js │ │ │ │ ├── jquery.countdown-gu.js │ │ │ │ ├── jquery.countdown-my.js │ │ │ │ ├── jquery.countdown-nl.js │ │ │ │ ├── jquery.countdown-lt.js │ │ │ │ ├── jquery.countdown-ur.js │ │ │ │ ├── jquery.countdown-es.js │ │ │ │ ├── jquery.countdown-fo.js │ │ │ │ ├── jquery.countdown-is.js │ │ │ │ ├── jquery.countdown-et.js │ │ │ │ ├── jquery.countdown-it.js │ │ │ │ ├── jquery.countdown-bg.js │ │ │ │ ├── jquery.countdown-fa.js │ │ │ │ ├── jquery.countdown-bn.js │ │ │ │ ├── jquery.countdown-fi.js │ │ │ │ ├── jquery.countdown-mk.js │ │ │ │ ├── jquery.countdown-lv.js │ │ │ │ ├── jquery.countdown-fr.js │ │ │ │ ├── jquery.countdown-pt-BR.js │ │ │ │ ├── jquery.countdown-cs.js │ │ │ │ ├── jquery.countdown-sk.js │ │ │ │ ├── jquery.countdown-sr.js │ │ │ │ ├── jquery.countdown-sr-SR.js │ │ │ │ ├── jquery.countdown-ml.js │ │ │ │ ├── jquery.countdown-bs.js │ │ │ │ ├── jquery.countdown-uk.js │ │ │ │ ├── jquery.countdown-pl.js │ │ │ │ ├── jquery.countdown-ru.js │ │ │ │ ├── jquery.countdown-sl.js │ │ │ │ └── jquery.countdown-hr.js │ │ │ ├── css │ │ │ │ └── jquery.countdown.css │ │ │ └── index.html │ │ ├── owlcarousel2 │ │ │ ├── assets │ │ │ │ ├── ajax-loader.gif │ │ │ │ ├── owl.video.play.png │ │ │ │ ├── owl.theme.default.min.css │ │ │ │ ├── owl.theme.green.min.css │ │ │ │ ├── owl.theme.green.css │ │ │ │ └── owl.theme.default.css │ │ │ └── LICENSE │ │ ├── pace │ │ │ └── LICENSE.txt │ │ ├── charts │ │ │ └── LICENSE.md │ │ └── jquery.parallax-1.1.3.js │ ├── robots.txt │ ├── css │ │ ├── mixins.css │ │ ├── print-invoice.css │ │ └── custom.css │ ├── images │ │ ├── 2fd.png │ │ ├── kev3d.PNG │ │ ├── kevin.jpg │ │ ├── 2fd-min.png │ │ ├── kev3d-min.PNG │ │ ├── kevin-min.jpg │ │ ├── kevgriffin.png │ │ ├── revolutionconf.png │ │ └── revolutionconf-min.png │ ├── fonts │ │ ├── fontello │ │ │ ├── font │ │ │ │ ├── fontello.eot │ │ │ │ ├── fontello.ttf │ │ │ │ └── fontello.woff │ │ │ ├── LICENSE.txt │ │ │ └── css │ │ │ │ └── animation.css │ │ └── font-awesome │ │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ │ ├── less │ │ │ ├── screen-reader.less │ │ │ ├── fixed-width.less │ │ │ ├── larger.less │ │ │ ├── list.less │ │ │ ├── core.less │ │ │ ├── stacked.less │ │ │ ├── font-awesome.less │ │ │ ├── bordered-pulled.less │ │ │ ├── rotated-flipped.less │ │ │ ├── path.less │ │ │ ├── animated.less │ │ │ └── mixins.less │ │ │ ├── scss │ │ │ ├── _fixed-width.scss │ │ │ ├── _screen-reader.scss │ │ │ ├── _larger.scss │ │ │ ├── _list.scss │ │ │ ├── _core.scss │ │ │ ├── font-awesome.scss │ │ │ ├── _stacked.scss │ │ │ ├── _bordered-pulled.scss │ │ │ ├── _rotated-flipped.scss │ │ │ ├── _path.scss │ │ │ ├── _animated.scss │ │ │ └── _mixins.scss │ │ │ └── HELP-US-OUT.txt │ ├── bootstrap │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ └── npm.js │ ├── js │ │ ├── coming.soon.config.js │ │ ├── google.map.config.js │ │ └── custom.js │ └── web.config │ ├── _config.yml │ └── helper │ └── index.js ├── scaffolds ├── draft.md ├── page.md └── post.md ├── source ├── articles │ └── index.md ├── thanks-signup-confirmed │ └── index.md ├── _posts │ ├── fix-my-computer.md │ ├── ASPNET-40-To-ASPNET-Core.md │ ├── One-Simple-Rule-for-Successful-Consulting.md │ ├── Enhancing-Your-Applications-For-Windows-7.md │ ├── Enable-SignalR-Logging-with-One-Simple-Line.md │ ├── Interview-with-Michael-Rollins-for-HRDevFest-2016.md │ ├── Simple-HTML-Formatting-in-Sublime-Text.md │ ├── Wildcard-search-with-LINQ.md │ ├── Learn-about-Windows-7-Task-Dialogs.md │ ├── Powershell-How-to-recursively-delete-files-based-of-file-extension.md │ ├── 50-Ways-to-Avoid-Find-and-Fix-ASP-NET-Performance-Issues.md │ ├── Specifying-Visual-Studio-Version-in-NPM-Installs.md │ ├── If-You-Reach-Just-One-Person.md │ ├── Exploring-C-7-0-Out-Variables.md │ ├── How-to-run-Visual-Studio-Code-from-Zsh-on-Mac-OSX.md │ ├── Quick-Introduction-to-SignalR-Streaming.md │ ├── How-to-run-Visual-Studio-Code-from-Terminal-on-Mac-OSX.md │ ├── My-Defacto-gitignore-file.md │ ├── Named-Callbacks-in-JavaScript.md │ ├── swift-kick-show-unbelievable-and-complex-advancements-in-machine-learning-with-ankur-kalra.md │ ├── Online-vs-Retail-Stores.md │ ├── No-matter-what-you-do-add-value.md │ ├── MongoDB-Setting-TTL-on-Documents.md │ ├── Preloading-Multiple-Audio-Tags-in-Internet-Explorer-9.md │ ├── Review-7-Recurring-Revenue-Recipes-for-Freelancers.md │ ├── Console-Games-Why-do-we-have-to-press-start.md │ ├── Moving-on-to-Greener-Pastures.md │ ├── Managing-Your-User-Group-Calendar-Roulette.md │ ├── The-10-Rule-to-Presentations.md │ ├── Managing-Your-User-Group-Food.md │ ├── swift-kick-show-nosql-shouldnt-mean-nosecurity-with-matt-groves.md │ ├── Running-a-Conference-Like-A-Startup.md │ ├── A-Diet-Programmers-Can-Relate-To.md │ ├── My-Attempt-at-LINQ-Pagination.md │ ├── Leaving-It-Better-Than-You-Found-It.md │ ├── Building-better-ConnectionStrings-with-ConnectionStringBuilder.md │ ├── Banks-ATMS-and-Horrible-User-Experiences.md │ └── Speaker-Gifts.md ├── thanks-signup │ └── index.md ├── speaking │ └── index.md ├── hire │ └── index.md ├── talks │ └── application-insights │ │ └── index.md └── newsletter │ └── index.md ├── Dockerfile ├── .vscode └── settings.json ├── package.json ├── .gitignore └── _config.yml /themes/griffin/layout/partials/footer.hbs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/css/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/js/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/svg/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/js/source/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: -------------------------------------------------------------------------------- /scaffolds/draft.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | tags: 4 | --- 5 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/revicons/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/js/extensions/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/js/extensions/source/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /scaffolds/page.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | date: {{ date }} 4 | --- 5 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/css/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/css/mixins.css: -------------------------------------------------------------------------------- 1 | 2 | /*# sourceMappingURL=mixins.css.map */ -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/fonts/index.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/info.cfg: -------------------------------------------------------------------------------- 1 | { 2 | "version":"5.3.1.6" 3 | } -------------------------------------------------------------------------------- /scaffolds/post.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: {{ title }} 3 | date: {{ date }} 4 | tags: 5 | --- 6 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/js/jquery.themepunch.enablelog.js: -------------------------------------------------------------------------------- 1 | window.tplogs = true; -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/js/source/jquery.themepunch.enablelog.js: -------------------------------------------------------------------------------- 1 | window.tplogs = true; -------------------------------------------------------------------------------- /source/articles/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: articles 3 | layout: articles 4 | date: 2017-04-24 12:58:45 5 | --- -------------------------------------------------------------------------------- /themes/griffin/source/plugins/morphext/morphext.css: -------------------------------------------------------------------------------- 1 | .morphext > .animated { 2 | display: inline-block; 3 | } -------------------------------------------------------------------------------- /themes/griffin/source/images/2fd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/2fd.png -------------------------------------------------------------------------------- /themes/griffin/source/images/kev3d.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/kev3d.PNG -------------------------------------------------------------------------------- /themes/griffin/source/images/kevin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/kevin.jpg -------------------------------------------------------------------------------- /themes/griffin/source/images/2fd-min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/2fd-min.png -------------------------------------------------------------------------------- /themes/griffin/source/images/kev3d-min.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/kev3d-min.PNG -------------------------------------------------------------------------------- /themes/griffin/source/images/kevin-min.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/kevin-min.jpg -------------------------------------------------------------------------------- /themes/griffin/source/images/kevgriffin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/kevgriffin.png -------------------------------------------------------------------------------- /themes/griffin/source/images/revolutionconf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/revolutionconf.png -------------------------------------------------------------------------------- /themes/griffin/source/images/revolutionconf-min.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/images/revolutionconf-min.png -------------------------------------------------------------------------------- /themes/griffin/source/fonts/fontello/font/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/fonts/fontello/font/fontello.eot -------------------------------------------------------------------------------- /themes/griffin/source/fonts/fontello/font/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/fonts/fontello/font/fontello.ttf -------------------------------------------------------------------------------- /themes/griffin/source/fonts/fontello/font/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/fonts/fontello/font/fontello.woff -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/loader.gif -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/css/openhand.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/css/openhand.cur -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/fonts/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/coloredbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/coloredbg.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/gridtile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/gridtile.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/svg/svg.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/svg/svg.zip -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/css/closedhand.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/css/closedhand.cur -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/fb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/fb.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/fr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/fr.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/ig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/ig.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/tw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/tw.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/vm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/vm.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/wc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/wc.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/yt.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/img/countdownLED.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/jquery.countdown/img/countdownLED.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/owlcarousel2/assets/ajax-loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/owlcarousel2/assets/ajax-loader.gif -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/gridtile_3x3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/gridtile_3x3.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/gridtile_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/gridtile_white.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/post.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/post.png -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/screen-reader.less: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { .sr-only(); } 5 | .sr-only-focusable { .sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/owlcarousel2/assets/owl.video.play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/owlcarousel2/assets/owl.video.play.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/revicons/revicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/revicons/revicons.eot -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/revicons/revicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/revicons/revicons.ttf -------------------------------------------------------------------------------- /themes/griffin/source/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /themes/griffin/source/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /themes/griffin/source/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /themes/griffin/source/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/fonts/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/fonts/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/fonts/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/fonts/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/_fixed-width.scss: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .#{$fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/img/countdownGlowing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/jquery.countdown/img/countdownGlowing.gif -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/gridtile_3x3_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/gridtile_3x3_white.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/revicons/revicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/revicons/revicons.woff -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Screen Readers 2 | // ------------------------- 3 | 4 | .sr-only { @include sr-only(); } 5 | .sr-only-focusable { @include sr-only-focusable(); } 6 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/revolution_slide1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/revolution_slide1.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/assets/sources/revolution_slide2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/assets/sources/revolution_slide2.png -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/font-awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.eot -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.ttf -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/1kevgriff/kevgriffincom.v2/master/themes/griffin/source/plugins/rs-plugin-5/fonts/pe-icon-7-stroke/fonts/Pe-icon-7-stroke.woff -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/HELP-US-OUT.txt: -------------------------------------------------------------------------------- 1 | I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, 2 | Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, 3 | comprehensive icon sets or copy and paste your own. 4 | 5 | Please. Check it out. 6 | 7 | -Dave Gandy 8 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/larger.less: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .@{fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .@{fa-css-prefix}-2x { font-size: 2em; } 11 | .@{fa-css-prefix}-3x { font-size: 3em; } 12 | .@{fa-css-prefix}-4x { font-size: 4em; } 13 | .@{fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/fontello/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Font license info 2 | 3 | 4 | ## Entypo 5 | 6 | Copyright (C) 2012 by Daniel Bruce 7 | 8 | Author: Daniel Bruce 9 | License: SIL (http://scripts.sil.org/OFL) 10 | Homepage: http://www.entypo.com 11 | 12 | 13 | ## Typicons 14 | 15 | (c) Stephen Hutchings 2012 16 | 17 | Author: Stephen Hutchings 18 | License: SIL (http://scripts.sil.org/OFL) 19 | Homepage: http://typicons.com/ 20 | 21 | 22 | -------------------------------------------------------------------------------- /source/thanks-signup-confirmed/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: You are confirmed! 3 | layout: generic 4 | date: 2017-06-29 06:34:08 5 | --- 6 | 7 | You're on the list. NO BACKSIES! 8 | 9 |
-------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/_larger.scss: -------------------------------------------------------------------------------- 1 | // Icon Sizes 2 | // ------------------------- 3 | 4 | /* makes the font 33% larger relative to the icon container */ 5 | .#{$fa-css-prefix}-lg { 6 | font-size: (4em / 3); 7 | line-height: (3em / 4); 8 | vertical-align: -15%; 9 | } 10 | .#{$fa-css-prefix}-2x { font-size: 2em; } 11 | .#{$fa-css-prefix}-3x { font-size: 3em; } 12 | .#{$fa-css-prefix}-4x { font-size: 4em; } 13 | .#{$fa-css-prefix}-5x { font-size: 5em; } 14 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:6 2 | RUN mkdir -p /usr/src/app 3 | 4 | ARG NODE_ENV=production 5 | ENV NODE_ENV $NODE_ENV 6 | 7 | ARG PORT=4000 8 | ENV PORT $PORT 9 | EXPOSE $PORT 5858 9229 10 | 11 | WORKDIR /usr/src 12 | COPY package.json /usr/src/ 13 | RUN npm install -g hexo 14 | RUN npm install && npm cache clean 15 | ENV PATH /data/node_modules/.bin:$PATH 16 | 17 | WORKDIR /usr/src/app 18 | COPY . /usr/src/app 19 | 20 | RUN hexo generate 21 | CMD hexo server -s 22 | 23 | -------------------------------------------------------------------------------- /themes/griffin/source/js/coming.soon.config.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | $(document).ready(function(){ 3 | // Set the time at which the countdown expires. 4 | // var untilDate new Date(Year, Month - 1, Day) 5 | //----------------------------------------------- 6 | var untilDate = new Date(2018, 2 - 1, 1); 7 | 8 | $(".countdown").countdown({ 9 | until: untilDate, 10 | format: 'dHMS', 11 | padZeroes: true 12 | }); 13 | 14 | }); // End document ready 15 | 16 | })(this.jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/list.less: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: @fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .@{fa-css-prefix}-li { 11 | position: absolute; 12 | left: -@fa-li-width; 13 | width: @fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.@{fa-css-prefix}-lg { 17 | left: (-@fa-li-width + (4em / 14)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/_list.scss: -------------------------------------------------------------------------------- 1 | // List Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-ul { 5 | padding-left: 0; 6 | margin-left: $fa-li-width; 7 | list-style-type: none; 8 | > li { position: relative; } 9 | } 10 | .#{$fa-css-prefix}-li { 11 | position: absolute; 12 | left: -$fa-li-width; 13 | width: $fa-li-width; 14 | top: (2em / 14); 15 | text-align: center; 16 | &.#{$fa-css-prefix}-lg { 17 | left: -$fa-li-width + (4em / 14); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/core.less: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/_core.scss: -------------------------------------------------------------------------------- 1 | // Base Class Definition 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix} { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /themes/griffin/source/bootstrap/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/font-awesome.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables"; 7 | @import "mixins"; 8 | @import "path"; 9 | @import "core"; 10 | @import "larger"; 11 | @import "fixed-width"; 12 | @import "list"; 13 | @import "bordered-pulled"; 14 | @import "animated"; 15 | @import "rotated-flipped"; 16 | @import "stacked"; 17 | @import "icons"; 18 | @import "screen-reader"; 19 | -------------------------------------------------------------------------------- /source/_posts/fix-my-computer.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Fix My Computer 3 | permalink: fix-my-computer 4 | date: 2017-05-02 23:30:55 5 | --- 6 | 7 | I get a lot of requests for companies in the Norfolk and Virginia Beach area that fix personal computers. Here are a couple references that I think are looking at. 8 | 9 | > These references come from friends of mine in the industry. I have not vetted any of these companies. Your milage might vary. 10 | 11 | *P&P PC* 12 | 2468 East Little Creek Road, Norfolk VA 23518 13 | (757)-531-3196 14 | [http://www.pandppc.com](http://www.pandppc.com) 15 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/stacked.less: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .@{fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; } 21 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/_stacked.scss: -------------------------------------------------------------------------------- 1 | // Stacked Icons 2 | // ------------------------- 3 | 4 | .#{$fa-css-prefix}-stack { 5 | position: relative; 6 | display: inline-block; 7 | width: 2em; 8 | height: 2em; 9 | line-height: 2em; 10 | vertical-align: middle; 11 | } 12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { 13 | position: absolute; 14 | left: 0; 15 | width: 100%; 16 | text-align: center; 17 | } 18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; } 19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; } 20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; } 21 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | @import "screen-reader.less"; 19 | -------------------------------------------------------------------------------- /source/_posts/ASPNET-40-To-ASPNET-Core.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Upgrading Your ASP.NET 4.0+ Skills to ASP.NET Core' 3 | permalink: asp-net-40-to-asp-net-core 4 | categories: 5 | - ASP.NET Core 6 | updated: '2013-01-24 04:34:48' 7 | date: 2019-04-12 05:00:46 8 | --- 9 | 10 | Have you recently attended one of my talks on "Upgrading Your ASP.NET 4.0+ Skills to ASP.NET Core"? 11 | 12 | I hope you enjoyed it! I would love to chat more about any questions you have! 13 | 14 | [CodeStock 2019 Slides](https://griffcdn.blob.core.windows.net/kevgriffinpublic/asp-net-40-to-asp-net-core/CodeStock%202019%20-%20Upgrading%20Your%20ASPNET%204%20Skills%20to%20ASPNET%20Core.pdf) -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.enabledLanguageIds": [ 3 | "asciidoc", 4 | "c", 5 | "cpp", 6 | "csharp", 7 | "css", 8 | "go", 9 | "handlebars", 10 | "html", 11 | "jade", 12 | "javascript", 13 | "javascriptreact", 14 | "json", 15 | "latex", 16 | "less", 17 | "markdown", 18 | "php", 19 | "plaintext", 20 | "pub", 21 | "python", 22 | "restructuredtext", 23 | "rust", 24 | "scss", 25 | "text", 26 | "typescript", 27 | "typescriptreact", 28 | "yml" 29 | ] 30 | } -------------------------------------------------------------------------------- /themes/griffin/_config.yml: -------------------------------------------------------------------------------- 1 | # Header 2 | menu: 3 | Home: / 4 | Archives: /archives 5 | rss: /atom.xml 6 | 7 | # Content 8 | excerpt_link: Read More 9 | fancybox: true 10 | 11 | # Sidebar 12 | sidebar: right 13 | widgets: 14 | - category 15 | - tag 16 | - tagcloud 17 | - archive 18 | - recent_posts 19 | 20 | # display widgets at the bottom of index pages (pagination == 2) 21 | index_widgets: 22 | # - category 23 | # - tagcloud 24 | # - archive 25 | 26 | # widget behavior 27 | archive_type: 'monthly' 28 | show_count: false 29 | 30 | # Miscellaneous 31 | google_analytics: 32 | favicon: /favicon.png 33 | twitter: 34 | google_plus: 35 | fb_admins: 36 | fb_app_id: 37 | -------------------------------------------------------------------------------- /source/_posts/One-Simple-Rule-for-Successful-Consulting.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: One Simple Rule for Successful Consulting 3 | permalink: one-simple-rule-for-successful-consulting 4 | categories: 5 | - Business 6 | date: 2014-09-03 00:16:57 7 | --- 8 | 9 | When you're suggesting business decisions for a client, think about it this way: 10 | 11 | > If you were to flip the roles, would you take the advice you are offering? 12 | 13 | Simply put: when I recommend tools, technologies, and other solutions to my clients, I want to always make sure that the suggestion I am providing is something I would do for my own business. 14 | 15 | Do that, and the clients will always keep coming back. -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-cy.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html Welsh initialisation for the jQuery countdown extension Written by Gareth Jones | http://garethvjones.com | October 2011. */ (function($) { 'use strict'; $.countdown.regionalOptions.cy = { labels: ['Blynyddoedd','Mis','Wythnosau','Diwrnodau','Oriau','Munudau','Eiliadau'], labels1: ['Blwyddyn','Mis','Wythnos','Diwrnod','Awr','Munud','Eiliad'], compactLabels: ['b','m','w','d'], whichLabels: null, digits: ['0','1','2','3','4','5','6','7','8','9'], timeSeparator: ':', 2 | isRTL: false }; $.countdown.setDefaults($.countdown.regionalOptions.cy); })(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-ja.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Japanese initialisation for the jQuery countdown extension 3 | Written by Ken Ishimoto (ken@ksroom.com) Aug 2009. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.ja = { 7 | labels: ['年','月','週','日','時','分','秒'], 8 | labels1: ['年','月','週','日','時','分','秒'], 9 | compactLabels: ['年','月','週','日'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.ja); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-nb.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Norwegian Bokmål translation 3 | Written by Kristian Ravnevand */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.nb = { 7 | labels: ['År','Måneder','Uker','Dager','Timer','Minutter','Sekunder'], 8 | labels1: ['År','Måned','Uke','Dag','Time','Minutt','Sekund'], 9 | compactLabels: ['Å','M','U','D'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.nb); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-ko.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Korean initialisation for the jQuery countdown extension 3 | Written by Ryan Yu (ryanyu79@gmail.com). */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.ko = { 7 | labels: ['년','월','주','일','시','분','초'], 8 | labels1: ['년','월','주','일','시','분','초'], 9 | compactLabels: ['년','월','주','일'], 10 | compactLabels1: ['년','월','주','일'], 11 | whichLabels: null, 12 | digits: ['0','1','2','3','4','5','6','7','8','9'], 13 | timeSeparator: ':', 14 | isRTL: false 15 | }; 16 | $.countdown.setDefaults($.countdown.regionalOptions.ko); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-he.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Hebrew initialisation for the jQuery countdown extension 3 | * Translated by Nir Livne, Dec 2008 */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.he = { 7 | labels: ['שנים','חודשים','שבועות','ימים','שעות','דקות','שניות'], 8 | labels1: ['שנה','חודש','שבוע','יום','שעה','דקה','שנייה'], 9 | compactLabels: ['שנ','ח','שב','י'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: true 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.he); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-uz.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Uzbek initialisation for the jQuery countdown extension 3 | * Written by Alisher U. (ulugbekov{at}gmail.com) August 2012. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.uz = { 7 | labels: ['Yil','Oy','Hafta','Kun','Soat','Daqiqa','Soniya'], 8 | labels1: ['Yil','Oy','Hafta','Kun','Soat','Daqiqa','Soniya'], 9 | compactLabels: ['y','o','h','k'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.uz); 16 | })(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-da.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Danish initialisation for the jQuery countdown extension 3 | Written by Buch (admin@buch90.dk). */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.da = { 7 | labels: ['År','Måneder','Uger','Dage','Timer','Minutter','Sekunder'], 8 | labels1: ['År','Måned','Uge','Dag','Time','Minut','Sekund'], 9 | compactLabels: ['Å','M','U','D'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.da); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-de.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | German initialisation for the jQuery countdown extension 3 | Written by Samuel Wulf. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.de = { 7 | labels: ['Jahre','Monate','Wochen','Tage','Stunden','Minuten','Sekunden'], 8 | labels1: ['Jahr','Monat','Woche','Tag','Stunde','Minute','Sekunde'], 9 | compactLabels: ['J','M','W','T'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.de); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-hu.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Hungarian initialisation for the jQuery countdown extension 3 | * Written by Edmond L. (webmond@gmail.com). */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.hu = { 7 | labels: ['Év','Hónap','Hét','Nap','Óra','Perc','Másodperc'], 8 | labels1: ['Év','Hónap','Hét','Nap','Óra','Perc','Másodperc'], 9 | compactLabels: ['É','H','Hé','N'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.hu); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-id.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Indonesian initialisation for the jQuery countdown extension 3 | Written by Erwin Yonathan Jan 2009. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.id = { 7 | labels: ['tahun','bulan','minggu','hari','jam','menit','detik'], 8 | labels1: ['tahun','bulan','minggu','hari','jam','menit','detik'], 9 | compactLabels: ['t','b','m','h'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.id); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-el.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Greek initialisation for the jQuery countdown extension 3 | Written by Philip. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.el = { 7 | labels: ['Χρόνια','Μήνες','Εβδομάδες','Μέρες','Ώρες','Λεπτά','Δευτερόλεπτα'], 8 | labels1: ['Χρόνος','Μήνας','Εβδομάδα','Ημέρα','Ώρα','Λεπτό','Δευτερόλεπτο'], 9 | compactLabels: ['Χρ.','Μην.','Εβδ.','Ημ.'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.el); 16 | })(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-ro.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Romanian initialisation for the jQuery countdown extension 3 | * Written by Edmond L. (webmond@gmail.com). */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.ro = { 7 | labels: ['Ani','Luni','Saptamani','Zile','Ore','Minute','Secunde'], 8 | labels1: ['An','Luna','Saptamana','Ziua','Ora','Minutul','Secunda'], 9 | compactLabels: ['A','L','S','Z'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.ro); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-sv.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Swedish initialisation for the jQuery countdown extension 3 | Written by Carl (carl@nordenfelt.com). */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.sv = { 7 | labels: ['År','Månader','Veckor','Dagar','Timmar','Minuter','Sekunder'], 8 | labels1: ['År','Månad','Vecka','Dag','Timme','Minut','Sekund'], 9 | compactLabels: ['Å','M','V','D'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.sv); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-tr.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Turkish initialisation for the jQuery countdown extension 3 | * Written by Bekir Ahmetoğlu (bekir@cerek.com) Aug 2008. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.tr = { 7 | labels: ['Yıl','Ay','Hafta','Gün','Saat','Dakika','Saniye'], 8 | labels1: ['Yıl','Ay','Hafta','Gün','Saat','Dakika','Saniye'], 9 | compactLabels: ['y','a','h','g'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.tr); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-vi.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Vietnamese initialisation for the jQuery countdown extension 3 | * Written by Pham Tien Hung phamtienhung@gmail.com (2010) */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.vi = { 7 | labels: ['Năm','Tháng','Tuần','Ngày','Giờ','Phút','Giây'], 8 | labels1: ['Năm','Tháng','Tuần','Ngày','Giờ','Phút','Giây'], 9 | compactLabels: ['năm','th','tu','ng'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.vi); 16 | })(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-zh-CN.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Simplified Chinese initialisation for the jQuery countdown extension 3 | Written by Cloudream (cloudream@gmail.com). */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions['zh-CN'] = { 7 | labels: ['年','月','周','天','时','分','秒'], 8 | labels1: ['年','月','周','天','时','分','秒'], 9 | compactLabels: ['年','月','周','天'], 10 | compactLabels1: ['年','月','周','天'], 11 | whichLabels: null, 12 | digits: ['0','1','2','3','4','5','6','7','8','9'], 13 | timeSeparator: ':', 14 | isRTL: false 15 | }; 16 | $.countdown.setDefaults($.countdown.regionalOptions['zh-CN']); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-zh-TW.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Traditional Chinese initialisation for the jQuery countdown extension 3 | Written by Cloudream (cloudream@gmail.com). */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions['zh-TW'] = { 7 | labels: ['年','月','周','天','時','分','秒'], 8 | labels1: ['年','月','周','天','時','分','秒'], 9 | compactLabels: ['年','月','周','天'], 10 | compactLabels1: ['年','月','周','天'], 11 | whichLabels: null, 12 | digits: ['0','1','2','3','4','5','6','7','8','9'], 13 | timeSeparator: ':', 14 | isRTL: false 15 | }; 16 | $.countdown.setDefaults($.countdown.regionalOptions['zh-TW']); 17 | })(jQuery); 18 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-hy.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Armenian initialisation for the jQuery countdown extension 3 | * Written by Artur Martirosyan. (artur{at}zoom.am) October 2011. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.hy = { 7 | labels: ['Տարի','Ամիս','Շաբաթ','Օր','Ժամ','Րոպե','Վարկյան'], 8 | labels1: ['Տարի','Ամիս','Շաբաթ','Օր','Ժամ','Րոպե','Վարկյան'], 9 | compactLabels: ['տ','ա','շ','օ'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.hy); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-kn.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Kannada initialization for the jQuery countdown extension 3 | * Written by Guru Chaturvedi guru@gangarasa.com (2011) */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.kn = { 7 | labels: ['ವರ್ಷಗಳು','ತಿಂಗಳು','ವಾರಗಳು','ದಿನಗಳು','ಘಂಟೆಗಳು','ನಿಮಿಷಗಳು','ಕ್ಷಣಗಳು'], 8 | labels1: ['ವರ್ಷ','ತಿಂಗಳು','ವಾರ','ದಿನ','ಘಂಟೆ','ನಿಮಿಷ','ಕ್ಷಣ'], 9 | compactLabels: ['ವ','ತಿ','ವಾ','ದಿ'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.kn); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-ms.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Malay initialisation for the jQuery countdown extension 3 | Written by Jason Ong (jason{at}portalgroove.com) May 2010. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.ms = { 7 | labels: ['Tahun','Bulan','Minggu','Hari','Jam','Minit','Saat'], 8 | labels1: ['Tahun','Bulan','Minggu','Hari','Jam','Minit','Saat'], 9 | compactLabels: ['t','b','m','h'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.ms); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-sq.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Albanian initialisation for the jQuery countdown extension 3 | Written by Erzen Komoni. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.sq = { 7 | labels: ['Vite','Muaj','Javë','Ditë','Orë','Minuta','Sekonda'], 8 | labels1: ['Vit','Muaj','Javë','Dit','Orë','Minutë','Sekond'], 9 | compactLabels: ['V','M','J','D'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.sq); 16 | })(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-th.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Thai initialisation for the jQuery countdown extension 3 | Written by Pornchai Sakulsrimontri (li_sin_th@yahoo.com). */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.th = { 7 | labels: ['ปี','เดือน','สัปดาห์','วัน','ชั่วโมง','นาที','วินาที'], 8 | labels1: ['ปี','เดือน','สัปดาห์','วัน','ชั่วโมง','นาที','วินาที'], 9 | compactLabels: ['ปี','เดือน','สัปดาห์','วัน'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.th); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-ca.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Catalan initialisation for the jQuery countdown extension 3 | Written by Amanida Media www.amanidamedia.com (2010) */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.ca = { 7 | labels: ['Anys','Mesos','Setmanes','Dies','Hores','Minuts','Segons'], 8 | labels1: ['Anys','Mesos','Setmanes','Dies','Hores','Minuts','Segons'], 9 | compactLabels: ['a','m','s','g'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.ca); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /source/_posts/Enhancing-Your-Applications-For-Windows-7.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Enhancing Your Applications For Windows 7 3 | categories: 4 | - Development 5 | permalink: enhancing-your-applications-for-windows-7 6 | date: 2009-11-17 09:36:34 7 | --- 8 | 9 |I invite you to head over to Developer Fusion, and read my article on "Enhancing Your Applications For Windows 7”. If you haven’t played with the Windows 7 API Code Pack yet, I definitely recommend it.
http://www.developerfusion.com/article/70531/enhancing-your-applications-for-windows-7/
-------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-ar.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Arabic (عربي) initialisation for the jQuery countdown extension 3 | Translated by Talal Al Asmari (talal@psdgroups.com), April 2009. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.ar = { 7 | labels: ['سنوات','أشهر','أسابيع','أيام','ساعات','دقائق','ثواني'], 8 | labels1: ['سنة','شهر','أسبوع','يوم','ساعة','دقيقة','ثانية'], 9 | compactLabels: ['س','ش','أ','ي'], 10 | whichLabels: null, 11 | digits: ['٠','١','٢','٣','٤','٥','٦','٧','٨','٩'], 12 | timeSeparator: ':', 13 | isRTL: true 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.ar); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-gl.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Galician initialisation for the jQuery countdown extension 3 | * Written by Moncho Pena ramon.pena.rodriguez@gmail.com (2009) and Angel Farrapeira */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.gl = { 7 | labels: ['Anos','Meses','Semanas','Días','Horas','Minutos','Segundos'], 8 | labels1: ['Ano','Mes','Semana','Día','Hora','Minuto','Segundo'], 9 | compactLabels: ['a','m','s','g'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.gl); 16 | })(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-gu.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Gujarati initialization for the jQuery countdown extension 3 | * Written by Sahil Jariwala jariwala.sahil@gmail.com (2012) */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.gu = { 7 | labels: ['વર્ષ','મહિનો','અઠવાડિયા','દિવસ','કલાક','મિનિટ','સેકન્ડ'], 8 | labels1: ['વર્ષ','મહિનો','અઠવાડિયા','દિવસ','કલાક','મિનિટ','સેકન્ડ'], 9 | compactLabels: ['વ','મ','અ','દિ'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.gu); 16 | })(jQuery); 17 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-my.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Burmese initialisation for the jQuery countdown extension 3 | Written by Win Lwin Moe (winnlwinmoe@gmail.com) Dec 2009. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.my = { 7 | labels: ['နွစ္','လ','ရက္သတဿတပတ္','ရက္','နာရီ','မိနစ္','စကဿကန့္'], 8 | labels1: ['နွစ္','လ','ရက္သတဿတပတ္','ရက္','နာရီ','မိနစ္','စကဿကန့္'], 9 | compactLabels: ['နွစ္','လ','ရက္သတဿတပတ္','ရက္'], 10 | whichLabels: null, 11 | digits: ['0','1','2','3','4','5','6','7','8','9'], 12 | timeSeparator: ':', 13 | isRTL: false 14 | }; 15 | $.countdown.setDefaults($.countdown.regionalOptions.my); 16 | })(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-nl.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | Dutch initialisation for the jQuery countdown extension 3 | Written by Mathias BynensEdit -> Lines -> Reindent13 | Want to create your own keybinding? Go to Preferences, Key Bindings - User and add this line: 14 |
{ "keys": ["ctrl+shift+r"], "command": "reindent" , "args": {"single_line": false}}
15 | Enjoy!
--------------------------------------------------------------------------------
/themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-fr.js:
--------------------------------------------------------------------------------
1 | /* http://keith-wood.name/countdown.html
2 | French initialisation for the jQuery countdown extension
3 | Written by Keith Wood (wood.keith{at}optusnet.com.au) Jan 2008. */
4 | (function($) {
5 | 'use strict';
6 | $.countdown.regionalOptions.fr = {
7 | labels: ['Années','Mois','Semaines','Jours','Heures','Minutes','Secondes'],
8 | labels1: ['Année','Mois','Semaine','Jour','Heure','Minute','Seconde'],
9 | compactLabels: ['a','m','s','j'],
10 | whichLabels: function(amount) {
11 | return (amount > 1 ? 0 : 1);
12 | },
13 | digits: ['0','1','2','3','4','5','6','7','8','9'],
14 | timeSeparator: ':',
15 | isRTL: false
16 | };
17 | $.countdown.setDefaults($.countdown.regionalOptions.fr);
18 | })(jQuery);
19 |
--------------------------------------------------------------------------------
/themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-pt-BR.js:
--------------------------------------------------------------------------------
1 | /* http://keith-wood.name/countdown.html
2 | Brazilian initialisation for the jQuery countdown extension
3 | Translated by Marcelo Pellicano de Oliveira (pellicano@gmail.com) Feb 2008.
4 | and Juan Roldan (juan.roldan[at]relayweb.com.br) Mar 2012. */
5 | (function($) {
6 | 'use strict';
7 | $.countdown.regionalOptions['pt-BR'] = {
8 | labels: ['Anos','Meses','Semanas','Dias','Horas','Minutos','Segundos'],
9 | labels1: ['Ano','Mês','Semana','Dia','Hora','Minuto','Segundo'],
10 | compactLabels: ['a','m','s','d'],
11 | whichLabels: null,
12 | digits: ['0','1','2','3','4','5','6','7','8','9'],
13 | timeSeparator: ':',
14 | isRTL: false
15 | };
16 | $.countdown.setDefaults($.countdown.regionalOptions['pt-BR']);
17 | })(jQuery);
18 |
--------------------------------------------------------------------------------
/source/_posts/Wildcard-search-with-LINQ.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Wildcard search with LINQ
3 | categories:
4 | - "Development - C#"
5 | permalink: wildcard-search-with-linq
6 | date: 2009-04-21 09:17:26
7 | ---
8 |
9 | I just a situation where I needed to perform a wildcard search on a table in my database. When I used to do ADO.NET, I would simply write my SELECT statements with LIKE keywords to do wildcard searches.
10 |
11 | However, in this project, I'm using LINQ to Entities and the solution didn't work the same way as it did back in SQL land. My alternative was to use the .Contains() method.
12 |
13 | For example:
14 | var userList = from u in entity.Users
15 | where u.FirstName.Contains(searchParameter) ||
16 | u.LastName.Contains(searchParameter)
17 | select u;
18 |
19 | Hope this helps if you ever run into this problem.
--------------------------------------------------------------------------------
/themes/griffin/source/fonts/font-awesome/less/path.less:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-cs.js:
--------------------------------------------------------------------------------
1 | /* http://keith-wood.name/countdown.html
2 | * Czech initialisation for the jQuery countdown extension
3 | * Written by Roman Chlebec (creamd@c64.sk) (2008) */
4 | (function($) {
5 | 'use strict';
6 | $.countdown.regionalOptions.cs = {
7 | labels: ['Roků','Měsíců','Týdnů','Dní','Hodin','Minut','Sekund'],
8 | labels1: ['Rok','Měsíc','Týden','Den','Hodina','Minuta','Sekunda'],
9 | labels2: ['Roky','Měsíce','Týdny','Dny','Hodiny','Minuty','Sekundy'],
10 | compactLabels: ['r','m','t','d'],
11 | whichLabels: function(amount) {
12 | return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
13 | },
14 | digits: ['0','1','2','3','4','5','6','7','8','9'],
15 | timeSeparator: ':',
16 | isRTL: false
17 | };
18 | $.countdown.setDefaults($.countdown.regionalOptions.cs);
19 | })(jQuery);
20 |
--------------------------------------------------------------------------------
/themes/griffin/source/fonts/font-awesome/scss/_path.scss:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-sk.js:
--------------------------------------------------------------------------------
1 | /* http://keith-wood.name/countdown.html
2 | * Slovak initialisation for the jQuery countdown extension
3 | * Written by Roman Chlebec (creamd@c64.sk) (2008) */
4 | (function($) {
5 | 'use strict';
6 | $.countdown.regionalOptions.sk = {
7 | labels: ['Rokov','Mesiacov','Týždňov','Dní','Hodín','Minút','Sekúnd'],
8 | labels1: ['Rok','Mesiac','Týždeň','Deň','Hodina','Minúta','Sekunda'],
9 | labels2: ['Roky','Mesiace','Týždne','Dni','Hodiny','Minúty','Sekundy'],
10 | compactLabels: ['r','m','t','d'],
11 | whichLabels: function(amount) {
12 | return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0));
13 | },
14 | digits: ['0','1','2','3','4','5','6','7','8','9'],
15 | timeSeparator: ':',
16 | isRTL: false
17 | };
18 | $.countdown.setDefaults($.countdown.regionalOptions.sk);
19 | })(jQuery);
20 |
--------------------------------------------------------------------------------
/source/_posts/Learn-about-Windows-7-Task-Dialogs.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Learn about Windows 7 Task Dialogs
3 | categories:
4 | - Development
5 | permalink: learn-about-windows-7-task-dialogs
6 | id: 635
7 | updated: '2009-12-01 07:00:00'
8 | date: 2009-12-01 07:00:00
9 | ---
10 |
11 | Please take a few minutes and travel over to DeveloperFusion where my latest article on Windows 7 Task Dialogs has been published. If you’ve never used a task dialog before, I would definitely recommend them. I consider them “Message Box 2.0”.
Let me know what you think!
-------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-sr.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Serbian Cyrillic initialisation for the jQuery countdown extension 3 | * Written by Predrag Leka lp@lemurcake.com (2010) */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.sr = { 7 | labels: ['Година','Месеци','Недеља','Дана','Часова','Минута','Секунди'], 8 | labels1: ['Година','месец','Недеља','Дан','Час','Минут','Секунда'], 9 | labels2: ['Године','Месеца','Недеље','Дана','Часа','Минута','Секунде'], 10 | compactLabels: ['г','м','н','д'], 11 | whichLabels: function(amount) { 12 | return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0)); 13 | }, 14 | digits: ['0','1','2','3','4','5','6','7','8','9'], 15 | timeSeparator: ':', 16 | isRTL: false 17 | }; 18 | $.countdown.setDefaults($.countdown.regionalOptions.sr); 19 | })(jQuery); 20 | -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/animated.less: -------------------------------------------------------------------------------- 1 | // Animated Icons 2 | // -------------------------- 3 | 4 | .@{fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .@{fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-sr-SR.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Serbian Latin initialisation for the jQuery countdown extension 3 | * Written by Predrag Leka lp@lemurcake.com (2010) */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions['sr-SR'] = { 7 | labels: ['Godina','Meseci','Nedelja','Dana','Časova','Minuta','Sekundi'], 8 | labels1: ['Godina','Mesec','Nedelja','Dan','Čas','Minut','Sekunda'], 9 | labels2: ['Godine','Meseca','Nedelje','Dana','Časa','Minuta','Sekunde'], 10 | compactLabels: ['g','m','n','d'], 11 | whichLabels: function(amount) { 12 | return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0)); 13 | }, 14 | digits: ['0','1','2','3','4','5','6','7','8','9'], 15 | timeSeparator: ':', 16 | isRTL: false 17 | }; 18 | $.countdown.setDefaults($.countdown.regionalOptions['sr-SR']); 19 | })(jQuery); 20 | -------------------------------------------------------------------------------- /source/_posts/Powershell-How-to-recursively-delete-files-based-of-file-extension.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Powershell: How to recursively delete files based of file extension?' 3 | categories: 4 | - Development 5 | permalink: powershell-how-to-recursively-delete-files-based-of-file-extension 6 | id: 789 7 | updated: '2016-07-15 14:23:38' 8 | date: 2016-07-15 14:15:43 9 | --- 10 | 11 | File this under "took me WAY too long to figure out how to do". 12 | 13 | I just finished doing a Git merge, and ran into an issue where my working folder was polluted with .orig files. 14 | 15 | I wanted to recursively delete all the .orig files. That is apparently harder than it sounds, because it took me 15 minutes to figure out the correct command line. 16 | 17 | So you don't go fumbling like I did: 18 | 19 | ``` 20 | Get-ChildItem . -recurse -include *.orig | remove-item 21 | ``` 22 | 23 | Replace `.` and `*.orig` accordingly. Have fun! -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // Spinning Icons 2 | // -------------------------- 3 | 4 | .#{$fa-css-prefix}-spin { 5 | -webkit-animation: fa-spin 2s infinite linear; 6 | animation: fa-spin 2s infinite linear; 7 | } 8 | 9 | .#{$fa-css-prefix}-pulse { 10 | -webkit-animation: fa-spin 1s infinite steps(8); 11 | animation: fa-spin 1s infinite steps(8); 12 | } 13 | 14 | @-webkit-keyframes fa-spin { 15 | 0% { 16 | -webkit-transform: rotate(0deg); 17 | transform: rotate(0deg); 18 | } 19 | 100% { 20 | -webkit-transform: rotate(359deg); 21 | transform: rotate(359deg); 22 | } 23 | } 24 | 25 | @keyframes fa-spin { 26 | 0% { 27 | -webkit-transform: rotate(0deg); 28 | transform: rotate(0deg); 29 | } 30 | 100% { 31 | -webkit-transform: rotate(359deg); 32 | transform: rotate(359deg); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-ml.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Malayalam/(Indian>>Kerala) initialisation for the jQuery countdown extension 3 | * Written by Harilal.B (harilal1234@gmail.com) Feb 2013. */ 4 | (function($) { 5 | 'use strict'; 6 | /* jshint -W100 */ 7 | $.countdown.regionalOptions.ml = { 8 | labels: ['വര്ഷങ്ങള്','മാസങ്ങള്','ആഴ്ചകള്','ദിവസങ്ങള്','മണിക്കൂറുകള്','മിനിറ്റുകള്','സെക്കന്റുകള്'], 9 | labels1: ['വര്ഷം','മാസം','ആഴ്ച','ദിവസം','മണിക്കൂര്','മിനിറ്റ്','സെക്കന്റ്'], 10 | compactLabels: ['വ','മ','ആ','ദി'], 11 | whichLabels: null, 12 | digits: ['0','1','2','3','4','5','6','7','8','9'], 13 | // digits: ['൦','൧','൨','൩','൪','൫','൬','൭','൮','൯'], 14 | timeSeparator: ':', 15 | isRTL: false 16 | }; 17 | $.countdown.setDefaults($.countdown.regionalOptions.ml); 18 | })(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-bs.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Bosnian Latin initialisation for the jQuery countdown extension 3 | * Written by Miralem Mehic miralem@mehic.info (2011) */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.bs = { 7 | labels: ['Godina','Mjeseci','Sedmica','Dana','Sati','Minuta','Sekundi'], 8 | labels1: ['Godina','Mjesec','Sedmica','Dan','Sat','Minuta','Sekunda'], 9 | labels2: ['Godine','Mjeseca','Sedmica','Dana','Sata','Minute','Sekunde'], 10 | compactLabels: ['g','m','t','d'], 11 | whichLabels: function(amount) { 12 | return (amount === 1 ? 1 : (amount >= 2 && amount <= 4 ? 2 : 0)); 13 | }, 14 | digits: ['0','1','2','3','4','5','6','7','8','9'], 15 | timeSeparator: ':', 16 | isRTL: false 17 | }; 18 | $.countdown.setDefaults($.countdown.regionalOptions.bs); 19 | })(jQuery); 20 | -------------------------------------------------------------------------------- /source/_posts/50-Ways-to-Avoid-Find-and-Fix-ASP-NET-Performance-Issues.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: '50 Ways to Avoid, Find and Fix ASP.NET Performance Issues' 3 | permalink: 50-ways-to-avoid-find-and-fix-asp-net-performance-issues 4 | categories: 5 | - Self Promotion 6 | id: 728 7 | updated: '2013-01-24 04:34:48' 8 | date: 2013-01-25 05:00:46 9 | --- 10 | 11 | A couple weeks ago there was a public request on Twitter from the great folks at RedGate to provide tips and tricks for performance in ASP.NET applications. Come to find out, they selected one of my tips and published it in their ebook "50 Ways to Avoid, Find and Fix ASP.NET Performance Issues". 12 | 13 | It's a free download: http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/entrypage/avoid-find-fix-asp-problems 14 | 15 | Go grab it today! -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-uk.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Ukrainian initialisation for the jQuery countdown extension 3 | * Written by Goloborodko M misha.gm@gmail.com (2009), corrections by Iгор Kоновал */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.uk = { 7 | labels: ['Років','Місяців','Тижнів','Днів','Годин','Хвилин','Секунд'], 8 | labels1: ['Рік','Місяць','Тиждень','День','Година','Хвилина','Секунда'], 9 | labels2: ['Роки','Місяці','Тижні','Дні','Години','Хвилини','Секунди'], 10 | compactLabels: ['r','m','t','d'], 11 | whichLabels: function(amount) { 12 | return (amount === 1 ? 1 : (amount >=2 && amount <= 4 ? 2 : 0)); 13 | }, 14 | digits: ['0','1','2','3','4','5','6','7','8','9'], 15 | timeSeparator: ':', 16 | isRTL: false 17 | }; 18 | $.countdown.setDefaults($.countdown.regionalOptions.uk); 19 | })(jQuery); 20 | -------------------------------------------------------------------------------- /themes/griffin/source/css/custom.css: -------------------------------------------------------------------------------- 1 | /* Theme Name: The Project - Responsive Website Template 2 | Author:HtmlCoder 3 | Author URI:http://www.htmlcoder.me 4 | Author e-mail:htmlcoder.me@gmail.com 5 | Version:1.4.0 6 | Created:December 2014 7 | License URI:http://support.wrapbootstrap.com/ 8 | File Description: Place here your custom CSS styles 9 | */ 10 | 11 | #carbonads { 12 | display: block; 13 | overflow: hidden; 14 | padding: 1em; 15 | font-size: .7em; 16 | line-height: 1.5; 17 | } 18 | 19 | #carbonads a { 20 | text-decoration: none; 21 | } 22 | 23 | #carbonads span { 24 | display: block; 25 | overflow: hidden; 26 | } 27 | 28 | .carbon-text { 29 | display: block; 30 | float: left; 31 | max-width: 40%; 32 | text-align: left; 33 | } 34 | 35 | .carbon-img { 36 | float: left; 37 | margin-right: 1em; 38 | } 39 | 40 | .carbon-poweredby { 41 | display: block; 42 | margin-top: -1.9em; 43 | text-align: right; 44 | font-size: .8em; 45 | } -------------------------------------------------------------------------------- /themes/griffin/source/plugins/morphext/morphext.min.js: -------------------------------------------------------------------------------- 1 | /*! Morphext - v2.4.4 - 2015-05-21 */!function(a){"use strict";function b(b,c){this.element=a(b),this.settings=a.extend({},d,c),this._defaults=d,this._init()}var c="Morphext",d={animation:"bounceIn",separator:",",speed:2e3,complete:a.noop};b.prototype={_init:function(){var b=this;this.phrases=[],this.element.addClass("morphext"),a.each(this.element.text().split(this.settings.separator),function(c,d){b.phrases.push(a.trim(d))}),this.index=-1,this.animate(),this.start()},animate:function(){this.index=++this.index%this.phrases.length,this.element[0].innerHTML=''+this.phrases[this.index]+"",a.isFunction(this.settings.complete)&&this.settings.complete.call(this)},start:function(){var a=this;this._interval=setInterval(function(){a.animate()},this.settings.speed)},stop:function(){this._interval=clearInterval(this._interval)}},a.fn[c]=function(d){return this.each(function(){a.data(this,"plugin_"+c)||a.data(this,"plugin_"+c,new b(this,d))})}}(jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-pl.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Polish initialisation for the jQuery countdown extension 3 | * Written by Pawel Lewtak lewtak@gmail.com (2008) */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.pl = { 7 | labels: ['lat','miesięcy','tygodni','dni','godzin','minut','sekund'], 8 | labels1: ['rok','miesiąc','tydzień','dzień','godzina','minuta','sekunda'], 9 | labels2: ['lata','miesiące','tygodnie','dni','godziny','minuty','sekundy'], 10 | compactLabels: ['l','m','t','d'], 11 | compactLabels1: ['r','m','t','d'], 12 | whichLabels: function(amount) { 13 | var units = amount % 10; 14 | var tens = Math.floor((amount % 100) / 10); 15 | return (amount === 1 ? 1 : (units >= 2 && units <= 4 && tens !== 1 ? 2 : 0)); 16 | }, 17 | digits: ['0','1','2','3','4','5','6','7','8','9'], 18 | timeSeparator: ':', 19 | isRTL: false 20 | }; 21 | $.countdown.setDefaults($.countdown.regionalOptions.pl); 22 | })(jQuery); 23 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/owlcarousel2/assets/owl.theme.default.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.0 3 | * Copyright 2013-2016 David Deutsch 4 | * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) 5 | */ 6 | .owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#869791;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#869791} -------------------------------------------------------------------------------- /themes/griffin/source/plugins/owlcarousel2/assets/owl.theme.green.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Owl Carousel v2.2.0 3 | * Copyright 2013-2016 David Deutsch 4 | * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) 5 | */ 6 | .owl-theme .owl-dots,.owl-theme .owl-nav{text-align:center;-webkit-tap-highlight-color:transparent}.owl-theme .owl-nav{margin-top:10px}.owl-theme .owl-nav [class*=owl-]{color:#FFF;font-size:14px;margin:5px;padding:4px 7px;background:#D6D6D6;display:inline-block;cursor:pointer;border-radius:3px}.owl-theme .owl-nav [class*=owl-]:hover{background:#4DC7A0;color:#FFF;text-decoration:none}.owl-theme .owl-nav .disabled{opacity:.5;cursor:default}.owl-theme .owl-nav.disabled+.owl-dots{margin-top:10px}.owl-theme .owl-dots .owl-dot{display:inline-block;zoom:1}.owl-theme .owl-dots .owl-dot span{width:10px;height:10px;margin:5px 7px;background:#D6D6D6;display:block;-webkit-backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}.owl-theme .owl-dots .owl-dot.active span,.owl-theme .owl-dots .owl-dot:hover span{background:#4DC7A0} -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-ru.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Russian initialisation for the jQuery countdown extension 3 | * Written by Sergey K. (xslade{at}gmail.com) June 2010. */ 4 | (function($) { 5 | 'use strict'; 6 | $.countdown.regionalOptions.ru = { 7 | labels: ['Лет','Месяцев','Недель','Дней','Часов','Минут','Секунд'], 8 | labels1: ['Год','Месяц','Неделя','День','Час','Минута','Секунда'], 9 | labels2: ['Года','Месяца','Недели','Дня','Часа','Минуты','Секунды'], 10 | compactLabels: ['л','м','н','д'], 11 | compactLabels1: ['г','м','н','д'], 12 | whichLabels: function(amount) { 13 | var units = amount % 10; 14 | var tens = Math.floor((amount % 100) / 10); 15 | return (amount === 1 ? 1 : (units >= 2 && units <= 4 && tens !== 1 ? 2 : 16 | (units === 1 && tens !== 1 ? 1 : 0))); 17 | }, 18 | digits: ['0','1','2','3','4','5','6','7','8','9'], 19 | timeSeparator: ':', 20 | isRTL: false 21 | }; 22 | $.countdown.setDefaults($.countdown.regionalOptions.ru); 23 | })(jQuery); -------------------------------------------------------------------------------- /source/_posts/Specifying-Visual-Studio-Version-in-NPM-Installs.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Specifying Visual Studio Version in NPM Installs 3 | categories: 4 | - Development 5 | permalink: specifying-visual-studio-version-in-npm-installs 6 | date: 2013-05-14 06:34:08 7 | --- 8 | 9 | Sometimes when you install a NPM package, you'll run into an issue like this: 10 |C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets(35,5): error MSB8020: The builds tools for Visual Studio 2010 (Platform Toolset = 'v100') cannot be found. To build using the v100 build tools, either click the Project menu or right-click the solution, and then select "Update VC++ Projects...". Install Visual Studio 2010 to build using the Visual Studio 2010 build tools.11 | Normally you'll get this if you're only running VS2012 and it wants VS2010/VS2008. You can ask NPM to use Visual Studio 2012 instead by using with "--msvs_version=2012" command. 12 | 13 | Example: 14 |
npm install socket.io --msvs_version=201215 | Tada. This should work almost every time. -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-sl.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Slovenian localisation for the jQuery countdown extension 3 | * Written by Borut Tomažin (debijan{at}gmail.com) (2011) 4 | * updated by Jan Zavrl (jan@iuvo.si) (2015) */ 5 | (function($) { 6 | 'use strict'; 7 | $.countdown.regionalOptions.sl = { 8 | labels: ['Let','Mesecev','Tednov','Dni','Ur','Minut','Sekund'], // Plurals 9 | labels1: ['Leto','Mesec','Teden','Dan','Ura','Minuta','Sekunda'], // Singles 10 | labels2: ['Leti','Meseca','Tedna','Dneva','Uri','Minuti','Sekundi'], // Doubles 11 | labels3: ['Leta','Meseci','Tedni','Dnevi','Ure','Minute','Sekunde'], // 3's 12 | labels4: ['Leta','Meseci','Tedni','Dnevi','Ure','Minute','Sekunde'], // 4's 13 | compactLabels: ['l','m','t','d'], 14 | whichLabels: function(amount) { 15 | return (amount > 4 ? 0 : amount); 16 | }, 17 | digits: ['0','1','2','3','4','5','6','7','8','9'], 18 | timeSeparator: ':', 19 | isRTL: false 20 | }; 21 | $.countdown.setDefaults($.countdown.regionalOptions.sl); 22 | })(jQuery); 23 | -------------------------------------------------------------------------------- /source/_posts/If-You-Reach-Just-One-Person.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: If You Reach Just One Person 3 | categories: 4 | - Deep Thoughts 5 | permalink: if-you-reach-just-one-person 6 | id: 660 7 | updated: '2010-03-29 06:00:00' 8 | date: 2010-03-29 06:00:00 9 | --- 10 | 11 |
After giving a talk, it’s really difficult to judge if you reached any of the attendee’s. Normally, you get the occasional “good job” or “thanks, that was a big help.” Today I got a small mention by Johnathan Bracken, who was sitting in my jQuery From The Ground Up talk at Roanoke Code Camp. This means a lot, because it shows that my talk stayed in Johnathan’s head past the end of the talk.
He just started blogging, and mentioned me in his entry I Will Not Run from JavaScript No More. This is very cool to see. I wish Johnathan the best of luck in his jQuery adventures! And I expect him to give a jQuery talk at next year’s code camp.
-------------------------------------------------------------------------------- /themes/griffin/source/plugins/pace/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013 HubSpot, Inc. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /themes/griffin/source/js/google.map.config.js: -------------------------------------------------------------------------------- 1 | (function($){ 2 | $(document).ready(function(){ 3 | 4 | // Google Maps 5 | //----------------------------------------------- 6 | if ($("#map-canvas").length>0) { 7 | var map, myLatlng, myZoom, marker; 8 | // Set the coordinates of your location 9 | myLatlng = new google.maps.LatLng(41.38791700, 2.16991870); 10 | myZoom = 12; 11 | function initialize() { 12 | var mapOptions = { 13 | zoom: myZoom, 14 | mapTypeId: google.maps.MapTypeId.ROADMAP, 15 | center: myLatlng, 16 | scrollwheel: false 17 | }; 18 | map = new google.maps.Map(document.getElementById("map-canvas"),mapOptions); 19 | marker = new google.maps.Marker({ 20 | map:map, 21 | draggable:true, 22 | animation: google.maps.Animation.DROP, 23 | position: myLatlng 24 | }); 25 | google.maps.event.addDomListener(window, "resize", function() { 26 | map.setCenter(myLatlng); 27 | }); 28 | } 29 | google.maps.event.addDomListener(window, "load", initialize); 30 | } 31 | }); // End document ready 32 | 33 | })(this.jQuery); -------------------------------------------------------------------------------- /themes/griffin/source/plugins/charts/LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright (c) 2013-2016 Nick Downie 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 9 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kevgriffincom ", 3 | "version": "2.0.0", 4 | "private": true, 5 | "hexo": { 6 | "version": "3.8.0" 7 | }, 8 | "dependencies": { 9 | "hexo": "^3.8.0", 10 | "hexo-all-minifier": "^0.5.2", 11 | "hexo-deployer-git": "^0.3.1", 12 | "hexo-generator-archive": "^0.1.4", 13 | "hexo-generator-category": "^0.1.3", 14 | "hexo-generator-feed": "^1.2.0", 15 | "hexo-generator-index": "^0.2.0", 16 | "hexo-generator-sitemap": "^1.1.2", 17 | "hexo-generator-tag": "^0.2.0", 18 | "hexo-helper-recent_posts": "0.0.2", 19 | "hexo-migrator-ghost": "^0.1.0", 20 | "hexo-migrator-rss": "^0.1.2", 21 | "hexo-renderer-ejs": "^0.3.1", 22 | "hexo-renderer-handlebars": "^2.0.2", 23 | "hexo-renderer-markdown": "^1.1.1", 24 | "hexo-renderer-marked": "^0.3.2", 25 | "hexo-renderer-stylus": "^0.3.1", 26 | "hexo-server": "^0.3.3", 27 | "hexo-tag-video": "0.0.2" 28 | }, 29 | "scripts": { 30 | "start": "hexo server -s", 31 | "prestart": "npm install -g hexo && hexo generate", 32 | "docker": "docker push 1kevgriff/kevgriffincom:latest" 33 | } 34 | } -------------------------------------------------------------------------------- /source/_posts/Exploring-C-7-0-Out-Variables.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Exploring C# 7.0: Out Variables' 3 | permalink: exploring-csharp70-out-variables 4 | categories: 5 | - "Development - C#" 6 | date: 2016-11-08 18:41:48 7 | --- 8 | 9 | _In this series, I want to explore a couple of the new C# 7.0 features coming down the pipeline. As with most things, I am working with preview bits, so these features are not guaranteed to work the same way in production._ 10 | 11 | Using the out keyword within C# is nothing new. If you declare a variable within a method called with **out**, you are instructing the compile that you are expecting the method to set the values of those at runtime. 12 | 13 | 14 | 15 | Commonly the problem is that you have to declare the variable before the method call using out. In C# 7.0, there is the concept of out variables, which will save you a couple keystrokes by allowing you to declare the variable inline. 16 | 17 | The above example can be quickly refactored: 18 | 19 | 20 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/css/jquery.countdown.css: -------------------------------------------------------------------------------- 1 | /* jQuery Countdown styles 2.0.0. */ 2 | .is-countdown { 3 | border: 1px solid #ccc; 4 | background-color: #eee; 5 | } 6 | .countdown-rtl { 7 | direction: rtl; 8 | } 9 | .countdown-holding span { 10 | color: #888; 11 | } 12 | .countdown-row { 13 | clear: both; 14 | width: 100%; 15 | padding: 0px 2px; 16 | text-align: center; 17 | } 18 | .countdown-show1 .countdown-section { 19 | width: 98%; 20 | } 21 | .countdown-show2 .countdown-section { 22 | width: 48%; 23 | } 24 | .countdown-show3 .countdown-section { 25 | width: 32.5%; 26 | } 27 | .countdown-show4 .countdown-section { 28 | width: 24.5%; 29 | } 30 | .countdown-show5 .countdown-section { 31 | width: 19.5%; 32 | } 33 | .countdown-show6 .countdown-section { 34 | width: 16.25%; 35 | } 36 | .countdown-show7 .countdown-section { 37 | width: 14%; 38 | } 39 | .countdown-section { 40 | display: block; 41 | float: left; 42 | font-size: 75%; 43 | text-align: center; 44 | } 45 | .countdown-amount { 46 | font-size: 200%; 47 | } 48 | .countdown-period { 49 | display: block; 50 | } 51 | .countdown-descr { 52 | display: block; 53 | width: 100%; 54 | } 55 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/owlcarousel2/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014 Owl 2 | Modified work Copyright 2016 David Deutsch 3 | 4 | Permission is hereby granted, free of charge, to any person 5 | obtaining a copy of this software and associated documentation 6 | files (the "Software"), to deal in the Software without 7 | restriction, including without limitation the rights to use, 8 | copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the 10 | Software is furnished to do so, subject to the following 11 | conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 18 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 20 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 21 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 | OTHER DEALINGS IN THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /source/_posts/How-to-run-Visual-Studio-Code-from-Zsh-on-Mac-OSX.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to run Visual Studio Code from Zsh on Mac OSX 3 | categories: 4 | - Development 5 | permalink: how-to-run-visual-studio-code-from-zsh-on-mac-osx 6 | date: 2015-05-07 13:27:04 7 | --- 8 | 9 | **EDIT:** [You can just do this from Visual Studio Code now.](https://code.visualstudio.com/docs/setup/osx) 10 | 11 | Using [Visual Studio Code](https://code.visualstudio.com) on your Mac, but can't call it from Zsh? 12 | 13 | Using Terminal? [Go here](http://kevgriffin.com/how-to-run-visual-studio-code-from-terminal-on-mac-osx/) 14 | 15 | Currently, there isn't an automatic method for doing this, but with a little code in your `.zshrc` file, you can configure it. 16 | 17 | ``` 18 | function code { 19 | if [[ $# = 0 ]] 20 | then 21 | open -a "Visual Studio Code" 22 | else 23 | local argPath="$1" 24 | [[ $1 = /* ]] && argPath="$1" || argPath="$PWD/${1#./}" 25 | open -a "Visual Studio Code" "$argPath" 26 | fi 27 | } 28 | ``` 29 | Then from Terminal you can type: 30 | 31 | `code` -- opens Visual Studio Code 32 | `code .` -- opens current directory in Visual Studio Code 33 | `code somefile` -- opens somefile in Visual Studio Code -------------------------------------------------------------------------------- /source/speaking/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Speaking 3 | layout: generic 4 | date: 2017-04-25 23:05:20 5 | --- 6 | ## Looking for a speaker? 7 | I am always looking for new audiences to engage with. I commonly speak on a variety of topics, including (but not limited to): 8 | 9 | * ASP.NET 10 | * C# 11 | * JavaScript (Client and Server-side) 12 | * node.js 13 | * Microsoft Azure 14 | * Freelancing 15 | * Entreprenuership 16 | * and more! 17 | 18 | If your engagement is outside a five hour driving time of Chesapeake, VA, I humbly request some assistance with travel. As a fellow user group and conference organizer, I understand the limited funds for speakers but any assistance would be greatly appreciated. 19 | 20 | ## Talks 21 | 22 | * [Application Insights - The Magic School Bus For Your Web Applications](/talks/application-insights) 23 | 24 | ## Upcoming Speaking Engagements 25 | 26 | Nothing lined up at the moment! 27 | 28 | ## Previous Speaking Engagements 29 | 30 | | Date | Event | Talk Planned | 31 | |:----: |:-----: |:------------: | 32 | | May 23rd, 2017 | Capitial Area .NET Users Group |[Application Insights - The Magic School Bus For Your Web Applications](/talks/application-insights) | 33 | | | | | 34 | -------------------------------------------------------------------------------- /source/_posts/Quick-Introduction-to-SignalR-Streaming.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Quick Introduction to SignalR Streaming 3 | date: 2018-12-13 23:39:46 4 | categories: 5 | - ASP.NET Core 6 | permalink: quick-introduction-to-signalr-streaming 7 | tags: 8 | - asp.net core 9 | - signalr 10 | - websockets 11 | - streaming 12 | - .net core 13 | --- 14 | For my entry this year for [C# Advent](https://crosscuttingconcerns.com/The-Second-Annual-C-Advent), I wanted to do something a little bit different. 15 | 16 | As of late, I've been wanting to start doing several tidbits around cool things that I see in .NET Core and ASP.NET Core. And by the recommendation of my friend, [Brady Gaster](https://twitter.com/bradygaster), I took a look at the new Streaming APIs built into SignalR (for ASP.NET Core). 17 | 18 | And WOW! I'm super impressed with that I saw. 19 | 20 | Check out my video introduction below, and lemme know what you think in the comments! 21 | 22 | 23 | 24 | Source code for this project is available at on [GitHub](https://github.com/swiftkickin/signalr-streaming-v1). -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.countdown/js/jquery.countdown-hr.js: -------------------------------------------------------------------------------- 1 | /* http://keith-wood.name/countdown.html 2 | * Croatian l10n for the jQuery countdown plugin 3 | * Written by Dejan Broz info@hqfactory.com (2011) 4 | * Improved by zytzagoo (2014) */ 5 | (function($) { 6 | 'use strict'; 7 | $.countdown.regionalOptions.hr = { 8 | labels: ['Godina','Mjeseci','Tjedana','Dana','Sati','Minuta','Sekundi'], // plurals 9 | labels1: ['Godina','Mjesec','Tjedan','Dan','Sat','Minutu','Sekundu'], // singles 10 | labels2: ['Godine','Mjeseca','Tjedana','Dana','Sata','Minute','Sekunde'], // paucals 11 | compactLabels: ['g','m','t','d'], 12 | whichLabels: function(amount){ 13 | amount = parseInt(amount, 10); 14 | if (amount % 10 === 1 && amount % 100 !== 11) { 15 | return 1; // singles (/.*1$/ && ! /.*11$/) 16 | } 17 | if (amount % 10 >= 2 && amount % 10 <= 4 && (amount % 100 < 10 || amount % 100 >= 20)) { 18 | return 2; // paucals (/.*[234]$/ && ! /.*1[234]$/ 19 | } 20 | return 0; // default plural (most common case) 21 | }, 22 | digits: ['0','1','2','3','4','5','6','7','8','9'], 23 | timeSeparator: ':', 24 | isRTL: false 25 | }; 26 | $.countdown.setDefaults($.countdown.regionalOptions.hr); 27 | })(jQuery); 28 | -------------------------------------------------------------------------------- /source/_posts/How-to-run-Visual-Studio-Code-from-Terminal-on-Mac-OSX.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to run Visual Studio Code from Terminal on Mac OSX 3 | categories: 4 | - Development 5 | permalink: how-to-run-visual-studio-code-from-terminal-on-mac-osx 6 | date: 2015-05-07 13:20:28 7 | --- 8 | 9 | **Edit 06/24/2016:** [You can just do this from Visual Studio Code now.](https://code.visualstudio.com/docs/setup/osx) 10 | 11 | *Edit 12/10/2015: Thanks for commenter on letting know that latest release of Code broke original post. Updated with code from [documentation](https://code.visualstudio.com/Docs/editor/setup).* 12 | 13 | Using [Visual Studio Code](https://code.visualstudio.com) on your Mac, but you want to use it in Terminal? 14 | 15 | Using Zsh? [Go here](http://kevgriffin.com/how-to-run-visual-studio-code-from-zsh-on-mac-osx/) 16 | 17 | Currently, there isn't an automatic method for doing this, but with a little code in your `~/.bash_profile` file, you can configure it. 18 | 19 | ``` 20 | code () { VSCODE_CWD="$PWD" open -n -b "com.microsoft.VSCode" --args $* ;} 21 | ``` 22 | 23 | Then from Terminal you can type: 24 | 25 | `code` -- opens Visual Studio Code 26 | `code .` -- opens current directory in Visual Studio Code 27 | `code somefile` -- opens somefile in Visual Studio Code -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/php/instagram/class-instagram.php: -------------------------------------------------------------------------------- 1 | 11 | */ 12 | 13 | class TP_instagram { 14 | 15 | /** 16 | * API key 17 | * 18 | * @since 1.0.0 19 | * @access private 20 | * @var string $api_key Instagram API key 21 | */ 22 | private $api_key; 23 | 24 | /** 25 | * Initialize the class and set its properties. 26 | * 27 | * @since 1.0.0 28 | * @param string $api_key Instagram API key. 29 | */ 30 | public function __construct($api_key) { 31 | $this->api_key = $api_key; 32 | } 33 | 34 | /** 35 | * Get Instagram Pictures 36 | * 37 | * @since 1.0.0 38 | * @param string $user_id Instagram User id (not name) 39 | */ 40 | public function get_public_photos($search_user_id){ 41 | //call the API and decode the response 42 | $url = "https://api.instagram.com/v1/users/".$search_user_id."/media/recent?access_token=".$this->api_key."&client_id=".$search_user_id; 43 | $rsp = json_decode(file_get_contents($url)); 44 | return $rsp->data; 45 | } 46 | 47 | } 48 | ?> -------------------------------------------------------------------------------- /source/hire/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How Can I Help You? 3 | layout: generic 4 | date: 2014-02-20 22:47:10 5 | --- 6 | ## What Types of Work I'm Available For? 7 | 8 | I am available for a variety of engagement types. Pricing ranges thru Hourly Rates, Weekly Rates, and Monthly Retainers. 9 | 10 | ### One-on-One Coaching 11 | One of my favorite things to do is work individually with new developers, or developers who are trying to plus one their skillsets. In a coaching arrangement, you and I will meet on a regular basis (weekly in most cases). Together, we will developer a growth plan designed towards your goal. 12 | 13 | ### Private Training 14 | The speciality of my company, Swift Kick, is to provide customized software training to any teams that need a swift kick in the pants. 15 | 16 | ### Small Project Consulting 17 | For projects that require dedicated assistance ranging from 1 week to 3 months. If you fit into this category, or feel you do, 18 | 19 | ### Long-term Engagements 20 | Any project requiring more than 3 months of dedicated time. Please see Swift Kick for more information. 21 | 22 | ## How to Connect 23 | The quickest, easiest way to connect with me is to request a meeting through my [Clarity](https://clarity.fm/kevingriffin) account. Any requests through email or social media will be directed through this avenue. 24 | -------------------------------------------------------------------------------- /source/_posts/My-Defacto-gitignore-file.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: My Defacto .gitignore file 3 | categories: 4 | - Development 5 | permalink: base-gitignore 6 | date: 2012-11-12 10:37:23 7 | --- 8 | 9 | Every time I create a new Git repo, I always have to go look for a previous copy of my .gitignore file. I thought it would be a great idea to just post it up for all to find, in case they were looking for it. This particular file is built around Visual Studio projects. 10 |# Ignore file for Visual Studio 11 | 12 | # use glob syntax 13 | syntax: glob 14 | 15 | # Ignore Config files with keys and passwords 16 | #ServiceConfiguration*.cscfg 17 | #Web*.config 18 | #App*.config 19 | 20 | # Ignore Visual Studio files 21 | *.obj 22 | #*.exe 23 | #*.pdb 24 | *.user 25 | *.aps 26 | *.pch 27 | *.vspscc 28 | *.vshost.* 29 | *_i.c 30 | *_p.c 31 | *.ncb 32 | *.suo 33 | *.tlb 34 | *.tlh 35 | *.bak 36 | *.cache 37 | *.ilk 38 | *.log 39 | *.lib 40 | *.sbr 41 | *.scc 42 | *.orig 43 | UpgradeLog*.* 44 | UpgradeReport*.* 45 | [Bb]in 46 | [Dd]ebug*/ 47 | obj/ 48 | [Rr]elease*/ 49 | _ReSharper*/ 50 | [Tt]est[Rr]esult* 51 | [Bb]uild[Ll]og.* 52 | *.[Pp]ublish.xml 53 | glob:*.vs10x 54 | *.ReSharper 55 | [Pp]ublish 56 | [Rr]eleaseFiles 57 | [Cc]sx/ 58 | [Bb]ackup1/ 59 | [Pp]ackages/ 60 | 61 | # Mac Files 62 | .DS_Store 63 | *.DS_Store 64 | ._*-------------------------------------------------------------------------------- /source/_posts/Named-Callbacks-in-JavaScript.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Named Callbacks in JavaScript 3 | categories: 4 | - Development 5 | permalink: named-callbacks-in-javascript 6 | date: 2013-08-06 06:30:49 7 | --- 8 | 9 | You've been taught bad JavaScript for years and years. What do I mean? I'm sure you've written code like this more than once in your career: 10 |
someMethod(function (){
11 | console.log("doing stuff...");
12 | });
13 | So what's wrong with that? It runs and doesn't error. Heck, even JSLint won't complain about it. But what happens something goes wrong inside of your callback? Most debuggers will list the callback as an "anonymous method" in the call stack. Not very helpful is it? Isn't there something simple we can do make our callbacks easier to read in a call stack?
14 |
15 | NAME YOUR CALLBACKS.
16 |
17 | Take the example above, and let's name the callback.
18 | someMethod(function myCallback(){
19 | console.log("doing stuff...");
20 | });
21 | Simple! Let's imagine doing a jQuery AJAX call with this approach (and yes, I'm ignore the fact that you should use promises -- which are WAY better):
22 | $.ajax({
23 | url: "/myUrl",
24 | success: function onAjaxSuccess (data){
25 | },
26 | error: function onAjaxError (error) {
27 | }
28 | });
29 | You're welcome :)
--------------------------------------------------------------------------------
/themes/griffin/layout/partials/styles.hbs:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/themes/griffin/source/js/custom.js:
--------------------------------------------------------------------------------
1 | /* Theme Name: The Project - Responsive Website Template
2 | * Author:HtmlCoder
3 | * Author URI:http://www.htmlcoder.me
4 | * Author e-mail:htmlcoder.me@gmail.com
5 | * Version:1.4.0
6 | * Created:March 2015
7 | * License URI:http://support.wrapbootstrap.com/
8 | * File Description: Place here your custom scripts
9 | */
10 |
11 | (function($){
12 | $(document).ready(function(){
13 |
14 | // Notify Plugin - The below code (until line 42) is used for demonstration purposes only
15 | //-----------------------------------------------
16 | if (($(".main-navigation.onclick").length>0) && !Modernizr.touch ){
17 | $.notify({
18 | // options
19 | message: 'The Dropdowns of the Main Menu, are now open with click on Parent Items. Click "Home" to checkout this behavior.'
20 | },{
21 | // settings
22 | type: 'info',
23 | delay: 10000,
24 | offset : {
25 | y: 150,
26 | x: 20
27 | }
28 | });
29 | };
30 | if (!($(".main-navigation.animated").length>0) && !Modernizr.touch && $(".main-navigation").length>0){
31 | $.notify({
32 | // options
33 | message: 'The animations of main menu are disabled.'
34 | },{
35 | // settings
36 | type: 'info',
37 | delay: 10000,
38 | offset : {
39 | y: 150,
40 | x: 20
41 | }
42 | }); // End Notify Plugin - The above code (from line 14) is used for demonstration purposes only
43 |
44 | };
45 | }); // End document ready
46 |
47 | })(this.jQuery);
48 |
--------------------------------------------------------------------------------
/themes/griffin/source/plugins/jquery.countdown/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | This page demonstrates the very basics of the 25 | jQuery Countdown plugin. 26 | It contains the minimum requirements for using the plugin and 27 | can be used as the basis for your own experimentation.
28 |For more detail see the documentation reference page.
29 |Counting down to 26 January 2014.
30 | 31 |12 | <audio id="myAudio" controls preload="auto"> 13 | <source src="/my-podcast.mp3" /> 14 | <source src="/my-podcast.ogg" /> 15 | </audio> 16 |17 | 18 | In Chrome, this works PERFECTLY (as it should). 19 | 20 | In Internet Explorer, several (if not all) files will fail to preload. Here's how to figure it: 21 | 22 |
23 | var audioElement = document.getElementById("myAudio");
24 | console.log(audioElement.networkState);
25 |
26 |
27 | Network state can have 3 options: NETWORK_EMPTY, NETWORK_IDLE, NETWORK_LOADING, NETWORK_NO_SOURCE.
28 |
29 | You "want" it to be IDLE, because that means the file is loaded. Typically, you'll get NO_SOURCE with Internet Explorer.
30 |
31 | What's a quick fix? First, make sure there is no preload attribute, and then do this:
32 |
33 |
34 | var audioElement = document.getElementById("myAudio");
35 | audioElement.load(); // kicks off the load
36 |
37 |
38 | This has worked for me in 100% of the tests I've done tonight. Feel free to comment on other solutions. I haven't tested in IE10 yet, so I cannot be certain of how it works.
--------------------------------------------------------------------------------
/source/_posts/Review-7-Recurring-Revenue-Recipes-for-Freelancers.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'Review: 7 Recurring Revenue Recipes for Freelancers'
3 | permalink: review-7-recurring-revenue-recipes-for-freelancers
4 | categories:
5 | - Reviews
6 | updated: '2015-02-16 09:11:50'
7 | date: 2015-02-16 08:55:19
8 | ---
9 |
10 | During a flight from Norfok to Charlotte, I had the opportunity to read [Ryan Castillo's](https://twitter.com/rmcastil) new book [7 Recurring Revenue Recipes for Freelancers](http://ryancastillo.org/7-recipes-recurring-revenue/).
11 |
12 | In this book, Ryan provides seven actionable sets of guidelines that provides the reader a path way to earning $150k a year. Ryan allows the reader to take a "choose your own adventure" to their career and bottom line.
13 |
14 | This book provides clear ways for readers who are already experienced freelancers or consultants to move their target forward. If you're new to the consulting game, Ryan also provides some great places to get started.
15 |
16 | Ryan's recipe on developing support contracts with new and existing clients definitely struck a cord with me. This is a problem I'm running into now with multiple clients, and I'm going to be able to put Ryan's suggestions into action within the next week. This book has the potential to make me an easy $25k extra each year.
17 |
18 | Many of the recommendations Ryan makes echo throughout the communities I'm involved in daily. Every day, people are putting these recipes into action and are seeing results!
19 |
20 | Ryan is currently [pre-selling his book for $12](http://ryancastillo.org/7-recipes-recurring-revenue/), which is a drop in the bucket compared to what you will make if you put his receipes into adction.
--------------------------------------------------------------------------------
/source/_posts/Console-Games-Why-do-we-have-to-press-start.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'Console Games: Why do we have to press start?'
3 | permalink: console-games-why-do-we-have-to-press-start
4 | categories:
5 | - "Development - Game Development"
6 | date: 2010-01-05 06:00:00
7 | ---
8 |
9 | Interesting question came up on Twitter the other day:
“Press Start” screens? Why can’t I just go straight to the main menu?
If you’re a gamer, especially on consoles, you’ve seen this screen more often than you’d care to. It’s a little annoyance. However, there is a very good reason for having this screen in place.
Imagine you’re running four controller on your Xbox, and all four of them are turned on. Then you put in a single player game, and it comes up to that annoying “Press Start” screen. Which controller do you use to press start with? The answer is easy: any of them!
The “Press Start” screen is designed to determine which controller the game should poll for input. During this screen, the game is polling all connected controllers for input. If any of them register a “start” button push, the game makes that controller the “default” controller. The use-case for this scenario is that the player should be able to use any connected controller to play the game, and not be forced to use controller #1. This is considered a best practice.
The More You Know…
-------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/css/navigation-skins/custom.css: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | 3 | - Revolution Slider 5.0 Navigatin Skin Style - 4 | 5 | CUSTOM SKIN 6 | 7 | author: ThemePunch 8 | email: info@themepunch.com 9 | website: http://www.themepunch.com 10 | -----------------------------------------------------------------------------*/ 11 | /* ARROWS */ 12 | .custom.tparrows { 13 | cursor:pointer; 14 | background:#000; 15 | background:rgba(0,0,0,0.5); 16 | width:40px; 17 | height:40px; 18 | position:absolute; 19 | display:block; 20 | z-index:100; 21 | } 22 | .custom.tparrows:hover { 23 | background:#000; 24 | } 25 | .custom.tparrows:before { 26 | font-family: "revicons"; 27 | font-size:15px; 28 | color:#fff; 29 | display:block; 30 | line-height: 40px; 31 | text-align: center; 32 | } 33 | .custom.tparrows.tp-leftarrow:before { 34 | content: "\e824"; 35 | } 36 | .custom.tparrows.tp-rightarrow:before { 37 | content: "\e825"; 38 | } 39 | 40 | 41 | 42 | /* BULLETS */ 43 | .custom.tp-bullets { 44 | } 45 | .custom.tp-bullets:before { 46 | content:" "; 47 | position:absolute; 48 | width:100%; 49 | height:100%; 50 | background:transparent; 51 | padding:10px; 52 | margin-left:-10px;margin-top:-10px; 53 | box-sizing:content-box; 54 | } 55 | .custom .tp-bullet { 56 | width:12px; 57 | height:12px; 58 | position:absolute; 59 | background:#aaa; 60 | background:rgba(125,125,125,0.5); 61 | cursor: pointer; 62 | box-sizing:content-box; 63 | } 64 | .custom .tp-bullet:hover, 65 | .custom .tp-bullet.selected { 66 | background:rgb(125,125,125); 67 | } 68 | .custom .tp-bullet-image { 69 | } 70 | .custom .tp-bullet-title { 71 | } 72 | 73 | 74 | /* THUMBS */ 75 | 76 | 77 | /* TABS */ 78 | 79 | 80 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/css/navigation-skins/persephone.css: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | 3 | - Revolution Slider 5.0 Navigatin Skin Style - 4 | 5 | PERSEPHONE SKIN 6 | 7 | author: ThemePunch 8 | email: info@themepunch.com 9 | website: http://www.themepunch.com 10 | -----------------------------------------------------------------------------*/ 11 | /* ARROWS */ 12 | .persephone.tparrows { 13 | cursor:pointer; 14 | background:#aaa; 15 | background:rgba(200,200,200,0.5); 16 | width:40px; 17 | height:40px; 18 | position:absolute; 19 | display:block; 20 | z-index:100; 21 | border:1px solid #f5f5f5; 22 | } 23 | .persephone.tparrows:hover { 24 | background:#333; 25 | } 26 | .persephone.tparrows:before { 27 | font-family: "revicons"; 28 | font-size:15px; 29 | color:#fff; 30 | display:block; 31 | line-height: 40px; 32 | text-align: center; 33 | } 34 | .persephone.tparrows.tp-leftarrow:before { 35 | content: "\e824"; 36 | } 37 | .persephone.tparrows.tp-rightarrow:before { 38 | content: "\e825"; 39 | } 40 | 41 | 42 | 43 | /* BULLETS */ 44 | .persephone.tp-bullets { 45 | } 46 | .persephone.tp-bullets:before { 47 | content:" "; 48 | position:absolute; 49 | width:100%; 50 | height:100%; 51 | background:#transparent; 52 | padding:10px; 53 | margin-left:-10px;margin-top:-10px; 54 | box-sizing:content-box; 55 | } 56 | .persephone .tp-bullet { 57 | width:12px; 58 | height:12px; 59 | position:absolute; 60 | background:#aaa; 61 | border:1px solid #e5e5e5; 62 | cursor: pointer; 63 | box-sizing:content-box; 64 | } 65 | .persephone .tp-bullet:hover, 66 | .persephone .tp-bullet.selected { 67 | background:#222; 68 | } 69 | .persephone .tp-bullet-image { 70 | } 71 | .persephone .tp-bullet-title { 72 | } 73 | 74 | 75 | -------------------------------------------------------------------------------- /themes/griffin/helper/index.js: -------------------------------------------------------------------------------- 1 | var _ = require('lodash'); 2 | 3 | module.exports = function (hexo) { 4 | return { 5 | out: function (obj) { 6 | console.log(JSON.stringify(obj)); 7 | return; 8 | }, 9 | ifequals: function (conditional, value, options) { 10 | 11 | console.log("Comparing"); 12 | 13 | if (conditional === value) { 14 | return options.fn(this); 15 | } else { 16 | return options.inverse(this); 17 | } 18 | 19 | }, 20 | sortByKey: function (array, key) { 21 | /** 22 | * Sorts array by a given key 23 | * @function sort_by_key 24 | * @memberof Handlebars.helpers 25 | * @param {array} array - The data to sort. 26 | * @param {string} key - The key to sort by. 27 | * @see {@link http://stackoverflow.com/questions/8175093/simple-function-to-sort-an-array-of-objects} 28 | * @returns {array} 29 | */ 30 | return _.sortBy(array, [key]); 31 | }, 32 | filterCategories: function (array, name) { 33 | var results = _.filter(array, function (el) { 34 | var res = el.categories.find({ name: name }); 35 | 36 | if (res.length > 0) { 37 | return el; 38 | } 39 | }); 40 | 41 | return _.sortBy(results, ["date"]).reverse(); 42 | }, 43 | showCategory: function (categories) { 44 | var cats = []; 45 | if (categories) { 46 | categories.data.forEach(function (element) { 47 | cats.push(element.name); 48 | }, this); 49 | } 50 | 51 | if (cats.length === 0) { 52 | result = "Uncategorized"; 53 | } else { 54 | result = cats.join(", "); 55 | } 56 | 57 | return result; 58 | }, 59 | page_url: function (path, options){ 60 | return this.url_for(path, options).replace(/index\.html$/, ''); 61 | } 62 | }; 63 | }; -------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | .fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | .fa-icon-rotate(@degrees, @rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; 16 | -webkit-transform: rotate(@degrees); 17 | -ms-transform: rotate(@degrees); 18 | transform: rotate(@degrees); 19 | } 20 | 21 | .fa-icon-flip(@horiz, @vert, @rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; 23 | -webkit-transform: scale(@horiz, @vert); 24 | -ms-transform: scale(@horiz, @vert); 25 | transform: scale(@horiz, @vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | .sr-only() { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | .sr-only-focusable() { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /source/_posts/Moving-on-to-Greener-Pastures.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Moving on to Greener Pastures 3 | categories: 4 | - Deep Thoughts 5 | permalink: moving-on-to-greener-pastures 6 | date: 2011-05-25 06:00:00 7 | --- 8 | 9 |After four years with my current company, Antech Systems, it is time for me to pack up and move on to greener pastures.
I would like to publically thank Antech for providing me with a foundation to build my career off of. I came to Antech as a college newbie, recently laid off from Symantec, with no .NET experience of any kind. Within weeks, I was able to grow into a position where I was not only functional, but able to provide meaningful feedback about the applications being built and the processes use to build them. Antech was the reason I found the developer community, and was one of the leading reasons why I started the Hampton Roads .NET Users Group. Without them, I have no idea where I would be right now.
I’m pleased to announce that on June 1st, 2011, I’ll be starting my new position with ComponentOne as a Technical Evangelist.

In this position, I’ll be working closely with Rich Dudley to help promote ComponentOne in the developer community. As a Technical Evangelist, it is my goal to help you all in your communities in anyway possible. Please feel free to use me as a resource.
If you’re going to be in the Kansas City area on June 25th, come out to the Kansas City Developer Conference to see me! I’ll be talking about MVVM! If you’re in the area, you should definitely come out.
-------------------------------------------------------------------------------- /themes/griffin/source/fonts/font-awesome/scss/_mixins.scss: -------------------------------------------------------------------------------- 1 | // Mixins 2 | // -------------------------- 3 | 4 | @mixin fa-icon() { 5 | display: inline-block; 6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration 7 | font-size: inherit; // can't have font-size inherit on line above, so need to override 8 | text-rendering: auto; // optimizelegibility throws things off #1094 9 | -webkit-font-smoothing: antialiased; 10 | -moz-osx-font-smoothing: grayscale; 11 | 12 | } 13 | 14 | @mixin fa-icon-rotate($degrees, $rotation) { 15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; 16 | -webkit-transform: rotate($degrees); 17 | -ms-transform: rotate($degrees); 18 | transform: rotate($degrees); 19 | } 20 | 21 | @mixin fa-icon-flip($horiz, $vert, $rotation) { 22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; 23 | -webkit-transform: scale($horiz, $vert); 24 | -ms-transform: scale($horiz, $vert); 25 | transform: scale($horiz, $vert); 26 | } 27 | 28 | 29 | // Only display content to screen readers. A la Bootstrap 4. 30 | // 31 | // See: http://a11yproject.com/posts/how-to-hide-content/ 32 | 33 | @mixin sr-only { 34 | position: absolute; 35 | width: 1px; 36 | height: 1px; 37 | padding: 0; 38 | margin: -1px; 39 | overflow: hidden; 40 | clip: rect(0,0,0,0); 41 | border: 0; 42 | } 43 | 44 | // Use in conjunction with .sr-only to only display content when it's focused. 45 | // 46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 47 | // 48 | // Credit: HTML5 Boilerplate 49 | 50 | @mixin sr-only-focusable { 51 | &:active, 52 | &:focus { 53 | position: static; 54 | width: auto; 55 | height: auto; 56 | margin: 0; 57 | overflow: visible; 58 | clip: auto; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/css/navigation-skins/hephaistos.css: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | 3 | - Revolution Slider 5.0 Navigatin Skin Style - 4 | 5 | HEPHAISTOS SKIN 6 | 7 | author: ThemePunch 8 | email: info@themepunch.com 9 | website: http://www.themepunch.com 10 | -----------------------------------------------------------------------------*/ 11 | /* ARROWS */ 12 | .hephaistos.tparrows { 13 | cursor:pointer; 14 | background:#000; 15 | background:rgba(0,0,0,0.5); 16 | width:40px; 17 | height:40px; 18 | position:absolute; 19 | display:block; 20 | z-index:100; 21 | border-radius:50%; 22 | } 23 | .hephaistos.tparrows:hover { 24 | background:#000; 25 | } 26 | .hephaistos.tparrows:before { 27 | font-family: "revicons"; 28 | font-size:18px; 29 | color:#fff; 30 | display:block; 31 | line-height: 40px; 32 | text-align: center; 33 | } 34 | .hephaistos.tparrows.tp-leftarrow:before { 35 | content: "\e82c"; 36 | margin-left:-2px; 37 | 38 | } 39 | .hephaistos.tparrows.tp-rightarrow:before { 40 | content: "\e82d"; 41 | margin-right:-2px; 42 | } 43 | 44 | 45 | 46 | /* BULLETS */ 47 | .hephaistos.tp-bullets { 48 | } 49 | .hephaistos.tp-bullets:before { 50 | content:" "; 51 | position:absolute; 52 | width:100%; 53 | height:100%; 54 | background:transparent; 55 | padding:10px; 56 | margin-left:-10px;margin-top:-10px; 57 | box-sizing:content-box; 58 | } 59 | .hephaistos .tp-bullet { 60 | width:12px; 61 | height:12px; 62 | position:absolute; 63 | background:#999; 64 | border:3px solid #f5f5f5; 65 | border-radius:50%; 66 | cursor: pointer; 67 | box-sizing:content-box; 68 | box-shadow: 0px 0px 2px 1px rgba(130,130,130, 0.3); 69 | 70 | } 71 | .hephaistos .tp-bullet:hover, 72 | .hephaistos .tp-bullet.selected { 73 | background:#fff; 74 | border-color:#000; 75 | } 76 | .hephaistos .tp-bullet-image { 77 | } 78 | .hephaistos .tp-bullet-title { 79 | } 80 | 81 | 82 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/css/navigation-skins/uranus.css: -------------------------------------------------------------------------------- 1 | /*----------------------------------------------------------------------------- 2 | 3 | - Revolution Slider 5.0 Navigatin Skin Style - 4 | 5 | URANUS SKIN 6 | 7 | author: ThemePunch 8 | email: info@themepunch.com 9 | website: http://www.themepunch.com 10 | -----------------------------------------------------------------------------*/ 11 | /* ARROWS */ 12 | .uranus.tparrows { 13 | width:50px; 14 | height:50px; 15 | background:transparent; 16 | } 17 | .uranus.tparrows:before { 18 | width:50px; 19 | height:50px; 20 | line-height:50px; 21 | font-size:40px; 22 | transition:all 0.3s; 23 | -webkit-transition:all 0.3s; 24 | } 25 | 26 | .uranus.tparrows:hover:before { 27 | opacity:0.75; 28 | } 29 | 30 | /* BULLETS */ 31 | .uranus .tp-bullet{ 32 | border-radius: 50%; 33 | box-shadow: 0 0 0 2px rgba(255, 255, 255, 0); 34 | -webkit-transition: box-shadow 0.3s ease; 35 | transition: box-shadow 0.3s ease; 36 | background:transparent; 37 | } 38 | .uranus .tp-bullet.selected, 39 | .uranus .tp-bullet:hover { 40 | box-shadow: 0 0 0 2px #FFF; 41 | border:none; 42 | border-radius: 50%; 43 | 44 | background:transparent; 45 | } 46 | 47 | 48 | 49 | .uranus .tp-bullet-inner { 50 | background-color: rgba(255, 255, 255, 0.7); 51 | -webkit-transition: background-color 0.3s ease, -webkit-transform 0.3s ease; 52 | transition: background-color 0.3s ease, transform 0.3s ease; 53 | top: 0; 54 | left: 0; 55 | width: 100%; 56 | height: 100%; 57 | outline: none; 58 | border-radius: 50%; 59 | background-color: #FFF; 60 | background-color: rgba(255, 255, 255, 0.3); 61 | text-indent: -999em; 62 | cursor: pointer; 63 | position: absolute; 64 | } 65 | 66 | .uranus .tp-bullet.selected .tp-bullet-inner, 67 | .uranus .tp-bullet:hover .tp-bullet-inner{ 68 | transform: scale(0.4); 69 | -webkit-transform: scale(0.4); 70 | background-color:#fff; 71 | } 72 | 73 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/jquery.parallax-1.1.3.js: -------------------------------------------------------------------------------- 1 | /* 2 | Plugin: jQuery Parallax 3 | Version 1.1.3 4 | Author: Ian Lunn 5 | Twitter: @IanLunn 6 | Author URL: http://www.ianlunn.co.uk/ 7 | Plugin URL: http://www.ianlunn.co.uk/plugins/jquery-parallax/ 8 | 9 | Dual licensed under the MIT and GPL licenses: 10 | http://www.opensource.org/licenses/mit-license.php 11 | http://www.gnu.org/licenses/gpl.html 12 | */ 13 | 14 | (function( $ ){ 15 | var $window = $(window); 16 | var windowHeight = $window.height(); 17 | 18 | $window.resize(function () { 19 | windowHeight = $window.height(); 20 | }); 21 | 22 | $.fn.parallax = function(xpos, speedFactor, outerHeight) { 23 | var $this = $(this); 24 | var getHeight; 25 | var firstTop; 26 | var paddingTop = 0; 27 | 28 | //get the starting position of each element to have parallax applied to it 29 | $this.each(function(){ 30 | firstTop = $this.offset().top; 31 | }); 32 | 33 | if (outerHeight) { 34 | getHeight = function(jqo) { 35 | return jqo.outerHeight(true); 36 | }; 37 | } else { 38 | getHeight = function(jqo) { 39 | return jqo.height(); 40 | }; 41 | } 42 | 43 | // setup defaults if arguments aren't specified 44 | if (arguments.length < 1 || xpos === null) xpos = "50%"; 45 | if (arguments.length < 2 || speedFactor === null) speedFactor = 0.1; 46 | if (arguments.length < 3 || outerHeight === null) outerHeight = true; 47 | 48 | // function to be called whenever the window is scrolled or resized 49 | function update(){ 50 | var pos = $window.scrollTop(); 51 | 52 | $this.each(function(){ 53 | var $element = $(this); 54 | var top = $element.offset().top; 55 | var height = getHeight($element); 56 | 57 | // Check if totally above or totally below viewport 58 | if (top + height < pos || top > pos + windowHeight) { 59 | return; 60 | } 61 | 62 | $this.css('backgroundPosition', xpos + " " + Math.round((firstTop - pos) * speedFactor) + "px"); 63 | }); 64 | } 65 | 66 | $window.bind('scroll', update).resize(update); 67 | update(); 68 | }; 69 | })(jQuery); -------------------------------------------------------------------------------- /source/_posts/Managing-Your-User-Group-Calendar-Roulette.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'Managing Your User Group: Calendar Roulette' 3 | permalink: calendar-roulette 4 | categories: 5 | - Community, User Groups, and Conferences 6 | date: 2015-03-06 22:39:16 7 | --- 8 | 9 | One trait of successful user groups is don't play calendar roulette. Meaning: they chose a time or day each month to hold the group meeting. 10 | 11 | > We meet every 2nd Tuesday. 12 | 13 | or 14 | 15 | > We are the last Thursday of the month. 16 | 17 | Why is this important? 18 | ***You want your members to be able to determine meeting dates based off a quick glance of a calendar.*** 19 | Consistency is key. If your meetings are in different venues or different days of the month, you're chancing that someone will forget and not be in attendance. 20 | 21 | **What's a good night for meetings?** 22 | With the Hampton Roads .NET Users Group, I chose the 2nd Tuesday of the month. Why? Because I felt Tuesdays were a better for my schedule. Only once in a 5 year period did I change the meeting. 23 | 24 | My recommendation is to choose a Tuesday, Wednesday, or Thursday. Mondays are bad for folks because it's the first day back to work after a short weekend. Fridays are bad because, dude, it's the weekend. PARTY TIME. 25 | 26 | Be careful with Wednesdays as well. Many church functions occur on Wednesday nights, and that might be limiting a percentage of your population. 27 | 28 | **When is it okay to move the meeting?** 29 | Let's imagine you have a speaker coming into town that's "a big deal". But they're only able to meeting on Wednesday night, and your meetings are Tuesdays. MOVE THE MEETING. Make sure the change is well communicated, and that it's temporary. You might lose attendance that month, but people are adaptable. Just don't make it a habit. 30 | 31 | **Conclusion** 32 | Keep scheduling simple. Hampton Roads .NET members knew where to go and when to be there every month of the year. If you build a level of consistency, you're going to have people showing up out of habit, and that's a recipe for a successful group. 33 | 34 | 35 | -------------------------------------------------------------------------------- /themes/griffin/source/plugins/rs-plugin-5/php/vimeo/class-vimeo.php: -------------------------------------------------------------------------------- 1 | 11 | */ 12 | 13 | class TP_vimeo { 14 | /** 15 | * Stream Array 16 | * 17 | * @since 1.0.0 18 | * @access private 19 | * @var array $stream Stream Data Array 20 | */ 21 | private $stream; 22 | 23 | /** 24 | * Get Vimeo User Videos 25 | * 26 | * @since 1.0.0 27 | */ 28 | public function get_vimeo_videos($type,$value){ 29 | //call the API and decode the response 30 | if($type=="user"){ 31 | $url = "https://vimeo.com/api/v2/".$value."/videos.json"; 32 | } 33 | else{ 34 | $url = "https://vimeo.com/api/v2/".$type."/".$value."/videos.json"; 35 | } 36 | 37 | $rsp = json_decode(file_get_contents($url)); 38 | 39 | return $rsp; 40 | } 41 | 42 | /** 43 | * Prepare output array $stream for Vimeo videos 44 | * 45 | * @since 1.0.0 46 | * @param string $videos Vimeo Output Data 47 | */ 48 | private function vimeo_output_array($videos,$count){ 49 | foreach ($videos as $video) { 50 | if($count-- == 0) break; 51 | 52 | $stream = array(); 53 | 54 | $image_url = @array( 55 | 'thumbnail_small' => array($video->thumbnail_small), 56 | 'thumbnail_medium' => array($video->thumbnail_medium), 57 | 'thumbnail_large' => array($video->thumbnail_large), 58 | ); 59 | 60 | $stream['custom-image-url'] = $image_url; //image for entry 61 | $stream['custom-type'] = 'vimeo'; //image, vimeo, youtube, soundcloud, html 62 | $stream['custom-vimeo'] = $video->id; 63 | $stream['post_url'] = $video->url; 64 | $stream['post_link'] = $video->url; 65 | $stream['title'] = $video->title; 66 | $stream['content'] = $video->description; 67 | $stream['date_modified'] = $video->upload_date; 68 | $stream['author_name'] = $video->user_name; 69 | 70 | $this->stream[] = $stream; 71 | } 72 | } 73 | } 74 | ?> -------------------------------------------------------------------------------- /source/newsletter/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Personal Friends of Griff 3 | permalink: newsletter 4 | updated: '2014-08-04 10:52:34' 5 | date: 2014-08-04 10:05:06 6 | --- 7 | 8 | Hey there Friend! From time to time I like to produce content that would be relevant to you. Sign up for my newsletter today, and get that content sent directly to your inbox! 9 | 10 | I promise to send no more than one email per week! 11 | 12 | 13 |Today I’ve been diving into an easy way to paginate record sets in my applications. Searching around the internet yielded several good walkthroughs on how to do this. My favorite way came from my friend, Kevin Hazzard, He discussed using the Skip() and Take() extension methods to form fit LINQ into building a SQL statement that’ll do all the heavy lifting for you.
Copying from Kevin’s example, I built the following code snippet:
int pageNumber = 1;
10 | int pageSize = 20;
11 |
12 | using (var entity = new Entities())
13 | {
14 | var recordSet = (from r in entity.SomeTable
15 | orderby r.SomeID
16 | select r);
17 | recordSet = recordSet.Skip((pageNumber - 1) * pageSize).Take(pageSize);
18 |
19 | return recordSet;
20 | }
21 |
22 | What’s nice about the following code is that since LINQ is lazy loading, the SQL built doesn’t actually execute until we need it too. The days of returning full datasets are done (yes, we’re still doing that on some projects).
23 | 24 |I went the next step to see if I could build an extension method of my own that did all of the above for me automatically. Here was the result I came up with:
25 | 26 |public static class ExtensionMethods
27 | {
28 | public static IQueryable Paginate(this IQueryable content, int pageNumber, int pageSize)
29 | {
30 | return content.Skip((pageNumber - 1)*pageSize).Take(pageSize);
31 | }
32 | }
33 |
34 | This extension method takes the query returned from LINQ (an IQueryable), and applies the additional constraints to it. Here is the first example using my new extension method:
35 | 36 |int pageNumber = 1;
37 | int pageSize = 20;
38 |
39 | using (var entity = new Entities())
40 | {
41 | var recordSet = (from r in entity.SomeTable
42 | orderby r.SomeID
43 | select r);
44 | recordSet = recordSet.Paginate(pageNumber, pageSize);
45 |
46 | return recordSet;
47 | }
48 |
49 | 50 | 51 |
Ta da! Hopefully that makes sense. I’m open to other suggestions and comments. I’m learning that if I take about my thought processes on certain problems, that I receive a ton of great feedback from those who listen.
-------------------------------------------------------------------------------- /source/_posts/Leaving-It-Better-Than-You-Found-It.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Leaving It Better Than You Found It 3 | categories: 4 | - Deep Thoughts 5 | permalink: leaving-it-better-than-you-found-it 6 | date: 2010-01-26 06:00:00 7 | --- 8 | 9 |When my wife and I bought our house back in April, one of my pet projects has been to renovate the room over our garage. I knew buying the house that it would be a lot of work, partly because the previous owner didn’t know what he was doing when finishing a room. I’ve spent the last week and half sanding, mudding, and fixing all the walls in this room. While sanding some dried mud tonight, I had a thought about how this experience was a lot like building software.
When building software, you’re not sometimes lucky enough to build a system from the ground up. Normally, you’ll inherit code from developers who have been hacking it for years. I related this to me working in my room. I inherited a poorly maintained room. The joints weren’t level with each other and the mud of the wall wasn’t smooth. The person doing the work took no pride in the work being done. The ceiling was also a “hacked” popcorn ceiling. I say hacked because, instead of using a hopper, the person slung dry wall mud onto the ceiling giving the illusion of popcorn. The illusion failed though because it looked horrible.
Fast forward to my work in the room last week. I had to go through and scrap all the excess mud off the wall. Each wall and joint had to be sanded, and mudded again in order to level everything. I’ve spend hours of time trying to reverse the effects caused by performing the job incorrectly.
What does this have to do with software development? Think about when you’re working on a bug in a piece of code, and it’s your first time looking at this code. How the previous developer left the code is how you’re going to inherit it. You might have to spend hours undoing the work of the previous person in order to get the code to a state it can be worked with. Hacks might have to be removed and properly implemented. Hours will be wasted that didn’t have to be.
When working on new code, do yourself and future developers a favor and leave the code in a state where it can be easily picked up and worked on. If you’re working on existing code, try to leave it in a better state than it was when you found it. In the long run, time will be saved, code will be more secure, and a developer will say fewer curse words.
-------------------------------------------------------------------------------- /source/_posts/Building-better-ConnectionStrings-with-ConnectionStringBuilder.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Building better ConnectionStrings with ConnectionStringBuilder 3 | categories: 4 | - "Development - C#" 5 | permalink: building-better-connectionstrings-with-connectionstringbuilder 6 | date: 2011-02-14 05:00:02 7 | --- 8 | 9 | Okay, I never admitted to being a .NET guru or anything, and that’s why I get so excited whenever I run across a gem in the framework that allows me to do something easier and with fewer issues. 10 | 11 | ConnectionStrings has always been one of those things I did the hard way. For example, I would have a line of code that was like so: 12 | 13 |
14 | string connectionString = "Data Source={0};Initial Catalog={1};User Id={2};Password={3};";
15 | string.Format(connectionString, serverName, databaseName, userName, password);
16 |
17 |
18 | This seemed like a logical way to build my connection strings. However, it wasn’t very flexible. That was until I discovered the suite of ConnectionStringBuilder classes.
19 |
20 | Let’s take the above OleDb connection string and use the OleDbConnectionStringBuilder to build it.
21 |
22 |
23 | System.Data.OleDb.OleDbConnectionStringBuilder oleDbConnectionStringBuilder =
24 | new OleDbConnectionStringBuilder();
25 | oleDbConnectionStringBuilder.DataSource = "myServer";
26 | oleDbConnectionStringBuilder.FileName = "myAccessFile.mdb";
27 | oleDbConnectionStringBuilder.ToString();
28 |
29 |
30 | Look at how much cleaner that is! Maybe you’re working with a SQL Server database:
31 |
32 |
33 | System.Data.SqlClient.SqlConnectionStringBuilder connectionStringBuilder =
34 | new SqlConnectionStringBuilder();
35 | connectionStringBuilder.DataSource = "myServer";
36 | connectionStringBuilder.InitialCatalog = "databaseName";
37 | connectionStringBuilder.UserID = "userName";
38 | connectionStringBuilder.Password = "password";
39 | connectionStringBuilder.ToString();
40 |
41 |
42 | Isn’t that awesome?! Now, finally, let’s imagine you’re doing all this with Entity Framework:
43 |
44 |
45 | System.Data.EntityClient.EntityConnectionStringBuilder entityConnectionStringBuilder =
46 | new EntityConnectionStringBuilder();
47 | entityConnectionStringBuilder.ProviderConnectionString = connectionStringBuilder.ToString();
48 | entityConnectionStringBuilder.Metadata = "(entity framework metadata here)";
49 | entityConnectionStringBuilder.ToString();
50 |
51 |
52 | There you go! Instead of hand writing your connection strings, take a look to see if there is a StringBuilder class that’ll do the work for you.
--------------------------------------------------------------------------------
/source/_posts/Banks-ATMS-and-Horrible-User-Experiences.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 'Banks, ATMS, and Horrible User Experiences'
3 | permalink: banks-atms-and-horrible-user-experiences
4 | categories:
5 | - Deep Thoughts
6 | id: 778
7 | updated: '2015-08-20 21:52:06'
8 | date: 2015-08-03 09:18:46
9 | ---
10 |
11 | *Note: I'm pretty much going to rant about a bank experience I had. Lessons aren't obvious, but if you're designing something that's pretty dang important... make sure you have failsafes built-in.*
12 |
13 | I went to my local ATM yesterday to deposit a couple checks. I know, I know... why didn't I just use my phone? Turns out banking phone apps have limits on how much you can deposit through the app and I was well past that limit. ATM was a logical second choice if I didn't want to have to make visit to a teller.
14 |
15 | Generally, this type of visit is quick.
16 |
17 | 1. Pull up to ATM
18 | 2. Insert ATM card
19 | 3. Type in PIN number
20 | 4. Press DEPOSIT, select account.
21 | 5. Insert checks (optical reader will automatically figure out amounts)
22 | 6. Receipt, and on my way!
23 |
24 | Problem started around step 5. I put my checks into the reader where it proceeded to give me a "PROCESSING YOUR DEPOSIT" screen. Normally, this process takes 10 seconds.
25 |
26 | Ten seconds pass...
27 | Then a minute...
28 | OKAY.. five minutes...
29 |
30 | I'm starting to get a bit freaked out because I put a couple good sized checks into a machine and it's not doing anything!
31 |
32 | Next step is to try to call someone. My bank provides a 1-800 number for customer service. Turns out, there is no logical path for "OMG THE ATM STOLE MY CHECKS AND IS FROZEN". And really, there is no path for "I request to speak to a human who can properly direct this call."
33 |
34 | 30 minutes into my freak. I turned two other folks away because ATM was borked. All of a sudden, the screen flashes and pretends like NOTHING HAPPENED AT ALL. "Would you like to deposit the checks?" I pressed the **go** button and the ATM spat my checks out and told me to have a nice day. Wat?
35 |
36 | I also had a decent "check hold" on my account, which is normal when checks are processed. The bank is still investigating what the issue might have been.
37 |
38 | I'm pretty fortunate that I decided to stick around - or else someone might have been able to swipe my checks. Why doesn't the ATM go into "maintenance mode" or something after five minutes of not responding? Thirty minutes is way too long to wait for any sort of respond.
39 |
40 | On another note, why is there physically no way to talk to a human on the phone? At a minimum, I wanted the bank to have an option to "Press 0 if you just need to talk to someone."
41 |
42 | Blah. What horrible user experiences have you had with technology?
--------------------------------------------------------------------------------
/themes/griffin/source/plugins/rs-plugin-5/php/twitter/RestApi.php:
--------------------------------------------------------------------------------
1 |
4 | * @license MIT License
5 | * @link https://github.com/vojant/Twitter-php
6 | */
7 |
8 | namespace TwitterPhp;
9 |
10 | use \TwitterPhp\Connection\Application;
11 | use \TwitterPhp\Connection\User;
12 |
13 | require_once 'connection/ConnectionAbstract.php';
14 | require_once 'connection/Application.php';
15 | require_once 'connection/User.php';
16 |
17 | /**
18 | * Class TwitterRestApiException
19 | */
20 | class RestApiException extends \Exception {};
21 |
22 | /**
23 | * Class RestApi
24 | * @package TwitterPhp
25 | */
26 | class RestApi
27 | {
28 | /**
29 | * @var string
30 | */
31 | private $_consumerKey;
32 |
33 | /**
34 | * @var string
35 | */
36 | private $_consumerSecret;
37 |
38 | /**
39 | * @var string
40 | */
41 | private $_accessToken;
42 |
43 | /**
44 | * @var string
45 | */
46 | private $_accessTokenSecret;
47 |
48 |
49 | /**
50 | * @param string $consumerKey
51 | * @param string $consumerSecret
52 | * @param null|string $accessToken
53 | * @param null|string $accessTokenSecret
54 | * @throws TwitterRestApiException
55 | */
56 | public function __construct($consumerKey,$consumerSecret,$accessToken = null,$accessTokenSecret = null)
57 | {
58 | if (!function_exists('curl_init')) {
59 | throw new TwitterRestApiException('You must have the cURL extension enabled to use this library');
60 | }
61 | $this->_consumerKey = $consumerKey;
62 | $this->_consumerSecret = $consumerSecret;
63 | $this->_accessToken = $accessToken;
64 | $this->_accessTokenSecret = $accessTokenSecret;
65 | }
66 |
67 | /**
68 | * Connect to Twitter API as application.
69 | * @link https://dev.twitter.com/docs/auth/application-only-auth
70 | *
71 | * @return \TwitterPhp\Connection\Application
72 | */
73 | public function connectAsApplication()
74 | {
75 | return new Application($this->_consumerKey,$this->_consumerSecret);
76 | }
77 |
78 | /**
79 | * Connect to Twitter API as user.
80 | * @link https://dev.twitter.com/docs/auth/oauth/single-user-with-examples
81 | *
82 | * @return \TwitterPhp\Connection\User
83 | * @throws TwitterRestApiException
84 | */
85 | public function connectAsUser()
86 | {
87 | if (!$this->_accessToken || !$this->_accessTokenSecret) {
88 | throw new TwitterRestApiException('Missing ACCESS_TOKEN OR ACCESS_TOKEN_SECRET');
89 | }
90 | return new User($this->_consumerKey,$this->_consumerSecret,$this->_accessToken,$this->_accessTokenSecret);
91 | }
92 |
93 | }
--------------------------------------------------------------------------------
/themes/griffin/source/web.config:
--------------------------------------------------------------------------------
1 |
2 |