When is a Function considered a Callback Function?

On the Thinkful Slack channel last week, someone asked a seemingly simple question about functions inside another function’s arguments:

within a route like app.get(‘/test’, someFunction(), (req, res) => etc etc, is someFunction() called an inner function? Does anyone know the technical name for that?

They got a very good answer which I think was close to perfect:

inner is more a generic term, not specific to functions. e.g. you could refer to inner and outer scope

  1. .get() is a higher order function because it takes one or more functions as a parameter

  2. someFunction is often termed a “callback” because it’s a function that’s intended to be called at a later time

  3. both someFunction and (req, res) => {} defined above are callback functions

They were right about the first part, that .get() was a higher order function.

They were right about the second part, that someFunction implies it can be called later.

They were even right about the final final part, where they called the anonymous inline ES6 “fat arrow” function (req, res) => {} a callback.

However, something kept nagging me about the difference between someFunction() in the question and someFunction in the final answer. Hidden in that lack of parentheses is a world of difference.

To elaborate, I offered the following comment to the channel, which sparked a conversation for further clarification. I reproduce it here in the hopes that it may help more programming students understand function semantics better.

Continue reading “When is a Function considered a Callback Function?”

Shoot The Projectionist Podcast Web Site

shoottheprojectionist.com

This podcast website I built features a simple design which makes the podcast episodes front and center, with eye catching images and an easy play/pause button connected to the inline media player. I used WordPress and customized plugins to enable podcast episodes and contributor bios to be added by the producer. The site is set up as a multi-site network to facilitate the adding of additional podcasts with their own blog and podcast feeds.

CD Booklet for The Sincerelys – Happy Here On In

This booklet for The Sincerelys’ debut CD was made in close cooperation with the lyricist and artist, Bernard McKenna. First, the lyrics were typeset to fit within a 20 page booklet. Then, the typeset lyrics were printed out and Bernard drew line drawings in the white space around the lyrics, using tracing paper over the printouts. After those were scanned, the line drawings were cleaned up and printed out on high quality paper. The line drawings on that paper were then colored by Bernard, scanned in one final time, and composited against ink marbling backgrounds we had made together and scanned separately. Finally, the lyrics font was changed from a standard system font to one which I made with Bernard, converting a sheet of his handwriting into a reusable font so that the hand written look could be achieved while still leveraging the previously typeset lyrics.

Click here to see the full PDF.

Feature Peer-To-Peer Concierge Web Site

www.featuretrips.com
I wrote the front and back end of this web site for a client who wanted to create a matching service, pairing local experts with people seeking unique experiences in various cities. I developed a node.js app using mongodb with responsive design, user management, admin features, payment processor integration, SMS messaging gateway, subscription-based email notifications, and an email template system. Also included was a custom algorithm for matching users based on interests. For the front-end, I chose Bootstrap to facilitate a mobile-first design which could scale to a desktop size well.

Responsibilities: UI design, technical design, hosting infrastructure, database design and administration, automated testing, mobile-first front-end development, back-end development.

Tomato Trouble has launched!

After much planning and turbulent development, my first app Tomato Trouble has been released on the iPad App Store.

Click here to get Tomato Trouble for iPad from the App Store

Download Tomato Trouble
Download Tomato Trouble for iPad on the App Store today!

The iPhone version will be arriving shortly. If you are a Kickstarter backer and have not yet filled out your survey to tell us what name you want to appear in the app, or given us your address to send your poster or Geoff doll to, please check your spam folders for emails from wompistudios@gmail.com or v@victorb.net.

“Tomato Trouble” iPad Interactive Story Book App

24-page storybook with original art based on a real handicapped dog

Responsibilities: App Development: UI design and programming, character animation, page layout and interactions, book framework code, iTunes Connect.

I was approached by a producer to build an interactive iPad storybook for kids, based on a story about a handicapped dog named Geoff who lives in Australia. This project received funding from a successful Kickstarter campaign. I completed the app with the assistance of a few contract programmers and animators after developing the base system of page interactions, animation pipeline, UI, and audio.

PhotoCard Touchscreen Booth (Unity3d App)

Touch-screen photo-booth sticker app with photo printing

Responsibilities: Application state machine, Unity scene setup, Custom NGUI components, State Machine control of UI, Multi-Touch Plugin and Driver interfaces, logging, WWW form submission.

While at Tribal Brands, I served as lead engineer on the PhotoCard project. Armed with a Mac Mini, a Logitech Webcam, and a 42″ Touch Screen HDTV, I helped build an app which lets the user take their photo, add and arrange stickers via multi-touch gestures, and send their photo to a local printer and/or an email address. This app has been deployed for multiple events, each time using custom UI and sticker graphics.

Animation and Page Layout Update

Hello friends of Geoff.

I know it’s been a while since my last update, and for that I apologize. I’d like to say I’ve been so busy putting new features into the app that I don’t have the time to write any updates. That’s partially true, in that I have been spending more time actually doing the work than talking about it. But, it’s not the whole picture. At the launch of the Kickstarter campaign, I was a little overly optimistic about our timeline. We’re not going to be too far behind, but there have been some unforeseen delays which have taken time away from both development and updating.

I have had a lot of help from a developer making a set of visual tools which handle the cross-device and cross-resolution sizing I need in order to support iPhone, iPad, iPhone 4S and iPad 3, as well as the upcoming iPhone 5. These tools were exactly what I needed, but he is developing them all by himself, and they were in an early beta when I first started using them. There were some issues with stability, file compatibility, and feature readiness, which have since been fixed but incurred delays. The good news is that many features were changed or added on my suggestion, including user interface features to save me time and make my workflow for this app more efficient. As time and code permit, he may add even more features which will help bring this project to completion sooner.

But, even after finding the tools to do the job, managing all the content is still a big task. Two animators were hired out of the Kickstarter funds and they powered through the animation list. There’s only a small handful of animations left now, and all the main character idle poses are done and being arranged in the app. New page layouts are being finished at a steady pace now, with final animations and the beginnings of physics-based movement. In this video recorded a few days ago, you can see the first five pages mostly complete, save for fine tuning and interactivity.

This video also shows more progress, including the fact that now I have a tool that allows me to record audio and video simultaneously from the iPad simulator, to actually show what the app is like to see and hear, instead of just faking it by overlaying mute videos with the book’s soundtrack (next time maybe I’ll figure out how to avoid having it also record from my microphone so the narration is more audible and you don’t hear roommates closing doors in the background 😆 ).

Even though we didn’t meet our stretch goals for hiring additional programmers, I found someone on Craigslist willing to work in exchange for the experience. Already he’s enabled volume control (shown in the video) and a Table of Contents (being fine-tuned now). With his help, I can focus on integrating the rest of the content while he upgrades the user interface and gets the app ready for prime time.

There has been a lot of technical progress in the past few weeks; solidifying our tools and practices, fixing old bugs, and getting the framework ready for when all the content is done. Throughout the rest of the month I’m going to be working day and night to get this app finished. I hope that by this time next month we’re waiting for Apple’s approval so we can show this book off in the app store.

Don’t expect any more long updates like this unless some really interesting stories turn up. From this point forward, it should be pretty much just a matter of churning through the rest of the work, rather than solving technical problems and having to re-structure and adapt. And, there may not be many more videos either. We’re going to have to save some of the book’s content as a surprise for when you finally have it in your hands.

We couldn’t have gotten this far without the money and support from Kickstarter. Without being able to afford new hardware, I’d still be recording videos at three frames per second, waiting endlessly for long builds or to open large Photoshop files. I’d still be doing animations right now instead of moving on to layouts and user interface, and during all of it I would have to worry about random computer crashes. But, because of Kickstarter, I’ve been able to outsource enough animation to focus on code, and make sure I have the resources to develop and test without pulling what’s left of my hair out.

So, thanks once again for being a part of this journey. It hasn’t been the shortest or easiest, but it will be worth it when we have a platform for producing beautifully illustrated, top-quality, hand-made, interactive, inclusive, progressive, and just darn cute book apps.

Sincerely,
Victor B Andersen
On behalf of the Wompi Studios/Tomato Trouble crew.