Author: Danny Hall

  • Protect Your Data With Database Backups

    Protect Your Data With Database Backups

    Whether you’re a home roaster with a passion for the best possible coffee, or a professional shop roaster who’s livelihood depends on it, protecting your data should be high on your priority list. It certainly is on ours, and Roastmaster provides several ways to help ensure you never have to face a situation where data is lost.

    Where Does My Data Live?

    Every App in iOS is a self-contained entity living in its own personal, and protected space call a Sandbox. All of Roastmaster’s files, including its Databases, exported documents (such as Profiles, Programs, Curves, etc.), label definition files, etc. all reside in Roastmaster’s own private sandbox. Nothing can touch these files – they are secure and protected.

    As secure and simple as this paradigm is, it’s equally simple to unwittingly delete them all, forever. Here we must put our first warning…

    If you delete Roastmaster from an iOS device, all of your databases will be permanently deleted with it. The only way to get this data back is from an externally stored backup copy.

    So, How Do I Protect Against Data Loss?

    For the sake of defining whether or not a backup strategy is actually a good one, we’ll say there are two ways to store backup database files:

    Good: In an external location (your desktop Mac or PC, iCloud, Dropbox, etc.)

    Not so good: Within Roastmaster itself as a backup copy

    External Backups

    This is best way to totally protect your Roastmaster data.

    An externally stored backup copy ensures you will never be without at least a recent version of your Roastmaster database. An external backup file can be created in one of three ways.

    Roastmaster’s built-in import and export features.

    Roastmaster provides the built-in ability to easily export and import database files (.sqlite files).

    To Export the Live Database:

    1. On the home screen, open the drum door and tap “Actions”
    2. Tap “Export Current Database”
    3. Choose one of the three locations to export to:
      1. Dropbox
      2. Email
      3. Roastmaster’s Documents folder. The file can later be copied to your Mac or PC via iTunes file sharing.

    To Export a Database Other Than the Live Database

    1. On the database details screen (accessed in Utilities->Databases) tap the action button in the upper left corner of the screen
    2. Choose “Export…”
    3. Choose one of the three locations to export to:
      1. Dropbox
      2. Email
      3. Roastmaster’s Documents folder. The file can later be copied to your Mac or PC via iTunes file sharing.

    To Import a Roastmaster database:

    1. Tap on an .sqlite file in another area of iOS – this can be anywhere you might encounter a Roastmaster database – web forum, email attachment, web link, etc. For example, to import a Roastmaster database from the Dropbox App, simple navigate to the file in the Dropbox app and tap it. The details screen will appear. Tap the action button and choose “Open in Roastmaster”
    2. Roastmaster’s import screen will appear.
    3. Approve the import, deciding whether to rename or replace if a database already exists with the same name.

    iCloud backups when charging and linked to WiFi

    When iCloud is properly configured on an iOS device, all of Roastmaster’s data will be backed up to iCloud, whenever the device is charging and linked to a WiFi network. To verify that Roastmaster is being backed up with your regular iCloud backups:

    1. On your Home Screen, tap Settings
    2. Tap iCloud
    3. Tap Storage & Backup
    4. Tap Manage Storage
    5. Select the device you want to manage
    6. Verify that Roastmaster is in this list, and turned on

     iTunes backups when tethered to a Mac or PC

    iTunes can create backups of your iOS device, and app data, in one of two ways:

    • Via a sync operation if iCloud backups are not enabled on the device (otherwise, a backup is not made during a sync)
    • Via a manual backup operation, performed by right-clicking on the device in iTunes, and selecting “Back Up”, or selecting “Back Up Now” in the “Summary” tab.

    Internal Backups

    Convenient, but not a long-term backup solution.

    Roastmaster provides the ability to create local backup copies by selecting “Backup…” in the database details screen.
    A local backup file of a database is simply a copy of the database file, filed in a different directory within Roastmaster’s sandbox on the iOS device. It does NOT provide any type of external protection from device failure, accidental deletion, etc.

    This may, at first glance, seem like a useless feature. It is definitely true – this feature has no use in a GOOD permanent backup strategy. So, why does it exist? Well, a few reasons.

    1. It provides an easy way to make a quick backup if you are about to make sweeping changes in the database, and want a quick safeguard before implementing them.
    2. It facilitates Roastmaster’s automatic database upgrade functions. Whenever you download an update from the App Store, Roastmaster upgrades your databases, and automatically creates a backup copy in the unlikely event anything goes wrong.
    3. For folks who roast a lot (and I mean thousands and thousands of roasts) it provides a quick and easy way to make a copy of a database, restore it and start from scratch – eliminating old data that is of no use, but still retaining the important stuff, like the bean library, profiles, programs, etc.

    This feature does have its uses, however it should not be considered as part of a comprehensive plan to protect against accidental data loss.

  • Using Behmor 1600 Curves

    Using Behmor 1600 Curves

    Roastmaster provides the ability to create curves that match those on the Behmor® 1600 roaster. Behmor curves are display in the roasting graph just like standard curves, can be copied and pasted to profiles and programs, and can be time-shifted using the same algorithms the Behmor 1600 uses when performing time-shifts on the roaster’s console.

    The 1600 is unique in the way that it handles its internal roasting curves. They are calculated on-the-fly, based on 3 things:

    1. The Profile (the shape of the curve)
    2. The Program (the length of the roast calculated as a factor of the weight setting)
    3. The Weight setting (higher weight settings yield greater Program times).

    The 1600 allows some degree of customization based on the time shifts you apply to a curve. Time shifts you enter before a roast starts adjust every leg of the calculated heat curve evenly, adjusting each leg in proportion to fit the new time. Time shifts you apply after the roast begins affect only the final leg of the roast.

    How do I use them?

    You can create Behmor curves on the fly the same way you create regular curves in a roast as needed, or you can have them created automatically in roasts by turning the “Auto Behmor Curves” preference on in the preference settings. Then, whenever you choose an appropriate Profile, Program and Custom “Weight” Setting that is named in a way Roastmaster can identify, it will create the necessary curve automatically.

    Manual Behmor Curves

    The only thing you need to do is make sure the roaster entity in Roastmaster that represents your 1600 contains the string “Behmor” in the manufacturing field. Once you tag a roaster in a roast that meets this criterion, the “Create Behmor Curve…” option will be displayed when you tap the dark blue curve button on the roasting console.

    Automatic Behmor Curves

    Starting in Roastmaster iOS 7, you can simply select “Behmor 1600” in the add roaster setup assistant that appears when adding a new Roaster. Roastmaster will automatically create a Behmor roaster pre-configured for automatic Behmor curves, as well as enable the “Auto Behmor Curves” preference setting.

    First, verify that the “Auto Behmor Curves” preference setting in the Utilities section is turned on. Then, whenever you roast, you’ll need to choose the appropriately named Roaster for your roast, followed by one of its Profile, Program and Custom Weight Settings. These three entities are defined in the Roaster definition screen, and must all be present and chosen in a roast to trigger the creation of an automatic Behmor curve.

    To get started using automatic Behmor curves…

    1. Navigate to the Roaster section of the Utilities screen. Create a new roaster, and set the “Manufacturer” field to “Behmor”, and the model field to “1600″
    2. Within that roaster, create 5 Profiles, called “P1″, “P2″, “P3″, “P4″ and “P5″
    3. Create 4 Programs, called “A”, “B”, “C”, and “D”
    4. Create a Custom Setting Type called “Weight”, and within that Custom Setting Type, create 3 Custom Settings named “.25″ (or “1/4″), “.5″ (or “1/2″) or “1″.
    5. Save the Roaster, and you’re ready to roast.

    Or, simply import this Roaster definition on an iOS device to import directly into Roastmaster.

    In a new roast, simply choose that Roaster, and then the appropriate Profile, Program and Custom “Weight” Setting that correspond to the settings you will use on the Behmor itself. Roastmaster will reward you by automatically creating the necessary Behmor 1600 curve.

    Note: for any of the string patterns listed, the name must either match that string, or begin with that string followed by a space – e.g. a Profile titled either P1″ or “P1 Behmor Profile” would both be considered a positive match.

    How do they work?

    Once you’ve created a 1600 curve, and saved it to the current roast, selecting that curve in the graph will turn the new graph scale buttons (the “+” and “-” buttons) into time shift buttons. Tapping these buttons will apply the same logic to the curve that the Behmor 1600 applies to its internal curves, with respect to whether or not the roast is currently in progress. So, for every time shift you enter on the appliance, apply the same time shift to the selected Behmor 1600 curve in Roastmaster.

    If you need to look up the Behmor 1600 information contained in a 1600 curve, just go to the details screen of that curve. Swipe to the notes section – it will report the settings used to create the curve, as well as any time shifts you’ve applied to it – both before, and during, the roast.

    A few words about the design of Behmor 1600 curves in Roastmaster.

    Behmor curves are “opt-in”. Many 1600 users I’ve spoken with don’t care to track curves. They are quite happy roasting with the default settings, and not experimenting with time shifts. That, coupled with the fact that it is but one of the many roasters that folks are using, led me to design them to function modularly – the same way all other curves in Roastmaster work. In other words, a Behmor curve has no relationship to the details of the roast that contains it. The curve doesn’t care if you’ve tagged P1 in the roast – all it cares about is the setting you entered when you created the curve itself.

    Why? Well, Roastmaster is complex enough already, and at the end of the day simpler is better. If a Behmor 1600 curve were intrinsically linked with the profile/program data of the current roast, then (aside from making the interface more confusing) it would not be a viable curve outside of the context of a roast. Having a modular design gives you the freedom inherent in all curves, and will afford you the option to create custom Profiles for the 1600, based on curves you’ve tried and had success with.

    For instance, while testing the Behmor curves functionality, I happened upon a curve combination of P4/D that turns Central American beans into wonderful SO espresso! Go figure – surprised me too. The combination of the long roast time, and P4 heat ramp is a real winner.

    In future roasts where I want to target this same P4/D curve, I can record the Behmor details the standard way, and rely on the graph selector strip to find similar roasts for me, using the profile, program and curve buttons. In this scenario, the Behmor curves of previous roasts would be visible in the graph behind any current curves. I could create a new Behmor curve for each roast, and time shift to match the curves from the past roast(s) shown in the graph.

    I could, alternatively, copy and paste that P4/D curve into a new profile called “Central SO” that will sit along with the standard P1 – 5 default profiles, and tag only “Central SO” in the roast, ignoring the weight and program settings if I choose. In this scenario, every new roast with “Central SO” would automatically inherit that curve, and I could just look up the profile, program and time shift data in the curves detail screen, and set the Behmor console accordingly, ignoring all of the other custom Behmor settings. This would make roasting a bit quicker for often-used settings, as I wouldn’t have to do anything except tag the “Central SO” profile.

    I’ve learned a lot about this wonderful little (big) roaster while coding and testing 1600 curves. I hope it sheds a lot of light and helps you hone in on some winning combinations like it did for me.

  • Using Label Templates

    Using Label Templates

    You can customize label templates for use with Roastmaster, allowing you to create definitions for custom sheet and label sizes and layout configurations.

    The Custom Label Starter Kit

    The Custom Label Starer Kit contains 8 XML templates, labeled 1 through 8, each designed for a label sheet containing between 1 and 8 labels, as well as a PDF describing how to edit the values.

    You can edit these files in any standard text editor, just make sure the resulting saved file has an”.xml” extension. If you need more than 8 labels per sheet, simply copy and paste a new  block for each extra label on the sheet.

    To customize the label, replace each instance of “MyValue” with whatever value is applicable. You can refer to the PDF “Roastmaster XML Label Structure.pdf” for a description of what each value means, as well as a graphical sample template to give you an overall picture of how these should correlate to a real-world label sheet.

    Note: all measurements should be entered in Imperial inches.

    When you’re finished creating your custom template, you can import it directly into Roastmaster from anywhere on your iOS device – the two easiest ways are to upload it to your DropBox account, or email it to yourself. Navigate to the file on your iOS device, tap the icon and choose “Open in Roastmaster”. Roastmaster will present its import screen. Once imported, the new label description file will be available for immediate use.

    Download the Custom Label Starer Kit

  • Introducing Version 4.0

    Introducing Version 4.0

    It is with great excitement that I can finally announce that Roastmaster 4.0 for iOS is live on the App Store! It’s been a long wait for many folks itching for the update – 10 months to be exact. For me, it’s been 9 months of development – lots of fun, and lots of hurdles. For the folks patiently waiting – thank you for your patience. I knew going into this update, based on the features I wanted to tackle, that it would mean a dry spell for updates, but I couldn’t be happier with the end product.

    Some of the great new features in this update:

    • Data Logging Add-On
    • Roast Analyzer
    • Curve Templates in Profiles and Programs
    • Better Handling of Numbers in International Locales
    • Auto Behmor Curves
    • Clone Roast
    • Hide Beans with Zero Inventory
    • Decimal Numbers in Cupping Scores
    • Show Automated Bean Tally for Roasts
    • iPad Retina
    • iPhone 5 Retina
    • Miscellaneous Bug Fixes
    • Internal Speed Improvements

    Data Logging add-on

    Far and away, the most requested feature over the past year has been data logging – a means to automatically record roast temperatures during a roast, instead of having to enter each and every node manually. I was more than happy to oblige, because data logging has long been something I wanted to tackle as well. In fact, some of the code hooks for data logging have been there since I wrote the first lines of code dealing with curves themselves.

    The first question you may be asking right now is “What probes are supported?” Well, unfortunately, there is no prebuilt commercial thermocouple I’m aware of that is compatible with iOS (at least for the temperature range required for roasting coffee). The majority of probes on the market are USB, which – as far as iOS is concerned, is utterly useless, as there is no formal USB support on iOS devices. Apple does offer a USB camera adapter, but that is not the same thing as a programatic USB stack built to handle communication with devices using the standard USB protocol. In fact – devices attached over this adapter have to emulate a keyboard in order for information to be passed to iOS apps – something no probe is built to do. Any attempts to bypass this would get an app rejected in an instant.

    So, the solution? Phidgets! Phidgets are amazing little pieces of hardware, designed primarily for prototyping, or environmental sensing or control projects. Where they really shine for us coffee roasters, is that they can be accessed over a standard ethernet network, like is used in common WiFi network environments – something Apple does not regulate. Roastmaster now has the ability to, with the Data Loggin option, link to Phidgets Temperature Sensors via a network host and report, and automatically log, temperatures throughout a roast from one or more K type thermocouples.

    Check back often for more information on Data Logging in Roastmaster. There are also detailed help files in the app that can be accessed from the Data Logging store in the Probe section of Utilities. For now, though, see the Data Logging Guide for an introduction to how Phidgets can be implemented in your workflow, as well as a parts list for the hardware you’d need to get started.

    Roast Analyzer

    Roastmaster has always let you record lots of details about your roasts. Though it’s easy to manually browse through that data, there’s not been an easy way to graphically see details about all of the roasts of specific beans and blends, and the associated cupping data. Also lacking was a way to graphically browse roasts that relate to a current roast – a way to not only see more details of a range of past curve data, but also the cupping data tied to those past roasts. Having this data at your fingertips, in an format that is easily browsable during a roast, is indispensable for putting that data to good use in shaping the current roast.

    Well, I’ve given the full screen graph a big and much-needed facelift – turning it into the Roast Analyzer. The Analyzer can be accessed from several areas of the app: the home screen, bean and blend details screens, and of course, the roasting console. When accessed via the roasting console, the analyzer will be populated with the same past roasts that are being displayed in the graph, as well, of course, as the current roast. When accessed from a bean or blend details screen, it will contain all of the roasts of that particular item.

    You can flip through the roasts displayed in the analyzer with the arrow buttons on the left and right side of the graph, or swipe along the bottom horizontal axis to pan through them quickly. Cupping data for the roast currently being viewed will be displayed on the left side of the graph as an average of all the cuppings of that roast.

    There are lots of UI improvements as well: clear markers with icons for durations, crack times and alarm time (both current and the focus past roast), sharper text, better rendering at higher zoom resolution, basic roast controls, the ability to set a roast alarm as well as a host of other small improvements.

    Curve templates in Profiles and Programs

    This one should be a big time-saver for a lot of folks. Profiles and Programs have always allowed you to store curves. These curves are designed to be instructional curves (in the case of “Control Curves”), or target curves (in the case of “Reading Curves”)–basically recipes for a roast. Version 4.0 introduces the concept of “Curve Templates”. Designed to speed workflow, Curve Templates function as placeholder curves, allowing you to set the name, color, curve type, probe binding for Data Logging users–all of the important curve details, and have new, identical curves automatically generated in a roast whenever you use that profile or program.

    Better handling of numbers in international locales

    Before this update, Roastmaster did not address the numbering formats of users in locales that do not use the “.” (period) decimal separator. Users in France and Germany, for instance, use “,” (comma) as the decimal separator. These users were forced to enter and read numbers and dates in the US format, rather than their native formate. To make matters worse, one of the main areas of data entry would not honor decimals in any regard for users whose locale was not set to US. These issues have been resolved – international users should notice that number entry now occurs correctly, based on their native locale. My sincere apologies to these users – and thanks for your patience.

    Auto Behmor Curves

    Lots of folks have been asking for a way to make Behmor curves automatically populate a roast, instead of having to manually define one for every roast. I drug my heels a bit on that one, because, as popular as the Behmor is, only a percentage of Roastmaster users are roasting with a Behmor – lots are shop roasters with Probat or Diedrich machines, or home roasters with one of the other home appliances on the market. To avoid cluttering the interface, I have, and will continue, to avoid anything roaster-specific in the UI design of the app. That, coupled with the international language barrier, made it a bit troublesome as to how to give Roastmaster the “smarts” it needs to be able to tell what profile, program and weight setting to use, in a database model that I designed to be flexible with organization, data use and naming schemes.

    I finally settled on a solution that was non-intrusive for folks who do not use the Behmor, and effective for those that do – simple string matching. Following is a list of conditions. If the “Auto Behmor Curves” preference is enabled, and the following conditions are met in a roast, Roastmaster will oblige by automatically creating a Behmor curve for you in that roast. Note: for any of the string patterns listed, the name must either match that string, or begin with that string followed by a space – e.g. a Profile titled either P1″ or “P1 Behmor Profile” would both be considered a positive match.

    1. Your are roasting with a roaster whose manufacturer field is “Behmor”, and whose model field is “1600”
    2. You are roasting with a profile named “P1”, “P2”, “P3”, “P4” or “P5”
    3. You are roasting with a program named “A”, “B”, “C”, or “D”
    4. You are roasting with a Custom Weight Setting named “.25” (or “1/4”), “.5” (or “1/2”) or “1” AND that Weight Setting belongs to a Weight Setting Type named “Weight”

    Naturally, those Profiles, Programs and Weight settings should represent the corresponding settings on the Behmor machine itself. Following these rules, you’ll find that roasting with a Behmor is a lot faster and more intuitive. I use auto Behmor curves every time I roast with my Behmor – hopefully you’ll love it like I do.

    Duplicate roast

    If you often roast the same bean, especially back-to-back in batches, you’ll appreciate this one. In the main roast list, tap and hold on any roast to duplicate it as a new roast, with the roasted items and roaster already filled in–ready to roast.

    Hide beans with zero inventory

    This was probably the third most requested feature. In any of the bean list views or bean choosers, you can pinch zoom to hide and show beans that have 0 inventory. Pinch-swipe apart to hide out of stock beans, pinch-swipe together to show all.

    Decimal numbers in cupping scores

    Prior to this update, cupping scores were limited to integers. You’ll now be able to enter cupping scores as decimals for each category, as well as the cupping correction.

    Show automated tally of roast ingredients

    If you like to roast blends, this one will come in handy. You’ll notice a blue button with a scale in the “Roasted Items” section of a roast. Once you’ve tagged the item(s) you’re about to roast, tap this button to show a list of the green beans you need. Roastmaster will tally up every bean, recursing through blends, and present a list with weights.

    iPad Retina support

    iPhone 5 Retina support

    Bug fixes

    Finally squashed the elusive “Inconsistency” error that would occur if you closed a database, and tried to navigate the app without opening another database first. Hopefully, only a few folks encountered this, but it’s been bothering me for some time.

    I really hope you enjoy the new update, and find the new features helpful. If you have any questions, just let me know.

     

  • Introducing Version 3.0 and the Forum

    Introducing Version 3.0 and the Forum

    At long last, version 3.0 went live yesterday morning.

    Thanks to everyone for their enduring patience while awaiting the long-coming update. I, as well, had to call on my own patience reserves over the late-summer and fall in dealing with the less-than-smooth introduction of iOS 5 and Xcode 4, and the bumps they brought with them in developing for Core Data. But, I’ve been told that “All’s well that ends well”, and… in the end, I’m very happy with the update. So, onward and upward!

    I’d like to formally introduce the new forum. One of the things that many users ask for is a way within Roastmaster to import and export data like Profiles, Programs, Curves, Roasters etc. Version 3.0 brings this capability, but without a venue geared toward the app, and way to exchange this data, this feature is limited in its usefulness.

    There are a number of coffee-roasting forums, run by some great people who devote a lot of personal time to moderating them. First and foremost, I have no desire to recreate the wheel. My time is better spent developing Roastmaster, and giving help to users with questions. Even so, I believe the forum will be the perfect venue for a number of things.

    Naturally, forums are geared toward communal discussion and file exchange, so they’ll be a good fit for sharing your own personal data, and searching and downloading others’ data to experiment with yourself. That’s the main goal.

    In addition, though, I want to take a more active role in sharing some of the more common questions I get about Roastmaster, as well as provide some much-needed resources for new users, and those seeking information on some of the more advanced workflows possible in Roastmaster.

    The internal app help files do a good job of explaining the basics of the app, but I’ve dedicated too much time to coding, and not enough to supplying help that gives folks the bigger picture of how the app works, and how to best tailor it to their unique needs.

    So, keep an eye on the site in the coming months. I’m beginning work on a few tutorial videos that will hopefully be a great resource for those with questions, and expanding the support page to offer more help to users coming to the site with questions. In addition, I’m always here to answer in questions you have via email.

    As far as Roastmaster itself goes, my main focus in the coming months will be working on automated readings. Things are finally coming around in the probe market, and I want the app to be ready for products that will most assuredly materialize in the (hopefully soon) future.

    As always – happy roasting!

    Danny