Tag: Roastmaster

  • Version 3.0 Is on its Way.

    Version 3.0 Is on its Way.

    Greetings everyone, and Happy New Year!

    I hope you were able to enjoy your holidays as I did – spending lots of time with family and friends. I love this time of year, and the way in which it draws everyone together. I hope you had a wonderful season of festivities, and drank (as I did) more than your fair share of coffee!

    1/15/12 – This post was originally a request for a number of sample user databases to test with. A million thanks to everyone who reached out and sent me databases! I keep a running archive of all of my personal and development databases, but it gave me a great peace of mind to have other folks’ real-world data to test with. All of my testing went well, and the update was submitted to Apple yesterday afternoon.

    So, what’s coming?

    Here’s a fairly complete, even if curt, laundry list of the new features and improvements:

    New Features:

    • Label Printing and/or PDF generation for Roasts, Blends, Cuppings and Beans
    • Data exchange (import and export) for Roasters, Profiles, Programs, Curves, Databases and Label Definition Files
    • Dropbox and Email Support for data exchange
    • All internal weight and volume calculations use the extremely precise decimal number format instead of float numbers
    • Database stores all weight and volumes as precise decimal numbers instead of the sometimes rounded float numbers
    • Behmor Curves
    • Custom roaster settings
    • Enhanced Profile and Program snapshots
    • Profile and Program snapshots navigation screens
    • Reusability of Profile and Program snapshots
    • Blend Snapshots
    • Blend by weight
    • Increased max curve temps from 999 to 10,000
    • Price per unit for beans
    • First and Second crack end times
    • iOS 5 compatibility and bug fixes
    • Customizable label definitions
    • More detailed reporting of curve deltas in the full screen graph
    • Facebook bug fix

    Roasting console interface enhancements

    • Dedicated curve button
    • Dock-able graph selector for a larger graph view
    • Graph rescale buttons
    • Kg option in weight choosers
    • Wiper alarm marker in roasting graph
    • More intuitive measurement input in inventory and item choosers
    • Swipe to select curves

    I am very excited about this update, and anxious to get it into your hands. Once it’s live, I want to shift gears and create a little forum section on the site where I can post downloadable files for beginners, and where users can share and exchange their own data. There are a number of great coffee forums on the web. I don’t want to recreate the wheel – just give everyone a place to exchange and discuss their Roastmaster profile and program data.

    Also, I’ll be starting work on some tutorial videos. Admittedly, using some of the more advanced features of Roastmaster carry with them a learning curve. I’d like to create a series of videos to explain these features, as well a couple geared towards getting started for new users.

    Cheers,
    Danny Hall

  • Introducing the ThermoTooth 3000!

    Introducing the ThermoTooth 3000!

    Here it is – what I’ve affectionately dubbed the ThermoTooth 3000 – a fully wireless, dual channel, K style thermocouple prototype. She had her first successful Bluetooth session with my Mac tonight, and even with her limited code, she’s quite a smart gal! Over a simple wireless serial connection via terminal, I am able to select which thermocouple to monitor, and trigger individual Celsius or Fahrenheit readings, or both. No special drivers – just a Bluetooth serial connection.

    For the geeks like me, she’s built on an Arduino Uno prototyping controller board. Stacked on top of that is an XBee shield, providing the networking connectivity beyond the basic USB already present on the UNO. The XBee shield currently houses a Seeed Studio Bluetooth Bee, which provides the Bluetooth connection layer. The two K-style thermocouples connect to the Uno via two Max6675 chips, each providing cold-junction compensation and digital conversion of the thermocouple voltages for its independent channel. The sheer amount of electronics here is definitely overkill – I’m sure the cumulative brains of this could drive a car, but that’s how prototyping works.

    First off – it’s not meant for live production. I built it in the hopes I could pair it with an iOS device, and negotiate a wireless serial connection via Bluetooth. I know the device functions well, but the external connectivity of iOS itself still holds unknowns for me. The XBee shield offers the advantage of being able to swap a regular wireless network interface for the Bluetooth module in case the Bluetooth method is unsuccessful.

    Hopefully, a more permanent solution is on the way. I’ve been contacted by a manufacturer who is currently developing a Bluetooth thermocouple they plan to bring to market this fall. Naturally, this is great news for a lot of us looking for automated readings. They have not discussed the expected price, but the product itself sounds great! The manufacturer has agreed to sending me a prototype for evaluation once the release date gets closer, but in the mean time – I needed something to develop with now.

    This is why I built the TT3000. The majority of the code involved to implement thermocouple support will likely be designing the Roastmaster interfaces and its internal data structures, and setting up the communications framework to be used between roasting curves and wireless devices in general. The Bluetooth serial protocol has seemed quite easy to work with while prototyping the TT3000, so I’m hoping that this venture will be successful, and that adding support for the new product (as well as any others that may crop up), will be fairly easy to add ONCE I get support for wireless thermocouples in general built into Roastmaster.

    I’ll post back here with updates as development progresses. This isn’t at the absolute top of my development list – there are several feature requests/tweaks I want to finish up first, but I plan to be working on this until I find a workable solution.

    As always – if you have any input – please let me know.

    Cheers, Danny

  • Calling All Thermocouples

    Calling All Thermocouples

    OK, so I’ll admit it… I love the nostalgia of analog devices.  As a kid I assembled a rolling ball clock – the kind that resembles an intricate, miniature roller coaster, where time is measured by the number of balls on each “track”. I loved it! Unfortunately, it woke the whole house up at midnight, so I, alone, was unanimous in that, but to me it was the most wonderful invention I had ever seen.

    The programming side of my brain, though, makes me a fair-weather friend to analog devices. For all their nostalgia, sometimes digital is just plain easier… and better. Such is the case for me with my roasting thermometer. There’s absolutely nothing charming about craning my neck upside down to read the accurate bean temp at regular intervals throughout a roast. And, though Roastmaster makes it easy to input temps with the keyboard, an automated solution would be much better.

    For some time now, I’ve been wanting to make the jump to something digital. I’ve held off, hoping I could find a device that I could integrate with Roastmaster to accommodate the automated readings. There are endless USB data loggers out there, but without a USB port on any iOS device, they may as well be turkey probes. I did find a high-end Bluetooth thermocouple as well, but any price that is listed as “Call for quote” is usually just too ridiculous to display. I did, by the way… and it was.

    I was hopeful when the iGrill bluetooth thermometer was introduced. It’s basic, but it’s an all-in-one package that looks great, and would do the trick, as long as the makers would release the SDK for other apps. Or, so I thought – turns out it’s not capable of reading temps high enough for coffee roasting. I’d like to talk to the manufacturer and see if this is hardcoded in the electronics, or simply a limitation of the probe supplied with the unit. For the moment, though, mine is sitting quietly and sadly, unused.

    I’m aware that there are build-it-yourself open source Arduino solutions out there. I’ve researched one, and it is feasible from what I can read. I had hoped for a prepackaged solution, since we’re coffee roasters, not electronic engineers. But, being in this community for quite some time has taught me that often they do overlap. I’m thinking I may just take the plunge. Being open source – I anticipate it will work well, but probably won’t win any beauty contests. Still, though, it will give me a tool to at least construct the framework Roastmaster will need to work with these devices, and as new solutions come to market, those will be as easy to add as creating a device description for them, or so I’m hoping.

    In the mean time, if anyone knows of a Bluetooth, LAN or, dare I ask for it – an iPhone dock-style thermocouple – available for a reasonable price, with a public SDK, please let me know.

    Cheers and Happy Roasting,
    Danny

  • When 2 + 2 = 4.0001

    When 2 + 2 = 4.0001

    If you use the imperial system to record weights in Roastmaster, and you roast in even measurements of, say 8oz, or 4oz, you may have noticed that as you near the end of your inventory for a particular bean, the number that Roastmaster displays as your inventory becomes a decimal that is very close to your actual inventory, but is sometimes off by hundredths of an oz (or a few grams).

    What is happening?

    Whenever your database is saved, the inventory in memory is being saved as gram integers to the database. This is effectively stripping off the decimal portions of a gram. Now, before you worry – a gram is roughly 6 beans, give or take – so it’s not serious, but it is definitely an annoyance that I plan to address in the next update.

    Why is this happening?

    Well, that takes a bit of explanation…

    Computers are amazing things. In and of themselves, they are perfectly accurate machines – capable of crunching any number thrown at them. Unfortunately, though – storing those numbers in memory, or to a database, can be a problem.

    Think back to the days of high school math, and everyone’s favorites… long division, and yes… fractions. Some are easy. For instance 1/4 = .25. Simple, right? Well, what about 1/3? .33 may come to mind, but the actual number is 0.33333333333333333… with the 3’s going on forever. That is the venerable repeating decimal – a number that can never be exactly represented in decimal notation. Now, once you’ve worked out about 4 or 5 decimal places, most of us (math teachers included) would say “close enough”. And that is exactly what computers have to do – otherwise those numbers would overflow all of the available RAM, and the extra precision wouldn’t do anyone any good.

    So what does this have to do with coffee?

    Well, Roastmaster users are located all over the world, and from what I know, the US is the last major holdout on the imperial measurement system. Yes… pounds and ounces – where nothing divides evenly, and conversions back and forth are impossible to do in your head, so we’ve added all of these auxiliary helper units like cups and pints. Our global friends though, using the metric system, are at an advantage here. Everything is even – everything converts – and computers have a much easier time working with it. Now – providing support for both at the same time is the dilemma that Roastmaster faces – every number ends up being a nasty looking decimal in the end when the imperial system is involved.

    Unfortunately, SQLite databases in iOS are tricky when working with decimal numbers. The decimal number you save in is NOT guaranteed to be the number given back to you the next time you read the database. It will be close, but not always exact. The accuracy varies, but when dealing with larger numbers, it diminishes fairly quickly, so what starts out as accurate to the millionth place, can sometimes quickly dwindle to the point of only being accurate to the hundredth place.

    I knew from the beginning of Roastmaster’s development there would always be tiny inventory drifts when roasting if the imperial system was involved, due to floating point decimal approximations. The design decision I faced in the very beginning was how to minimize this for the largest number of users. In the end, I opted to use the metric system internally for Roastmaster, and to store the inventory as gram integers. I thought this would yield the least overall drift, (and best precision) as it would eliminate the small inconsistencies that could creep in when dealing with decimals – especially for larger inventories like roasting shops would have.

    I thought it was a good decision for a few reasons. One, I believe the metric system is superior to the Imperial system, and certainly easier to use. Two, I feel that even here in the states, for home coffee roasting, most people use metric as well – it offers more precision that trying to deal with quarters of an ounce. Even those that own roasters with half and quarter pound settings, usually whittle those numbers down to a lesser amount of grams until they find the sweet spot of the roaster. Three, shop roasters would have larger inventory and never notice, or care, about drifts of a fraction of a gram. Finally, and most importantly, the vast majority of the world are metric users, and would never even see an inventory drift at all, because that kind of thing just doesn’t occur in a system that converts evenly.

    Now, as Roastmaster is being put through its paces, it turns out the drift for imperial users was a little more than I anticipated. In just 5 – 10 roasts, those gram fractions can add up quickly and amount to 1/10 to 3/10 of an oz, so users are left seeing, say, 15.86 oz of inventory instead of an even 16 oz.

    What else does this affect in Roastmaster?

    Absolutely nothing. All of Roastmaster’s internal calculations dealing with storage in the database operate on decimal numbers, and at much smaller amounts, which is safer for decimal precision. So, whatever number you put in for roasted weight, cupped weight or volume, or blended amounts, etc. is exactly the same number that is saved in the database – with all of its decimals intact. In addition, all of Roastmaster’s internal conversion algorithms operate with 6 decimal place accuracy, so this problem should only be seen in numbers that are reported directly from the transient inventory measurements.

    If you’ve noticed this issue, I hope this has shed a little light on what is happening. Be on the lookout for a fix in the next update, and sorry if this has caused anyone trouble or confusion.

    Cheers, Danny

  • Roastmaster for iPad

    Roastmaster for iPad

    At long last… it’s here – it’s Universal – it’s approved and ready for download, and yes, of course, it’s a free upgrade!

    Looking at my last post, I realize it’s been a while since I’ve posted anything. I tend to get a bit, shall we say… focused when I’m coding. I also now realize I was wrong on two counts. One, even with Roastmaster’s complexity, it was possible to make it a universal app, and second… I was nowhere near as close to completion as I thought!

    When I last posted, I had a working version of Roastmaster on the iPad. It was really exciting to be using it on the ‘big screen’. But, after a few weeks and many roasts went by, and I finished up all of the artwork for the iPad screens, I realized that a straight clone of the iPhone version just wasn’t going to cut it. All of the full-screen animations transitioning to data entry screens, or related views started to feel really cumbersome – almost dizzying at that screen size.

    So, I set to work on making the UI experience more aesthetically pleasing on iPad, and, more importantly–faster. iPad supports a great little addition that the iPhone doesn’t – what Apple calls the Popover Controller. These view controllers let you build the great little popup “cartoon bubble” views you will see used everywhere throughout the iPad version. These views eliminate the need for full screen transitions for normal data entry, and makes Roastmaster much snappier and more responsive. There are also other things you may not even notice – like that when adding a new item, the new view that appears only occupies a part of the screen when in landscape mode, leaving the view that spawned it partially visible in the background. It doesn’t seem all that exciting, but I’ve found it helps to eliminate screen confusion when you’re entering and exiting related detail views, as it is a visual reminder that you’ve entered a “transient” screen that is waiting to be saved and dismissed. It makes it harder to “get lost” in all of the data views.

    What else is new? Well, you’ll never be locked to portrait mode again, no matter which device you use. I had always felt that landscape mode would be helpful on iPhone, but it’s an absolute necessity on iPad. Personally, I rarely use portrait on iPad, I just simply like the landscape orientation better. So, I finally bit the bullet and coded all of the views to be orientation-aware. Once I had that ironed out and finished, I realized I had some screen real estate on the home screen, and decided to do something I’ve been wanting to do for some time. I’ve been bothered by the fact that Roastmaster can collect all kinds of great data, but there’s no global way to see the ‘larger picture’ about what beans you have on hand, or what you’ve been roasting. So was born the new home screen graph. Tap and slide to see details about each chunk of data, or tap and release to go to the next mode. It will show you the breakdowns of your inventory by region, county and vendor, and what you’ve been roasting by region, country or vendor. This scratched the itch I’ve had for some time. It almost feels like a little “reward” for diligently storing all of that data – letting you see how it all fits together, and what your roasting patterns are.

    Also new is the inclusion of notes in both the headers views (when the orientation provides enough room) and in iPad’s library listings of beans, blends, roasts and cuppings. We all record notes, and having to load a detail view and swipe to the bottom just to see them was way too cumbersome. This little “featurette” should be a big time-saver. Most of the remaining work was behind the scenes – for instance, alarms are now more elegantly handled when they ring outside of Roastmaster.

    I want to give a really big “thanks” to all of the beta-testers! This was by far the biggest update for Roastmaster that I’ve put out, and the one that has made me the most nervous. I added a lot of new code to literally every single interface view in the app, and in very crucial ways, so it was important to make sure that it was working without problems before releasing. You guys gave me great peace of mind – thanks!

    So, how do you migrate to iPad? If you’re an existing Roastmaster user who wants to transfer your iPhone or iPod Touch database to iPad, you’ll find instructions in the much improved “Crash Course”. Open the drum door on the home screen, tap “Help”, then “Crash Course”. Follow the instructions for “Manual Backups Via iTunes File Sharing”. In essence, you’ll copy your “Databases” folder to your main computer’s desktop from your iPhone or iPod Touch, then copy your database “.sqlite” file (one by one if you use multiple databases) from inside that folder from your computer to your iPad. Once it’s copied, just make sure to quit Roastmaster if it’s running in the background, then relaunch it. Your database will appear in the list of databases – just load it and you’re right where you left off on iPhone.

    What’s coming? Well, I have a few things planned. The first thing I want to tackle is a minor inventory drift that some imperial system users are seeing, and pay a little attention to the way in which inventories are reported. I also want to explore the possibilities for automated temperature collection via a Bluetooth thermocouple. Code-wise, it won’t be hard to implement. The problem is finding hardware that will work without forcing everyone to go out and buy a soldering iron and build their own Arduino board. So far I’ve struck out with the iGrill thermometer. It looked promising, but after purchasing one I found that it won’t register temps high enough for coffee roasting. I’m still looking though, so I’ll keep you posted.

    Hope you enjoy the update, and Happy Roasting!

    Cheers, Danny