Vive Video Tip

We’ve been dabbling in the VR world with Vive and video captured via the Ricoh Theta S. The Ricoh video resolution isn’t great but for loaning out to faculty it’s simple and won’t end the world if it’s blown over by the wind on a moor in Ireland.1 Step one got us the example above (directions here). Our next move was to get it into something that would take advantage of the Vive headset for movement. There’s a nice app called, appropriately, Vive Video. The built in examples work exactly like you’d expect but using our own videos wasn’t all that intuitive to me initially. The steps are easy enough once you know them. Get your video on the computer where you’re running Vive Video Login to Vive Video and navigate to the video – I had some issues with the pointer not working well at various times but restarting the app seemed to fix it each time Once you’ve go the video showing up . . . initial attempts to play it will show you the ‘unwrapped’ version. You might keep loading different versions and trying other videos to figure out why it isn’t behaving like 360 video. After a number of attempts . . . you’ll move the next step below. You notice an eye icon on the […]

Ricoh Theta to YouTube 360 on a Mac

The easiest path for me to get Theta video on YouTube using a Mac ended up being . . . Change file from m4v to mov – just rename the file and confirm. Open the renamed video file with the Spatial Media Metadata Injector program Save it Upload to YouTube and wait a bit as it’ll take a while after upload for it to become 360 interactive but it does get there.

WP Rest API Tips

Cowboy Jason Stanley performing a riding trick at the Round-Up, Pendleton, Oregon flickr photo by UW Digital Collections shared with no copyright restriction (Flickr Commons) I’ve been doing quite a bit more with the WordPress Rest API lately. There’s plenty of documentation and tutorials out there but most of it still feels a bit scattered to me so I’m going to stick a few of the basics here and add a few things that have come up repeatedly that aren’t quite as basic. There’s an attempt here to move upwards in complexity with the examples but to keep them as clean as possible. This will deal entirely with getting the data. I haven’t done much with using the API to write or modify data. Get the Info There are many ways to get data depending on your library of choice or if you’re using vanilla JS. I’ve played with fetch and Axios on the lighter side and jQuery, Vue, and Angular (v1) on the heavier/more involved side of things. I’ll use jQuery in this version because it’s fairly popular but here’s a Vue example. The example below does a basic jQuery ajax call for the JSON associated with blog information. See the Pen simple jquery get of WP JSON for the site by Tom (@twwoodward) on CodePen. The URL Structure/Accessing […]

timeline of last 50 posts

WP JSON to Timeline JS

As part of some thoughts on building out a series of reflective views for student portfolio blogs, I thought seeing your WordPress posts in the TimelineJS view might be a useful way to look back over your progress. I intend to wrap this into a custom spreadsheet template and/or a plugin1 but figured I’d sketch out how it works so far in case anyone was interested. The WP Rest API makes it pretty easy to write the data via Google Script. I just want to cut out chunks of the data and put it in the right fields. The following script does that and writes it to a page named “wp.” 1 Or maybe just a page where you throw in a blog URL and get a bunch of alternate view/data options.

Managing Rico Theta Videos on a Mac

The theta software sucks but the camera is decent #theta360 – Spherical Image – RICOH THETA At one point you could mount a Ricoh Theta camera on a Mac like so . . . Mass Storage: Press Wireless and Shutter. While continuing to hold these buttons, plug THETA into computer with USB cable. Camera will be powered off. via this It appears this no longer works on Macs running an updated OS. I never found one that worked . . . but supposedly it does on older version. I tried a number of things on various machines here but even diskutil list in terminal wasn’t seeing the Ricoh. Molly even went to great lengths to call and talk to a person on a phone but he was less than no help. There seems to be a pretty basic assumption that you only want to take video in the camera and upload it via their app. Much like the GoPro, it’s hard to tell what’s going on in the Ricoh via the device itself. It tells you it’s on, wi-fi is up etc. but storage remaining and a few other things that might matter are not apparent. Get Your Video & Cleanse the Camera To get the content to your phone and remove it from the camera, you’ll need to go […]

Fix Adobe’s Annoying Photoshop PNG Transparency Clipping

Photoshop decided it was smarter than me and would override my decisions about exporting a PNG layer with transparencies. It’d clip it and mess up my careful alignment. You can see someone else suffering from this on the Adobe forums. This could not stand. If you don’t want to see the setup for the issue and just want the answer . . . take the paint brush set the opacity to 0 and make a slash across the top prior to export.

Required Plugin Trick

Image from page 148 of “The Phynodderree, and other legends of the Isle of Man” (1882) flickr photo by Internet Archive Book Images shared with no copyright restriction (Flickr Commons) 1 Mark Luetke wrote a really nice plugin2 for us when he was here that helped faculty setup mother blogs. It requires FeedWordPress (FWP) to be active to work. This morning I had a faculty member who set everything up correctly except for FWP. It’s happened a few other times so I figured I’d do something about it. I’d seen plugins that warn you if you don’t have a required plugin working so I went that route first. The code below was lifted straight from this stackoverflow response and set to look for FWP. It was decent and functional but I felt like I could make the notification better which led down a winding road. Modal Popup This code is straight from this codepen.3 And the little child_plugin_notice function got a bit larger. ID FWP Then I thought it’d be neat if I could scroll them down to FWP when they closed the modal popup. This could have been easy if the WP plugins table had ID elements that were rationale but it doesn’t. That led to a bit of an odyssey with various flavors of document.getElements. I still don’t […]

WP REST API Custom Fields to Google Maps

Manuel, the young shrimp-picker, five years old, and a mountain of child-labor oyster shells behind him. He worked last year. Understands not a word of English. Dunbar, Lopez, Dukate Company. Location: Biloxi, Mississippi. (LOC) flickr photo by The Library of Congress shared with no copyright restriction (Flickr Commons) 1 I had a site we used for the Great VCU Bike Race course that’s been sitting around. I knew it had lat/lng data for lots of urban bicycle related posts. My goal was to get it into Google Maps via the REST API. Get Custom Field in JSON By default you won’t see custom field data in your JSON endpoints. There are some plugins to make that happen but I wanted to take a stab at doing it myself. Given the documentation, it was pretty trivial.2 The code below in a plugin or the function.php file would make the lat_long custom field show up in the post JSON. Using this URL, I can get the 30 most recent posts.3 Some Map Stuff Google wants lat/lng separate but it’s coming in as one item split by a comma. These little functions split it up nicely. In javascript, split breaks up a string by the defined element (comma in this case) and returns the pieces as an array. Since I’ll get two pieces […]

Trump Dump Data & Playing with TAGS

Image from page 60 of “Children’s ballads from history and folklore” (1886) flickr photo by Internet Archive Book Images shared with no copyright restriction (Flickr Commons) Driven mad by curiousity after this Matthew Baldwin tweet, I built this little thing. It uses the amazing Martin Hawksey’s TAGS for gathering the Tweets in Google Sheets and then displays it with Vue.js (which I’m sort of learning). It led me to realize that I could extend TAGS without much effort. My first attempt was to write two custom functions to get favorites and retweets. Turns out that was pretty straight forward given all Martin’s work. The TAGS element (TAGS.get) links me into Martin’s library and that’s that. So very easy once you know and then you’re just navigating the Twitter API. Turns out I can do something similar to get the Twitter bio. Initially, I just stuck these in like you’d do normal functions … =getRT(A1) or whatever and it soon ate up all the processing time allowed for my Google Scripts. That caused other things to break. Lesson learned. I then opted to set the value in the script and write that value to the cell. This little script runs on the spreadsheet change trigger and checks to see if there are any blank cells in the Favorites column (column U) […]

Google Script Folder Copying Postmortem

Image from page 93 of “Elementary and dental radiography” (1813) flickr photo by Internet Archive Book Images shared with no copyright restriction (Flickr Commons) This is the blow-by-blow documentation of a failure of sorts. Nothing makes me angrier than failing to deliver on something I said I could/would do. I ended up delivering what was needed but the way I had to do it was ugly and time-intensive. All of this happened because of two things- insufficient initial testing and not enough knowledge on my end at a couple of key steps. I’ve got lots of ideas I need to test out now that I’ve learned a few things the hard way but I thought it’d be beneficial to see how I tried to think through this thing when various paths failed . . . and with that welcome to my postmortem. I thought we had the Social Work Google Docs Digital Portfolio thing figured out. I even wrote a blog post. Events coalesced to remind me that I do not know enough stuff. However, I do intend to learn from painful mistakes like this and give you my tears and frustration for you free of charge.1 Initial tests felt a bit slow but nothing too bad. Google Scripts will timeout after 6 minutes but I thought we’d be ok […]