ACCU World of Code
-
Subclassing Objective-C classes in Swift and the perils of Initializers
— Begin update 1. The post below applies to Xcode 6 Beta 2. With Beta 3 & 4 the relationships between the Swift and Objective-C regarding the calling of super class initializers has been formalized. 1a. A Swift class can have multiple non-conve…
-
Subclassing Objective-C classes in Swift and the perils of Initializers
— Begin update 1. The post below applies to Xcode 6 Beta 2. With Beta 3 & 4 the relationships between the Swift and Objective-C regarding the calling of super class initializers has been formalized. 1a. A Swift class can have multiple non-conve…
-
avconv performance slow in Ubuntu 14.04 trusty
I noticed that my TV conversion scripts were suddenly running very slowly after upgrading to Lubuntu 14.04. After some investigation it turned out it had started defaulting to using libx264 encoding when the output file was named *.mp4. When I ask it t…
-
The Primacy of Testability: Modularity
In the first post in this series I set the stage for a discussion of how testability can serve as a proxy or enabler for other, more directly desirable qualities in a software system. In this post I’d like to look at the first such quality, modularity.
Modularity is perhaps …
-
The Primacy of Testability: Modularity
In the first post in this series I set the stage for a discussion of how testability can serve as a proxy or enabler for other, more directly desirable qualities in a software system. In this post I’d like to look at the first such quality, modularity.
Modularity is perhaps …
-
Does test-driven development harm clarity?
In a recent keynote at RailsConf called Writing Software*, David Heinemeier Hansson argues that test-driven development (TDD) can harm the clarity of our code, and that clarity is the key thing we should be aiming for when writing software. (*contains …
-
Series: The Primacy of Testability
In this series we look at how software architects – or really anyone involved in creating software – can use testability to help manage other quality attributes. From modularity to performance to the SOLID principles, testability can act as a proxy and an enabler for many of the cross-cutting, interacting concerns that …
-
The Primacy of Testability
The job of a software architect [1] is difficult, just like almost every role in software development. They have to keep track of many subtly interacting quality attributes, often on multiple projects, any one of which may be too big or evolving too quickly to meaningfully keep in mental cache …
-
Series: The Primacy of Testability
In this series we look at how software architects – or really anyone involved in creating software – can use testability to help manage other quality attributes. From modularity to performance to the SOLID principles, testability can act as a proxy and an enabler for many of the cross-cutting, interacting concerns that …
-
The Primacy of Testability
The job of a software architect [1] is difficult, just like almost every role in software development. They have to keep track of many subtly interacting quality attributes, often on multiple projects, any one of which may be too big or evolving too quickly to meaningfully keep in mental cache …
-
Token-based security in a REST API
Series: What is REST?, A Basic REST API, Paging, Search, Security, Token, OpenID. We are implementing a REST API. Today, adding to the security we already have by making a security token that is stored in a cookie: Slides: Token-based security in a R…
-
How to write Boost.Python type converters
Boost.Python [1] makes it possible to write C++ that “feels” like Python. The library is powerful and sometimes subtle. This is as compared with the Python C API, where the experience is very far removed from writing Python code.
Part of making C++ feel more like Python is allowing …
-
How to write Boost.Python type converters
Boost.Python [1] makes it possible to write C++ that “feels” like Python. The library is powerful and sometimes subtle. This is as compared with the Python C API, where the experience is very far removed from writing Python code.
Part of making C++ feel more like Python is allowing …
-
Avoid mocks by refactoring to functional
At this week’s ACCU Conference I went to an excellent talk by Sven Rosvall entitled “Unit Testing Beyond Mock Objects”. The talk covered the newer Java and C# unit testing frameworks that allow inserting mock objects even where legacy code is using som…
-
Speaking: Words in Code
The slides from my ACCU 2014 talk, Words in Code, are available on SlideShare, from http://www.slideshare.net/petegoodliffe/words-in-code. Here’s the synopsis: As software developers we do not just write code. We write many, many words too. We write …
-
Speaking: Words in Code
The slides from my ACCU 2014 talk, Words in Code, are available on SlideShare, from http://www.slideshare.net/petegoodliffe/words-in-code. Here’s the synopsis: As software developers we do not just write code. We write many, many words too. We write …
-
Top four JavaZone 2013 talk – The Unreasonable Effectiveness of Dynamic Typing
I’m very happy to see that my talk on The Unreasonable Effectiveness of Dynamic Typing was rated fourth of all the talks in the show. Thanks to everyone who attended and voted.
JavaZone 2013 top talks http://t.co/gfbMnJRsaU – 4th: “The Unreasonable Effectiveness of Dynamic Typing for Practical …” by …
-
Top four JavaZone 2013 talk – The Unreasonable Effectiveness of Dynamic Typing
I’m very happy to see that my talk on The Unreasonable Effectiveness of Dynamic Typing was rated fourth of all the talks in the show. Thanks to everyone who attended and voted.
JavaZone 2013 top talks http://t.co/gfbMnJRsaU – 4th: “The Unreasonable Effectiveness of Dynamic Typing for Practical …” by …
-
Using the final keyword in interface method parameters does nothing
Consider the following Java code: class FinalInInterface { private static interface WithFinal { public void run( final int x ); } private static class WithoutFinal implements WithFinal { public void run( int x ) …
-
Using xscreensaver to lock the screen in Lubuntu
Recent versions of Lubuntu seem to have broken screen locking. To get screen locking via xscreensaver do this: # Install xscreensaver sudo apt-get install xscreensaver # Start xscreensaver when you log in echo “xscreensaver -nosplash” >> ~/.conf…
-
Security in a REST API
Series: What is REST?, A Basic REST API, Paging, Search, Security, Token, OpenID. We are implementing a REST API. Today, providing security using HTTP Basic Authorization: Slides: Security in a REST API. Code: poemtube on github.
-
New Book: Becoming a Better Programmer
After many years of gestation my latest book is available for purchase as an early-access pre-release. Called Becoming a Better Programmer, it is a handbook for people who are about code. This early access edition already contains 14 chapters, and …
-
New Book: Becoming a Better Programmer
After many years of gestation my latest book is available for purchase as an early-access pre-release. Called Becoming a Better Programmer, it is a handbook for people who are about code. This early access edition already contains 14 chapters, and …
-
Speaking: Words in Code (ACCU 2014)
I’ll be speaking at this year’s excellent ACCU Conference 2014. This year my talk is: Words in Code, a technical (and not so technical) appraisal of how developers write. It’s a practical distillation of my fourteen years as a magazine columnist, mul…
-
Speaking: Words in Code (ACCU 2014)
I’ll be speaking at this year’s excellent ACCU Conference 2014. This year my talk is: Words in Code, a technical (and not so technical) appraisal of how developers write. It’s a practical distillation of my fourteen years as a magazine columnist, mul…
-
Searching in a REST API
Series: What is REST?, A Basic REST API, Paging, Search, Security, Token, OpenID. We are implementing a REST API. Today, we provide a basic search. Slides: Searching in a REST API. Code: poemtube on github.
-
Keyboard configuration for Windows’ developers on OS X (& also IntelliJ)
Recently I’ve been doing some ActionScript programming. Rather than target a Flash Player app. I’ve been using ActionScript in combination with Adobe AIR in order to create an iOS app. This has meant I’ve been spending time in OS X and using IntelliJ w…
-
Keyboard configuration for Windows’ developers on OS X (& also IntelliJ)
Recently I’ve been doing some ActionScript programming. Rather than target a Flash Player app. I’ve been using ActionScript in combination with Adobe AIR in order to create an iOS app. This has meant I’ve been spending time in OS X and using IntelliJ w…
-
Writing: The Ethical Programmer (Part 2)
My latest Becoming a Better Programmer column was published in the November CVu (25.5). It’s the second part of my mini-series on The Ethical Programmer. This instalment deals with our attitudes towards other people, and finally formulates our own H…
-
Writing: The Ethical Programmer (Part 2)
My latest Becoming a Better Programmer column was published in the November CVu (25.5). It’s the second part of my mini-series on The Ethical Programmer. This instalment deals with our attitudes towards other people, and finally formulates our own H…
-
Paging in a REST API
Series: What is REST?, A Basic REST API, Paging, Search, Security, Token, OpenID. We consider some choices of how to provide paging through a list resource in a REST API. Slides: Paging in a REST API. Code: poemtube on github.
-
A Basic REST API
Series: What is REST?, A Basic REST API, Paging, Search, Security, Token, OpenID. I’ll walk you through the code of a simple REST API I am writing to be a kind of YouTube for poetry. Slides: A Basic REST API. Code: poemtube on github.
-
Avoid backslashes anywhere in Java code (Java error “illegal unicode escape”)
Did you know you can insert unicode-escaped characters, anywhere in a Java program? Most of us are familiar with using unicode escapes like this: String pound = “\u00A3”; but in fact constructs like \u00A3 can go anywhere, including in a comment. This …
-
What is REST?
Series: What is REST?, A Basic REST API, Paging, Search, Security, Token, OpenID. The basic concepts of REST APIs: Slides: What is REST?. Code: poemtube on github.
-
Bash arrays
Bash arrays are a lot like Bash Associative Arrays, but with numbers as keys. Here’s a quick reference. Basics $ declare -a MYARR # Create an array $ MYARR[3]=foo # Put a value into an array $ echo ${MYARR[3]} # Get a value out of an array foo $…
-
Using if:set, unless:set etc. with macrodefs in Ant
In a previous post I outlined how to use if:set and unless:set to execute tasks conditionally in Ant 1.9.1. Unfortunately, this does not work with macrodefs. When I try to execute a macrodef conditionally like this: <project xmlns:if=”ant:if” …
-
Using if:set, unless:set etc. to execute a task conditionally in Ant
I’m not sure anyone except me is still struggling on with using Ant, but just in case, here is a nice thing. In Ant 1.9.1 they added a useful feature: instead of needing to use the <if> tag and similar from ant-contrib, you can conditionally exec…
-
Writing: The Ethical Programmer
The latest C Vu magazine from ACCU is out now. It contains my latest Becoming a Better Programer column. This month it’s called The Ethical Programmer; the first instalment of a two-part series on ethics a…
-
Writing: The Ethical Programmer
The latest C Vu magazine from ACCU is out now. It contains my latest Becoming a Better Programer column. This month it’s called The Ethical Programmer; the first instalment of a two-part series on ethics a…
-
Vim for Fun
I have recently got quite excited about Vim (the text editor), so here is a video showing you the basics. I use it because I enjoy learning it. Slides: Vim for Fun.
-
Capturing lvalue references in C++11 lambdas
Recently the question “what is the type of an lvalue reference when captured by reference in a C++11 lambda?” was asked. It turns out that it’s a reference to whatever the original reference was too. This is just like taking a reference to an existing …
-
Capturing lvalue references in C++11 lambdas
Recently the question “what is the type of an lvalue reference when captured by reference in a C++11 lambda?” was asked. It turns out that it’s a reference to whatever the original reference was too. This is just like taking a reference to an existing …
-
Working with others in git
Series: Why git?, Basics, Branches, Merging, Remotes Now I’ve covered almost everything you need to understand the basics of how git works. In this video I discuss how to clone, pull from and fork remote git repositories, and how to send patches and ma…
-
Merging in git
Series: Why git?, Basics, Branches, Merging, Remotes The last video covered how to make branches and simple merges. This time we look at what to do when you want just one change from another branch (cherry-picking) and how to merge two branches when th…
-
Speaking: Running Effective Rehearsals
I’ll be speaking at The Worship Collective conference in Cambridge, UK on June 29th. This is an awesome event for musicians and worship leaders. I’m leading a seminar entitled Running Effective Rehearsals. Obviously, this is a really pract…
-
Speaking: Running Effective Rehearsals
I’ll be speaking at The Worship Collective conference in Cambridge, UK on June 29th. This is an awesome event for musicians and worship leaders. I’m leading a seminar entitled Running Effective Rehearsals. Obviously, this is a really pract…
-
Behaviour of Java String.split() when some answers are the empty string
Can you guess the output of this program? class SplitTest { static void split( String s ) { System.out.println( s.split( “;” ).length ); } public static void main( String[] args ) { split(“”); split(“;”); …
-
Checking the case of a filename on Windows
Windows generally uses a case-insensitive but not case-preserving file system. When writing some code that is intended to be used on Linux as well as Windows, I wanted it to fail on Windows in the same cases that it would fail on Linux, and this meant …
-
Branches in git
Series: Why git?, Basics, Branches, Merging, Remotes Last time we discussed starting a project and committing changes. Now we look at how to create branches, which are one of the main reasons for having source control. We’ll cover creating branches, sw…
-
Writing: Bug Hunting
The latest C Vu magazine from ACCU is out now. It contains my latest Becoming a Better Programer column. This month it’s called Bug Hunting and, as you might guess, is about the art of debugging code. This was inspired by conversations with…
-
Writing: Bug Hunting
The latest C Vu magazine from ACCU is out now. It contains my latest Becoming a Better Programer column. This month it’s called Bug Hunting and, as you might guess, is about the art of debugging code. This was inspired by conversations with…
-
Passing several values through a pipe in bash
I have been fiddling with some git-related shell scripts, and decided to try and follow the same approach as git in their structure. This means using the Unix system where each piece of functionality is a separate script (or executable) that communicat…
-
Goodness in programming languages, part 4 – Ownership & Memory
Posts in this series: Syntax, Deployment, Metaprogramming, Ownership There is often a trade-off between programming language features and how fast (and predictably) the programs run. From web sites that serve millions of visitors to programs running on…
-
How to use git (the basics)
Series: Why git?, Basics, Branches, Merging, Remotes Git is a very powerful tool, but somewhat intimidating at first. I will be making some videos working through how to use it step by step. First, we look at how to track your own code on your own comp…
-
Using gnome-mplayer to play DVB radio without asking whether you want to resume
When I launch gnome-mplayer to play back radio over my TV card (DVB), it asks me whether I want to resume from where I left off, which doesn’t make sense for this kind of stream. I couldn’t find a way to switch this off, but a little hacking with gnome…
-
C++14 “Terse” Templates – an argument against the proposed syntax
Today I attended two excellent talks by Bjarne Stroustrup at the ACCU Conference 2013. The first was an inspiring explanation of the recent C++11 standard, and the second, “C++14 Early thoughts” was an exciting description of some of the features that …
-
Visual Lint and Windows Driver Kit (WDK) projects
We have recently been working with Don Burn on PC-lint analysis of Windows Driver Kit (WDK) projects, and he has written an interesting article on the subject titled “Another Look at Lint” in the March-April 2013 issue of the NT Insider. Within the art…
-
Visual Lint and Windows Driver Kit (WDK) projects
We have recently been working with Don Burn on PC-lint analysis of Windows Driver Kit (WDK) projects, and he has written an interesting article on the subject titled “Another Look at Lint” in the March-April 2013 issue of the NT Insider. Within the art…
-
setUp and tearDown considered harmful
Some unit test frameworks provide methods (often called setUp and tearDown, or annotated with @Before and @After) that are called automatically before a unit test executes, and afterwards. This structure is presumably intended to avoid repetition of co…
-
Why use git for source control?
Series: Why git?, Basics, Branches, Merging, Remotes Putting your code in git is fast, flexible and powerful. You can track versions on a single machine, or scale up to thousands of people working together, with sub-teams, reviews and cherry-picking of…
-
Set the volume in OpenBox/LXDE (or on the command line) with PulseAudio and Ubuntu
I am switching to LXDE, and enjoying it, but a few things require some manual config before it’s just how I like it. To control the sound volume with the volume buttons, the default LXDE config in ~/openbox/lxde-rc.xml contains an entry like this: <…
-
Everybody loves build.xml (test-driven Ant)
In the previous post we looked at how it is possible to write reasonable code in Ant, by writing small re-usable blocks of code. Of course, if you’re going to have any confidence in your build file you’re going to need to test it. Now we’ve learnt some…
-
Everybody hates build.xml (code reuse in Ant)
If you’re starting a new Java project, I’d suggest suggest considering the many alternatives to Ant, including Gant, Gradle, SCons and, of course, Make. This post is about how to bend Ant to work like a programming language, so you can write good code …
-
Dry run mode for Ant (ant -n, ant –dry-run)
I am working on the problem of writing Ant build files in a test-driven way. One thing I found myself needing was a “dry run” mode, like many Unix tools have. For example, make has the -n or –dry-run option, which shows what it would have done, but do…
-
My First Raspberry Pi Game ” Part 12 ” Scoring, done!
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. Today, we finish! Our game is almost done. All we need to do now is let you play several times, and give you a score at the end. First, becaus…
-
My First Raspberry Pi Game ” Part 11 ” Being less rude
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. We’ve nearly finished our game. Next on our list is to fix that bug where you can’t exit some of the time, and make our code a bit tidier in t…
-
My First Raspberry Pi Game ” Part 10 ” Red square
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. We’re writing a really simple game – you have to press a key when you see green, and not press a key when you see red. I’ve been promising for…
-
My First Raspberry Pi Game ” Part 09 ” Lots more words
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. We’re writing a really simple game – you have to press a key when you see green. This time we’re going to add lots of instructions on each pag…
-
My First Raspberry Pi Game ” Part 08 ” Success and failure
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. We’re writing a really simple game – you have to press a key when you see green. Today we’re going to wait for a key press. If we get one, we’…
-
My First Raspberry Pi Game ” Part 07 ” A green circle
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. We’re going to write a game that tests your reactions – press a key when you see green, but don’t when you see red. Today we see some of what …
-
Launching an OSGi app on the command line
I am a total beginner on this topic, but here is what I have found so far. Please correct me, advise me etc. in the comments. A colleague has written a program based on OSGi, which is a framework for obfuscating everything “modular” software, which I t…
-
My First Raspberry Pi Game ” Part 06 ” A better class of waiting
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. Today we wait, but better, while we show the ready screen we made last time. In the process we cover two of the most important things you need…
-
My First Raspberry Pi Game ” Part 05 ” Say something
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. Today we will write some writing on that blank screen we made last time. But first, a couple of tricks (we are doing magic after all). We’re g…
-
Windows 8 Pro on an early 2009 iMac 21.5 (Core 2 Duo)
A couple of weeks back I thought I’d have a go writing a Windows Store App. To do this requires Windows 8. At the time I was running Windows 7 Home Premium on an early 2009 iMac 21.5 (Core 2 Duo). This had been installed using Boot Ca…
-
Windows 8 Pro on an early 2009 iMac 21.5 (Core 2 Duo)
A couple of weeks back I thought I’d have a go writing a Windows Store App. To do this requires Windows 8. At the time I was running Windows 7 Home Premium on an early 2009 iMac 21.5 (Core 2 Duo). This had been installed using Boot Ca…
-
My First Raspberry Pi Game ” Part 04 ” A small black screen
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. Today we will get an actual window to appear, with nothing on it! Last time we wrote a magic spell describing the bare outline of what how our…
-
Length of Open Source licenses
I have been choosing a license for my ficticious programming language, Pepper. One consideration is the complexity of the (combination of) license(s) used. Complexity may be related to length, so for your enjoyment, here are the lengths of some popular…
-
My First Raspberry Pi Game ” Part 03 ” It’s like a magic spell
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. Today we will write the very basic outline of our game. When we’ve finished it won’t actually do anything. In fact, it won’t even run. Writing…
-
My First Raspberry Pi Game ” Part 02 ” Saying hello
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. Writing your first ever computer program on the Raspberry Pi. See Part 1 for how to get and set up the Pi. Today we will find out how to write a computer program, and how to run it. We’re going to write o…
-
My First Raspberry Pi Game – Part 01 – Before we start
Parts: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. In this series I intend to guide you through writing your first ever computer program. We will write our own game on the Raspberry Pi, which is a cheap-as-chips computer designed for learning about comput…
-
Running Dojo DOH tests in a browser without a web server
Dojo’s DOH requires a web server to run tests in a browser. But never fear: $ cd ~/code/dojo $ ls docs dojo util $ python -m SimpleHTTPServer & $ xdg-open http://localhost:8000/util/doh/runner.html Note that you will see some test failures, beca…
-
Bash associative array examples
Quick reference of things I discovered about how to use associative arrays in bash. Note: bash version 4 only. (See also Bash Arrays.) Basics $ declare -A MYMAP # Create an associative array $ MYMAP[foo]=bar # Put a value into an associative …
-
Running Dojo 1.7+ DOH unit tests on the command line with Rhino
To run your own DOH-based unit tests on the command line using Rhino: NOTE: this is Dojo 1.7 and above. For 1.6, there was a whole other cryptic incantation. Project layout Imagine your code is somewhere different from dojo, and another library you use…
-
Lambda functions timeline
I did a talk at work about lambda functions (anonymous functions), and something possessed me to make a timeline of when they were introduced into various languages. Some languages were born with them, and some grew them later – in the latter case I gi…
-
Goodness in programming languages, part 3 ” not doing the same thing more than once
Posts in this series: Syntax, Deployment, Metaprogramming, Ownership I’m going to use a word here – don’t stop reading: Metaprogramming. Does the language provide what you need to avoid repeating yourself? Repeating boilerplate code, algorithms and mos…
-
Specifying the directory to create SQL CE databases when using Entity Framework
In the last few posts I’ve been describing how to create instances of SQLCE in order to perform automated Integration Testing using NUnit and accessing the dB using Entity Framework. I covered creating the dB using both Entity Framework and the S…
-
Specifying the directory to create SQL CE databases when using Entity Framework
In the last few posts I’ve been describing how to create instances of SQLCE in order to perform automated Integration Testing using NUnit and accessing the dB using Entity Framework. I covered creating the dB using both Entity Framework and the S…
-
Integration Testing with NUnit and Entity Framework
This post gives a quick introduction into creating SQL CE dBs for performing Integration Tests using NUnit. In the previous post Using NUnit and Entity Framework DbContext to programmatically create SQL Server CE databases and specify the databse…
-
Integration Testing with NUnit and Entity Framework
This post gives a quick introduction into creating SQL CE dBs for performing Integration Tests using NUnit. In the previous post Using NUnit and Entity Framework DbContext to programmatically create SQL Server CE databases and specify the databse…
-
Visual Studio 2012 theme support
One of the unexpected (and I would suggest from the comments, unwelcome) changes sprung on developers in the Visual Studio 2012 Beta back in February was the “Metroification” of the development environment. However, eye candy (and eyesores!) come and g…
-
Visual Studio 2012 theme support
One of the unexpected (and I would suggest from the comments, unwelcome) changes sprung on developers in the Visual Studio 2012 Beta back in February was the “Metroification” of the development environment. However, eye candy (and eyesores!) come and g…
-
Tail Call Optimisation in C++ – lightning talk video
You can watch the Tail Call Optimisation in C++ lightning talk video, which I gave at the ACCU 2012 conference in April. You can also read the (clearer and more correct) writeup I did later: Tail Call Optimisation in C++ or the subsequent article publi…
-
Cool Raspberry Pi Projects
Someone claimed that everyone who has a Raspberry Pi has done what I did with it: try it out then file it in a drawer marked “must play with later”. To try and debunk this claim, here are some cool projects I have seen. Update: I made some videos on ho…
-
Scheme 7: Macros video
Series: Feel the cool, Basics, Closures, Recursion, Quotation, Lambda, Macros. Continuing the series on Scheme, this video explains the ultimate alternative – when nothing else is flexible enough, we can create our own bits of lanugage using macros. …
-
Scheme 6: Lambda video
Series: Feel the cool, Basics, Closures, Recursion, Quotation, Lambda, Macros. Continuing the series on Scheme, this video explains the lambda function, which allows you to define anonymous functions. It goes on to bend your mind with 2 examples of the…
-
Tail Call Optimisation in C++ published in Overload journal
You read it here first, but now you can have a paper version of “Tail Call Optimisation in C++”, published almost as-is, in Overload 109 the journal of ACCU.
-
Scheme 5: Quotation video
Series: Feel the cool, Basics, Closures, Recursion, Quotation, Lambda, Macros. Continuing the series on Scheme, this video explains on of the most powerful and unfamiliar features of Scheme: quotation. Quoting allows us to talk about and manipulate cod…
-
Scheme 4: Recursion – how to write functions in Scheme video
Series: Feel the cool, Basics, Closures, Recursion, Quotation, Lambda, Macros. Continuing the series on Scheme, this video describes the way you write code in Scheme: recursion. Recursive functions can be pretty efficient in Scheme, if you structure th…