Profile

Cover photo
Christopher Fredericks
81 followers|177,117 views
AboutPostsPhotosVideos

Stream

Christopher Fredericks

Shared publicly  - 
 
Making progress printing and assembling a little delta 3d printer I'm designing from scratch. The 3DR (by +Richard Horne) was the primary inspiration​ for the design.

Here's a sneak peek, it's the second and hopefully final version of the top, printed in magenta PETG. Ignore the T-nuts, they're only used since I didn't have enough M5 nuts on hand. Designed in OnShape over a several months.

The walls are all 5mm (~1/4in) thick; it's overkill both because I'm not a real engineer - I have no idea what I'm doing -and because I want it to be resilient to being transported. I hope it'll take a beating and stay calibrated.
Will be about 500mm (~20in) tall depending on the aluminum extrusion lengths used. It's about 250mm (~10in) in diameter in order to fit the controller in the bottom between all the motors - unlike the 3DR. Like the 3DR, though, it should have a build area big enough to print its own printed parts and reproduce itself!

Uniquely satisfying to build something complicated from scratch and have it be a tangible thing. Contrast to writing code, which at times simply disappears right into the void.

We live in the freaking future.
5
1
Richard Horne's profile photoChristopher Fredericks's profile photo
2 comments
 
Thanks Rich! And thanks for everything you do for the reprap community. Reading through your blog posts and watching your videos has been a huge help to me; made me feel like this was possible for me to actually do.
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
Current layer is now displayed if != default_layer
1
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
Today I bemusedly learned: due to a lesser known feature in TCP, you can actually connect to your own (ephemeral) connecting socket.
If your ephemeral port range overlaps with the target port you're connecting to and your OS happens to use the same port for both connections, TCP will happily handshake with itself.

Normally, TCP's three-way-handshake looks like SYN -> SYN-ACK -> ACK.
TCP sends RST(reset) to any "unexpected" packet , the types of which depend on current TCP state.
However, in the SYN-Sent state (I've sent a request to handshake to the other side), a SYN response (remote trying to handshake to me) from the remote will, unexpectedly in my opinion, be accepted. It's called "simultaneous open" in RFC793.

Can happen out of the box on Winders and Linux; looks like OSX ignores the RFC and prevents loopback connections from getting the same port.

1
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
Trying out Atom editor (from GitHub). Initial thoughts:

First-class package management. This has annoyed me about Sublime and I've felt it's been successful in spite of it not being built in. You can quickly generate scaffolding for a new theme or Atom package out of the box.

Web developer focused live reload / preview / etc. Well, it's Chromium under the covers after all.

Default theme is meh, but Monokai, the one and only correct editor theme, is a package install away.

Did I miss an IDE style "Build/Run" workflow somehow? Might have to be written.

No linting packages yet(?) I might've missed it somewhere.

"Install Shell Commands" just pops up a dialog saying `atom` and `apm` are installed. Okie dokie.

Nice and fast. Records startup time for each plugin/package it loads, why the hell doesn't everything with plugins do that?! Should be easy to track down misbehaving extensions. (even the thing that records how long each extension takes is itself an extension, 'Timecop')

No Linux version yet. Not an actual issue, clearly it is coming and will work fine.

Styling can be changed with a quick CSS rule. That might actually get me to change default styles for once.

??? is this actually open source? It's not clear and I don't understand why, with such attention to detail otherwise, it's not spelled out somewhere. Just "free while in beta"
I don't have a huge problem even if it's closed, but something feels funny about the (intentional?) oversight.
At GitHub, we’re building the text editor we’ve always wanted: hackable to the core, but approachable on the first day without ever touching a config file. We can’t wait to see what you build with it.
1
Christopher Fredericks's profile photo
 
I hate the way invisible characters look. Welp, Atom -> Open User Stylesheet -> add
.editor .invisible-character {
color: #333;
}
and save. Takes effect immediately.  Perfect.
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
I "converted" my IBM Model M keyboard to USB in a very silly way that does work and isn't permanent. There's just enough space in the top of the casing to stuff the entire 15' PS2 cable inside.
Used a Bluecube PS2 to USB converter and a right angle adapter PCB I had laying around.
2
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
Fix a Web Annoyance with a Bookmarklet Time™ again:

Amazon's "All Offers" page intentionally makes it hard to compare the prices between sellers, showing only the cost without shipping in big red text. It's hard to compare at a glance due to this.

I wrote a bookmarklet that adds the price + shipping (if there is shipping) and prepends the values, so I could compare more easily (especially with the out of order "Featured Merchants" vs. "New").
You might also find it useful.

Un-minimized Javascript: http://pastebin.com/3ahgx0uc

Bookmarklet:
javascript:(function(){divsToUpdate=document.getElementsByClassName("olpOffer");var i=0;while(i<divsToUpdate.length){var d=divsToUpdate[i];var o=d.getElementsByClassName("olpOfferPrice")[0];var p=o.innerText;var amountRegex=new RegExp(/[0-9\.]+/ig);var cost=amountRegex.exec(p);var shipping=0;var s=d.getElementsByClassName("olpShippingPrice")[0];if(s!==undefined){var amountRegex=new RegExp(/[0-9\.]+/ig);shipping=amountRegex.exec(s.innerText)}var c=parseFloat(cost)+parseFloat(shipping);o.removeAttribute("class","a-size-large");actualPrice=document.createElement("span");actualPrice.className="a-size-large a-color-price olpOfferPrice a-text-bold";actualPrice.innerText=c;o.parentElement.insertBefore(actualPrice,o.parentElement.firstChild);i++}})()

It probably belongs in an Extension so it's done automatically when you visit an Offers page.

Let me know if you need help. That Offers page obfuscation has been bugging me for a very long time.

EDIT: Example of what this looks like, since someone asked what I was talking about:
Before: http://imgur.com/s8EVDkA After: http://imgur.com/yslSBoD
1
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
Here's a quick thing I designed for the house yesterday.
1
Debbie Park's profile photo
 
Im amazed. I love the button idea for a door knob
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
First time I've been asked politely... (Ablecom 280w server power supply) 
1
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
On my clearly-in-progress Ergodox keyboard (http://ergodox.org/Hardware.aspx), I finally got the U8glib (https://code.google.com/p/u8glib/) library to compile, link, and run, squirting pixels at a cheap 128x64 OLED display (~$12) via the I2C bus. With u8glib's Hello World, it all just barely fits in 32k of flash :/

It's not clear yet if U8glib's screen updates have slowed down the I2C traffic that the Teensy needs to scan the left keyboard half. The Ergodox is a completely separated design, so there's a MCP23018 I/O expander on the other side doing the key matrix scanning. The MCP doesn't do any work on its own - if it can't be polled quickly enough, keypresses will be lost. You know, that primary thing you use a keyboard for? Since the display controller does (seems to?) persist its contents, if performance is unsatisfactory I can try to update it every N seconds instead.

I've chopped out the Trackpoint module (nipple mouse) of an IBM Thinkpad, the use of which I hope will let me keep my hands from moving to/from a separate mouse; it's still using the (ancient) PS/2 interface under the covers. Farewell another 5k of flash, needed for PS/2 mouse support. Be kind to those electrons.

Still todo: throw together a tiny UI and figure out exactly what information I want to display - definitely the current layer and modifiers, but what else? Should I just move the display control to a separate AVR chip instead and leave the Teensy just chirping status updates at it? Where should that Trackpoint go, and how should it be mounted? And the mouse buttons? How annoying will it be to have a very bright but tiny display updating out of the corner of one's eye while typing, anyway?
1
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
Working on the house always turn into "If You Give a Sarah a Cookie..." *

Sidenote: I just installed an all-in-one light fixture that has no bulbs. It's a sealed unit. You install it, it works for an estimated 32 years (LEDs), and that's it. Truly, we live in the future.

*Also, I'm just as guilty
1
Sheryl “Zsmom” F's profile photo
 
You take after Rayford in that.
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
Just received spam with the subject "Check out these funny jokes", so of course morbid curiosity gets the better of me.
"What do you call an alligator in a vest? An Investigator"
I'd open port 25 for more stuff like this, are you listening spammers?
1
Add a comment...

Christopher Fredericks

Shared publicly  - 
 
Giving Firefox a try again as a main browser for a few days, which I haven't done in years. Not because I have a problem with Chrome or anything; just because.
Found replacements for all my Chrome extensions, moved bookmarks over. Trying FF sync (that wasn't there the last time I used FF - and I can run my own Sync server? Awesome!), I'm a heavy user of Chrome sync.

Thoughts so far:

I really like being able to actually arrange the toolbar buttons, shortcuts, and so on, in whichever manner I like. In Chrome, I leave the bookmark bar always shown, but in FF I moved the items to same toolbar as URL input. Extra like 18+ vertical pixels!
FF seems to update in the background like Chrome does now, I remember that being a huge pain in the ass back in the day. Extensions are optimistically allowed to work across versions now, rather than minor updates "breaking" all of them, which I remember was also a reason I left FF.

Memory usage seems much better than it was, but that's a general feeling, I didn't measure it (or care - memory is there to be used).

Performance seems fine on individual pages, but I definitely see stutters and jank when I open tons of tabs and am doing things in my main one, like say scrolling downwards. Guessing FF didn't move to multi-process per tab(yet?)? Very noticable and annoying. Might be a dealbreaker.
Test case: go to reddit, have RES installed, middle click lots of links, attempt to scroll. Effect: janky, sometimes entirely blocked interaction. Cause: JS + IO + layout in background tabs, probably.

My bookmarklets I wrote for Chrome all seemed to break and I'll need to modify them to work again, boo. Entirely my fault for not following standards and using (for example) -webkit-blah CSS targets.

The space bar appears to "randomly" have its events swallowed by ???, causing my use of it as Page Down to be awful. WTF? That's definitely something that used to work properly. Will disable extensions to see if there's a cause there. Not looking forward to a restart after each.
1
Christopher Fredericks's profile photoMikhail Kruk's profile photo
6 comments
 
No, you can't (I assume).  It would be very strange if it worked -- flash player has its own proprietary protocol for letting debugger attach to it.  In related news I just wasted an hour on trying to figure out how to change default setting in firefox (affecting all profiles... or at least all new profiles).  And failed.  I think I hate it.
Add a comment...
Basic Information
Gender
Male