{"id":3472,"date":"2016-12-18T14:00:56","date_gmt":"2016-12-18T22:00:56","guid":{"rendered":"[vc_row type=\"in_container\" scene_position=\"center\" text_color=\"dark\" text_align=\"left\" overlay_strength=\"0.3\"][vc_column column_padding=\"no-extra-padding\" column_padding_position=\"all\" background_color_opacity=\"1\" background_hover_color_opacity=\"1\" width"},"modified":"2017-01-02T13:51:10","modified_gmt":"2017-01-02T21:51:10","slug":"confoo-day-3","status":"publish","type":"post","link":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/","title":{"rendered":"ConFoo: Day 3"},"content":{"rendered":"[vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;][vc_column_text]My experiences at confoo day 3[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;]<div class=\"lvca-heading lvca-style3 lvca-aligncenter \" ><h3 class=\"lvca-title\">PHP OOP: An Object Oriented Programming Primer - Eli White<\/h3><\/div>[vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/4&#8243;][image_with_animation image_url=&#8221;3475&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;3\/4&#8243;][vc_column_text]&#8221;Whether you are a brand new developer or an experienced coder, the PHP object model can hold some mysteries that are worth exploring. This session will briefly cover the basics of working with Objects in PHP, then dive quickly through inheritance, abstracts, interfaces, traits, late static binding, magic methods, namespaces, and maybe even reflection. It\u2019s a lot to cover, so make sure to show up with your eyes open and be ready to move quickly!&#8221;<\/p>\n<p><a href=\"https:\/\/confoo.ca\/en\/yvr2016\/session\/php-oop-an-object-oriented-programming-primer\">ConFoo Page<\/a>[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;2\/3&#8243;][vc_column_text]\n<h3><span class=\"ez-toc-section\" id=\"My_Notes\"><\/span>My Notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Basics on classes, objects, constructors. Public\/private. :: error is Hebrew to tie back to the 2 guys that helped with php3.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Inheritance basics.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Abstract class<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Children need to implement all abstract methods for the parent (methods are empty. Abstract public function save()<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">All abstract methods must be implemented in child class must be abstract as well<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Method signatures must match exactly<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Interface<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Only methods, no implementation<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Similar to abstract methods but shareable between classes<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">No code, no properties just an interoperability framework<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Interface Extension<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">It is possible for an interface to extend another interface<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Interface can provide constants<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Traits<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">When you want more than a template<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Enable Horizontal code reuse<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Create code and inject it into different classes<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Contains actual implementation<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Inject into a class with the use keyword<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">A class can include multiple trait<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Basics on namespacing<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Late static binding (php 5.3)<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Use self in a parent class you always get the value of the parent.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">By using static:: keyword, it will call the child\u2019s copy<\/span><\/li>\n<\/ul>\n[\/vc_column_text][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/3&#8243;][image_with_animation image_url=&#8221;3465&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;]<div class=\"lvca-heading lvca-style3 lvca-aligncenter \" ><h3 class=\"lvca-title\">RegEx Is Your Friend - Liam Wiltshire<\/h3><\/div>[vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/4&#8243;][image_with_animation image_url=&#8221;3477&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;3\/4&#8243;][vc_column_text]&#8221;RegEx is scary. At least, if you ask Google, that&#8217;s what you might think (257,000). And slow (441,000). In fact, regular expressions are neither of these, and indeed are a powerful tool in your utility belt.<\/p>\n<p>In &#8220;RegEx Is Your Friend&#8221;, Liam aims to provide some real-world and usable examples of how it can be used in a way that&#8217;s fast, explaining how the different parts of regular expressions work and execute to make it understandable for all.&#8221;<\/p>\n<p><a href=\"https:\/\/confoo.ca\/en\/yvr2016\/session\/regex-is-your-friend\">ConFoo Page<\/a>[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][vc_column_text]\n<h3><span class=\"ez-toc-section\" id=\"My_Notes-2\"><\/span>My Notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">When shouldn\u2019t we use it<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Simple string replacements<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Data validation libraries<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Flags can change the behaviour of the regex, case insensitive, global.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Performance<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Avoid using match all<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Be as specific as possible<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">First try to use + instead of *<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Data capture<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Use brackets to group our expressions<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">We can use ?: at the start of the group to make it non-capturing<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Atomic groups<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Cause of slowdowns can be multiple options in a match<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Slows use to tell the engine to skip the rest of the group as soon as a match is found<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">The sequence of the options is important<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Longest first<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Won\u2019t return capture<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Conditionals<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Allowing you to define different patterns depending on a certain condition<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Combined with lookaheads, it can make life easier<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">(&gt;condition)Then|else<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Backreferences<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Allow you to create a capturing group, and then use it later in the pattern<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Named backreferences<\/span>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">?P&lt;name&gt; you can give each group a name<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">The x Flag<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">This makes the engine ignore whitespace and provide the ability to add comments with #<\/span><\/li>\n<\/ul>\n[\/vc_column_text][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][image_with_animation image_url=&#8221;3466&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;]<div class=\"lvca-heading lvca-style3 lvca-aligncenter \" ><h3 class=\"lvca-title\">HTTP Caching with Varnish - David Buchmann<\/h3><\/div>[vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/4&#8243;][image_with_animation image_url=&#8221;3474&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;3\/4&#8243;][vc_column_text]&#8221;With the Varnish caching proxy, you can greatly increase the speed of websites and handle a lot more load. The basics are quite simple once you understand how the cache handling in HTTP works, so we will look into that first. Then I will go into advanced topics like cache tagging and cache invalidation or using Edge Side Includes.&#8221;<\/p>\n<p><a href=\"https:\/\/confoo.ca\/en\/yvr2016\/session\/http-caching-with-varnish-1\">ConFoo Page<\/a>[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][vc_column_text]\n<h3><span class=\"ez-toc-section\" id=\"My_Notes-3\"><\/span>My Notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A Reverse proxy. Sits infront of webserver.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">What can go wrong<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Nothing gets cached<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Too much<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Editors see no change (cache invalidation)<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Caches get mixed up (personalized content)<\/span><\/li>\n<\/ul>\n<p><strong>Httpcodes<\/strong><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">1xx hold on<\/span><\/li>\n<li><span style=\"font-weight: 400;\">2xx Here you go<\/span><\/li>\n<li><span style=\"font-weight: 400;\">3xx Go away<\/span><\/li>\n<li><span style=\"font-weight: 400;\">4xx You fucked up<\/span><\/li>\n<li><span style=\"font-weight: 400;\">5xx I fucked up<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Do not cache<\/span><\/p>\n<p><span style=\"font-weight: 400;\">s-maxage=0<\/span><\/p>\n<p><strong>Default behavior<\/strong><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">Only attempt to cache get and head requests<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Never change requests with cookies authorization<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Never cache response with set -cookie.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Only cache safe responses, 200 203,300,301,302,307,404,410<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Https support costs money \ud83d\ude41<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Invalidation flavors<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Purge: URL and all variant<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Refresh: remove cache for this exact request and warm cache<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Ban: batch invalidation with reg exp<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Tagging: batch invalidation based on tags<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Edge side includes<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Like server side includes, but on varnish<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Content embeds urls to parts of the content<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Varnish fetches and caches elements separately<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Individual caching and rules per fragment<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">EG only some elements vary on cookie<\/span><\/li>\n<\/ul>\n[\/vc_column_text][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][image_with_animation image_url=&#8221;3467&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;]<div class=\"lvca-heading lvca-style3 lvca-aligncenter \" ><h3 class=\"lvca-title\">Operational Security for Devs, Ops and Other Humans - Jan Schaumann<\/h3><\/div>[vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/4&#8243;][image_with_animation image_url=&#8221;3476&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;3\/4&#8243;][vc_column_text]&#8221;This talk will teach you the principles and practices of how to protect yourself from both active and passive attackers during day-to-day operations. We will focus on human aspects and the psychology of how people work to help you protect your information from any number of adversaries, in part by understanding, developing and applying suitable defenses across all layers of &#8216;cyber.&#8217; &#8221;<\/p>\n<p><a href=\"https:\/\/confoo.ca\/en\/yvr2016\/session\/operational-security-for-devs-ops-and-other-humans\">ConFoo Page<\/a>[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][vc_column_text]\n<h3><span class=\"ez-toc-section\" id=\"My_Notes-4\"><\/span>My Notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Opsec &#8211; being aware of what information you make available, and how it may be used against you.<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400;\">Should clear out shell history, it can store passwords in text.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Echo \/dev\/null &gt; -\/.bash_history<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Can passcode simcard on iphone<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Privacy screens to prevent others from seeing screen<\/span><\/li>\n<li><span style=\"font-weight: 400;\">USB condom, protect your data<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Avoid leaking secrets into code repositories<\/span><\/li>\n<\/ul>\n<ul>\n<li><span style=\"font-weight: 400;\">Little Snitch license<\/span><\/li>\n<li><span style=\"font-weight: 400;\">RFID Wallet<\/span><\/li>\n<li><span style=\"font-weight: 400;\">FIDO U2F security \u00a0Key<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Webcam cover<\/span><\/li>\n<\/ul>\n[\/vc_column_text][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][image_with_animation image_url=&#8221;3468&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;][divider line_type=&#8221;Full Width Line&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;]<div class=\"lvca-heading lvca-style3 lvca-aligncenter \" ><h3 class=\"lvca-title\">Electronics 101 for Software Developers - Dror Helper<\/h3><\/div>[vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/4&#8243;][image_with_animation image_url=&#8221;3462&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;3\/4&#8243;][vc_column_text]&#8221;These days, every developer has the power to control the real world using Arduino.<br \/>\nSuddenly confronted with resistors, digital inputs, analog interfaces, and a weird bread board full of holes \u2013 a developer is reminded that the world of hardware can be confusing and sometimes downright frustrating.<br \/>\nThe good news is that an electrical engineering degree is not required in order to build electronic circuits.&#8221;<\/p>\n<p><a href=\"https:\/\/confoo.ca\/en\/yvr2016\/session\/electronics-101-for-software-developers\">ConFoo Page<\/a>[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][vc_column_text]\n<h3><span class=\"ez-toc-section\" id=\"My_Notes-5\"><\/span>My Notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><span style=\"font-weight: 400;\">Voltage &#8211; electric potential energy per unit charge.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Resistance &#8211; the difficulty to pass through an electric conductor, measured in ohm<\/span><\/li>\n<li><span style=\"font-weight: 400;\">I = current<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Power I x V = P<\/span><\/li>\n<li><span style=\"font-weight: 400;\">LED long leg +, short leg &#8211;<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Solderless breadboard<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Keeps components in place<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Connects components<\/span><\/li>\n<\/ul>\n[\/vc_column_text][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][image_with_animation image_url=&#8221;3469&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;]<div class=\"lvca-heading lvca-style3 lvca-aligncenter \" ><h3 class=\"lvca-title\">Deployments So Easy, Devs Will Ask For It by Name - Brittany Martin<\/h3><\/div>[vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/4&#8243;][image_with_animation image_url=&#8221;3473&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;3\/4&#8243;][vc_column_text]&#8221;Our city&#8217;s arts community is dependent on a 24\/7 high volume Rails application. We revamped our deployment process to use the new AWS CodeDeploy. CodeDeploy is a free AWS service that efficiently deploys your released code to a \u201cfleet\u201d of EC2 instances while taking care to leave as much of the fleet online as possible. In this talk, you will learn how to skip writing custom deployment tools and celebrate rapid development cycles.&#8221;<\/p>\n<p><a href=\"https:\/\/confoo.ca\/en\/yvr2016\/session\/deployments-so-easy-devs-will-ask-for-it-by-name\">ConFoo Page<\/a>[\/vc_column_text][\/vc_column_inner][\/vc_row_inner][vc_row_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][vc_column_text]\n<h3><span class=\"ez-toc-section\" id=\"My_Notes-6\"><\/span>My Notes<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><span style=\"font-weight: 400;\">AWS elastic beanstalk &#8211; less control<\/span><\/li>\n<li><span style=\"font-weight: 400;\">AWS cloudFormation -&gt; more control<\/span><\/li>\n<li><span style=\"font-weight: 400;\">AWS codedeploy -&gt; middle<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Scale from 1 to multiple servers<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Setup<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Gather install steps<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Design an appsecp<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Setup AWS CD Group<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Install Slack Notification<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Remove server from balancer adds code and adds back, 1 at a time, \u00bd at a time or all at a time<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Cloudwatch to watch live<\/span><\/p>\n<p><span style=\"font-weight: 400;\">SNS to slack<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Automatic deployment failure rollback<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Price: free &amp; open source<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Blue\/Green deployments (beta) &#8211; Spins up new servers<\/span><\/p>\n<p><span style=\"font-weight: 400;\">AWS codebuild similar to travis ci<\/span>[\/vc_column_text][\/vc_column_inner][vc_column_inner column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; width=&#8221;1\/2&#8243;][image_with_animation image_url=&#8221;3470&#8243; alignment=&#8221;&#8221; animation=&#8221;Fade In&#8221;][\/vc_column_inner][\/vc_row_inner][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;][vc_column_text]Final Thoughts<\/p>\n<p><a href=\"https:\/\/logmyhours.com\/blog\/confoo-developer-conference-day-1\/\">Day 1<\/a><\/p>\n<p><a href=\"https:\/\/logmyhours.com\/blog\/confoo-day-2\/\">Day 2<\/a>[\/vc_column_text][\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"<p>[vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;][vc_column_text]My experiences at confoo day 3[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243;&#8230;<\/p>\n","protected":false},"author":1,"featured_media":3439,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ConFoo: Day 3 - LogMyHours.com Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ConFoo: Day 3 - LogMyHours.com Blog\" \/>\n<meta property=\"og:description\" content=\"[vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;][vc_column_text]My experiences at confoo day 3[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243;...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/\" \/>\n<meta property=\"og:site_name\" content=\"LogMyHours.com Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/logmyhours\" \/>\n<meta property=\"article:author\" content=\"logmyhours\" \/>\n<meta property=\"article:published_time\" content=\"2016-12-18T22:00:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-01-02T21:51:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"893\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Chris Hopewell\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@logmyhours\" \/>\n<meta name=\"twitter:site\" content=\"@logmyhours\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Chris Hopewell\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/\"},\"author\":{\"name\":\"Chris Hopewell\",\"@id\":\"https:\/\/logmyhours.com\/blog\/#\/schema\/person\/87e1b119689e827324f73f8d47f2fedc\"},\"headline\":\"ConFoo: Day 3\",\"datePublished\":\"2016-12-18T22:00:56+00:00\",\"dateModified\":\"2017-01-02T21:51:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/\"},\"wordCount\":2229,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg\",\"articleSection\":[\"General\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/\",\"url\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/\",\"name\":\"ConFoo: Day 3 - LogMyHours.com Blog\",\"isPartOf\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg\",\"datePublished\":\"2016-12-18T22:00:56+00:00\",\"dateModified\":\"2017-01-02T21:51:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#primaryimage\",\"url\":\"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg\",\"contentUrl\":\"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg\",\"width\":1800,\"height\":893},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/logmyhours.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ConFoo: Day 3\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/logmyhours.com\/blog\/#website\",\"url\":\"https:\/\/logmyhours.com\/blog\/\",\"name\":\"LogMyHours.com Blog\",\"description\":\"From Side Project to a Profitable Company\",\"publisher\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/logmyhours.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/logmyhours.com\/blog\/#organization\",\"name\":\"LogMyHours.com Blog\",\"url\":\"https:\/\/logmyhours.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/logmyhours.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/09\/logo.png\",\"contentUrl\":\"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/09\/logo.png\",\"width\":222,\"height\":35,\"caption\":\"LogMyHours.com Blog\"},\"image\":{\"@id\":\"https:\/\/logmyhours.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/logmyhours\",\"https:\/\/twitter.com\/logmyhours\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/logmyhours.com\/blog\/#\/schema\/person\/87e1b119689e827324f73f8d47f2fedc\",\"name\":\"Chris Hopewell\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/logmyhours.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/18e61fae7be171e10a85abb8a6806c7b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/18e61fae7be171e10a85abb8a6806c7b?s=96&d=mm&r=g\",\"caption\":\"Chris Hopewell\"},\"sameAs\":[\"https:\/\/logmyhours.com\",\"logmyhours\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ConFoo: Day 3 - LogMyHours.com Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/","og_locale":"en_US","og_type":"article","og_title":"ConFoo: Day 3 - LogMyHours.com Blog","og_description":"[vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; width=&#8221;1\/1&#8243;][vc_column_text]My experiences at confoo day 3[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; overlay_strength=&#8221;0.3&#8243;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_position=&#8221;all&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243;...","og_url":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/","og_site_name":"LogMyHours.com Blog","article_publisher":"https:\/\/facebook.com\/logmyhours","article_author":"logmyhours","article_published_time":"2016-12-18T22:00:56+00:00","article_modified_time":"2017-01-02T21:51:10+00:00","og_image":[{"width":1800,"height":893,"url":"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg","type":"image\/jpeg"}],"author":"Chris Hopewell","twitter_card":"summary_large_image","twitter_creator":"@logmyhours","twitter_site":"@logmyhours","twitter_misc":{"Written by":"Chris Hopewell","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#article","isPartOf":{"@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/"},"author":{"name":"Chris Hopewell","@id":"https:\/\/logmyhours.com\/blog\/#\/schema\/person\/87e1b119689e827324f73f8d47f2fedc"},"headline":"ConFoo: Day 3","datePublished":"2016-12-18T22:00:56+00:00","dateModified":"2017-01-02T21:51:10+00:00","mainEntityOfPage":{"@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/"},"wordCount":2229,"commentCount":0,"publisher":{"@id":"https:\/\/logmyhours.com\/blog\/#organization"},"image":{"@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#primaryimage"},"thumbnailUrl":"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg","articleSection":["General"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/","url":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/","name":"ConFoo: Day 3 - LogMyHours.com Blog","isPartOf":{"@id":"https:\/\/logmyhours.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#primaryimage"},"image":{"@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#primaryimage"},"thumbnailUrl":"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg","datePublished":"2016-12-18T22:00:56+00:00","dateModified":"2017-01-02T21:51:10+00:00","breadcrumb":{"@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/logmyhours.com\/blog\/confoo-day-3\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#primaryimage","url":"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg","contentUrl":"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/12\/IMG_1976-1.jpg","width":1800,"height":893},{"@type":"BreadcrumbList","@id":"https:\/\/logmyhours.com\/blog\/confoo-day-3\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/logmyhours.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ConFoo: Day 3"}]},{"@type":"WebSite","@id":"https:\/\/logmyhours.com\/blog\/#website","url":"https:\/\/logmyhours.com\/blog\/","name":"LogMyHours.com Blog","description":"From Side Project to a Profitable Company","publisher":{"@id":"https:\/\/logmyhours.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/logmyhours.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/logmyhours.com\/blog\/#organization","name":"LogMyHours.com Blog","url":"https:\/\/logmyhours.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/logmyhours.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/09\/logo.png","contentUrl":"https:\/\/logmyhours.com\/blog\/wp-content\/uploads\/2016\/09\/logo.png","width":222,"height":35,"caption":"LogMyHours.com Blog"},"image":{"@id":"https:\/\/logmyhours.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/logmyhours","https:\/\/twitter.com\/logmyhours"]},{"@type":"Person","@id":"https:\/\/logmyhours.com\/blog\/#\/schema\/person\/87e1b119689e827324f73f8d47f2fedc","name":"Chris Hopewell","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/logmyhours.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/18e61fae7be171e10a85abb8a6806c7b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/18e61fae7be171e10a85abb8a6806c7b?s=96&d=mm&r=g","caption":"Chris Hopewell"},"sameAs":["https:\/\/logmyhours.com","logmyhours"]}]}},"_links":{"self":[{"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/posts\/3472"}],"collection":[{"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/comments?post=3472"}],"version-history":[{"count":8,"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/posts\/3472\/revisions"}],"predecessor-version":[{"id":3509,"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/posts\/3472\/revisions\/3509"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/media\/3439"}],"wp:attachment":[{"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/media?parent=3472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/categories?post=3472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/logmyhours.com\/blog\/wp-json\/wp\/v2\/tags?post=3472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}