Tuesday, December 10, 2013

Dissecting White Collar Crime

I think that there are several reasons white collar crimes are common today. First, there is great social stigma against crimes like robbery or violence, but "creative accounting" and copyright violation are generally encouraged in our culture. The second reason, mostly restricted to management, is that earning a massive paycheck bloats the ego and makes people feel like they can do no wrong. The third reason, which I think is more prevalent in STEM fields, is that engineers and scientists are in demand and feel like they are difficult to replace. These are underlying problems that need to be addressed.

Tuesday, December 3, 2013

Things They Didn't Teach You In College

Here are some things I've learned on the job that college did not prepare me for. Hopefully it will help some people.
  • Don't lie to anyone, it does terrible things to your reputation.  Corollary: If you can't say anything nice about someone, keep your mouth shut.
  • Keep a record of your work in a spreadsheet, including hours worked. This might save your bacon one day when an enterprising co-worker accuses you, but it's mostly so you can visually see how you're doing and make corrections if necessary.
  • Deliver. You are answerable to your boss, do the tasks which are assigned to you. If your company does not use task tracking software, you should write everything down so that you don't forget anything.
  • If you can't deliver, give notice. As you gain experience you'll become familiar with your own ability to perform work. If you think you won't be able to meet a deadline you originally committed to, send a quick email to your boss letting him know ASAP.
  • Learn to communicate. I've found that many engineers are bad at this. Before you write an email, or get up from your desk to talk to anyone, lay out in your head exactly what you need and how you're going to ask for it.
  • Be mindful of office politics. You don't have to participate in it, but keep your eyes open. Much of the resistance you will get from your co-workers in a large office is tribal.

Thursday, November 21, 2013

The New Market

My brother runs a company with over a dozen employees and has published two games on Steam. Despite the size of the company, he doesn't own an office. He also doesn't have a college degree. He started the company when he was a teenager and dropped out of high school to work full-time on it.

My brother's company is entirely Internet-based. Everybody lives in a different state. A few employees live outside of the country. The employees communicate with each other and hold meetings over Skype. They synchronize their work using SVN version control software. They receive paychecks through PayPal, and more recently through online bank transfers. They advertise the game through Twitter, Facebook, and YouTube on a marketing budget of zero dollars. Most of the website, blog, and forums were built by my brother (who has never taken a programming class and does not consider himself a programmer).

This is the sort of thing that would have been impossible twenty years ago. Companies used to sell computers and software through large retail outlets like department stores and mail-order catalogs. The manufacturer had to convince the retailer that the product was able to be sold to a wide audience. Without a distribution platform, a product could not be mass-produced and sold to customers. Today high-volume retail platforms still exist and are helpful, but my brother's company got by for a year using nothing but Kickstarter and PayPal transactions. Customers came to the website, bought a game directly, and downloaded their copy of the game from the company's web server. Business is rapidly changing to fit this new direct-to-consumer market, and the barrier for entry has never been lower.

Tuesday, November 19, 2013

Trying To Get Into Open Source

Back in September I tried to work on an open source project for a game called Empyrea. I had backed the Kickstarter, but the creator quit working on it full-time and offered everyone refunds. Most backers refused the refunds and asked him to release the source code instead, so he did. It was early-production, written in Python (not my first language), and each source file was a distressing wall of thousands of lines of code. Sadly, I had to give up after only a few hours of trying to add a world export feature. I had thought that working on open source would be fun and exciting, but I was shocked to learn that open source projects are as difficult to develop as work and school projects (if not more!)

Monday, November 11, 2013

"Year of the Linux Desktop"? More like, "hey, buy our new linux phone, okay?"

On May 30th 2013, Mark Shuttleworth marked Ubuntu bug #1 as "fixed". The bug was a vision statement for Ubuntu Linux which was titled, "Microsoft has a majority market share." The reproduction steps were "visit a local PC store... attempt to buy a machine without any proprietary software." Shuttleworth wrote a post explaining why he marked it as fixed. Was it because you can walk into a PC store and see Linux computers on sale today? Well, no... Instead Shuttleworth explained that Android was a major share of "mobile computing", mentioned the Ubuntu Azure and Ubuntu Cloud programs, and declared "from Ubuntu's perspective, this bug is now closed." Meanwhile, yesterday I ran Ubuntu 13.10 in a virtual machine and suffered severe lag on the desktop due to fancy desktop graphical effects which cannot be disabled. Well played, Mark.

Thursday, November 7, 2013

Nintendo Sells Nintendoes

Three months ago a Nintendo CEO explained to investors why a Mario game would not be sold on the iPhone. I love this story because it demonstrates how shareholders do not always have the company's best interests in mind. An antsy investor can flip his stock at any time, but owners and employees are in it for the long haul. In this case, investors want Nintendo to sell their games on their competitor Apple's hardware. Although there is a market demand for what the investors want, Nintendo's console-based business model would suffer in the long run. Nintendo sells Nintendo games, which cease to be Nintendo games if they're not sold for Nintendoes.

Thursday, October 31, 2013

Pulling the Rug Out From Under Patent Trolling

Patent trolling is a phenomena caused by the current state of patent law. Most engineers and entrepreneurs believe that it drains money from them, and is a blight on the industry. Many proposals for patent reform aim to reduce the duration of copyrights and patents. I think that the real problem is economic. The current state of affairs allows patent trolls to spend very little money to sue and expect a relatively large amount of money in return. Major patent and copyright reform is not necessary to solve this. Laws should be written to make patent trolling (when the plaintiff is clearly in the wrong) extremely expensive for the plaintiff and worthwhile for the defendant. Ideally, when I am sued by a patent troll, I should be happy and consider it a financial windfall.

Monday, October 21, 2013

Basic Computer Security, aka "How To Fly A Computer"

This is adapted from a post I originally made on a Facebook group after two members started posting spam from their accounts.

Computer Security For Normal People:

1) Pick passwords with both letters and numbers. This is an easy way to protect yourself from bots that use simple automated attacks to guess your password. The first documented computer cracking case in 1986 involved a cracker who wrote a program that guessed passwords from a dictionary.

2) Make sure your email account's password is different. If someone can guess your password on your twitter account, he might try the same password on your bank account. Make sure your email password is different than every other password. It's not necessary to have a different password for every single website you use, but you should have more than one to protect yourself. For example, I have a "dumb" password for services that I don't plan on using more than once, a "secure" password for services where I care about privacy and people doing things with my name, and a "banking" password for services where getting the account cracked would be real-life inconvenient and require me to file paperwork.
 

3) Keep your computer's software up-to-date. If you're running Windows, then use Windows Update. Make sure you install all updates that are marked important, then change your Windows Update settings so that your computer automatically downloads your updates for you. If you're running a Mac, you should be fine unless you have trouble with #5.
Also make sure your web browser is always up-to-date. If you're using IE6 you're doing it wrong. Older versions of Flash and Java have security holes, make sure they are up-to-date too.

4) Use antivirus software. Microsoft distributes an excellent lightweight antivirus called Microsoft Security Essentials. http://windows.microsoft.com/en-us/windows/security-essentials-download Schedule your computer to scan itself monthly.

It's probably not the best idea to run two antiviruses on your computer. Use whatever one you have available. If your computer came with a trial version, it should be okay as long as the trial keeps its virus definitions up-to-date.

5) Don't run it if you don't know what it is. If your computer tells you it wants to run software and you don't know what it is, click No, click the X on the window, or press Escape. Do not download and run software from sources you do not trust or do not recognize.
If in doubt, Google things and do some research. Be wary of fake reviews, scammers are known to pay people to write tons of positive reviews to inflate their review scores and search rankings. Look closely at the URLs of download links (right-click and copy the link into a new browser tab if you're not sure), it's common for scammers to register temporary short-URL sites on co.uk and similar sites. Only the last two parts of a domain count, "download.microsoft.com.totallynotascam.co.uk" is a bogus site.

 6) Check your plugins. One of the most common types of malware is web browser "toolbar" plugins. Check what plugins and extensions are installed on your web browser, and research any you don't recognize.
Facebook and Twitter now allow external apps which can get access to all of your personal information, and also can expose information about your friends. For Facebook, click Settings (the Gear icon in the upper-left)>Account Settings, then click the Apps tab on the left. For Twitter, click the Settings Icon (the gear)>Settings, then click the Apps tab on the left. If you see an app you don't recognize or don't use, it's probably best to remove it.

Thursday, October 17, 2013

Public Security

Imagine a meteorologist calculates that there is a 50% chance of rain this afternoon. It's his job to report the weather. But instead of forecasting possible rain, he tells the local newspaper to write that it will be sunny. In the afternoon it rains, ruining a parade the city had scheduled and severely damaging some parade floats. The parade could have been postponed to tomorrow, but now the city's budget has been wasted. The meteorologist is asked why he was carrying an umbrella, and he reveals that he knew there was a good chance of rain. "But I didn't want to ruin anyone's day," he says. "After all, the weather was very nice in the morning."

This is an analogy for computer security. Many powerful organizations want to silence people who find holes in their systems. For example, Andrew Auernheimer was convicted for publicizing security flaws he found in AT&T's systems. Another example was recorded by Charles Stoll, who mentions password security being undocumented because certain government agencies were slow to adopt stronger passwords. This is an effort to promote "security by obscurity" (which is considered a Bad Idea in the field of computer science). Large organizations that hide flaws are clearly acting in self-interest. Seeking to hide one's shortcomings at the expense of others is reprehensible.

There is another side to this problem. Hackers of any type are not justified when they leak information irresponsibly. (See The Washington Post's 2013 coverage of NSA leaks for a good example of how to leak classified information.) System administrators should respectfully consider any reports of security holes. Users who find flaws in the systems they use should report bugs appropriately. And (this one's for everybody), users should avoid using systems that are insecure and warn their friends.


Tuesday, October 8, 2013

The Living Room PC

http://steamcommunity.com/groups/steamuniverse#announcements/detail/2145128928746175450

The living room PC is going to be the next major consumer electronic device. We already have smartphones and tablets which are extremely popular because of their convenience. There is a great market niche for a PC that is as simple to operate as a DVD player. Consumers will connect their living room PC to their television to watch Netflix, Hulu, Youtube, and other content that is easy to interact with. Video games will also be a driving force, especially with the large library of PC games consumers can play. The console market is a stagnant, closed environment compared to what PCs can do. The only reason the living room PC is not mainstream is the business model; the average manufacturer sees it as a niche market with slim profit margins. But hardware is getting cheaper and will soon hit a critical turning point when it becomes cheap enough. Valve has the same business model as the console manufacturers: they will use this product to sell more video games and profit from promotions with video streaming services. I would bet Apple has plans for this too because they have massive leverage with their iTunes and App library. If consumers are shy about purchasing a somewhat expensive living room PC, manufacturers can compensate by including $50 of credit for whatever distribution service comes bundled.

Wednesday, October 2, 2013

The Argument For Working For A Small Company

Last week I talked to several co-workers about their prospects after college. Nearly all of them plan to work for large national-level firms. Shockingly, none of them mentioned any kind of small business or start-up prospects. I worked for both large and small companies in the last seven years and feel that I am able to speak from a position of authority on this. I won't say that graduates shouldn't work for a large company; both large and small companies have their benefits. Small companies have the benefit of close interaction with managers, close interaction with customers, and more freedom to innovate and control products. I think that every college student should have the experience of working for a small company before graduation. Students owe it to themselves to know what they're getting into (or missing out on).

Tuesday, October 1, 2013

Iterative Design

http://www.designer-notes.com/?p=654





I would like to discuss bottom-up design in video game development. It is very common in video game design to start with the end-user experience. "They will do this, and then they will feel this, and then this will happen." This often completely ignores the underlying low-level systems and features that deliver that experience. When a project nears its deadline, many of those features and experiences will be thrown out. This can ruin the gameplay pacing that the game designer wanted at the start of the project. A much more sane approach is to start with mechanics. Programmers can develop small tools, tech demos, or proof-of-concept applications. These small pieces can each be tested on their own to find the few which stand well on their own, or certain combinations which provide an enjoyable experience together. These software facets should be built with no context in mind, because they are ideas that may prove to be worse than the designer originally thought. Even a large software project can progress in this manner with frequent testing and iteration. If many small ideas are presented to a skilled designer, or to the team as a whole, the team can quickly decide which ideas have merit and which are a waste of development time. The result is a higher-quality product which can be coherent despite the piecemeal method used to design it.

Monday, September 23, 2013

RE: Carnegie Mellon Study On Gender and Computer Science

www.hackingplay.com/carnegie-mellon-study-on-gender-and-computer-science/

This is a telling article. It demonstrates that the gender gap in computer engineering can be overcome with surprisingly little effort. Decades have been spent cultivating this "basement nerd" stereotype, especially by film and tv shows. The average high school student thinks that engineering requires "the knack" which a few socially unbalanced people are born with. No! Computer science is about real-world applications of beautiful math. Most importantly, good computer science requires the ability to contribute to a team without causing conflict.

Wednesday, September 11, 2013

Google Fiber and inequality

Google's recent fiber program is coming to Provo soon. The lowest 100 megabit tier is practically free (7 years for $300). So why is it free, and why in Provo? The simplest and most obvious answer is, "it makes Google money". Google sells advertisements through passive views and clicks; more people on the Internet means more money for Google. Google might be losing a lot of money on Google Fiber, but delivering free advertising for a minimum of 7 years is an excellent investment. Google, being a rational company, seems to be choosing Google Fiber cities where people are 1) most likely to use internet, and 2) most likely to appeal to Google's advertisers. Provo is full of college students and large middle-class families who are excellent targets for advertisers. But then this begs another question: "what about communities that don't appeal to Google's advertisers, and what are they supposed to do to compensate for not having fiber internet in the coming decades?"