{"id":7816,"date":"2026-04-20T23:13:25","date_gmt":"2026-04-20T23:13:25","guid":{"rendered":"https:\/\/robertjwallace.com\/?p=7816"},"modified":"2026-04-20T23:18:15","modified_gmt":"2026-04-20T23:18:15","slug":"showcard-a-card-reveal-tool-for-performers","status":"publish","type":"post","link":"https:\/\/robertjwallace.com\/es\/showcard-a-card-reveal-tool-for-performers\/","title":{"rendered":"ShowCard \u2014 A Card Reveal Tool for Performers"},"content":{"rendered":"<p class=\"\">\u2663 \u2665 \u2660 \u2666<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is ShowCard?<\/h2>\n\n\n\n<p class=\"\">ShowCard is a mobile web app designed for card performers. It lets you silently encode a playing card into your phone using natural-looking gestures, then reveal it dramatically at the right moment.<\/p>\n\n\n\n<p class=\"\">The encoding happens in two steps as you handle the phone. First, the suit is registered by where your thumb lands as you pick up the phone. Then a second touch encodes the value. Neither touch looks deliberate to an observer \u2014 they&#8217;re the natural contacts of someone checking their phone.<\/p>\n\n\n\n<p class=\"\">When you&#8217;re ready for the reveal, either lift the phone or give it a subtle motion and the card fades into view. The whole sequence, from encoding to reveal, can be made to look completely incidental.<\/p>\n\n\n\n<!--more-->\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Installing ShowCard<\/h2>\n\n\n\n<p class=\"\">ShowCard is a Progressive Web App (PWA). There is nothing to download from an app store \u2014 you install it directly from the browser. Once installed it works completely offline, launches full-screen from your home screen, and behaves like a native app.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"\"><strong>Important:<\/strong> You must use the correct browser for installation. Firefox does not support PWA installation. Use <strong>Safari on iPhone<\/strong> y <strong>Chrome on Android<\/strong>.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">iPhone \u2014 Safari<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"\">Open Safari and go to <code><a href=\"https:\/\/robertjwallace.com\/es\/showcard\/\" data-type=\"link\" data-id=\"https:\/\/robertjwallace.com\/showcard\/\">robertjwallace.com\/showcard<\/a><\/code><\/li>\n\n\n\n<li class=\"\">Tap the <strong>Compartir<\/strong> button (box with arrow pointing up)<\/li>\n\n\n\n<li class=\"\">Scroll down and tap <strong>Add to Home Screen<\/strong><\/li>\n\n\n\n<li class=\"\">Tap <strong>Add<\/strong> in the top right<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Android \u2014 Chrome<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"\">Open Chrome and go to <code><a href=\"https:\/\/robertjwallace.com\/es\/showcard\/\" data-type=\"link\" data-id=\"https:\/\/robertjwallace.com\/showcard\/\">robertjwallace.com\/showcard<\/a><\/code><\/li>\n\n\n\n<li class=\"\">Tap the <strong>three-dot menu<\/strong> in the top right<\/li>\n\n\n\n<li class=\"\">Tap <strong>Add to Home Screen<\/strong><\/li>\n\n\n\n<li class=\"\">Tap <strong>Add<\/strong> to confirm<\/li>\n<\/ol>\n\n\n\n<p class=\"\">After installation, tap the ShowCard icon on your home screen. It will open full-screen with no browser chrome. The app caches all card images on the first load, so it will work with no internet connection from that point on.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"\"><strong>iPhone note:<\/strong> The first time you launch, iOS will ask for permission to access motion and orientation sensors. Allow this \u2014 it is required for the pickup trigger to work.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">How to Use ShowCard<\/h2>\n\n\n\n<p class=\"\">When the app opens it shows a blank screen:<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"354\" height=\"766\" data-src=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image.png\" alt=\"\" class=\"wp-image-7819 lazyload\" data-srcset=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-354x600.png 354w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-139x300.png 139w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-6x12.png 6w\" data-sizes=\"(max-width: 354px) 100vw, 354px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 354px; --smush-placeholder-aspect-ratio: 354\/766;\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">The Encoding Grid<\/h3>\n\n\n\n<p class=\"\">The phone screen is invisibly divided into zones. You never need to look at them \u2014 after a little practice the positions become muscle memory.<\/p>\n\n\n\n<p class=\"\"><strong>Suit \u2014 4 horizontal rows, top to bottom:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Zone<\/th><th>Suit<\/th><\/tr><\/thead><tbody><tr><td>Top quarter<\/td><td>\u2663 Clubs<\/td><\/tr><tr><td>Upper middle<\/td><td>\u2665 Hearts<\/td><\/tr><tr><td>Lower middle<\/td><td>\u2660 Spades<\/td><\/tr><tr><td>Bottom quarter<\/td><td>\u2666 Diamonds<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"\"><strong>Value \u2014 3\u00d74 grid, reading left to right, top to bottom:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>Left<\/th><th>Centre<\/th><th>Right<\/th><\/tr><\/thead><tbody><tr><td><strong>Top row<\/strong><\/td><td>A<\/td><td>2<\/td><td>3<\/td><\/tr><tr><td><strong>Second row<\/strong><\/td><td>4<\/td><td>5<\/td><td>6<\/td><\/tr><tr><td><strong>Third row<\/strong><\/td><td>7<\/td><td>8<\/td><td>9<\/td><\/tr><tr><td><strong>Bottom row<\/strong><\/td><td>10<\/td><td>J<\/td><td>Q<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"\">The King is a special case \u2014 see below.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Sequence<\/h3>\n\n\n\n<p class=\"\"><strong>1. Phone face down on the table.<\/strong><br>The app is waiting. Nothing is visible.<\/p>\n\n\n\n<p class=\"\"><strong>2. Pick up the phone.<\/strong><br>As it turns face up, your thumb naturally contacts the screen. The vertical position of that first touch encodes the suit. If the suit display is enabled, the suit symbol appears large on screen.<\/p>\n\n\n\n<p class=\"\"><strong>3. Touch the screen a second time.<\/strong><br>The position within the 3\u00d74 grid encodes the card value. The image is silently pre-loaded.<\/p>\n\n\n\n<p class=\"\"><strong>4. Trigger the reveal.<\/strong><br>Either lift or move the phone (motion trigger) or tap the screen a third time (tap trigger \u2014 see Settings). After the reveal delay, the card fades dramatically into view.<\/p>\n\n\n\n<p class=\"\"><strong>5. Reset.<\/strong><br>Tap the screen to return to idle (if tap-to-reset is enabled), or open and close Settings.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The King<\/h3>\n\n\n\n<p class=\"\">Because the 3\u00d74 grid only has 12 cells (Ace through Queen), the King is encoded differently. With the suit locked and before touching for a value, give the phone a quick shake \u2014 three sharp jolts. The King is loaded silently and the next trigger will reveal it.<\/p>\n\n\n\n<p class=\"\">The King can be disabled entirely in Settings if you don&#8217;t need it.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Settings<\/h2>\n\n\n\n<p class=\"\">Open Settings by tapping the invisible target in the <strong>top-right corner<\/strong> of the screen. On Android you can also use the <strong>volume up button<\/strong> if using the native app.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"354\" height=\"766\" data-src=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-1.png\" alt=\"\" class=\"wp-image-7820 lazyload\" data-srcset=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-1-354x600.png 354w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-1-139x300.png 139w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-1-6x12.png 6w\" data-sizes=\"(max-width: 354px) 100vw, 354px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 354px; --smush-placeholder-aspect-ratio: 354\/766;\"><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Setting<\/th><th>What it does<\/th><\/tr><\/thead><tbody><tr><td><strong>King card<\/strong><\/td><td>Enables or disables King encoding via shake. Turn off if your routine only uses Ace through Queen.<\/td><\/tr><tr><td><strong>Show suit<\/strong><\/td><td>When on, the suit symbol is displayed after the first touch. When off, the suit is encoded silently with nothing shown on screen.<\/td><\/tr><tr><td><strong>Tap to reset<\/strong><\/td><td>When on, touching the screen after the card is shown resets the app. When off, nothing happens on touch \u2014 open and close Settings to reset. Useful when you want the card to stay on screen without accidental resets.<\/td><\/tr><tr><td><strong>Tap to reveal<\/strong><\/td><td>When off (default), picking up or moving the phone reveals the card. When on, a third touch triggers the reveal. Recommended for iPhone, or any situation where motion triggering is unreliable.<\/td><\/tr><tr><td><strong>Reveal delay<\/strong><\/td><td>How long after the trigger before the card starts to appear. Range: 0.5 to 10 seconds.<\/td><\/tr><tr><td><strong>Fade duration<\/strong><\/td><td>How long the fade-in animation takes. Range: 1 to 5 seconds.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"\">All settings are saved automatically and persist across sessions.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"452\" height=\"990\" data-src=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-3.png\" alt=\"\" class=\"wp-image-7822 lazyload\" data-srcset=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-3-452x600.png 452w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-3-137x300.png 137w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-3-5x12.png 5w\" data-sizes=\"(max-width: 452px) 100vw, 452px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 452px; --smush-placeholder-aspect-ratio: 452\/990;\"><figcaption class=\"wp-element-caption\">Suit display if toggled on<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"452\" height=\"990\" data-src=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-4.png\" alt=\"\" class=\"wp-image-7823 lazyload\" data-srcset=\"https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-4-452x600.png 452w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-4-137x300.png 137w, https:\/\/robertjwallace-images.s3.us-east-2.amazonaws.com\/wp-content\/uploads\/2026\/04\/image-4-5x12.png 5w\" data-sizes=\"(max-width: 452px) 100vw, 452px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 452px; --smush-placeholder-aspect-ratio: 452\/990;\"><figcaption class=\"wp-element-caption\">Card display<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Tips<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"\"><strong>Practice the grid blind.<\/strong> Spend a few minutes touching each zone without looking until the positions feel natural. The grid is generous \u2014 you don&#8217;t need to be precise.<\/li>\n\n\n\n<li class=\"\"><strong>Use a long reveal delay.<\/strong> A 3\u20134 second delay between triggering and the card appearing gives you time to set the phone down, redirect attention, or build anticipation before anyone glances at the screen.<\/li>\n\n\n\n<li class=\"\"><strong>Turn off suit display.<\/strong> Once you&#8217;re comfortable with the suit rows, disabling the suit display removes any visual feedback that could tip off an observer that anything was just encoded.<\/li>\n\n\n\n<li class=\"\"><strong>Tap to reveal on iPhone.<\/strong> The motion sensor on iOS can be less consistent than Android. The tap trigger is more reliable for performances where you need certainty.<\/li>\n\n\n\n<li class=\"\"><strong>Tap to reset off.<\/strong> If your performance ends with the card on screen and people are looking at it, disabling tap to reset prevents an accidental touch from clearing it at the wrong moment.<\/li>\n<\/ul>\n\n\n\n<p class=\"\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Additional thoughts<\/h2>\n\n\n\n<p class=\"\">Using a blank card that is added to the deck.  Have a card selected and either glimpse it, or use a stacked deck, so you know what card they selected.  Let them shuffle the deck and while that is being done, secretly code the card to the phone.  Now take the deck from them and tell them that you have one special card in the deck.  Spread through the deck to locate both the blank card and cut it to the top.  Continue spreading and find the selected card and tell them that that is the special card.  Place it on top of the deck without showing it.  Then do a double lift to show the blank card.  Explain that it is like a wild card and can become any card in the deck.  <\/p>\n\n\n\n<p class=\"\">Flip the double face down and take the top card (the selection) and drop it face down centered on the phone screen.  After a second or two (depending on your settings), you can see a card appear under the face down card.  Take the card (supposedly blank) away to show the spectators selection shown on the screen,  the turn the &#8220;blank&#8221; card over to show it matches the screen. <\/p>\n\n\n\n<p class=\"\">Alternatively,  you can set the card value into the phone first, and then force that card on the spectator.<\/p>","protected":false},"excerpt":{"rendered":"<p>\u2663 \u2665 \u2660 \u2666 What is ShowCard? ShowCard is a mobile web app designed for card performers. It lets you silently encode a playing card into your phone using natural-looking gestures, then reveal it dramatically at the right moment. The encoding happens in two steps as you handle the phone. First, the suit is registered &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/robertjwallace.com\/es\/showcard-a-card-reveal-tool-for-performers\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;ShowCard \u2014 A Card Reveal Tool for Performers&#8221;<\/span><\/a><\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","_eb_attr":"","footnotes":""},"categories":[7,142],"tags":[],"class_list":["post-7816","post","type-post","status-publish","format-standard","hentry","category-magic","category-tricks"],"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"Bob","author_link":"https:\/\/robertjwallace.com\/es\/author\/admin\/"},"_links":{"self":[{"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/posts\/7816","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/comments?post=7816"}],"version-history":[{"count":2,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/posts\/7816\/revisions"}],"predecessor-version":[{"id":7826,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/posts\/7816\/revisions\/7826"}],"wp:attachment":[{"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/media?parent=7816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/categories?post=7816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/robertjwallace.com\/es\/wp-json\/wp\/v2\/tags?post=7816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}