<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Stelios Constantinides on Medium]]></title>
        <description><![CDATA[Stories by Stelios Constantinides on Medium]]></description>
        <link>https://medium.com/@stothelios?source=rss-1664dc180de9------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*5vnzaGy4vo5WD7J2__TFDQ.png</url>
            <title>Stories by Stelios Constantinides on Medium</title>
            <link>https://medium.com/@stothelios?source=rss-1664dc180de9------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 15 May 2026 15:56:34 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@stothelios/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[5 tips to help select great user interface fonts]]></title>
            <link>https://uxdesign.cc/5-tips-to-help-select-a-great-user-interface-font-33ccfba2ced8?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/33ccfba2ced8</guid>
            <category><![CDATA[typography]]></category>
            <category><![CDATA[visual-design]]></category>
            <category><![CDATA[design]]></category>
            <category><![CDATA[user-interface]]></category>
            <category><![CDATA[ui]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Thu, 02 Jan 2020 12:32:43 GMT</pubDate>
            <atom:updated>2020-01-03T15:44:51.623Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e6bppbPow8yJfzbVp7zGQg.png" /></figure><p>Whether or not you’re a seasoned designer, choosing a UI font can be a daunting task. As of writing this, Google Fonts alone has 997 families. You might think picking a font is mostly an exercise in preferences, but there are less subjective criteria that you should always be on the lookout for.</p><ol><li><strong>Does it have 2–3 usable weights with italics?<br></strong>You’ll generally need a regular weight and a bold weight. Adding a medium or semibold weight into the mix will give you more flexibility for creating a variety of complex components. Whichever weights you choose, having italics for them is a valuable addition.</li><li><strong>Does it look good on PCs?<br></strong>Theoretically this should be <em>does it look good on your target devices,</em> but I’ve yet to find a font that looked good on Windows and poor on Macs… The important thing to remember is operating systems, browsers, and screen quality all affect how a font is rendered so preview your fonts on various devices.</li><li><strong>Does it have the characters you need?<br></strong>Depending on the languages you support, you’ll want to look for those character sets. But beyond that, if your users are in the UK, does the font include a pound sign in addition to dollars? What about Euros and yuan?Don’t forget to check for less common but useful characters like ellipses and basic math symbols.</li><li><strong>Does it have appropriate numbers?</strong><br>Tabular numbers are equal-width characters that are especially useful for comparing values in tables, hence their name. Proportional numbers vary in width and are more appropriate for displaying numbers next to text (for example, in an address). One or both may be required based on your needs.</li><li><strong>What does it cost to license?<br></strong>I won’t try to convince you to use a free Google Font or buy the latest font from Hoefler&amp;Co, but cost is a constraint you’ll have to weigh. Something to consider when choosing a system font or a system font stack, is that usage outside of the native devices may not be permitted (for example, in advertisements or print).</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=33ccfba2ced8" width="1" height="1" alt=""><hr><p><a href="https://uxdesign.cc/5-tips-to-help-select-a-great-user-interface-font-33ccfba2ced8">5 tips to help select great user interface fonts</a> was originally published in <a href="https://uxdesign.cc">UX Collective</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[5 things I wish I’d known as a junior designer on the job hunt]]></title>
            <link>https://uxdesign.cc/five-things-i-wish-id-known-as-a-junior-designer-ce2753af1d71?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/ce2753af1d71</guid>
            <category><![CDATA[careers]]></category>
            <category><![CDATA[ux-design]]></category>
            <category><![CDATA[design]]></category>
            <category><![CDATA[ui]]></category>
            <category><![CDATA[jobs]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Thu, 26 Dec 2019 13:25:15 GMT</pubDate>
            <atom:updated>2021-12-21T01:42:37.948Z</atom:updated>
            <content:encoded><![CDATA[<h4>Portfolio advice to a younger self.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yPM6qP_vfQ6g9o77oVVC0Q.png" /></figure><h4>1. Your portfolio will get you an interview, not a job</h4><p>The role of your portfolio (and resume) is to get you an interview. Your work should stand on its own, but it shouldn’t include an 8-page case study. Save your detailed process and trove of artifacts to review onsite.</p><h4>2. Unsolicited redesigns are OK</h4><p>Junior designers often don’t have a lot of client projects in their portfolio. It’s OK to supplement these with a couple unsolicited redesigns. I’d recommend a product you already use but have some issue with. Take a look at <a href="https://medium.com/@stothelios/reddit-redesign-concept-913aa552124e">one I did awhile back</a> or <a href="https://medium.com/search?q=unsolicited%20redesign">find more here on Medium</a>.</p><h4>3. Your portfolio should reflect what you want to do</h4><p>Your portfolio should reflect the work you want to do. It may sound obvious, but often portfolios show everything we’ve done, not just what we want to continue doing. No longer interested in logo design? Prune your portfolio.</p><h4>4. Tailor your pitch to the interviewer</h4><p>Always feel free to tailor your portfolio and presentation to a specific interviewer or role. For example, highlight the details of your design process to fellow designers, share your collaboration techniques with developers, and stress business goals and your impact to product managers.</p><h4>5. Understanding code is an advantage</h4><p>It’s might not be a requirement, but knowing how to code can tilt the scales in your favor. Anyone can pick up the basics of HTML and CSS, and with more patience, JavaScript. There are good free courses on <a href="https://www.freecodecamp.org/">freeCodeCam</a>p.</p><p>But even more important than coding is understanding <a href="https://medium.com/@stothelios/web-tech-in-plain-english-ec6baede8f57">technical concepts and terminology</a>. In addition, knowing the possibilities and difficulties of developing for your target platform — be it web, native, or mobile — goes a long way.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ce2753af1d71" width="1" height="1" alt=""><hr><p><a href="https://uxdesign.cc/five-things-i-wish-id-known-as-a-junior-designer-ce2753af1d71">5 things I wish I’d known as a junior designer on the job hunt</a> was originally published in <a href="https://uxdesign.cc">UX Collective</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building a Progressive Web App in React]]></title>
            <link>https://medium.com/truth-labs/building-a-progressive-web-app-in-react-11c77a7fccb3?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/11c77a7fccb3</guid>
            <category><![CDATA[progressive-web-app]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[react]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Fri, 04 May 2018 16:34:25 GMT</pubDate>
            <atom:updated>2018-05-25T16:01:46.444Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YBQY1RMoNDsDbw8LalJTaA.png" /><figcaption>PWA task app <a href="https://trackybara.perficientdigitallabs.com/">Trackybara</a></figcaption></figure><h4>With Firebase’s new Firestore for offline support</h4><p>In case you haven’t heard, Progressive Web Apps (PWAs) are finally ready for prime time.</p><p>It might not yet be obvious to many people <a href="https://gist.github.com/sconstantinides/5b71f013f9e89ef5713e51def4fa2e36">how to install a PWA</a>, but if you’ve done it once you won’t forget it and it’s simpler than using an app store.</p><p>There are many reasons to start building PWAs and converting current responsive web apps, including:</p><ul><li><strong>Offline support:</strong> Service workers keep much of your application running smoothly with a spotty internet connection or none at all. Once users are back online, their data syncs behind the scenes.</li><li><strong>A truly native looking and feel:</strong> Your app is launched from a custom app icon and can function in fullscreen.</li><li><strong>Breaking free of the app store:</strong> As opposed to native apps, there’s no approval process for PWAs so no delay for new features or bug fixes.</li><li><strong>Progressive enhancement:</strong> If users don’t install your app it will still function as a normal web application. Hence the “progressive” in Progressive Web App!</li></ul><h3>✨ The magic ✨</h3><p>You need 4 things to make a PWA: HTTPS hosting, a service worker, a properly configured index.html file, and a web app manifest.json file. The examples below are geared towards React but are similar for any framework.</p><h4>Step 1: HTTPS hosting</h4><p><a href="https://firebase.google.com/docs/hosting/">Firebase provides free SSL certificates and freemium hosting</a>. Another great choice is <a href="https://www.netlify.com/">Netlify</a>.</p><h4>Step 2: Set up a service worker</h4><p>If you want your app to work offline once installed, you’ll need a service worker. Create React App <a href="https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#making-a-progressive-web-app">makes one for you</a>, but you can always configure your own <a href="https://github.com/goldhand/sw-precache-webpack-plugin">using something like this</a>. Learn more about <a href="https://www.netlify.com/blog/2017/10/31/service-workers-explained/">how they work</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*b4BGF3CfSzS3TMUxDwPhZQ.png" /><figcaption>Your index.html and manifest.json let you customize your app icon and splash screen for any device.</figcaption></figure><h4>Step 3: Configure your index.html file</h4><p>A challenge in configuring your app is understanding the difference in how iOS and Android use the meta tags in index.html and the web app manifest. We’ll explain how each option is used below.</p><p>One painful part to this process is creating the massive number of splash screens for iOS: one for each screen size and orientation you want to support, otherwise users will see a white screen while your app loads.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3ce41435ef454202876fbf453718f5e9/href">https://medium.com/media/3ce41435ef454202876fbf453718f5e9/href</a></iframe><h4>Step 4: Configure your manifest.json file</h4><p>Create React App makes a manifest.json file in your public directory, but if you don’t have one yet create it and make sure it’s referenced in index.html (lines 19–20 above).</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/0df9f0d5035885b0a89ac0a60ffc3b87/href">https://medium.com/media/0df9f0d5035885b0a89ac0a60ffc3b87/href</a></iframe><h3>Spice it up with Firebase and localStorage</h3><p>With a service worker, your app loads without a network connection, however it won’t have much functionality.</p><p>Enter Firebase. Firebase’s brand new Cloud Firestore improves upon their Realtime Database with <a href="https://firebase.google.com/docs/database/rtdb-vs-firestore">several enhancements</a> but most notably it will continuously attempt to sync data while offline.</p><p>To make sure users also *start* with data when they launch your PWA without a connection, use localStorage. Our sample React app combines these two methods to let you access tasks you’ve already created and add new ones regardless of connection status.</p><h4>👉 <a href="https://gist.github.com/sconstantinides/49d3a63611b4b445841bc7f533a062ae"><strong>See our sample React app to use Firebase with offline support</strong></a> 👈</h4><h3>Bonus: Design considerations</h3><p>Much like responsive design, PWAs offer unique design options. Should something be styled differently when viewed as an installed PWA and when viewed on the same device but in a browser?</p><p>Here are handy media queries for targeting installed PWAs:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9d4c393b3c37be0d5ecc626dab0b397e/href">https://medium.com/media/9d4c393b3c37be0d5ecc626dab0b397e/href</a></iframe><p>Similarly, to see how users are viewing your PWAs in JavaScript:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/cfb2e12bc755158a784ff4137a8ebb9f/href">https://medium.com/media/cfb2e12bc755158a784ff4137a8ebb9f/href</a></iframe><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=11c77a7fccb3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/truth-labs/building-a-progressive-web-app-in-react-11c77a7fccb3">Building a Progressive Web App in React</a> was originally published in <a href="https://medium.com/truth-labs">Perficient Digital Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[7 design tips to keep developers happy]]></title>
            <link>https://medium.com/truth-labs/7-design-tips-to-keep-developers-happy-30119b1687d7?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/30119b1687d7</guid>
            <category><![CDATA[design]]></category>
            <category><![CDATA[sketch]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[ux]]></category>
            <category><![CDATA[css]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Mon, 29 Jan 2018 20:01:38 GMT</pubDate>
            <atom:updated>2018-01-29T20:14:20.009Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6Sy8jkjdlRMCZMVCVNHJFQ.jpeg" /></figure><p>My role as a hybrid designer and front-end engineer gives me a unique opportunity to see how the sausage is both designed and made. Our process at <a href="https://perficientdigitallabs.com/">Perficient Digital Labs</a> varies by project, but is often:</p><ul><li>📓 Gather requirements through 👩‍🔬 research &amp; interviews</li><li>💡 Brainstorm and ✏️ draw potential solutions</li><li>🖥 Create wireframes and mockups in Sketch</li><li>🤹‍ Bring these to life with prototypes in InVision</li><li>🤓 Code a refined prototype or production app in Angular or React</li></ul><p>This workflow always involves a handoff from designers to front-end developers, sometimes several if we’re working in an iterative sprint style. Below are some tips for making this transition as smooth as possible.</p><h3>☝ Tip 1: Size your artboards correctly</h3><p>Let’s say you’re designing for an iPhone 6/7/8 (they’re all the same size). You select the handy iPhone 8 artboard size (375px by 667px) and go. Easy, right?</p><p>Well…it depends. If it’s a native app you probably want to account for the 40px tall status bar at the top of the screen. But mobile web is where it gets tricky. The visible area on mobile Safari is only 559px tall (growing to 627px as you scroll). So that design you thought fit comfortably above the fold might not, leading to an awkward QA process.</p><p>The easiest solution? Create your own custom presets in Sketch for common desktop and mobile sizes.</p><h3>☝ Tip 2: Only use opacity when it’s needed</h3><p>Want a medium gray? Make it a solid color, not a 30% opacity black over a white background. Opacities can live in several places: on the alpha channel of the color, on the opacity of a fill, and on the opacity of the element itself. And that doesn’t even count groups! This makes it hard to compute the actual resulting color when coding it up.</p><p>There are cases where opacities need to be used, like a modal overlay, but make sure before moving those sliders.</p><h3>☝ Tip 3: Keep borders on the inside</h3><p>Most developers prefer something called “border-box box-sizing.” What this means is that if you put borders on the inside, your devs can simply copy/paste these values. However, if you put borders on the outside, it takes math to code it up. Less math = less mistakes.</p><p>Also, Sketch ignores outside borders when aligning elements and creating symbols. Probably not what you want.</p><h3>☝ Tip 4: Version control is your friend</h3><p>Final-v6-for-real-this-time.sketch anyone? A version control tool like <a href="https://www.goabstract.com/">Abstract</a> will make your life easier in many ways, but one benefit is each revision automatically tracks what changed. This keeps you and fellow designers on the same page and keeps devs from sorting through every artboard to make sure they grabbed all the latest edits.</p><h3>☝ Tip 5: Do a design audit</h3><p>There are several tools that automatically generate style guides for Sketch. <a href="https://labs.invisionapp.com/craft">Craft’s Library</a> is my favorite. Not only will this make your life easier while designing, but you can quickly scan the generated styles to see if you have two slightly different fonts or colors anywhere in your document.</p><p>You’re probably already taking advantage of Sketch’s symbols and styles (because you don’t hate yourself), but making sure to use them consistently is a huge time saver for developers.</p><h3>☝ Tip 6: Two lines to solve font woes</h3><p>Sometimes during QA, the fonts actually look like the mockups across browsers and devices. But more often than not, something looks too bold here or too thin there.</p><p>The issue is with the different anti-aliasing algorithms used and that the default values aren’t necessarily consistent. If things look off, have your dev try adding these CSS styles:</p><p><em>body {<br> -webkit-font-smoothing: antialiased;<br> -moz-osx-font-smoothing: grayscale;<br>}</em></p><p>Pro tip: validate your font and weight choices on all the browser and device combinations you’re targeting <em>before</em> finalizing your style guide.</p><h3>☝ Tip 7: Unsure? Ask!</h3><p>Some things seem hard to code and are actually reasonable. Some things <em>should</em> be easy to code but unfortunately aren’t. One example is truncating text with an ellipsis: easy peasy for a single line, not so much for a paragraph.</p><p>Before you head down one of two potential paths, ping your dev to see if one solution would require significantly more work than another. It never hurts to get a second opinion and devs often like to be included in the creative process.</p><p>Have any tips of your own? Let me know 🗣</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=30119b1687d7" width="1" height="1" alt=""><hr><p><a href="https://medium.com/truth-labs/7-design-tips-to-keep-developers-happy-30119b1687d7">7 design tips to keep developers happy</a> was originally published in <a href="https://medium.com/truth-labs">Perficient Digital Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Web tech in plain English]]></title>
            <link>https://medium.com/@stothelios/web-tech-in-plain-english-ec6baede8f57?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/ec6baede8f57</guid>
            <category><![CDATA[design]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[tech]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Tue, 05 Jul 2016 12:56:57 GMT</pubDate>
            <atom:updated>2017-12-24T20:41:28.008Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XtnYegzS5oCV0xWGEgNaiQ.jpeg" /></figure><p>Do your eyes glaze over at the mention of an API? Have no idea if cookies are good, bad, or just delicious?</p><p>Web development is complicated. And there’s a lot of confusing terminology surrounding it. So here’s a short list of concepts, tools, and languages written in plain English for designers, project managers, and other non-tech folk.</p><p>This is primarily for those who want to become more comfortable talking about web tech and to developers. If you want to learn how to code, <a href="https://medium.freecodecamp.com/the-practical-guide-to-becoming-a-professional-web-developer-2f255bc25c90">take a look at this extensive guide</a>.</p><h4>The Basics</h4><p><strong>Web apps<br></strong>Run in a browser (Chrome, Safari, etc.) on your computer or mobile device. Examples include Google via google.com and Facebook via facebook.com.</p><p><strong>Mobile apps<br></strong>Are downloaded from an app store. Mobile apps don’t run inside a browser. Examples include Snapchat and Candy Crush.</p><p><strong>Desktop apps<br></strong>Are downloaded onto a desktop or laptop computer. Desktop apps don’t run inside a browser. Examples include your browser itself, iTunes, and Word.</p><p><strong>Native apps</strong><br>Can describe <em>mobile apps</em> or <em>desktop apps</em>.</p><p><strong>Client &amp; Server<br></strong>The client (aka client-side) is the user’s computer. The server (aka server-side) is a remote computer where your application is running.</p><p><strong>Front-end development<br></strong>Writing code that runs on the <em>client</em>, including <em>HTML</em>, <em>CSS</em>, and <em>JavaScript</em>.</p><p><strong>Back-end development<br></strong>Writing code that runs on the <em>server</em>. Examples of back-end languages include <em>Java</em>, <em>Ruby</em>, <em>Python</em>, and <em>PHP</em>.</p><p><strong>Full-stack development<br></strong>Includes <em>front-end</em> and <em>back-end</em> development.</p><p><strong>APIs<br></strong>Application program interfaces are how applications communicate. APIs can be free or paid, public or private, well documented or not at all. APIs can communicate with other apps in the same organization (e.g. your mobile app communicating with your database) or across organizations (e.g. pulling data from Facebook using their API). An example is a simple weather app that takes the user’s current location and sends it to a third-party weather API. This API returns forecast data which is processed by your app to tell the user the current temperature and if they need an umbrella.</p><p><strong>Frameworks<br></strong>Code templates used to save time and benefit from established conventions. Frameworks are like pre-made pasta sauce you can customize to your own taste. They exist for the <em>front-end</em> and <em>back-end</em>.</p><p><strong>Cookies</strong><br>Small pieces of data that websites store on your computer. Each time you visit a new page on the same site, this data gets sent back to the site. One helpful use for cookies is to persist items in a shopping cart, even when you’re not signed-in. Another helpful use is letting you to avoid reentering your password once you sign-in. Cookies are (more nefariously) used by advertisers to track behavior and target ads.</p><p><strong>Content management systems<br></strong>CMSs are applications used to create and edit the text and media on your website. Their visual interface let users edit a site without writing a single line of code, after the initial setup. Wordpress is the most popular CMS.</p><p><strong>Open-source software<br></strong>Software that can be used free of charge. This includes everything from operating systems (e.g. Linux), to programming languages, to small bits of code. Companies that rely on proprietary software (e.g. Twitter) often still contribute to open source (like Twitter’s <em>Bootstrap framework</em>).</p><p><strong>Responsive design</strong><br>The ability to alter the contents of a page based on the viewing device. This is most often done using <em>CSS</em> and the browser’s current width. For example, a wide screen (desktops &amp; large laptops) may show 3 columns of content and 1 column of ads, a medium screen (small laptops &amp; tablets) may show 2 longer columns of content and 1 column of ads, and a small screen (phones) may show one long column with content and ads combined.</p><h4>Common Tools &amp; Activities</h4><p><strong>Text editor<br></strong>Where most code is actually written. Can be as simple at TextEdit but many developers like the customization available in tools like Sublime Text and Atom.</p><p><strong>Browser inspector<br></strong>Allows you to inspect the <em>HTML</em>, <em>CSS</em>, and <em>JavaScript</em> on a page, as well as insert your own code for testing. The inspector is primarily used for debugging.</p><p><strong>Command line<br></strong>A desktop application for directing your computer (or a remote computer) to do many things, including downloading code and managing <em>git</em>.</p><p><strong>Git<br></strong>A version control system for code. This allows people to work on the same files simultaneously and smartly combine their edits. It also provides a comprehensive store of all changes and versions for every file in a project. GitHub is the most popular service for hosting version-controlled projects.</p><p><strong>Pair programming<br></strong>When two programmers code side-by-side, taking turns typing. This extra set of eyes can help spot errors and improve the quality of the code.</p><p><strong>Refactoring<br></strong>Rewriting code to be simpler to understand or more easily maintained. Similar to editing an essay to be more clear and concise.</p><p><strong>Sprints<br></strong>Typically a 1–3 week development cycle with a list of tasks to accomplish set from the start.</p><p><strong>Stack Overflow<br></strong>A free Q&amp;A site for programming-related questions. Many searches for programming-related questions will lead you there.</p><h4>Languages, Libraries, &amp; Frameworks</h4><p><strong>HTML<br></strong>A markup language that defines the content (text, media, forms, etc.) of every webpage. HTML5 is the latest version.</p><p><strong>CSS<br></strong>A styling language that defines the look (fonts, colors, layout, etc.) of every webpage. It can also be used for simple animations. CSS3 is the latest version.</p><p><strong>Bootstrap<br></strong>A popular CSS <em>framework</em>. Defines styles for things like the layout grid, form elements, and common components. These basic styles can be overwritten to fit your brand and specific needs.</p><p><strong>JavaScript<br></strong>A unique language since it can be used both <em>client-side</em> and <em>server-side</em>. JavaScript is often used for sending or receiving data, animation, and responding to user input (e.g. validating form inputs as you type).</p><p><strong>AJAX<br></strong>A method of using <em>JavaScript </em>to communicate with a server. One use is to keep users from waiting. For example, here on Medium, your feed loads with several articles in it, but waits to load the next “page” until you’ve scrolled near the bottom. Another use is to avoid unnecessarily reloading a page. For example, when writing a blog post on Medium, they autosave as you type without reloading the page each time.</p><p><strong>jQuery<br></strong>A popular JavaScript library. Provides methods to make <em>AJAX</em> calls, edit the content of the page, and detect user actions.</p><p><strong>Java<br></strong>Has no relation to JavaScript. Can be used as a <em>server-side</em> language and is the only option for creating <em>native</em> Android applications.</p><p><strong>Objective-C &amp; Swift<br></strong>The two language options for programming <em>native</em> iOS applications.</p><p><strong>Ruby, Python, &amp; PHP<br></strong>Just a few of the many server-side languages. Ruby on Rails is the most popular <em>framework </em>for Ruby.</p><p><strong>Find this useful?</strong> Click the ♡ below to help others see it.<br><strong>Suggestions? Anything unclear?</strong> Post your thoughts below.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ec6baede8f57" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Keep a pencil handy]]></title>
            <link>https://medium.com/@stothelios/keep-a-pencil-handy-3b8d2a9dea31?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/3b8d2a9dea31</guid>
            <category><![CDATA[design]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[ux]]></category>
            <category><![CDATA[drawing]]></category>
            <category><![CDATA[design-thinking]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Sat, 02 Jul 2016 16:52:35 GMT</pubDate>
            <atom:updated>2016-07-03T15:21:00.019Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lhyq5UlJMbiVE0PyDVEy0Q.jpeg" /></figure><h4>A blank page is less intimidating than a blank screen</h4><p>My urge is often to start wireframing in Sketch. But even if you’re keeping things simple — only using basic shapes and grayscale — pencil on paper is a better place to start.</p><p>Sketching comes easier to some. If you <em>like</em> drawing, it’s instinctual to start there. But I’ve never drawn for fun and certainly am not skilled at it.</p><p>None of that matters. Sketching allows you to produce designs faster than a computer. More speed prevents second-guessing your ideas and leads to more unique concepts and thorough exploration.</p><p>Best of all, you don’t have to show these incomprehensible scrawls to anyone. You can always tidy up your ideas later using Sketch.</p><p>The idea of starting with paper isn’t new, but it’s important enough to reread until you actually start believing it.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3b8d2a9dea31" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Where does conversational UI leave design?]]></title>
            <link>https://medium.com/truth-labs/where-does-conversational-ui-leave-design-7044c395be9f?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/7044c395be9f</guid>
            <category><![CDATA[design]]></category>
            <category><![CDATA[ux]]></category>
            <category><![CDATA[user-experience]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Mon, 29 Feb 2016 17:58:46 GMT</pubDate>
            <atom:updated>2016-03-04T05:06:21.715Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e0qX3WkY8k4y_RBUL4dSjA.png" /></figure><h4>What we learned making a bot that talks like a person</h4><p>It’s 12:30pm at Truth Labs which means we’re standing outside trying to decide where to go for lunch. We’re a creative bunch, so this seemed like a problem we should be able to solve. And a perfect opportunity to take a shot at experimenting with conversational UIs.</p><h4>First, some terminology</h4><p>Graphical user interfaces (GUIs) are a visual way to interact with a device. Instead of typing specific (and often cryptic) commands in a terminal, GUIs let users interact with files and programs by clicking and dragging.</p><p>Conversational user interfaces (CUIs) are a spoken or written way of interacting with a device. CUIs aren’t completely new, but they’re becoming smarter, more natural, and — therefore — more useful.</p><h4>If you build it, they won’t come</h4><p>Companies are realizing it’s hard to get users to download and use their apps. More than half of the time we spend on our phones is <a href="http://www.experian.com/blogs/marketing-forward/2013/05/28/americans-spend-58-minutes-a-day-on-their-smartphones/">talking, texting or in email</a>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*lFHFFeqwDtHeNVLvTCWATw.png" /><figcaption>Talking, texting, and email take up 55% of the time spent on our phones.</figcaption></figure><p>Here’s where CUIs come in: since users already spend so much time in apps like Slack, Facebook Messenger, and even plain-old email, <a href="https://medium.com/chris-messina/2016-will-be-the-year-of-conversational-commerce-1586e85e3991">why not integrate your app inside these platforms</a>?</p><p>Sure, users still have to find and install your app, but you can now interact in a more natural way. Users are more likely to use your service if it doesn’t break their workflow by requiring them to switch apps.</p><h3>Making Lunchy</h3><p>Lunchy is a <a href="https://medium.com/u/26d90a99f605">Slack</a> bot that smartly suggests where to go for lunch. He lives on a Node server hooked up to Slack using <a href="http://howdy.ai/botkit/">Botkit</a>. The first step was getting him some data. We created a simple database using <a href="https://fieldbook.com/">Fieldbook</a> and added the 30 carry-out restaurants within 0.5 miles of our office.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/528/1*Ch14AESa1EXO6WV0svU21g.gif" /><figcaption>Finding a place to eat. Snowflakes let you know suggestions are nearby due to the weather.</figcaption></figure><p>Lunchy started out being able to understand a few commands:</p><ul><li><strong>Suggesting a restaurant<br></strong>Typing something like “what’s for lunch?” or “where should we eat?” results in Lunchy responding with a suggestion.</li><li><strong>Responding to feedback</strong><br>If you don’t like a suggestion, typing “what’s for lunch” again isn’t the most natural solution. We could have gone with something like “nah” or “try again” but even easier is responding with a single click. A 👎 on a recommendation results in a new one.</li><li><strong>Finding a location</strong><br>Responding to a suggestion with “where’s that?” or “show me a map” results in Lunchy sending a link to the restaurant.</li><li><strong>Telling a joke</strong><br>Just because he’s a robot doesn’t mean he can’t have a personality. We gave Lunchy a few jokes to keep up his sleeve. My personal fav: “What’s better than MacOS? TacOS.”</li></ul><h3>There’s still a design process</h3><p>The “no UI” buzz may sound worrying to designers, but “no UI” is a misnomer. Conversational UIs are interfaces, just — well — conversational.</p><p><strong><em>How are conversations started? What options do users have? How do they discover these options? What happens when people get confused? </em></strong>The role for intuitive design in conversational UIs is even more important without any visual affordances to fall back on.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/330/1*uE3pWmkgVkCS6fTgoiFuxA.png" /></figure><h4>Don’t be a robot</h4><p>During our process, a surprising finding was that personality matters. The Slack API is fast, meaning Lunchy replied almost as soon as you finished typing.</p><p>Part of the magic was lost. Lunchy felt like a robot, not a helpful member of the team who happened to love lunch.</p><p>The fix? Simulate that Lunchy was “typing” and delay his response by a mere second.</p><h4>Make sure you solve the problem at hand</h4><p>At this point, Lunchy was a personable bot that drew suggestions from a digital hat. He’d find you somewhere to eat, but not necessarily somewhere you’d like. The next step was making him smart.</p><p>Recommendation algorithms live on user data. The data drive suggestions and let you evaluate an algorithm’s effectiveness.</p><p>We were already providing feedback on what we liked (restaurants skipped less often &gt; restaurants skipped more often), we just had to start storing this information in our database. Lunchy could now use an algorithm to prioritize our favorite spots and stop recommending places we never went.</p><h4>Try to anticipate user needs</h4><p>It’s the middle of winter right now and we quickly found suggestions more than a few blocks away were often getting passed — not because we didn’t like the food — but because Chicago winters are not so forgiving. The fix? When making a suggestion, Lunchy quickly checks to see if it’s bitterly cold or raining (using <a href="https://developer.forecast.io/">Forecast</a>). The worse the weather, the closer the recommendation.</p><p>Several days into our experiment we noticed a familiar trend reemerge: the team congregating around a computer or phone to ask Lunchy where to go. Automating repetitive tasks like this are what computers have been doing for decades. Since we always go for lunch around the same time, we now have Lunchy send a friendly ping every day at noon.</p><h3>What’s next?</h3><p>There are a couple areas we’d like to explore such as menu suggestions using Yelp and automating orders for pickup or delivery. We’ll post our updates…</p><p>Lunchy was a fun experiment to spend a few days between projects on. But more than that, he’s added some spontaneity to our daily routine. Welcome to the team our brown-bagged friend.</p><p><strong>Enjoy the post?</strong> Click the ♡ below.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7044c395be9f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/truth-labs/where-does-conversational-ui-leave-design-7044c395be9f">Where does conversational UI leave design?</a> was originally published in <a href="https://medium.com/truth-labs">Perficient Digital Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Sketch plugin: Unlock all layers]]></title>
            <link>https://medium.com/truth-labs/sketch-plugin-unlock-all-layers-1ff9252f0689?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/1ff9252f0689</guid>
            <category><![CDATA[design]]></category>
            <category><![CDATA[sketch]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Mon, 19 Oct 2015 19:49:18 GMT</pubDate>
            <atom:updated>2017-03-09T17:27:14.207Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a3eNmMNJ8eNhI1UWljw_cA.png" /></figure><p>We’re big fans of Sketch. We use it for everything from low-fidelity wireframes to pixel-perfect mockups.</p><p>However, many of us who cut our teeth in Illustrator find that while Sketch rocks 99% of the time, there are still a few workflows that, well, need work.</p><p>Specifically: it’s a pain to unlock layers. Illustrator has a handy keyboard shortcut but Sketch doesn’t. And it seems to be a common ask <a href="https://twitter.com/yottoy/status/357056903051870209">amongst</a> <a href="https://twitter.com/edelagrave/status/655082979878961153">the</a> <a href="https://github.com/bomberstudios/sketch-commands/issues/35">community</a>.</p><p>So we made a plugin to do just that. <strong>To install it, simply </strong><a href="https://github.com/truthlabs/sketch-unlock-all-layers/archive/master.zip"><strong>download the zip</strong></a><strong> and double-click the “.sketchplugin” files.</strong> Keep reading to learn more.</p><figure><a href="https://github.com/truthlabs/sketch-unlock-all-layers/archive/master.zip"><img alt="" src="https://cdn-images-1.medium.com/max/372/1*g0Cn7GYIuDmrtWyCGuGZUg.png" /></a></figure><h4>The problem</h4><p>You’re in the flow, navigating your artboard when you decide to shift a few items around. You drag-select them only to find that some things are locked:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/545/1*yTgN273xB2FdX8mdF5xu-w.gif" /><figcaption>Trying to move layers when some are locked</figcaption></figure><p>So now you need to find the locked layers. You look for the little lock in the layers palette but you’re not sure which is which, because you didn’t name your layers… (╯°□°）╯︵ ┻━┻</p><p>Instead you try a group-select to toggle the locks, but that toggles unlocked layers too. Boo. You have to select each one individually, without the pesky scrollbar getting in the way:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/202/1*dIwuYuWCrfv9s5Vs2e9lOA.gif" /><figcaption>Toggle locked &amp; unlocked? Not want we want…</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/201/1*ZyD4_QUZc-zxkOaamiVc8A.gif" /><figcaption>Pardon me scrollbar, could you just…</figcaption></figure><h4>Our solution</h4><p>We wrote a simple plugin to unlock all layers on the current artboard with a keyboard shortcut. <strong>To install it, simply </strong><a href="https://github.com/truthlabs/sketch-unlock-all-layers/archive/master.zip"><strong>download the zip</strong></a><strong> and double-click the “.sketchplugin” files.</strong> Check out our code on <a href="https://github.com/truthlabs/sketch-unlock-all-layers">GitHub</a>.</p><figure><a href="https://github.com/truthlabs/sketch-unlock-all-layers/archive/master.zip"><img alt="" src="https://cdn-images-1.medium.com/max/372/1*g0Cn7GYIuDmrtWyCGuGZUg.png" /></a></figure><p>Here’s a screen capture of the plugin in action:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/688/1*4sfR4GQDIBLnAC1gc6j2-w.gif" /><figcaption>Using ⌘⌥L quickly unlocks all layers on the selected artboard</figcaption></figure><p>You can access the plugin via the plugins menu or keyboard shortcut: ⌘⌥L (Command + Option + L). You’ll know its worked when you see the notification at the bottom of the screen.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/293/1*3ioW7_DbwceOYgPkf7sdKw.png" /><figcaption>Keyboard shortcut Command + Option + L</figcaption></figure><p>It’s worth mentioning that adding keyboard shortcuts to your plugins is incredibly easy via <a href="https://articles.sketchtricks.com/shortcuts-for-sketch-plugins-bbcd4f5343bd">method a</a> or <a href="http://www.sketchapp.com/support/developer/01-introduction/03.html">method b</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1ff9252f0689" width="1" height="1" alt=""><hr><p><a href="https://medium.com/truth-labs/sketch-plugin-unlock-all-layers-1ff9252f0689">Sketch plugin: Unlock all layers</a> was originally published in <a href="https://medium.com/truth-labs">Perficient Digital Labs</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[My top 5 Google Fonts]]></title>
            <link>https://medium.com/@stothelios/my-top-5-google-fonts-92fd7838863f?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/92fd7838863f</guid>
            <category><![CDATA[typography]]></category>
            <category><![CDATA[design]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Sun, 13 Sep 2015 21:39:57 GMT</pubDate>
            <atom:updated>2015-09-13T21:39:57.248Z</atom:updated>
            <content:encoded><![CDATA[<h4>Why use Google Fonts anyway?</h4><ul><li>They’re free for commercial use</li><li>They’re super simple to set up</li><li>They can be quite fast (common fonts are likely cached)</li></ul><p>Love ‘em or hate ‘em, Google Fonts are everywhere. Here are my favorites…</p><h3><a href="https://www.google.com/fonts/specimen/Lato">Lato</a></h3><p>Looking for a sans-serif? Lato is a great place to start. It’s a versatile font available in 5 weights. One of my favorite uses for Lato is in all-caps with loose tracking, as on <a href="http://www.steliosconstantinides.com/">my personal site</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gcakr1n62zXurE8UPg3tQg.png" /></figure><h3><a href="https://www.google.com/fonts/specimen/Source+Sans+Pro">Source Sans Pro</a></h3><p>How about another versatile sans-serif? Source Sans Pro is available in a whopping 6 weights and even comes in a <a href="https://www.google.com/fonts/specimen/Source+Serif+Pro">serif version</a>. It shines in headings or body copy.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XEf2-jESnlXMpi9BQ5EjwA.png" /></figure><h3><a href="https://www.google.com/fonts/specimen/Merriweather">Merriweather</a></h3><p>Merriweather is a workhorse serif available in 4 weights. It’s a joy to read, even at small sizes. In fact, I use it for the body copy of <a href="http://www.steliosconstantinides.com/portfolio.html">my portfolio</a>. Merriweather also comes in a <a href="https://www.google.com/fonts/specimen/Merriweather+Sans">sans-serif</a> version.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RQh8ANAIUOR1Ujc8wZ_ANw.png" /></figure><h3><a href="https://www.google.com/fonts/specimen/Playfair+Display">Playfair Display</a></h3><p>Playfair Display is a distinctive serif available in 3 weights and with small caps. The font is full of character (no pun intended) with the bold weights and italics being especially suitable for striking headings.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8E3y4JsE9UuWPm9VIym75A.png" /></figure><h3><a href="https://www.google.com/fonts/specimen/Oswald">Oswald</a></h3><p>Oswald is a narrow sans-serif available in 3 weights. It really only works for headings but looks wonderful in all-caps where it’s reminiscent of old newspaper headlines.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bJtHr4aRHpPdI4Y74u9RyQ.png" /></figure><p>What are your favorites that I left out?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=92fd7838863f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Wizard of Oz Your Application]]></title>
            <link>https://medium.com/@stothelios/how-to-wizard-of-oz-your-application-3a2e005ad3ae?source=rss-1664dc180de9------2</link>
            <guid isPermaLink="false">https://medium.com/p/3a2e005ad3ae</guid>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[design]]></category>
            <category><![CDATA[ux]]></category>
            <dc:creator><![CDATA[Stelios Constantinides]]></dc:creator>
            <pubDate>Tue, 04 Aug 2015 18:08:59 GMT</pubDate>
            <atom:updated>2015-08-04T18:11:21.751Z</atom:updated>
            <content:encoded><![CDATA[<p>Wizard of Oz prototyping is the process of making something manual appear automatic. The term comes from the novel and film, where the wizard turns out to be a man behind a curtain.</p><p>So what does this have to do with software? A big component to Agile and lean development is to minimize your build to learn ratio. That is, to build as little as possible to learn as much as you can.</p><p>This can be easier said than done, so let’s look at some real-world examples.</p><h3>If I build it, will they come?</h3><p>I attended a great talk by <a href="https://twitter.com/usabilityhero">Angelique Rickhoff</a> the other day where she discussed UX research at Solstice Mobile.</p><p>Angelique was tasked with designing an internal app that gave salespeople information on clients right before a meeting. At this point there were two unknowns: Would people use the service and what content was valuable?</p><p>Her first step was talking to potential users, but there’s always a difference between what people say and what they actually do. So Angelique’s team didn’t build anything. Yet. Before each meeting, they manually scraped information to compose their messages.</p><p>These messages contained links to things like “recent tweets” and the “latest earnings report.” They could have easily embedded this content, but there was a reason they linked to it: so they could track what was clicked.</p><p>By analyzing email open rates and what content was actually viewed, Angelique and her team determined what was and wasn’t worth building.</p><h3>Ideas to get you thinking</h3><h4><strong>Bringing data into your app</strong></h4><p>Integrating with third-party APIs and parsing various formats is incredibly time consuming. And you might not know what users need support for.</p><p>Instead, have users upload their data (XLS, CSV) and tell them their data is being processed while you work to manually create items (users, products, whatever) in the background. This helps you prioritize what to actually build support for.</p><h4><strong>Testing an algorithm</strong></h4><p>Take the dating app Coffee Meets Bagel, where users are matched with one potential date each day. I’m sure they have an automated system now, but I’d be surprised if they didn’t start by reading profiles and matching users by hand.</p><p>Even if your algorithm is too complicated to fake, running the code yourself let’s you do a sniff test on the results before showing them to the user.</p><h4><strong>What else?</strong></h4><p>Have any Wizard of Oz examples of your own? I’d love to hear them.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3a2e005ad3ae" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>