Renew and Refill Bob Cassette for a fraction of the cost!

Overview

Bob Cassette Rewinder: Hacking Detergent DRM for 98.7% Cost Saving

Get Bob Rewinder | Official Discord | User Manual


How I defeated Bob Dishwasher's detergent cartridge DRM to refill it at 1/75 of the cost of buying new.

Alt text

Introduction

Back in Jan 2021, I watched Techmoan review the Bob Dishwasher by Daan Tech. In short, Bob is a sleek and compact countertop dishwasher with a built-in water tank that can be filled by hand, requiring no plumbing and minimal space.

Alt text

He seemed to be quite impressed, mentioning its ease of setup and use. I liked the idea myself too, and ordered one soon afterwards.

It arrived after a 2-months wait, and overall I'm very happy with it. It fits on my kitchen top, has enough space for my dishes, uses a tiny amount of water, and overall works just fine. No problems.

It is also internet-connected (of course), but I never let it online. Why in the world does a dishwasher needs internet anyway?

Bob Cassettes

One of the headline features of Bob dishwasher is the Bob Cassette, an all-in-one detergent cartridge. Just pop it in and off you go! No need to manually measure and add detergent each wash, very convenient!

Alt text

There are two types of Bob Cassettes:

Alt text

Pop Cassette

  • Contains washing detergent and rinse aid

  • Lasts 30 washes

Rock’n’roll Cassette

  • Contains cleaning agent and limescale remover

  • Deep cleans and maintains Bob

  • Should be used every 90 cycles

  • Lasts 1 wash

Advantages

Daan Tech quoted several benefits of Bob Cassettes:

  • Simple to use, no need to add detergent every wash, less mess.

  • Exact needed quantity is dispensed, less waste.

  • 2-stage dispensing. Detergent first, rinse aid at later stage.

  • Made from recycled plastic, and can be mailed back and reused.

Outrageous Cost

While those points are perfectly valid and I did enjoy using the cassettes, such convenience comes with a cost, and Daan Tech is more than happy to take it off your hands. Looking at their website, a 4-pack costs £29.90:

Alt text

With shipping and VAT added, it costs a whopping £43 ($60) for 90 washes! That is 48p (67c) per wash. It might not sound like much, but it quickly adds up.

Over a year of daily washes, it would have cost £174 ($242) in Bob cassettes alone! Imagine paying that much recurring cost for a dishwasher!

And remember its internet connectivity? Yep, the whole reason is that it can reorder more cassettes automatically when it runs low, just like those wretched HP inkjet printers.

It is clear that Daan Tech are banking on the convenience of subscription models. Now I'm sure a lot of people would have no problem with that, but personally, I can think of a few better uses of my £174 than on dishwasher detergents.

Another point to consider is what happens if they went bust? No more cassettes, and now you have a fancy paperweight, like so many unnecessarily-smart appliances before it.

Alternatives

Credit where credit's due, Daan Tech didn't completely lock down the machine with Bob cassettes. Once empty, you can leave it there and add detergents manually. However, they strongly suggest against this, quoting a few drawbacks:

  • It's a chore to measure and add them manually at each wash.

  • Dosing can be tricky, as most tablets, pods, and liquids are for full-size dishwashers.

  • Multi-stage dosing impossible, can't add rise aid after main wash.

  • Limescale might develop over time and damage the machine.

It is clear that this dishwasher was designed with Bob cassettes in mind, and I do enjoy their set-and-forget simplicity. That's why I made it a priority to investigate how it works.

A Closer Look

Looking at the cassette, we can see it has a small circuit board in the middle, with 4 contacts on each side:

Alt text

At the receptacle, we can see the connector for the PCB, as well as two hoses to pump out the detergent during a wash:

Alt text

Notice there are only 4 wires going into the machine. Coupled with the fact that Bob needs to read the cassette to determine how many washes are left, and write to update it after a wash, I had a pretty good guess of what that mystery PCB contains.

The answer is an I2C EEPROM, a popular type of non-volatile memory. EEPROMs retain whatever's inside even after losing power, and are very cheap, making them perfect at holding small configuration data in embedded systems.

To settle it once and for all, I extracted the PCB from the casing by melting the plastic with a soldering iron. A bit messy, and I probably should have used a dremel, but I didn't have one.

Alt text

A closer look at the PCB confirmed my suspicion:

Alt text

It's simply a 24C02 EEPROM with 4.7K pull-ups on I2C lines, a bypass cap, and some diodes, probably for reverse-insertion protection.

Looking at the datasheet, 24C02 can only hold 256 bytes of data, so I guess there probably isn't much going on, but we'll need to dump its contents to be sure.

Bob the Dumper

So my plan now is to read what's inside the EEPROM. It seemed that a special connector is needed, but after rummaging around the parts bin, I found that it fits into a USB-A female socket just fine! Although I had to insulate the metal case so it won't short on the PCB contacts.

I found a leftover board from pimping my microwave, and quickly threw together a contraption to read the EEPROM:

Alt text

It would just read all 256 bytes and print them over serial, and I wrote a short Python script to save them as a .bin file.

Here is a quick look at whats inside a Pop cassette, with 26 washes left:

Alt text

We can see that:

  • Most of the EEPROM is unused (0xff)

  • There is a UUID-like ASCII string at the beginning

  • Classique seem indicate the cassette type

There are few other bytes here and there, I didn't know what they do, but it doesn't really matter for now. I wanted to see what changes after another wash.

So I put the cassette back, had another wash, dumped it again, and compared the difference:

Alt text

Voilà, there it is! Only one byte is different at address 0xa1, and it went down from 0x4A to 0x49 while going from 26 to 25 washes.

Doing some interpolation, it seems that byte starts from 0x4e at 30 washes, and goes down from there.

I changed it to 0x3f, which should be 15 washes, and put it back. This happened:

Alt text

111 washes! Looks like they didn't do much bound checking 😅 .

A bit perplexed, I tried several other values. In the end, it seems that the mapping is like this:

Washes Left Value @ 0xa1
30 0x4e
...
16 0x40
15 0x5f
...
0 0x50

Not sure why they did it this way, but anyway!

To reset the cassette to 30 washes, all I have to do is set that byte back to 0x4e, easy enough!

With the simple EEPROM chip, standard 0.1 inch contact spacing, one-byte counter, and no error checking, it sure seems Daan Tech didn't try really hard, guess they reckoned that it wasn't worth the trouble. Well, less work for me too!

Now what?

It's great now that I can reset the Bob Cassette counter, but what should I refill it with? After all, this whole endeavor would be pointless if they really do have some secret sauce in there that can't be found anywhere else.

Of course, Daan Tech themselves sure wish you don't play around with the cassettes:

Alt text

Alt text

So what exactly is in those cassettes? Fortunately, they did provide some details in the user manual:


Alt text


It's easy to see they kept things a bit vague to discourage loonies like me, but we can still extract some useful information out of it:

  • Pop Cassette has two tanks

  • Tank 1 contains 130mL of washing detergent, mainly Sodium Hydroxide (NaOH) and Etidronic Acid, less than 5% concentration.

  • Tank 2 contains 35mL of rinsing liquid, also less than 5% concentration.

As the names suggest, detergent helps to break down grease and clean the dishes, while rinse aid reduces water streaking and improve drying performance. Technology Connections did a video about this topic, so give it a watch!

I also wanted to find out how much detergent Bob actually uses at each stage of wash, so I did a express wash on Bob, and weighed the waste water at each stage. Its water usage is as follows:

  • 1000mL washing

  • 650mL to wash off the detergents

  • 1200mL Rinsing

Overall, less than 3L of water for an entire load! Very efficient!


I can now calculate the detergent concentration:

  • 130mL tank / 30 washes = 4.33mL per wash

  • 4.33mL detergent per 1000mL water = 0.433% concentration, or 1:231 dilution.

Similarly for rinse aid:

  • 35mL tank / 30 washes = 1.17mL per wash

  • 1.17mL rinse aid per 1000mL water = 0.117% concentration, or 1:855 dilution.

A Clean Getaway

With those information, I can begin searching for similar dishwasher liquids on the Internet.

I first tried "Concentrated Dishwasher Detergent", which returned a lot of supermarket dishwasher gel, not quite what I want. But it quickly led to something much more promising.

The magic word appears to be: Commercial Dishwasher Detergent & Rinse Aid from Catering supplies websites.

A quick search showed quite a few very reasonably priced 5L detergents & rinse aids:

Alt text

Of course, the question now becomes which one do I pick? Fortunately, all chemical products in UK comes with a Safety Data Sheet by regulation, which contains the composition and concentration of what's inside. This way, I can compare an unknown detergent with Bob Cassette and get a rough idea of how close it is.

Looking at the cheapest detergent (top-left), its instruction states:

Alt text

The dilution ratio from my earlier calculation was 1:231, right in the ballpark. Looking the data sheet:

Alt text

Similar composition and concentration too! Both less than 5%.

Moving on to the cheapest rinse aid:

Alt text

Again, spot on. So there you go! Perfectly good substitutes for the detergents inside Bob cassettes.

Of course, I do realize that the chemical composition might not be 100% same, at least according to the label. But those bulk detergents are for use in professional commercial kitchens, so they are unlikely to be weak stuff. And just wait until we get to the cost analysis!

Cost Showdown

Now comes the good part, let's work out how much I save by using commercial detergents.

Detergent

  • £5.99 ex-VAT, £7.2 with VAT

  • 5000mL / 4.33 mL per wash = 1154 washes

  • £7.2 / 1154 = 0.62p per wash

Rinse aid

  • £6.29 ex-VAT, £7.6 with VAT

  • 5000mL / 1.17 mL per wash = 4273 washes

  • £7.6 / 4273 = 0.018p per wash


With that, the total cost per wash is:

0.62p + 0.018p = 0.638p, or 0.87 US cent!

We know from earlier that Bob Cassettes costs 48p (67c) per wash.

Therefore, refilling it yourself is more than 75 times cheaper, resulting in a massive 98.7% cost saving compared to buying new!

What's more, the 5L detergent can last well over 3 years of daily wash, while the rinse aid can last almost 12 years! Over those time you would have spent £2088 on Bob cassettes, and who knows if they will even be around then.


Of course, this calculation really is the best-case scenario, it didn't account for shipping of the detergents, and they might go bad before all gets used up. But even considering those possibilities, 1 to 2p per wash should be easily achievable, which is still almost 30 times cheaper. It's a no brainer to refill your Bob Cassette if you can.

Testing it Out

I went out and bought 2 jugs of detergent and rinse aid:

Alt text

I picked them up locally, so I didn't have to pay shipping. The total came to around £17.

Refilling the cassette is easy, I taped over the PCB window to prevent liquid getting in, and injected the detergents into the cassette with a syringe with blunt needle, poking through the one-way membrane. WARNING: See this guide for more details if you plan to do it yourself.

Alt text

I then popped the cassette back, as expected, Bob reads it having full 30 washes left:

Alt text

I did a wash, and the resulting dishes are just as clean as before, nothing seemed different, except I'm now paying 75 times less for the privilege! Job done!

Bob Rewinder Board

Everything's coming together nicely! But as I will refill the cartridge frequently in the future, I do want to make a proper gadget to renew a cassette at the push of a button, instead of using the flying wire contraption earlier.

So I quickly designed a circuit board, christened Bob Rewinder, and hand-soldered a prototype:

Alt text

Bob Rewinder simply plugs into the cassette:

Alt text

Pressing the RENEW button will reset the EEPROM, and I can then refill and re-use the cassette for next to nothing!

Thoughts and Conclusions

In this project, I wanted to explore the possibility of refilling and reusing Bob cassettes so I can preserve its set-and-forget convenience at a fraction of the cost.

In the process, I...

  • Identified the chip inside the Bob cassette.

  • Dumped the data and figured out how to reset the counter.

  • Calculated Bob's detergent usage and concentration.

  • Researched alternative detergent options.

  • Performed cost analysis.

  • Did a test run with commercial detergents.

  • Designed a circuit board to easily renew the cassette.

Looking back, nothing was particularly difficult, but it did involve a lot of topics, and I learned a lot about dishwasher cycles and detergents in the process, probably more than I would have liked :)


What I find ironic is, Daan Tech isn't shy about their "positive cycle" of environmentally friendly practices, while having no problem selling you single-use cassettes at 75x of the price that lasts only 30 washes. The only justification is that you are supposed to mail them all the way back to France so they can be refilled (and of course, sold again).

If they truly wanted to cut down on single-use plastics, what's wrong with user-refillable detergent compartments like every other full-size and commercial dishwashers? That sure seem a lot less hassle than mailing plastic cartridges back-and-forth around the world.

Despite the DRM and warnings about not to refill the cassettes yourself, they even admitted themselves that the cassettes can be reused hundreds of times:

Alt text

They also mentioned how conventional detergent plastic bottles is bad for the environment, while the cassettes themselves only last 30 washes and uses way more plastic and electronics.

The more I think of it, the more I can draw parallel between Bob cassettes and those overpriced DRM-enabled inkjet cartridges, often costing more than the printer itself. It wouldn't be surprising if Daan Tech took some inspirations from there.


In the end, I'm glad I tamed another totally unnecessary subscription-based internet-connected "smart" device, and managed to reuse and refill the cartridge for 1/75 the cost of buying new.

By doing so, the biggest change is I no longer have to worry about using Bob at all. There used to be a constant niggle in the back of my head about getting the most out of each wash, because once it runs out, I'm in for a long wait and expensive bill. Now that the cost is so low, I find myself using it much more liberally whenever I want, often multiple times a day.

Despite my lengthy rants, I actually really like the dishwasher itself. It is quiet, water-efficient, fast, compact, looks great, requires no plumbing, and perfect for small homes. Funny how once DRM-based nickel-and-diming is out of the equation, Bob is actually excellent at its job.

I want one too!

I have made a few extra Bob Rewinder boards, you can get it here.

For instructions on how to use it, click me!

Other Stuff

I've done a few other fun projects over the years, feel free to check them out:

duckyPad: Do-It-All Mechanical Macropad: A 15-key mechanical macropad with hot-swap, RGB, and sophisticated multi-line scripting.

Pimp My Microwave: Fixing my microwave by grafting an RGB mechanical keyboard to it!

Daytripper: Hide-my-windows Laser Tripwire: Saves the day while you slack off!

exixe: Miniture Nixie Tube driver module: Eliminate the need for vintage chips and multiplexing circuits.

From Aduino to STM32: A detailed tutorial to get you started with STM32 development.

List of all my repos

Questions or Comments?

Please feel free to open an issue, ask in my discord server, DM me on discord dekuNukem#6998, or email dekuNukem@gmail.com for inquires.

Comments
  • Tindie's custom fees in the EU

    Tindie's custom fees in the EU

    Hello,

    First, thanks for all the work!

    Unfortunately, Tindie's does not collect VAT at ordering, and so if you order from the EU you will (probably??) need to pay VAT yourself, along with hefty processing fees (I assume because of the new import rules that came in effect July 1st).

    I don't know how easy it would be to find a platform which complies with EU VAT rules, but I think it would be good to mention this, here on GitHub and/or on Tindie's to avoid surprises for people like me who may not realize they are ordering from abroad :). Especially since a lot of people with Bobs are probably French.

    I had to pay 21€ to the Belgian post in VAT and processing fees to receive the chip :(

    opened by bendardenne 3
  • Connector pinhead interface

    Connector pinhead interface

    Hi, I wanted to make myself a bob cassette rewinder as a project to practice my home-made pcb skills. However I can't find what type of connector you use on your custom PCB to interface with the cassette EEPROM. I'm talking about the one named JP1 (PINHEAD_2X04) on the schematics. As I understand using a female USB-A connector would short the pads on the cassette, so it has to be plastic.

    Thanks!

    opened by BastienClermont 1
  • docs: Fix a few typos

    docs: Fix a few typos

    There are small typos in:

    • firmware/code/Drivers/CMSIS/Include/core_cm3.h
    • firmware/code/Drivers/CMSIS/Include/core_cm4.h
    • firmware/code/Drivers/CMSIS/Include/core_cm7.h
    • firmware/code/Drivers/CMSIS/Include/core_sc300.h
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_iwdg.c
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart.c
    • firmware/code/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart_ex.c
    • firmware/code/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_ioreq.c
    • firmware/code/Src/usbd_cdc_if.c
    • firmware/code/Src/usbd_conf.c
    • firmware/code/Src/usbd_desc.c
    • resources/firmware_pmm/Drivers/CMSIS/Include/core_cm3.h
    • resources/firmware_pmm/Drivers/CMSIS/Include/core_cm4.h
    • resources/firmware_pmm/Drivers/CMSIS/Include/core_cm7.h
    • resources/firmware_pmm/Drivers/CMSIS/Include/core_sc300.h
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_i2c.h
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_dma.c
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_tim.c
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart.c
    • resources/firmware_pmm/Drivers/STM32F0xx_HAL_Driver/Src/stm32f0xx_hal_uart_ex.c

    Fixes:

    • Should read priority rather than priorty.
    • Should read management rather than managment.
    • Should read initialisation rather than initilisation.
    • Should read identifier rather than identifer.
    • Should read adjustment rather than adjustement.
    • Should read parameters rather than parmeters.
    • Should read ongoing rather than ongoin.
    • Should read length rather than lzngth.
    • Should read immediately rather than immediatly.
    • Should read activate rather than activat.
    • Should read until rather than untill.
    • Should read transferred rather than transfered.
    • Should read identifier rather than indentifier.
    • Should read automatically rather than automaticaly.

    Semi-automated pull request generated by https://github.com/timgates42/meticulous/blob/master/docs/NOTE.md

    opened by timgates42 1
  • Add Continuous Feed Docs.

    Add Continuous Feed Docs.

    Love the hard work you've done with the Bob Rewinder, and saw Issue #12 and thought I'd give it a shot!

    I took a few notes while setting it up myself and have had it running a little while now with no issues, so thought I'd give back to the community by typing up a quick guide on how I've done it, and hopefully others can learn / improve from it. I deliberately went with a method which could be easily reversible (removing the tray connectors and adding reducers to connect the feed pipes), however given the tubes I picked out I had to make some minor modifications to Bob's case. I believe it's possible to make a continuous feed system with smaller tubes and not need these warranty-voiding cuts so clearly marked the steps someone would need to change to try.

    Please let me know what you think, I'm totally open to suggestions on how to better word things etc.

    opened by StephenForrest 0
  • Fix off-by-10 error in one division. Update text to match.

    Fix off-by-10 error in one division. Update text to match.

    Great write-up!

    You had an off-by-10 error in one of the cost-per-wash calculations. This fixes that, makes the math slightly more explicit (to protect against the pattern), and updates the textual conclusions to match the correct math.

    opened by jim-sokoloff 0
  • USA Equivalent refills?

    USA Equivalent refills?

    Does anyone have info on what USA available product I could buy for the Pop and Rock'n'Roll refills?

    Preordering the bob for USA drop in September soon (already got the Rewriter on the way) and having some trouble finding equivalent product here.

    opened by ssjbardock 1
  • Reverse Engineering of Bob (including backup of ESP flash)

    Reverse Engineering of Bob (including backup of ESP flash)

    My Bob (normal version) arrived today and I could not help but take it apart immediately (at least the front plate). I'll share my findings here, because some of them are very relevant to the project.

    The front panel is very easy to take apart, just remove the screws visible from the inside. There are four (non evil) clips holding the front plastic down around the window, those will come undone by applying a bit of force and rocking the front plastic around from the top (there is no way to directly undo the clips, but they are designed to pull out without damage). There is a hinge at the bottom, so do not pry from the bottom.

    Having done that, you will be greeted by a small board (rev 2.4 in my case) with an ESP32-WROOM-32D (Detected as ESP32-D0WD (revision 1)) and a handful of peripherals. Notably, the connection to the power electronics somewhere else in the unit happens via a single standard RJ45 cable. There is a handy programming header for the ESP, I have marked the pinout in the picture below. 20220413_225232 20220413_225246

    I used esptool to dump the firmware (esptool detects 16MB flash). I am no firmware dumping expert, I cannot guarantee that this file is valid and wont brick your Bob. Flashing it to a random 8MB ESP32 does seem to give the correct serial output, but doesnt find all the partitions. I sadly do not have a 16MB ESP around to test it properly. BobOS_hwrev24.zip

    Now for the most interesting bit: The serial dump. Bob is VERY talkative when just connected to a 115200 baud serial interface. Maybe a little too talkative because it includes wifi ssid and password in cleartext. Here is a somewhat full serial log with personal information [REDACTED]: Bob_serial_log.txt

    It seems to be communicating to an AWS backend using MQTT. Alarmingly, there is no privacy policy available for this particular service and there are some hints towards the bottom of the log that it might be sending cartridge info to the server. If that is the case, they may be able to see if cassettes have been rewound.

    Regardless, they are able to fight the rewinder with OTA updates, so keeping wifi disconnected might be the best option. Until someone takes the risk and tries it, we dont know if downgrading by flashing the ESP works.

    opened by whosmatt 3
  • Working in 2022?

    Working in 2022?

    Hi !

    I'm considering trying out this bob business, but I'd like to make sure. As of January 2022, have there been any update preventing the hack ? Obviously I'll never connect the device to my network, but I'm worried they patched the product on shelves.

    Sorry if there was the info somewhere, I read your manual, but could have missed it.

    opened by Tangeek42 9
  • Rock'n'Roll cassette detergent

    Rock'n'Roll cassette detergent

    Hi!

    I bought bob rewinder and it is working perfectly. I can't find detergent for rock and roll cassette. Does anybody have any suggestions? What are you using to refill it?

    opened by CornholioBS 3
  • Write protect on the EPROM

    Write protect on the EPROM

    Hi, I’ve looked at the documentation of the EPROM and saw that it has a write protect pin.

    Did you try out connecting the WP pin to Vcc?

    I want to try and connect the detergent tanks directly to the internal dosage pumps of bob to avoid having to refill the cassettes. I’d still need the EPROM of the Cassette to get it to work tho. So my train of thought is that Bob couldn’t modify the value on the EPROM anymore, reading the same number of cycles every time.

    Also sorry if im getting things wrong… it’s been quite a few years since I worked on anything electronic :|

    Thanks anyways :)

    opened by chiisai-fukurou 4
  • Chemical composition of detergent and rinse aid

    Chemical composition of detergent and rinse aid

    Hello,

    I ordered a casette rewinder last week, but was wondering about the impact of the chemical composition of the detergent and rinse acid. I found and purchased Sun Professional Rinse Aid and Finish Professional Liquid Detergent, which both seem to match (approximately) in dilution requirements.

    That said, their chemical composition is different and I want to avoid damaging the dishwasher.

    Finish Professional Liquid Detergent

    • Phosphates 5% - 15%
    • Chlorine-Based Bleaching Agents < 5%
    • Polycarboxylates < 5%

    Sun Professional Rinse Aid

    TBD

    What are your thoughts on this?

    Thanks!

    opened by ameesme 2
Releases(0.1.0)
Owner
dekunukem&gmail.com dekuNukem#6998
null
Welcome to my dungeon. Here, I keep all my configuration files in case I have a stroke and lose all my memory. You're very welcome to explore and use anything in this repository. Have fun!

Fr1nge's Dotfiles Welcome to my dungeon. Here, I keep all my configuration files in case I have a stroke an d lose all my memory. You're very welcome

Fr1nge 33 Oct 28, 2022
This repository contains notes and starter code for Bit manipulation and mathematics session for DSA bootcamp organized by Codeflows.

Bitmanipulation_maths This repository contains notes and starter code for Bit manipulation and mathematics session for DSA bootcamp organized by Codef

Joe 7 Jun 15, 2022
cpp fundamentals and questions for beginners and intermediates

DSA 60 days Hi people! So we have started grasping dsa concepts and solving problems from 12 July. And we shall continue till September 10 Starting fr

Sushree Satarupa 211 Jan 5, 2023
A demonstration of implementing, and using, a "type safe", extensible, and lazy iterator interface in pure C99.

c-iterators A demonstration of implementing, and using, a "type safe", extensible, and lazy iterator interface in pure C99. The iterable is generic on

Chase 69 Jan 2, 2023
About Write a program to create a circular doubly linked list and perform insertions and deletions of various cases

Write a program to create a circular doubly linked list and perform insertions and deletions of various cases Circular Doubly Linked List Circular Dou

MH Miyazi 3 Aug 28, 2021
This repository aims to solve and create new problems from different spheres of coding. A path to help students to get access to solutions and discuss their doubts.

CPP-Questions-and-Solutions ?? This repository aims to solve and create new problems from different spheres of coding, which will serve as a single po

null 49 Oct 3, 2022
The Repository Contains all about Data Structure and Algorithms with Practice problems, series, and resources to follow!

?? The Complete DSA Preparation ?? This repository contains all the DSA (Data-Structures, Algorithms, 450 DSA by Love Babbar Bhaiya,STriver Series ,FA

Pawan Roshan Gupta 5 Oct 6, 2022
Starting with OpenCV and Qt on MacOS is a bit of difficult if you haven't installed and used libraries in XCode.

OpenCV and Qt on MacOS Introduction Starting with OpenCV and Qt on MacOS is a bit of difficult if you haven't installed and used libraries in XCode. T

Martin Kersting 3 Oct 20, 2022
A place where you can learn and practise various Problems and algorithms

Problem-Solving Problem solving is an art of solving some real time challenges. And this is a place to get started, you can find many problems to solv

Google DSC, GVP Chapter 10 Apr 22, 2022
This repo is created to post all my codes and learning of C++ and DSA in C++

This is a readme file where you can read some documentaton about learning on c++and Data Structures and algorithms . I will be posting each and every

BIPIN GHIMIRE 6 Jul 27, 2022
Slides and other materials from CppCon 2020

CppCon 2020 Presentation Materials https://github.com/CppCon/CppCon2020 is the canonical location for presentations and code from CppCon 2020. For Spe

CppCon 1.6k Dec 31, 2022
Slides and other materials from CppCon 2019

CppCon 2019 Presentation Materials https://github.com/CppCon/CppCon2019 is the canonical location for presentations and code from CppCon 2019. For Spe

CppCon 1.2k Dec 27, 2022
Slides and other materials from CppCon 2018

CppCon 2018 Presentation Materials https://github.com/CppCon/CppCon2018 is the canonical location for presentations and code from CppCon 2018. For Spe

CppCon 1.4k Jan 1, 2023
Slides and other materials from CppCon 2017

CppCon 2017 Presentation Materials https://github.com/CppCon/CppCon2017 is the canonical location for presentations and code from CppCon 2017. For Spe

CppCon 1.7k Jan 4, 2023
Slides and other materials from CppCon 2016

CppCon 2016 Presentation Materials https://github.com/CppCon/CppCon2016 is the canonical location for presentations and code from CppCon 2016. For Spe

CppCon 1.8k Dec 22, 2022
This the contains the test examples and validator tool for the ISPD2021 Wafer-Scale Physics Modeling contest.

This readme documents information regarding the validator/scorer which will be used for the 2021 ISPD Contest problem: Wafer-Scale Physics Modelling

Cerebras 16 Aug 22, 2022
Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

Minimal Linux Live (MLL) is a tiny educational Linux distribution, which is designed to be built from scratch by using a collection of automated shell scripts. Minimal Linux Live offers a core environment with just the Linux kernel, GNU C library, and Busybox userland utilities.

John Davidson 1.3k Jan 8, 2023
simple and fast scripting language

The Aument Language The Aument language is a work-in-progress dynamically-typed scripting language with performance first: this scripting language is

The Aument Project 35 Dec 27, 2022
This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation, etc.

?? C/C++ 技术面试基础知识总结,包括语言、程序库、数据结构、算法、系统、网络、链接装载库等知识及面试经验、招聘、内推等信息。This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation, etc.

huihut 27k Dec 31, 2022