Posts Tagged:app

rfp-robotRFP ROBOT: Website Request for Proposal Generator

The time has come for a new website (or website redesign), which means you need to write a website request for proposal or web RFP. A Google search produces a few examples, but they vary wildly and don’t seem to speak really to your goals for developing or redesigning a new website. You need to write a website RFP that will clearly articulate your needs and generate responses from the best website designers and developers out there. But how?

Have no fear, RFP Robot is here. He will walk you through a step-by-step process to help you work through the details of your project and create a PDF formatted website design RFP that will provide the information vendors need to write an accurate bid. RFP Robot will tell you what info you should include, point out pitfalls, and give examples.


Your Best Investment Ever

This was originally shared via my newsletter. Feel free to subscribe. Hey folks, Wow, has it really been that long since I sent you one of these? Yes, yes it has… on May the 4th actually. And that was a pretty important day, by the way… I had publicly revealed MNML App and wanted to share it with the world. I’m glad it’s out and I’m glad folks are finding it useful, naturally. But that’s not what this newsletter is about, of course. I had some inspiration recently that I wanted to share with you and I thought was important enough to open up the newsletter editor and jot a few thoughts done. Well, let me be even more honest… these thoughts (and that’s the right thing to call them) are much less inspiration and much more of a simple reminder of something that you and I already know about:…

Read More →

Server-Side React Rendering

React is best known as a client-side JavaScript framework, but did you know you can (and perhaps should!) render React server-side? Suppose you’ve built a zippy new event listing React app for a client. The app is hooked up to an API built with your favorite server-side tool. A couple weeks later the client tells you that their pages aren’t showing up on Google and don’t look good when posted to Facebook. Seems solvable, right? You figure out that to solve this you’ll need to render your React pages from the server on initial load so that crawlers from search engines and social media sites can read your markup. There is evidence showing that Google sometimes executes javascript and can index the generated content, but not always. So server-side rendering is always recommended if you want to ensure good SEO and compatibility with other services like Facebook, Twitter. In this…

Read More →

How to Build Your Own Alexa Service

With the recent introduction of Amazon and Google products that provide Ironman-esque voice control functionality, we’ve been wondering lately what this means for the future of human computer interactions. Always on the lookout for emerging technology to get ahead of, we decided to put a project together to see what these little devices are capable of. We had about 2 weeks before the three Viget offices were assembling for an all hands gathering, so we wanted to something both fun and interactive. What we ended up with was an Alexa service that could figure out which Viget employee you were thinking about. We called it: The Know It All Trying out our latest Viget team game using voice control. Can you guess who? More updates soon! cc @alexadevs @amazonecho #Alexa pic.twitter.com/M1YgCh3obj— Viget (@viget) June 13, 2017 There are a couple pieces to this puzzle – a Rails backend, a React…

Read More →

Enter the dot matrix

Illustration by Nate OttoTroy Henikoff was a college student in 1984 when he wrote his first program, a piece of software to help his grandfather’s steel warehouse manage their inventory. That summer project led Troy to start his own software consulting business a couple years later. This is an atypical Distance story about beginnings, endings and unexpected legacies.https://medium.com/media/e1b07d80fba4e2163e3f63e0c604a1a0/hrefTranscriptWAILIN: Troy Henikoff describes himself as an unintentional entrepreneur. Today he’s a well-known figure in Chicago’s tech scene, but when he began dabbling in computer programming and setting up his own business, there was no established startup culture for him to absorb. No networking events, no hoodies, no cliches about hustle or crushing it or changing the world. Troy’s story starts in 1984, at his grandfather’s steel warehouse on Chicago’s south side. He had just finished his sophomore year of college.TROY HENIKOFF: So that summer when I got to Chicago, I was given a bunch…

Read More →

Kotlin: It’s the little things

Kotlin has a bunch of amazing features, and certain ones tend to grab the headlines — things like extension functions, higher order functions, and null safety among them. And rightfully so — those are all incredibly powerful, fundamental features of the language upon which everything else builds on.And while I love those features, there are a handful of small things you don’t hear much about that I really appreciate on a day-to-day basis.These are simple, small niceties — the little things you do hundreds of times a day but nothing you’d consider “advanced”. They’re common sense language features that, when compared to Java, end up saving you a bunch of cognitive overhead, keystrokes, and time.Take this simple, albeit highly contrived, example:// Java1 | View view = getLayoutInflater().inflate(layoutResource, group);2 | view.setVisibility(View.GONE)3 | System.out.println(“View ” + view + ” has visibility ” + view.getVisibility() + “.”);// Kotlin1 | val view = layoutInflater.inflate(layoutResource, group)2 | view.visibility = View.GONE3 | println(“View $view…

Read More →

SUPERHUMAN Email…?

I spent the day with the fine folks at Superhuman and had the distinct pleasure of being onboarded into their new email app. I mention this in the vlog, but, I wanted to capture this moment for posterity because if they are able to move me off of the GMAIL web app after 13 years, then, it would be a literal first! I can’t overstate my commitment to the GMAIL web app after such a long time of using it. I’ve tried every available mail client and app out there but have yet to find a solution that matches the speed and performance of the google’s web service. It’s not that it’s perfect, mind you… it’s just that it’s good enough to get the job done and after 13 years I’ve pretty much resigned myself to it as being the defacto email service. But Superhuman is up for the challenge and I’m quite…

Read More →

Using Mixins in Vue.js

It’s a common situation: you have two components that are pretty similar, they share the same basic functionality, but there’s enough that’s different about each of them that you come to a crossroads: do I split this component into two different components? Or do I keep one component, but create enough variance with props that I can alter each one? Neither of these solutions is perfect: if you split it into two components, you run the risk of having to update it in two places if the functionality ever changes, defeating DRY premises. On the other hand, too many props can get really messy very quickly, and force the maintainer, even if it’s yourself, to understand a lot of context in order to use it, which can slow you down. Enter mixins. Mixins in Vue are useful for writing in a functional style because ultimately, functional programming is about making…

Read More →

Using Microcosm Presenters to Manage Complex Features

We made Microcosm to help us manage state and data flow in our JavaScript applications. We think it’s pretty great. We recently used it to help our friends at iContact launch a brand new email editor. Today, I’d like to show you how I used one of my favorite features of Microcosm to ship a particularly gnarly feature. In addition to adding text, photos, and buttons to their emails, users can add code blocks which let them manually enter HTML to be inserted into the email. The feature in question was to add server-side code santization, to make sure user-submitted HTML isn’t invalid or potentially malicious. The logic is roughly defined as follows: User modifies the HTML & hits “preview”; HTML is sent up to the server and sanitized; The resulting HTML is displayed in the canvas; If the code is unmodified, user can “apply” the code or continue editing;…

Read More →

What UX Designers Can Learn From IKEA

I recently moved and ended up buying a lot of IKEA furniture. While assembling the different pieces, I began to notice how IKEA devises their instructions to gently lead builders through complex tasks.  One of the customer’s first interactions with an IKEA product will be to build it, and this experience will likely shape the customer’s lasting impression of both that piece of furniture and IKEA as a brand. This is a high-stakes interaction, and there are so many places where it could go so wrong. Poorly-written instructions may very well end with the customer either throwing up their hands or throwing a hammer at the piece in frustration. IKEA understands this and carefully crafts their instructions to guard against rage-fueled furniture destruction. They are written (or drawn really) to guide a novice through the complex process of creating functional furniture out of a pile of otherwise inscrutable panels and hardware. But they don’t just instruct. They are devised to positively shape the assembly experience, hopefully…

Read More →

I don’t have enough

It’s been a rough week. We’ve been migrating our file storage for Highrise and you can imagine how difficult that is for a product running since 2007 with millions of users.And it wasn’t going that well.Fortunately, we had enough backup procedures in place to handle most problems. But still, on Thursday morning at 3AM I was nervously watching the error queue for more fires.How’d I get here?I don’t mean that in a negative sense. This barely raised my blood pressure. I’ve been in this same situation many times before. I and our CTO, Michael Dwan, cooly fixed our problems in the middle of the night.But, I mean, how on earth did I get to this point where I’m helping successfully troubleshoot this crazy large system of technology and code when…All I was trained to do was Chemistry?I remember the panic I had nearing the end of college. I had just spent 4 years and tons of…

Read More →

Kotlin makes me a happier (better) programmer

What’s Kotlin’s best feature? Creating programmer happiness.There’s been a lot of action around Kotlin lately. So one question you’ll often hear is “What’s your favorite Kotlin feature?”And while there are many wonderful things about the language, for me it isn’t about any single technical feature.My answer? It makes me happy.Writing code that’s concise, clear, and expressive makes me happy.Focusing on creative solutions to business problems — not fumbling with boilerplate and ceremony — makes me happy.Feeling an intense motivation to learn — something that was sorely missing in the Java days — makes me happy.And that’s super important. Because being happy isn’t just good for the soul. It’s great for your programming skills too.As DHH astutely pointed out many years ago in Getting Real:Would you truly be happy working in this environment eight hours a day? This is especially important for choosing a programming language.Happiness has a cascading effect. Happy programmers do the right thing. They write simple, readable code. They take clean, expressive,…

Read More →

Celebrate the web by using another browser than Google’s Chrome

I like Chrome. It’s a great browser. But it’s not so good that it deserves to be the only browser. And that’s the unfortunate opportunity we, people browsing the web, are opening for Google by so overwhelmingly choosing to use it in face of the alternatives.And this is what we get by doing so: DirecTV just announced that they’ll be turning their website into a Chrome desktop app on June 1st. They don’t actually say that, but that’s what they mean. You can’t call directvnow.com a website if it only works in a single browser.You don’t have to be that old to remember the dark days when Internet Explorer strangled the web by its utter domination. When large swaths of the web was only accessible through Redmond. Those were not happy days.Ironically, it was Google’s Chrome that helped fight back the scourge of Internet Explorer’s monopoly. Well, that plus the utter neglect…

Read More →

Stay Away From These User Interface Design Mistakes

The importance of creating a functional site should not be ignored. No matter how the website is beautifully made, yet does not create interest in the site visitors, the website is doomed from the start. In other words, every aspect of the website must engage the visitor, and it all starts with great user interface design. The Importance of User Interface Design for Business Websites Web designers should always keep in mind to provide a functional site that can easily generate interest among the website visitors to create a steady traffic influx. The type of user interface design plays a significant role in driving in a high volume of web traffic. Therefore, carefully deciding which design to use should be of utmost concern. In this day and age, e-commerce has been enjoying a steady growth, raking in sales worth billions of dollars each year. This is the reason why a…

Read More →

The Business Cycle, Part 2

Illustration by Nate OttoIn 2010, as Worksman Cycles was emerging from the recession and ready to grow again, the maker of heavy-duty cycles saw an exciting opportunity to supply the bikes for New York City’s bike share program. But the city rejected Worksman’s proposal, and that disappointment lay the groundwork for the company to relocate to South Carolina, leaving behind the city it had been in since its founding in 1898.https://medium.com/media/901224cccd4e0495d70e91001864ff63/hrefThis is the second part of our story on Worksman Cycles. If you missed the first episode, which explores the company’s history and commitment to keep manufacturing bikes in the U.S., be sure to catch up!TranscriptWAILIN WONG: Hi everyone, it’s Wailin. This is the second episode in our two-parter about Worksman Cycles, so you should go back and listen to the previous episode if you haven’t already. It’s about how Worksman found its niche making industrial cycles and kept its manufacturing in the…

Read More →

Bringing Research Home

Any designer who has created a personal portfolio site knows that your toughest client is always yourself. Recently, we have felt particularly sympathetic to the plight of designing for yourself because we have been taking an introspective look at our own site and messaging. We wanted to understand how potential clients perceive and evaluate Viget in their search for an agency partner and the role that our website plays in shaping that impression. We wanted to see our brand and our site through the lens of a potential client, a person getting a first introduction to Viget. To do that, we applied the same research methods we employ for client projects to our own questions. Creating a Setting for Direct Feedback Having conversations with prospective and current clients is something we do all the time. Typically though, those conversations are initiated by the business development team or account managers, people who are heavily involved in…

Read More →

Using Filters in Vue.js

Filters are an interesting way to deal with data rendering in Vue but are only useful in a small amount of cases. The first thing to understand about filters is that they aren’t replacements for methods, computed values, or watchers, because filters don’t transform the data, just the output that the user sees. As of Vue 2.0, there are no built-in filters, we need to construct them ourselves. We can use filters locally or globally, but it’s worth mentioning that if you declare a Vue filter globally it should come before the Vue instance. In both cases, we would pass the value in as a parameter. //global Vue.filter(‘filterName’, function(value) { return // thing to transform }); //locally, like methods or computed filters: { filterName(value) { return // thing to transform } } Filters are used with a pipe, following the piece of data you’d like to be altered upon render.…

Read More →

Back to Top