Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

February 08 2013

Distributed resilience with functional programming

Functional programming has a long and distinguished heritage of great work — that was only used by a small group of programmers. In a world dominated by individual computers running single processors, the extra cost of thinking functionally limited its appeal. Lately, as more projects require distributed systems that must always be available, functional programming approaches suddenly look a lot more appealing.

Steve Vinoski, an architect at Basho Technologies, has been working with distributed systems and complex projects for a long time, first as a tentative explorer and then leaping across to Erlang when it seemed right. Seventeen years as a columnist on C, C++, and functional languages have given him a unique viewpoint on how developers and companies are deciding whether and how to take the plunge.

Highlights from our recent interview include:

  • From CORBA/C++ to Erlang — “Every time I looked at it, it seemed to have an answer.” [Discussed at the 3:14 mark]
  • Everything old is new again — “Seeing people accidentally or by having to work through the problems, stumbling upon these old research papers and old ideas.” [7:20]
  • Erlang is not hugely fast — “It’s more for control, not for data streaming.” [16:58]
  • Webmachine — “[It's what you would get] If you took HTTP and made a flowchart of it … and then implement that flowchart.” [23:50]

  • Is Erlang syntax a barrier? [28:39]

Even if functional programming isn’t something you want to do now, keep an eye on it: there’s a lot more coming. There are many options besides Erlang, too!

You can view the entire conversation in the following video:

Related:

November 30 2012

Emerging languages spotlight: Elm

Over the next few months I’ll be taking a look at new and emerging programming languages. The following piece is the first in this series.


The Elm Programming Language, created by Evan Czaplicki, tackles web interaction and takes on the big three — HTML, CSS, and JavaScript. I recently had the pleasure of sitting down with Czaplicki to talk about why he decided to take on this daunting project and how Elm could revolutionize web programming.

Czaplicki was working on a front-end web project and he was thinking about how is it that web development can be “so frustrating in a way it didn’t have to be.” That was the day Elm was born (he talks about that moment in this segment of our video interview).

Today’s websites bear virtually no resemblance to those from 10 years ago, so why are we using the same tools? Cyclical upgrades to HTML, CSS and JavaScript have certainly enhanced and improved upon older versions. HTML5 has taken some great leaps forward. But we’re still using the core.

Coming from a functional programming background led Czaplicki to think about web programming from the perspective of functional reactive programming. What is functional reactive programming? It takes away the idea that interaction between a website and user is static — updating only at certain moments or clicks — and inserts the capability to update as events happen, like mouse movements. Czaplicki gives more detailed insight here.

Ok, let’s say we buy into this … it seems like a new way of thinking about web programming that will take projects to a new level. But why would you actually change from tried and true HTML, CSS and JavaScript? Czaplicki makes a few good arguments worth mulling over as you think about what language you should use on your next project, starting with the foundational idea that all of the established web languages have “deep semantic problems.” Then he touches on how “surprisingly difficult” CSS and HTML can be to work with for simple tasks, such as vertical centering and text placement. And Czaplicki promises, “Elm allows you to create asynchronous code without callbacks.” That’s something JavaScript does not allow.

Compelling reasons, but will Elm make it to the level of any of these three powerhouse web languages? Czaplicki lays out his roadmap thusly: in the short term he wants to add more features and libraries, then try to garner industry support, and delve deeper into the theory of functional reactive programming as it relates to the implementation of Elm.

I, for one, think it has a chance and that Czaplicki’s paradigm-breaking look at how the web can be programmed helps all web developers.

Our full interview is available in the following video:

Related:

October 24 2012

CSS keeps growing

Eric Meyer, the author of CSS: The Definitive Guide (and much more) has taught thousands of people CSS through his books, his talks, and his articles. I’ve always enjoyed hearing his take on the state of CSS, as he manages to find combinations of capabilities that make CSS more powerful than I thought it was when I first looked.

We sat down last week to discuss the many huge changes CSS3 is bringing, from improvements to old capabilities to completely new tools for animations, transforms, and layout. The continuous rate of change and the size of the specification are driving him to serialize the next edition of the Definitive Guide, releasing it in pieces. Developers can work from familiar foundations, but reach new destinations. The declarative strength of CSS3 lets you create presentation by describing it, and that style keeps proving more powerful.

Highlights of the interview include:

  • CSS3 brings big changes in font capabilities, letting you send fonts to users [discussed at the 2:30 mark] and sites putting those improvements to work [15:50].
  • The many options can make choosing a set of parts seem difficult [discussed at the 4:21 mark], but JavaScript shims that add support for CSS properties can make it easier to use properties even if browsers haven’t come around to them [6:08]
  • Which of your features are like rounded corners? Will progressive enhancement let you worry less about those? [Discussed at the 6:55 mark.]
  • More and more CSS modules apply its declarative approach to behavior, and changes over time. [Discussed at the 8:28 mark.]
  • The new stuff that really has Eric excited? Layout improvements, using pieces designed for explicit layout rather than turning floats into a layout system. [Discussed at the 12:36 mark.]

You can view the entire conversation in the following video:

Related:

October 17 2012

Tools for test-driven development in Scala

Scala, a language designed for well-structured and readable programs, is richly provisioned with testing frameworks. The community has adopted test-driven development (TDD) and behavior-driven development (BDD) with zeal. These represent the baseline for trustworthy code development today.

TDD and BDD expand beyond the traditional model of incorporating a test phase into the development process. Most programmers know that ad hoc debugging is not sufficient and that they need to run tests on isolated functions (unit testing) to make sure that a change doesn’t break anything (regression testing). But testing libraries available for Scala, in supporting TDD and BDD, encourage developers to write tests before they even write the code being tested.

Tests can be expressed in human-readable text reminiscent of natural language (although you can’t stretch the comparison too far) so that you are documenting what you want your code to do while expressing the test that ensures that code ultimately will meet your requirements.

Daniel Hinojosa, author of Testing in Scala, describes the frameworks and their use for testing, TDD, and BDD in this interview.

Highlights from our discussion include:

  • The special advantages of test frameworks for Scala. [Discussed at the 0:10 mark]
  • The two main testing frameworks, ScalaTest and Specs2. It’s worth studying both of these frameworks, but you’ll probably ultimately stick to one based on programming style and how you want to do mocking. [Discussed at the 2:12 mark]
  • Mocking simply means removing operations that will take a long time or require outside support, such as a database. When testing, you want to fool your code into believing that the operation took place while actually simulating it. This is especially critical for TDD, because tests are so extensive and run so regularly. [Discussed at the 04:01 mark]
  • How the new ScalaMock library extends the abilities to mock parts of the system. This is an emerging technology. [Discussed at the 7:36 mark]
  • Generating random input test data. You can actually make your code more robust by throwing garbage values at it rather than by planning what data to input, because a programmer usually fails to anticipate some of the data that will be encountered in production use. For instance, you might not realize how large the input data will be, or might forget to include negative numbers. Scala gives you a full range of control ranging from specifying precise values to allowing completely random input. [Discussed at the 8:24 mark]
  • Looking toward the future of Scala testing. [Discussed at the 10:38 mark]

You can view the entire conversation in the following video:

Related:

October 12 2012

The promise of WebGL

WebGL (Web Graphics Library) is a JavaScript API maintained by the Khronos group, a standards body responsible for other open standards including OpenGL.

WebGL allows developers to display hardware-accelerated interactive 3D graphics in the browser without installing additional software — READ: no plug-ins needed. It’s currently supported by most of the major browsers (Chrome, Safari, and Firefox). Though it’s not clear when or if Microsoft will support WebGL, the applications created with WebGL are impressive. Ellie Goulding’s Lights illustrates its power.

Tony Parisi (@auradeluxe), author of WebGL: Up and Running, sat down with me recently to discuss how WebGL is changing the way 3D is developed and displayed on the web. While Flash has long been the dominant tool for developers creating animations, WebGL looks promising. My own take is that if the libraries for WebGL continue to mature I believe WebGL will succeed at becoming the preferred tool of choice for developers.

During our interview Parisi elaborated on the state of WebGL, why he thinks it will succeed and where he sees WebGL being used next. Highlights from our discussion include:

  • Why use WebGL? — Developers are using WebGL for visualizations, building consumer applications, and game development because it results in better visuals and better performance. Just check out Google Maps, which was rewritten with WebGL. [Discussed at the 1:03 mark.]
  • What is the most difficult part of learning WebGL? — Like any new technology, WebGL’s documentation is scattered and actionable information is even harder to find. That’s part of the reason Tony wrote his book. In addition, WebGL is low level, which means it can be difficult to learn. There are several libraries that have been created that developers are using that hide some of the low-level details and complexities. More on this below. [3:19 ]
  • WebGL in action — Check out some of Tony’s favorites to see what WebGL can do: Chrysaora demonstration, created by Aleksandir Rodic, is a real-time simulation of a live jellyfish forest (it is mesmerizing); another great application is My Robot Nation, a commercial site that lets you build your own 3D figurine using an in-browser modeling tool. [7:37]
  • On choosing a WebGL library — There are a growing number of WebGL libraries available, making it difficult for developers to select one for their needs. Tony discusses his favorite and some of the factors to consider when making a decision. [4:43]
  • WebGL for big data? — Tony talks about the future of WebGL, including data visualization and CAD. [10:47]

The full interview is available in the following video:

Related:

October 04 2012

Checking in on Python

Guido van Rossum is the creator of Python. I recently had the opportunity to talk with him about the state of the language.

You probably don’t realize it, but Python’s capabilities are pushed every time you use YouTube and Dropbox. During our interview, Van Rossum said both of these services are at the forefront of Python’s development.

“Whenever someone clicks on a [YouTube] video, they will see HTML that was generated from Python,” he said. “That’s definitely pushing the limits.” [Discussed 27 seconds in — you can see the scalability presentation that Van Rossum mentions during this segment here.]

On the Dropbox side, Van Rossum said the service’s clients for Linux, Windows and Mac are all implemented in Python. You’re also downloading a miniature version of the Python runtime when you’re using Dropbox. [Noted at 1:20.]

Van Rossum also spoke about the lengthy transition Python has undergone from Python 2 to Python 3. “If you want improvements to your Python … now is the time to start trying out Python 3.” Why? While the changes to the language are actually quite small, with the exception of unicode handling being completely overhauled, Python 3 is a better, faster version of Python. In addition, many third parties like Django are coming on line with libraries and frameworks for Python 3. [Discussed at the 7:01 mark.]

Additional topics discussed during the interview include:

You can view the full discussion in the following video.

Related:

September 09 2012

The many sides to shipping a great software project

Chris Vander Mey, CEO of Scaled Recognition, and author of a new O’Reilly book, Shipping Greatness, lays out in this video some of the deep lessons he learned during his years working on some very high-impact and high-priority projects at Google and Amazon.

Chris takes a very expansive view of project management, stressing the crucial decisions and attitudes that leaders need to take at every stage from the team’s initial mission statement through the design, coding, and testing to the ultimate launch. By merging technical, organizational, and cultural issues, he unravels some of the magic that makes projects successful.

Highlights from the full video interview include:

  • Some of the projects Chris has shipped. [Discussed at the 0:30 mark]
  • How to listen to your audience while giving a presentation. [Discussed at the 1:24 mark]
  • Deadlines and launches. [Discussed at the 6:40 mark]
  • Importance of keeping team focused on user experience of launch. [Discussed at the 12:15 mark]
  • Creating an API, and its relationship to requirements and Service Oriented Architectures. [Discussed at the 15:27 mark]
  • 22:36 What integration testing can accomplish. [Discussed at the 22:36 mark]

You can view the entire conversation in the following video:

August 22 2012

Mastering iOS Development

Matt Neuburg is an O’Reilly author and long-time writer for tidBITS.

We sat down recently to talk about iOS development and how best to build solid apps … the secret is take the time to learn the basics.

Key points from the full video (below) interview include:

  • All of the real power in iOS development is in C. [Discussed at the 1:26 mark]
  • Don’t use the Cocoa Framework, let it use you. [Discussed at the 2:56 mark]
  • Even though you don’t have time, understanding the underlying foundation of the OS makes you better a developer. [Discussed at the 8:07 mark]
  • Take a deep breath … Apple is actually working on improving the dev experience. [Discussed at the 10:54 mark]

You can view the entire interview in the following video.

Related:

August 15 2012

Android evolves and so must you

Christopher Neugebauer (@chrisjrn) is an Android and Python developer at Secret Lab and conference coordinator of PyCon Australia.

Key points from our full discussion include:

  • Great features from Jellybean are available for older OSes. [Discussed at the 2:32 mark]
  • Android devices vary greatly in size and shape – design with this in mind [Discussed at the 4:35 mark]
  • Developers need earlier access to new versions of the OS [Discussed at the 5:32 mark]

You can view the entire interview in the following video.

Related:

August 08 2012

Damian Conway weighs in on new features, best practices and Perl’s future

Damian Conway is a prominent member of the Perl community, author and presenter.

Key points from the full video of our recent interview include:

  • Perl 6 might not be here yet but it is seeping into Perl 5. [Discussed at the 1:09 mark]
  • You really should use a more current version of Perl — one reason — Regular Expressions. [Discussed at the 1:48 mark]
  • Moose — making object orientation easier. [Discussed at the 2:38 mark]
  • Best Practice — Test! Test! Test! [Discussed at the 6:08 mark]
  • The Perl Community — 25 years old and still optimizing the fastest dynamic language out there. [Discussed at the 9:42 mark]

You can view the entire interview in the following video.

Related:

August 01 2012

Sensors and Arduino: How to glue them together

Federico Lucifredi (@federico_II) is the maintainer of man(1) and also the author of the upcoming book, Sensor Interfaces for Arduino. We had a chance to sit down recently and talk about how to connect sensors to microcontrollers (in particular Arduino).

Given how many sensors there are in the wild, there’s a lot to say about sensors. Some of the key points from the full video are:

  • When to look for a library to support your sensor and when to just write a few lines of code to read it. [Discussed at the 3:00 mark]
  • Thinking about sensors that return non-linear responses and how that might affect your code. [4:40]
  • Detecting a human presence on a door mat. [6:00]
  • Using a Geiger counter to measure radiation and generate random numbers. [8:14]
  • Where to look for docs and code when you start working with an unfamiliar sensor. [11:30]

The full discussion is available in the following video:

Related:

July 25 2012

Inside GitHub’s role in community-building and other open source advances

In this video interview, Matthew McCullough of GitHub discusses what they’ve learned over time as they grow and watch projects develop there. Highlights from the full video interview include:

  • How GitHub builds on Git’s strengths to allow more people to collaborate on a project [Discussed at the 00:30 mark]
  • The value of stability and simple URLs [Discussed at the 02:05 mark]
  • Forking as the next level of democracy for software [Discussed at the 04:02 mark]
  • The ability to build a community around a GitHub repo [Discussed at the 05:05 mark]
  • GitHub for education, and the use of open source projects for university work [Discussed at the 06:26 mark]
  • The value of line-level comments in source code [Discussed at the 09:36 mark]
  • How to be a productive contributor [Discussed at the 10:53 mark]
  • Tools for Windows users [Discussed at the 11:56 mark]

You can view the entire conversation in the following video:

Related:

July 19 2012

Objective-C and Cocoa: The core of solid iOS apps

Jon Manning (@desplesda) and Paris Buttfield-Addison (@parisba) are co-founders of Secret Lab and authors of the forthcoming Learning Cocoa with Objective-C, 3rd Edition

Key points from the full video (below) interview include:

  • Embrace Objective-C’s verbosity [Discussed at the 0:30 mark]
  • Just getting started with Objective-C? Check out the WWDC videos and… [Discussed at the 1:45 mark]
  • Long awaited updates to Objective-C make a big impact [Discussed at the 2:27 mark]
  • When it comes time to submit your app to the App Store, think about it as Apple would [Discussed at the 3:47 mark]

You can view the entire interview in the following video.

Related:

Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
Could not load more posts
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
Just a second, loading more posts...
You've reached the end.

Don't be the product, buy the product!

Schweinderl