• Skip to main content
  • Skip to footer

InRhythm

Your partners in accelerated digital transformation

  • Who We Are
  • Our Work
  • Our Culture
  • Events
  • Testimonials
  • Blog
  • Contact Us

Sandro Pasquali

Apr 12 2019

Virtually Real or Really Virtual


“Am I a man dreaming I am a butterfly, or a butterfly dreaming I am a man? Between me and the butterfly there must be a difference. This is an instance of transformation.”
– Chuang Tzu, 4th century BC

Escapism is perhaps the most addictive vice for your average wetware human being. Ever dream? Ever wished you were stronger or smarter or cuter? There’s probably a pill for that. There’s also a fancy pair of glasses you can buy with a mouse click that will transform you into a Stygian Prince or a butterfly, bestow you with 10 charisma or turn you into whatever it is you are not (and want to be).

In our cranium sits a virtual reality machine connected to our eyeballs and other sensory apparatus, and the great thing about our brain is that it’s both in the deception business and a real sucker. Your brain is easily fooled; all it takes is a little stimulation. There is a long history of people and companies who have worked to construct our felt reality through control of what, and how, we perceive. Let’s take a look at the history of Virtual Reality (VR) machines, and trace our stumble towards the Oculus Rift and the Lenovo Mirage.

Stereoscope (1838)

Antique stereoscope

A stereoscope is a device for viewing a stereoscopic pair of separate images, depicting left-eye and right-eye views of the same scene, as a single three-dimensional image. Our brains already do a lot of post-production work to process the sensations those two marbles in our skulls produce, so why not exploit that fiction to flood our visual landscape with three-dimensional extrusions of black-and-white pictures of people wearing funny clothes?

View-Master (1939)

Red viewmaster device

The View-Master system was introduced in 1939, four years after the advent of Kodachrome color film made the use of small high-quality photographic color images practical. Tourist attractions and travel views dominated View-Master’s lists of available reels, an early hint at how strong our desire to “virtually travel” is. Unlike many of the early attempts at VR, the View-Master has managed to maintain its charm, leading to a new version built for the modern, goggle-driven VR world.

Sensorama Simulator (1962)

black and white image of man in Sensorama device

This magnificent construction was a machine that played a 3D film accompanied by stereo sound, aromas, and wind in order to create an immersive sensory environment. It was one of many 3D-related creations that visionary inventor and cinematographer Morton Heilig gave the world. His ideas for adding layers of sensory stimuli to augment a simple cinema presentation led the way towards today’s “virtual reality” experiences. Rama-lama-bing-bong-whoosh. Heilig also invented the first head-mounted VR experience, the Telesphere Mask. Ever hear of him? No? Now you know what “forgotten genius” means.

The Sword of Damocles (1968)

Man wearing Sword of Damocles VR device

Widely considered to be the first VR and augmented reality (AR) head-mounted display (HMD) system. It was created in 1968 by “The Father of Computer Graphics” Ivan Sutherland with the help of his student Bob Sproull (who later did things like work on inventing the personal computer and the laser printer while at PARC). Given this sort of brain-trust and explosive innovation, it isn’t surprising that it was anticipated that true virtual reality would become a real reality very soon. As soon as some of the, um, practical difficulties were solved.

Tomytronic 3D (1982)

Tomytronic 3D device with box

The Tomytronic 3D was a series of portable, handheld gaming devices produced by Takara Tomy Co. Ltd. The device featured a strap so the player would be able to wear it around their neck between uses. The Tomytronic simulated 3D by having two LCD panels that were lit by external light through a window on top of the device. Released in 1983, it was the first dedicated home video 3D hardware. Given that this was nearly 40 years ago, that a small, cheap, almost-good-enough consumer VR product was produced at all shows how excitement around this tech has never been in short supply.

Virtuality Group (1993)

Man using VR gaming machine

Virtuality produced a line of virtual reality gaming machines built to fill video arcades in the early 1990s. The machines delivered real- time (less than 50ms lag) gaming via a stereoscopic visor,  joysticks, and networked units for multi-player gaming. The technology and gameplay with this system was pretty darn good—the problem was that they hitched their pixelated wagon to arcades just when that entire industry was about to be eclipsed by the rise of home video gaming systems.

Virtual Boy (1995)

Virtual Boy gaming device

A 32-bit table-top 3D video game console developed and manufactured by Nintendo, the Virtual Boy was marketed as the first “portable” video game console capable of displaying “true 3D graphics” out of the box. A perennial innovator, Nintendo unfortunately stretched their ambitions a little too far on this one. Nevertheless, by the time we got to the Wii it was clear that there was a real demand from consumers for something to take them (at least a little) outside of reality.

Oculus (Now)

Oculus VR device

Technology is starting to catch up. New breakthroughs are occurring every week. Early adopters are eager to jump on board. Think of how the social web opened up the internet to the masses—everyone jumped in, including (in not-insignificant numbers) Baby Boomers. VR—after many exciting short flights and spectacular crashes—may have finally have found just the right mix of price point and technology.

In addition to entertainment and advertising, expect to see huge VR growth in these key industries:

  1. Tourism. The strong market for “virtual tourism” that the View-Master stumbled into discovering is already being catered to via experiences like “The Wild Within…an interactive, 360* video that allows travelers to experience the pristine coastal wilderness of British Columbia, Canada in a truly immersive way.” Or how about the “Marriott Teleporter,” which frees guests of the hotel chain to “travel” without packing a bag. Remember Sensorama? Check this: “They were taking inventory of the breeze, the sea spray and sensations like that…so we’ve used mechanical elements like industrial grade misters and fans in the Teleporter to recreate those sensations. It’s like an amusement park crammed into a closet.”
  2. Healthcare. VR exposure therapy allows patients to confront their phobias and fears, helping them cope with a myriad of conditions: fear of flying, fear of heights, fear of public speaking, agoraphobia, arachnophobia, social phobia, panic disorder, and posttraumatic stress disorder due to motor vehicle accidents. VR is even being used to treat those with phantom-limb pain. Researchers at the University of Washington Human Interface Technology Laboratory have created “SnowWorld,” a brain-tricking snowscape that helps burn victims during bandage changes and wound cleaning – excruciatingly painful experiences that traditional pain-killers like morphine do little to assuage. VR is even being used to train surgeons, to the relief of cadavers everywhere. It’s clear that this technology is delivering real, transformative, benevolent good for many.
  3. Skilled Trades. With the cost of education rising, and access to good trade schools disappearing for many, VR offers new opportunities to learn at a much lower cost, and from anywhere. For example, those training to be welders are doing so virtually in greater numbers. Picking up from the times of flight simulators (another very early “VR” use), simulations are being used to train people to do dangerous jobs without putting them in dangerous situations. In general VR, may do enormous good by opening up education for many who simply do not have access to it today.

Written by Sandro Pasquali · Categorized: InRhythmU, Learning and Development, VR · Tagged: AR, oculus, virtual reality, VR, vr gaming, vr headsets

Mar 01 2019

Shape the Future of Web Engineering with Us

My relationship with InRhythm began about 4 years ago when I did a Node.js workshop with the team. I was impressed at how the CEO, Gunjan Doshi, kept in touch, regularly checking in with me over the subsequent years. When the opportunity to collaborate happened, I jumped at the chance.

By then the company that had grown in size to nearly 150 consultants. Approximately 50 of those are web engineers; in my role as the Web Practice Lead, I work tirelessly to supply this team with mentoring, tools, connections, and anything else they need to succeed. I do this with the aim of preparing engineers for opportunities after InRhythm when what they learn here brings them success there. We maintain long-term relationships with our people after they leave because we’re genuinely invested in their career success. The strength of that community is what sets us apart.

JavaScript is eating the world of software and there’s no doubt that web development is going to continue to grow and expand in complexity. The continued acceleration of innovation in the Web sphere—from React to WASM—is an incredible validation of the field. Anyone using a phone or a laptop or a tablet is using software a web engineer built.

For me, Web Engineering is the most exciting type of software development, unlike any other—multidisciplinary, blending the hardest engineering problems with design-based thinking. A full-stack web developer might work on an AI algorithm and its human interface on the same day. I regularly receive calls from teammates working through a new perspective on an old idea, reminding me of just how innovative the practice of Web Engineering remains.

When you join the Web practice you’ll join a team that works on some of the most advanced systems in the world, with some of the largest organizations in the world. I’m amazed when I learn about the incredibly exciting and complex software our team is building. It’s my job to ensure that they—and you—are ready to learn and grow in that environment. As we look toward the future of web engineering, it benefits our company and our consultants to stay in the know.

All of this knowledge culminates in InRhythm University, a learning and growth program developed through inter-team collaboration and client outreach. The InRhythm University curriculum is comprehensive, and in keeping with our company’s mission everyone who joins InRhythm gets this education for free. Check out an overview of the kind of curriculum we offer for our consultants to take their skills to the next level:

Section 1: Computers!

Space and Time: Big O Notation

You cannot excel as a developer if you cannot state clearly and scientifically the cost of your code in terms of space (memory) and time (how long will your function take given 1000 items? How about 1 billion?).

Bits and Bytes: Bitwise Manipulation

Developers push bits and shove bytes around. You probably know about flipping bits between `1` and `0`, and what it means when someone says “megabyte.” Do you know why 1^1 === 0? There are a lot of powerful ideas to apply once you do.

Concurrency

Looking to learn more about using generators, callbacks, Promises, async/await to manage asynchronous workflows with JavaScript? Good! Managing concurrency is perhaps the most important concept to learn when building on modern systems. You’ll need to master it. We show you how.

Functional Programming

You don’t have to learn Haskell to understand functional programming. You can use JavaScript right now to engage with the extremely powerful ideas present in functional programming flows. You’ll learn about pure functions, side-effects, immutable data, and (probably) become a better programmer.

MVC and Classic OO. Bonus: How JS prototypes fit into this.

Can you easily describe the difference between prototypal and classical inheritance OO ideas? You should. You will. By modeling complex scenarios in both paradigms you will learn the pros and cons of each approach, and more importantly, learn how to choose between them.

Data Structures and Algorithms

Software engineers are largely becoming data engineers. Managing application state, immutable or otherwise, is no longer something other people worry about. That means you will need to understand the kinds of data structures and efficient mutation algorithms the smart people in the CompSci room have developed to help us do our jobs.

Trees and Graphs

Folders and files. You know about those kinds of trees. If you’ve used an outliner someone wrote a graph traversal algorithm for that; you’ve probably written one if you’ve ever walked a directory. Ever use Bitcoin? Here we focus on these specific data structures. This is one of the most powerful, and frankly fascinating, pure computer science topics every engineer should get a handle on.

Section 2: The Modern Web Stack

The DOM

No matter how elegant the abstraction of your build pipeline or transpiler or template system is, what it produces is always going to be the same: HTML, JavaScript, and CSS, all linked together within the Document Object Model that your browser or other Web View must process and render. If you do not understand, at a deep level, what is happening when a DOM is built or updated or otherwise modified you, fundamentally, do not understand Web Engineering. Those who master this section do.

Deep JavaScript

Time to dig into the docs. No, really. We’re going to go through the fundamental ideas that power the JavaScript language. You’re going to learn about execution contexts and scopes, and how and why those exist, to create the JavaScript language that we’ve all come to know and love.

Deep Node

JavaScript is on the server now, have you heard? It’s true! NodeJS frees up all the skills you’ve learned about events and event loops and gives you superpowers on the server. Want to write a command-line tool to do automatic deploys? How about building a text parser that powers a chatbot? How about building APIs used by dozens of teams spread across the globe speaking multiple languages? This is the beginning of the path to going full-stack.

Deep React

Time and time again our clients come to us and ask for modern React engineers. We have some of the best. We even do workshops with companies to level up their teams. You’re going to get to the level they want to reach by working through this section.

Debugging and Testing

Did you know that you can link a Node server to DevTools such that you can debug live code and even trace performance of your server code down to the function level…in your browser? Know the difference between unit tests and functional tests? Still using console.log for everything? There are options. You will learn to effectively test software and squash bugs and your life will be better for it.

The Network

Do you know what happens when you enter a URL into a browser? Do you read network packets when debugging API failures? When is a REST architecture appropriate? Cookies or tokens or something else for identity management? Access management? When is caching appropriate, and what is latency anyway? You must burn this knowledge into your bones if you are to build modern, distributed systems. Let’s get started.

Forward!

Every graduate of IRU has mastered the technologies and techniques that we know work at the highest levels of industry through continuous repetition of this process. The IRU program teaches students actionable skills through real-world scenarios. Using proprietary internal development tools, IRU simulates realistic client problems (not half-implemented “TODO” applications or “Hello World” demos) which students work through under the guidance of our senior trainers. Our engineers are given the thinking tools they need to:

1.  Intelligently analyze complex systems to find weaknesses and inefficiencies.
2.  Create a range of solutions and intelligently determine both the right solution and the right success criteria.
3.  Model and test the solution in collaboration with all stakeholders to validate the solution
4.  Analyze the results, measure against success criteria, and restart the process on failure.
5.  Standardize success into repeatable guidelines and share that knowledge with all stakeholders
6.  Repeat this process, without fear of revisiting old successes (the status quo).

The responsibility of transforming digital businesses requires earning buy-in for change from our clients and consultants. At InRhythm we empower the creativity of our people—we don’t accept the status quo. Perfectionism is not our goal; continuous improvement is. We believe in adaptive change, especially when it comes to growing the careers of our consultants. I am similarly focused on ensuring the growth of those in my practice, both as engineers and colleagues, to make us all better representatives of InRhythm and our industry.

Ready to take your skills to the next level? We’re hiring. I hope to hear from you soon.

 

Written by Sandro Pasquali · Categorized: Culture, InRhythm News, InRhythmU, Web Engineering

Feb 25 2019

Iterate Your Way to Success

“A learning experience is one of those things that says, ‘You know that thing you just did? Don’t do that.’” — Douglas Adams, The Salmon of Doubt

Here’s a thinking tool: when you’re having difficulty finding a solution, guess. Then you have something to work with.

In other words, when you don’t know what to do next, oversimplify and self-monitor. Iterative development strategies like The Agile Method are just versions of this idea. It’s also fundamental to many machine learning (or AI) strategies.

Daniel Dennett once gave a nice breakdown of how evolution works:

How To Create a Chicken:

1. Take a dinosaur
2. Let it replicate
3. Select for flightworthiness
4. Repeat steps 1-2-3
5. Repeat step 4
6. …until you get a chicken

The thing about evolution is that nobody really knows what will be selected for, or how future conditions will impact individual survival, or just how all of that will produce chickens or ocelots or the particular way an owl turns its head. There is no intelligence to it — it’s a thoughtless process. The lesson is to keep moving, to keep iterating. Progress is always better than stagnation.

The great news is that you are an intelligent designer. You can observe and change reality at will; you need not wait on randomness to discover working designs—but don’t be afraid to guess. The mistake is in assuming that you’re designing the perfect final state of a solution (complex) instead of the first working state (simple).

Try to promote continuous improvement through ongoing positive change, keeping on an open mind about unconventional solutions. Foster a culture of accountability, have a clear purpose, and keep checking if you’re any closer to your goal. Trust that useful properties will emerge out of creative interactions, in unpredictable ways. Be open to surprises:

1. Intelligently analyze complex systems to find weaknesses and inefficiencies.
2. Create a range of solutions and intelligently determine both the right solution and the right success criteria.
3. Model and test the solution in collaboration with all stakeholders to validate the solution
4. Analyze the results, measure against success criteria, and restart the process on failure.
5. Standardize success into repeatable guidelines and share that knowledge with all stakeholders
6. Repeat 1-5, continuously.
7. …until you get a chicken (Okay, maybe not a chicken. But you get the point.)

At InRhythm, we work tirelessly to ensure that our engineers are prepared to succeed in any engineering culture. Our training program, InRhythm University (IRU), is designed to ensure that every graduating engineer has mastered the technologies and techniques that we know work at the highest levels of the industry through continuous repetition of the above process. As we continue to train and teach new engineers through IRU, we will also continue to pass along what we learn. Keep learning and keep growing.

 

Written by Sandro Pasquali · Categorized: InRhythmU, Learning and Development, Software Engineering

Nov 19 2018

WebAssembly Will Change the Way You Code

WebAssembly (WASM) is a new type of code that runs in browsers. Previously, developers of browser-based web applications had only one choice of programming language and/or environment: JavaScript. This was good and much gold did the people earn; nevertheless, some weren’t happy that they had only one choice. WASM is here to change that. WASM, according to Mozilla, “is not primarily intended to be written by hand, rather it is designed to be an effective compilation target for low-level source languages like C, C++, Rust, etc.” This is the key point. You can now write “web scripts” using the language of your choice. That’s huge.

Is WASM trying to kill JavaScript? No, says the inventor of JavaScript, Brendan Eich. The goal of WASM is to enable a more linguistically-diverse development ecosystem delivering extremely fast (native or near-native speed) code through efficient compilation and parallelization (the ability for web software to take advantage of multiple processors). More huge.

This last point is maybe the most important. InRhythm engineer Will Bratches pointed out in a recent lightning talk that increases in speed are no longer achieved at the chip level—Moore’s Law is no more. What we do now is spread work across cores, leveraging parallelization and managing concurrency. Client-side JavaScript is not designed for that world. New languages like Go and Rust are. WASM unifies the two. 

Here comes the “hello world!” moment. Head over to WebAssembly Explorer—it’s sort of a CodePen for WASM. On the left panel, paste this code:

int plusOne(int num) {
return num + 1;
}

Next, click “compile”. You’ll see something like this:

WASM WebAssembly Screenshot

Yes, that’s assembly code on the right (I know!). A more human, readable version is in the center column, the WAT view, which you can read more about here.  Just scan through it—you’ll see our function name plusOne represented as $_27plusOnei. You’ll also see that we’re establishing 32-bit integer parameters, setting their scope to “local” and so forth.  You can, for example, see how the assembly code  (add)s one to the (ex)tended (a)ccumulator register for 32-bit numbers:

add eax, 1

…is represented in the WAT:

(i32.const 1)

You can now hit the “download” button, which will deliver a .wasm file.  That’s really it—you have the WASM binary to use. There’s a tiny bit of work you have to do to compile the WASM so it works in your browser. The easiest thing to do is clone this simple example and load the index.html in your browser. Check the console. Now read through the code.

There’s a lot more to this subject, so start exploring. You’ll be creating first-person shooters in your browser in no time!

Written by Sandro Pasquali · Categorized: Learning and Development, Product Development, Software Engineering

Oct 22 2018

How Can I Help? Good (And Not so Good) AI Design


A fantastic Greek place in Williamsburg double-billed me last week. These things happen. Thankfully, nowadays I find out about strange activity on my account pretty quickly, and can act on it just as fast, with no need to wait on hold. The tools engineers like us build, like the live chat option on my bank’s mobile app, can be fantastically helpful. A simple process opens up the chat screen wherever I am:

“I was double-billed by Ela Tavern and want to dispute one of the charges”

“Do you mean this charge?
Ela Tavern – 10/6 – 45.60
Ela Tavern – 10/6 – 39.72”

“Yes” (Wow, that was fast.)

“Can you tell me which charge you are disputing?”

I explained the situation, where a slight language barrier during our initial order call turned into us getting a call back, where we gave our card number again and presumably were double-billed in error. I also said I’d prefer to dispute the higher charge, but would be happy to pay either (but only one).

“Can you help me understand which charge you are disputing?”

That response surprised me. How dull. “Wait a minute, is this a bot?” I thought to myself. As someone who builds bots, it was exciting to see one in action. As Oscar Wilde might have said, the suspense was terrible and I hoped it would last.

“The 45.60 charge”

“Thank you!”

…

“Is there anything else I can help you with?”

“Can you pay my bill this month?” I was curious to see just how capable this bot was.

“I cannot help you with that.”

“Oh well. Can you help me with something else?”

“Of course!”

“My card is cracking and I think I need to replace it. Can you send me a replacement card—not a new number, just a replacement”

“I can help you with that. Your new cards are in the mail. They should arrive in 7-10 business days. Is there anything else I can help you with?”

“Wow, that’s awesome. No, thanks!”

At this point multiple paragraphs of rather formal text were displayed, written in the first person. “It is my honor to have served you” (honor?), “You are a valuable asset to XXX bank” (asset?), and so on.

I told my wife about the experience: how impressive the bot’s parser was, how I used pretty natural language and it quickly picked up my intentions. I know it can be difficult to consistently get that right. She, of course, was glad our new cards were on the way.

Happy as a clam, I went to get my hair cut. David, my barber, was waiting. I told him the story.

“That’s cool”

“Yeah, I mean the whole thing with the smiley face and joke was lost on it but it knew where I was going”

“Uh huh”

“Pretty great, right? The bots are coming!”

“Just like in The Terminator”

“Yeah, I guess so”

Things got more interesting when I tried to pay for my haircut: my card was declined.

“Ha, it’s probably the cracked card. Had to happen sometime!”

“Ok”

“Here, try this one”

“Ok”

“Yeah, this one will work”

“Ok”

Walking out with my receipt, while trying to convince myself that it really was the physical damage—and not that stupid bot—I got a message from my wife:

“FYI: credit card was deactivated by the bot. Spoke w rep and she said chat can’t replace card only send new card w new number. She expedited the cards—should have them by Tuesday. Also giving us 1000 points”

A cautionary tale. Just that morning I was praising it, and now this bot was mucking up my life. What if I didn’t have another card? In a perfect world, AI continues to make our life better. While things have certainly improved, the process has its fair share of hiccups (and deactivated credit cards). Forget dystopian science fiction about the rise of the machines; smart AIs aren’t what we need to worry about, it’s the dumb ones we need to watch out for.

Written by Sandro Pasquali · Categorized: InRhythm News

  • Go to page 1
  • Go to page 2
  • Go to Next Page »

Footer

Interested in learning more?
Connect with Us
InRhythm

140 Broadway
Suite 2270
New York, NY 10005

1 800 683 7813
get@inrhythm.com

Copyright © 2021 · InRhythm on Genesis Framework · WordPress · Log in

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Cookie settingsACCEPT
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.

Necessary Always Enabled

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Non-necessary

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.