So you have a 3D printer, printed out a few things, and maybe even created a few of your own models. I’m guessing that you’ve already found a few places on the web to download 3D models, but have you heard about printables.com?

It’s run by the people at Prusa, and it’s a great place to find things to print. “So what?” you might say, “There are many places to do that”. That’s true, but printables.com has got a few features I really like.

One of them is their point system. When you register and participate, you start earning points. Fill out your profile? Earn some points. Download some models? Earn some points. Upload your own model? Earn more points. Print something cool? Upload a picture and earn points. So what can you do with these points?

You can earn t-shirts, mugs, filament, and even 3D printers! Now, granted, in order to do that, you’ll probably have to learn some 3D modeling and upload some of the models you create in order to earn enough points, but getting a new 3D printer is pretty big incentive.

Printables.com holds contests too, where you can earn points (and sometimes even a printer), just by creating the best model for that contest. They hold contests all the time. Even if you don’t intend to enter a contest, some of the models people upload are worth printing.

And if you like the models that some users upload, you can sponsor them through Printables Clubs.

Printables is a well-organized site, and it’s easy to browse through all the models people have uploaded. You can even see interactive 3D representations of the models before you download them.

There are many other features on Printables.com, so do yourself a favor and check them out!

I received an iRobot Braava m6 for Christmas.

Finally got enough time to set the thing up, and let me tell you, it’s been weird. There’s very little documentation that comes with the thing. It’s basically, “Slide this together, plug it in, go to the app and you’re off!”

I’m close to figuring this thing out. I made a few mistakes, so I’m writing this to let anyone else that may see this that “You’re not alone!” in your frustration.

The first thing I did was fill the mop up with Bona cleaning liquid, and had it start mopping. While I was watching the robot move back and forth, spray and continue – I realized that there was a step I missed. I should have had it do a mapping sequence. I really wasn’t sure how this was going to work, since the main floor has tile, carpet and hardwood.

So, I stopped the mopping, threw a dry pad on the robot (it comes with a couple “one use” dry pads, a couple “one use” wet pads”, and a multi-use wet pad), and had it start mapping. It did ok, but not great. The main problem was, it kept moving onto the carpet and getting stuck. It’s supposed to have carpet detection, but it got stuck in several places on the main floor.

I solved this by using some “invisible walls” that I had from my previous Roomba experience. After I set those up, it didn’t try and go up on the carpet any more. It did a pretty good job of mapping out the whole main floor. Now, I did move all the chairs out of it’s way in the kitchen and dining room. I took out the carpet runners that were on the hardwood floor too. But, to it’s credit, it did a pretty decent job of mapping everything, including the laundry room and bathroom.

I thought I had it settled in pretty well on the last mapping I did, so I went to edit the map to designate where the rooms were, using dividing lines. Success! I could even sent the robot off to sweep one of the rooms by name. Very cool.

It went back to it’s home base to recharge…. and then gave an error. Error 43. What the heck is “Error 43”. Well, it says that it’s in a halo area and that I should bring the robot back to the base station and hit the “Clean” button.

But it was already on the base station. I tried all kinds of things, but once it parked itself on the base station, it gave the same error over and over. I decided it must be the map, and deleted it. …and that didn’t fix it. Same error. Great.

This thing had been working all day, and how it’s giving me an error. Why? The only difference is that it was night time. ….maybe it had to do with the light where the station was? I turned on a light that was on a table near there. Tried again. Tada! It worked! ….But my map was now gone! I have to remap and redesignate the rooms.

So I did. Another good map. Success! All I had to do was set the dividing lines.

Unfortunately, after adding the dividing lines, the app got very confused. The app put the dining room and kitchen in the same room, and it prevented me from editing the dividing lines again, and the app crashed. Several times. I deleted that map, and started over.

I reset the invisbile wall devices, and now the robot complained about “error 40”. That at least was easier to figure out: Error 40 means that the robot got caught in one of the invisible walls – all that means is that I had to turn the little device generating the “wall”, out of the robots way, it life was good again.

Now it’s remapping again. Sure hope it works. I’ll let you know.

One of the better tech things I’ve gotten over the last couple of years is my Prusa Mini+ 3D printer. I’m a software guy through and through, and messing with hardware is definitely not my best skill. Can I do it? Sure, in a pinch. I don’t like doing it though.

Paradoxically, I ended up getting a Prusa Mini+ KIT. Yes, a KIT of all things, and me a software guy with an aversion to hardware stuff. Why? I did that because I knew that if something ever went wrong with it, I wouldn’t be shipping the whole printer back to Czechoslovakia a repair. At the time, I figured the best thing to do would be build the whole thing, figure out what I did wrong after building the thing, and get some experience. Because sooner or later, something was going to screw up, and I wanted to be able to fix it.

It took months to get the printer, because it was right after the pandemic, and they had a long backlog. I put the printer together in three nights, after work. It did come with a instruction booklet, but the thing that came in REALLY handy was the online-instruction guide. Why? Because users can add comments, each step of the way! If something is particularly tricky, users will make a comment about that. If the mods agree, then the instructions are updated. Pictures for every step. Made putting it together a real breeze.

After I got everything put together, I switched it on. It booted just fine. I inserted the first filament into the printer, and it worked fine. A few z-axis adjustments later, and I had a good first layer. Not bad for a software guy, but this 100% is because of the engineering that went into the printer and the online instruction guide.

About six months later, the filament wouldn’t feed any more. After a quick investigation on the community forums, I found someone that had a similar problem, when to the Prusa website and found some instructions on how to fix my exact problem. Since I built the thing, I knew I could take apart what I needed to, and get it fixed. And I did! One adjustment, and I’ve been printing ever since.

That’s just my experience. Yours will vary, of course.

Bottom line: My advice is to 1) get a kit, because you’ll want to be able to fix it later. 2) Follow the Prusa online build guides, they’re great! Of course, that only works if you get a Prusa. I don’t have experience with other 3D Printers.

The Prusa Community is great. Look for them on the Prusa forums, and the Prusa Reddit group.

If you’re running into an error where your Ad Tracking request manager isn’t showing up after you update to iOS 15, here’s what you do.

You probably have some code that looks similar to this:

    if (@available(iOS 14, *)) {
        [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {

}

This is Objective-C… sorry for the formatting.

If you had this code in didFinishLaunchingWithOptions, that’s the issue. You should move it to applicationDidBecomeActive instead. I have that whole code block of requesting this in it’s own method, so changing where it was called was pretty straightforward.

TL;DR – put the following line in your app-ads.txt file:

google.com, pub-3940256099942544, DIRECT, f08c47fec0942fa0

Long version: When I upgraded to iOS 15 and Xcode 13, I went to upgrade all my apps. I test them all with Admob test ads, the way you should. When I got done with the changes I made, started getting the error:

Google> Cannot find an ad network adapter with the name(s): (
"com.google.DummyAdapter"
). Remember to link all required ad network adapters and SDKs, and   set -ObjC in the 'Other Linker Flags' setting of your build target.



Which isn’t very helpful. At first I thought there was a bug in a Pod dependency, or one of the libraries. I downloaded an example app from Admob, and that worked. So I thought there was a bug in my code. I looked for “-ObjC” in the ‘Other Linker Flags’ – yup, it was there. I looked all over the web for a solution to this, only to find there were many other people with the same issue.

The guidance from Admob on their forums? That error occurs when there are no ads available (or if the -ObjC isn’t there in the linker flags). So….how do they NOT have test ads? I mean, that’s something that’s always available, right?

Since I do this in my spare time, I let this slide for months. Yesterday, I looked into it again, and spent several hours looking around to see what might be the case. Eventually, I searched for “Admob not showing test ads”, and ran across a thread on Reddit in the r/admob forum. Down at the bottom, user ahmedbilal12321 had the same problem, and solved it by adding the line:

google.com, pub-3940256099942544, DIRECT, f08c47fec0942fa0

to the app-ads.txt. This is specifically added so your apps can show test ads.

This is something I didn’t do when I started using app-ads.txt earlier in the year, and test ads showed up for me. Sure enough, this is also in the Admob documentation for test ads – I bypassed that in the documentation when I was searching for a solution.

I added that line to app-ads.txt, waited until Google scanned the file, tried it out, and….. it didn’t work. It was pretty late last night at this point, and I figured that after Google scanned the file, it was going to take some time for it to filter through the rest of the system.

I tried it a few minutes before I wrote this post, and it worked.

That thread was the only place I’ve seen this mentioned. I wanted to post something in hopes it will help someone else. Thanks to ahmedbilal12321 for posting that!

Several other users (specifically on Stack Overflow) have posted they ran into this problem, and ran REAL Admob ads in their apps to test to see if it’s working. DO NOT DO THIS. It will get you suspended or even banned. Add the test identifier for the simulator and any devices you might test on as admob suggests AND run using the test banner/interstitial/whatever ads they provide as tests. DO BOTH. If you do one, and not the other, it can also get your suspended or banned.

Roku announced today that the new Roku Express 4K+ can now be preordered, and will be available May 16th.

The new Roku features what Roku is calling “Smooth wireless”, saying that it uses dual-band wireless for a fast connection and smooth streaming.

It comes with a voice remote with TV controls, a “find my remote” feature, and an HDMI cable and will retail for $39.99.

via Roku.com