Posts tagged with "Tech"

Large

Scriptable Applications and the Web

March 15th, 2010

Scriptability is a great feature to have in your application. It’s neglected far too often by application developers, for a number of reasons. The developers might be skeptical of the benefits, they might not understand how easy it is to add, or they might not suspect that any of their users would want to write code. (Only in very rare cases is it actually undesirable.) As applications move to the web, scriptability becomes even more important, but also more flexible for both you and the user.

Large

Poor Man's Webspider

March 1st, 2010

Webspiders are fun, but the learning curve is awfully steep. Websites don’t like crawlers stumbling about where they’re not wanted, and barriers as simple as a login screen can stymie a beginner. Add in checks on user agents strings and javaScipt-heavy links, and your weekend is over before you’ve gotten anything to work—side project over! This blog post will show you how to turn your browser and lamp server into a spider capable of taking you straight to the fun.

The Basic Idea

A greasemonkey script will pull data off the pages we’re interested in and send them to a php script. The php script will then tell the greasemonkey script what to do next: either open an alert box telling the user something went wrong, or move on to another url.

Large

The Case for IPv6

February 22nd, 2010

IPv4 has served us well. It got the internet off the ground. It’s time to move on.

It’s a common joke made amongst network engineers that the internet was an experiment that escaped the lab before it was finished. The first time I heard that was from Paul Vixie during a talk at USENIX around 1995 or so. The most recent time I heard it was from Vint Cerf during a talk about IPv6. I find it funny because it’s kinda true. When the addressing scheme for IPv4 was decided, it was still an experiment in a lab, and the designers of the protocol figured they would have an opportunity to change the addressing at a future date. Then the internet became wildly popular and took off beyond anyone’s wildest imagination. We’re rapidly running out of available IP addresses.

Large

Design Critiques for Non-Designers

February 15th, 2010

You may have noticed that our society is becoming increasingly driven by visual communication. From billboards to magazines to websites to computer applications, people are more tuned in than ever to the aesthetic of the designs they encounter. Most of the time this visual processing is done sub-consciously, to the point where you might think that every day people aren’t sensitive to good and bad design. However, there is definitely a proven correlation between good design and the resulting trust and love of your product or service. This is why it’s important that people learn how to think about and talk about design to others even if they’re not a designer themselves.

Large

A Pamphlet On Surviving the Web Development Wilderness

February 8th, 2010

So here we are on the eve of a public beta launch for a project we have all been working extremely hard on. In a flurry of excitement and anticipation we have spent the last few weeks buttoning up absolutely every tiny detail we can to muster the strength and time for. My team is responsible for a web app interface (built on rails) to our new service. In the current push to get everything in order and prepare ourselves for the onslaught of real users we have been repeatedly telling each other how lucky we are that we have good test coverage and an excellent work-flow.

Large

Stateless Tests in a Stateful Protocol

January 25th, 2010

Lets suppose you want to test the correctness of a protocol. I know I do, all the time; get me that input fuzzer. A typical way to start might be a minor variation on how I learned to test my code in CSE 142 and hadn’t really thought too much about since: plug in some “representative” values and see if it does the right thing. But let’s suppose someone came over with a pile of documentation and said “Here. Some genius in the back room made this insanely complex server that apparently speaks this protocol, and somehow managed to do it without so much as a single unit test. Can you test it? By the way, we want some guarantees about security.”

Large

Multikernel

January 18th, 2010

I’ve always been a bit of an operating systems junkie. It suits my hacker nature because kernel hacking requires tinkering and taking things apart, which is something I’ve been doing since I was a child. Naturally, when a new operating system comes along, the first thing I want to do is install it either in a VM or preferably on real hardware.

Large

Border Stylo's Making the Site

January 11th, 2010

It’s been just over a month now since we launched the latest redesign of borderstylo.com and to celebrate I am going to let you know a little about the design process behind it. When I say design, I don’t mean beautiful images and colors filling the page, instead I am referring to design as the organization of information and how the user interacts with this information.

When the average user interacts with a site they usually don’t pay attention to the design they are interacting with. They probably couldn’t tell you the difference between good and bad design outside the fact that they like one over the other. With that in mind, they probably have little understanding of what the design process is like, which is why I’m gonna share a little bit on the process I took with the borderstylo.com redesign.

Large

Top Ten Geek Destinations In L.A.

January 4th, 2010

Los Angeles isn’t particularly known for its geek culture, but in a city this big, there’s something for everybody, even us nerds.

Large

Do You Kanban?

December 21st, 2009

Software development is hard.
In fact, 66% of software projects fail, according to The Standish Group, a globally respected research firm.

In 2001, 17 well known leaders in the software industry gathered in Utah to ski, I mean, to attempt to create a set of best practices for the software industry.

Large

The Resurgence of Dynamic Coding

December 14th, 2009

In the past few years, dynamic languages have enjoyed a surge in popularity. Not just among the coders who would have been using them all along, but even around the coders whose managers keep saying things like “Enterprise” and “Leveraging Synergistic Content Management Social Media Next-Generation Beta Podcasting Outside the Box”. (Side note to such managers: your coders’ eyes glaze over as a defensive mechanism. It’s nothing personal; it’s just like what happens to you when they say things like “Oh of En Log En Virtual Machine Scalable Output Stream Socket Runtime”.)

Large

Gems in Scheme (Part 3)

October 19th, 2009

In my last post I described the use of call-with-current-continuation to implement coroutines, thus inverting for-each-style iterations into cursor-style iterations. I noted that this looks very similar to using threads.

This is part 3 of our Gems in Scheme series.

Large

YAJ: Yet Another Javascript?

October 12th, 2009

The exponential growth and popularization of “the internet” was helpfully fueled by a flawed ‘language’ – the HyperText Markup Language. HTML is a subset of SGML – the ‘Standard Generalized Markup Language’ standards for structuring and processing documents. HyperText are navigable references to other ‘text’ (images, video, tabular data, stock quotes, etc). We ‘click’ hypertext ‘links’ to navigate from website to website.

Large

Javascript dependency management made easy like Sunday morning

October 5th, 2009

Javascript does not have any kind of dependency management built into the language; rather you have to use external tools to do the management for you. We have a rather large Javascript code base, and Rake is our build management tool, so the natural choice for me was to investigate available Ruby solutions; unfortunately, none of them worked well for me.

Large

What to do with all the heat?

September 28th, 2009

When I started with Border Stylo one of my first questions was “Where is/are our server/servers for the office?” “Well….we have a time capsule.”

We needed to change that quickly. Even for simple things like DHCP and control of our internal DNS not to mention centralized resources such control of our own wiki, etc.

Large

Pair Programming Remotely

September 7th, 2009

I created this screencast about pair programming remotely.

It’s a way for developers to work together when they are not at the same office. We plan to use it when a team member works from home.

Large

The Many Flavors of Curry

August 31st, 2009

Many functional languages have this nifty feature called ‘currying’ or ‘curried functions’. The name comes from the logician Haskell Curry (son of Samuel Silas Curry — someone please hook me up with wherever they are getting these names!), for whom the Haskell programming language is also named. Currying is a technique for making partial applications of functions first class objects in an intuitive way.

Large

Types and Type Theory (part 2)

August 24th, 2009

In my previous post I mentioned different ways in which programming languages (and programmers) make use of types and type theory. In my next post I would like to describe the formal system which underlies almost all typed programming languages, the “simply-typed lambda calculus.” But before I get to that, I need to explain the (untyped) lambda calculus, its history, motivation, and functionality.

This is Part 2 in a multi-part series on the subject of Types and Type Theory.

Large

Gems in Scheme (part 2)

August 17th, 2009

In my last post I described some of the use of call-with-current continuation for non-local or other sorts of dynamic exits. These uses of call/cc are similar to exceptions in many other languages, or a catch/throw mechanism.

This is part 2 in our Gems in Scheme series.

Large

Introducing Cucumber

August 10th, 2009

Most people write about the goodness of Behavior Driven Design from a pure tech perspective, but convincing your company involves a lot more. This blog article tries to bring it all home for everyone.

“…At first your designers will cry about actually having to think through their design. Then they will find it extremely useful to their process and never let it go…”

Large

Types and Type Theory

August 3rd, 2009

Programmers are all familiar with types.
Usually, their first experience with types comes from variable declarations in a language like Java or C, which look like the examples in (1).

This is Part 1 in a multi-part series on the subject of Types and Type Theory.

Large

Gems in Scheme

July 27th, 2009

One sometimes hears that call-with-current-continuation is useless or pointless. Such things have come from the Python developers, and while Ruby 1.8 had a call/cc method, it’s not clear if it will survive in the next major release, allegedly because it’s “useless” or “too expensive”.

In fact, I tend to think that in fact, these developers simply don’t understand what call/cc is about or why it is valuable. So I’ll show some examples.

This Part 1 of our Gems in Scheme series