Who am I?

Michael Barakat is a designer and front end developer / ux developer / design engineer living and working in Seattle, WA.

Michael Barakat

UX Engineer II
Seattle, WA

I'm a UX Developer that digs deep to understand computers, frameworks (whichever one I'm using), programming languages and systems. I admire the simplicity and beauty of modern programming languages, emulators, and computer architecture. I'm dedicated to collaboration and enjoy project conversation with colleagues. I like meetings when they allow us to move forward and get things done. I do my best to contribute when I have something to offer, and likewise do my best to keep my mouth closed and ears open when I don't. I have a long track record of sensible and steady collaboration, personal progress, and a growth mindset.

Work Experience

companyroleDatecomments

Microsoft

UX Engineer II

April 2022 - Present

Building infrastructure and UI controls for Horizon's team to collaborate with Fluent UI, Fabric and PowerBi developers.

Microsoft

UX Engineering Manager

September 2021 - April 2022

Managing UX engineers to build control libraries for PowerBi and Microsoft Fabric

Microsoft

Design Integrator

March 2020 - September 2021

Helping design teams collaborate with engineers on Microsoft Purview

Microsoft

UX Developer

January 2019 - March 2020

Building prototypes with React, Typescript and MobX. Maintaining and building out React based web sites.

Sage Bionetworks

Front End Developer

June 2018 - January 2019

Working with a team of engineers and data scientists to build websites with Sage Bionetworks technologies and React.

Freelance dev work

Front End Developer

Januar 2018 - June 2018

Working with clients to build professional websites using varying tech stacks.

Developer Skills

skillability levelcomments

scripting

5/5

The bread and butter of JavaScript.

crafting developer apis

4/5

The first consideration. Good documentation and careful use of language is paramount

functional programming

4/5

Mostly used with Typescript.

code structure and architecture

4/5

Building components for Fluent UI and developing compilers has allowed me to level up the code quality

OOP

3/5

Many design patterns of OOP are clear to me, but they've never been a major part of my day to day work.

algorithmic thinking

3/5

An area to commit more time to in the future

project setup and architecture

3/5

Set up multiple mono repos for team projects.

Language Skills

languagecomfort / experienceused professionallycomments

Typescript

5/5

yes

Used day to day while at Microsoft

JavaScript

5/5

yes

My first programming language

Rust

4/5

no

Completed rust book. Built chip 8 interpreter. Working on building a compiler.

Python

3/5

no

Built a syntax analyzer, parser and compiler.

Java

2/5

no

Used only academically, but found the language to be very easy to use.

C

3/5

no

Used academically. Sorting. Linked Lists. Hash Tables, CLI tools, ect.

Lua

3/5

no

Built some games for fun

Lisp - scheme

1/5

no

Used academically

C#

1/5

no

Used it with Blazor

C++

1/5

no

Got about as far as hello world, then started using Rust.

Technologies

technologyexperience levelcomments

Browser API

5/5

When it comes to the basics, I know it well.

React

5/5

Love it, but hate it more than I love it.

Angular

3/5

well designed

Web Components

4/5

overpromises

Microsoft FAST

3/5

Used in all of our web component libraries

package management

5/5

pnpm, yarn, npm

DevOps

4/5

experience setting up deployment, build and testing pipelines

Typescript configurations

5/5

countless hours spent debugging complex project setups

Jest testing

3/5

Used for React

Jasmine testing

4/5

Used for Angular

Playwrite integration testing

3/5

Flaky

**All technologies listed are used in a professional capacity.

Noteworthy Courses and Books

nameschoolconcepts and subjects learned

Code 201, Foundations of Software Development

Code Fellows

html, css, javascript, browser api, version control

Code 301, Intermediate Software Development

Code Fellows

package management, SQL, MVC, deployment with cloud services, ExpressJS, OAuth, Testing

CS50

Harvard

Intro to Computer Science, Data Structures, Searching and Sorting Algorithms, Cryptography, C language, Python, SQL

Software Design and Architecture

University of Alberta

UML Diagramming, Java, Android Studio, Object Oriented Design Principles, Software architecture, Service Oriented Architecture

The elements of computing systems (Nand to Tetris I)

Hebrew University of Jerusalem

Boolean logic, Nand gate, Combinational logic, Sequential logic, von Neumann architecture, assembly language programming

The elements of computing systems (Nand to Tetris II)

Hebrew University of Jerusalem

Writing an assembler, virtual machine design and implementation, writing a compiler, operating system design

The Rust Programming language

-

Ownership, Borrowing, Lifetimes, Smart Pointers, Pattern Matching, Packages, Crates, Modules, Testing, Closures, Traits, Concurrency, OOP With Rust, Functional programming with Rust

Crafting Interpreters

-

Tree Walk Interpreter, Scanning, Parsing Expressions

Education

  • B.F.A. Rochester Institute of Technology, 2005

  • M.I.D. University of the Arts, 2011

But really, how and why did I get here?

When I'm not coding, you'll find me building something in my workshop. Maybe it's a woodworking project, or a pair of shoes, or it could be a photography project too. But why?

It's hard to say sometimes isn't it? Why do I code? Why am I here doing this? The short answer is: I love building things! My whole life for as long as I remember, I have been fascinated by how things work and more especially the act of creation itself: how to create things that are useful, beautiful and enjoyable.

In the late 90's when I was a teenager I started getting into photography. Then later in college I studied film and animation and later worked in the film industry doing some set decoration, set construction, prop handling and then later motion graphics, videography, and video editing. This lead to my initial interest in design.

By 2011 I had moved to Seattle, hoping to land a gig someplace in technology. The unfortunate reality of working as a designer in technology however is, that you don't really get to put your hands into the proverbial "engine of the car." In other words you don't get "hands on" time with the interworkings of the machine. As a designer, you get to design the look and feel and interactions, but don't actually get to build it. The closest you get is in understanding the behaviors of a user, and augmenting patterns in the system to create a predictable outcome. As a designer, I could never get around these details. It bothered me to not be the builder. So, in order to overcome this problem, I learned how to code. The rest is history.

Join the mailing list