Categories
Swift

Diving into SwiftUI

Categories
Coding Nerd Sniped Processing

Nerd Sniped

When I saw https://cacheflowe.com/art/digital/deepflat I was “nerd sniped”. I had to figure out how to do it. A bunch of coffees later…

What’s better? I have source code!

https://github.com/twstokes/labs/tree/master/viz/depth_grid

Categories
Clemson Projects

Bringing Clemson’s TigerOne card to the iPhone and Watch

Over the past few months our team at Clemson worked with TigerOne, our card services department, and Apple to successfully bring mobile ID provisioning to campus. We were the first school to integrate this functionality into our own app, my.Clemson, and that integration correlated with the success we saw on launch day – around 4500 students, faculty, and staff were able to add their TigerOne Mobile ID to their phone and Watch. These are record numbers to date. 🎉

Adobe XD Process

There were a lot of unknowns when we started the project, one being that we’d never integrated Duo (the University’s two factor system) with a native client. It made sense to reuse the embedded web version so we didn’t have to reinvent the wheel, but we weren’t sure of how to combine this with our current method of authentication via SwiftECP, whose goal is to avoid the browser!

We ended up with a pretty slick solution. After configuring the IdP to allow a Duo flow from a client that authenticated ECP, it worked like this:

  1. Authenticate via ECP
  2. Try to load the resource that’s protected by Shibboleth + MFA
  3. If the resource needs MFA authentication, show it in a WKWebView and use the navigationDelegate methods to determine when the user has responded
  4. Finally, inject the cookies provided by the Duo flow back into the native client so that it could be used for subsequent requests with a URLSession
Duo flow in action. Please ignore my super old ID picture.
Categories
Raspberry Pi

A good Raspberry Pi 4 case

My excitement for the new Raspberry Pi 4 turned into disappointment upon learning it couldn’t handle sustained loads without some sort of extra cooling solution. After installing it in this case, I’m happy to say things are looking stable.

The case comes with a fan and three heat sinks
Results of the load test
Categories
Projects Raspberry Pi

The Rover has dual steering!

Categories
Arduino Projects Raspberry Pi Swift

Controlling the Rover’s camera with an iPad gyroscope

The Rover got its own iOS app and I implemented a neat way to control the camera servos.

https://twitter.com/TannerStokes/status/1130288403491241984
Categories
Processing Projects

Simple tree generation

A 2D recursive algorithm
A slightly tweaked version on a 3D canvas and rotating on the Y axis. Some random() calls are involved.
Adding in some opacity for a simulated depth.
Categories
Processing

Lissajous curves

Source https://github.com/twstokes/labs/tree/master/viz/lissajous
Categories
Processing Swift

More iPhone X Depth Sensor Fun

Categories
Processing Swift

iPhone X Depth Sensor to Processing.org

This was a fun challenge (and a total hack). In the end it wasn’t that sophisticated, but it was a good exercise in UDP as well as data compression.