Elegant Technologies

  • Meaningful Ventures
  • Simulation & VR/AR/XR
  • Education
  • Mobile Apps
  • Technology & Business
  • Blog
  • About
    • Ongoing Projects
      • Open Kitchens
      • School Twist
    • About Me
    • Contact Me

Unnamed Strengthen-Democracy Project

2020-07-30 by Jim Rohrer

Our mission is to bring mass-participation to the funding of projects, in the United States, that strengthen our democracy. We want people donating every month, just like paying for Netflix, or the water bill, to causes that address the systemic issues that impact the robustness and fairness of modern democracy. We will identify issues and their root-causes and identify and fund non-profits that are actively working to fix those root causes.

This project has two key features:

  1. Expectation of monthly donations (avoiding one-off gifts and on-going solicitations)
  2. Addresses the are-they-worthy doubts. We identify the big issues, and constantly re-assess the best ways to make things better. Donors merely pick which areas they care about, (like: just “Better Elections”, “Better News”, or “Balanced Solution Portfolio”) and then pick their monthly-spend amounts.

Initial areas of consideration

  • Better representation in elected officials (anti-extremism)
    • More community-centric representation in districts (anti-Gerrymandering)
    • Better incentives to represent all members of a district/state/country (anti-winner-take-all voting)
  • Better knowledge and critical thinking among electorate
    • Improved access to shared facts (anti-misinformation, anti-fake-news, anti-foreign-interference)
    • Better science literacy
  • Better sense of shared-cause among the electorate
    • Improved empathy between demographics (anti-tribalism)

Criteria of Success

  • Clear identification, understanding, and communication around goals, symptoms, and actions.
  • Broad appeal to Republicans, Democrats, and Others(1).
  • Sustainable financial throughput.

(1) Except for partisans that see gaps in the rules as game-features to be exploited, instead of weakness to be addressed.

Next Steps

  • Refine initial mission and vision
  • Articulate initial operating principles
  • Identify initial symptoms and cures
  • Identify initial set of target charities
  • Build community and get feedback from experts
  • Initial fundraising/pledges
  • Initial Technology & Operations rollout – website, collections, donor advisory fund agreements, etc.
  • Ongoing marketing and operations

Subscribe for occasional updates about this project

* indicates required

Filed Under: Uncategorized

PowerNap (not) on the Oculus Go

2019-05-28 by Jim Rohrer

I recently started porting PowerNap from the iPhone to the Oculus Go. The Oculus Go form factor impresses me and I find the lack of cords great for sleeping. When I started re-learning VR development, I thought PowerNap would make a good first-app candidate. I was wrong.

PowerNap Icon for iPhone

PowerNap started on the iPhone so long ago, in 2008. Although there are several apps like it in the App Store today, it was pretty innovative at the time. A power nap, for those that haven’t heard of the term, is just a short, intense nap in the middle of the day. When I was a cadet at the Air Force Academy, we were always dog-tired, and if we could find a free 15 minutes, you bet we would close our eyes and rejuvenate. The risk was in oversleeping, or in needlessly bothering people around you. In your dorm, you could set an alarm, but on-the-go, you would need to set your watch, which was actually error-prone and would definitely annoy people around you. The PowerNap app was created to address the risk of a badly set alarm clock, or sleeping on the go in a library, or in a car.

And before you ask, this came out before the iPhone had a reliable timer function. The risk of setting an alarm for PM, when you meant AM, or reusing an alarm that was meant for certain days of the week, was a real threat. PowerNap was like a fancy count-down timer. It also had awareness that you might be napping, in say, a library, so the alarm would start with mere visuals and haptic feedback, before transitioning to progressively louder audible cues.

Sunrise in VR

PowerNap for the Oculus Go became my first-ever Unity app. I made a bunch of design mistakes, but it basically came together pretty nicely. I really like how I used a gorgeous sun-rise to transition from a darkened VR environment to a brightly lit scene that gently wakes the user. And instead of a boring alarm, birds start to gently chirp after sunrise before an eventual cacophony of birds, alarms, and music, that would be impossible to sleep through. You would annoy your neighbors if it ever reached this point, but by then, it is basically a personal emergency.

Wakey wakey screenshot for Oculus Go

Everything worked out pretty well, until final testing. Despite my app telling the Oculus to never power down, at least while the headset was mounted, the device would always turn off during a deep sleep. The OS detected the lack of movement and cut power to the device This, of course, is a pretty big problem.

Oh well. I ended up making instructions that described how to keep the device awake. This was far from ideal, and I knew it would hurt ratings, but it was the best we could do. I had also learned from my iPhone days, sometime it is smart to create a solution with a work-around, so that when the OS finally improves, you are fully ready to take advantage of the change.

Oculus workaround for device powering down, due to lack of movement.

By the time I finally got everything ready, and got approved by Oculus, they changed the OS, again! The setting was completely gone! Hmm, maybe it simply honored the mount vs. unmounted sensor? Sadly, no, and I got this confirmed from Oculus support. It simply not possible to keep the device awake if the user is super immobile.

2019-05 OS v3.60.36 can not force awake

So, without even a workaround to avoid powering down, PowerNap for the Oculus Go is on hold. I’m eager to test this on Pico and the Vive Wave platform. Let’s hope their purer Android implementations are more flexible. In the meantime, people will just have to sleep in the real world.

1 minute trailer

Update (June 2019): I’ve been working with some great people in Oculus support about this. At their encouragement, I created a bug-report and they’re now investigating to see if this can be fixed in a future OS release. Fingers crossed.

Filed Under: PowerNap, Uncategorized, VR

Porting PowerNap to Oculus Go

2019-02-11 by Jim Rohrer

I’ve jumped back in virtual reality and I’m currently working on PowerNap for VR. I’m migrating, and re-imagining, my old PowerNap app for iOS. This is my way of really getting my feet wet, again. I know all of the VR theory, but programming in Unity is very different than working in SGI’s Performer, and there is no substitute for jumping in and just trying to make things work.

I already know the things I would change in the system architecture, mainly around how I would enable loading multiple scenes. And there is a certain zen between getting everything into C# code, which is easier to inspect vs. building for the Unity editor, which is easier to fiddle with. That being said, I’m finding my recent web development and mobile development experience unexpectedly relevant in building this app.

Chirping bird sounds and the procedural sun made for a particularly nice way of waking up from a nap. The brightening screen is a great way to wake up. I’m curious as to which other affordances of VR could enhance old functionality. While dwelling on alarms, I could imaging using eye tracking inform when to wake up the sleeper. For calendar and mail notifications, I could imaging tapping into a watch-based heart rate monitor, combined eye tracking to detect when a user is in-the-flow and avoid interrupting with notifications that can be delayed.

I’m targeting the Oculus Go, whose portability makes it feasible to use at an airport, conference, or just a couch. I find the cloth edges of the Oculus Go pretty comfortable to keep on while sleeping. I’ll update this once it is live in the store (or rejected!).

Filed Under: PowerNap, VR

So many missing images…

2018-10-12 by Jim Rohrer

Or…

“own your content“.

I recently discovered that my hosting provider mucked up my WordPress installation pretty severely.  Granted, it was a multi-site installation, but it was set up in a way that urls kept getting re-written back to the base site, instead of sticking with the current site. This seemed to happen during upgrades and/or moving from staging to production. I only blame them because they handled the set up, but it was my fault for not automatically catching it right away. During the remediation process, I learned noticed my links to external images had died.  Not just some of them, but every single one. The first key take away is that if you care about your site, you really need to check on it periodically, including searching for broken links. The other key take away is that you need to host any content you don’t want to go away.

… Read More

Filed Under: Content

I rode a VR bike today

2016-06-07 by JJBigThoughts

My 1-on-1 demo of VR Bike. Mechanics are great – I will really like this. Thnx @JasonT @virzoom #vr pic.twitter.com/upYIrDrvyx

— J.J. Rohrer (@jjrohrer) June 6, 2016

Filed Under: VR Tagged With: exercise, VirZoom, vr

Should you start that business/app/product?

2013-09-14 by JJBigThoughts

So, for me people like me, the following scenario happens a lot.  You get a good idea and you imagine it would be fun and everyone would love it.  The question is whether you should turn it into a start-up or at a least a serious hobby.  I mean, geez, the idea is awesome and you’d be crazy not to work on it, right?  So, should I work on this new product/business/app idea?

I like to ask myself a couple of things:

  1. Why me?
  2. Will people pay for it?

Why me?

Are you the right person to do this?  Do you know anything about it?  Can you reasonable compete in the field if other people, presumably better suited to the project, enter, too?  If so, then fine, please continue.  However, nine times out of ten, switching to a whole new industry is a bad time to also launch a new start-up or product in that industry.

 

Will people pay for it?

This one is easy to overlook.  There is very little more important than figuring out if people will really part with their money for your product.  Sometimes, those potential should part with their more. They might be well served to do so.  They might be happier and wealthier if they do so.  But unless you are really certain that they’ll buy your product, then don’t waste your time and money building and testing the product only to find out too late that people won’t actually pay for it.

Filed Under: Business of Software

Join team Rave for the DARPA tag challenge

2012-03-30 by JJBigThoughts

DARPA is at it again with their Tag Challenge. My buddie and I worked at their last one. They distributed balloons randomly throughout the country. We had a good strategy, trying the enlist people what travelled the country and could spot balloons, like truckers. The problem was that the balloons where really only in city centers, so MIT’s social network found them first. Check out our new team here.

Filed Under: Uncategorized Tagged With: DARPA, social networking, tag challenge, x-prize

Announcing WordPress Plugin: Elegant Tweets

2011-08-26 by JJBigThoughts

I recently starting working on making my own WordPress plugins. The twitter feeds you see on this site are a result of that – I creatively call it Elegant Tweets. When I starting working on Ascendly, I wanted to make further use of plugins, so as practice, I tried to polish up my first plugin and share it with everyone. Although I want to add more features, it does work as-in, and does not have any known bugs, so enjoy.

This plugin allows you to configure the tweet stream the way you want it. Specifically, it creates a widget for use in your themes that will display zero or more tweet feeds. You can, for example, add your own Twitter username, but, more uniquely, you can also have certain Twitter feeds show based upon the categories assigned to the current page being viewed.

Motivation: I developed this plugin because I occasionally make apps for the mobile phones. Some of my apps have their own Twitter account to announce things like updates. I wanted visitors to my website see my primary feed (@jjrohrer), but to also see the feeds for the apps, but only if they were on pages related to those apps. Now, my posts that relate to a certain app are assigned to a category related to that app. So, when a user views a page, they will see several Twitter streams depending upon which categories are in view.

 

Filed Under: Elegant Tweets for Wordpress, News, Technical, Wordpress

Technical: Hacking Dashcode to Programmatically Change Deployment Directory

2011-05-26 by JJBigThoughts

I like Apple’s Dashcode more than I should.  It is a powerful Webapp creator that is a bit under-supported.  I don’t think it gets the love, or the hacker support, that it deservers.  So, I find myself trying to make it do stuff it wasn’t originally designed for.  Recently, I’ve been using it to create skins for some non-iOS mobile apps.  As part of a budding workflow, I wrote a script to copy an existing Dashcode project and have it ready for the new project, including published to the right (read – ‘new’) location instead of the old location associated with the previous project.  Well, the challenge, is that Dashcode has the concept of a “Deployment Directory” that should point to my new workspace, not my old workspace.  This article describes how to programmatically change the “Deployment Directory”

So, how can we script a solution for this?

Although Dashcode project looks like a single executable file, it is actually a Finder package with lots of stuff inside.  The trick is looking to see if the deployment path is stored in something we can mess with. It turns out the value is stored in jj.wdgtuser (my user name is jj).  Sweet!

The good news is that is stored in the .xml file – that is also the bad news.  Apple’s xml formats always sort of sucks, so getting to our variable isn’t super easy, unless you think predicate XPATH programming is super easy.

Inside a Dashcode Project

Here are the general steps I used to accomplish scripting the deployment path:

  • Ensure Dashcode is not running
  • Find the current username so you open the right .wdgtuser file.
  • Use XPATH
    • find the dict element whose previous sibling is a key element with a value of ‘DeploymentOptions‘
  • Given the above context, use XPATH to
    • find the string element whose previous sibling is a key element with a value of ‘Path’

 

The hard part here, of course, is finagling XPATH.  Here is the PHP code I used, but you’ll need to modify it for your own means:


$plistPath = baseDir($target)."/skins/{$skinName}.dcproj/jj.wdgtuser";

$xml = simplexml_load_file($plistPath);

$result = $xml->xpath("//dict/dict/string[preceding-sibling::key[1][node()='Path']]/node()");

$result[0][0] = $newDeploymentPath;

 

 

$xml->asXML($plistPath);

Here is a stab at explaining the XPATH above:

 

Hope this helps some other poor soul that wanders into the wilderness of Dashcode hacking.

Filed Under: Technical Tagged With: Dashcode, deployment directory, simple_xml, xpath

The Snooze Upgrade

2011-04-07 by JJBigThoughts

I just got a snooze button! This free upgrade is found in Powernap 1.7 for the iOS. Thanks Tracey for the suggestion. http://bit.ly/hpa1qkThu Apr 07 12:27:34 via webPowernap App
powernapapp

Filed Under: iPad, iPhone & iPod touch, PowerNap

  • 1
  • 2
  • 3
  • …
  • 6
  • Next Page »

Recent Posts

  • Unnamed Strengthen-Democracy Project
  • PowerNap (not) on the Oculus Go
  • Porting PowerNap to Oculus Go
  • So many missing images…
  • I rode a VR bike today

Categories

  • Business of Software (12)
  • Client Projects (1)
  • Content (1)
  • Elegant Labs (4)
  • Mobile (26)
    • Android (5)
    • Blackberry (3)
    • Elegant Torch (1)
    • iOS (23)
      • iPad (14)
      • iPhone & iPod touch (16)
    • Nokia (1)
    • Palm (1)
  • News (6)
  • Personal Technology (1)
  • Platforms (14)
  • Products & Apps (19)
    • Different Proportions (1)
    • Elegant Pythagorean (1)
    • Elegant Quadratic (1)
    • Elegant Word of the Day (1)
    • Elegant Words (2)
    • Lil' Math (1)
    • Meeting Timer (1)
    • Nightlight (1)
    • PowerNap (4)
    • Survey Size (1)
    • Time to Eat (1)
    • Time to Read (1)
    • Wallet Zero (2)
  • Technical (4)
  • Technology Trends & Looming Opportunities (14)
  • Uncategorized (6)
  • VR (3)
  • Wordpress (1)
    • Elegant Tweets for Wordpress (1)

Archives

Copyright © 2025 Elegant Technologies ::

Copyright © 2025 · Start on