<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description></description><title>The Nerdary</title><generator>Tumblr (3.0; @nerdary)</generator><link>https://www.thenerdary.net/</link><item><title>CSS for Teams</title><description>&lt;p&gt;Things I love:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Clean, organized, performant code&lt;/li&gt;
&lt;li&gt;Collaboration across teams&lt;/li&gt;
&lt;li&gt;Creating usable interfaces&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;With those passions in mind, I’ve been enjoying crafting our CSS design system as the UI Architect for URBN the last two years (babies and broken bones have made this blog post is past due). &lt;/p&gt;&lt;p&gt;For us, CSS is not just an afterthought for adding pretty colors; it’s the perfect collaboration tool for improving your team’s approach to web design. We took three separate sites: &lt;a href="https://www.urbanoutfitters.com/"&gt;urbanoutfitters.com&lt;/a&gt;, &lt;a href="https://www.anthropologie.com/"&gt;anthropologie.com&lt;/a&gt;, and &lt;a href="https://www.freepeople.com/"&gt;freepeople.com&lt;/a&gt; along with three separate teams - each brand had their own engineering team - and have worked to combine them onto one platform and into one web engineering team.  Here are some highlights on how we did it.&lt;/p&gt;&lt;h2&gt;1. Audit and Combine Our Current Styles&lt;/h2&gt;&lt;p&gt;To enhance the user experience of our websites, we focused on reusable patterns to allow our customer to focus on their main goal and keep the interface from getting in their way. &lt;/p&gt;&lt;p&gt;We worked with all three brands’ design and product teams to &lt;a href="https://alistapart.com/article/from-pages-to-patterns-an-exercise-for-everyone"&gt;categorize&lt;/a&gt; and &lt;a href="http://bradfrost.com/blog/post/interface-inventory/"&gt;inventoried&lt;/a&gt; everything! We examined our UI modules, headings, paragraph styles, colors, margins, icons &amp;ndash; the works. We analyzed and paired down these styles, removed unneeded variations, and named the new modules appropriately. We then mapped each instance to a new class from our slimmed down system of conventions. &lt;/p&gt;&lt;h2&gt;2. Standardize the Grid&lt;/h2&gt;&lt;p&gt;From the design side, we had one site using a 4-column grid and another site using a 24-column grid. From the engineering side, there was a strong desire to use Foundation because of the familiarity with the grid classes used in their framework. &lt;/p&gt;&lt;p&gt;We did a grid audit and after reviewing the findings, the design and engineering teams agreed on the suggested approach of migrating everyone to a 12-column grid and using &lt;a href="http://oddbird.net/susy/"&gt;Susy&lt;/a&gt; to create a custom CSS grid to meet our needs specifically, but utilize similar classnames to Foundation, so that the change to the new system would be a much smoother transition. &lt;/p&gt;&lt;h2&gt;3. Meet Accessibility Standards&lt;/h2&gt;&lt;p&gt;We ran all of our new design patterns across accessibility checks. We made sure we met color contrast standards, had keyboard friendliness, and presented legible text sizes. We documented and trained the team on how to adhere to &lt;a href="https://www.w3.org/TR/WCAG20/"&gt;WCAG AA &lt;/a&gt;guidelines.&lt;/p&gt;&lt;h2&gt;4. Convert Everything We Can to SVGs&lt;/h2&gt;&lt;p&gt;We said goodbye to our old large PNG image sprites and hello to SVGs for all of our non-photographic imagery. We control hover and animation states with CSS and benefited across retina devices for scalability and in performance gains across slower connections.&lt;/p&gt;&lt;h2&gt;5. Namespaced BEM for CSS at Scale&lt;/h2&gt;&lt;p&gt;With so many engineers working together in the codebase, we needed a standardized set of naming conventions for our classes. The &lt;a href="http://getbem.com/"&gt;BEM&lt;/a&gt; methodology addressed so many concerns we had about variation, but wasn’t quite our cure-all solution. Working across a large ecommerce environment, there were quite a lot of fears about overriding the styles for one component and having the affects of that change go beyond the expectations. Enter our &lt;a href="https://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/"&gt;namespaced CSS&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;Namespaces add another level of transparency and allows our engineers and designers to easily recognize the breadth of the module in question. We’ve added more namespaces as needed (for example, &lt;code&gt;g-&lt;/code&gt; for grid and &lt;code&gt;i-&lt;/code&gt; for icon) and this system has allowed us to never have to write an &lt;code&gt;!important&lt;/code&gt;.  &lt;/p&gt;&lt;h2&gt;6. Spec in Class Names, Variables, and Mixins&lt;/h2&gt;&lt;p&gt;Once we defined our class naming system, we trained not only the engineering team on it, but also our design and product team. Sharing the same language is so important in web design and allows us all to be stronger teammates when creating a successful product. Our designers deliver specs using our BEM classnames, variables, and Sass mixins to ensure a more efficient handoff and partnership. &lt;/p&gt;&lt;h2&gt;7. Always Be Style Guiding!&lt;/h2&gt;&lt;p&gt;&lt;b&gt;Design Pattern Library&lt;/b&gt;&lt;/p&gt;&lt;p&gt;We use &lt;a href="https://github.com/kss-node/kss-node"&gt;KSS&lt;/a&gt; to create a living document of our styles. The guides are available locally to devs as well as on our internal docs for designers, product owners, scrum masters, and everyone else to see and reference. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Code Standards Style Guide&lt;/b&gt;&lt;/p&gt;&lt;p&gt;We also documented our best practices for CSS coding standards. It covers everything from leading zeros to declaration property order to selector depth restrictions. &lt;/p&gt;&lt;p&gt;Our CSS should be as elegant as the aesthetic it&amp;rsquo;s creating. &lt;/p&gt;&lt;h2&gt;What’s Next? Embrace Change and Improve.&lt;/h2&gt;&lt;p&gt;I look back to the 2013 post on &lt;a href="http://cognition.happycog.com/article/making-front-end-development-a-team-sport"&gt;&lt;i&gt;Making Web Development a Team Sport&lt;/i&gt;&lt;/a&gt; and though much of the theory still holds true, my approach has evolved so much since then. While we always do our best to future proof our code and plan ahead to try to solve for all kinds of scenarios, the truth is our website best practices can always advance. &lt;/p&gt;&lt;p&gt;Now that we have three sites up and running on our shared platform at URBN, we&amp;rsquo;re able to have a lot of perspective. What we do with perspective is what defines us as web makers. We could accept defeat if we see things that could’ve been done better and keep going with that system, or we can embrace the challenge of tech debt and constantly improve our workflows. &lt;/p&gt;&lt;p&gt;Some things in my pipeline: critical path CSS; updates to our brand override system to cut back on code redundancy; mixin overhauls to allow design specs to be more straightforward. There are performance, team collaboration, and process improvements to be had because of CSS. Just as with other parts of our process and technology stack, CSS is a highly impactful web tool, that when crafted with finesse and nurtured through change, can yield such great results. &lt;/p&gt;</description><link>https://www.thenerdary.net/post/167493425137</link><guid>https://www.thenerdary.net/post/167493425137</guid><pubDate>Tue, 14 Nov 2017 11:53:30 -0800</pubDate><category>css</category><category>web design</category><category>bem</category><category>user experience</category><category>trust the process</category><dc:creator>jennlukas</dc:creator></item><item><title>How to tell if your web font is loading?</title><description>&lt;h2&gt;How to ensure your fallback font is not replacing your primary typeface&lt;/h2&gt;

&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/SlsjI0c2Hv0" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Some engineers pride themselves on having a “designer’s eye.” They can spot if vertical alignment is off or if line-height isn’t set appropriately for the text size. Other times, we could use some help knowing for sure if a UI element is appearing as the designer call far.&lt;/p&gt;

&lt;p&gt;One challenge is knowing if the web font you are calling with @font-face is indeed loading or not. Think you’ve got Helvetica displaying only to discover that the Arial fallback is showing up? Here’s how I ensure that the typeface I want is what is actually appearing.&lt;/p&gt;

&lt;p&gt;Let’s say I want to use &lt;a href="https://fonts.google.com/?selection.family=Open+Sans"&gt;Open Sans&lt;/a&gt; from Google Fonts. The font stack Google suggests is:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;font-family: 'Open Sans', sans-serif;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I put that in my styles, I hit save and looks pretty good. But if I take a closer look, it’s loading the sans-serif fallback and not Open Sans. How can I be sure of this when the generic family might be too close to the primary typeface for someone to easily identify? I plug in a more distinct generic family instead, preferably my favorite, fantasy.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;font-family: 'Open Sans', fantasy;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now on save, there’s definitely no mistaking that wonderful, magic that is definitely not Open Sans. It’s a quick way during development to identify our font-face is working as desired. You could also use a tool such as &lt;a href="https://chrome.google.com/webstore/detail/whatfont/jabopobgcpjmedljpbcaablpmlmfcogm?hl=en"&gt;whatfont&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Be sure to set your font stack back to the desired fallback, unless some surprise Comic Sans or Papyrus is up your alley.&lt;/p&gt;</description><link>https://www.thenerdary.net/post/167493290177</link><guid>https://www.thenerdary.net/post/167493290177</guid><pubDate>Tue, 14 Nov 2017 11:48:23 -0800</pubDate><category>webfont</category><category>web typography</category><category>typeface</category><category>css</category><category>font-face</category><category>Typography</category><category>fonts</category><category>web design</category><category>web development</category><category>web fonts</category><category>debugging</category><category>google fonts</category><dc:creator>jennlukas</dc:creator></item><item><title>BreakTime: Computer Break App Review #1</title><description>&lt;p&gt;We&amp;rsquo;ve all heard it: &amp;ldquo;sitting is killing us&amp;rdquo;, &amp;ldquo;screens will keep you awake at night&amp;rdquo;, &amp;ldquo;desks are bad for your health&amp;rdquo;, &amp;ldquo;computers will give your robot eyes&amp;rdquo;, etc, etc. Yet for many of us, our jobs are at a computer and at a desk and until we can code from the beach while doing an inverted pose or with a laptop hammock stand, what are we to do?&lt;/p&gt;

&lt;p&gt;Over the next couple of days/weeks, I am going to try a different break strategy every day. Feel free to follow along and leave your thought on the apps as well. First up:&lt;/p&gt;

&lt;h2&gt;BreakTime&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://breaktimeapp.com/"&gt;http://breaktimeapp.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Cost: $4.99/Free trial available&lt;/li&gt;
&lt;li&gt;Also available for iOS&lt;/li&gt;
&lt;li&gt;Suggested by: &lt;a href="https://twitter.com/jeremyfuksa/status/496673749782241280"&gt;Jeremy Fuksa&lt;/a&gt;,&lt;a href="https://twitter.com/ronicadesign/status/496677574408290305"&gt; Veronica Domeier&lt;/a&gt;, &lt;a href="https://twitter.com/geoffod/status/496681777604620290"&gt;Geoff O'Donnell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;The Pitch&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;BreakTime is a simple utility that&amp;rsquo;s designed to help you remember to take breaks away from your computer. It never forgets a break, running in your dock and / or menu bar (or even in the background).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;The Break&lt;/h3&gt;

&lt;p&gt;Well, the download screen leaves a lot to be desired on this one, but it was recommended by three people so I went for it.&lt;/p&gt;

&lt;p&gt;Simple to install and get up and running. Option to display icon in dock which is nice. Presented with basic and advanced options. I went with the default set.  You can go into super serious strict break mode by option for the &lt;em&gt;Enforce break&lt;/em&gt; option which won&amp;rsquo;t let you click the &amp;ldquo;done&amp;rdquo; button early.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/b1f4fd3f78ff824c4ed6f75432d35ae0/tumblr_inline_n9ubnwuxlh1qz8c75.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;The menu icon will update based on how much time is left till your next break and also provide a larger visual representation of that on click.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/6c7f26f92320bb17cf2af7953a0d39ae/tumblr_inline_n9ubpsQs3X1qz8c75.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/14edf19b8f33d0230dd72e6ae6b00579/tumblr_inline_n9ubq48a341qz8c75.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Twenty minutes later we were ready for our first break!&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/a304c00032ed884946d49c59d1d2af70/tumblr_inline_n9uk6z4Mij1qz8c75.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;I also was interested to see what the sounds were. They were quite minimal which was perfect. A quaint, non-jarring alert to let you know it was starting, and then the BreakTime options are presented on your main screen. You can wait the default two minutes, prompt the break in a minute or more, or select &amp;lsquo;done&amp;rsquo; to end the break.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/c849bf7d2962ae39d1ea610420d5875c/tumblr_inline_n9ubu6ZyTY1qz8c75.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Any secondary displays are dimmed.&lt;/p&gt;

&lt;p&gt;Any music playing will still play but clicks on other apps are prevented until selecting 'done&amp;rsquo;. At the end of two minutes, the break screen stays up and begins to play a low-key alarm alerting you that the break is done. I expected it to end automatically, and could imagine if the break is triggered while I&amp;rsquo;m away from my desk that sound could be annoying.&lt;/p&gt;

&lt;p&gt;I don&amp;rsquo;t know if the &lt;em&gt;magic reschedule&lt;/em&gt; ever happened, which would readjust my break times if I was away for a while as I wasn&amp;rsquo;t away for a while. But definitely a neat feature.&lt;/p&gt;

&lt;h3&gt;The Results&lt;/h3&gt;

&lt;p&gt;By the second break, I switched from 20 minute to 30 minute increments. Twenty was too often for me for a two minute break.&lt;/p&gt;

&lt;p&gt;I was getting along nicely with this, but at the third break my demo prompted me to purchase:&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/c6f1defd9171f4b75b9c5a13275aaf40/tumblr_inline_n9uk9sP6EY1qz8c75.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;BreakTime is a contender: pretty customizable and unobtrusive. And the sound effects are pretty nicely chosen and appropriate. I do wish that it closed on it&amp;rsquo;s own after the determined two minute break was up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tomorrow&amp;rsquo;s break app&lt;/strong&gt;: &lt;a href="http://www.marinaratimer.com/"&gt;Marinara Timer&lt;/a&gt;&lt;/p&gt;</description><link>https://www.thenerdary.net/post/93894865517</link><guid>https://www.thenerdary.net/post/93894865517</guid><pubDate>Tue, 05 Aug 2014 12:01:43 -0700</pubDate><category>break</category><category>health</category><category>wellness</category><category>breaktime</category><category>productivity</category><category>computers</category><dc:creator>jennlukas</dc:creator></item><item><title>Interactions in Responsive Web Design for Hover and Touch Devices</title><description>&lt;p&gt;Links and talking points from my talk: “Interactions in Responsive Web”&lt;/p&gt;

&lt;h2&gt;Why add interactions to our web pages?&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Illustrate a change on the page

&lt;ul&gt;
&lt;li&gt;Let users know something has changed&lt;/li&gt;
&lt;li&gt;Make changes less jarring&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Allow other changes to happen in the background&lt;/li&gt;
&lt;li&gt;Appear current

&lt;ul&gt;
&lt;li&gt;Use of new technology lets users know you are up-to-date&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Add entertainment

&lt;ul&gt;
&lt;li&gt;Surprise and delight&lt;/li&gt;
&lt;li&gt;Value in fun factor&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Should you add interactions/animations/transitions?&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Will the interaction help users understand the changes in the interface?&lt;/li&gt;
&lt;li&gt;Will the interaction add personal value or enjoyment to the experience?&lt;/li&gt;
&lt;li&gt;How does the interaction affect the page size/performance budget?&lt;/li&gt;
&lt;li&gt;Can I optimize the experience by choosing less expensive properties to animate?&lt;/li&gt;
&lt;li&gt;How much time will be added to the design/development timeline to create/implement?&lt;/li&gt;
&lt;li&gt;How will this effect the cross-device QA/testing time?&lt;/li&gt;
&lt;li&gt;If I remove the interaction, can my visitors still access the information in an easy manner, with minimal clicks or confusion?&lt;/li&gt;
&lt;li&gt;Do the interaction choices degrade gracefully?&lt;/li&gt;
&lt;li&gt;Is the design accessible for touch, mouse, and keyboard users?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Interaction: Simple transitions on :hover &amp;amp; :focus&lt;/h2&gt;

&lt;p&gt;Easy to add with code such as:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
a {
    transition: color 0.25s linear;
}
&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Sites in use:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://jasonsantamaria.com/"&gt;http://jasonsantamaria.com/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;no context lost on touch/non-touch devices&lt;/li&gt;
&lt;li&gt;smooth change for users with hover or focus&lt;/li&gt;
&lt;li&gt;minimal work to implement&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;multiple functionalities to test/design&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Interaction: Surprise and delight hovers&lt;/h2&gt;

&lt;h3&gt;Sites in use:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://delval.edu/"&gt;http://delval.edu/&lt;/a&gt; (since changed)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://diningataltitude.com/vail-restaurants/"&gt;http://diningataltitude.com/vail-restaurants/&lt;/a&gt; (since changed)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Gain fun, user enjoyment with playful interaction&lt;/li&gt;
&lt;li&gt;No context lost on touch devices&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Minimal to potentially average added page weight for functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Interaction: Information reveal hover&lt;/h2&gt;

&lt;h3&gt;Sites in use:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mammothbooth.com/#/faq.html"&gt;http://mammothbooth.com/#/faq.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://emporiumpies.com"&gt;http://emporiumpies.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Show information to users quickly without additional clicks or page loads&lt;/li&gt;
&lt;li&gt;Can provide a fun interface for visitors to interact with&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Different experience for touch/mouse users&lt;/li&gt;
&lt;li&gt;Touch users on larger sizes might be confused by experience&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Interaction: Destination hover&lt;/h2&gt;

&lt;h3&gt;Sites in use:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.brandaiddesignco.com/"&gt;http://www.brandaiddesignco.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://campaign.harvard.edu/"&gt;http://campaign.harvard.edu/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://wifeel.com"&gt;http://wifeel.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Can maximize imagery by hiding text till interaction&lt;/li&gt;
&lt;li&gt;Can offer shortcuts for reaching a destination&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Users without hover will not know destination, might be forced to take longer route to content&lt;/li&gt;
&lt;li&gt;Visitors might miss links all together&lt;/li&gt;
&lt;li&gt;Might require additional JavaScript to remove 300ms delay&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Interaction: Navigation menus&lt;/h2&gt;

&lt;h3&gt;Sites in use:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://fbf8.com/"&gt;http://fbf8.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fundbox.com/"&gt;https://fundbox.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://starmatic.com"&gt;http://starmatic.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Hovers:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Have become a common convention for dropdown menus&lt;/li&gt;
&lt;li&gt;Touch users will have a sub-par experience by having to take a longer route to content&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Clicks:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Visitors might not recognize the need for a click&lt;/li&gt;
&lt;li&gt;Makes sure touch and mouse users can access content&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Interaction: Slideshows&lt;/h2&gt;

&lt;h3&gt;Sites in use:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://jukely.com"&gt;http://jukely.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hipstamatic.com/oggl"&gt;http://hipstamatic.com/oggl&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Common interface for serving image and text content&lt;/li&gt;
&lt;li&gt;Visitors can use arrow, pagination, and swipe conventions&lt;/li&gt;
&lt;li&gt;Lazy load techniques can help solve speed problems&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Can have a speed impact; add to our performance budget&lt;/li&gt;
&lt;li&gt;Interactions can be confusing on smaller screens when content doesn’t fit nicely and movement is rendered at unexpected speeds and directions&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Interaction: Site Intros&lt;/h2&gt;

&lt;h3&gt;Sites in use:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://pictionapp.com"&gt;http://pictionapp.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://overgram.co"&gt;http://overgram.co&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://getjustlanded.com"&gt;http://getjustlanded.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Can focus attention on specific elements&lt;/li&gt;
&lt;li&gt;Adds visual enjoyment and liveliness to page&lt;/li&gt;
&lt;li&gt;Adds slickness to otherwise pretty barren splash pages&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Can be a large speed impact&lt;/li&gt;
&lt;li&gt;Can be confusing on smaller screens to follow elements as they animate in&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Hover/Touch Global Switcher&lt;/h2&gt;

&lt;h3&gt;CodePen examples:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Global Hover/Touch switcher: &lt;a href="http://codepen.io/Jenn/full/cwuJf/"&gt;http://codepen.io/Jenn/full/cwuJf/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;List view hover/touch switcher: &lt;a href="http://codepen.io/Jenn/pen/Jdnko"&gt;http://codepen.io/Jenn/pen/Jdnko&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Pros:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Makes sure that there is a way that visitors on any device can get the best experience for them&lt;/li&gt;
&lt;li&gt;Allows aesthetic customization for different use cases&lt;/li&gt;
&lt;li&gt;Can combine with screen size to optimize for small screen touch vs large screen touch&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Cons:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Additional design/development work to craft different experience&lt;/li&gt;
&lt;li&gt;Requires user to do extra work to set preferences&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Interaction Media Features&lt;/h3&gt;

&lt;h3&gt;Pointer:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Checks for: none, coarse, fine&lt;/li&gt;
&lt;li&gt;If multiple input mechanisms: recommended that the UA reports the characteristics of the least capable pointing device&lt;/li&gt;
&lt;li&gt;UAs may make the feature match multiple values.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Hover:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Queries whether primary pointing system used on the output device can hover or not.&lt;/li&gt;
&lt;li&gt;Values: none, on-demand, hover&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;CSS Animation Performance&lt;/h2&gt;

&lt;h3&gt;Faster properties:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Transform

&lt;ul&gt;
&lt;li&gt;position&lt;/li&gt;
&lt;li&gt;scale&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Opacity&lt;/li&gt;
&lt;li&gt;Rotation&lt;/li&gt;
&lt;li&gt;Some filters&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Read more:&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.adobe.com/webplatform/2014/03/18/css-animations-and-transitions-performance/"&gt;http://blogs.adobe.com/webplatform/2014/03/18/css-animations-and-transitions-performance/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.html5rocks.com/en/tutorials/speed/high-performance-animations/"&gt;http://www.html5rocks.com/en/tutorials/speed/high-performance-animations/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;300ms Delay&lt;/h2&gt;

&lt;p&gt;Mobile browsers wait ~300ms from the time that you tap the button to fire the click event to wait and check for double tap.&lt;/p&gt;

&lt;h2&gt;Overrides:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;iOS: &lt;a href="http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away"&gt;http://updates.html5rocks.com/2013/12/300ms-tap-delay-gone-away&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Windows: &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Fast Click: &lt;a href="https://github.com/ftlabs/fastclick"&gt;https://github.com/ftlabs/fastclick&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tappy: &lt;a href="https://github.com/filamentgroup/tappy/"&gt;https://github.com/filamentgroup/tappy/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Related links:&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="#%5Dhttp://www.stucox.com/blog/you-cant-detect-a-touchscreen/"&gt;Stu Cox on You Can’t Detect a Touchscreen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://timkadlec.com/2013/01/setting-a-performance-budget/"&gt;Tim Kadlec on Setting Performance Budgets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://thenerdary.net/post/52860724240/using-mousemove-and-touchstart-to-detect-touch-devices"&gt;JavaScript to detect hover&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Responsive interaction survey link: &lt;a href="http://tinyurl.com/rwd-interactions"&gt;http://tinyurl.com/rwd-interactions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>https://www.thenerdary.net/post/93235831432</link><guid>https://www.thenerdary.net/post/93235831432</guid><pubDate>Tue, 29 Jul 2014 12:57:00 -0700</pubDate><category>css</category><category>animations</category><category>interactions</category><category>transitions</category><category>ui</category><category>web design</category><dc:creator>jennlukas</dc:creator></item><item><title>Helpful Links for Successful Web Typography</title><description>&lt;p&gt;Here is a collection of useful links for designers and developers from my presentation &lt;em&gt;&lt;a href="https://www.flickr.com/photos/fonfek/10632380886/"&gt;The Developer&amp;rsquo;s Ampersandwich&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;Articles/Examples&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://alistapart.com/blog/post/web-font-trends"&gt;Where to find info on Web Font Trends&lt;/a&gt; (Jenn Lukas/A List Apart Blog)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thenerdary.net/post/75826597863/disabling-typekit-on-mobile"&gt;Disabling Typekit&lt;/a&gt; (Jenn Lukas/The Nerdary)&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://codepen.io/davatron5000/pen/nrfGA"&gt; Testing the loading of fonts with screen size media queries&lt;/a&gt; (Dave Rupert/CodePen)&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://blog.typekit.com/2013/04/17/fallback-fonts-on-mobile-devices"&gt;Multiple Kits for Mobile Device Fallback Fonts&lt;/a&gt; (Jordan Moore/Typekit Blog)&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://css-tricks.com/examples/IconFont"&gt;Icon Fonts&lt;/a&gt; (on CSS Tricks)&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://snook.ca/archives/html_and_css/font-size-with-rem"&gt;Font Sizing with REM&lt;/a&gt; (Jonathan Snook)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://usabilitypost.com/2012/11/05/stop-fixing-font-smoothing/"&gt;Please Stop &amp;ldquo;Fixing&amp;rdquo; Font Smoothing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.abookapart.com/products/on-web-typography"&gt;Book: On Web Typography&lt;/a&gt; (Jason Santa Maria )&lt;/li&gt;
      &lt;/ul&gt;


&lt;h2&gt;Tools/Browser Extensitions&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://alistapart.com/blog/post/easy-color-contrast-testing"&gt;Easy Color Contrast Testing&lt;/a&gt; a look at the Chrome extension and how to use it (A List Apart blog)&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://codepen.io/chriscoyier/pen/atebf"&gt;45-75 character bookmarklet&lt;/a&gt; from Chris Coyier&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://type-o-matic.net"&gt;Type-o-matic&lt;/a&gt; Firefox extension from Nicole Sullivan&lt;/li&gt;
        &lt;li&gt;&lt;a href="https://github.com/Jenn/starter-files"&gt;General Styles Example&lt;/a&gt; (in GitHub Starter Files repo)&lt;/li&gt;
        &lt;li&gt;&lt;a href="https://chrome.google.com/webstore/detail/whatfont/jabopobgcpjmedljpbcaablpmlmfcogm?hl=en"&gt;What Font&lt;/a&gt; extension to easily identify a font being used on a web page&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://ffffallback.com"&gt;ffffallback.com&lt;/a&gt; extenstion testing fallback fonts within the browser&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://jordanm.co.uk/tinytype"&gt;Tinytype&lt;/a&gt; a table of what fonts are common to which mobile devices&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://glyphsapp.com"&gt;Glyphs App&lt;/a&gt; Make your own icon fonts&lt;/li&gt;
&lt;li&gt;&lt;a href="https://symbolset.com/"&gt;SymbolSet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://icomoon.io/"&gt;IcoMoon&lt;/a&gt; Icon Fonts and SVG&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fontastic.me/"&gt;Fontastic&lt;/a&gt;Another for Icon Fonts and SVG&lt;/li&gt;
      &lt;/ul&gt;


&lt;h2&gt;Free Web Fonts&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://theleagueofmoveabletype.com"&gt;The League of Movable Type&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://html.adobe.com/edge/webfonts/"&gt;Adobe Edge Web Fonts&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://fontsquirrel.com"&gt;FontSquirrel&lt;/a&gt; Can filter fonts by &amp;ldquo;free&amp;rdquo;&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://google.com/fonts"&gt;Google Fonts&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://hellohappy.org/beautiful-web-type"&gt;Examples of Beautiful Google Font pairings&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;</description><link>https://www.thenerdary.net/post/85573295737</link><guid>https://www.thenerdary.net/post/85573295737</guid><pubDate>Mon, 12 May 2014 17:12:00 -0700</pubDate><category>web type</category><category>web typography</category><category>typography</category><category>web design</category><category>web development</category><dc:creator>jennlukas</dc:creator></item><item><title>Are We Sharing Or Speaking?</title><description>&lt;p&gt;I wrote a post about a formula to use for &lt;a href="http://www.thenerdary.net/post/84544230452/a-formula-for-speaking-fees"&gt;calculating a speaker fee&lt;/a&gt; if you are looking to charge one. There’s been great, open dialogue surrounding this topic lately. This is awesome as money is always a tough subject to discuss. I’ve enjoyed reading different responses and takes on the subject. This is always going to boil down to what you feel comfortable with. Web designers, plumbers, singers, we all charge different rates based on many factors, so remember that in the end, you can be informed what others do but ultimately need to find what works for you. There is no one right answer.&lt;/p&gt;

&lt;p&gt;In response to speaking fees, two of the more common responses against charging them have been, “conferences are about sharing” and “conferences pay for themselves”. Let’s look at these and ask a few more questions for discussion:&lt;/p&gt;

&lt;h2&gt;“Don’t conferences pay for themselves?”&lt;/h2&gt;

&lt;p&gt;I’m assuming the extreme thinking here is that by speaking at a conference you are then greeted with job offers, freelance projects, and millions of Twitter followers. I hope this is true for some of you, but for lots of us, it is not. Let me ask you this loaded question:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is speaking for free, in hopes to land a job, any different than spec work?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m not 100% sure how I feel about spec work in general. But I do know the majority of us are not up there giving product pitches. We are spending time creating content, designing slides, and practicing to try to teach and inform our audiences.&lt;/p&gt;

&lt;p&gt;If we are saying the hard work of public speaking has no paid value, are we essentially creating a new spec work situation?&lt;/p&gt;

&lt;h2&gt;“Aren&amp;rsquo;t conferences for sharing information, not getting paid?”&lt;/h2&gt;

&lt;p&gt;What if we altered the language we use to describe speaking at conferences. When you read these statements, do they invoke different ideas of the requirements involved in public speaking:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;“I am &lt;em&gt;sharing&lt;/em&gt; at an event”&lt;/li&gt;
&lt;li&gt;“I am &lt;em&gt;presenting&lt;/em&gt; at an event”&lt;/li&gt;
&lt;li&gt;“I am &lt;em&gt;performing&lt;/em&gt; at an event”&lt;/li&gt;
&lt;li&gt;“I am &lt;em&gt;teaching&lt;/em&gt; at an event”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would you pay some of these people, but not all of them?
Is there a difference?&lt;/p&gt;

&lt;p&gt;Let’s step away from the tech field and look at a stand-up comedian.  A stand-up comedian goes on stage and jokes come out of her mouth for 45 minutes. Do we pay her for this time? Is she &lt;em&gt;sharing&lt;/em&gt; the jokes? Is she &lt;em&gt;performing&lt;/em&gt;? If we don’t like the jokes she is telling, does that change our perception? If her jokes are about her own personal experiences, is she selling herself too much? If she’s only been telling jokes for 6 months do we pay her less than someone that tells jokes for 5 years? If she’s performing locally do we not pay her? If she had to travel far, should we pay her? If she goes on stage and improvs the jokes with no prep, do we leave money out of the equation? If she spent a week or two forming the jokes, crafting them, practicing them, should we pay her for that time?&lt;/p&gt;

&lt;p&gt;Are larger comedy performances like a tech conference? Are open mic nights like local meetups?&lt;/p&gt;

&lt;h2&gt;Here’s how it works for me&lt;/h2&gt;

&lt;p&gt;When I &lt;em&gt;share&lt;/em&gt; through blog posts like this one or record podcasts like the one for &lt;a href="http://ladiesintech.com/"&gt;ladiesintech.com&lt;/a&gt;, those are done on my schedule and are personal projects with myself as the client.&lt;/p&gt;

&lt;p&gt;I treat speaking at conferences the same as working for clients. The conference organizers and attendees are my clients. &lt;/p&gt;

&lt;p&gt;Again, how you see this or anything in life is going to be personal for you. You can make your own formula for this. Just as there are plenty of ways to code a site navigation, there are a lot of ways to handle your speaking endeavors. &lt;/p&gt;

&lt;p style="font-size: 12px;"&gt;(Thanks to that radical &lt;a href="http://ethanmarcotte.com"&gt;Ethan Marcotte&lt;/a&gt; for post feedback)&lt;/p&gt;</description><link>https://www.thenerdary.net/post/84828642202</link><guid>https://www.thenerdary.net/post/84828642202</guid><pubDate>Mon, 05 May 2014 07:59:00 -0700</pubDate><category>public speaking</category><category>conferences</category><category>sharing</category><category>fees</category><category>speaker fee</category><dc:creator>jennlukas</dc:creator></item><item><title>A Formula for Speaking Fees</title><description>&lt;p&gt;I was on a panel about public speaking recently and the topic of getting paid to speak came up. My answer: I &lt;strong&gt;do&lt;/strong&gt; charge a speaking fee for most conferences I speak at. Ideally every person (full time, self employed) will be paid for speaking, but now that I’m a freelancer, it is imperative for me.&lt;/p&gt;

&lt;p&gt;When I speak at a conference, I am committing to spending time away from traditional client work to prep a talk, practice a talk, travel to/from a talk, and give the talk. I’m super into math and formulas and I find that hard numbers allow me to figure a fair speaking fee. So let’s see how that works. If I say yes to an hour long talk, that can potentially break down to these hours:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Email correspondence with conference organizer&lt;/strong&gt; (info, travel plans, etc): 1 hour&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prepping for talk&lt;/strong&gt; (info, keynote design, research): 35 hours&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Practice:&lt;/strong&gt; 5 hours&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Travel&lt;/strong&gt; (including waiting at an airport, where I find it hard to do work depending on Internet/length of time): 5-16 hours&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Conference&lt;/strong&gt; (multi-day): 16 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That can be a total of 73 hours away from paying client work. Now, let’s break this time down a bit. If it’s a conference I’d be interested in attending, then the 16 hours at the actual conference can be a draw because I can also learn things there,  So we’ll take that out of our total hours and now we are at 57 hours. Let’s say you only say yes to places with direct flights, no time zone change. That will save us some time, so let’s chop 7 hours off of our time to get down to a nice even 50 hours.&lt;/p&gt;

&lt;p&gt;Let’s do some more easy math and say your freelance hourly rate is $100/hour.&lt;/p&gt;

&lt;p&gt;&lt;em style="background: #999; display: block;padding: 1em; text-shadow: none; color: #fff;"&gt;50 hours (talk prep, travel) x $100 (hourly rate) = $5,000 potential money missed from paying clients &lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you are comfortable with charging $5,000 a talk. Great! If not, here’s how you can get that lower without selling yourself short.&lt;/p&gt;

&lt;p&gt;It takes me a long time to prepare for a talk, so I try to give it more than once. So if I am going to give the talk 5 times this year, then we can lower that number:&lt;/p&gt;

&lt;p&gt;&lt;em style="background: #999; display: block;padding: 1em; text-shadow: none; color: #fff;"&gt;35 (total hours prep) / 5 (amount of times I’ll use this talk) = 7&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Our new total hours for this talk, will now be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Email&lt;/strong&gt;: 1 hour&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prep&lt;/strong&gt;: 7 hours&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Practice&lt;/strong&gt;: 4 hours&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Travel&lt;/strong&gt; = 8 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We now have a total of 20 hours so our new speaker fee can be:&lt;/p&gt;

&lt;p&gt;&lt;em style="background: #999; display: block;padding: 1em; text-shadow: none; color: #fff;"&gt;20 (total hours) x $100 (hourly rate = $2,000 speaker fee&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Still feeling too high for you? How about only saying yes to speaking in places that you would want to extend into a vacation? With that in mind you can cut the travel hours out of your formula - since you’d want to go there anyway. Now our new total is 12 hours, at 100 bucks an hour, will be a speaking fee of $1200.&lt;/p&gt;

&lt;p&gt;Do you think this conference might lead to client leads? Well then maybe you can knock off another 100 or 200, and ask for an even $1000. This formula needs to be tweaked to your liking, but I find when I put numbers breakdowns in front of me, this thing (speaking) that some of us picture as intangible, suddenly becomes more of a product you are offering.&lt;/p&gt;

&lt;h2&gt;How do you ask for this?&lt;/h2&gt;

&lt;p&gt;I love when someone emails me, invites me to their conference and says: “And we’ll pay you $2,000!” - I”m like sweet! Perfect! But that doesn’t always happen. So then what? Just because they didn’t mention a speaker fee in the initial email doesn’t mean they don’t have money to give you one. So at this point, you can write back and say “what’s the speaker fee?” - but since I’m not always comfortable with a response like that, since i worry that might be read as I’m only in it for money - when lots of times conferences are a labor of love - I like to respond with thoughtful questions that will fill out my formula. Here is a sample of what I will write back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;How large is the audience?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What is the cost of the conference? How many speakers are there?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;How long are the sessions?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Are talks recorded?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What is the speaker fee?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Were you looking for me to speak on a topic I&amp;rsquo;ve already covered or create a new talk with original material and slides?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Are there pre or post conference events to consider for travel planning?&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If they write back and say the audience is 400+ people and the cost is $1000 a ticket and there is no speaker fee, I’ll respectfully reply that I can’t take unpaid days off from client work. This is especially amplified if they want me to create new, original content and/or if they will be recording and releasing videos of my talk on their site. From there, some people have said they understand and are sorry they can’t offer it and sometimes I’ve had people come back and  either match what I asked or an offer close to it.&lt;/p&gt;

&lt;p&gt;If they write back and say the conference will have 100 attendess and the cost is only $100 a ticket and it’s a place I really want to visit or at a conference I really want to attend, than sometimes I waive the fee, as long as they cover airfare, hotel, and travel expenses (such as cabs to/from the airport - that can be over $100 sometimes, and things like checked bag fees). Sometimes my boyfriend travels with me, and if they provide him a free ticket to the conference and an invite to the speaker dinner - that also is important to me. Conferences are expensive to run. I know that. So if they can’t pay a fee, how they handle the other details can be the deciding factors for me.&lt;/p&gt;

&lt;p&gt;Lastly, I limit the amount of  non-speaker fee events I’ll speak at a year, between 1-3, such as one local, one national, and one international. That way I have another formula that is easy for me fall back to when I am flattered by an invite, but realistically isn’t a viable event for my career or my accountants liking. And it is super awesome that anyone wants to hear me talk about things, so saying no to those is really hard, but this formula has helped me make smart decisions. Hope these ideas help you.&lt;/p&gt;

&lt;p&gt;Also check out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ladiesintech.com/speakers-take-care-of-yourselves/"&gt;http://ladiesintech.com/speakers-take-care-of-yourselves/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ladiesintech.com/podcast-rachel-nabors/"&gt;http://ladiesintech.com/podcast-rachel-nabors/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://seb.ly/2014/05/how-to-ask-to-get-paid-to-speak/"&gt;http://seb.ly/2014/05/how-to-ask-to-get-paid-to-speak/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rachelandrew.co.uk/archives/2014/05/02/conference-speaking-transparency-and-fairness/"&gt;http://www.rachelandrew.co.uk/archives/2014/05/02/conference-speaking-transparency-and-fairness/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p style="font-size: 12px;"&gt;(Thanks to the wonderfully awesome &lt;a href="http://css-tricks.com/"&gt;Chris Coyier&lt;/a&gt; for feedback)&lt;/p&gt;</description><link>https://www.thenerdary.net/post/84544230452</link><guid>https://www.thenerdary.net/post/84544230452</guid><pubDate>Fri, 02 May 2014 12:53:00 -0700</pubDate><category>public speaking</category><category>conferences</category><category>speaker fees</category><dc:creator>jennlukas</dc:creator></item><item><title>Advice on Teaching Beginner Front-end Code</title><description>&lt;p&gt;I&amp;rsquo;ve had the pleasure of teaching Intro to HTML/CSS for &lt;a href="http://www.meetup.com/Girl-Develop-It-Philadelphia/"&gt;Girl Develop It&lt;/a&gt; here in Philly since our inaugural class! Sharing my knowledge of front-end code with women who want to learn it has been incredibly rewarding and one of my favorite things to do! GDI has chapters throughout the world and I&amp;rsquo;ve been asked a few times to share advice to first-time teachers about to head up a class.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Don&amp;rsquo;t read/recite the slides - use them as a guide but make sure you are brining your expertise to the class. That&amp;rsquo;s what makes it different than the students reading the slides themselves.&lt;/li&gt;
&lt;li&gt;Make sure the students have access to the slides and the materials before class so they can have it locally on their machine - sometimes it&amp;rsquo;s hard to see the projector if it&amp;rsquo;s too bright or if the room is long/the student is in back of the room&lt;/li&gt;
&lt;li&gt;Encourage questions!

&lt;ul&gt;
&lt;li&gt;If people ask questions that are beyond the scope of the course, don&amp;rsquo;t shoot it down. Be sure to touch on the subject and where they can find more info if they want to seek out more. The pacing of beginner classes can vary greatly, so don&amp;rsquo;t go too fast, but enable those with a more solid understanding to push themselves further.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Make sure the TA&amp;rsquo;s feel comfortable helping people out while you continue. There&amp;rsquo;s a LOT to cover in these the short span of an intro class, so you don&amp;rsquo;t want to stop the whole class for a how to question about how to copy/paste - but you should stop the class if the question is applicable to everyone.&lt;/li&gt;
&lt;li&gt;Take scheduled breaks and let students know at the beginning of class when it will be. This helps ease their minds in regards to things like parking meter refills, lunch, brain timeouts.&lt;/li&gt;
&lt;li&gt;Go around the room and ask how people are doing. Some people will not ask for help until pressed. I can&amp;rsquo;t tell you how many times you can say &amp;ldquo;any questions?&amp;rdquo; and everyone will say no. But go around the room and up to someone and say &amp;lsquo;hows it going?&amp;ldquo; and questions will start pouring out.&lt;/li&gt;
&lt;li&gt;HAVE FUN!! :)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I&amp;rsquo;m also currently teaching &lt;a href="http://skl.sh/1dkZBgf"&gt;Intro to HTML&lt;/a&gt; on Skillshare. Teaching without feedback from being in the same room is a completely different ballgame! Remember that the energy of an in-person class can really add to the experience and use that to keep the class fun and engaging!&lt;/p&gt;</description><link>https://www.thenerdary.net/post/76595040397</link><guid>https://www.thenerdary.net/post/76595040397</guid><pubDate>Thu, 13 Feb 2014 19:32:00 -0800</pubDate><category>teaching</category><category>front-end development</category><category>girl develop it</category><category>html</category><category>css</category><category>education</category><dc:creator>jennlukas</dc:creator></item><item><title>Disabling Typekit on Mobile</title><description>&lt;p&gt;
Edit: Typekit has posted some more info in response on their fantastic blog: &lt;a href="http://blog.typekit.com/2014/02/20/using-typekit-web-fonts-on-mobile/"&gt;http://blog.typekit.com/2014/02/20/using-typekit-web-fonts-on-mobile/&lt;/a&gt;
&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;I&amp;rsquo;m putting some finishing touches on a talk coming up and I was looking into some details when including different web font options on our sites. I use Typekit a lot. I love it. I never really paid too much attention to the Kit settings &amp;gt; Mobile settings options before.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/83fc72ba70f0f6f4e468ec0e58f922f7/tumblr_inline_n0ldretbuF1qz8c75.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;And I started thinking about the pay off between having custom fonts on  mobile vs having our sites load faster. Chris Coyier wrote a great summary of some approaches to tackle this: &lt;a href="http://css-tricks.com/preventing-the-performance-hit-from-custom-fonts/"&gt;http://css-tricks.com/preventing-the-performance-hit-from-custom-fonts/&lt;/a&gt; and there&amp;rsquo;s a post on the Typekit blog from Jordan Moore about using multiple kits and loading them based on breakpoint size (since no bandwidth testing was available) &lt;a href="http://blog.typekit.com/2013/04/17/fallback-fonts-on-mobile-devices/"&gt;http://blog.typekit.com/2013/04/17/fallback-fonts-on-mobile-devices/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this case, if we are using Typekit, should we just be disabling this mobile support that we have access to and letting fallback fonts be a browser/&lt;a href="http://www.jordanm.co.uk/tinytype"&gt;device safe font&lt;/a&gt; (i.e. Droid Sans)? It seems almost too good to be true to have these simple checkboxes, which are enabled by default, in which we can handle all the logic.&lt;/p&gt;

&lt;p&gt;I read a bit more, such as in this Typekit blog post: &lt;a href="http://blog.typekit.com/2012/11/01/announcing-windows-phone-8-support/,"&gt;http://blog.typekit.com/2012/11/01/announcing-windows-phone-8-support/,&lt;/a&gt; which says:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Following the pattern for our other supported mobile platforms, we’ve also added an option to disable support for Windows Phone in individual kits. You’ll find this option in the Kit Editor under Kit Settings &amp;gt; Mobile Settings. Uncheck the box for Windows Phone and republish your kit to turn off support. This option is useful if you’re building a responsive site that doesn’t require web fonts to be loaded on mobile platforms, or if you encounter issues with Windows Phone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And I thought that certainly sounds like we can easily disable this. I did a very unofficial quick test to see what would load on mobile using one weight of Proxima Nova with everything enabled as on default which resulted in 32KB weight and 4 requests: &lt;a href="http://www.webpagetest.org/result/140206_2N_dfc3ecd2d69159a6d9d148671b6f9477/1/details/"&gt;http://www.webpagetest.org/result/140206_2N_dfc3ecd2d69159a6d9d148671b6f9477/1/details/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and then unchecked everything and ran it again and still had one Typekit JS request, resulting in 2 requests, 10KB &lt;a href="http://www.webpagetest.org/result/140206_FG_22a5a9bfe7302d24e4a1c6479bbcdb81/1/details/"&gt;http://www.webpagetest.org/result/140206_FG_22a5a9bfe7302d24e4a1c6479bbcdb81/1/details/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sure, there are a ton of other things we can do to try to keep our page weights down, so maybe this isn&amp;rsquo;t the place to start? Here are questions that come to mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;is there a better way to test this?&lt;/li&gt;
&lt;li&gt;the speed index on this iOS test dropped from 3800  &amp;gt; 3000 when the mobile support was disabled , which still seems pretty high&lt;/li&gt;
&lt;li&gt;will this work/save us enough to use it?&lt;/li&gt;
&lt;li&gt;I only used one font/weight here, what if we disabled many?&lt;/li&gt;
&lt;li&gt;should we be sacrificing type design for this?&lt;/li&gt;
&lt;li&gt;are performance hits from web fonts on the top/middle/bottom of our list?&lt;/li&gt;
&lt;li&gt;what about these mobile devices when connected to wifi? Is it cool that they never get the fonts? Worth the potential savings or no?&lt;/li&gt;
&lt;li&gt;how should we be testing our fallback fonts? Is the extra testing/design time worth it?&lt;/li&gt;
&lt;li&gt;are y'all disabling fonts through any of these approaches? If so, I&amp;rsquo;d love to hear about how it&amp;rsquo;s working out for you!!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So many questions!&lt;/p&gt;</description><link>https://www.thenerdary.net/post/75826597863</link><guid>https://www.thenerdary.net/post/75826597863</guid><pubDate>Thu, 06 Feb 2014 13:11:00 -0800</pubDate><category>typekit</category><category>web type</category><category>web fonts</category><category>performance</category><category>web design</category><category>web development</category><category>css</category><category>fonts</category><dc:creator>jennlukas</dc:creator></item><item><title>Resources for Beginning Responsive Web Design</title><description>&lt;p&gt;I occasionally receive questions through the Nerdary or over at my site about web topics. Often someone else has that same question, so thought I&amp;rsquo;d share some here. Here&amp;rsquo;s a question I received about getting started with responsive web design:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;I built my website portfolio BUT! I need some resources for helping me make it responsive. Any hints or sites for help with this would be much appreciated!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Congrats on the new site! Isn&amp;rsquo;t HTML awesome? 
Responsive Web Design (RWD) is a great next step after learning the basics of HTML and CSS and once you know it, will be an integral part of every project!&lt;/p&gt;

&lt;p&gt;Like anything out there, you can follow a lot of different paths when learning about RWD. There are great &lt;a href="http://bradfrost.github.io/this-is-responsive/patterns.html"&gt;patterns&lt;/a&gt; to follow, important thoughts on &lt;a href="http://alistapart.com/article/your-content-now-mobile/"&gt;content strategy&lt;/a&gt; for mobile, and ideas on what order to &lt;a href="http://www.lukew.com/ff/entry.asp?933"&gt;build it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But if you are looking for practical first and theoretical second, the CSS that goes into RWD is a must know as well, so it&amp;rsquo;s a great place to start! While some people might throw a list of &amp;ldquo;200 things you absolutely must know about Responsive Web Design RIGHT NOW OMG!!!&amp;rdquo;, sometimes learning one thing at a time is the best ;) So I would start here and then move on to some of the deeper details.&lt;/p&gt;

&lt;p&gt;The first article written on RWD was run on A List Apart by Ethan Marcotte and was a crazy, game changer: &lt;a href="http://alistapart.com/article/responsive-web-design/"&gt;http://alistapart.com/article/responsive-web-design/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ethan is super awesome and followed that article up with a very east to read and understand book, &lt;a href="http://www.abookapart.com/products/responsive-web-design"&gt;Responsive Web Design&lt;/a&gt; from A Book Apart&lt;/p&gt;

&lt;p&gt;Do you like videos? Check out this &lt;a href="http://css-tricks.com/video-screencasts/102-braindump-on-responsive-web-design/"&gt;braindump on responsive web design&lt;/a&gt; on CSS Tricks from Chris Coyier.&lt;/p&gt;

&lt;p&gt;Best of luck and high fives to you!&lt;/p&gt;</description><link>https://www.thenerdary.net/post/75811095184</link><guid>https://www.thenerdary.net/post/75811095184</guid><pubDate>Thu, 06 Feb 2014 10:04:00 -0800</pubDate><category>rwd</category><category>responsive</category><category>web design</category><category>responsive web design</category><category>web development</category><category>html</category><category>css</category><category>front-end development</category><dc:creator>jennlukas</dc:creator></item><item><title>Free vs Paid Apps and a Look at Time Tracking: Toggl</title><description>&lt;p&gt;Since heading into the freelance word, I&amp;rsquo;ve been experimenting with new applications and workflows. One of the first solutions I needed was for time tracking.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve used &lt;a href="http://www.getharvest.com/"&gt;Harvest&lt;/a&gt; before and liked it, but in this &amp;ldquo;experimental&amp;rdquo; phase, I decided to look into a free option or five to see what the competition is like before I commit.&lt;/p&gt;

&lt;h2&gt;Free vs Paid Apps&lt;/h2&gt;

&lt;p&gt;Here&amp;rsquo;s the thing about the internet: there&amp;rsquo;s a lot of free in it.&lt;/p&gt;

&lt;p&gt;There&amp;rsquo;s such a plethora of free and paid tools out there, some times it&amp;rsquo;s hard to decide which ones to &amp;ldquo;splurge&amp;rdquo; for and which ones to use the free version. I have no problem paying for quality products, but sometimes free ones are quality, too. This conversation has come up a LOT over the years in the ExpressionEngine community, right? I feel like countless times I read threads saying &amp;ldquo;Why should I pay for this?&amp;rdquo; with a lot of great answers about quality. I don&amp;rsquo;t think this makes anyone &lt;em&gt;cheap&lt;/em&gt;, but just economical/curious/excited about different options.&lt;/p&gt;

&lt;p&gt;I have paid for many apps, and then a month or two later, I realize it&amp;rsquo;s not for me or something better comes out, which leaves me with this, &amp;ldquo;ah shucks, i&amp;rsquo;m stuck with this now&amp;rdquo; feeling. No one wants to be the American Gigolo of text editors, but we&amp;rsquo;ve all Richard Gere&amp;rsquo;d at least a few: Espresso, Coda, ST2 anyone?&lt;/p&gt;

&lt;h2&gt;Time Tracking Tools&lt;/h2&gt;

&lt;p&gt;So my bar is set with Harvest, and right now I am looking to see if there are any other comparable options. I&amp;rsquo;ve started with &lt;a href="https://www.toggl.com/"&gt;Toggl&lt;/a&gt;, which has an unlimited free version to use.&lt;/p&gt;

&lt;p&gt;&lt;img src="https://64.media.tumblr.com/72f5fbd123ce64eb69f7402b8304e0be/tumblr_inline_mru2wuBzm91qz4rgp.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;You can add clients, set projects to them, and run reports. I&amp;rsquo;ve been using the web interface so far. Every time you hit continue on a timer, a new entry is made. This could be a pro or con depending on what you are looking for. Besides that, it has been pretty straight forward and a good offering.&lt;/p&gt;

&lt;p&gt;They have a desktop app that I haven&amp;rsquo;t tried yet. Has anyone tried this? Or any other time tracking options? I&amp;rsquo;m looking for at least one other for comparison before I commit.&lt;/p&gt;</description><link>https://www.thenerdary.net/post/58789773509</link><guid>https://www.thenerdary.net/post/58789773509</guid><pubDate>Tue, 20 Aug 2013 07:34:02 -0700</pubDate><category>freelance</category><category>freelance life</category><category>time tracking</category><category>toggl</category><category>apps</category><category>free</category><category>paid</category><category>harvest</category><category>espresso</category><category>coda</category><category>sublime text</category><dc:creator>jennlukas</dc:creator></item><item><title>Using mousemove and touchstart to Detect Touch Devices</title><description>&lt;p&gt;So you know &lt;a href="http://fuckyeahhovers.tumblr.com/"&gt;I love hovers&lt;/a&gt;. I was recently trying to implement a hover that has the image as the link, and on hover the text of the link appears. The information that is hidden and shown on hover is vital to understanding what the link is and where it goes. Something that without knowing, a user might never want to click on the link. This hover/focus interaction works perfectly fine for keyboard and mouse users, but what about touch?&lt;/p&gt;

&lt;p&gt;With touchable desktops coming out and tablets the size of tvs, using media queries with max-device-width isn&amp;rsquo;t as reliable as it used to be to show the hidden information by default for &amp;ldquo;mobile sized&amp;rdquo; devices. This led me to a few different searches for a new solution.&lt;/p&gt;

&lt;p&gt;Josh Clark wrote about it the dilemma here: &lt;a href="http://globalmoxie.com/blog/desktop-touch-design.shtml"&gt;http://globalmoxie.com/blog/desktop-touch-design.shtml&lt;/a&gt; and talks and about how we have to design our UIs for touch. Great points, but going back to design wasn&amp;rsquo;t an option here.&lt;/p&gt;

&lt;p&gt;I looked into Modernizr, but there are a slew of issues opened right now (such as &lt;a href="https://github.com/Modernizr/Modernizr/issues/548"&gt;https://github.com/Modernizr/Modernizr/issues/548&lt;/a&gt;) that investigate how to make touch event detection more reliable without setting off false positives.&lt;/p&gt;

&lt;p&gt;In this case, false positives using Modernizr wouldn&amp;rsquo;t be the worst thing in the world, as that falls back to the Josh Clark approach of designing for touch first. But we tried something else anyway..&lt;/p&gt;

&lt;p&gt;Mark Huot and I opened up Codepen and decided to try out a few different tests around using the mousemove function. We figured, hey if there&amp;rsquo;s a mouse movement, it&amp;rsquo;s not touch right?  This kinda worked, but we quickly found out that clicking on links on our iPad or clicking anywhere on our Android fired off the mousemove function. So that didn&amp;rsquo;t work. We ended up with a few different functions, until we finally reached this: &lt;a href="http://codepen.io/Jenn/full/ALHEf"&gt;http://codepen.io/Jenn/full/ALHEf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We style for touch first by default, so the product information shows. Then after the mousemove function fires, a class is applied of &amp;lsquo;hover-on&amp;rsquo;. With this class we adjust the styles appropriately to set the hover opacity to 0 and then to 1 on hover. Touch devices should never get that class, and therefore, always show the information.&lt;/p&gt;

&lt;p&gt;When touchstart occurs and someone clicks on a touch device, it unbinds the function and never receives the class.&lt;/p&gt;

&lt;p&gt;The down side, when you first load the page, until you mouse within the document you will see the information and then it will hide once you mouse anywhere. Adding a transition on the opacity will at least ease this so it&amp;rsquo;s not so jarring. Maybe you might even like it as an indicator to your users that there is more info???&lt;/p&gt;

&lt;p&gt;This relies on touchstart running before mousemove, which in our limited tests it has. Please let us know what you find if you can test it out! Thanks!&lt;/p&gt;

&lt;pre class="codepen" data-height="300" data-type="result" data-href="ALHEf" data-user="Jenn" data-safe="true"&gt;&lt;code&gt;&lt;/code&gt;&lt;a href="http://codepen.io/Jenn/pen/ALHEf"&gt;Check out this Pen!&lt;/a&gt;&lt;/pre&gt;

&lt;script async src="http://codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;</description><link>https://www.thenerdary.net/post/52860724240</link><guid>https://www.thenerdary.net/post/52860724240</guid><pubDate>Thu, 13 Jun 2013 04:00:00 -0700</pubDate><category>hovers</category><category>touch devices</category><category>mobile</category><dc:creator>jennlukas</dc:creator></item><item><title>ExpressionEngine to Tumblr</title><description>&lt;p&gt;I&amp;rsquo;m manually moving my EE posts on&lt;a href="http://jennlukas.com/"&gt; jennlukas.com&lt;/a&gt; over to Tumblr. True story: I once went from MySpace blogs to EE!&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ll miss EE and it worked well for my site for a long time but I plan on having more of a static site and then linking off to Tumblr/my blog since I love tumblr so much.&lt;/p&gt;

&lt;p&gt;I often get asked how many Tumblrs I have. I&amp;rsquo;ll say more than 10, less than 30. With my most updated ones being &lt;a href="http://fuckyeahhovers.tumblr.com/"&gt;http://fuckyeahhovers.tumblr.com/&lt;/a&gt; and &lt;a href="http://sexhobbit.tumblr.com/."&gt;http://sexhobbit.tumblr.com/.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this in mind, since I&amp;rsquo;m already in the Tumblr interface adding pictures of Buster Bluth photoshopped into Game of Thrones, it reminds me to post on my personal tumblr or the Nerdary (which is also on this here Tumblr&amp;hellip;yes right this second I am tumblring/tumbling/bloggin/what do you call it! ) I never remembered to update my personal site very often. So hopefully this move will help.&lt;/p&gt;

&lt;p&gt;I started to look into ways to migrate with less effort, but meh, it&amp;rsquo;s been interesting to reread all posts and format them properly anyway, plus I only had 35 posts to migrate, most of which are +/- lists which honestly, I probably could&amp;rsquo;ve let go.&lt;/p&gt;

&lt;p&gt;Though, have any of you migrated from EE to Tumblr before with luck? 35 posts just seemed like something to just knock out.&lt;/p&gt;

&lt;p&gt;I was going to post this on my new tumblr, but decided to give it a home on the Nerdary, though it&amp;rsquo;s not too much code samples exactly. I was thinking about writing about the redesign process of my site, but not sure if I should do it on jennlukas.tumblr or the Nerdary&amp;hellip;I wouldn&amp;rsquo;t want to get in the way of all these Laravel posts! :$&lt;/p&gt;

&lt;p&gt;Anywhooo let me know if this is something that would &lt;em&gt;not&lt;/em&gt; interest you. (This means I will take silence in comments as a go ahead&amp;hellip;take that commenting)&lt;/p&gt;</description><link>https://www.thenerdary.net/post/52350067462</link><guid>https://www.thenerdary.net/post/52350067462</guid><pubDate>Thu, 06 Jun 2013 19:43:06 -0700</pubDate><category>css</category><category>tumblr</category><category>expressionengine</category><category>redesign</category><category>myspace blogs</category><category>migration</category><dc:creator>jennlukas</dc:creator></item><item><title>Laravel 4 Primer</title><description>&lt;p&gt;Great news! &lt;a href="http://laravel.com"&gt;Laravel 4&lt;/a&gt; is out!&lt;/p&gt;

&lt;h2&gt;Mini-review&lt;/h2&gt;

&lt;p&gt;Laravel 4 is a different kind of framework than its predecessor, and that comes with its own pluses and minuses. The documentation isn&amp;rsquo;t fully fleshed out (for example, try finding the URL class in the documentation easily) and the learning curve is much steeper to understand the system. Yet, Laravel 4 is a very fast framework with some very smart design decisions and still a pleasure to use once you get over the initial hump of understanding the hows and whys.&lt;/p&gt;

&lt;p&gt;In my use of it, I&amp;rsquo;ve found 4 to be an excellent framework, yet I&amp;rsquo;m sad to see the simplicity of the 3 codebase disappear. Laravel 4&amp;rsquo;s new internal architecture certainly makes it more stable, faster and well tested. In the process it trades off findability and legibility. Composer is a welcome addition. Also, unit testing with the framework is really great.&lt;/p&gt;

&lt;p&gt;One need only use it with composer to see how great Laravel 4 is, but as an example of its jekyll/hyde problem, we can talk about the URL class. Not only is it not documented, but try and find class URL in the codebase? You&amp;rsquo;ll find yourself going down some roads and eventually find yourself at &lt;code&gt;class UrlGenerator&lt;/code&gt;. Laravel obscures the setup of these classes behind the Facade. As it heads towards purer object-oriented form, with dependency injection, it loses some simplicity.&lt;/p&gt;

&lt;p&gt;I wish Laravel would use the new shortened array syntax and just bump the requirement up to PHP 5.4. Why can&amp;rsquo;t Laravel be the framework that is forward-looking? Compatability with outdated versions of PHP is what makes PHP programming so frustrating.&lt;/p&gt;

&lt;p&gt;On a final note, I was a bit jolted by the new Laravel website&amp;rsquo;s sponsorships plastered everywhere. It&amp;rsquo;s not a dealbreaker, but I found it tacky. They&amp;rsquo;re not very subtle.&lt;/p&gt;

&lt;p&gt;With those gripes out of the way, it&amp;rsquo;s a very fun piece of code. Taylor did a great job and I really look forward to its future.&lt;/p&gt;

&lt;h2&gt;Community&lt;/h2&gt;

&lt;p&gt;The Laravel community is  outstanding. It&amp;rsquo;s reached the point in a community lifespan of a bunch of exciting publications and blogs, and we&amp;rsquo;re almost nearing the &amp;ldquo;Why I left Laravel&amp;rdquo; blog posts of a community&amp;rsquo;s growth.&lt;/p&gt;

&lt;p&gt;I highly recommend you go to &lt;a href="http://laracon.eu/2013/"&gt;Laracon EU&lt;/a&gt;. Laracon in the US was a really fun conference and it&amp;rsquo;s a great time to meet other Laravel folks.&lt;/p&gt;

&lt;p&gt;There&amp;rsquo;s a #laravel IRC chatroom on Freenode, which a lot of people visit. Also the &lt;a href="https://plus.google.com/communities/106838454910116161868"&gt;Google Plus Community&lt;/a&gt; is active.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve tried to put together a list here of great resources.&lt;/p&gt;

&lt;h3&gt;Websites&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.laravel.com"&gt;Laravel&lt;/a&gt;: The website for the framework.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitter.com/laravelphp"&gt;@laravelphp&lt;/a&gt;: The twitter account for the framework.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://twitter.com/"&gt;@taylorotwell&lt;/a&gt;: The creator of the framework&amp;rsquo;s twitter account.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://laravel.io/"&gt;Laravel.io&lt;/a&gt;: A great site that is being positioned as the Laravel community HUB. You can check out the &lt;a href="http://wiki.laravel.io/Laravel.io_Wiki"&gt;wiki&lt;/a&gt;, read &lt;a href="http://laravel.io/topic/28/laravel-weekly-10"&gt;Laravel Weekly&lt;/a&gt; and it&amp;rsquo;s the official home of the &lt;a href="http://forums.laravel.io/"&gt;forums&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://laravel.io/topic/25/laravelio-podcast-episode-1-laravel-4-becomes-official-and-laracon-eu-2013"&gt;Laravel Podcast&lt;/a&gt;: This podcast just started, so no promises on its longevity. The first episode mostly talks about how everyone loves Laravel. I&amp;rsquo;m excited to see what becomes of it.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jasonlewis.me/"&gt;Jason Lewis&lt;/a&gt;: An excellent community member and prolific patron of the Laravel IRC channel.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://net.tutsplus.com/tag/laravel/"&gt;Laravel on nettuts&lt;/a&gt;: Jeffrey Way is probably the best Laravel writer going right now. He&amp;rsquo;s also the best screencaster, coincidentally (sorry, Taylor).&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fideloper.com/tag/laravel"&gt;Fideloper&lt;/a&gt;: Chris Fidao writes about Laravel on his blog. His &lt;a href="http://fideloper.com/laravel-4-uber-quick-start-with-auth-guide"&gt;Laravel 4 Uber-Quick-Start&lt;/a&gt; is one of my favorites.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://daylerees.com/"&gt;Dayle Rees&lt;/a&gt; has some excellent articles on his site as well.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://laracasts.com/"&gt;Laracasts&lt;/a&gt;: An index of Laravel screencasts. Make sure to submit yours if you have them.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://driesvints.com/"&gt;Dries Vints&lt;/a&gt;: Writes Laravel weekly and also some great quick tips.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://maxoffsky.com/"&gt;Max Surguy&lt;/a&gt;: Another prolific and informative Laravel writer.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://niallobrien.me/"&gt;Niall O'Brien&lt;/a&gt;: I&amp;rsquo;m running out of adjectives to describe prolific and informative Laravel writers, but he&amp;rsquo;s one of them.&lt;/li&gt;
&lt;li&gt;The Nerdary: While not Laravel-centric, I write about it a lot. I think Mark Huot (another writer on this site) uses it as well, but I&amp;rsquo;m pretty sure he&amp;rsquo;s dead.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Articles&lt;/h3&gt;

&lt;p&gt;Here are some articles to give you a good feel for using 4.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://net.tutsplus.com/tutorials/php/laravel-4-a-start-at-a-restful-api/"&gt;Laravel 4: A Start at a RESTful API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://daylerees.com/composer-primer"&gt;Composer primer&lt;/a&gt;: Learn how to use Laravel/PHPs new package manager.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thenerdary.net/post/30859565484/laravel-4"&gt;Laravel 4&lt;/a&gt;: Learn about Taylor Otwell, Laravel&amp;rsquo;s creator, approach to building 4.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://net.tutsplus.com/tutorials/php/testing-laravel-controllers/"&gt;Testing Laravel Controllers&lt;/a&gt;: Great primer by Jeffrey Way. Also a great primer on testing in Laravel in general.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fideloper.com/laravel-4-uber-quick-start-with-auth-guide"&gt;Laravel 4 Uber-Quick-Start&lt;/a&gt;: Probably the best quick introduction to Laravel.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Books&lt;/h3&gt;

&lt;p&gt;There are already two books out for the just-released framework.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://leanpub.com/laravel-testing-decoded"&gt;Laravel Testing Decoded&lt;/a&gt;: Jeffrey Way has written a book on writing tests for Laravel 4. He constantly churns out excellent material, so it&amp;rsquo;s easy for me to recommend this book. It&amp;rsquo;s only $15.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://leanpub.com/codebright"&gt;Laravel: Code Bright&lt;/a&gt;: This is a follow-up to &lt;a href="http://codehappy.daylerees.com/"&gt;Code Happy&lt;/a&gt;. It&amp;rsquo;s easy to recommend this to support Dayle Rees, because he&amp;rsquo;s such a great member of the community. However, Dayle&amp;rsquo;s writing style is very informal and verbose. While I thought the previous book was worth the $10, if Code Bright continues in the same format and casual style of its predecessor, my instincts say $30 is a bit much. For $30, it should have an editor.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Composer Packages&lt;/h3&gt;

&lt;p&gt;Laravel 4 opens up the world of &lt;a href="http://packagist.org"&gt;composer packages&lt;/a&gt;. With these you can start rapidly implementing new features without reinventing the wheel. Here are some of my favorites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://guzzlephp.org/"&gt;Guzzle&lt;/a&gt;: HTTP framework. Great for making API, OAUTH, etc. request.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/aws/aws-sdk-php-laravel"&gt;Amazon AWS&lt;/a&gt;: Amazon built an official provider for their services. I&amp;rsquo;m using it in my current project and it plays in Laravel nicely.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/briannesbitt/Carbon"&gt;Carbon&lt;/a&gt;: Carbon makes DateTime fun!&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/padraic/mockery"&gt;Mockery&lt;/a&gt;: A nice little mock object library.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jasonlewis/basset"&gt;Basset&lt;/a&gt;: I&amp;rsquo;ve not used Basset, but I hear about it a lot. Mr. Lewis just released a &lt;a href="https://vimeo.com/67466414"&gt;screencast&lt;/a&gt; on it. Maybe in my next project&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Did I miss something?&lt;/h3&gt;

&lt;p&gt;There are a ton of active members, blogs and material in the Laravel community. If I missed someone, please put it in the comments so that other readers may enjoy it. Self-promotion is fine! Tell me which articles and materials or people I should look up.&lt;/p&gt;</description><link>https://www.thenerdary.net/post/52067531360</link><guid>https://www.thenerdary.net/post/52067531360</guid><pubDate>Mon, 03 Jun 2013 10:27:00 -0700</pubDate><category>laravel</category><category>php</category><dc:creator>kennymeyers-deactivated20140207</dc:creator></item><item><title>Testing Laravel Controllers</title><description>&lt;a href="http://net.tutsplus.com/tutorials/php/testing-laravel-controllers/"&gt;Testing Laravel Controllers&lt;/a&gt;: &lt;p&gt;Jeffrey Way is such a prolific writer on the topic of Laravel. I particularly enjoy this excellent article on writing tests for controllers. You should support Jeffrey by signing up for &lt;a href="http://tutsplus.com/"&gt;tutsplus&lt;/a&gt; and soaking in all his knowledge.&lt;/p&gt;

&lt;p&gt;You can also pre-order his &lt;a href="https://leanpub.com/laravel-testing-decoded"&gt;book&lt;/a&gt; on testing. He’s an excellent instructor.&lt;/p&gt;</description><link>https://www.thenerdary.net/post/50032409714</link><guid>https://www.thenerdary.net/post/50032409714</guid><pubDate>Thu, 09 May 2013 13:19:22 -0700</pubDate><category>laravel</category><category>php</category><category>testing</category><dc:creator>kennymeyers-deactivated20140207</dc:creator></item><item><title>Laracasts</title><description>&lt;a href="http://laracasts.com"&gt;Laracasts&lt;/a&gt;: &lt;p&gt;You know what’s great? &lt;a href="http://www.laravel.com"&gt;Laravel&lt;/a&gt;. You know why? Because people throw together stuff like Laracasts, a central place for Laravel screencasts.&lt;/p&gt;

&lt;p&gt;They don’t make the screencasts there, they just find them so you can click and learn.&lt;/p&gt;

&lt;p&gt;Lovely.&lt;/p&gt;</description><link>https://www.thenerdary.net/post/48215315142</link><guid>https://www.thenerdary.net/post/48215315142</guid><pubDate>Wed, 17 Apr 2013 12:18:00 -0700</pubDate><dc:creator>kennymeyers-deactivated20140207</dc:creator></item><item><title>Interview with Brandon Kelly, creator of Craft</title><description>&lt;p&gt;&lt;strong&gt;&lt;a href="http://buildwithcraft.com/"&gt;Craft&lt;/a&gt; has recently gone into beta and it&amp;rsquo;s definitely worth a look. Here, we interview one of its creators, Brandon Kelly on the philosophy behind Craft and its technical aspects.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does the world need another CMS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s face it: all of the popular CMS&amp;rsquo;s out there today are a mess. They&amp;rsquo;ve been mismanaged, taken in directions the code was never meant to go, warped to scratch every last edge case&amp;rsquo;s itch. They&amp;rsquo;ve become bland, tangled, bloated, and at worst, practically unusable. Their developers are stretched way too thin and buried under mountains of technical debt. All of this has really put content management in the dark ages for the past few years.&lt;/p&gt;

&lt;p&gt;So I felt it&amp;rsquo;s time to start fresh &amp;ndash; wipe the slate clean and build something from the ground up with a clear sense of where we&amp;rsquo;re taking it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do you think differentiates Craft from its competitors like  ExpressionEngine or FuelCMS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Focus. We are very opinionated about what types of features a CMS should be responsible for, versus what should be left to plugins. You won&amp;rsquo;t ever see a cronjob manager built into Craft, but if someone wants to write that plugin, we&amp;rsquo;ll do everything we can to make it easier.&lt;/p&gt;

&lt;p&gt;There are features which we think the CMS should be responsible for, but which not every site is going to need. Localization is a great example of that. There&amp;rsquo;s really no clean way to do it with a plugin. It&amp;rsquo;s such a core part of storing content, affecting all areas of the system, and it&amp;rsquo;s something you want to make sure other plugins are going to support as well. But few sites are going to need it, and we don&amp;rsquo;t want to make everyone pay for features (and UI cruft) they don&amp;rsquo;t need. That&amp;rsquo;s why we gave Craft its &amp;ldquo;Packages&amp;rdquo; concept. Packages enable features that the core is already pre-wired for. So whether you need localization support or not, all content entered into Craft is getting saved on a per-locale basis. Buy the Localize package and suddenly you get control over which locales are available, and which locale your content is getting saved to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What was the reasoning behind choosing the Yii the framework?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;re a very small team, and Craft has been a HUGE project. So it&amp;rsquo;s been vital that we make smart technology decisions every step of the way. Choosing a PHP framework was no different. When we were just getting started a few years ago, we looked at several frameworks that were available at the time to determine which would push us in the right direction as far as possible. Yii fit the bill perfectly. It&amp;rsquo;s optimized for the code architecture we wanted, it has great internationalization support, it is modular, and the code is clean, consistent, and well documented. As we&amp;rsquo;ve built out the app, we&amp;rsquo;ve grown to like it more and more, and we really couldn&amp;rsquo;t be happier with the decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Could you speak to specific featuresets, APIs, etc. in Yii that lead to things like better localization and how it&amp;rsquo;s optimized for the architecture you wanted?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sure. Yii comes with a ton of data for practically every locale on the planet &amp;ndash; number formats, currency symbols, translations for common things like month names, and so much more. You can easily access all of that data for a particular locale by initializing a new CLocale instance. It also has built-in translation support, which takes all of that data into account.&lt;/p&gt;

&lt;p&gt;One of the great things about Yii is that pretty much everything is customizable. Yii realizes that every app is going to be built a little differently, so whenever there&amp;rsquo;s a possibility for differences, it separates the common functionality from the implementation-specific functionality. Take translation support for example. Some apps might want translations to be defined in the database, others a PHP array, others an XML file, and who knows, others might even be fetching translations from a third party web service. So Yii puts the core translation support in one spot, and lets the app provide a function that returns the translations. This approach has been used everywhere throughout the framework, which has allowed us to build the exact app that we wanted, without resorting to a bunch of framework hacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you talk a little about about how you decided on the plugin architecture (how it would work, what it would support, how it would interact with the control panel)?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The plugin architecture was actually one of the few things I didn&amp;rsquo;t have to think much about. After years of writing ExpressionEngine add-ons, I knew exactly what I wanted &amp;ndash; plugins should provide additional system components, which work exactly the same as the built-in components.&lt;/p&gt;

&lt;p&gt;A key part of the architecture is our service layer. All of the business logic in Craft happens in service classes, which provide APIs that anything else in the system (including other services) can talk to. So there&amp;rsquo;s only one place in the entire codebase where an entry will actually get written to the DB, even though there are multiple places that deal with saving entries. This is really great for plugins, because they don&amp;rsquo;t have to reinvent the wheel every time they want to replicate core functionality. Any plugin can call &lt;code&gt;craft()-&amp;gt;entries-&amp;gt;saveEntry()&lt;/code&gt; just like the core does. And of course, plugins can provide their own services too, which makes it easy for plugins to interact with other plugins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Could you give an example of a service layer in action?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Take that &lt;code&gt;craft()-&amp;gt;entries-&amp;gt;saveEntry()&lt;/code&gt; function I mentioned. &lt;code&gt;craft()-&amp;gt;entries&lt;/code&gt; is the app&amp;rsquo;s current EntriesService instance, a class that provides several API functions for managing entries. &lt;code&gt;saveEntry()&lt;/code&gt; accepts one argument: an EntryModel instance. That &lt;code&gt;EntryModel&lt;/code&gt; should be filled with all of the data needed to represent the entry that&amp;rsquo;s about to be saved, including its ID if it&amp;rsquo;s an existing entry. &lt;code&gt;saveEntry()&lt;/code&gt; validates that data, and saves it out to the database. (In this case, that&amp;rsquo;s 4 separate tables: &lt;code&gt;elements&lt;/code&gt;, &lt;code&gt;elements_i18n&lt;/code&gt;, &lt;code&gt;entries&lt;/code&gt;, and &lt;code&gt;entries_i18n&lt;/code&gt;. But EntriesService is the only place in the entire app that needs to know that; everything else can just deal with EntryModel&amp;rsquo;s.) The function will return true or false depending on whether the entry was saved successfully. If it wasn&amp;rsquo;t, the EntryModel will also be populated with any validation errors that occurred, so whatever called saveEntry() will have an idea of what went wrong. In most cases, those errors are passed back to the user.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;saveEntry()&lt;/code&gt; will generally get called from the EntriesController&amp;rsquo;s &lt;code&gt;actionSaveEntry()&lt;/code&gt; method. It populates a new EntryModel with post data, and then passes that EntryModel on to &lt;code&gt;craft()-&amp;gt;entries-&amp;gt;saveEntry()&lt;/code&gt;. What happens next depends on the &lt;code&gt;saveEntry()&lt;/code&gt; response, and what type of request it is (normal or Ajax). But the beauty is that anything can call &lt;code&gt;saveEntry()&lt;/code&gt; &amp;ndash; it&amp;rsquo;s not tied to the controller in any way. If a plugin wants to create a new entry, it can. If we decide that the installer should auto-create a Welcome entry for you, we can add a &lt;code&gt;saveEntry()&lt;/code&gt; call to InstallService.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What made you decide to use &lt;a href="http://twig.sensiolabs.org/"&gt;Twig&lt;/a&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We actually started off writing our own template parser. I wanted something that resembled Django templates, that compiled down to PHP, and was capable of at least some level of template error handling. My first pass at the parser was very simple, but it got us about 80% of the way there. That last 20% proved to be much more difficult, however. It included stuff like string concatenation, object declarations, and precise error handling. It was clear that the only clean way to do those would be to write a proper lexer and parser. We actually started going down that path, and then Paul Burdick pointed us to Twig, which somehow we had completely missed.&lt;/p&gt;

&lt;p&gt;Twig was &lt;strong&gt;exactly&lt;/strong&gt; what I wanted. Its syntax is inspired by Django, it compiles templates down to raw PHP, it has a real lexer and parser, it has both syntax and runtime error handling, and it&amp;rsquo;s super easy to extend. And thanks to the syntax being identical to our home grown templating system, I was able to get Twig up and running with the entire CP converted to it within just a couple hours. Brilliant!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is Craft going to handle the common problem of modern deployment? Meaning, how can Craft rectify local databases vs production dbs, local configs, etc?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We knew early on that keeping content in sync between multiple servers (dev vs. staging vs. production) would be a problem for Craft just like every other database-storing CMS out there. It doesn&amp;rsquo;t take any research to know that it&amp;rsquo;s a very hard problem to solve, so we decided it&amp;rsquo;s not something we&amp;rsquo;re going to worry about until some point after 1.0 launches. However we did spend a little time researching sync techniques, and put some code in place that should make our lives much easier down the road.&lt;/p&gt;

&lt;p&gt;As far as configs go, Craft config files are just PHP, so you can already have them return one thing or another depending on the current server. We do have more work to do when it comes to &lt;strong&gt;what&lt;/strong&gt; you can configure though. For example we want to make all path/URL settings throughout the CP overridable from config/general.php.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How up-to-date with Twig and Yii can we expect the framework to stay?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We try to keep all of Craft&amp;rsquo;s dependencies as up-to-date as possible, so long as there aren&amp;rsquo;t any breaking changes. We haven&amp;rsquo;t been religious about it to date, but that should change after 1.0 is out once we’ve had a chance to hook Craft up to Composer.&lt;/p&gt;

&lt;p&gt;When there are breaking changes (such as the forthcoming Twig 2.0 and Yii 2.0), we&amp;rsquo;ll shelve it for Craft 2.0.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you talk about your build system for different versions of Craft?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That&amp;rsquo;s something that has changed quite a bit over time, but the gist was always the same &amp;ndash; we had files that were package-specific, and the shared files had blocks of code that were package-specific, and the build script was responsible for including/excluding the appropriate files and blocks.&lt;/p&gt;

&lt;p&gt;Once we kicked off the private beta, we started seeing something happen that we didn&amp;rsquo;t expect (but should have): People who had more than one Craft site running would download an update for one of their sites, and upload the same set of files to all of their sites. Inevitably the list of selected packages would vary between the sites and the uploaded files wouldn&amp;rsquo;t match the packages, and that led to some fun troubleshooting work. So we decided to take a different approach: now everyone gets the exact same set of files, and we&amp;rsquo;re toggling which features you get right in the code. It&amp;rsquo;s a much simpler approach, and has actually given us the opportunity to drastically clean up the build script and our web service, as well as paved the way for Craft&amp;rsquo;s extremely simple in-app package purchasing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How did you implement the Autoupdate system?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One-click updating was actually the very first thing we started working on. It&amp;rsquo;s a pretty major bit of functionality, and if we couldn&amp;rsquo;t do it, I didn&amp;rsquo;t think it would be worth doing a CMS to begin with.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s a very high-level overview of how it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We have a TeamCity server which creates a new Craft build every time we push our work to the Master branch on GitHub.&lt;/li&gt;
&lt;li&gt;We have a Craft install on the same server with a custom &amp;ldquo;Craft Releases&amp;rdquo; plugin, which we use to cut new releases. It&amp;rsquo;s able to figure out exactly which files have been changed/added/deleted since the last release by parsing Git commit logs, and it records those along with any other metadata for the release, like the release notes.&lt;/li&gt;
&lt;li&gt;Craft&amp;rsquo;s web service (another Craft plugin called &amp;ldquo;Elliott&amp;rdquo;) talks to the Craft Releases plugin to tell the Craft client about any available updates.&lt;/li&gt;
&lt;li&gt;When an update request comes in from a client, Elliott will check which build the request says they are currently running, and create a zip of all the files that have changed since then, and respond with that.&lt;/li&gt;
&lt;li&gt;Craft then takes that update zip, verifies it, backs up the DB, renames any of the changed files to *.bak, moves the new files into place, runs any pending migrations, deletes the temp files, and clears your caches. And all of that happens in just a matter of seconds!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;One of Craft&amp;rsquo;s neatest features is the free trials for packages,  how can you implement this securely using PHP (so that people don&amp;rsquo;t pirate it)?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We decided our stance on piracy early on: piracy is a fact of life, and nothing we do is going to stop it. So instead of wasting a whole bunch of time trying to prevent it, we&amp;rsquo;ve simply made it impossible to pirate Craft &amp;ldquo;accidentally&amp;rdquo;. Yes, anyone that knows anything about PHP could go into the code, comment a few lines out, and boom, all packages are installed without any annoying CP alerts. But at least none of them will be under the impression that they didn&amp;rsquo;t do something wrong.&lt;/p&gt;

&lt;p&gt;Given the number of people who re-use EE and add-on licenses without realizing that it&amp;rsquo;s not OK (and strangely lacking the motivation to make sure), I&amp;rsquo;m expecting that this will be pretty big piracy deterrent in and of itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One glance of code shows that Craft uses a singular global namespace (Craft); Some people on Twitter have complained that it&amp;rsquo;s a poor use of PHP&amp;rsquo;s namespacing feature because instead of Craft/Plugins/PluginName, you have to use PHP 4 style classnames (namely with underscores). Can you go in-depth about the decision to not support this feature of PHP?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You should be asking the PHP guys what they were smoking when they added namespace support to begin with. It&amp;rsquo;s a mess!&lt;/p&gt;

&lt;p&gt;We might add the option for plugins to live in their own namespace, and forgo the class name prefixes, so developers that actually understand how PHP namespacing works can take advantage of it, without forcing us to explain it to everyone else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There are a couple new tools and standards in PHP that are gaining significant popularity, does Craft intend to support &lt;a href="http://getcomposer.org/"&gt;Composer&lt;/a&gt; packages? &lt;a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md"&gt;PSR-0&lt;/a&gt; and &lt;a href="https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md"&gt;PSR-1&lt;/a&gt;?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Composer-yes. We might look into strictly following PSR-0 and PSR-1 down the road, but at this point it&amp;rsquo;s safe to say it would be a 2.0 thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you speak a bit about how Craft intends to help plugin developer with the distribution and sales of their plugins?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yup! It&amp;rsquo;s no big secret that we&amp;rsquo;re planning a plugin store for Craft. We&amp;rsquo;re still ironing out many of the details, but one thing that&amp;rsquo;s for sure is it&amp;rsquo;s going to be built right into the app, just like packages. And many of our policies for packages will carry over to plugins as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Craft Forecast page is a task list of things to come, many of which are small changes (except for a few). What big feature comes next after 1.0?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The goal for the private beta was to get Craft to a point where it&amp;rsquo;s pretty much feature-complete for 1.0, and the goal for the public beta is to tie up all the loose ends. The Forecast page is currently just a list of those loose ends, which we&amp;rsquo;re tackling one-by-one.&lt;/p&gt;

&lt;p&gt;Once we get to 1.0, we&amp;rsquo;ve got a second list just as long as the 1.0 list is now, full of the same sort of things, which just didn&amp;rsquo;t seem quite important enough to be worth pushing back the 1.0 release. That includes things like section duplication, the ability to create new fields right from within the Field Layout pages, and so forth.&lt;/p&gt;

&lt;p&gt;Then there&amp;rsquo;s the 2.0 list, but it&amp;rsquo;s too early to start talking about that!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When will Craft hit 1.0?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My best guess is mid-to-late Summer. We shall see!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Our thanks to Brandon Kelly and Brad Bell of &lt;a href="http://pixelandtonic.com/"&gt;Pixel &amp;amp; Tonic&lt;/a&gt; for taking the time to answer our questions.&lt;/strong&gt;&lt;/p&gt;</description><link>https://www.thenerdary.net/post/48123188844</link><guid>https://www.thenerdary.net/post/48123188844</guid><pubDate>Tue, 16 Apr 2013 08:11:00 -0700</pubDate><category>php</category><category>cms</category><category>craft</category><dc:creator>kennymeyers-deactivated20140207</dc:creator></item><item><title>Laravel 4 Update</title><description>&lt;a href="https://vimeo.com/63892510"&gt;Laravel 4 Update&lt;/a&gt;: &lt;p&gt;Taylor Otwell runs through a bunch of new features he’s added to Laravel 4. I highly recommend you watch this screencast as it shows a lot of cool new toys.&lt;/p&gt;</description><link>https://www.thenerdary.net/post/47801793554</link><guid>https://www.thenerdary.net/post/47801793554</guid><pubDate>Fri, 12 Apr 2013 13:14:25 -0700</pubDate><category>php</category><category>laravel</category><category>screencast</category><dc:creator>kennymeyers-deactivated20140207</dc:creator></item><item><title>Leaflet JS + MapQuest for Maps</title><description>&lt;p&gt;I read the A List Apart article: &lt;a href="http://alistapart.com/article/hack-your-maps"&gt;Hack your Maps&lt;/a&gt;. It was an interesting scenario that got me thinking about maps.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve really only used Google maps for my mapping needs so today I figured &amp;ldquo;why not try something new?&amp;rdquo; and looked into some others. I needed an interactive map, not a static image, so that was one requirement.  I looked into a variety of options out there, also read this &lt;a href="http://www.netmagazine.com/features/top-seven-alternatives-google-maps-api"&gt;article on Google maps alternatives&lt;/a&gt; from .net magazine.&lt;/p&gt;

&lt;p&gt;I came across a lot of paid services or ones that had free accounts but limited usage to low numbers of map views per month or ones with free data that charged for access to their map tile servers. When it comes to the internet, I&amp;rsquo;ll admit I can be kinda cheap unless it&amp;rsquo;s a product I know I can&amp;rsquo;t live without/love to the max so I usually search for free options or free trials and then pay once I know I&amp;rsquo;m going to use it.&lt;/p&gt;

&lt;p&gt;So today I am using &lt;a href="http://leafletjs.com/"&gt;Leaflet&lt;/a&gt; with &lt;a href="http://developer.mapquest.com/web/products/open/map"&gt;MapQuest OSM Tiles&lt;/a&gt;, both of which are free and play nicely together. The Leaflet &lt;a href="http://leafletjs.com/examples/quick-start.html"&gt;Quick Start Guide &lt;/a&gt; is &lt;strong&gt;ridiculously&lt;/strong&gt; easy to follow. Kudos to whomever wrote that copy and directions.&lt;/p&gt;

&lt;p&gt;Leaflet also makes it easy to customize your map icons and is even in on all the retina rage, allowing you to easily specify an icon URL for retina displays: &lt;a href="http://leafletjs.com/reference.html#icon"&gt;http://leafletjs.com/reference.html#icon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Extra bonus, the marker popups are really easy to add styles to and the map seems to play well at different sizes in what I&amp;rsquo;ve seen so far.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m not sure if I would stick with this over Google Maps in the future but it was fun to play with.&lt;/p&gt;

&lt;pre class="codepen" data-height="300" data-type="result" data-href="zJnBA" data-user="Jenn" data-safe="true"&gt;&lt;code&gt;&lt;/code&gt;&lt;a href="http://codepen.io/Jenn/pen/zJnBA"&gt;Check out this Pen!&lt;/a&gt;&lt;/pre&gt;

&lt;script async src="http://codepen.io/assets/embed/ei.js"&gt;&lt;/script&gt;</description><link>https://www.thenerdary.net/post/47561285749</link><guid>https://www.thenerdary.net/post/47561285749</guid><pubDate>Tue, 09 Apr 2013 13:39:27 -0700</pubDate><category>css</category><category>maps</category><category>google maps</category><category>mapquest</category><category>leaflet</category><category>javascript</category><category>openstreetmap</category><dc:creator>jennlukas</dc:creator></item><item><title>Craft CMS Sample Plugin</title><description>&lt;a href="https://github.com/adrianmacneil/cocktailrecipes"&gt;Craft CMS Sample Plugin&lt;/a&gt;: &lt;p&gt;Created by the very talented &lt;a href="https://twitter.com/adrianmacneil"&gt;Adrian Macneil&lt;/a&gt;, and based on a lot of the samples in the documentation, the Craft sample plugin is a great way to get a look at how Craft plugins are built.&lt;/p&gt;

&lt;p&gt;It also is an excellent preview of the Craft API. If you see anything you don’t like make sure to tell the Craft team on their &lt;a href="https://plus.google.com/communities/106505340287442511226"&gt;community page&lt;/a&gt;.*&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Yes, their community page is on Google Plus, but the communities tool of Google Plus is one of the best I’ve used. Give that a try as well.&lt;/em&gt;&lt;/p&gt;</description><link>https://www.thenerdary.net/post/47140815913</link><guid>https://www.thenerdary.net/post/47140815913</guid><pubDate>Thu, 04 Apr 2013 15:39:00 -0700</pubDate><dc:creator>kennymeyers-deactivated20140207</dc:creator></item></channel></rss>
