Thursday, July 6, 2017

Things I'm learning about 3D printing

(I'll keep adding to this as I learn/understand more. Eventually I'll break this up into separate posts.)

My amazing wife got me a 3D printer for our 20th anniversary, which I believe is the traditional gift. It's a FlashForge Creator Pro, an entry-level 3D dual-spool and dual-extruder printer that handles both ABS and PLA filaments. (The website indicates it can print much more, even wood and metal!) The printer itself comes with two random colours of ABS filament.

Setup is pretty straightforward, but it's not hard to see how it would be considered daunting for those not used to tech work. The quick start and detailed manuals have slight contradictions and probably some aged-out content.

Initial print went well, but slow. That's an expectation worth setting correctly - the speed of these things is slow, and governed by multiple factors such as the resolution and density. I'm not yet sure what terms the 3D printer world uses for these, but I'm defining resolution as the number of layers per mm of height and density as the amount of printed material in a solid object.

Resolution example: A solid block using tiny globs of material resulting in a lot of super-tiny layers to the point where the sides feel smooth. Big globs make it look like one of those Fisher-Price doughnut stacking toys.

Density example: A solid block could actually be a solid block, or it could be made of a honeycomb. On the outside, both look solid. But the insides are obviously different. This affects weight, amount of filament ($), and print time. The differences are significant. I was told by one experienced person that there's not much benefit to a hobbyist to print at greater than 30% density unless there's a really specific reason to do so.

Making your model

Tinkercad.com is how I've been doing my initial modelling. Very simple - too simple? Bring solids onto a canvas and cut holes out of the solids by defining other shapes as holes. Where they touch is the cut. You can do more complex shape making using Javascript, but that's a high barrier to entry for someone like me who doesn't know the language at all.

Printing

This is where the challenge lies. After making the model, export it as an STL file. (OBJ works too, but I understand that STL is a more common choice.) Open that in the printer software, known as a "slicer" which creates individual printable layers out of your model in GCode (the generic 3D printer language) specifically tailored to your printer. In other words, random slicer software won't do the trick. You must check compatibility with your printer.

I started with ReplicatorG (bundled with my printer; hasn't been updated since November 2012, basic Getting Started at http://replicat.org/usage) but am being enticed into spending US$149 to purchase Simplify3D by a whole lot of forum comments. There's a 10% education discount - you must use the form to contact the company first to get the discount, as there's no way to apply the discount after the purchase. There's a two-week trial after which they offer a refund if you're not satisfied.

Getting the GCode to the printer

You can use any slicer to generate the GCode, but then must transfer it to the printer. If your printer has a USB connection, the speed and quality of the serial connection is low enough that you've got to slow down the print. (This is according to my printer's manual.) These are settings you manually configure in the slicer at the last stage before the GCode is generated.

Higher speed printing ("high" being relative!) - or more precisely, higher speed data transfer - is far more reliable if the GCode gets to the printer otherwise, e.g. USB stick (not supported on my printer) or SD card (supported on my printer).

Turns out my printer is not smart enough to handle even slightly longer filenames on the SD card. I generated GCode and saved it to an SD, but couldn't get the printer to see the file, no matter how many times I reinserted the card, restarted the printer, etc. Turns out the fix was stupid simple - shorten the filename. That's more stupid than simple, but at least it was simple. There's no indication in the manual that there are restrictions on filename length, but score one for Google and 3D Hubs.com.

Wednesday, May 24, 2017

Putting your Facebook calendar into your normal calendar

You've told Facebook you're Going or Maybe to an event. But it's not in your personal calendar, so you might forget or double-book. Keeping track of Facebook events on your personal calendar can be a bit of a challenge, and I bet a lot of people deal with it by manually creating another event.. It certainly isn't obvious that you can view your Facebook calendar in your personal calendar, using a special link as a calendar "feed".

Warning

This only displays your Facebook calendar in your personal calendar, but the appointments are not aware of each other and do not interact with each other. In other words, if you book something in your personal calendar without looking, you won't see a conflict/double-booking warning. While this is unlikely for you, it becomes a risk when you open your personal calendar up for others to book you. An appointment in the Facebook calendar doesn't appear as busy time in your personal calendar (workaround at end of article). Someone booking you through, say, Calendly, FreeBusy, or the native calendar sharing option might send you a request seeing you're free. If you accept without visually checking your calendar, you may double-book yourself. It's a good solution if you're the only person who interacts with your calendar.

Step 1 of 2: Find and copy the special link

  1. Open any event in Facebook. Click the ellipsis to the right of the Share button and choose Export Event. (You'd be forgiven for thinking this only has to do with this event.)
    • On the Android Facebook app, the options are mostly different and this one is missing. As far as I can tell, it's desktop only.
  2. Copy the link. (Ignore everything that references this event only.)

Step 2 of 2: Paste the link into your calendar application

Every calendar app has its own way of doing things.

Google Calendar

  1. On the left side of the calendar, click the drop-down next to Other Calendars
  2. Choose Add by URL
  3. Paste

This new calendar didn't magically add itself to my already-set-up BlackBerry calendar. I recently removed and re-added my main Google Apps account to my PRIV and saw that additional calendars in place before adding the account were added upon setup. This seems to be something required if you're adding calendars after the fact.

BlackBerry Android Calendar (like PRIV, DTEK50/60, KEYone, etc.)

Tip: Since I was at my computer, I pasted the URL into a bogus calendar appointment in my Google Calendar and waited a moment until it synched over to my BlackBerry Calendar, so I could copy/paste.
  1. Tap the three bars in the upper left of the calendar app
  2. Tap Add Account
  3. Tap BlackBerry Subscribed Calendar
  4. Paste the URL and select the sync frequency when prompted
I suspect, like BlackBerry 10, if you tap the URL in your browser, it'll automatically take you to the right place. Just haven't tested that.

BlackBerry 10 Calendar

Example is Classic 10.3.3, but it's the same all 'round. Shortcut is to tap the URL in your browser, and *poof* a miracle occurs.

Outlook

Example is Outlook 2010, but it's the same basic idea. Scroll down to "Add an Internet Calendar Subscription to Outlook" for the instructions, which are basically click the link from above, and answer Yes when prompted by Outlook. (Your browser may confirm with you first.) The Facebook calendar opens in its own tab with a distinct colour; click the arrow on the tab to overlay it with your main calendar.

Workaround for free/busy booking problem

At the top of the article, I mentioned that the Facebook calendar doesn't interact with your personal calendar, and if other people are booking you based on free/busy availability, you've got a potential problem on your hands. Most calendar applications that know how to use these subscribed calendars also understand that, and allow you to copy an item from one calendar to another. It's still only a workaround though, because it's a copy; if the source calendar changes, the copy won't. I use this with events where the basic details (date/time/location) are unlikely to change.

Google Calendar

  1. Open the Facebook calendar event in your Google Calendar, and in the header, click More Actions
  2. Select Copy to <your main calendar name>
  3. Click Save

BlackBerry Android/BlackBerry 10

Not sure yet how to copy events from one synched calendar to another. (No big deal if you're receiving an invitation - you just select the target calendar. But this isn't that situation.) If you have the answer, please let me know. I generally live mobile first, but am not religious about it.

Outlook

I swear there was an easier way to do this - some simple "copy to other calendar" option that I can't find now. 

Option 1 - Move

  1. Open the event in your Facebook calendar in Outlook
  2. From the File menu, choose Info > Move to Folder and browse to your calendar folder
It's moved out of the synched Facebook calendar and into your main one. Not sure what this means to Facebook yet; have you taken yourself out of the event? Probably not.

Option 2 - Copy

  1. Click the event only once in your Facebook calendar in Outlook
  2. Press CTRL-C to copy. You will get no feedback.
  3. Switch to your main calendar and do not click anything. Press CTRL-V to paste.
  4. You'll get a notice about accepting the meeting. It doesn't matter what accept option you choose - the second one will say you've failed. But it works anyway. (If you choose Copy, it'll also work, but you now have an annoying "Copy:" prefix on your event. It's Outlook's way of letting you know there's no relationship between this event and the source.)
Enjoy!