- Graduation: https://www.youtube.com/watch?v=NJ0wq4GwWko
- Graduation Non-Annotated Version, full download: https://1drv.ms/v/s!AmKBMqPeeM_18-dvftzEj6q4w5h4NA
- Open House, Give It App: https://www.youtube.com/watch?v=3B233QLbZoM
- Open House, Toggle It App: https://www.youtube.com/watch?v=zF8zeftXxGk
- Open House, eSports App: https://www.youtube.com/watch?v=ysZI9RAqS04
Tags: coding, Eleven Fifty, graduation, Harry Chapin, Kentucky, learn to code, students, teaching, TeKY
I’ve noticed students feel learning object oriented programming appears tough when first exposed to structured development practices. To add insult to injury, boring example relationships like “people” and “students” and even types of fruit and their plant family relationships are used to show how objects relate to each other. I’m more in the camp believing learning “scary” new concepts should be fun, even memorable. People tend to remember good jokes, and forget dull experiences. I experimented with an approach to OOP. I used the old children’s storybook, Everybody POOPs.
We’re all human beings. All Humans eat and drink, and everybody poops. It takes a system to get to the pooping stage. We also fart. Adults fart and say excuse me!, while children fart and giggle. They’re still Human. Hopefully you can see how these related entities can be turned into computer classes.
I finally got around to recording a video of my teaching this concept, as it relates to classes in Microsoft’s C#. Student reactions are always enjoyable. Most of the time, they laugh, and have fun. I usually get compliments that it’s a lot easier to remember because it’s funny. Some people are disgusted I would talk about such a topic in class – I’m thinking those people don’t have a sense of humor. No photos are involved, so what’s the big deal?
I’m continuing to teach concepts in [what I feel are] fun, real world ways. My first step has been to create “Real World Programming” videos on YouTube. Two are complete as of this article – OOP (link above) and Inversion of Control + Dependency Injection. I hope to do a few more in 2017 as time permits. If you have a suggestion, please let me know!
Tags: clover, emulator, iOS, macOS, microsoft, multibeast, OS X, Sierra, software, Software Development, ultrabeast, virtual machine, virtualbox, Windows, Xamarin
I’ve been struggling with carrying a Mac and PC for Xamarin development for a couple years now. Wouldn’t it be nice to just run OS X in a VM so I could use my Surface Book and not mess with the Apple ecosystem more than necessary? Well, I finally got it working, thanks in large part to the work that’s been done by many people, links of which I’ll credit in this article. Thanks, all!
- macOS X Sierra Installer, or a machine with Sierra installed – extraction details below
- Intel powered machine, preferably i5 or higher
- 16GB or larger thumb drive, preferably USB 3
- VirtualBox 5.x
- Visual Studio 2015 or higher
- If on a laptop, you’re plugged in
Create the OS X Installer USB Drive
First things first – you’ll need a Mac running Sierra and at least a 16 GB USB thumb drive. We’ll be using Unibeast, Multibeast, and the Clover bootloader. I imagine you own both Mac OS and the drive. I’d go the USB 3.0 or higher route so things run a bit faster. We’ll be extracting a Sierra installer in a moment. If you’re all set with the above, follow the instructions at the awesome Tony Mac x86 website. Special thanks to the Hackintosh website. When asked whether to use UEFI or Legacy boot mode, choose Legacy. Here is a marked-up PDF of the article in case the link doesn’t work.
In a nutshell, here’s what you’ll be doing in this step:
- Insert the thumb drive into the Mac. Launch Disk Utility and format the USB drive with the name USB and the format of GUID Partition Map.
- Download the macOS Sierra installer via the App Store. The installer will be saved in your Applications folder. Make a copy of it somewhere, just in case it gets deleted and you need it again. Don’t move the installer.
- Download and Run Unibeast and follow the prompts. Use Legacy boot mode. You’ll need a [free] account on the Tony Mac x86 site to download, fyi.
- Let Unibeast create the thumb drive. This will take about 10 minutes on a USB 3 drive.
- Download and Copy Multibeast to the newly created Unibeast drive.
- You’re now ready to start configuring VirtualBox.
Create the VirtualBox USB Drive Shim
You have a USB thumb drive, but VirtualBox doesn’t make it easy to boot from such a device. You’ll need to create a fake virtual disk that points to the USB drive. This tutorial walks you through it. Here’s a PDF if that link doesn’t work.
In a nutshell, here’s what you’ll be doing in this step:
- Open Disk Management and get the Disk Number of the thumb drive, as shown below
- Open command prompt as an administrator
- Navigate to %programfiles%\oracle\virtualbox
- Run the command
VBoxManage internalcommands createrawvmdk -filename C:\usb.vmdk -rawdisk \\.\PhysicalDrive#
to create the virtual drive pointer
- You’re now ready to create the VirtualBox virtual machine.
Create the VM
Windows won’t allow VirtualBox to use the USB shim you just created unless you launch with administrator privileges. Right-click VirtualBox and select Run as Administrator. VirtualBox should open. Then, follow the instructions on this page. Ignore the download portion – you already have an install thumb drive, and you just want the VM configuration steps. If that link doesn’t work, here’s a PDF.
In a nutshell, here’s what you’ll be doing in this step:
- Create a new Virtual Machine, name it Sierra – although that’s not a requirement – and choose OS X 64-bit as the guest OS. VirtualBox’s settings aren’t fully correct, but we’ll get there.
- Choose 4 GB of RAM. I didn’t test with any other memory configs. So, YMMV if you go another route.
- When asked which drive to use, choose an existing drive, and select the USB shim you created in the previous section. The example above saved the file as usb.vmdk at the root of C:
- You should now have a VM, like every other time you’ve used VirtualBox 🙂
- Add another Virtual Disk to stand in as your Mac’s hard drive. I suggest VDI format, dynamically sized, and 60 GB in size. Ignore that my screen shot shoes 40 GB <grin> In future steps you’ll need to install XCode and Xamarin Studio. Don’t skimp on size here or you’ll be reinstalling later. Much sad.
Note: XCode uses a lot of space when it updates. Don’t skimp on virtual disk size. If that’s a big deal, save the VM’s drive to a location that will have enough space.
Once you’ve added the hard drive, you’ll need to finish configuring the VM. You already have an installer on the thumb drive.
Aside from the defaults, confirm the settings you have match settings below. I’ve also included some screen shots a little further down.
- After performing the steps above, you’ll be using the following settings in your VM:
- System, Motherboard, Base Memory: 4096 MB
- System, Motherboard, Boot Order: Only Optical and Hard Disk checked
- System, Motherboard, Pointing Device: USB Tablet
- System, Motherboard, Chipset: ICH9
- System, Motherboard, Extended Features: Enable I/O APIC, Enable EFI, Hardware Clock in UTC Time, all checked
- System, Processor, Processors: 2 CPUs
- System, Processor, Execution Cap: 100%
- System, Processor, Enable PAE/NX: Checked
- Display, Screen, Video Memory: 128 MB
- Display, Screen, Monitor Count: 1
- Display, Screen, Scale Factor: 100% (you can change this later if you’re on a high-res display)
- Display, Screen, Accelerator: 3D and 2D both unchecked
- Storage: One controller, first item is USB shim, then the hard drive and “Empty” optical drive. The order of those two don’t matter.
After configuring the VM in the UI, close VirtualBox and run the following commands, of which I’ve created a convenient all-in-one script here. You may need to edit it depending on what you named your VM.
These make the appropriate settings to fool OS X to thinking you’re on a real Mac.
cd "C:\Program Files\Oracle\VirtualBox\" VBoxManage modifyvm "Your VM Name" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff VBoxManage setextradata "Your VM Name" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3" VBoxManage setextradata "Your VM Name" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0" VBoxManage setextradata "Your VM Name" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple" VBoxManage setextradata "Your VM Name" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" VBoxManage setextradata "Your VM Name" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
Boot the VM and Install Sierra
Alright, we’re ready to boot! Re-launch VirtualBox as an administrator and start up. After a bunch of Unix style text scrolling, you should see the Apple logo appear and begin to load macOS. If not, something’s configured wrong. Read through the above steps and see what you missed. Of course, things may have changed over time, and this tutorial may no longer be valid. Bummer if that’s the case! Much sad. I want you to be much happy.
NOTE: If things appear frozen during boot, wait a minute. In sanity checking this on another machine with a friend, his seemed to be frozen, and then resumed. A watched installer never boils… [terrible joke]
The instructions for installing Sierra are pretty straightforward:
- When the installer appears, select the Utilities menu on top, then Disk Utility.
- Format the Virtual Hard Disk. I named mine VBox, but that doesn’t matter. Make sure the format is GUID Partition Map and Mac OS Journaled. Do not select the case sensitive option.
- When formatting is complete, quit Disk Utility and you’ll be back at the installer.
- Select the freshly formatted hard drive and start the install process.
- Wait. It took about 20 minutes to install on my 6th Gen Core i7 SSD Surface Book. YMMV.
- Keep an eye on the installer. When it’s done, remove the thumb drive. Otherwise, it’ll boot back into the installer. If that happens, wait for the installer to boot so you don’t corrupt anything, then remove the thumb drive, and restart the VM.
- When the Mac boots back up, follow the prompts. Do *not* use an Apple account – it won’t let you. Make note of the username – it will be in lowercase – you’ll need that when you enter a username and password for Visual Studio later. Don’t worry about the Apple Account issue, though – this won’t affect your ability to install XCode or use the App Store.
- Once setup is complete, shut down the Mac.
- In the VM’s settings, remove the USB shim.
- OS X is now installed.
From this point forward, you no longer need to run VirtualBox as an administrator. Yay!
NOTE: After configuring OS X, you may be presented with a dialog stating the keyboard cannot be identified. Don’t worry – just follow the prompts and you’ll be all set.
For OS X to act as a build server, you must have Xcode and Xamarin Studio installed. Let’s install and configure Xcode first.
To complete this step, do the following:
- Open the App Store on the Mac
- Search for Xcode
- Click Get to install it. You’ll need to enter your Apple account credentials.
- Wait a while – it’s big and takes a while to install. About 30 minutes on my machine.
- Once installed, Launch Xcode, agree to any terms, and let it finish installing components.
- When Xcode is finished configuring, open the Xcode menu, select Preferences, then Accounts, and click the + symbol. Enter your Apple Developer Account details.
- Great! Xcode is configured! Time to get Xamarin set up.
Install Xamarin Studio
Xamarin Studio handles installing the OS X build agent so you can debug apps with Visual Studio, while performing the necessary build and simulation tasks on the Mac. This is required for licensing reasons, and Apple being a closed system for iOS developers. Boo.
Note: Xamarin Studio may be called Visual Studio for Mac by the time you read this.
- First, open Safari – unless you installed something else on the Mac already – and download Xamarin Studio for Mac. This is simple – go to Xamarin.com, and download the installer.
- Open the installer on your Mac from the Downloads folder, and click Open when it warns you that it’s an application downloaded from the Internet.
- Install everything except Android. You can do Android dev on your PC, so I feel there’s no reason to install it again here. Again, YMMV – do as you wish 🙂 This process can take a while due to downloading and installing many items.
- Note: I’m not sure if you need Profiler or Workbooks, so I kept them in there. I’m thinking it’s an insignificant difference.
- Another Note: The installer will say it’s installing Android SDK anyway, not sure why! 🙂 I complained to Microsoft about this – it didn’t make sense to me.
- Once Xamarin Studio is installed, start it and make sure it comes up.
- Under the Xamarin Studio menu item – which may be Visual Studio by the time you read this – select Check for Updates and make sure everything’s up to date.
- Note to Visual Studio 2017 Release Candidate Users: If you’re running Visual Studio 2017 Release Candidate, it [annoyingly] installs and targets the alpha channel of Xamarin. You’ll need to switch to the Alpha channel in Xamarin Studio to match this, otherwise Visual Studio will refuse to compile/build/debug through the Mac instance. A channel switching option is available in the Check for Updates menu to address this issue.
Configure the Mac for Remote Login
In order to connect to the Mac from Visual Studio, we’ll need to open a port on the Mac side. The process is described in this article.
In a nutshell, here’s what you’ll be doing in this step:
- Press Windows-Space, which translates to Apple-Space, and type remote login to open the Sharing control panel.
- Check the box for Remote Login, and select All Users, or at least ensure your user account is in there. You’re on a private network only accessible by your machine, so I see few security issues here. Behind the scenes, this is opening Port 22 for SSH access to your Mac.
Alright, we should be all configured! Let’s switch back to Windows!
Configure VirtualBox Networking and Port Forwarding for Remote Debugging
Now that the Mac is configured, we have to tell VirtualBox how to allow your computer to talk with it. We do this by configuring Port Forwarding in VirtualBox.
- Open command prompt and type ipconfig.
- Take note of the Ethernet adapter VirtualBox Host-Only Network, which may be #2, #3 etc. You want the one with an IP address. Copy that IP address to the clipboard.
- In VirtualBox, open the Settings of your VM, and select Network, then Advanced, then Port Forwarding.
- Add a new rule. I named mine Remote Access.
- For Protocol, choose TCP.
- For Host IP, paste in your host adapter IP.
- For Host Port, enter 22.
- For Guest Port, enter 22.
- For Guest IP, go to your Mac, use Windows-Space to search for Network Utility, and type in the IP that appears there.
Note: It’s possible the Guest IP will change from time to time. This is especially true if the Mac isn’t the only virtual machine you run. If you can no longer connect, check whether you need to update the Guest IP.
VirtualBox is now configured! If you want to verify this, you can launch bash shell on your Windows 10 machine and type ssh username@ipaddress, accept the certificate, and enter your password when prompted. If you can type ls and see your Mac’s files, all is good in the world.
Link Visual Studio to macOS
Alright, hard part’s over. Now we need to configure Visual Studio. The steps for accomplishing this can be found at the same link above, or you can just click here if you don’t want to scroll. There’s also a tutorial in Visual Studio.
In a nutshell, here’s what you’ll be doing in this step:
- Launch Visual Studio.
- Type Control-Q to access the Quick Access Menu, and type iOS Settings. This will take you to the Xamarin iOS settings pane.
- Choose Find Xamarin Mac Agent, follow the prompts to ensure you’ve configured everything properly.
- In Enter Mac name or IP address enter your VirtualBox host adapter’s IP. If everything’s configured properly, you should be prompted to enter your Mac’s username and password.
- If all went well, a lock-like icon should appear next to the IP address, as shown below. If not, make sure the version of Xamarin installed in Visual Studio is the same as that on the Mac. See my note above about Visual Studio 2017 and its Xamarin Alpha Channel issue.
If everything went well, you should now be able to do all your Windows and Xamarin / Mac development on one machine!
Please provide feedback in the comments. Enjoy!
Tips / Updates
- If you’d like to tweak the video resolution, you can follow this article. The command is:
VBoxManage setextradata "VM name" VBoxInternal2/EfiGopMode N Where N can be one of 0,1,2,3,4,5 referring to the 640x480, 800x600, 1024x768, 1280x1024, 1440x900, 1920x1200 screen resolution respectively
- My goal with this article is to build a machine for building a build/test VM. I am not trying to replace a Mac environment for doing lots of work on the Mac side of things.
Tags: 3D Scanner, 4R Energy Freedom, battery, Components, Digital Imaging, Fujitsu, Health and Household, Home Entertainment, Honda, Industrial Design, Mobile Technology, NEC, Panasonic, Smart Community, software, Transportation, VDP, VRC
Every year, the CEATEC Innovation Award recognizes the most promising technology at the Consumer Electronics And Technology Conference, Japans largest trade show of its kind. This year’s nine categories were taken under the wing of 7 judges, comprised of prominent U.S. journalists and industry advisors, who explored the entirety of the show to find what technologies are making, or will soon make, a difference in people’s lives. I was again honored to serve as a judge on the panel, and as one of the founding members, and it’s absolutely overwhelming the professionalism and depth of knowledge the other judges possess and use during this annual event.
Tags: 3D models, 3D printed car, 3d printing, 3D scanning, Aroma Shooter, AromaJoin, bendable battery, Blincam, BOCCO SIM, Body Cam, CEATEC, Epson, eyewear, Hobot, Honda, law enforcement, NEC, Omron, Panasonic, PaperLab, police, recycling, robot, scent device, speech impediments, table tennis, video analysis, VoiceITT, VRC, window washing, Yukai
Want to see of the latest and greatest tech before it hits our shores? Then hit CEATEC, Japan’s largest consumer electronics trade show, held in Makuhari Messe every year in October.
Below are some of the highlights from the first day of the show. If you want to see all the videos I’m taking at CEATEC 2016, which cover many items I’m not writing about, take a look at my YouTube playlist.
Yukai BOCCO SIM Robot
Yukai showed their BOCCO SIM robot, designed to sit in the home and notify occupants of events. New this year is a sensor to detect a door locking and unlocking, so you know if someone left the home unprotected. Users can also leave messages for others when they arrive home. The robot cannot differentiate between user voices. The $240 product is available on Amazon and the $35 sensor should be coming soon.
Honda 3D Printed Car
Honda showed off a 3D printed vehicle, using their Vehicle Design Platform. In tandem with cookie company Toshimaya, and design firm Kabuku, the shell of the battery-powered vehicle was 3D printed, and placed over the chassis provided by Honda. The shell is made from ABS plastic, and in the photos you can see the polished, finished surfaces versus those needing a final pass. Printing took 1 month, occurring 24×7, using a Stratosys Focus 900 printer, one of the largest in the industry. The vehicle utilizes a motorcycle-like pipe frame, has an 80 kilometer range, a large lithium ion battery, and a small cartridge battery for adding extra range 15 kilometers at a time.
Omron Table Tennis Robot – Now with Player Skill Recognition
Omron’s Table Tennis robot was a hit last year, beating its human challengers handily. This year, the system can detect a player’s skill and curb its own abilities when playing. We were also treated to watching the device break its arm, and the engineers had to come out and fix it. Omron’s solution has been recognized as the first robot table tennis tutor. Unexpectedly, it does not recognize different players, nor does it use deep learning, so it doesn’t get any better as it plays.
NEC Police Officer Body Cam Video Analysis System
NEC showed off their Security Guard Support Solution, which works in tandem with vest-worn law enforcement cameras. The system can extract faces in the video feed and send them to an officer’s smartwatch for suspect identification, assisted by facial recognition. Accuracy detection rate is 90%. NEC also showed how it can compensate for low bandwidth or unpredictable network coverage with a blur compensation algorithm that appeared to greatly enhance the video playback quality and smoothness.
Rakuten ZapZap Word Cloud Shopping Assistant
Rakuten, the largest online retailer in Japan, again showed advanced customer assistance technologies at this year’s CEATEC. One, the ZapZap, enables a customer to place a book on an enhanced table, and see keywords from that book begin to hover around the cover. Tapping a word brings up a related passage from the book to ease browsing. The solution uses an RGBD camera, basically RGB plus Depth, to provide this service.
Panasonic Bendable Battery Prototype
Panasonic showed off a prototype bendable lithium ion battery solution, capable of bending and not losing any power from the process. This package could enable batteries in watch straps, hats, and many wearables. The largest cell was 60 mAh. Samples will be available in October. You can see the bendability in the video below.
Panasonic Listnr Baby Talk Recognition App
Japan faces an increasing number of two-working-parent households. Keeping track of a baby’s needs is more difficult when mommy and daddy aren’t home. Panasonic’s Listnr device listens to and recognizes a baby’s sounds and sends alerts to an app reporting whether baby is happy, sad, angry, and so forth. You can see the interface in the photos below. The system is already available on Amazon.
Hobot Window Washing Robot
Hobot showed off their latest window cleaning robot, the Model 198. Like their other units, the system must be plugged in to run. If disconnected from power, it can stay stuck to the window for up to 20 minutes before falling. However, it stops cleaning when that happens. Not sure of the point, but it was cool to see a window washing equivalent of the Roomba, even if it wasn’t nearly as well thought out.
Epson PaperLab In-Office Paper Recycling Plant
Why send your paper out to be recycled when you could do it yourself? Epson’s PaperLab is about 9 feet wide, 6 feet high, and 5 feet deep and fits in a decently sized copier room. Feed it paper and it shreds it, removes all text, and within 3 minutes it will have recycled that paper. Once the system gets going – that 3 minute startup period – it can churn out 14 A4 size pages per minute. Choose the color of paper you’d like, its weight (thickness), and even add an optional scent, and voila – paper from paper. The system will be released in Japan this year. There is no water or waste, due to Epson’s proprietary Dry Fiber technology. Price unannounced, but it’s going to be “affordable” according to an Epson representative.
The recycling process is as follows:
- Insert Waste Paper
- Restore Paper to Fiber Form
- Use Binders to Bind Paper and Increase Strength and Whiteness
- Pressure Form the Paper, optionally mixing CMY to change color, and/or add scent
- New Paper is Ready
VoiceITT Speech Impediment Correction App
VoiceITT showed their TalkIT app for those with speech impediments. If you stutter, slur your speech, or have some other impediment, the solution clears up your speech in realtime so people can better understand you. VoiceITT is targeting those with autism, brain injuries, Parkinson’s, cerebral palsy, MS, strokes, ALS, and throat cancer, among others that affect a person’s normal ability to speak clearly. Quite fascinating in my opinion. The startup has already raised over $750K in funding. See the video below for an example.
Blincam Camera for Eyewear
I often find myself wishing I could take a photo of whatever I’m seeing at the moment without whipping out my camera. Some cool bird, a funny shirt or license plate, anything – and the moment is right and easily missed if only a few seconds pass. ShapChat has their Spectacles product coming with a built-in camera to address such a need. However, if those loud, bright, and slightly cheap-looking, shades aren’t your thing, Blincam may be exactly what you’re looking for. The device attaches to practically any pair of eyewear, and takes a photo when it detects you’ve blinked. Resolution is only 1920×1080, but that’s good enough for an Instagram/Snapchat/Facebook upload.
VRC’s Lightning Fast Full Body Scan 3D Model Generator
VRC showed off their CVS – Virtual Reality + Creative – 3D model scanner. The solution can take photos in 4 seconds of any 3D object, and within 2 minutes it will have a full 360 degree render of the subject. That’s 30x faster than existing systems, which take 1-2 hours to perform the same task.
Aroma Shooter Wearable Scent Transmitter
AromaJoin’s Aroma Shooter showed a scent transmitting wearable that can send quickly multiple scents in specific directions without switching cartridges. This overcomes a common issue with “scent” solutions – often they only contain one scent at a time, run slowly, and are relatively pointless. The AromaShooter solution is quick and directional, so it can send different scents to multiple surrounding recipients, with effectively no overlay. So, whatever it is you’re smelling, your neighbor wouldn’t. I can think of a few uses for that one!
The full size Aroma Shooter holds 7 cartridges and can switch in 0.1 seconds, the fastest of its kind. The Aroma Shooter Mini holds 1 cartridge, and can be placed on any metal surface due to its magnet. All products use Bluetooth LE. 200 scents are available so far.
AromaJoin will begin its Kickstarter campaign in May 2017.
Tags: ALPS, CEATEC, Components, consumer electronics, Fujitsu, Internet of Things, IoT, Japan, laser eyewear, LiveTalk, machine health, Makuhari, Murata, Ontenna, palm vein detection, robots, trade show, traffic counter
CEATEC is Japan’s largest consumer electronics trade show, and is similar to our state-side CES. Held in Makuhari every year, the show boasts over 100,000 attendees and hundreds of vendors, showcasing the latest technology in everything from fully manufactured consumer-ready products to the individual components necessary to build them.
As a judge on this year’s Innovation Awards, I had the opportunity to tour the show floor and get a first look at some amazing tech before the public stampedes the halls looking for the same.
Fujitsu’s Emotion Sensing Robot
Just look at the video… Skynet is coming.
ROHM “Machine Health” Solution
Next Generation Lazurite ORIZURU Flying Crane
ALPS IoT Smart Module Package
Murata Traffic Counter System
Fujitsu Palm Vein Verification
Fujitsu Global Security Management and Hacking Demonstration
Fujitsu Laser Eyewear
Fujitsu Smart City
Fujitsu LiveTalk Realtime Language Translation
Tags: City of Fishers, coding, CrimeWatch app, Eleven Fifty, law enforecement, learning to code, software developing, technology
I recently penned a blog post for Eleven Fifty Academy about how the Crime Watch app came to be. I meet aspiring developers all the time, many with great ideas they want to bring to life through code.