Walnut Speaker

Quarantine project: My brother and I each built a custom powered Bluetooth speaker using PDF instructions from https://kmakits.com. The instructions tell you which electronics are needed, and rough lumber dimensions. I deviated quite a bit from the instruction when making the wood enclosure to achieve the look I wanted – the end result turned out great! The speakers sound fantastic.

When deciding to make the speaker I knew I wanted to use Walnut, and that I wanted a good mix of heart and sap wood. I also knew I wanted to incorporate metal somehow, and originally intended on doing a brass knob and brass splines. The brass quickly turned into copper (I preferred the orange/rose tones with the dark walnut), and ended up only doing the knob in copper as the copper stock I ordered for the splines wasn’t thick enough for the saw blade. The box features splines from spalted maple (my brother used this wood for his speaker face). The speaker has 2 walnut feet with a slight pitch to project the box upward slightly.

For the back I painted it matte black to give it a finished stereo vibe, and added a red led for power status to go along with the power switch, power input, aux input, and aux speaker out. Decided not to include the optional batteries for this project as I didn’t intend for it to be mobile (future speaker build with leather strap? yes please)

Copper knob from https://www.etsy.com/shop/TheRightParts, this guy was great!

Construction:

Planning:

Custom Walnut top for IKEA SKARSTA Desk with magnetic tray.

Some pictures of building a walnut desktop for the IKEA SKARSTA standing desk. https://www.ikea.com/us/en/p/skarsta-desk-sit-stand-white-s59324818/.

I was looking for a natural matte/satin finish for the Walnut so I went with Tried & True – Original Traditionnel. It’s food/environmentally safe, no VOCs, safe for skin, and made from renewable ingredients.

It contains Beeswax which offers some hardness and protection from water, and was perfect for a computer desk. The low odor/no vocs allowed me to finish it in my apartment as well. Ended up doing 3 coats, burnishing in-between each coat.

Wood was machine sanded, and then hand sanding up-to 220 before finishing. Put felt underneath the magnetic tray and computer monitor as added protection from scratches.

Huge thanks to my buddy Adrian Orozco for milling, assembling, and cutting everything! If you want a custom piece, use the link before to reach out:

https://www.ditworkshops.com

Process:

my buddy Adrian testing the magnets!
Initial planning concepts

Beauty Brand Game – AR Filters using Spark AR Studio

A fun Instagram filter I helped out on the coding end with. This filter is 100% JavaScript and does not use the patch editor – needed more fine tuned control/logic than patch editor allows (or I’m just more comfortable in code view)

This is the second filter I’ve helped out with and I’ve found that the Spark AR tool itself is pretty good, but the documentation is lacking. Not as much sample code out there either.

2019 Dare Mighty Things Hackathon

Ulta’s first Hackathon

This year Ulta teamed up with the Google Cloud Chicago team to create a fun challenge for our first-ever hackathon! The hackathon was part of the Dare Mighty Things conference, if you’re unfamiliar with this great Chicago conference, check out http://daremightythings.co. McDonald’s co-sponsored the event and graciously hosted the hackathon at their Chicago headquarters – my dream of having unfeathered access to their fountain drink machines came to fruition!

We supplied the participants with multiple sample data files, representing our complete product catalog, store inventory, and store details and challenged them to create a voice-powered experience. The winners would receive up to 5 Google Stadia Founder’s Edition package.

Of the 53 teams involved, 15 chose to work on our challenge and we were delighted with the results. Some of the entries included: Google Assitant for Ulta, Product Recommendation for Ulta, Speech Analysis Platform to make Conversation Smarter.

There were also some pretty interesting team names: “Big Brother is Watching,” “I Like Chicken,” “Nuggets,” “Hopper”, “Ultrasist,” “Sushi Sahworma,” “Serving Looks,” “@therealDMI2019,” “ISU Seniors,” “Team Van,” and “Kangaroos”.


Joe Rago kicking things off!
The quick site we threw together to host data files and info

Dynamic images with Scene7 (Adobe Marketing Cloud / Experience Manager)

https://images.ulta.com/is/image?layer=0&size=800,800&color=ffffff&opac=0&layer=1&src=Ulta/2552761&size=656,656&layer=2&src=Ulta/push_banner_pdp_lowstock_V4&size=800,800

Using query params we can instruct Scene7 to construct a dynamic image for us. The above example creates a single composition from two images. You can see things like background color, opacity, image source, and size.

In the above example I’m making the middle layer slight smaller to maintain a safe area/margin. Scene7 will scale from center, but there is also an anchor point option if needed.

Kato HO Metra with LokSound 5 Select Direct and Custom Sounds

A hobby project I’ve been working on recently. This project involved:

  • soldering small electronic components
  • using a multimeter (to measure current, resistance, amperage)
  • understanding and installing resistors and LEDs
  • painting/spray painting plastic and installing small plastic pieces to the body shell
  • knowledge of DC
  • removing the old light board and installing a new LokSound DCC Select Direct board
  • using LokProgrammer to configure the board and install custom sounds
  • creating custom station and announcement sounds to use within LokProgrammer
  • creating a custom sound schedule with logic for station and route sounds

Photos of the train with the shell off:

Wiring

Adobe Photoshop CC Extension – Panel (HTML/JavaScript)

Video overview of a Photoshop extension I built to help with some common workflows for our photo studio folks at work. Built entirely in HTML/JavaScript using any code editor of your choice (e.g. not using eclipse and that adobe provided tooling)

Use the resource below to get started. Some key callouts I learned in development:

  • add a debug refresh button to reload your extension’s content when updating html/js file
  • when making changes to the .jsx file, disable/enable the extension to see changes reflected
  • use defaults write com.adobe.CSXS.8 PlayerDebugMode 1 to side load an unsigned extension (make sure you restart/log out/or kill process for changes to take effect)
  • put your extension dir in /Users/$user/Library/Application Support/Adobe/CEP/extensions/ – if this path doesn’t exist you can create it
  • watch out for ruler units – ensure your logic considers the user’s ruler units before doing arithmetic. Some sample code I’ve seen and have used suggest doing:
    1. origRulerUnitPrefs = app.preferences.rulerUnits; //save original
    2. app.preferences.rulerUnits = Units.PIXELS; //set
    3. //do logic
    4. app.preferences.rulerUnits = origRulerUnitPrefs; //restore original

Resources:

https://github.com/Adobe-CEP/Getting-Started-guides/tree/master/Client-side%20Debugging

https://www.adobe.com/content/dam/acom/en/devnet/photoshop/scripting/photoshop-cc-scripting-guide.pdf

Wildflowers in epoxy resin with NFC

I’ve been wanting to experiment with epoxy resin for awhile and I finally found some wildflowers from the local forest Preserve that I run in frequently. They made the perfect subject to create a balanced and visually stunning composition.

I also wanted to add a technical touch, so I embedded in the bottom layer of the epoxy a NFC chip. See the video below!

NFC in action. Most Android phone / iPhone XS and later support background tag reading.

Process:

Resources:

https://www.artnglow.com/blogs/news/7-steps-to-a-bubble-free-and-flawless-cure

Products used:

Porsche kiosk POC, iPad app developed in Swift

Related Post

Fresh off of building PTSExplorer.com I had some inquires about building an adaption for a kiosk or exhibition. I was excited by the challenge and below is what I built in a night to show my vision of what that could look like.

The iPad app uses the didConnectNotification from UIScreen to detect when a secondary screen is connected, via HDMI or AirPlay. Once a second screen is detected at runtime I programmatically create another window with a root view controller from a storyboard.