Dennis Ritchie invented C in 1972, co-built Unix in 1969, and his code is running inside every device you are reading this on right now and the colleague who announced his death had to do it through a Google+ post because no journalist thought to check.
He worked at Bell Labs in New Jersey for 44 years. He never gave a keynote. He never ran a company. He never appeared on a magazine cover. He just wrote code that became the invisible foundation everything else is built on.
Here is what he actually built, and why it matters more than almost anything that happened in tech.
In 1969, Bell Labs had just walked away from one of the most ambitious computing projects in history. The Multics project, a joint effort between MIT, Bell Labs, and General Electric, had collapsed under its own weight. Too complex. Too expensive. Too slow. Bell Labs pulled out.
Ken Thompson and Dennis Ritchie refused to let the ideas die.
Working in a small office in Murray Hill, New Jersey, Thompson wrote the first version of Unix in three weeks during the summer of 1969. One week for the file system. One week for the process management. One week for the command shell. Ritchie was working alongside him, and when the system needed a language that could express what they were building, he built one.
In 1972 he completed C.
C was not just another programming language. It was a different philosophy about what a programming language should be. Before C, most systems code was written in assembly, which meant every program was tied to the specific hardware it ran on. You could not move code between machines. You rewrote it from scratch every time.
C changed that. It sat close enough to the hardware to be fast, but abstract enough to run on anything. When Thompson rewrote the Unix kernel in C in 1973, it became the first operating system that could be picked up and moved to a completely different machine without starting over. Portability was a new idea. Ritchie made it real.
The branching that followed is almost impossible to overstate.
Unix spread from Bell Labs to universities. At Berkeley, it became BSD. BSD became the foundation of macOS and iOS. Unix influenced Linus Torvalds, who built Linux in 1991. Linux now runs every Android phone, every major web server, every supercomputer on the Top500 list, and the overwhelming majority of cloud infrastructure at AWS, Google, and Microsoft.
C became the parent language of C++, Java, JavaScript, Python, and Objective-C. Rob Pike, who worked across the hall from Ritchie at Bell Labs for 20 years, said it plainly: "The browsers are written in C. The Unix kernel that the entire internet runs on is written in C. Web servers are written in C, and if they're not, they're written in Java or C++, which are C derivatives, or Python or Ruby, which are implemented in C."
Ritchie won the Turing Award in 1983. He won the National Medal of Technology in 1998, presented by President Clinton. He was head of System Software Research at Bell Labs for decades.
He answered emails from strangers with technical questions until the end of his life. His home address stayed listed in the phone book. His colleague Brian Kernighan, who co-authored the definitive C textbook with him, said Ritchie was a private person who did no self-salesmanship. That was not false modesty. It was just who he was.
He died on October 12, 2011, at his home in Berkeley Heights, New Jersey. He was 70. He had been ill for some time. The world did not notice until Rob Pike posted a quiet announcement on Google+, and the news spread through the programming community in hushed tones.
No front pages. No tributes from heads of state. No candlelight vigils outside corporate campuses.
The device you are reading this on runs code that traces directly back to what he built. So does the server that delivered it to you. So does the browser or app you opened to get here.
Most people will never know his name. The ones who built everything you use every day do.
A/N: hello! hope you guys like this! happy reading <3
anon requested: Hi Kass! Could I request a super fluffy clingy Nat that’s trying to take her girlfriend shopping for video games and completely geeks out about like collectibles, games and other stuff? If you’re okay with it of course.
Summary: Y/N supports Natasha’s gaming addiction, despite not being a gamer herself.
Word Count: 1.5K
| masterlist | request rules/guidelines | wips |
please do not repost or try and take ownership of my work. reblogs, likes, and comments are always welcome. <3
“Come on, babe!”
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
You rolled your eyes as your girlfriend, Natasha, pulled you by your hand and towards a store, GameStop, to be exact.
The redhead has always had a love for video games, which surprised you, in all honesty. It wasn’t exactly the fact that she was a gamer that shocked you, it was more like her favorite game was an unexpected one; Minecraft.
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
Yeah. Natasha Romanoff, the world’s deadliest assassin, absolutely loved to play Minecraft.
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
She had a thing for creating various buildings in survival mode. There was something soothing about going out and finding supplies to use that got your girlfriend all excited.
Natasha played the game on the computer you had in the living room of your shared apartment, not having a game station of her own. So, you took the liberty of buying a brand new PS5 for her just because. Now, the redhead was on the hunt for a PlayStation Store gift card to purchase the BedRock version of Minecraft.
Truthfully, you didn’t know the difference, regardless of how many times Natasha had tried to explain it to you. Although you tried to understand it, considering how much your girlfriend adored the game.
“So… what’s the difference between the one on your computer and the one you’re trying to buy from the online store?”
You questioned your girlfriend as she dragged you towards the gift card section, her eyes scanning the plethora of cards for the one she needed.
“The Java Edition is the original version of the game that was created for PC users, which is the one I’ve been using. You can do multiplayer with other PC users.
You nodded your head as she spun around the gift card stand, her other hand still firmly holding your own.
“The BedRock Edition is for gaming consoles. This version allows cross-platform multiplayer mode, which means I can play Minecraft with anyone, regardless of their console.”
Her eyes lit up when she caught sight of what she had been looking for.
“Considering there hasn’t been a release of Minecraft for the PS5, I have to purchase it online, with this gift card.”
Natasha smiled triumphantly when her eyes landed on what she was looking for. She selected the card and proudly presented it to you, a wide smile spread across her face.
“Ta-daaa, my ticket into the realms.” Natasha scrunched her nose up while lowering her voice into an ominous tone. You couldn’t help but let out a small giggle at her antics.
“Is there anything else you want, nerd?” You looked around the busy store. God, there were so many weird people here, nerds.
“Okay, first of all… I’m a geek, not a nerd. If you’re gonna do something, do it right.” Natasha sassed and you raised your eyebrow at her as she began to pull you towards the collectibles section, not before shoving the gift card into your free hand.
“Potato, patato.” Natasha flipped you off, lifting her middle finger up behind her back as she guided you through the busy store.
You let out a chuckle, then suddenly, Natasha let go of your hand and practically ran towards your destination.
“Babe! Look!! It’s a baby panda plushie!!” Natasha snatched the stuffed animal off of one of the shelves and quickly whipped around as you caught up with her.
“Wow… very cool…” Your voice lacked enthusiasm and the redhead sent you a glare, landing a soft punch on your shoulder.
“Uh, don’t even try and act like this isn’t cool. The panda is my favorite animal mod! They do cute little tricks when you feed them bamboo.”
Natasha hugged the plushie close to her chest. She gave you the best puppy dog eyes she could muster, paired with pouty lips.
“Can I please get the baby panda? I’ll give you head later if you get it for me.” You let out a genuine laugh at your girlfriend’s words.
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
She was really bribing you with sex in order to get a stuffed panda; adorable.
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
“I mean I was going to get it for you anyway, but I’m definitely not declining that offer.”
Natasha let out a small squeal before pulling you into a bone-crushing hug. You winced, not being able to breathe.
“Babe, I- I kinda need to be alive to buy it for you…” You croaked out and the redhead loosened her hold on you, pulling back to peck your lips repeatedly.
Natasha let go of you and turned around to face the section once more. Her eyes lit up when she caught sight of another piece of Minecraft merch.
“Baby, look. It’s a torch-shaped water bottle! It looks exactly like the ones in the game.” Natasha tucked the panda under her arm, reaching out to grab the item that was on a higher shelf.
The Russian let out a huff when she failed to reach the water bottle. Shaking your head, you made your way over to her, placing a hand on her waist as you grabbed the bottle with ease.
Natasha rolled her eyes at you as you handed the object to her, a cocky smirk on your face.
“Show off…” Natasha muttered as she turned around to face you, staring at the water bottle in awe. She was freaking out over how detailed the design was and you’d be lying if you said it wasn’t the cutest shit you’ve ever seen.
“I’ll get it for you if I can get head, twice.” Natasha looked up at you with a smirk on her face, her eyes focusing on your face.
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
“Deal.”
•❅──────────────── ⧗ ────────────────❅•
A few hours later
“Natty, dinner is ready.” You called out from the kitchen, your eyes lifting up to eye your girlfriend.
She was sat on the couch in the living room, playing the version of Minecraft she had just downloaded.
Natasha completely ignored you, too entranced by the video game.
With a sigh, you made your way out of the kitchen and sat beside the redhead, finally gaining her attention.
“Baby, the graphics are so much better on this version than the other one.” You focused on the screen and watched as she opened the door of a home she built while you cooked dinner.
“Look at all my dogs! I killed a ton of skeletons and got their bones so I could tame a shit ton of dogs.” Natasha smiled while your eyes widened.
In a room of the house, there was nothing but dogs. The barks could be heard through the surround sound.
“Jesus, Nat. How many do you have?” You couldn’t believe that she managed to find that many dogs. You’d watched her play a few times and you knew that it took a ton of time to come across dogs in the wild.
“I have thirty. Aren’t they the cutest?” You turned your head to face Natasha’s side profile, a smirk making its way to your face.
“Can I try?” You asked sweetly and Natasha immediately handed you the controller, showing you which buttons did what, before letting you play.
You let out a small laugh as you began to hit the dogs with your hands, spamming the strike button as much as you could.
Natasha let out a scream as the dogs yelped, your hits injuring them. You’d known this was possible because the redhead cried when she accidentally killed her dog on the PC a few months ago.
Seriously, she was devastated. This woman could kill men without flinching, but she cried for weeks after killing her virtual dog.
“Y/N! What the fuck are you doing? Stop!” Natasha exclaimed, yanking the controller out of your hand while you laughed uncontrollably.
“I’m sorry, I had to. They’re not real and there are way too many! You can’t possibly take care of them all. It’s a small price to pay for salvation.”
Natasha sent you a harsh glare, creases forming on her forehead. You let out a small sigh, wrapping your arms around her waist.
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
“You’re heartless. I’m dating a puppy murderer.”
ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ
The redhead grumbled out as she tried to get out of your grip, but you wouldn’t let her.
“I’m sorry. I love you.” You shoved your face into her neck, your words coming out muffled against her skin.
“No. Go fuck yourself. You killed two of my puppies.” The seriousness of Natasha’s tone sent you into another laughing fit.
You pulled your face away from her neck, and sneaked a few kisses on her lips before placing one on her nose.
Natasha tried her best to keep a straight face, but that didn’t last long. Her lips curled upward and she shook her head, cupping your cheek with one hand, and kissing you deeply.
You disconnected your lips and stared into her emerald eyes. Her forehead was pressed up against yours as her eyes scanned your face.
“God, you’re such a nerd.” You breathed out when Natasha pulled her face back from yours slightly, a faux look of annoyance and offense across her features.ㅤㅤㅤㅤㅤ
“For the last time, I’m a geek, not a nerd!” Natasha huffed out and your eyes softened, a playful smirk on your face. You absolutely adored her and loved to piss her off whenever you could.
Xamarin Vs React Native: Choose the Right Platform For Your Business
Mobile phones are used by 5.22 billion people, while 4.66 billion people have access to the internet. The rush to develop innovative apps based on new concepts is greater than ever. Businesses of all sizes have set aside funds to develop the most relevant mobile applications to meet the demands and preferences of their consumers. React Native and Xamarin are presently dominating the scene, according to those who monitor the mobile app development industry's trends.
The developer community prefers both of these open source cross-platform frameworks for developing high-performing apps with minimal coding effort and time. Several businesses have made it a prerequisite to hire mobile app developers who know how to write code that works on both iOS and Android. It's no surprise that these frameworks have become quite popular.
When asked which of these two titans has the upper hand in the sector, however, individuals rarely have an answer. Both React Native and Xamarin have their own set of benefits and drawbacks, making it tough to choose between the two.
Today, we'll go over some major aspects that highlight the differences between React Native and Xamarin. But before that, let’s look at their individual characteristics. Let’s go
What is Xamarin?
Xamarin is an open-source platform for .NET developers, similar to React Native. The fundamental purpose of Xamarin is to keep shared code and platform code in communication. The ability of Xamarin to enhance the capabilities of the .NET developer platform with platform-independent tools and frameworks distinguishes it as a unique framework for app development.
Furthermore, Xamarin may take advantage of the entire functionality of the underlying platform. This means that when the app runs on Android, it will take advantage of platform-specific features to deliver the desired user experience. The same can be said for an app that runs on iOS devices. Its ability to take use of the hardware acceleration capabilities of the underlying platform is also due to Xamarin's ability to offer the necessary performance.
Benefits:
Below are some of the benefits of Xamarin:
Xamarin is an ecosystem of built-in technology that enables Xamarin developers to create cross-platform apps in a single step. Developers may reuse 96 percent of this code when using the C# language and the .NET framework. Building apps for all platforms necessitates the use of three technologies: C#, .NET, and Visual Studio.
Xamarin applications are designed to operate on a variety of platforms, yet they share a similar code base. Aside from that, their business logic, database access, and network connectivity are all the same. The developer's only responsibilities are to make improvements to the user interface. This is necessary to ensure that each platform retains its original feel and appearance.
In the development world, Xamarin is recognized for providing a highly native but simple application performance. Xamarin has unrivalled performance as compared to other cross-platform programming tools. The picture loading performance of a native platform is just 14 percent quicker than Xamarin when compared to native application development and rendering.
Using Xamarin, you can create a fantastic user experience. It's a collection of standardized interface components and pieces with 100% reuse code. Developers may utilize the built-in Xamarin to change the components from either Xamarin or iOS or Xamarin. Android to make the needed modifications.
Even for the most popular components, Xamarin did not have a large number of libraries available to developers initially. However, Microsoft's development team heeded this request and created ready-to-use components for typical scenarios and use cases.
Having read about Xamarin and it’s benefits, let’s see what React Native has to offer us.
What is React Native?
React Native is an open-source framework built and introduced by Facebook in 2015. It is based on JavaScript and JSX. The goal is to create native apps for both iOS and Android devices.
The React Native framework uses JSX, which is an amalgamation of XML-Esque Markup. React renders to the native platform of the device on which the app is executing.
This ensures that the app performs similar to those created with a native app development framework such as Java for Android or Objective-C for iOS. As they have a common code base, React Native mobile app development enables the creation of platform-specific versions of components that can be shared across platforms. React Native is used to create mobile apps such as Facebook, Walmart, Bloomberg, and Instagram.
Benefits:
Following are some of the benefits of React Native:
Developers built React Native, and they continue to support it with the same zeal. For this incredible community support, there has been a revolution in React Native mobile app development. The community generously distributes its vast expertise, and everyone gets free access to a plethora of free components for mobile app creation.
With live and hot reloading, React Native mobile app development improves itself. Both of these qualities are complementary, yet there is a significant difference between them. The framework can compile and read the changes performed by the developer in real time thanks to live reloading. When sending a new file to the simulator, the complete file is read from the beginning and the changes are updated. The goal of hot reloading is to test the application's modifications without actually reloading it.
React Native is the go-to solution for developers looking to save money because 90% of the code can be reused to build iOS and Android apps. Working with React Native saves a lot of time because it just requires small changes to add nativity and minor changes to create performant applications.
The React Native application developers may render the application for third-party support using the JavaScript-powered framework. Because React Native does not have all of its components in one place, it makes use of native and JavaScript modules to improve the application's functionality. Third-party modules may be used to integrate features like maps and two-factor authentication to the app.
The frameworks chosen to develop an application have a direct impact on its performance and capacity to deliver a better client experience. As React Native makes use of native modules and components to assist developers in creating a working application, it is possible to generate code for native APIs without causing any issues. As a result, performance-centric apps may be developed at reduced costs and in record time.
Now that we have some in-depth information about the two platforms, let’s do a comparative study between the two to help web developers choose the right platform.
Xamarin Vs React Native:
Direct comparisons are usually the most effective approach to choose between two options. Let’s have a look.
Performance: This area is critical to your ultimate selection because cross-platform and hybrid frameworks are renowned for sacrificing performance for convenience.
Though both Xamarin and React Native provide near-native performance, Xamarin is faster on Android and iOS and provides a UI for utilizing native tools.
Popularity: Although popularity does not necessarily define the worth of software, it does have a significant impact on how other people engage with it. The popularity of the software is frequently associated with characteristics like a big skill pool, thorough tooling, and a vibrant community.
React Native is more popular than Xamarin, maybe because it is open-source whereas Xamarin is closed-source and exclusively supported by Microsoft. This is evident in everything from Stack Overflow insights to Google Trends.
Community And Developer Ecosystem: You may expect React Native to have a larger and more supportive community than Xamarin for the same reasons mentioned above.
React Native's community was small when it first started. However, as the framework develops in popularity and JavaScript frameworks in general gain in popularity, spotting other React Native developers has gotten simpler and easier.
Development Environment: Pre-built components are available in both Xamarin and React Native to improve speed and the developer experience. Despite the live reload functionality of React Native, the technology as a whole pales in contrast to Xamarin.
Xamarin. Forms and Xamarin.iOS as well as Xamarin.Android gives developers the ability to design native UI components that are particular to the platform. Xamarin developers may get native-like performance in this method, which React Native developers may not be able to do.
Availability: The majority of open-source frameworks are free to use. Xamarin, on the other hand, is unable to claim that title. There is a free version of Xamarin, however it has restricted functionality.
In general, more access equals more freedom, therefore React Native has the upper hand in this category.
Compilation: Just-in-time (JIT) compilation is used by JavaScript and its frameworks, notably React Native. Despite the fact that compiled languages are quicker than interpreted languages because they are translated to machine code before execution, JIT compilation may offer the best of both worlds.
JIT compilation is used by JavaScript, Java, and C#. However, React Native's JIT compilation only works on Android, not iOS, causing performance issues for iOS apps. Both JIT and ahead-of-time (AOT) compilation are available in C#. In most situations, AOT compiled code runs quicker.
Xamarin vs. React Native demonstrates that both frameworks have identical compilation techniques, but Xamarin has a compiler that works well on both iOS and Android.
Expense: Xamarin and React Native are both free to download. However, Xamarin is only available for free to individuals and small businesses. This, of course, makes React Native, which is completely free, much more enticing.
Wrap Up:
Finally, we can conclude that both React Native and Xamarin are robust frameworks that can be utilized to create high-quality apps. Both have advantages and disadvantages, and only you can choose which is the greatest match for your next project. For better results, hire professional mobile app developers as they can assist you in determining the best platform for the success of your project.
The Goddess Durga: The Mother of the Hindu Universe
In Hinduism, the goddess Durga, also known as Shakti or Devi, is the protective mother of the universe. She is one of the faith's most popular deities, a protector of all that is good and harmonious in the world. Sitting astride a lion or tiger, the multi-limbed Durga battles the forces of evil in the world.
Durga's Name and Its Meaning
In Sanskrit, Durga means "a fort" or "a place that is difficult to overrun," an apt metaphor for this deity's protective, militant nature. Durga is sometimes referred to as Durgatinashini, which literally translates into "the one who eliminates sufferings."
Her Many Forms
In Hinduism, the major gods and goddesses have multiple incarnations, meaning they can appear on earth as any number of other deities. Durga is no different; among her many avatars are Kali, Bhagvati, Bhavani, Ambika, Lalita, Gauri, Kandalini, Java, and Rajeswari.
When Durga appears as herself, she manifests in one of nine appellations or forms: Skondamata, Kusumanda, Shailaputri, Kaalratri, Brahmacharini, Maha Gauri, Katyayani, Chandraghanta, and Siddhidatri. Collectively known as the Navadurga, each of these deities have their own holidays in the Hindu calendar and special prayers and songs of praise.
Durga's Appearance
Befitting her role as mother protector, Durga is multi-limbed so that she may always be ready to battle evil from any direction. In most depictions, she has between eight and 18 arms and holds a symbolic object in each hand.
Like her consort Shiva, the goddess Durga is also referred to as Triyambake (the three-eyed goddess). Her left eye represents desire, symbolized by the moon; her right eye represents action, symbolized by the sun; and her middle eye stands for knowledge, symbolized by fire.
Her Weaponry
Durga carries a variety of weapons and other items that she uses in her fight against evil. Each has a symbolic meaning important to Hinduism; these are the most significant:
The conch shell symbolizes the Pranava or the mystic word Om, which indicates her holding on to God in the form of sound.
The bow and arrows represent energy. By holding the bow and arrows both in one hand, Durga demonstrates her control over both aspects of energy—potential and kinetic.
The thunderbolt signifies firmness in one's convictions. Just as a real bolt of lightning can destroy anything it strikes, Durga reminds Hindus to attack a challenge without losing confidence.
The lotus in Durga's hand, not yet fully in bloom, represents the certainty of success but not finality. The lotus in Sanskrit is called Pankaj, which means "born of mud," reminding the faithful to stay true to their spiritual quest amid the worldly mud of lust and greed.
The Sudarshan-Chakra or beautiful discus, which spins around the index finger of the Goddess, signifies that the entire world is subservient to the will of Durga and is at her command. She uses this unfailing weapon to destroy evil and produce an environment conducive to the growth of righteousness.
The sword that Durga holds in one of her hands symbolizes knowledge, which has the sharpness of a sword. Knowledge free from all doubts is symbolized by the shine of the sword.
The trident or Trishul is a symbol of three qualities: Satwa (inactivity), Rajas (activity), and Tamas (nonactivity). Deva uses these to alleviate physical, mental, and spiritual suffering.
Durga's Transport
In Hindu art and iconography, Durga is frequently depicted standing atop or riding a tiger or lion, which represents power, will, and determination. In riding this fearsome beast, Durga symbolizes her mastery over all these qualities. Her bold pose is called Abhay Mudra, which means "freedom from fear." Just as the mother goddess confronts evil without fear, Hindu scripture teaches, so too should Hindu faithful conduct themselves in a righteous, courageous way.
Holidays
With its numerous deities, there is no end of holidays and festivals in the Hindu calendar. As one of the faith's most popular goddesses, Durga is celebrated many times in the year. The most notable festival in her honor is Durga Puja, a four-day celebration held in September or October, depending on when it falls on the Hindu lunisolar calendar. During Durga Puja, Hindus celebrate her victory over evil with special prayers and readings, decorations at temples and homes, and dramatic events recounting Durga's legend.
No.. definitely. I’m definitely the crazy one and it’s exhausting.
Java Bear and I had a long talk about where he was and what had been going on with him all week. He totally validated my feelings and apologized for not reaching out sooner. He continues to reinforce how good he actually is at communication and clearly stated that if there is ever any doubt in my mind of my importance in his life that I should look at my keychain. Giving me a key to the house really IS a big thing.
He also said that if I’m not sure about what’s going on with him or am afraid that he may be shutting down on me that I should always just reach out and let him know what I’m feeling... and if I’m not able to do that, that I can and should talk to Olive about it. The GF/metamour line is a touchy one, but she’s continued to show support for the communication between us about Java Bear.
This weekend was more of that validation of my place in their life and just how much they care about me.
MM had a scare on Friday morning. He was having chest pains bad enough that he had a co-worker take him to the clinic because he was afraid it was a heart attack. They said it wasn’t but because of the symptoms, his health and family history they still sent him to the ER via ambulance. I ended up passing my class to another instructor and drove the hour to be with him. Once they had him in a room I had Cookie come help with getting my car home so I could get MM and his car home after they discharged him.
The fucked up thing was on the way down I found myself wishing I still had Gypsy and Nomad there to help like they did with the last ER run when MM was losing feeling in his legs. That stirred up all kinds of crap for me, but I put on the wife face and just did what needed to be done.
MM kept saying that he felt guilty about possibly ruining my plans to go to Phoenix so after doing dinner with Cookie and driving home I finished packing and left around 9:15pm.
Olive was up painting a wall and Java Bear was out at a birthday thing for his buddy when I got there. She and I got a couple hours to just hang out before he got home and we all eventually went to bed.
The alcohol had Java Bear feeling all kinds of frisky and Olive’s functioning uterus had her in the same place. But her functioning uterus meant that despite the desire being there, we all stopped short of PIV and eventually attempted to sleep.
I say attempted to sleep because not long after finding my underwear Java Bear started to whimper in his sleep and twitch while he was holding me. It wasn’t his usual purr/growl thing but something sad, scared... I said something to Olive and we realized that he was having night terrors. I narrowly missed catching an elbow in the initial flailing before we sandwiched him and held him tight enough that he couldn’t swing his arms around anymore. It was a rough night but better that the first time I saw it was at their place with Olive there to show me how to handle him when it happens.
Java Bear got up around 5am and Olive and I slept until after 9am. Her kiddo was playing video games with Java Bear when I came out. Java Bear and I did a grocery run and then they cooked up a big brunch with pancakes, fresh fruit and eggs. It was just a normal “family” kind of morning.
Eventually we decided that naps needed to happen. Olive wanted to touch up the wall she’d painted so Java Bear and I curled up. There was more sexual tension but Java Bear had told me that they hadn’t christened the new bed and that Olive wasn’t okay with the two of us having sex there first. I TOTALLY understood where she was coming from so we did our best to behave.
We’d had a talk the night before in the throes of sexy time when we both said that we weren’t ready to watch the other with Java Bear. It was different with all of us involved but with her being on her period it just wasn’t practical or really do-able.
Olive came up to bed after giving the boy something to keep him occupied. The same tension was there with the three of us in bed and I got to the point where I just asked where the dark towels were and told her, “Please fuck your husband. You can take the kiddo out for a bit after dinner and he and I can have some time.” She objected a bit but I was pretty sure they were still going to have sex while I was downstairs with my headphones on, chatting with friends. I was totally fine with it and just relieved that the tension would dissipate.
Maybe an hour later they came down and told me that they’d been talking the entire time. They told me that didn’t want to impose any “couple’s privilege” on me and that Olive was going to take the the kiddo for a walk to go get a movie so Java Bear and I could have some time. I about burst into tears... good tears. I continued to assure Olive that I totally understood how she felt and thanked her for understanding where I was... spending most nights alone and knowing I won’t get to see either of them for at least 2 more weeks.
Java Bear and I totally took advantage of the time but I was sure to be downstairs fully dressed when Olive got home. I also made the bed up, opened the window, turned the fan on and sprayed air freshener in the bedroom. We had both showered and were talking about dinner when they got back. The kiddo stood outside the door and they asked me to close my eyes. He had seen a stuffed husky while they were shopping and because I’d talked about my husky at breakfast he insisted they buy it for me as my Valentine. Could that be any stinking cuter?!?
We decided on take-out poke for dinner and I stayed in my jammies and waited in the jeep while they went in to get it. The rest of the night was more of the awesome... cheesy kids movie, dinner, then Java Bear and I watched the latest Grey’s Anatomy while Olive did some meal prep. How I managed to not fall apart completely during that episode is totally beyond me. Ben and Bailey had been “on a break” and they got back together. Their separation was heartbreaking. Their reconciliation was equally emotional. And yes, I know.. fictional characters.. but it really hit home with some of the things MM has said to me lately.
MM and I had our ‘therapy’ night on Wednesday and he talked about how he thought it would be ‘just us’ after the quad imploded. Thursday after my emotional day over Java Bear’s post he asked if I wanted anything from the grocery store and I asked him to grab me some salmon. He had plans to go out to a game night and was going to change and turn around but while I was finishing my paperwork, he got home and put my salmon on the grill. It was just one more example of him showing how much he loves me and wants to keep trying.
I’m tearing up just writing that.
I don’t know how to go back. I don’t know how to unring these bells. Part of me wants to just cut everyone else out of my life and go back to monogamy, but I know that MM’s relationship with Pixie is still in a good place, and my relationships with Java Bear and Olive are awesome. I feel so loved and valued and wanted there. At least, I SEE how loved and valued and wanted I am there. That’s where I’m struggling right now.
I had a meltdown on the drive home thinking about the moment when we were all in bed together fooling around. I was the center of attention but all I could think was, “Is this my life? Is this really what I want? How did I get here?” I started spinning, feeling like a lot of what I’ve been doing hasn’t been out of choice but out of a need to make the best of a bad situation.
Polyamory made it so that MM and I could view our marriage as evolving rather than ending when we got to a certain point in the quople where we knew that we had become disconnected. Truth be told, we were struggling to stay connected before the quad... Poly made it so that we can still love each other and be partners but have our other needs met elsewhere because I’m not ready to really get all the way back in. But the longer we do this, the less I see the possibility of getting back to who we were in any way. That breaks my heart.
The worst part of it all is this sense of being unable to feel the good. It’s that ‘taste of blue’ thing. Most people, if they are lucky, are raised being fed blue things so that they have a clear, natural understanding of what blue tastes like. People like me... we see blue, we know what it looks like and hear the rest of the world talk about how sweet it is. We recognize the blue things but don’t have that immediate understanding when it’s in our mouths that, yes.. this is BLUE. Not a blue thing but blue. Does that make any sense?
My crazy is still really flowing and I can’t imagine that the whiskey is the cause after this many days. I’m hungry and tired. I made myself oatmeal and coffee and ran the towels that Olive said she wanted to wash this weekend before doing the drive back. From there I spent a couple hours doing Friday’s paperwork and coloring Cookie’s hair. MM is at a game night at Pixie’s today so I likely won’t see him until later, assuming I’m still up when he gets home.
I’m trying to prep for tomorrow’s class because it’s one I haven’t taught in months and I’ve got a really big group. I know I need to make myself some real food and put the clean sheets on the bed. I need a hot shower and will probably be in bed early. I’m trying to take care of myself, really... I think this is what it looks like. Writing, eating, sleeping, maybe doing more reading in the Codependency book... I just feel so tired and empty right now.
Today, Yahoo Mail introduced a feature that allows you to automatically sync your mobile photos to Yahoo Mail so that they’re readily available when you’re composing an email from your computer. A key technology behind this feature is a new photo and video platform called “Tripod,” which was born out of the innovations and capabilities of Flickr.
For 13 years, Flickr has served as one of the world’s largest photo-sharing communities and as a platform for millions of people who have collectively uploaded more than 13 billion photos globally. Tripod provides a great opportunity to bring some of the most-loved and useful Flickr features to the Yahoo network of products, including Yahoo Mail, Yahoo Messenger, and Yahoo Answers Now.
Tripod and its Three Services
As the name suggests, Tripod offers three services:
The Pixel Service: for uploading, storing, resizing, editing, and serving photos and videos.
The Enrichment Service: for enriching media metadata using image recognition algorithms. For example, the algorithms might identify and tag scenes, actions, and objects.
The Aggregation Service: for in-application and cross-application metadata aggregation, filtering, and search.
The combination of these three services makes Tripod an end-to-end platform for smart image services. There is also an administrative console for configuring the integration of an application with Tripod, and an identity service for authentication and authorization.
Figure 1: Tripod Architecture
The Pixel Service
Flickr has achieved a highly-scalable photo upload and resizing pipeline. Particularly in the case of large-scale ingestion of thousands of photos and videos, Flickr’s mobile and API teams tuned techniques, like resumable upload and deduplication, to create a high-quality photo-sync experience. On serving, Flickr tackled the challenge of optimizing storage without impacting photo quality, and added dynamic resizing to support more diverse client photo layouts.
Over many years at Flickr, we’ve demonstrated sustained uploads of more than 500 photos per second. The full pipeline includes the PHP Upload API endpoint, backend Java services (Image Daemon, Storage Master), hot-hot uploads across the US West and East Coasts, and five worldwide photo caches, plus a massive CDN.
In Tripod’s Pixel Service, we leverage all of this core technology infrastructure as-is, except for the API endpoint, which is now written in Java and implements a new bucket-based data model.
The Enrichment Service
In 2013, Flickr made an exciting leap. Yahoo acquired two Computer Vision technology companies, IQ Engines and LookFlow, and rolled these incredible teams into Flickr. Using their image recognition algorithms, we enhanced Flickr Search and introduced Magic View to the Flickr Camera Roll.
In Tripod, the Enrichment Service applies the image recognition technology to each photograph, resulting in rich metadata that can be used to enhance filtering, indexing, and searching. The Enrichment Service can identify places, themes, landmarks, objects, colors, text, media similarity, NSFW content, and best thumbnail. It also performs OCR text recognition and applies an aesthetic score to indicate the overall quality of the photograph.
The Aggregation Service
The Aggregation Service lets an application, such as Yahoo Mail, find media based on any criteria. For example, it can return all the photos belonging to a particular person within a particular application, all public photos, or all photos belonging to a particular person taken in a specific location during a specific time period (e.g. San Francisco between March 1, 2015 and May 31, 2015.)
Vespa, Yahoo’s internal search engine, indexes all metadata for each media item. If the Enrichment Service has been run on the media, the metadata is indexed in Vespa and is available to the Aggregation API. The result set from a call to the Aggregation Service depends on authentication and the read permissions defined by an API key.
APIs and SDKs
Each service is expressed as a set of APIs. We upgraded our API technology stack, switching from PHP to Spring MVC on a Java Jetty servlet container, and made use of the latest Spring features such as Spring Data, Spring Boot, and Spring Security with OAuth 2.0. Tripod’s API is defined and documented using Swagger. Each service is developed and deployed semi-autonomously from a separate Git repository with a separate build lifecycle to an independent micro-service container.
Figure 2: Tripod API
Swagger Editor makes it easy to auto-generate SDKs in many languages, depending on the needs of Yahoo product developers. The mobile SDKs for iOS and Android are most commonly used, as is the JS SDK for Yahoo’s web developers. The SDKs make integration with Tripod by a web or mobile application easy. For example, in the case of the Yahoo Mail photo upload feature, the Yahoo Mail mobile app includes the embedded Tripod SDK to manage the photo upload process.
Buckets and API Keys
The Tripod data model differs in some important ways from the Flickr data model. Tripod applications, buckets, and API keys introduce the notion of multi-tenancy, with a strong access control boundary. An application is simply the name of the application that is using Tripod (e.g. Yahoo Mail). Buckets are logical containers for the application’s media, and media in an application is further affected by bucket settings such as compression rate, capacity, media time-to-live, and the selection of enrichments to compute.
Figure 3: Creating a new Bucket
Beyond Tripod’s generic attributes, a bucket may also have custom organizing attributes that are defined by an application’s developers. API keys control read/write permissions on buckets and are used to generate OAuth tokens for anonymous or user-authenticated access to a bucket.
Figure 4: Creating a new API Key
App developers at Yahoo use the Tripod Console to:
Create the buckets and API keys that they will use with their application
Define the bucket settings and the access control rules for each API key
Another departure from the Flickr API is that Tripod can handle media that is not user-generated content (UGC). This is critical for storing curated content, as is required by many Yahoo applications.
Architecture and Implementation
Going from a monolithic architecture to a microservices architecture has had its challenges. In particular, we’ve had to find the right internal communication process between the services. At the core of this is our Pulsar Event Bus, over which we send Avro messages backed by a strong schema registry. This lets each Tripod team move fast, without introducing incompatible changes that would break another Tripod service.
For data persistence, we’ve moved most of our high-scale multi-colo data to Yahoo’s distributed noSQL database. We’ve been experimenting with using Redis Cluster as our caching tier, and we use Vespa to drive the Aggregation service. For Enrichment, we make extensive use of Storm and HBase for real-time processing of Tripod’s Computer Vision algorithms. Finally, we run large backfills using PIG, Oozie, and Hive on Yahoo’s massive grid infrastructure.
In 2017, we expect Tripod will be at 50% of Flickr’s scale, with Tripod supporting the photo and video needs across many Yahoo applications that serve Yahoo’s 1B users across mobile and desktop.
After reading about Tripod, you might have a few questions
Did Tripod replace Flickr?!
No! Flickr is still here, better than ever. In fact, Flickr celebrated its 13th birthday last week! Over the past several years, the Flickr team has implemented significant innovations on core photo management features (such as an optimized storage footprint, dynamic resizing, Camera Roll, Magic View, and Search). We wanted to make these technology advancements available to other teams at Yahoo!
But, what about the Flickr API? Why not just use that?
Flickr APIs are being used by hundreds of thousands of third-party developers around the world. Flickr’s API was designed for interacting with Flickr Accounts, Photos, and Groups, generally on lower scale than the Flickr site itself; it was not designed for independent, highly configurable, multi-tenant core photo management at large scale.
How can I join the team?
We’re hiring and we’d love to talk to you about our open opportunities! Just email [email protected] to start the conversation.