background preloader

Programming Guides

Facebook Twitter

Mobile Design

How to be a Programmer: A Short, Comprehensive, and Personal Summary. Debugging is the cornerstone of being a programmer.

How to be a Programmer: A Short, Comprehensive, and Personal Summary

The first meaning of the verb to debug is to remove errors, but the meaning that really matters is to see into the execution of a program by examining it. A programmer that cannot debug effectively is blind. Idealists that think design, or analysis, or complexity theory, or whatnot, are more fundamental are not working programmers. The working programmer does not live in an ideal world. Even if you are perfect, your are surrounded by and must interact with code written by major software companies, organizations like GNU, and your colleagues. Debugging is about the running of programs, not programs themselves. To get visibility into the execution of a program you must be able to execute the code and observe something about it.

The common ways of looking into the ‘innards’ of an executing program can be categorized as: Some beginners fear debugging when it requires modifying code.

Web Design

Offline First – A better HTML5 User Experience » Joe Lambert. This year at Full Frontal, offline enabled web site/apps were a recurring theme.

Offline First – A better HTML5 User Experience » Joe Lambert

Paul Kinlan gave an excellent talk entitled ‘Building Web Apps of the future. Tomorrow, today and yesterday’ (his slides are available here), in which he compared the ‘offline’ user experience provided by the top 50 or so iOS and Android apps with that of popular web sites/apps. Needless to say, the native apps fared better and more gracefully degraded when no internet connection was available. Offline is a feature and it’s crucial we start to consider it from the start of a project as apposed to adding support later in the development lifecycle. At Rareloop we’ve been focussing on adding offline support to our apps from the start. Note, I’m not going to discuss how to cache your app assets (e.g. 1. Historically when creating content for the web the server does the majority of the heavy lifting. James Pearce also touched on this at Full Frontal (slides), with a slightly tongue in cheek statement: Summary: 2.

Thanks ever so much Java, for that biz-wide rootkit infection. High performance access to file storage Sysadmin blog Right on cue, Java has responded to my hatred in kind.

Thanks ever so much Java, for that biz-wide rootkit infection

Shortly after I awoke to discover my previous article denouncing the language had been published, a client called to inform me his computer had contracted some malware. Java has, if you'll forgive the anthropomorphization of a bytecode virtualization engine, decided to exact its revenge. Closer inspection of the infection revealed deep network penetration that the installed antivirus applications were completely unable to cope with. The chief financial officer of the company relies on cloudy applications that require Java-in-the-web-browser. I have no idea what the initial vector was beyond the swift appearance and disappearance of some malicious Java archive files; the primary delivery mechanism scrubbed itself clean (along with significant chunks of the browser history) right after it downloaded its payload onto the compromised Microsoft Windows PC.

Zeroaccess is a nightmare. WebPlatform.org — Your Web, documented. Learnable Programming. Here's a trick question: How do we get people to understand programming?

Learnable Programming

Khan Academy recently launched an online environment for learning to program. It offers a set of tutorials based on the JavaScript and Processing languages, and features a "live coding" environment, where the program's output updates as the programmer types. Because my work was cited as an inspiration for the Khan system, I felt I should respond with two thoughts about learning: Programming is a way of thinking, not a rote skill.

Learning about "for" loops is not learning to program, any more than learning about pencils is learning to draw.People understand what they can see. Thus, the goals of a programming system should be: to support and encourage powerful ways of thinkingto enable programmers to see and understand the execution of their programs A live-coding Processing environment addresses neither of these goals. Alan Perlis wrote, "To understand a program, you must become both the machine and the program. "