BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Programming Content on InfoQ

  • Is a picture always worth a thousand words?

    <p>Is a picture always worth a thousand words?</p> <p>In his recent article, &#8220;Why we write code and don&#8217;t just draw diagrams&#8221;, Dean Wampler argues that in software development the opposite is more often true. </p>

  • Book Review: Implementation Patterns

    Kent Beck's new book, Implementation Patterns, is a book about writing code in Java. The patterns in this book are based on Kent's reading of existing code as well as his own programming habits. The patterns in this book are meant to be a coherent view of how to write code people can understand.

  • Article: Beyond Foundations of F#

    Since Robert Pickering published Foundations of F# in May, the language has grown significantly. Besides adding a host of new features, it is being moved from a research project to a fully supported, production-grade release. We asked Robert to discuss some of the new features in F#.

  • Debuggers considered Harmful?

    A blog post titled "Debugger Support Considered Harmful" claims that Ruby debugging support is lacking - and that that's a good thing. We look at the various rebuttals and the state of Ruby debuggers.

  • Mylyn 2.1: Refactoring the Eclipse User Interface to increase productivity

    Mylyn, an Eclipse plug-in which was integrated into Eclipse 3.3, recently released version 2.1. InfoQ spoke with Mylyn project lead Mik Kersten to learn more about this release and what changes Mylyn 2.1 brings to Eclipse-based development.

  • Rubinius: Inside the Bytecode Compiler and Foreign Function Interface

    Modifying the Rubinius VM is simple as two new articles show. We look at how to modify and extend the Rubinius bytecode compiler - written in Ruby - and how to work on the library using the foreign function interface (ffi).

  • What Makes a Tool Agile?

    Individuals and interactions over processes and tools is the very first of the values of the Agile Manifesto. Tools, however, seem to be a big part of development on most Agile teams. When does a tool help and when does it hinder (Agile) software development?

  • Moving away from exclusive use of OOP and Curly Brace Languages to reduce code waste?

    According to Bob Warfield, at least 70% of code is wasted because it’s written to build components which would add no competitive differentiation to the final product. To reduce this "waste", programmers should practice code reuse instead of repeatedly building the same components. However, to facilitate code reuse it is necessary to move away from exclusive use of OOP and Curly Brace Languages.

  • The Dark Side of Closures

    Closures are not a new concept and in LINQ have proven to be incredibly useful. But they do have a dark side when used to break encapsulation. When two seemingly independent functions are tied together, unexpected results can occur.

  • Getting started with Rubinius development

    Rubinius is quickly gathering interest and is coming close to full Ruby support. We take a look at Rubinius development, what to check out and where to start.

  • Indispensable Tips on Using Java Classes in JRuby

    Eric Armstrong, a Document Systems Architect at Sun Microsystems, recently wrote some great tips on calling Java code from JRuby in his post "Using Java Classes in JRuby".

  • Language-oriented programming : an evolutionary step beyond object-oriented programming?

    At a recent conference, Martin Fowler and Neal Ford develop the concept of language-oriented programming and question the eventuality for Domain Specific Languages to become a new abstraction and modelling mechanism. This could be "the next evolutionary step beyond object-oriented programming", especially since major vendors start offering IDE tooling for DSLs.

  • Confusing unit-of-work with threads

    Most server-side applications and many desktop applications contains data that is tied to a particular task that&#8217;s being executed. A common solution is to keep that kind of data in thread-local storage; to keep the data in variables bound to the executing thread. Convenient, but a practice based on a faulty assumption.

  • LINQ Aggregates in VB and C#

    An aggregate is a function that takes a collection of values and returns a scalar value. Examples from T-SQL include min, max, and sum. Both VB and C# have support for aggregates, but in very different ways.

  • Brian Beckman and Erik Meijer of MSR on Tesla

    The project code-named TESLA in Microsoft Research is being spearheaded by Brian Beckman and Erik Meijer. LINQ is the first released technology aimed at democratizing the Internet coming from Microsoft. From Monoids to LINQ, Brian and Erik provide insight into the future of the .NET Framework languages at Microsoft and how they plan to change the Cloud as we know it today.

BT