Hacker News from Y Combinator

Syndicate content
Links for the intellectually curious, ranked by readers. // via fulltextrssfeed.com
Updated: 9 hours 8 min ago

Quantum OS - OS based on Linux which conforms to Material Design guidelines

9 hours 8 min ago

Welcome to Quantum OS! We are working on developing an operating system based upon Linux which conforms to Google’s Material Design guidelines. The focus will be on creating a stable and easy-to-use operating system with a heavy emphasis on well-thought-out design.

UPDATE: This project was originally named Quartz OS but has since been renamed to Quantum OS because of conflicts with the OS X graphics technologies.

The Desktop Shell

We plan to develop the desktop shell and applications primarily using Qt 5 and QML, which will allow us to build highly polished and dynamic user interfaces and will work well for implementing Material Design. If possible, we will build the desktop shell in as much QML as possible built on top of the QtCompositor API, which provides a Qt framework for building a Wayland compositor.

We already have some working code with an experimental desktop layout:

Applications

Our application framework will be based upon a QML UI toolkit implementing Material Design. It is written completely from scratch, and does not use QtQuick Controls, and is not a fork or theme for the Ubuntu UI toolkit. The reason for this is that we want to be able to focus specifically on implementing Material Design, which has several unique features, such as the concept of elevation. We will most likely have a Qt/Gtk theme for existing apps, but the official recommendation will be writing new applications or porting existing applications to the Material Design framework. The API will be similar to that of other QML frameworks such as the Ubuntu UI toolkit, so it will not be too difficult porting existing apps.

The UI framework itself will be cross-platform, just as Qt itself is, so apps written with it will run on OS X, Windows, or other Linux distributions. This plays well with the concept of Material Design, which aims to be a cross-platform design framework.

We also plan to support web apps and treat them as nicely as possible. This will probably involve a simple wrapper that allows web apps to have their own icon and window with no browser chrome.

The Material Design QML framework is well underway, as can be seen from this sample application:

The Base Operating System

We plan to initially leverage an existing operating system, most likely Arch or Ubuntu. Arch is a strong possibility because of the simple packaging manager, lightweight base system, and the rolling release concept. Our goal is to base our work on the latest upstream versions available, with no patches or modifications, so our work will run on any base Linux distro that supports Wayland.

We will also need to build a login manager and installer. Our plan is to write a theme for SDDM, which supports themes written in QML. We don’t have any plans for an installer yet, as that will need to wait until a base OS is chosen.

The Development Team and Code

Currently the team consists of mainly just myself (Michael Spencer/@iBeliever), though I am already getting some great design feedback and mockups from Andrea Del Sarto. Anyone who is interested in contributing code, design, feedback, or testing is welcome to contribute, though I plan to remain in control of project management to ensure that we stay focused on our goals. I am certainly open to suggestions and feedback, though!

We are hosting our code on GitHub at https://github.com/quantum-os, with the Material Design QML framework hosted at https://github.com/quantum-os/qml-material. You can also track our mockups here, though because of the flexibility and power of QML, we often work directly in code versus designing mockups first.

User-agent string changes

9 hours 8 min ago

Each release of Internet Explorer updates the user-agent string; here's what's changed recently.

Sites that rely on the user-agent string should be updated to modern techniques, such as feature detection, adaptive layout, and other modern practices.

User-agent string for IE Edge document mode

IE Edge mode in Windows Developer Preview and RemoteIE builds is a new "living" document mode designed for maximum interoperability with other modern browsers and contemporary web content. It has the following user-agent string:

Mozilla/5.0 (Windows NT 6.4; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.143 Safari/537.36 Edge/12.0

Developers preparing for Windows 10 should note that the Windows NT value in the UA string will change from 6.4 to 10.0 with the new release. If you have code that depends on the version number, we advise that you update to allow for the new value.

User-agent string changes for Internet Explorer 11

For many websites, some of the most visible changes to Internet Explorer 11 involve the user-agent string. Here's what's reported for IE11 on Windows 8.1:

Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko

If you compare the IE11 user agent string to the values reported by earlier versions of Internet Explorer, you'll find the following differences:

  • The compatible ("compatible") and browser ("MSIE") tokens have been removed.
  • The "like Gecko" token has been added (for consistency with other browsers).
  • The version of the browser is now reported by a new revision ("rv") token.

These changes help prevent IE11 from being (incorrectly) identified as an earlier version.

As with previous versions of Internet Explorer, portions of the user-agent string can vary according to the device running Internet Explorer, the operating system, and the environment. Here are a few recent examples:

  • IE11 on Windows 7 Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
  • IE11 on 64-bit Windows 8.1 Update Mozilla/5.0 (Windows NT 6.3; Win64, x64; Trident/7.0; Touch; rv:11.0) like Gecko
  • IE11 for the desktop on 64-bit Windows 8.1 Update Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko
  • IE11 for the desktop on 64-bit Windows 8.1 Update with enterprise mode enabled Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; Tablet PC 2.0)
  • IE11 for the desktop on 64-bit Windows 8.1 Update with compatibility view enabled Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; Trident/7.0; Touch)
  • Internet Explorer for Windows Phone 8.1 Update Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11; IEMobile/11.0) like Android 4.1.2; compatible) like iPhone OS 7_0_3 Mac OS X WebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.99 Mobile Safari /537.36
  • IE11 on a Lumia 928 running Windows Phone 8.1, mobile version Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11; IEMobile/11.0; NOKIA; Lumia 928) like Gecko
  • IE on a Lumia 920 running Windows Phone 8.0, mobile version Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; rv:11; NOKIA; Lumia 920) like Gecko
  • IE on a Lumia 920 running Windows Phone 8.0, desktop version Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; ARM; Touch; WPDesktop)
  • IE on Xbox One Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; Xbox; Xbox One)
  • IE on Xbox 360 Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)

These examples are taken from a range of devices running the latest updates available at the time of this writing. Many factors affect the user-agent string, including OEM vendors, carriers, network administrators, and user preferences. As a result, feature detection is considered a more effective practice than browser detection for modern websites.

To learn more about user-agent variations, see:

In addition, many browser detection techniques can lead to false positive results when browsers are updated. (For example, support for the attachEvent method does not preclude support for the addEventListener event.) For best results, detect features as you need them and use progressive enhancement to provide simplified experiences for browsers or devices that do not support your needs.

Websites, frameworks, shims, and other libraries that rely on specific user-agent values should be updated to use alternate techniques.

In rare cases, it may be necessary to uniquely identify IE11. Use the Trident token to do so.

User-agent changes in earlier versions

For Internet Explorer 10, the following changes were made to the user agent string:

  • The value of the Version token ("MSIE") was changed to "10.0".
  • The value of the Trident token ("Trident") became "6.0".
  • For Windows 8, the value of the Platform token ("Windows NT") was changed to "6.2".

Internet Explorer 9, reflected the following changes to the user agent string:

  • The application token became "Mozilla/5.0".
  • The version token was updated to "MSIE 9.0".
  • The Trident token updated to "Trident/5.0".
  • The user-agent string was modified to exclude tokens describing tools, add-ons, and other optional software.

Earlier versions of the browser included Pre-Platform and Post-platform registry value tokens in the user-agent string. However, this led to performance issues for customers of certain tools and add-ons. As a result, these tokens are now reported only through the navigator.userAgent property.

Related topics
How to detect features Instead of browsers
ASP.NET fails to detect Internet Explorer
Detecting Internet Explorer more effectively

Massive Garbage Collection Speedup in Ruby 2.2

9 hours 8 min ago

Today at RubyConf 2014, Koichi Sasada (Ko1) gave a detailed description of some massive speedups that are going to be released as part of Ruby 2.2. In addition to some minor changes to APIs and internal code cleanups, the the big wins for Ruby 2.2 appears to be a series of performance optimizations: a massive speedup of the performance of keyword arguments, the long-desired addition of garbage collection for Ruby symbols, and not least, the addition of incremental garbage collection, which promises a huge speedup in GC pause times for most Ruby applications.

Keyword Arguments on Speed

Keyword parameters are a relatively recent addition to Ruby, and with major libraries like Rails promising a migration to kwargs in upcoming versions, the performance of function calls containing kwargs is going to be important. So it was good news when Ko1 announced that these calls will be getting 15 times faster in Ruby 2.2. He showed a rather covincing test case where a test case of 10 million calls to a kwarg-containing function went from 17 seconds in Ruby 2.1, to just over 1 second in Ruby 2.2. That kind of performance jump is going to make Ruby 2.2 a required upgrade for many users of the new Ruby syntax!

Ruby Is Finallly Trashing Symbols (sorta)

The next major improvement announced by Ko1 was the long-desired, and much-needed addition of garbage collection for symbols in Ruby 2.2. This is an issue that has bitten users of Rails and other long-running server processes that make use of a lot of symbols: Ruby has historically never collected garbage symbols, which meant that they’d gradually accumulate, eating up memory until the server was restarted. In Ruby 2.2, symbols will be garbage collected like all other Ruby objects, which will come as welcome news to most Ruby users.

Ko1 gave the following example:

1 2 3 4 5 6 7 8 before = Symbol.all_symbols.size 1_000_000.times{|i| i.to_s.to_sym} # Make 1M symbols after = Symbol.all_symbols.size; p [before, after] # Ruby 2.1 #=> [2_378, 1_002_378] # not GCed # Ruby 2.2 (dev) #=> [2_456, 2_456] # GCed! All Your Garbage Are Belong to Us…Eventually

But the biggest win for Ruby users in 2.2 has to be the addition of incremental garbage collection to MRI. Users of the 2.1 series have been enjoying a speedup owing to the addition of generational collection to the interpreter, but this was only a first step. Generational GC dramatically improves the performance of minor garbage collection pauses, but the interpreter still has to “stop the world” to perform expensive, “major” collections periodically. These pauses can be very expensive — tens of milliseconds or more — so it’s been a long-held goal to reduce their cost.

In Ruby 2.2, the same amount of work is (obviously) being done, but the cost of a major collection is now spread out — hence, “incremental” garbage collection — so that the worst-case GC time is dramatically improved. Bottom line: real-world, worst-case garbage collection performance of Ruby applications should have dramatic improvements. Ko1 showed a test case where the worst-case GC pause time dropped from 16ms to about 3ms — slightly better than a 500% improvment in worst-case collection times!

(…but don’t take our word for it!)

Ko1 has been nice enough to post his slides from the talk, so you can read through all of the details on how these performance improvments are being achieved. Check them out!

We’ll keep bloging about the best stuff that’s going down at RubyConf 2014, so keep checking back! Have any burning questions about Ruby you’d like answered? Ask a question on Omniref, or Tweet @omniref, and we’ll do our best to get answers.

Update: discuss this post on Hacker News

FreeBSD: the next 10 years

9 hours 8 min ago

Uploaded on Nov 19, 2014

The slides for Jordan Hubbard's presentation, "FreeBSD: The Next 10 Years", given at MeetBSD California 2014 in San Jose. ...

The slides for Jordan Hubbard's presentation, "FreeBSD: The Next 10 Years", given at MeetBSD California 2014 in San Jose.

A recording of the talk can be found here: https://www.youtube.com/watch?v=Mri66Uz6-8Y.

Ask HN: Can we talk about FreeBSD vs. Linux

9 hours 8 min ago
Since the recent surge of interest in FreeBSD I've been curious to find out more about it. I did some Googling but couldn't find any quality articles discussing FreeBSD from the common Linux-er's perspective.

I did find this: https://www.over-yonder.net/~fullermd/rants/bsd4linux/01. It doesn't have a date, but he mentions using GCC 3.2.2, which came out in 2003, so I'd say the info is pretty out of date.

Can we share some links and knowledge?

PS: I'm sure I speak for everyone when I say I'm not remotely interested in arguing over which system is "better" - I just want to know about differences in design and unbiased identification of strengths and weaknesses.

How to reward skilled coders with something other than people management

9 hours 8 min ago

You have awesome engineers, and they want to advance in their career. Their team is growing because of advancements they've made, and you want to recognize the work they've done with something. The obvious answer is to put them in charge of the team they've built, especially as they're the de-facto leader of the team already. But is this what they want? Or just what they believe they're supposed to want? 

People Management Is A Different Skill

It's well known in the engineering world that engineers often will reach a technical peak, only to be asked to learn an entirely new set of skills, revolving around social and soft skills that they've spent the past chunk of their career probably ignoring. Building these skills involves a lot of trial and error, and above all, most of their time. Their time is now spent not coding, which is what they were originally rewarded for. Suddenly, they go from being good at their job to bad at it, which destroys confidence and job satisfaction. 

The problem here is that people management is a different skill than technical leadership. What you want is to reward someone with recognition that they are a thought leader, an exceptional performer- to make them an example of what others should strive to be. Everyone can't strive to be a manager, who would do the work? Additionally, you don't want to send the message that management, as a career, is somehow "better" than coding or anything else in the company, for that matter. 

What Is Technical Leadership?

Technical Leadership is composed of several aspects of purview over parts of job responsibility. Think about the day of a typical engineer- many decisions have to be made, problems have to be prioritized, solutions need to be found. Those are the fun parts of any engineer's job, and indeed all engineers must exercise some degree of technical leadership.

The rest of the job involves answering questions about how a thing you made works or doesn't work. Bugs need to be found and fixed. Documentation has to be written. Code has to be reviewed. Estimations must be made. Most of all, the longer an engineer remains at a company, the harder it is to find a few hours of isolation, free from interruption, to get work done. These parts, they are the worst parts of the job.

All of the fun work happens in these uninterrupted times, and these uninterrupted times happen only when your disappearance doesn't materially slow down someone else's work. Innovation happens when you have the bandwidth to hold the entire problem in your head- most of the time that takes a great deal of "load time" - research and contemplation about the problem. For introverts this means quiet, for extroverts this means dedicated time in a room of other people you work well with, thinking about the problem. 

So what gets in the way? Why can't exceptional engineers have more fun work, and have someone who is yet to be recognized do more of the less fun things? The key is in empowerment, and an engineer's ability to say "No". This isn't a function of courage, it's a function of empowerment - most exceptional engineers can't just let problems go unsolved, and if they feel responsible for a product or service, they end up chained to the project forever. Engineers often feel responsible for a project for the rest of its life, and this is exacerbated by the tendency for information to "silo" in one person, rather than distributing across a team.

How To Empower Your Technical Leaders

As a project grows, a technical leader might naturally accrue team members, and accidentally transform into a people manager. This is the biggest risk. The way to empower your technical leaders is to set expectations early and often, encouraging them to be clear about their ultimate goals, without sending the message that they will be less respected if they don't transition into people management. If their goal is to be the best programmer imaginable, or to create a system that scales to 10 million users, or to understand deep processes in the operating system, then finding ways to help them reach their goals is rewarding for everyone. 

Technical goals are easy to meet - there will be plenty of opportunities as a company grows to reward engineers with "fun" projects, and the ability to learn and grow as an engineer. Identify when someone will have to learn a lot for a role, these roles are rewarding and coveted. Also find opportunities to allow for professional development outside of your company, such as encouraging engineers to go to conferences and give talks, and become thought leaders in their field. Most engineers don't have an actionable plan for their own professional development, and so can benefit from advice on how to celebrate their accomplishments by putting them in a favorable position. This also will help you make the case for raises and bonuses, and will increase the esteem of your engineering department in general, which in turn attracts more talent. Seeing someone speak on something that interests them is the number one reason why mid-to-senior level engineers seek employment in an organization, rather than being recruited. Developing a strategy for positioning your technical thought leaders as the technical thought leaders is empowering, and it helps them empower themselves. 

The ability to say "No" is the second component of a technical leader - develop a strategy around handoffs. The objective here is to reward innovators by not chaining them to their innovations forever - it encourages those who create to continue creating. Junior developers are perfect to hand off smaller creations to, it helps them develop a sense of ownership without having to understand deeply the best practices that created the idea. Handoffs create opportunities in both directions- both for the person with more time, as well as the person accepting the responsibility. The incentives align well, but make sure there are expectations for the person receiving the responsibility- be honest about what it means for their career, and set up a strategy around them getting help with the project.

I came up with these ideas by helping Simple activate and reward their talent with things they actually want, rather than taking the obvious-but-wrong path. If you need help developing strategies for creating opportunities for your technical leaders, email me. I'm a consultant and I'm also an engineer myself, so I can provide insights into how to keep engineers happy and productive.

Show HN: Premium Medical Marijuana Subscription – SF Only

21 November 2014 - 8:00pm
An uplifting energetic "cerebral" high that is best for daytime use.

Eg. Jack Herer, Sour Diesel, Maui Waui

Full body high. Best strains for pain relief. Can produce "couch lock"

Eg. Romulan, Skywalker, Bubba Kush

Open Sourcing a Failed Startup

21 November 2014 - 8:00pm
Posted: 20 Nov 2014 Background

In late October, 2014 I announced that I would be shutting down Mogotest. After close to 5 years of operations it was clear I wouldn't be able to grow the business. I don't think it was due to lack of business opportunity, but due to some business decisions made early on that became very difficult to course correct. The exact line of reasoning that justified the shutdown is a topic for another day. The purpose of this post is to discuss what to do with the code after the fact.

Are you Going to Open Source It?

Rather predictably, one of the first things I was asked after I announced the shutdown was whether I would be open sourcing it. I was asked from current customers, by friends, by companies that were interested in the tech but never felt the need to support it by giving us business, by random people on Twitter, and so on. I had already gone through some of the thought process a priori, but I was in a different state of mind then. Getting the bombardment of questions after the announcment impacted me in ways I couldn't predict.

For some additional context, I contribute to a lot of open source projects. I don't have a "brand name" and I've never professionaly sold open source software or sold consulting services around it, but I've worked with a lot of projects. I use the Apache Software license version 2.0 for just about everything. And I guess I would consider myself more of a pragmatist than an ideologue when it comes to open source software.

With that said, my gut reaction was to not open source it. My analytical reaction was also not to open source it.

Why Not?

I'd just like to insert a standard disclaimer at this point that what follows is my own experience and my own potentially irrational thought process. If anything I say comes off as a generality, please note that my pomposity stops short of speaking for others.

First up is the emotional aspect. I had just made the extremely difficult decision to walk away from something I spent the past 5 years of my life dedicated to. During that time, I lost at least two full years of wages, pissed through my savings, and lost ~$40K USD in cash invested into the business. I battled with some form of founder depression. Stastically speaking, this was the most likely outcome, so I'm hardly looking for sympathy. But, having made that gut-wrenching decision to walk away from it all, the prospect of going back to it and investing a non-trivial amount of effort just to give it away is a really tough pill to swallow.

Also on the emotional aspect is just my own human pettiness. I've been asked to open source the codebase from people that evidently didn't think the software was good enough to be worth paying for as a service. I've been asked to open source the codebase by other companies in the space that didn't want to buy the rights when I was shopping the company around. So, while I really want to provide a soft landing for my customers, I really didn't want to just be giving everything away to those that just wanted to mooch.

Setting all that aside, open sourcing the codebase is not some trivial process. And I'm not talking wanting to clean up stuff I might be embarrassed by. Here's a non-comprehensive list of issues that need to be addressed:

  • The web site design was a theme bought on WrapBootstrap that I don't have the rights to sublicense.
  • The rich UI widgets come from the commercial version of ExtJS. That needs to be excised or the whole project needs to be GPLv3.
  • Sidekiq Pro needs to be removed.
  • Every JS lib and every image resource we used must have its license examined and potentially be replaced.
  • Any customer info that made its way into the code needs to be removed. As an example, we built up an extensive regression suite around customer data that can't be distributed. This whole process means auditing every file in the codebase.
  • Ensuring any API keys or passwords aren't floating around in the source or configuration files (obviously bad, but things happen).
  • Potentially unobscuring security holes while the service is still running.
  • Removing all the billing code.
  • Removing all the drip email campaign code.
  • Removing any other non-Web Consistency Testing parts from the code.

A lot of this is a liability. Going through it all is a ton of work. After all that, I open myself up to all sorts of scrutiny I don't really care for. Sometimes I swear in code. I hold a somewhat traditionalist view of English and prefer my plurality to match up, so I use gendered pronouns in my personal writings, which will have now just become public. I'm certain there is some colorful commentary about each of the browser vendors buried somewhere in the source. Without a doubt, something in this codebase will offend someone and my personal reputation is at risk when it simply wouldn't have been by keeping it private.

It's basically all the work required to clean up during an acquisition, but with the inverse financial outcome.

If I managed to clear that hurdle, the next problem is that I simply don't find there to be much value in open source code. Open source projects, yes. Open source code, rarely. I won't have either the time or the wherewithal to spend any additional effort on this project. If I make the code publicly available, people will have questions that I won't have time to answer. Consequently, I'm just going to constantly feel like an inadequate piece of garbage. On the other hand, if I manage to find time to engage, I don't have the energy to justify every design decision. Some things do just look silly, but they were the product of the constraints imposed at the time. Contextually, they were sound. In today's world … probably not so much. Fixing them would certainly be progress, but in my experience these sorts of things aren't approached tactfully and I'd rather not be called an idiot without having the resources to defend the context.

Second Thoughts

At the end of the day, I want Web Consistency Testing to evolve. If making Mogotest open source will help achieve that, I'm willing to overlook some of the other problems. I've already released the ancillary libraries as ASLv2, and I was going to release the main application under the Affero General Public License (AGPL). After spending 14 hours cleaning things up this past weekend, I'm still not 100% certain I'm not violating IP somewhere or leaking customer info and I've had to gut the product so thoroughly that it's virltually useless. Rewriting all the view code just isn't something I have the desire to do.

In conjunction with the decision to use the AGPL, I decided to try a crowd-sourced campaign to help with the open sourcing effort. Precisely zero of the companies that have been begging me to open-source the code have contributed in any capacity. The incredible amount spam I've received via comments on IndieGogo and Twitter have been equally disheartening.

Conclusion

I had my initial emotional reaction, I analyzed the hell out of it, I decided against my better judgment to try opening the code anyway, and I simply can't do it. I think the tools I have open-sourced will be beneficial to others and I've explained how things work fairly extensively in a talk I gave at Google's Test Automation Conference. A clean-room implementation shouldn't be too onerous, given I've solved a lot of the environmental problems you're apt to encounter. Unfortunately, this is where I have to get off the train.

Let's Encrypt: How It Works

21 November 2014 - 8:00pm

Anyone who has gone through the trouble of setting up a secure website knows what a hassle getting a certificate can be. Let’s Encrypt automates away all this pain and lets site operators turn on HTTPS with a single click or shell command.

When Let’s Encrypt launches in Summer 2015, enabling HTTPS for your site will be as easy as installing a small piece of certificate management software on the server:

$ sudo apt-get install lets-encrypt

$ lets-encrypt example.com

That’s all there is to it! https://example.com is immediately live.

The Let’s Encrypt management software will:

  • Automatically prove to the Let’s Encrypt CA that you control the website
  • Obtain a browser-trusted certificate and set it up on your web server
  • Keep track of when your certificate is going to expire, and automatically renew it
  • Help you revoke the certificate if that ever becomes necessary.

No validation emails, no complicated configuration editing, no expired certificates breaking your website. And of course, because Let’s Encrypt provides certificates for free, no need to arrange payment.

If you’d like to know more about how this works behind the scenes, check out our technical overview. Or if you really want to dive into the details, read the full protocol specification on Github.

The Algorithm Design Manual, 2nd Edition

21 November 2014 - 8:00pm
The Algorithm Design Manual Second Edition now available! Errata Programs Credits Solution Key/Wiki

This newly expanded and updated second edition continues to take the "mystery" out of designing algorithms, and analyzing their efficacy and efficiency. Expanding on the first edition, the book now serves as the primary textbook of choice for algorithm design courses while maintaining its status as the premier practical reference guide to algorithms for programmers, researchers, and students.

The reader-friendly Algorithm Design Manual provides straightforward access to combinatorial algorithms technology, stressing design over analysis. The first part, Techniques, provides accessible instruction on methods for designing and analyzing computer algorithms. The second part, Resources, is intended for browsing and reference, and comprises the catalog of algorithmic resources, implementations and an extensive bibliography.

Audio/ Video
Lectures
Author's
Course Page
Lecture Notes

The second edition contains enough material to serve as the textbook for a standard Introduction to Algorithms course. I assume the reader has completed the equivalent of a second programming course, typically titled Data Structures or Computer Science II.

The book, and associated supporting material, stresses design over analysis. A full set of lecture slides integrated with audio and video lectures are freely available on line. Let me help teach your course! I received the 2001 IEEE Computer Science and Engineering Teaching Award and have been been teaching undergraduate algorithm classes for almost twenty years.

I have made several pedagogical improvements throughout the book. Textbook-oriented features include:

  • More Leisurely Discussion -- The tutorial material in the first part of the book has been doubled over the previous edition. The pages have been devoted to more thorough and careful exposition of fundamental material, instead of adding more specialized topics.
  • False Starts -- Algorithms textbooks generally present important algorithms as a fait accompli, obscuring the ideas involved in designing them and the subtle reasons why other approaches fail. The war stories illustrate such development on certain applied problems, but I have expanded such coverage into classical algorithm design material as well.
  • Stop and Think -- Here I illustrate my thought process as I solve a topic-specific homework problem---false starts and all. I have interspersed such problem blocks throughout the text to increase the problem-solving activity of my readers. Answers appear immediately following each problem.
  • More and Improved Homework Problems -- This edition of The Algorithm Design Manual has twice as many homework exercises as the previous one. Exercises that proved confusing or ambiguous have been improved or replaced. Degree of difficulty ratings (from 1 to 10) have been assigned to all problems.
  • Self-Motivating Exam Design -- In my algorithms courses, I promise the students that all midterm and final exam questions will be taken directly from homework problems in this book. This provides a ``student-motivated exam,'' so students know exactly how to study to do well on the exam. I have carefully picked the quantity, variety, and difficulty of homework exercises to make this work; ensuring there are neither too few or too many candidate problems.
  • Take-Home Lessons -- Highlighted ``take-home'' lesson boxes scattered throughout the text emphasize the big-picture concepts to be gained from the chapter.
  • Links to Programming Challenge Problems -- Each chapter's exercises will contain links to 3-5 relevant ``Programming Challenge'' problems from http://www.programming-challenges.com. These can be used to add a programming component to paper-and-pencil algorithms courses.
  • More Code, Less Pseudo-code -- More algorithms in this book appear as code (written in C) instead of pseudo-code. I believe the concreteness and reliability of actual tested implementations provides a big win over less formal presentations for simple algorithms. Full implementations are available for study at \courseweb.

First Edition

I was gratified by the warm reception the first edition of The Algorithm Design Manual received since its publication. It ultimately went through ten printings and generated numerous errata, which remain available here.

The first edition came with a CD-ROM, with mirrors of the algorithm repository and my audio/video lecture notes. Updated and improved versions of these resources are available on line, rendering the CD-ROM unnecessary (although I fondly recall the fellow who asked me for an extra copy so their child could have one when they grew up).

This CD-ROM was also the source of the pirated online version from Indonesia. The Amazon Kindle edition is better.

Reviews of The Algorithm Design Manual include:

  • From Steve Yegge -- Get that Job at Google": `` My absolute favorite for this kind of interview preparation is Steven Skiena's The Algorithm Design Manual. More than any other book it helped me understand just how astonishingly commonplace (and important) graph problems are ? they should be part of every working programmer's toolkit. The book also covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a great way to learn how to identify hundreds of problem types.''
  • From Programming Stuff: ``The book teaches you how to extract the relevant information from a problem, how to transform a given problem into a well-researched problem, how to select the best data structure for the job and how to really improve algorithms. .. That's what makes the book so different and yet so valuable.''

Written by a well-known algorithms researcher who received the IEEE Computer Science and Engineering Teaching Award, this new edition of The Algorithm Design Manual is an essential learning tool for students needing a solid grounding in algorithms, as well as a special text/reference for professionals who need an authoritative and insightful guide.

Quotes

"...the book is an algorithm-implementation treasure trove, and putting all of these implementations in one place was no small feat. The list of implementations [and] extensive bibliography make the book an invaluable resource for everyone interested in the subject." --ACM Computing Reviews

"It has all the right ingredients: rich contents, friendly, personal language, subtle humor, the right references, and a plethora of pointers to resources." -- P. Takis Metaxas, Wellesley College

"This is the most approachable book on algorithms I have." -- Megan Squire, Elon University, USA

The Algorithm Design Manual Second Edition now available! Errata Programs Credits Solution Key/Wiki

This newly expanded and updated second edition continues to take the "mystery" out of designing algorithms, and analyzing their efficacy and efficiency. Expanding on the first edition, the book now serves as the primary textbook of choice for algorithm design courses while maintaining its status as the premier practical reference guide to algorithms for programmers, researchers, and students.

The reader-friendly Algorithm Design Manual provides straightforward access to combinatorial algorithms technology, stressing design over analysis. The first part, Techniques, provides accessible instruction on methods for designing and analyzing computer algorithms. The second part, Resources, is intended for browsing and reference, and comprises the catalog of algorithmic resources, implementations and an extensive bibliography.

Audio/ Video
Lectures
Author's
Course Page
Lecture Notes

The second edition contains enough material to serve as the textbook for a standard Introduction to Algorithms course. I assume the reader has completed the equivalent of a second programming course, typically titled Data Structures or Computer Science II.

The book, and associated supporting material, stresses design over analysis. A full set of lecture slides integrated with audio and video lectures are freely available on line. Let me help teach your course! I received the 2001 IEEE Computer Science and Engineering Teaching Award and have been been teaching undergraduate algorithm classes for almost twenty years.

I have made several pedagogical improvements throughout the book. Textbook-oriented features include:

  • More Leisurely Discussion -- The tutorial material in the first part of the book has been doubled over the previous edition. The pages have been devoted to more thorough and careful exposition of fundamental material, instead of adding more specialized topics.
  • False Starts -- Algorithms textbooks generally present important algorithms as a fait accompli, obscuring the ideas involved in designing them and the subtle reasons why other approaches fail. The war stories illustrate such development on certain applied problems, but I have expanded such coverage into classical algorithm design material as well.
  • Stop and Think -- Here I illustrate my thought process as I solve a topic-specific homework problem---false starts and all. I have interspersed such problem blocks throughout the text to increase the problem-solving activity of my readers. Answers appear immediately following each problem.
  • More and Improved Homework Problems -- This edition of The Algorithm Design Manual has twice as many homework exercises as the previous one. Exercises that proved confusing or ambiguous have been improved or replaced. Degree of difficulty ratings (from 1 to 10) have been assigned to all problems.
  • Self-Motivating Exam Design -- In my algorithms courses, I promise the students that all midterm and final exam questions will be taken directly from homework problems in this book. This provides a ``student-motivated exam,'' so students know exactly how to study to do well on the exam. I have carefully picked the quantity, variety, and difficulty of homework exercises to make this work; ensuring there are neither too few or too many candidate problems.
  • Take-Home Lessons -- Highlighted ``take-home'' lesson boxes scattered throughout the text emphasize the big-picture concepts to be gained from the chapter.
  • Links to Programming Challenge Problems -- Each chapter's exercises will contain links to 3-5 relevant ``Programming Challenge'' problems from http://www.programming-challenges.com. These can be used to add a programming component to paper-and-pencil algorithms courses.
  • More Code, Less Pseudo-code -- More algorithms in this book appear as code (written in C) instead of pseudo-code. I believe the concreteness and reliability of actual tested implementations provides a big win over less formal presentations for simple algorithms. Full implementations are available for study at \courseweb.

First Edition

I was gratified by the warm reception the first edition of The Algorithm Design Manual received since its publication. It ultimately went through ten printings and generated numerous errata, which remain available here.

The first edition came with a CD-ROM, with mirrors of the algorithm repository and my audio/video lecture notes. Updated and improved versions of these resources are available on line, rendering the CD-ROM unnecessary (although I fondly recall the fellow who asked me for an extra copy so their child could have one when they grew up).

This CD-ROM was also the source of the pirated online version from Indonesia. The Amazon Kindle edition is better.

Reviews of The Algorithm Design Manual include:

  • From Steve Yegge -- Get that Job at Google": `` My absolute favorite for this kind of interview preparation is Steven Skiena's The Algorithm Design Manual. More than any other book it helped me understand just how astonishingly commonplace (and important) graph problems are ? they should be part of every working programmer's toolkit. The book also covers basic data structures and sorting algorithms, which is a nice bonus. But the gold mine is the second half of the book, which is a sort of encyclopedia of 1-pagers on zillions of useful problems and various ways to solve them, without too much detail. Almost every 1-pager has a simple picture, making it easy to remember. This is a great way to learn how to identify hundreds of problem types.''
  • From Programming Stuff: ``The book teaches you how to extract the relevant information from a problem, how to transform a given problem into a well-researched problem, how to select the best data structure for the job and how to really improve algorithms. .. That's what makes the book so different and yet so valuable.''

Written by a well-known algorithms researcher who received the IEEE Computer Science and Engineering Teaching Award, this new edition of The Algorithm Design Manual is an essential learning tool for students needing a solid grounding in algorithms, as well as a special text/reference for professionals who need an authoritative and insightful guide.

Quotes

"...the book is an algorithm-implementation treasure trove, and putting all of these implementations in one place was no small feat. The list of implementations [and] extensive bibliography make the book an invaluable resource for everyone interested in the subject." --ACM Computing Reviews

"It has all the right ingredients: rich contents, friendly, personal language, subtle humor, the right references, and a plethora of pointers to resources." -- P. Takis Metaxas, Wellesley College

"This is the most approachable book on algorithms I have." -- Megan Squire, Elon University, USA

Harvard researchers build $10 robot to teach kids to code

21 November 2014 - 8:00pm

Mike Rubenstein, Harvard University

Mike Rubenstein wants to put robots in the classroom.

Working with two other researchers at Harvard University, Rubenstein recently created what they call AERobot, a bot that can help teach programming and artificial intelligence to middle school kids and high schoolers. That may seem like a rather expensive luxury for most schools, but it’s not. It costs just $10.70. The hope is that it can help push more kids into STEM, studies involving science, technology, engineering, and math.

The tool is part of a widespread effort to teach programming and other computer skills to more children, at earlier stages. It’s called the code literacy movement, and it includes everything from new and simpler programming languages to children’s books that teach coding concepts.

Rubenstein’s project grew out of the 2014 AFRON Challenge, held back in January, which called for researchers to design low-cost robotic systems for education in the developing world. Part of Harvard’s Self-Organizing Systems Research Group, Rubstein has long studied swarm robotics, which aims to create herds of tiny robots that can behave as whole, and he ended up adapting one of his swarm systems in order to build AERobot. It’s a single machine—not a swarm bot—but it’s built from many of the same inexpensive materials.

Li-Fi Gets Ready to Compete with Wi-Fi

21 November 2014 - 2:00am
 

Photo: Peter Tuffy/The University of Edinburgh Light Fantastic: A CMOS digital-to-analog converter developed at the University of Edinburgh helps LEDs act as communications devices.

As LEDs become a more common source for room lighting, they’re opening a new pathway for linking mobile devices to the Internet, with the potential for wider bandwidth and quicker response time than Wi-Fi. At least that’s what researchers such as Harald Haas, chair of mobile communications at the University of Edinburgh, are hoping.

“All the components, all the mechanisms exist already,” Haas says. “You just have to put them together and make them work.”

Haas’s group, along with researchers from the Universities of ­Cambridge, Oxford, St. Andrews, and Strathclyde, are halfway through a four-year, £5.8 million project funded by the Engineering and Physical Sciences Research Council, in the United Kingdom. They are pursuing ultra­parallel visible light communication, which would use multiple colors of light to provide high-bandwidth linkages over distances of a few meters. Such a Li-Fi system, as it’s been dubbed, could supplement or in some instances replace traditional radio-based Wi-Fi, they say. But taking on such a broadly used radio technology is an uphill battle.

At the IEEE Photonics Conference in October, members of the consortium showed off the progress they’re making. For instance, the team has used commercially available red, green, and blue LEDs as both emitters and as photodiodes to detect light. By doing that, they created a system that could both send and receive data at aggregate rates of 110 megabits per second. When transmitting in one direction only, they reached a rate of 155 Mb/s.

But Haas says that this version is limited by existing LEDs, and by the use of LEDs as transmitters and detectors at the same time. Members of the consortium, however, have created a better LED, which provides a data rate

close to 4 gigabits per second operating on just 5 milliwatts of optical output power and using high-­bandwidth photodiodes at the receiver. With a simple lens to enhance the distance, they can send data 10 meters at up to 1.1 Gb/s, and soon they will increase that to 15 Gb/s, Haas says. The 802.11ad Wi-Fi standard for the 60-gigahertz radio band reaches just under 7 Gb/s, so Li-Fi would more than double that rate.

They’re also using avalanche photodiodes to make better receivers. In an avalanche photodiode, a single photon striking the receiver produces a cascade of electrons, amplifying the signal. Haas’s team at the Li-Fi R&D Centre has created the first receiver chip for Li-Fi with integrated avalanche photodiodes on CMOS. The 7.8-square-­milli­meter IC houses 49 photodiodes.

Separately, the Fraunhofer Institute for Photonic Microsystems, in Dresden, Germany, had announced plans to demonstrate a Li-Fi hot spot in November (after press time) at the Electronica 2014 trade show in Munich. Frank Deicke, who leads the team developing Li-Fi at Fraunhofer, says that the system would most likely use infrared light and is aimed at industrial users rather than consumers. The hot spot was set to be a point-to-point link with a data rate of up to 1 Gb/s.

“You can have more or less the same data rate as over a USB cable,” Deicke says. “That’s very challenging for most wireless technologies, like Wi-Fi and Bluetooth.” Another advantage, says Deicke, is that the latency of Wi-Fi—the time between when a signal is sent and when it’s received—is measured in milli­seconds, whereas Li-Fi’s latency is on the order of microseconds. In industrial applications, where data has to flow between sensors, actuators, and a control unit, low latency and high data rates would make Li-Fi useful in places where Wi-Fi is not. “We don’t want to replace Wi-Fi,” he says. “That’s not our goal.”

But Deicke says Li-Fi could complement existing communications technologies, including Wi-Fi and gigabit Ethernet. For now, his group is not focusing on combining it with general lighting, as Haas proposes.

A group of European academic researchers and networking companies is aiming for the consumer market, though. The group is working on a project called Advanced Convergent and Easily Manageable Innovative Network Design (ACEMIND) to develop ways to manage local networks in homes and small businesses. ­ACEMIND includes a number of demonstrator projects to test different technologies, including Li-Fi. Dmitris Katsianis at the University of Athens, who is a participant in ACEMIND, thinks Li-Fi might be in practical use within the next five years. “Li-Fi has the advantage of being useful in electromagnetically sensitive areas such as in hospitals, aircraft cabins, and power plants,” he says.

Haas is counting on a much bigger market. He expects LEDs to evolve past just being light sources, much the same way the cellphone evolved from a communications device to a mobile computer. “In 25 years, every lightbulb in your house will have the processing power of your cellphone today,” he says. “It will in the future serve illumination as just one of many purposes.”

Neil Savage, based in Lowell, Mass., writes about strange semiconductors, unusual optoelectronics, and other things. In the May 2014 issue he reported on weird ways to make things invisible.

A correction to this article was made on 20 November 2014.

Advertisement

  Telecom Obama Comes Out Swinging For Net Neutrality

In a statement, President Obama reiterated his support for the principles of Net Neutrality and made policy recommendations to preserve it10 Nov

 
Telecom Is Iceland Poised to Become a Data Center Paradise?

With clean power and cold air, finding downsides to a data center boom in the North Atlantic is hard to do6 Nov

 
Telecom Back From the Past: Stanford Resurrects First U.S. Website

The SLAC National Accelerator Laboratory created the first known U.S. website—and staff members saved the data6 Nov

 
Telecom Douglas Coupland Analyzes Alcatel-Lucent in Kitten Clone

A search for meaning at a communications technology company24 Oct

 
Telecom Google Funds New Brazil – U.S. Undersea Fiber Optic Cable

It's the company’s second investment undersea cable investment in just a few months16 Oct

Advertisement

  Telecom Pediatricians Bring Tracking of Illnesses at Childcare Centers Online

Speedier identification of diseases like flu in daycares and pre-schools could help limit the scope of outbreaks10 Oct

 
Telecom U.S. Military Puts Up $110 Million to Fund Photonic Integrated Circuits Competition

The U.S. government is backing the next generation of photonics technology for higher-speed Internet and mobile computing10 Oct

 
Telecom Google X Balloons Will Circle the Earth to Deliver Internet

Google is deploying a ring of balloons to provide Internet to mobile phones25 Sep

 
Telecom “Loading” Symbols Take Over Internet In Net Neutrality Protest

Advocates are using the universal symbol of a slow-moving Web page to drum up support for Net Neutrality10 Sep

 
Telecom Iran Eases Restrictions on High-Speed Mobile Internet

Iran's government approves 3G and 4G licenses over the objections of conservative hard-liners5 Sep

 
Telecom Does “Net Neutrality” Need a Better Name?

Silicon Valley Congresswoman Anna Eshoo thinks so—and has started a contest to find one27 Aug

 
Telecom A Ride on the Not-So-Wayback Machine

Technologies change, people change, and so must the websites they create19 Aug

 
Telecom Google Teams With Asian Telecoms For "Faster" Undersea Cable

New submarine cable connecting U.S. and Japan will transmit up to 60 terabytes of data per second12 Aug

 
Telecom Google Explains How It Forgets

Google tells of progress and problems in letter to European regulators4 Aug

 
Telecom Bell Labs Sets New Record for Internet Over Copper

1 Gbps without running fiber all the way to the home14 Jul

 
Telecom Facebook’s Secret Experiment: The Era of Manipulation Has Begun

Worrying about privacy is so last week—start worrying about manipulation30 Jun

 
Telecom Supreme Court Shoots Aereo Down

A 6-3 decision says TV streaming startup Aereo's "personal antenna" model violates copyright25 Jun

 
Telecom Requests to be Forgotten: Now on Google

Search provider now logging users' requests to be forgotten30 May

 
Telecom Can You Make the Internet Forget?

Court ruling paves way for deleting search engine links15 May

 
Telecom European Court Grants the Right to Be Forgotten

An individual can force search engine providers to modify results13 May

Lecture 18: Legal and Accounting Basics for Startups

21 November 2014 - 2:00am
Lecture 18: Legal and Accounting Basics for Startups
Kirsty Nathoo, Carolynn Levy , View Kirsty and Carolynn's Slide Deck.

View the annotated transcript, and add annotations of your own, on Genius, or directly at the bottom of this page!

Discuss this lecture!

Ursula K. Le Guin at the National Book Awards

21 November 2014 - 2:00am

Ursula K. Le Guin was honored at the National Book Awards tonight and gave a fantastic speech about the dangers to literature and how they can be stopped. As far as I know it’s not available online yet, so I’ve transcribed it from the livestream below. The parts in parentheses were ad-libbed directly to the audience, and the Neil thanked is Neil Gaiman, who presented her with the award.

Thank you Neil, and to the givers of this beautiful reward, my thanks from the heart. My family, my agent, editors, know that my being here is their doing as well as mine, and that the beautiful reward is theirs as much as mine. And I rejoice at accepting it for, and sharing it with, all the writers who were excluded from literature for so long, my fellow authors of fantasy and science fiction—writers of the imagination, who for the last 50 years watched the beautiful rewards go to the so-called realists.

I think hard times are coming when we will be wanting the voices of writers who can see alternatives to how we live now and can see through our fear-stricken society and its obsessive technologies to other ways of being, and even imagine some real grounds for hope. We will need writers who can remember freedom. Poets, visionaries—the realists of a larger reality.

Right now, I think we need writers who know the difference between the production of a market commodity and the practice of an art. Developing written material to suit sales strategies in order to maximize corporate profit and advertising revenue is not quite the same thing as responsible book publishing or authorship. (Thank you, brave applauders.)

Yet I see sales departments given control over editorial; I see my own publishers in a silly panic of ignorance and greed, charging public libraries for an ebook six or seven times more than they charge customers. We just saw a profiteer try to punish a publisher for disobedience and writers threatened by corporate fatwa, and I see a lot of us, the producers who write the books, and make the books, accepting this. Letting commodity profiteers sell us like deodorant, and tell us what to publish and what to write. (Well, I love you too, darling.)

Books, you know, they’re not just commodities. The profit motive often is in conflict with the aims of art. We live in capitalism. Its power seems inescapable. So did the divine right of kings. Any human power can be resisted and changed by human beings. Resistance and change often begin in art, and very often in our art—the art of words.

I have had a long career and a good one. In good company. Now here, at the end of it, I really don’t want to watch American literature get sold down the river. We who live by writing and publishing want—and should demand—our fair share of the proceeds. But the name of our beautiful reward is not profit. It’s name is freedom.

Thank you.

Related

Ninjhax – 3DS Homebrew Exploit

21 November 2014 - 2:00am
  • ninjhax is a piece of software that allows you to run unsigned code on your 3DS. In practice, this means being able to run homebrew applications such as games, tools and emulators! To see it in action, look no further.

    You need exactly three things to run unsigned code on your console :
             > A 3DS, 3DS XL or 2DS console with a firmware version between 4.0.0-7 and 9.2.0-20.
                             (NOTE : New 3DSes have to be on at least 9.0 to run ninjhax)
             > An SD card compatible with your 3DS (the one it comes with will of course do).
             > A copy of the game CUBIC NINJA, either from retail or eShop.
                             (retail is available in US, EU and JPN; eshop was JPN-only)

    1. Go to the get ninjhax section of this page and enter your console's firmware version.
    2. Hit submit; you should get your very own ninjhax QR code.
    3. Download the homebrew starter kit and extract it at the root of your SD card. Alternatively, you may choose to only download The Homebrew Launcher menu executable and place it at the root of your SD card. No matter what, after this step, you should have a file named boot.3dsx placed at the root of your SD card.
    4. Make sure your 3DS's wifi connection is enabled and connected to the internet (this is important!).
    5. Start CUBIC NINJA on your console, choose "Create", then "QR code", and finally "Scan QR code".
    6. Scan the QR Code. This step might take a couple tries; make sure you fill up as much of your 3DS's screen with the QR code. If scanning the QR code returns to menu with an error, try a few more times.
    7. Follow the on screen instructions. You may choose not to install the exploit to your gamecard's savedata, though doing so is not recommended.
    8. OPTIONAL - once the ninjhax is installed to your gamecard, just go back to the "QR code" menu and it'll run automatically!
    9. OPTIONAL - you can now run homebrew apps on your 3DS! Simply drag and drop application folders into the "3ds/" directory that was created on your SD card by ninjhax.

    Select your console's firmware version :

    Our team (and many others !) has been tirelessly working on putting together a free, open source development kit for the 3DS. This takes the form of ctrulib, 3dsxtools and devKitARM. You can find more information on how to install and use these by clicking here.

    ninjhax was put together by a very passionate team of reverse engineers/hackers/enthusiasts, including:
             - smea — 3DS research, core exploit code for all versions, ctrulib improvements, hbmenu code, testing/debugging
             - yellows8 — 3DS research, ctrulib improvements, auditing, help with pretty much everything
             - plutoo — 3DS research, ctrulib improvements, auditing, help with pretty much everything
             - fincs — 3DSX format/code, ctrulib improvements, devkitARM integration, testing
             - mtheall — ctrulib improvements, hbmenu code, testing
             - GEMISIS — hbmenu code, testing
             - Fluto, Arkhandar — hbmenu design
             - Normmatt, ichfly — general help, testing
             - case — javascript master
             - lobo — webpage template

    We'd all also like to thank everyone who has been contributing to the 3DS scene in one way or another, including (but not limited to) : StapleButter, neobrain, bunnei, Drenn, Bond697, sm, WinterMute, yuriks and, like, so many other people.

  • > blargSnes

    blargSnes is a SNES emulator currently being developed by StapleButter. It's open source, runs most games really well and has sound ! Better yet, StapleButter is actively working on it and it keeps getting better every day.

    Get blargSnes

    > 3DScraft

    3DScraft, as its name indicates, is a 3DS adaptation of Minecraft. While it's currently little more than a basic version of creative mode, it holds great promise as it already has infinite worlds, saving/loading and stereoscopic 3D rendering.

    Get 3DScraft

    > GameYob

    GameYob is a Game Boy emulator currently being developed by Drenn. Much like blargSnes, it's open source, has sound and is in continuous development. It can run almost any game nearly perfectly and gives users a wide array of options to choose from.

    Get GameYob

  • > Where can I find more homebrew applications ?

         You can visit 3dbrew for more homebrew applications.

    > ninjhax won't run anymore ! I updated my console after installing ninjhax and I can't access the homebrew launcher anymore. What do I do ?

         In this case, all you need to do is clear CUBIC NINJA's savegame and install the exploit again. To do so, enter CUBIC NINJA's main menu and hold L+R+X+Y; after a few seconds, a menu will show up asking whether you'd like to clear your savegame. Do it, grab the QR code for your new firmware version and you should be good to go!

    > ninjhax won't run at all ! It is freezing at 70% or opening the web browser for some reason. What am I doing wrong ?

         This most likely means you are using the wrong QR code for your console/firmware version. Please double check that you are using the correct version. If the problem persists, let me know my sending me an email at sme@lum.sexy.

    > Cubic Ninja says the QR code is invalid and nothing happens. What's wrong ?

         This means there was an error on our side while compiling the QR code. Please send me an email including the firmware version you used to sme@lum.sexy so I can fix it ASAP.

    > Can ninjhax be uninstalled ?

         Yes. Go to CUBIC NINJA's main menu, hold L+R+X+Y and follow instructions. This will also erase your savegame. There is currently no way to uninstall ninjhax without losing your Cubic Ninja savegame because it seems noone cares enough about their Cubic Ninja savegame to make one.

    > What are 3DSX files ? Why doesn't ninjhax load CXIs ?

         We made the decision early on that ninjhax should only work with a highly relocatable executable format as a way to improve compatibility with potential future exploits, which may or may not include the ability to update virtual memory page permissions. 3DSX is a format developed by fincs which allows us to do just that; each section (.text, rodata and data) can be relocated independently, making it perfect for our needs. Compiling as 3DSX rather than CXI will help maximize future compatibility.

    > What about flashcarts ? They can't run 3DSX files.

         While flashcarts can't run 3DSX files, they can run homebrew compiled as CXI. And as luck would have it, it's possible to output a CXI from a 3DSX file! With that in mind, flashcart homebrew does not provide quite the same level of access as ninjhax (the sound-module 'CSND' is missing, for example), and as such not all homebrew can be guaranteed to run on these carts.

    > Does this allow region free ?

         ninjhax does not yet allow people to run software from other regions. This should however be possible at some point in the not-too-distant future.

    > Does this let me run roms ?

         No. ninjhax is a user mode exploit, meaning that we do not have full control over the console, and therefore cannot run pirated software. That being said, we have the same amount of access as regular apps and games to the console's hardware, and so we can make some kickass homebrew!

  • ninjhax has been tested thoroughly by a fairly large group of people over the course of several months. To our knowledge, running ninjhax has never resulted in damaging the console running it. That being said, we do not guarantee safety and will not take responsibility for your actions.
    As in any computing context, you should always be careful that you trust the source of executables you run on your console. While ninjhax only allows user mode code to run, malicious intents may still be caried out through it. So please, don't be an idiot.

  • A New Clue to Solve the CIA's Mysterious Kryptos Sculpture

    21 November 2014 - 2:00am

    Kryptos, a sculpture by American artist Jim Sanborn located on the grounds of the Central Intelligence Agency (CIA) in Langley, Virginia. MAI/Landov

    In 1989, the year the Berlin Wall began to fall, American artist Jim Sanborn was busy working on his Kryptos sculpture, a cryptographic puzzle wrapped in a riddle that he created for the CIA’s headquarters and that has been driving amateur and professional cryptographers mad ever since.

    To honor the 25th anniversary of the Wall’s demise and the artist’s 70th birthday this year, Sanborn has decided to reveal a new clue to help solve his iconic and enigmatic artwork. It’s only the second hint he’s released since the sculpture was unveiled in 1990 and may finally help unlock the fourth and final section of the encrypted sculpture, which frustrated sleuths have been struggling to crack for more than two decades.

    The 12-foot-high, verdigrised copper, granite and wood sculpture on the grounds of the CIA complex in Langley, Virginia, contains four encrypted messages carved out of the metal, three of which were solved years ago. The fourth is composed of just 97 letters, but its brevity belies its strength. Even the NSA, whose master crackers were the first to decipher other parts of the work, gave up on cracking it long ago. So five years ago, concerned that he might not live to see the mystery of Kryptos resolved, Sanborn released a clue to help things along, revealing that six of the last 97 letters when decrypted spell the word “Berlin”—a revelation that many took to be a reference to the Berlin Wall.

    To that clue today, he’s adding the next word in the sequence—“clock”—that may or may not throw a wrench in this theory. Now the Kryptos sleuths just have to unscramble the remaining 86 characters to find out.

    Is a Clock a Clock?

    Sanborn told WIRED that he’s always been fascinated by Berlin’s many clocks but the Berlin Clock in particular has intrigued him the most. The clock, also known as the Berlin Uhr or Set Theory Clock, was designed in the 1970s by inventor and tinkerer Dieter Binninger. It displays the time through illuminated colored blocks rather than numbers and requires the viewer to calculate the time based on a complex scheme.

    The Berlin Clock, or the Set Theory Clock. John Freeman/Lonely Planet Images/Getty Images

    A yellow lamp at the top of the clock blinks every two seconds while a row of red lamps beneath it represent five hours. Red lights on a second row denote one hour each, and time is calculated based on the number of lights illuminated. “So if in the first line 2 lamps are lit and in the second line 3 lamps, it’s 5+5+3=13h or 1 p.m.,” notes one description of the timepiece.

    “Most people have no idea who Dieter is and all of the other people who make strange clocks in Berlin,” Sanborn says. “There’s a very interesting back story to [the Berlin Clock].”

    The focus on the clock, however, may just be a bit of sly misdirection from Sanborn—who is known among Kryptos fans for his puckishness.

    “Clock” could easily refer instead to a method devised by a Polish mathematician and cryptologist during World War II to crack Germany’s Enigma ciphers—a method that was expanded on by Alan Turing and his team at Bletchley Park who are credited with ultimately cracking Enigma. (It may be no coincidence that Sanborn has decided to release hi new clue at the same time The Imitation Game, a film about Turning’s work on Enigma, is opening in US theaters on Nov. 28.)

    How Kryptos Has Remained Unsolved for 20 Years

    Sanborn’s Kryptos sculpture was unveiled at the CIA on Nov. 3, 1990, a month that has a recurring theme in the sculpture’s ethos.

    The artwork features a large block of petrified wood standing upright, with a tall copper plate scrolling out from the wood like a sheet of paper. At the sculpture’s base is a round pool with a fountain pump that sends water moving in a circular direction around the pool. Carved out of the copper plate are approximately 1,800 letters, some of them forming a cryptographic table based on a method developed by a 16th-century Frenchman named Blaise de Vigenere.

    wanderingYew2/Flickr

    In 1995 a small group of cryptanalysts inside the NSA quietly deciphered the first three sections of the sculpture, though no one outside the agency and the CIA’s top brass knew about it. In 1998, CIA analyst David Stein cracked the same three messages using paper and pencil and about 400 lunch-time hours. Only his CIA colleagues knew of his success, however, because the agency didn’t publicize it. A year later, California computer scientist Jim Gillogly gained public notoriety when he cracked the same three messages using a Pentium II.

    The first message is a poetic phrase that Sanborn composed:

    “Between subtle shading and the absence of light lies the nuance of iqlusion.”

    The second one hints at something buried:

    “It was totally invisible. How’s that possible? They used the earth’s magnetic field. x The information was gathered and transmitted undergruund to an unknown location. x Does Langley know about this? They should: it’s buried out there somewhere. x Who knows the exact location? Only WW. This was his last message. x Thirty eight degrees fifty seven minutes six point five seconds north, seventy seven degrees eight minutes forty four seconds west. Layer two.”

    The third message is a take on a passage from the diary of English Egyptologist Howard Carter describing the opening of King Tut’s tomb on Nov. 26, 1922.

    “Slowly, desparatly slowly, the remains of passage debris that encumbered the lower part of the doorway was removed. With trembling hands I made a tiny breach in the upper left-hand corner. And then, widening the hole a little, I inserted the candle and peered in. The hot air escaping from the chamber caused the flame to flicker, but presently details of the room within emerged from the mist. x Can you see anything? q”

    Sanborn has said that the first three sections contain clues to solving the final 97 letters but no one has figured out what those might be. After no progress cracking the last section, Sanborn released the “Berlin” clue five years ago, considering it “a significant clue.”

    “I’m throwing it out there. It just makes that many fewer characters people have to figure out,” he told WIRED at the time.

    The six letters that spell “Berlin”—NYPVTT—-are the 64th through 69th letters of the final 97 characters and the new clue “clock” are deciphered from the next five letters that follow it.

    Code detectives worked to crack the puzzle following the Berlin revelation. Members of a popular Kryptos Yahoo Group led by Elonka Dunin, the foremost expert on Kryptos, tried for months to resolve it but to no avail.

    Who knows if the new clue will prove to be any more helpful. And even if it is and sleuths decipher the final code, there’s an additional message they will still need to resolve. Once decrypted, the fourth section reveals a riddle, which Sanborn has said requires sleuths to be on the CIA grounds to solve.

    The Mystery of the Riddle

    “In part of the code that’s been deciphered, I refer to an act that took place when I was at the agency and a location that’s on the ground of the agency,” Sanborn said during a 2005 interview with WIRED. “So in order to find that place, you have to decipher the piece and then go to the agency and find that place.”

    The riddle may refer to something Sanborn buried on the CIA grounds at the time he installed the sculpture, possibly in a location spelled out in section two of the sculpture, which lists two latitude and longitude coordinates: 38 57 6.5 N and 77 8 44 W. Sanborn has said they refer to “locations of the agency.”

    Dunin has suggested that the coordinates may refer to the location of a Berlin Wall monument on the CIA grounds. Three slabs from the Berlin Wall sit at the spy agency’s headquarters, a gift from the German government. Sanborn has also told WIRED that the collapse of the wall was “big news” at the time he was “casting about” for things he wanted to include in his sculpture. However, the wall monument wasn’t dedicated at the CIA until 1992, two years after Kryptos was unveiled. Although the coordinates of the monument’s location—38 57 2.5 N, 77 8 40 W—differ from the coordinates mentioned in Kryptos by four seconds in both the latitude and longitude, Dunin has speculated that the CIA may have originally planned to position the monument at the coordinates Sanborn mentions on Kryptos then later chose a different location. Alternatively, Sanborn may have been using an incorrect U.S. geological map when he created his sculpture and thus got the coordinates wrong, she notes. After all, Sanborn has other errors in his sculpture, both intentional and unintentional.

    Kryptos includes intentional spelling errors and misaligned characters set higher on a line of text than characters around them. But in 2006, Sanborn realized he had also made an inadvertent error, a missing “x” that he mistakenly deleted from the end of a line in section two, a section that was already solved. He discovered the omission while doing a letter-by-letter comparison of the plaintext and coded text in preparation for a book about his work.

    The “x” was supposed to signify a period or section-break at the end of a phrase. Sanborn removed it for aesthetic reasons, thinking it wouldn’t affect the way the puzzle was deciphered, but in fact it did. What sleuths had until then deciphered to say “ID by rows” was actually supposed to say “layer two.” The correction hasn’t helped anyone solve the rest of the puzzle, however, in the subsequent years.

    Now this second clue, Sanborn hopes, will reinvigorate efforts to crack the mystery, though he has mixed views on whether he wants the journey to end. The artist has said he’d like to see Kryptos solved in his lifetime, but he also enjoys that some of the smartest minds in cryptography—including those at the CIA and NSA—continue to be baffled by his work.

    Only two other people, aside from Sanborn, were initially said to know the solution to Kryptos: one was the retired chairman of the CIA’s Cryptographic Center Ed Scheidt, who helped Sanborn choose and alter the coding techniques for the sculpture. The other was William Webster, the CIA director who received a sealed envelope containing the solution at the sculpture’s dedication. However, in 2005 Sanborn revealed to WIRED that Scheidt and Webster only thought they knew the solution. In fact, he had deceived them.

    In November 1989, after the East German government announced that its citizens were free from then on to cross over the Wall into West Berlin and West Germany, crowds of euphoric Germans began chipping away at the cement barrier. With this new clue provided by Sanford, let the chipping away on Kryptos begin.

    Homepage image:wanderingYew2/Flickr

    Ionic Creator – Fast Visual Ionic Prototyping

    20 November 2014 - 2:00pm

    A simpler approach to live prototyping. Creator visualizes the initial development process,
    offering flexibility and speed through an easy-to-use interface. Oh, and it’s totally free to use.

    Doxxing defense: Remove your personal info from data brokers

    20 November 2014 - 2:00pm

    Many women gamers and developers, as well as those who support them, have lately come under attack from online trolls. A common intimidation tactic that trolls use is "doxxing," or publicly exposing their targets' personal details, including home address, phone number and even financial records.

    Doxxing is often accompanied by threats of violence, sexual assault or murder. The message is clear: We're out to get you, and we know where you live. Some women in tech have left their chosen profession rather than deal with continued threats.

    But anyone is susceptible to doxxing, as game developer Phil Fish discovered this summer after speaking up in defense of a female developer. As the host of a feminist podcast, I decided to take the precaution of trying to remove public records of my whereabouts.

    Unfortunately, doxxers don't have to work very hard to find a victim's personal info. A number of free and paid services known as data brokers create profiles of vast numbers of individuals based on aggregated data from business directories, social media and other public records. With a specific target in mind, all a doxxer has to do is search one or more of these services to find the details he or she wants.

    More bad news: There are hundreds of data brokers, not all of which offer opt-out processes. (Exceptions are made for state-mandated protected groups, such as sexual assault survivors in California.) Removing yourself from all those that do can be a Sisyphean task, but managing your data with just the following 11 can be accomplished in an hour or two.

    I selected these brokers based on the following factors:

    • What those who have been doxxed cited as services that were used against them
    • Search results for my own name
    • Consultation with Paul Stephens, director of policy and advocacy at the Privacy Rights Clearinghouse and author of Data Brokers and Your Privacy

    Opt out of the following services, and you'll have "gotten all of the big ones," says Stephens—but pay attention to the caveat at the end of this story.

    Note that some opt-out forms paradoxically require you to submit personal data in order to have it removed; be your own judge of whether this is wise. (I recommend creating a temporary email address specifically for these requests.)

    Also note that with most of these services you'll receive a confirmation email shortly after you submit your removal request. If you don't see the email in your inbox, check your spam filter.

    Here's what I found when I tried to opt out of each one.

    Spokeo

    Opt-out form: http://www.spokeo.com/opt_out/new
    Verification needed: Email address
    Promised turnaround time: 30 minutes
    My opt-out result: Effective

    Spokeo is used by many doxxers; fortunately, it has one of the easiest opt-out methods. Just search for yourself in the site's directory; when you find a record that matches your identity, copy the URL and submit it via the opt-out form. After you confirm your email address, your listing should be removed. Note that you may need to search by several criteria—name, email address, phone number(s), social media usernames—to find all your records.

    Pipl

    Opt-out form: https://pipl.com/directory/remove/
    Verification needed: Email address
    Promised turnaround time: Immediate
    My opt-out result: Effective

    Pipl is both a search engine and a directory. While results cannot be blocked from the former, listings in the latter can be removed. First, manually craft a URL based on your name in the format of

    https://pipl.com/n/firstname_lastname/

    and paste it into the opt-out form. You'll see a list of people who share your name. You can then click "Remove" on any results that match your identity. You'll receive an email with a confirmation link.

    ZoomInfo

    Opt-out form: http://www.zoominfo.com/lookupEmail
    Verification needed: Email address
    Promised turnaround time: "Within a few days"
    My opt-out result: Effective

    ZoomInfo is a paid service that won't show you what it knows about you for free. It will acknowledge having your information on record, but only after you provide your email address. It will then send you an email message stating whether any matches were found—so if you no longer have access to the email address in ZoomInfo's database, you're out of luck.

    If you do, and a record was found, opting out is as easy as clicking the confirmation link. But if ZoomInfo doesn't have a record of you, you'll still have given it your email address—and a temporary address created for this opt-out will naturally return no results.

    ZoomInfo showed no records for me, so I opted out my father, who was listed. ZoomInfo now returns no search results for his email address.

    Whitepages

    Opt-out form: http://www.whitepagescustomers.com/how-do-i-remove-my-people-search-profile/
    Verification needed: Email address and phone number
    Promised turnaround time: Immediate
    My opt-out result: Effective (but see note)

    Up until recently, I had a listed landline. I now pay my phone company a monthly fee for an unlisted number, but it still showed up in places like Whitepages.

    To find out if yours does, too, enter your name and address in the search box on the Whitepages home page. If you appear in the results, click the "Claim/Edit" button. Create an account and verify your email address. Whitepages will then ring the number listed in your profile. Just answer the phone and press "1." You can then choose to unlist specific numbers in your profile, or hide the entire profile, via your profile's Privacy settings.

    Note: While Whitepages did honor my opt-out request, my record continued to show up in its search results via sponsored partners, such as BeenVerified.com, PeopleSmart.com and InstantCheckmate.com. Many of these sites have opt-out forms similar to the ones I've shared here; if you're truly committed to delisting yourself as completely as possible, you'll need to chase down these rabbit holes as you encounter them.

    PeopleSmart

    Opt-out form: https://www.peoplesmart.com/optout-go
    Verification needed: Email address
    Promised turnaround time: Up to 72 hours
    My opt-out result: Effective

    PeopleSmart is one of only two services on this list that requires you create an account in order to opt out. Once you find your record via the search box on the opt-out page, click "This is Me," create your account and confirm that you want to opt out; the service will send you a confirmation email.

    If you do not have a record with PeopleSmart, you can request a manual opt-out by providing your contact information. Note that the company says, "It can take up to 7 days for us to process this type of request."

    While PeopleSmart did remove its listing for Ken Gagne, it retained three additional listings for Kenneth Gagne. Once I'd created an account for Ken, I had to find and use a separate opt-out form for these variations on my name.

    After you've done your opting out, be sure to adjust your account settings to not receive promotional emails.

    CheckPeople

    Opt-out form: http://www.checkpeople.com/optout
    Verification needed: None
    Promised turnaround time: Up to 10 days
    My opt-out result: Ineffective

    CheckPeople.com is a paid service, but its search engine gives you a free glimpse of what it knows about you. In my case, it's an address I lived at 20 years ago and the names of everyone in my immediate family—including someone a relative was briefly married to more than a decade ago.

    To opt out of CheckPeople.com, go to the opt-out form and submit your contact details. Despite the lengthy turnaround period, my first request was not effective. I've submitted a second one and have also taken advantage of the option of mailing a hard copy of my request, with which I included a printout of my result in the CheckPeople.com search engine.

    BeenVerified

    Opt-out form: http://www.beenverified.com/optout
    Verification needed: Email address
    Promised turnaround time: 24 hours "in most cases"
    My opt-out result: Effective

    Opting out of BeenVerified is pretty painless. Submit your name and state to its opt-out form; if you find a matching profile, you can have it removed by verifying your email address.

    Intelius and subsidiaries

    Opt-out form: https://www.intelius.com/optout.php for Intelius; others below
    Verification needed: Government-issued ID
    Promised turnaround time: 7−14 days for Intelius; see others below
    My opt-out result: Effective

    Intelius is the parent company of many data brokers including PublicRecords360 and ZabaSearch, each of which must be opted out of individually. Fortunately, the process for each is similar. Unfortunately, it's the most onerous and aggressive process of any broker on this list, requiring a copy of your government-issued ID. You can block out your photo and driver's license number—only your name, address and birthdate are needed. But this means you can opt out using only the address on your current license; if your license is outdated, or if you want to remove an older address from the Intelius database, you're out of luck.

    For Intelius itself, search for your public profile and, if you find it, go to the opt-out form and submit a scan of your ID.

    PublicRecords360 also has an online opt-out form, but note that the form is powered by Google Docs. If you don't want corporate behemoths (including Google) to know your identity, then I recommend faxing your ID to 425-974-6194. (The opt-out form also says you can email your request to optout@publicrecords360.com—but the fine print states, "Requests for opt out will not be processed over the phone or via email.") PublicRecords360 says it will take 7 to 14 days to process the opt-out request.

    While my opt-out requests with both Intelius and PublicRecords360 were effective, as with PeopleSmart, I needed to find and opt out of all variations on my name at each service.

    Finally, ZabaSearch—a formerly independent service that has been acquired by Intelius—accepts requests only by fax, after which they take 4 to 6 weeks to process. There is no form or template to fill out for these requests, but again, a copy of your state ID is needed. I suggest finding your profile and including the URL with your request.

    I didn't have a listing at ZabaSearch, nor did my father, so I can't report on the effectiveness of opt-out requests.

    Intelius owns other data brokers, but these are the three that my sources referenced most often as likely to have my contact information.

    US Search

    Opt-out form: http://www.ussearch.com/privacylock
    Verification needed: Government-issued ID
    Promised turnaround time: Within 7−14 days of receipt of proof of identity
    My opt-out result: N/A

    US Search's database includes "addresses and phone numbers, social networking profiles, plus detailed background information available through public records." It used to charge for its opt-out service, which it calls PrivacyLock; now this service is free. But like ZabaSearch, it requires the offline submission of a copy of a government-issued ID.

    After you enter your name, city, state and age in the initial PrivacyLock form and find your name in the results, click "This Is the Record I Would Like to Block." Then you must print a cover sheet with your record number on it, and fax or snail-mail it along with a copy of your ID.

    Neither my father nor I had a listing at US Search, so I can't report on the effectiveness of opt-out requests.

    PeopleFinders.com

    Opt-out form: http://www.peoplefinders.com/manage/
    Verification needed: None
    Promised turnaround time: 1 hour
    My opt-out result: Effective

    To opt out of PeopleFinders, go to its opt-out page and search for your name, city and state. There may be multiple matches—for example, PeopleFinders found one record for me, but four for my father. Even though its privacy policy says the site "will only accept opt-out requests directly from the individual whose information is being opted-out," no verification is required, so for each match, I clicked "This is me" then "Opt out my info."

    But that's not all: On the next screen you must enter a Recaptcha code, check a couple of disclaimer boxes and click Continue. And PeopleFinders.com isn't above upselling you during this free process. On the final opt-out screen, don't let the service gouge you $49.95 for a copy of your background report.

    PeekYou

    Opt-out form: http://www.peekyou.com/about/contact/optout/index.php
    Verification needed: Email address
    Promised turnaround time: Typically 48 hours; some take up to 10 business days
    My opt-out result: Effective

    PeekYou relies more on social media networks than on phone directories for its information, but it still helps tie together one's discrete identities into a single profile. You'll need to use the site's main search to find your profile's URL, such as http://www.peekyou.com/ken_gagne/352169778, and copy its numerical string (352169778) into the opt-out form, along with your name and email address. You'll have the choice to delist your age or your entire profile. A reason for removal is also required, though this can be as vague as "other."

    Final words

    Unfortunately, opting out is not a one-time process. "Even though you've opted out, these sites may refresh their data from new information that comes in," says Stephens of the Privacy Rights Clearinghouse. Anytime your phone number or address changes or your information becomes available from a new broker, your details may propagate to services you've previously opted out of. One need look no further than the fine print at Whitepages.com for an example, as the site warns: "Whitepages continuously discovers new information, so please check back regularly to make sure your information is shown correctly."

    But such vigilance can help avoid even worse outcomes. Few people are more familiar with the consequences of being doxxed than independent game developer Zoe Quinn, who was doxxed in August and has since tolerated months of threats and harassment. Her recent Tumblr post "What To Expect When You're Expecting (the internet to ruin your life)" offers additional advice for obscuring private data, including removing your WHOIS info, checking your Facebook privacy settings, changing your security questions and enabling two-factor authentication.

    See our three-part series, "The paranoid's survival guide," for more steps you can take to protect your personal information:

    It's almost impossible to remove all traces of your existence from the Internet—but with these steps, you can at least feel safer in your own home.

    Rules for Creating Gorgeous UI, Part 2

    20 November 2014 - 2:00pm

    This is the second part in a two-part series. You should read the first part first.

    We’re talking about rules for designing clean and simple UI without needing to attend art school in order to do so.

    Here are the rules:

    1. Light comes from the sky (see Part 1)
    2. Black and white first (see Part 1)
    3. Double your whitespace (see Part 1)
    4. Learn the methods of overlaying text on images
    5. Make text pop— and un-pop
    6. Only use good fonts
    7. Steal like an artist
    Rule 4: Learn the methods of overlaying text on images

    There are only a few ways of reliably and beautifully overlaying text on images. Here are five— and a bonus method.

    If you want to be a good UI designer, you’ll have to learn how to put text over images in an appealing way. This is something that every good UI designer does well and something every bad UI designer does piss-poorly— or just doesn’t do, in which case you’ll have a huge leg up after reading this section!

    Method 0: Apply text directly to image

    I hesitate to even include this, but it is technically possible to put text directly on an image and have it look OK.

    Otter Surfboards. Hip and Instagrammy, but a bit difficult to read.

    There are all sorts of problems and caveats with this method:

    1. The image should be dark, and not have a lot of contrast-y edges
    2. The text has to be white— I dare you to find a counter-example that’s clean and simple. Seriously. Just one.
    3. Test it at every screen/window size to make sure it’s legible

    Got all those? Great. Now never change the text or the image, and you should be good to go.

    I don’t think I’ve ever used text directly on top of an image for any professional project, and it’s really mentioned here as a sort of “control” method. That being said, it’s possible to do to really cool effect— but be careful.

    The Aquatilis website– definitely worth a visit. Method 1: Overlay the whole image

    Perhaps the easiest method to put text on an image is to overlay the image. If the original image isn’t dark enough, you can overlay the whole thing with translucent black.

    Here’s a trendy splash image with a dark overlay.

    Upstart website has a 35% opacity black filter.

    If you hop into Firebug and remove the overlay, you’ll see that the original image was too bright and had too much contrast for the text to be legible. But with a dark overlay, no problem!

    This method also works great for thumbnails or small images.

    Thumbnails from charity:water site

    And while a black overlay is simplest and most versatile, you can certainly find colored overlays as well.

    Method 2: Text-in-a-box

    This is dead simple and very reliable. Whip up a mildly-transparent black rectangle and lather on some white text. If the overlay is opaque enough, you can have just about any image underneath and the text will still be totally legible.

    Modern Honolulu iPhone Concept by Miguel Oliva Márquez

    You can also throw in some color — but, as always, be judicious.

    Now in pink. By Mark Conlan Method 3: Blur the image

    A surprisingly good way for making overlaid text legible is to blur part of the underlying image.

    Copious blur overlays in Snapguide. Note the blurred areas are also darkened.

    iOS 7 has really made background blurring a thing recently, though Vista used it to great effect too.

    You can also use the out-of-focus area of a photo as the blur. But beware— this method is not as dynamic. If your image ever changes, make sure the text is always over the blurry bits.

    Teehan + Lax

    I mean, just try to read the byline below.

    For the love of everything good in this world, how did this get approved? Method 4: Floor fade

    The floor fade is when you have an image that subtly fades towards black at the bottom, and then there’s white text written over it. This is an ingenious method, and I have no idea who did it before Medium, but that’s where I first noticed it.

    To the casual observer, it appears that these Medium collections are displayed by plastering some white text over an image— but in response to that, I say false! There’s ever-so-subtle a gradient from the middle (black at 0% opacity) to the bottom (black at, ehhhhh maybe ‘bout 20% opacity).

    Difficult to see, but definitely there, and definitely improving legibility.

    Also notice that the Medium collection thumbnails use a slight text shadow to further increase legibility. Those guys are good!

    The net effect is Medium can layer just about any text on any image and have a readable result.

    Oh, and another thing— why does the image fade black at the bottom? For the answer to that, see Rule 1— light always comes from the top. To look most natural to our eye, the image has to be slightly darker at the bottom, just like everything else we ever see.

    Advanced move: mix the blur with the floor flade… introducing The Floor Blur.

    The “floor blur” on SnapGuide. Look mom, no overlay! Bonus Method: Scrim

    How does the Elastica blog have a readable headline on top of a dynamic image every single time? The images are:

    Yet it’s difficult to describe why the text is so legible. Take a look:

    Answer: the scrim.

    A scrim is a piece of photography equipment that makes light softer. Now it’s also a visual design technique for softening an image so overlaid text is more legible.

    If we browser zoom out on the Elastica blog, we can more clearly see what’s going on.

    There is a gradiated-opacity box around the “145,000 Salesforce Users Come out to Celebrate…” headline. It’s easier to notice against the solid blue background than against the contrast-y photos above it.

    This is probably the most subtle way of reliably overlaying text on images out there, and I haven’t seen it anywhere else (but it is pretty sneaky). Mark it down, though. You never know when you’ll need it.

    Rule 5: Make text pop— and un-pop

    Styling text to look beautiful and appropriate is often a matter of styling it in contrasting ways— for instance, larger but lighter.

    In my opinion, one of the hardest parts of creating a beautiful UI is styling text— and it’s certainly not for unfamiliarity with the options. If you’ve made it through grade school, you’ve probably used every method of calling attention to or away from text that we see:

    Solid use of color, capitalization, and spacing. Courtesy @workjon’s kid.

    There are a few other options that are possible for drawing your attention, but not particularly used or recommended:

    In my personal experience, when I find a text element that I can’t seem to find the “right” styling for, it’s not because I forgot to try caps or a darker color— it’s because the best solution is often getting right a combo of “competing” properties.

    Up-pop and down-pop

    You can divide all the ways of styling text into two groups:

    We’ll call those “up-pop” and “down-pop” styles, in honor of designers’ favorite adjective. We won’t call it “visual weight”, because that is boring.

    Case study title from hugeinc.com

    Lots of up-pop going on with the “Material Design” title. It’s big; it’s high-contrast; it’s very bold.

    The items in this footer, on the other hand, are down-popped. They’re small, lower-contrast, and a less bold font-weight.

    Now the important part.

    Page titles are the only element to style all-out up-pop.
    For everything else, you need
    up- and down-pop.

    If a site element needs emphasis, apply both up-pop and down-pop styles. This will prevent things from being overwhelming, but allow different elements the visual weight they should have.

    A balance of visual styles

    The impeccably-designed Blu Homes website has some big titles, but the emphasized word is lowercase— too much emphasis would look overpowering.

    These numbers on the Blu Homes site draw your eye with their size, color, and alignment— but notice that they’re simultaneously downplayed with a very light font-weight, and lower-contrast color than the dark gray.

    The small labels below the numbers, however, while gray and small, are also uppercase and very bold.

    It’s all about the balance.

    contentsmagazine.com

    Contents Magazine is a good case study in up/down-pop.

    Selected and hovered styles

    Styling selected elements and hover effects are another round in the same game— but more difficult.

    Usually, changing font-size, case, or font-weight will change how large of an area the text takes up, which can lead to seizing hover effects.

    What does that leave you with?

    One solid option: try turning white elements colored, or turning colored elements white, but darkening the background behind them.

    The selected icon goes from colored to white, but stays high-contrast against its background

    I’ll leave you with this: styling text is hard.

    But every time I’ve thought “Maybe this text just can’t look right”, I’ve been wrong. I just needed to get better. And to get better, I just had to keep trying.

    So I offer you this bit of consolation: if it doesn’t look good, don’t worry– it could if you were better. But hey, let’s keep on trying and make ourselves better.

    Rule 6: Use Good Fonts

    Some fonts are good. Use them.

    Note: There are no strategies or things to study in this section. I’m just going to list some nice free fonts for you to go download and use.

    Sites with a very distinct personality can use very distinct fonts. But for most UI design, you just want something clean and simple. That’s right, buddy, put down the Wisdom Script.

    Also, I’m only recommending free fonts. Why? This is a guide for folks who are learning. There’s more than enough out there at the zero-dollar price point. Let’s use it.

    I recommend you download them all right now, and then go through your downloaded fonts as you start the visual design for your project.

    The Font Book application “User” category is good for remembering what you downloaded. Ubuntu

    Ubuntu (above). Plenty of weights. A bit more distinctive than necessary for some apps— perfect for others. Available on Google Fonts.

    Open Sans

    Open Sans (above). An easy-to-read, popular font. Good for body copy. Available from Google Fonts.

    Bebas Neue

    Bebas Neue (above). Great for titles. All-caps. Available from Fontfabric— which has an awesome “Bebas Neue in use” gallery.

    Montserrat

    Montserrat (above). Only two weights, but good enough to make the cut. Definitely the best free alternative to Gotham and Proxima Nova, but nowhere near as good as those two. Available on Google Fonts.

    Raleway

    Raleway (above). Good for headlines; perhaps a bit much for body copy (those w’s!). Has a really sweet ultralight weight (not pictured). Available on Google Fonts.

    Cabin

    Cabin (above). Available on Google Fonts.

    Lato

    Lato (above). Available on Google Fonts.

    PT Sans

    PT Sans (above). Available on Google Fonts.

    Entypo Social

    Entypo Social (above). This is an icon font, and yes, once you use Entypo, you will see it everywhere, but the social icons are pure gold. Don’t feel like recreating a zillion social media logos in little colored circles? Sweet, me neither. Available at Entypo.com.

    I’ll leave you with a few resources:

    • Beautiful Google web fonts. This is an awesome showcase of how good Google Fonts can look. I’ve returned to this simple page for inspiration at least a dozen times.
    • FontSquirrel. A collection of the best fonts available for commercial use, and totally free.
    • Typekit. If you are on Adobe Creative Cloud (i.e. subscription Photoshop or Illustrator, etc.), then you have free access to a ton of amazing fonts. And yes, Proxima Nova is included.
    Rule 7: Steal like an artist

    The first time I sat down to try and design some app element— a button, a table, a chart, a popup, whatever— was the first time I realized how little I knew about how to make that element look good.

    But as luck would have it, I haven’t had to invent any new UI elements yet. That means I can always see how others have done it and cherry-pick from the best.

    But where should one cherry pick? Here are the resources I have found absolutely the most useful while designing for clients. Listed in descending order:

    1. Dribbble

    This invite-only “show and tell for designers” site has bar-none the highest quality of UI work online. You can find great examples of almost anything here.

    In fact, you should follow my work on dribbble here. Here are a few more people for you to follow as well:

    • Victor Erixon. Has a very distinct personal style– and it’s great. Beautiful, clean, flat designs. Dude’s been a designer for like 3 years and is already top of the game.
    • Focus Lab. These guys are “Dribbble celebrities”, and their work lives up to the reputation. Really diverse; always top-notch.
    • Cosmin Capitanu. An awesome wildcard. He makes things that look crazy-futuristic without being garish. Really good with colors. He doesn’t really focus on UX though— which is also a criticism of dribbble at large.
    2. Flat UI Pinboard

    I haven’t the slightest idea who “warmarc” is, but his pinboard of phone UI had been ridiculously useful to me trying to find disparate examples of beautiful UI.

    3. Pttrns

    A directory of mobile app screenshots. The nice thing about Pttrns is the whole site is organized by— wait for it— UX patterns. This makes it very nice to quickly research whatever piece of interface you’re currently working on, be it a login page, a user profile, search results, etc.

    I’m a firm believer that every artist should be a parrot until they’re good at mimicking the best. Then go find your own style; invent the new trends.

    In the meanwhile, let’s make like thieves.

    And, in the spirit of this section, the title “Steal Like an Artist” was lifted from an eponymous book that I have not read, mostly because the title seems to sum up anything that the pages might contain.

    Conclusion

    I wrote this because I would’ve loved to see this a short time ago. I hope it helps you. If you’re a UX designer, do a nice mockup after you’ve sketched the wireframes. If you’re a dev, take your next side project and make it look good. I don’t want UI to seem like it takes magical art school skills to do decently. Just observation, imitation, and telling your friends what works.

    Anyhow, this is just what I’ve learned so far, and I am always a beginner.

    If you’re still with me, you’ve read two articles totaling over 5,000 words and seen scores of illustrations and screenshots. But I’m not dead yet, so it ain’t over.

    You should hop on board my design newsletter for more analysis of design and similar stuff!

    Last thing: I do this for a living. Looking for a freelance UX/UI designer? Hire me.

    How QuizUp Mastered Android Device Fragmentation

    20 November 2014 - 2:00pm
    Posted by on November 19th, 2014

    At the bottom of this article you see the actual testcases that you can use for your own project for free.

    In the final days before the QuizUp Android launch, the small team of mobile developers and QA specialists scrambled to work out all of the kinks in their app. They had already launched on iOS, but Android was proving to be a unique challenge. Between them, they had about 10 different Android devices. It seemed that every time they fixed an issue on one device it caused a new issue on another.

    Guðfinnur “Guffi” Sveinsson, QuizUp’s QA lead, knew that if they were running into so many issues with this small sample of devices, Android fragmentation would be an even bigger problem on a larger scale.

    “We needed more devices and more time to test,” but investing in more Android devices was something they didn’t want to do, and spending more time testing on those devices would ultimately delay their launch. At that point, Guffi went in search of an alternative option: “we were looking for something that was fast and affordable.”

    There are services that use human testers, but they were too expensive and would take too long to set up. That’s when Plain Vanilla Games, the company behind QuizUp, decided on automated testing. Guffi chose testmunk, a company that let them test on 30 different devices through a remote service with easy to script testcases.

    Automated testing wasn’t just affordable, it was fast: “If we had to do this manually, we would be looking at an hour to two hours of testing on each device. Even if we had 30 devices, we didn’t have 30 – 60 hours to spend testing every build.” With automated testing, they were able to run all of their tests simultaneously on all devices in about 30 minutes in total. With the Android launch date staring down at them, that kind of time saving was critical.

    The automated testing uncovered five key issues:

    Issue 1: Display Inconsistencies

    Since Android devices have varying screen sizes and resolutions, getting everything to format properly on the screen was a problem. Plain Vanilla Games found that the early versions of the QuizUp app lacked proper alignment and labels on the smaller screens (Figure 1).

    Figure 1 – Display problems on the QuizUp login screen

    This caused usability issues, making it impossible for users to login on some devices. In some cases, some labels, such as “OR” and “Already signed up? Login now!” were completely blocked.

    Issue 2: The Overlapping Keyboard

    The next issue discovered was an issue well-known to frustrate app users, on Android phones with 4.0 and 4.3 inch screen sizes, such as the S3 mini, the S4 mini, the Samsung Nexus 4 S, and the Galaxy S Advance, the keyboard overlapped elements in the birthday wrapper. The result was that users couldn’t tap the “Ok” or “Cancel” buttons without hitting the back button to remove the keyboard (Figure 2).

    Figure 2 – Keyboard overlaps the “Ok” widget

    While issues like this don’t directly impact functionality, they are annoying to users and could result in the user abandoning the app and/or giving it a bad rating.

    Issue 3: Birth Date not Getting Populated

    The next issue was much more serious. Some data was not saving correctly, resulting in the birth date not populating (Figure 3). This was a problem across all devices running Android OS 4.0.4, but it hadn’t been discovered during manual testing. Figure 8 shows the testmunk dashboard displaying the test runs on a range of devices, with display errors being highlighted.

    Figure 3 – Data not being saved on Android 4.0.4 – Screenshot from testmunk.com dashboard Issue 4: Yes/No Buttons in the Tablet

    Testmunk provides screenshots of each step during testing. This revealed GUI inconsistencies that affected usability. For instance, on tablets, the “Yes” and “No” buttons were unreadable (Figure 4), due to using fonts that were too small. While this did not impede function, it could have made the app difficult to use for some people. Accessibility on mobile devices is an issue that’s received a lot of attention recently, and testmunk’s screenshots helped Plain Vanilla Games approach this problem more efficiently.

    Figure 4 – Labels are too small on tablets Issue 5: Error Messages Didn’t Appear

    During the sign up process, certain data is required from the user, such as a display name and birthday. If the user failed to provide correct data they should have received an error message indicating the problem. Screenshots revealed that these error messages were not being displayed (Figure 5). This made it difficult for users to create new accounts.

    Figure 5 – Comparison of screenshots before (left) and after (right) the error message problem was fixed

    Automated testing made it possible for Plain Vanilla Games to test their QuizUp app dozens of times before the scheduled launch. A process that could have taken weeks to complete using manual testing was completed within a short time period. Not only was the process fast, it was thorough; problems were discovered that had been overlooked during previous manual testing. The final result is a clean app that delivers a consistent experience to users regardless of device or OS.

    QuizUp Calabash tests to check UI inconsistencies

    Follow the guide on docs.testmunk.com to use some of the following teststeps for your own project for free.

    Feature: Quizup Scenario: Login screen Given I wait for "Login now!" to appear Given I wait for 3 seconds Then take picture Then I press view with id "textView4" Then I wait for the view with id "email_input" to appear Then I wait for 2 seconds Then take picture Scenario: Signup touch menu Given I sign up Then I press view with id "ivDialogCloseButton" Then I wait for 2 seconds Then take picture Then I press view with id "top_bar_btn" Then I wait for 2 seconds Then take picture Scenario: Signup touch menu -> topics Given I sign up Then I press view with id "ivDialogCloseButton" Then I wait for 2 seconds Then take picture Then I press view with id "top_bar_btn" Then I wait for 2 seconds Then take picture Then I press "Topics" Then I wait for "Arts" to appear Then I wait for 2 seconds Then take picture Scenario: Signup touch menu -> profile Given I sign up Then I press view with id "ivDialogCloseButton" Then I wait for 2 seconds Then I press view with id "top_bar_btn" Then I wait for 2 seconds Then I press "Beginner" Then I wait up to 10 seconds to see "ACHIEVEMENTS" Then I wait for 2 seconds And take picture Scenario: Signup switch directly to birthday wrapper Given I wait for "Login now!" to appear Then I wait for 3 seconds Then take picture Then I press view with id "email_btn" Then I wait for "Why do I need to provide my birthday?" to appear Then I wait for 2 seconds Then take picture Then I press view with id "choose_display_name_field" Then I wait Then I press view with id "choose_birthday_shadow_wrapper" Then I wait for 2 seconds Then take picture Scenario: Signup successful Given I wait for "Login now!" to appear Then I wait for 3 seconds Then I press view with id "email_btn" Then I wait for "Why do I need to provide my birthday?" to appear Then I wait for 2 seconds Then I press view with id "choose_display_name_field" Then I enter text "android-acceptance-test" into field with id "choose_display_name_field" Then I wait Then I press view with id "choose_birthday_shadow_wrapper" Then I wait for 2 seconds Given I set the date to "03-02-1985" on DatePicker with index "1" Then I wait for 5 seconds Then I touch the "Set" or "Done" button Then I wait for 3 seconds Then I press view with id "next_btn" Then I enter a random email user "android-acceptance-test" into field with id "sign_up_email_input" Then I wait Then I enter text "qwerty123" into field with id "sign_up_password_input" Then I press view with id "next_btn" Then I wait up to 10 seconds to see "WELCOME" Then I wait for 3 seconds And take picture