- Flavio Ribeiro et al. have released components of the video processing workflow at the New York Times to the open source community.
- Adam Conner-Simons describes Gitless, developed at MIT. The tool is intended as a gentler introduction to the Git mindset—no stashing required.
- Phil Sturgeon makes a succinct comparison between REST- and RPC-based APIs. One isn't better than the other; they're just different.
- RPC-based APIs are great for actions (that is, procedures or commands).
- REST-based APIs are great for modeling your domain (that is, resources or entities), making CRUD (create, read, update, delete) available for all of your data.
24 November 2016
Links roundup: 4
14 June 2012
Decentralized
18 February 2012
Home base
Back at Siteworx Reston after an extended stay onsite, and after a couple of moves and cubicle reconfigurations, here's what most of my work surface looks like now. Oh, and after receipt of peachy Valentine's Day flowers from Leta.
A really nice chair, a big Kensington trackball that they don't make anymore, a monitor and a half (the laptop), and a good-sized shelf for books above. Need to do something about that tangle of USB cables.
07 December 2011
dmr
But [Ken] Thompson and the others helping him knew that the PDP‑7, which was already obsolete, would not be able to sustain their skunkworks for long. They also knew that the lab's management wasn't about to allow any more research on operating systems.So Thompson and [Dennis] Ritchie got creative. They formulated a proposal to their bosses to buy one of DEC's newer minicomputers, a PDP-11, but couched the request in especially palatable terms. They said they were aiming to create tools for editing and formatting text, what you might call a word-processing system today. The fact that they would also have to write an operating system for the new machine to support the editor and text formatter was almost a footnote.
13 October 2010
'N Sync
But I was faced with a new annoyance. Every rsync or ssh to the VM required me to type my password. (The other way with SMB, I just left a shell window open already logged in to the VM.)
(Hunh. I suppose I could have set up rsync to pull from the VM rather than push from the laptop. Never thought of that.)
Anyway, the team's wiki links to a helpful crib on how to make RSA keys to perform an automatic login with ssh, but my first efforts failed. Colleague Harold provided the missing piece. He checked
/var/log/auth.log on the VM and found an error message that indicated the file permissions on my home directory were too open. We did a chmod 755 on my home directory, and I was in!
12 March 2010
DISP=(NEW,CATLG,DELETE)
Do you do your own JCL?
I understood the question, at least. And I answered truthfully that, no, I wasn't equipped for that, not yet. But what I kept to myself was, "JCL? How hard can that be? It's just a command language for batch jobs." (I had already mastered one DEC command shell and thought I knew nearly everything.) Dan Wohlbruck illustrates how naive I was.
I didn't get the job, of course, but nearly ten years later I finally made my acquaintance with OS JCL. We have since parted, but we have agreed to remain friends.
15 December 2009
All your database are belong to us
Plus, for dessert, Dan Murphy writes about the origins of TECO. Back in graduate school, the guy that turned over to me the project supporting the marketing research study tried to teach me TECO, but I bailed out and made do with SOS.
09 October 2008
Toolable?
[I also learnt to] design the language to be well-toolable. This does impact the language in subtle ways – you’ve got to make sure the syntax works well for having a background compiler, and statement completion. There are actually some languages, such as SQL, where it’s very hard to do meaningful statement completion as things sort of come in the wrong order.
14 July 2008
My Toolbox
Languages
My assignments in this Microsoft shop call for declarative and/or imperative code in the following languages:
- C#: we're using version 2.0 of the .NET framework
- SQL: both DDL and DML; we do most of our development against SQL Server, but we also support Oracle
- HTML: the app itself uses XHTML 1.0 Transitional, and the generated surveys are HTML 4.0 Transitional
- JavaScript: we don't rely heavily on JavaScript, at least not directly, but we do use it as a glue language
- CSS
- XML
We use the little languages regular expressions and XPath expressions. ASP.NET markup to declare a server control or to code a @Page directive is a little language too, but isn't it interesting that it doesn't have its own name?
We have legacy code that uses Delphi and XSL/T.
Compilers, etc.
At any given moment, my desktop may have windows open for the following tools. In the course of a week, it's almost certain that I will use all of these.
- Visual Studio 2005
- SQL Server Management Studio
- Perforce Windows Client, for access to the source code repository
Perforce's means for coding client specs is its own perplexing little language. We depend a lot on the context menu pick Create/Replace Usingas Template... - Firefox 2, equipped with ColorZilla, Firebug, Flashblock, View Source Chart, and Web Developer
- Internet Explorer 7, equipped with IE7Pro and IE Developer Toolbar
- a VMware workstation running Internet Explorer 6, for more browser compatibility testing
- Remote Desktop Connections to other servers
- a paint program for managing screen shots: my GUI team lead likes Jasc Paint Shop Pro
- UltraEdit: clunky like a Swiss Army knife with too many blades, but it handles .csv files that Excel can't, and it can make XML readable
- any of two or three different file compression utilities
- a command line
We're starting to use Team City for automated builds. Some people on the team swear by ReSharper, but I find that it just slows down my compile and test cycle. Every once in a while I'll need to pop open the Windows Services manager, or the IIS Manager to set up a new web site. My boss likes Beyond Compare, so it's installed on my machine, but I'm lazy and never bothered to learn how to use it; I depend on the default comparison tool provided by Perforce. Now that I look in there, I see that there's a lot of stuff in my Start Menu that I've never used. And sometimes I'll have a pattern-search chore than I can't use Visual Studio or Windows Explorer's Search for (maybe wading through web server log files), and then I'm glad that I have a copy of Windows Grep.
Third Party Controls and Libraries
For everything from managing Ajax interactions, to business graphics, to file-format translations, to fancy web controls, we license tools from ComponentArt, Dundas, Aspose, Telerik, and Steema Software. And, as I posted earlier, we built the Community Builder Module with DotNetNuke.
Communication
When I log in, Microsoft Outlook and AOL Instant Messenger automatically launch. I treat IM software as a necessary evil, as most of the rest of the team likes to use it.
We use FogBugz for bug tracking, and we've just started using its integrated wiki for documenting procedures, tracking issues that are more complicated than individual software defects, and advance planning. I really prefer wiki software that puts you in control of the final product (like MediaWiki, which powers Wikipedia), but we chose a tool that could be picked up by a broad base of users.
Lest we forget, for project specs and planning: Microsoft Office, primarily Word, Excel, and Project, with a smattering of Visio.
The Desktop
Sitting on my desk, holding up my telephone, is a PC running Windows Server 2003. The shelf over my monitors is holding about a dozen books, but I only pull out three or four of them. The one I go for most is Spainhour & Eckstein's Webmaster in a Nutshell. For more details, I rely on my Safari subscription. And, perhaps most importantly, a big desk pad loaded with paper.
15 February 2008
DotNetNuke: Early returns
Typically, a module is written as three user controls: a View, an Edit, and a configuration Settings combination view/edit. The View control might present a grid or list of entities (blog posts, say), and then the Edit control would be used to edit one existing entity or create a new one. Or the View module might just be a widget that encapsulates content from another source, like a stock ticker or a Google map, and there would be no Edit module.
DotNetNuke (ugly name, that) is open source, and the weak API documentation reflects this fact. The search engine is often overloaded, so I've taken to using Google to search within the site. And it's usually the case that a method or property just isn't described in sufficient detail. Sometimes the only hits are someone's unanswered question in a forum: "Does anybody know how this thing works?" There is a book from Wrox of middling quality, Professional DotNetNuke 4.
One of the services that the DotNetNuke framework provides is caching of module content. If your module is serving semi-static text (like a Welcome box) or slowly-changing data like automobile traffic reports, you probably don't need the content to be refreshed second-to-second, and the admin can configure an appropriate cache timeout. But if your module provides any interactivity and validation (for instance, a new user registration control that collects name and address), you really don't want anything to be cached. When you, the developer, prepare a module for deployment, you can specify a default cache timeout of 0 seconds. But you can't count on that value being used in all deployments. I predict that a lot of our support calls will center on caching issues.
We've also noticed some problems, not well-described, with ASP.NET validator controls running client-side, and so we've specified
EnableClientScript="false" for everything.
25 June 2007
Stone soup
Commercial software—the kind you sell to other people—is a game of inches.
Every day you make a tiny bit of progress. You make one thing just a smidgen better. You make the alarm clock default to 7:00am instead of 12:00 midnight. A tiny improvement that will barely benefit anyone. One inch.
There are thousands and tens of thousands of these tiny things.
This past week I began contributing to the development team's wiki: a compendium of product management information that includes everything from profiles of our competitors, to product plans for the next year or so, to resources for software engineers like tips on debugging. Just a few pages, but they will make the wiki just a bit more useful, and therefore make it just a bit more likely that other people on the team will contribute and read. And ultimately, our product line will be just a bit better.
13 June 2007
Version 22?
Back in the day, I could hack my way to a couple of useful macros: reformatting tricks, and I seem to remember making a VT100 act like a Prime Computer block-mode terminal, something like that. But I never drained the cup of Kool-Aid, like using the editor to run the COBOL compiler and my regression test suite.
(Link via Compiler.)