Privilege in the context of the American Dream

I had a conversation today while at a Grace Hopper networking event with a New York City Entrepreneur who works in the diversity recruiting space. One of our major topics of discussion was around the concept of privilege and specifically how it affects our role as successful individuals in a highly demanding field like technology.

I grew up in a low-income, public housing complex with not a lot of resources financially or otherwise. I was fortunate enough in my case to be able to work my way up the economic ladder through college and eventually landing my current job. The hidden part of this story, and not one that is immediately visible through a resume or otherwise, is that I had to depend on a lot of opportunities that came my way and mostly by luck.

When I received my acceptance letter from the University of Washington, my father told me that I would have to find a way to pay for my education. He couldn't afford it raising me and my siblings and I'd have to pay for it in whatever way I could. I applied to over twenty different scholarships that summer without a single one accepting me. Eventually, I was fortunate enough to receive a grant from the university for my education.

The American Dream, the dream of upward mobility through hard work, is more than what meets the surface. In order to be successful in today's world, there are four components that play a part in this: Effort, Privilege, Opportunities, and Luck.


Hard work will always be rewarded (or so we like to think). Often times when I'm asked by people "What did you do to get where you are?" or "How can I do what you're doing now?" I usually present them with a few tasks they can do to demonstrate their effort and drive. Lots of discussions I sat in on today at the Grace Hopper Celebration were talking about mentoring and the role that mentors can play in the development of people in their early careers.

Alas, mentors can only stretch themselves so far and often I find myself with more people to help than capacity I can help in. Often my criteria for mentoring people boils down to how much effort are they willing to invest in themselves. If you're willing to invest in yourself, it is easily recognizable and people will see that. Once you demonstrate to others you're willing to put in the hours to get a website, project, or app done, they'll be more excited to help you reach your full potential.


Privilege is a complex terminology. Merriam-Webster defines privilege as "a right or benefit that is given to some people and not to others." Often we hear the term "privilege" as a term around racial relations (e.g. "white privilege"). The nuanced note here is that privilege is not a one-dimensional spectrum. Privilege comes from various qualities that you have as a person that influence your ability to get something done. That can be something you have or something you are.

For example, men get paid 20% more than women in most occupations, that's a privilege of being male. A fifteen year old in a top 25% economically will have a greater chance of remaining in that wealth tier than the same child in the bottom 25% has of moving up to the same level.

Privilege is not something that is easily changed, it's a part and parcel of who you are as a person. You can potentially augment it with things you have, but recognizing that you have a special situation because of your privilege makes your situation uniquely different.


Every person has a different set of doors available for them to pursue. This part of the American Dream is loosely coupled with the aforementioned one "privilege". Opportunities can be anything from scholarships to mentors in your life to job offers you get. In many cases, opportunities are things that you pursue through effort with the occasional one falling in your lap.


If all the other three elements are in place, it's in the hands of luck/fortune/God/the universe.

One specific note that I discussed tonight was on how we as folks who "made it" to some degree can help those who are at the lower rungs of their society or career. Out of the four components of the American Dream, what can we, as the "successful" people in the eyes of some our our networks do?

While we can't help with the elements of a mentee's privilege and luck, we can help with opportunities and effort. Give your time in spaces that don't often get to hear from people in your position. Show your work and inspire others to take you or someone similar as a role model for what they want to pursue. Make yourself as present and available to inquisitive minds and struggling groups.

And most of all: listen. Listen to those around you and the stories they have to tell. While offering your help and advice where you can is important, hearing and understanding where they are coming from is equally important as well.

The Life Lessons I Learned from Travelling

One of my favorite life wisdoms comes from a Hadith or a saying of the Muslim Prophet Muhammad (peace be upon him).

Live in this world as a traveller or a stranger
— Prophet Muhammad (peace be upon him)

For me, this statement elicits a philosophy of simplicity and ease not commonly found in the world today. The essence of this speaks to me of a life philosophy, a way of carrying oneself, that focuses on the present, "What could I be doing right now?" From my first few experiences travelling, I have drawn a few reflections that I thought of sharing (with a few of my photos sprinkled throughout).

1. Be Present

There are several times when you get wound up in everything that's on your plate. Deadlines, relationships, commitments, and balancing all that with your "me time". Often in that frenzy of priorities we ignore (or perhaps forget) the experience that puts us where we are: here. The photo here was one I took while walking down Fisherman's Wharf with a friend in San Francisco, we didn't have any particular plan, no specific idea of what we were doing in mind, we were experiencing the moment, we were present.

Thinking back at other parts in my life where I wasn't present, I feel I've missed a lot of things. Some that I know and reflect on today, others that are lost to me and I'll never have a chance to experience them again. Opportunities come and go throughout our time living, but we may be holding on too tightly to a few to miss the other small ones that pass us by. Don't let the past chain you, and don't let the future consume you.

2. Be Grateful

There are many times where I've forgotten to thank those who have helped me to where I am today, family members and friends, many of whom selflessly supported me when I needed help and who are the backbone of who I am today. Travelling gave me the chance to count my blessings and reflect on the people that matter to me. Throughout that reflection I realize I have a lot of favors to owe and people to thank.

Gratefulness isn't limited to people, however, it's experiences, it's sights, sounds, taste, touch, feeling. It's the full human experience and the appreciation of the dimensions you can experience within it, the good and the bad.

3. Embrace your mistakes

There will be times when you screw up, there will be times where you make the worst mistakes and the most ridiculous of decisions. Everything from "I paid how much for hotel laundry?" to "I should have treated them better when I had the chance." Mistakes make us human and there's no getting around that fact. Embracing them in the manner that helps you accept it is critical to improvement. It can be to laugh, to cry, to talk, or to brush off the error, the trip-ups are there to show you where you need to work on (or simply to remind you that you're not all that).

Last year I was flying back from a trip to Munich, Germany. Because of my own error, I didn't realize I booked my layover for 10am the next day not pm like I had thought originally. In a quick panic of frenzy I called the airline to see if there was any way I could adjust the flight but was faced with a stern no (unless I wanted to pay over $4000 extra for business class). I ended up finding a hotel and just living that moment caused by my own stupidity. You will mess up today if not tomorrow, but damn if that gets the best of you.

4. Don't take life too seriously

There's always room for fun, if not, make room. Some of my most enjoyable times were from spur of the moment actions or reactions. I found that my general enjoyment in life is much better when I take a second to remove the soft barriers from our lives. One of my most memorable ones come from when I was in college during the annual spring fest. During the school spring fest, they would bring out live music, have booths from the various clubs, and several other activities including a inflatable obstacle course.

Of course, since it's Seattle, it was raining fairly heavily that day and so nobody was on the obstacle course because it was soaking wet. That term, I happened to have one early morning class and one evening class (leaving me with a load of free time on my hands). I was hanging out with a few friends in one of the building lobbies right next to the festivities and I noticed the obstacle course. "Man, I'd be on that right now if it weren't raining," someone mentioned. I paused at this statement and thought "Why am I not on that right now?" Sure, I'd be soaking wet, but I could find a way to dry off by the time my class came around.

So, without explanation, I told them to watch my bag and jacket and proceeded to take off my shoes and run outside to the obstacle course and make a full pass through it. I then proceeded to walk back inside, thank those who were watching my stuff and resumed my day.

Obviously, this doesn't have to the be the average bit of fun you place in your day. It can be anything from a basic morning walk to going to a barcade to feel like a kid again.

5. Stay true to yourself

This might be one of the hardest ones to really embrace. Really capturing your essence to know who you yourself are at your core being. It's very easy to lie to yourself and, by extension, to overwhelm yourself. By being genuine and really doing things that you want, versus what you hear from others, can dramatically affect how you view life.

When I go places, I personally like to do my best to not go to the touristy places in town. Of course, you can do that if you want to but there's nobody forcing you to do one or the other. If it's something that makes you happy, seize it, otherwise let it go. Life is too short to fake your own happiness for the good of others.

Those are a few of my thoughts from travelling around and experiencing life. Of course this is all subject to change and your mileage may vary. This is just a guide to some things to consider from your next weekend getaway to your next step of life.

The Death of the Urban Utopia

In 2012, I had the chance to hear from Howard Frumkin while attending TEDxRainier. In his talk he discusses the qualities of the optimal human habitat. In other words, how could we, as society, create an environment that creates a beneficial environment for those who live and work there. The talk goes on about the various benefits of optimizing the human habitat and goes through an example of how one could take an otherwise bleak street corner and turn it into a thriving, sustainable habitat. This reminded me of the sprawling technology capital of the world: San Francisco, CA.

San Francisco is a city that I classify as a "What might have been" city. A city that may have grown a little too fast to cope with the changes that were occurring. I reference this specifically pointing out to the technology boom sprouting from one of the top universities in the world, the mass emigration of software devotees, and the alarming gentrification of the society and people around it. Being in the Seattle area, a region that is also facing the same growing pains, I wonder how a city deals with such unprecedented levels of economic, social, and population growth that we haven't seen merged in this manner before.

Frumkin makes note of the benefits of having people living in the communities they work in. In his examples he cites less traffic, lower risk of deaths by automobiles, higher quality of life for residents, and so on. One of the major things that I think is a major benefit of having not only mixed use, but mixed income residences is the potential economic benefit of creating incentives to improve your community and stimulate your local economy by means of convenience rather than cost.

The unfortunate issue with a lot of cities like San Francisco, Seattle, and New York is the rapid increase in cost of living and quality of life manageability. We're hitting a point where people simply don't want to move to these larger cities because of the inevitable cost of living increases in the area. In fact, housing prices in San Francisco went down slightly due to the fact that people are not interested in living in the Bay Area as much as they once were.

In Seattle, anecdotally I know several families and communities that have to move further and further out of the city to be able to find apartments or housing that they are able to afford. Combine that with a major backlog of public-subsidized housing and you have an increased geographic gentrification of a region. This ultimately is causing a lot of the problems that Frumkin mentions in his talk: increased traffic, greater social/crime issues, etc.

Until a model of sustainable housing can be developed, one that allows for prioritization on geographic cohesiveness rather than forced income cohesiveness, the idea of a urban utopia, a healthy human habitat, may be lost for us all.

OpenID Connect: A Primer for Hackathons and App-Makers

The social factor has become an important dimension in how many web and mobile apps work today. Everything from providing a basic profile for a user to connecting with social media accounts requires some form of authentication. Unfortunately, if you've never worked with authentication systems, they can be a tad overwhelming and complex.

Fortunately, there are several frameworks and libraries built for you already that have this functionality builtin. If that's all you looking for, here they are. If you want to know how the authentication works, however, read on!

So what is OpenID?

OpenID is a identity standard on top of the OAuth 2.0 standard. OAuth provides two key components to your web applications: authentication and authorization (sometimes abbreviated as AuthN and AuthZ respectively). Authentication proves who you are, authorization proves what you're allowed to access. For example, if you're writing a mobile game, you will need both since you need to know who the player is and what parts of the app they can access. A random player should only be able to access parts related to the game whereas an admin should be given access to a more privileged set of features (like a banhammer).

The problem is that creating a secure authentication and authorization framework requires a lot of developer hours and lots of auditing to make sure that nobody can sneak through. OAuth is a open standard that enforces these with several libraries that implement it for you.

How does it work?

There are three parties to consider in an OpenID request: the user, the application, and the identity provider. When a user connects to your application, it presents a token (usually a cookie) that identifies itself. The application can present this token to the identity provider (or use some information given by the provider) to make an authentication decision.

Given this layout, there are three states this relationship can be in: a "cold" state (i.e. the user has never used the application before), an authenticating state, and an authenticated state.

Cold State

Suppose a user has never used the application before, they now connect for the first time to your fancy new app ( Now you made always require the user to be in an authenticated state, so upon seeing that they have presented no credentials, you need to make the call to authenticate them. Suppose that our identity provider in this case is Google. Google will provide you a URL to redirect the user to go through the authentication process. Before presents this URL to the user, it adds information like the app information and details on what type of information it wants. So after you assemble this URL, you redirect the user (that's a 302 for you HTTP nerds) to Google's authentication URL.

When the user gets connected to Google, they'll be asked to log into their Google account and usually will be asked to give permissions to your app. Once the user has logged in and consented to use your application, they are provided two pieces of information: an authorization code and an ID token. We'll focus on the ID token and I'll focus on the other part later. Google now is presenting this information to the client and instructing it to pass that information to using another redirect.

Authenticating State

Now we're back at the application a second time, only this time we now have an ID token that identifies the user. This ID Token is in the form of a Base64-encoded JSON Web Token (JWT). It's effectively a JSON object that contains three parts: (1) a header describing the encryption/signature formatting, (2) a JSON object with user information, and (3) a signature that verifies the legitimacy of the token. The token that the provider (Google in our case) provides would provide this token with user information and a cryptographic signature. This signature verifies that it actually came from Google and wasn't spoofed. So the process in the OpenID case of verifying the legitimacy of the first authentication involves looking at this JWT and verifying that it did indeed come from the provider you requested.

At this point, you set a cookie on the user's machine to remember who they are on subsequent requests. This could be a unique identifier tied to their session or even the JWT itself.

Authenticated State

From this point on, we maintain the user's authenticated state as long as they provide a valid cookie. There are other minutae that we can discuss here like revoking authentication or the case when a user revokes application permissions, but those are topics for another time.


There's one additional state I left out, what happens when the user is no longer authenticated to your app? At this point you now need to redirect the user back to the identity provider to verify who they are. Effectively, you treat reauthenticating as you would a "cold" user.

Why use OpenID?

Having a standard makes the process of authenticating users so much easier. Instead of having to work with a custom log in implementation for each user, you simply have to change small variables like the URL for redirection. It also removes a lot of the "easy to get wrong" details from your application that can cause security vulnerabilities and other bad bugs.

Photo credit: Alex Berger

Let me know what you think about this post by commenting, liking, sharing, or email me at

Open Letter to Peter Zieve - CEO of ElectroImpact, Mukilteo, WA

To: Peter Zieve <>, ""
From: Tariq Yusuf <>
Subject: Mukilteo Postcards
Date: 14 April 2016

Hello Mr. Zieve,

Allow me to introduce myself, my name is Tariq Yusuf, I am a Software Engineer at Google working in Kirkland and living in Everett. I graduated from your alma mater, the University of Washington, in 2014 with my Bachelor's degree in Computer Science and have lived in the greater Seattle area my whole life.

I saw you mentioned in the Seattle Times this evening in connection with postcards that were sent throughout the Mukilteo area regarding a Mosque that is currently being built. The mayor mentioned in the news article that you had "international and national concerns" regarding the project to the point where you have held community meetings at your company about this matter.

I understand you may have some concerns given the political climate and rhetoric about Muslims in the recent months. I wanted to offer some point of contact in case you have not had a chance to talk with any of the area Muslims about this project or the goal and purpose of mosques (with specific emphasis on those in the region).

Some background on Muslims in the area, there are roughly 100,000 Muslims living in Washington state, some 40,000 of them in the Seattle area. That community includes around 40 mosques ranging from Bellingham to Bothell and Spokane to Seattle. The first mosque in the region was founded in SeaTac in the 70s.

A Gallup poll from 2009 showed that Muslims are not only one of the most diverse religious populations in the US, but also that Muslim women are among the most highly educated demographics in the US. In addition, Muslim American men and women are equally as likely to have a college degree or some form of higher education.

Specifically within the Everett and Mukilteo areas, a majority of the Muslims in the region work for the Aerospace industry, many of them for Boeing and Crane. One of our congregants at our mosque is one of the head stress test engineers for the 787 project.

One of the main reasons why having a mosque or community center to gather at is it allows us to run our community programs like after-school tutoring, guest speakers, weekly worship services, and counseling for troubled couples or youth. Additionally, Muslims that are connected with a strong mosque community are in fact more likely to give back to their communities through volunteerism and philanthropy. This is something I have seen first hand in all the mosques in the region and beyond.

I understand that a lot of the rhetoric can be concerning especially if one has no personal experience or encounter with Muslims. Because of this, I'd like to offer you an open invite for lunch or dinner to converse about some of the questions you may have or concerns that might be worrying you. In addition to that, I'd also like to recommend some resources that will be helpful in understanding American Muslims as well as getting a better feel for the Muslim community.

  • The Seattle Islamic Speakers Bureau provides workshops and talks about Muslims for people who have little to no familiarity with Islam.
  • The local Council on American Islamic Relations has lots of information on how to contact local mosques and community members to better understand how Muslims live in the US and specifically Seattle.
  • Finally, the Muslim Association of Puget Sound is one of the major pillars of the Seattle area community and definitely a good place to talk to if you want to see what a mosque is like. This is the mosque and community center that's an example for all the others in the region.

If you ever want to ask any questions about the Muslims community or want to know more about us, you can email me directly at If I can't answer your question, I can most certainly direct you to those who can.

I hope your family is well and you have a wonderful day.

Your neighbor in peace,
Tariq Yusuf
Software Engineer, Google
Everett, WA

Fun Numbers: How much would ISIS have to pay for it's publicity?

Meme derived from Fox News screenshot (Credit: Fox News)

Meme derived from Fox News screenshot (Credit: Fox News)

I often have fun with back of the napkin calculations, they occasionally help you get a good idea of how big numbers can get and what they can look like when reallocated. Today's question: If ISIS had to pay for the amount of publicity they've gotten on cable news networks, how much would they have to pay?

Well normally, a 30 second slot during the noon news on your local station will go anywhere from $200-1,500 per 30 second slot. An article recently highlighted that CNN was charging $200,000 for a 30 second ad during the Republican National debate (40x their normal pricing).

Let's assume that all cable networks charge CNN's normal amount for cable advertising for all their slots (a conservative estimate for a reason). That comes out to $5,000 per 30 second slot. That comes out to $10,000 per minute or $600,000 per hour.

Now given all the media attention behind ISIS, we can conservatively estimate that roughly half of the news coverage involves them in some way. However, cable news is riddled with (you guessed it) advertising so let's bump it down from 12 hours of 24-hour news coverage to 8 hours.

That means that every day, ISIS gets $4.8 million in free publicity from a single day on a single network. So bumping that up to a news cycle (1.5 weeks) we know that they roughly get $52.8 million per cycle.

But it's larger than that! We have lots of news networks in the US including CNN, Fox News, CBS, ABC, NBC, MSNBC. That comes out to $316.8 million per news cycle on all the major networks.

Now the fun part, what could you do with $316.8 million every 11 days?

  • Assuming the average cost of college for the past academic year (approximately $24,061), you could give 13,000 students a free ride scholarship every 11 days.
  • Using the average cost of healthcare for a family of four, every 11 days you could give free healthcare to 14,000 families for the year.
  • Pay for the salaries of roughly 1,800 members of congress (that comes out to a few more than four years of congress).
  • Give Water Wells for Africa enough to build 45,000 wells every 11 days.

At this point it begs the question, do they deserve that kind of attention?

Mind the Gap: My experience at Grace Hopper

Last month, I had the opportunity to attend the Grace Hopper Celebration for Women in Computing. For those not familiar with the event, it is one of the largest gatherings of women technologists at a conference focusing on technical talks, succeeding as a women in tech, and discussions on the lack of gender diversity in tech. The tech industry has some of the worst ratios of gender diversity in the entire US workforce. This was a problem that I recognized, but at the same time had absolutely no idea how to either address the issue or help become part of the solution rather than part of the problem.

Grace Hopper wasn't my first experience at women in tech events. I had a prior experience at a local women in tech meetup that was...well...shall we say less than enlightening. While attending with some friends from my university I was called out by another female attendee asking why I was there (almost accusingly). After the event, I ended up backing off for a while on other women in tech events. I know I need to understand the problem, but if I was to expect being called out at multiple events that I would go to, I wasn't prepared to handle that.

Jennifer, a good friend of mine, attended the aforementioned event and suggested that I try to attend a larger one (specifically mentioning Grace Hopper). She helped push me out of my comfort zone, assuring me that the crowd I would meet at a larger event would be different compared to what I experienced at a smaller one. I credit her for pushing me to attend this year.

So, bags packed and tickets purchased I headed down to Houston.

On the first day of the conference, I have to admit it was a little odd being one of only a few dozen men at an event of more than 12,000 women. The environment I could best describe as a Mecca for women technologists. From descriptions I heard from other women and my own experience going to Hajj as an American Muslim, I imagined that being in that environment as a women was almost like a very large family of sorts. Meeting people that are in very similar situations as your own all experiencing the same challenges and working towards the same goals.

As a guy there, I expected to feel the exact way women felt in their own tech environments. I was bracing for comments and call-outs, the odd looks and the confusion. In other words, I expected the tables to flip. I wasn't really a stranger to this, being a Muslim in America and someone that looks Middle Eastern, I've gotten my own share of glances and glares. The most surprising part of it all?

Nothing happened.

I wasn't called out for being a guy in a crowd of women. I wasn't glared at in odd ways or talked to differently. The question of "How do you feel as a guy here?" wasn't even the first thing that was asked by people I talked to.

I suspect the reason for this is that while the ratio is flipped at Grace Hopper, everyone is so keenly aware of the problems of stereotyping and unconscious bias that my experience was rather pleasant. I didn't even have to address the questions about my race or religion (which is portrayed as one that inhibits women's rights).

Having had a chance to adjust, I moved on to attending the sessions. My goal for going to Grace Hopper was to get a better understanding of three things: the problem of gender diversity, the ways women address it in their own positions, and the ways that I can address it as a male in my position. With this in mind most of the sessions I attended were focused on career building, experiences of senior women leaders in their positions, and learning what has been or is being done to solve the gap.

The biggest lesson I learned from the whole event is how valuable diverse opinions are when brought to the same table. For example, since graduating college and beginning in the workplace, I decided that I would not work more than eight hours a day. In a lot of tech companies, engineers will work ten or eleven hours a day get a project completed or to make a deadline. I didn't want to bind myself to that lifestyle. My reason for working only eight hours was purely selfish, I wanted to have time for a social life and time to decompress. Because of that, I wasn't a strong advocate for keeping the full time job a 40 hour work week because "I'm just a junior engineer" or "I don't need to leave at 5pm, maybe I should just stay a few more hours."

The perspective I got from attending Grace Hopper is that some of these issues matter quite a lot more to different crowds of people. For example, the 40 hour work week is critical for engineers that have (or want to have) families. A large number of attendees I met were or wanted to be married, working, and have the flexibility to raise a family. Another example is the factor of a woman's ability to become pregnant as a factor in promotion decisions. I didn't even consider that something like that would factor into a career discussion.

These are factors I never would have thought of without being in that situation. It emphasizes the importance of having a diverse voice in gender, age, and race at all levels of an organization due to the wide range of perspectives you get from it.

The other major lesson I gained from the experience is that a lot of cases of discrimination or negative comments are usually unintentional. Generally explicit racism/sexism is easy to see and call out, but comments that are less easy to spot such as microaggressions or unconscious bias aren't as easy to remember.

For example, being an Indonesian-American male, I get remarks like "you speak English really well" or "where are you really from?" quite a lot. Likewise similar comments are often made towards women, but they usually take the form of degrading her ability to perform at her job.

Some of the workshops talked about this a little bit and how to combat it in a more meaningful way. Not combat in an aggressive manner, but in a way that subtly shifts the mentality of those around you. A large part of the discrimination occurs is due to human inexperience with a particular scenario.

With that experience, would I go again? The answer: likely not (at least not for another year or so). While I enjoyed myself and think it was good for me to be part of that conversation, it seems that it would be more constructive for me to encourage other women and men to go and witness this. Grace Hopper, from what a lot of my female colleagues have told me, is a chance for them to have the conversations about being a minority that are difficult to have in their normal environments. While it's important for men to be part of the conversation as well, unless the attendance is raised for the event, it feels odd to take that opportunity away from other engineers that need that community support.

Likely, I'll find myself there at some point soon, but we'll see what next year brings this way, what progress has been made, and how I can further my role in the best position.

#IStandWithAhmed: An Open Letter to the Superintendent of the Irving School District

 To:  Jose Perra <>

Dear Superintendent Jose,

My name is Tariq, I am a software engineer and I ask you to stand behind Ahmed Mohammed and his family to defend his right to express his creativity and inventiveness. As a mentor for First Lego League teams, it is difficult to get kids into that initial dive to get them excited about STEM.

You have a case where a bright student was disciplined, frightened, and humiliated by one of your teachers because of his expression of his work. Ahmed said later that he will never bring an invention to school again which is a loss for the school and a shutting down of any desire to make more inventions.

As Superintendent representing the teachers, schools, and the best interests of the students therein, I request that you:

  • Provide public verbal and physical support of the family in their case by demanding the charges be dropped against him.
  • Discipline the teacher that called officers to the school and implement measures such as diversity bias trainings to prevent it from occurring again.
  • Call on the Irving Police Department to investigate the statements of the officers and their behavior towards Ahmed.
  • Continue to fund STEM programs such as robotics and maker spaces for kids to have creative outlets and to make teachers familiar with the work they can create.

I look forward to your reply and action to support Ahmed and the creativity of all your students.

Tariq Yusuf

Windows 10 Digest: A Step in the Right Direction

Microsoft recently released Windows 10, an attempt at unifying the desktop and mobile experiences through a single unified interface. When it comes to mobile, Microsoft hasn't had the best of luck. Windows 8 (and 8.1) were attempts at bridging the two worlds of desktop and tablet but only optimizing for the merged cases. Windows 10 seems to be a drastic revisit of these assumptions. I did a fresh install of Windows 10 to see how the experience would be for the new user and here's what I found.

First Power On

Upon a fresh install of the system, you get a clean screen that explains in pretty human terms what you need to do to set up. There were a few nice features like Wi-fi network sharing (No more asking for passwords!), and individual customization of privacy preferences. The downs? There's still a merging of Microsoft accounts with the PC account which still feels really odd to use even with the nice sync features. The privacy defaults are also pretty alarming. One of the screens states (if you use the defaults) that Microsoft will use your keyboard input, pen input, voice, etc. to customize your experience. It seemed like a little much to me and the fact that a lot of the power features (like Cortana mentioned later) require this or a large set of them.

Desktop or Tablet?

One of the small features that made me really happy is the fact that you can really use Windows 10 as a desktop or tablet and it's seamless to transition between the two. I'm running Windows 10 on the Surface 3 and as soon as I flip the keyboard back (or disconnect it) it knows to switch to a tablet mode and optimize for that case.

Microsoft has also finally caught up with other systems and added Multiple Desktops to the Windows features set. However it's very minimal in the sense that it allows you to have multiple desktops, but doesn't have the nice features of swiping between them or being able to just peek at what's in another desktop without switching to it.

The start menu is also back, but not as you might remember it. On the desktop experience, you have a sort of mini start screen on the right hand side with what you typically think of as your traditional start menu on the left hand side. I find it's a nice compromise between the two interfaces and still gives you easy access to nice features like search and all apps (which also has it's niceties in the tablet mode start screen).


It's the nerd trump card and Microsoft played it well. Cortana appears to be more Microsoft's answer to Google Now than Siri. Occasionally it will show a message in the search box letting me know of an event or suggesting something I might like to know. The voice recognition technology is quite mature and detects most of my complex statements on the first try.

Unfortunately, it comes at a cost, Cortana requires a whole bunch of permissions to even begin working. Unlike Google Now which is fine using subset of the permissions, Cortana appears to request a large amount whether you use them or not. Immediately after starting it, I was asked to provide location access and input personalization before microphone input which seemed quite odd to me. I was only asked to provide microphone access once I tapped the new microphone icon that showed up.

On the bright side, Microsoft makes it easy to just use the normal search feature without enabling Cortana which was one of my favorite Windows 8 features.

Microsoft Edge

Edge feels like what Google Chrome used to be: simple, clean, and getting you exactly where you want to go. It's a really simple browser that just starts up and goes to where you want. Unfortunately you still have the zombie ruins of it's begrudged forefathers that refuse to render certain web pages. I'm not talking about sites that block rendering like WhatsApp, I'm talking about websites that should render like Google Play Music's web interface or even GitHub.

Edge appears to be going the same route as Chrome in the sense that it's starting out simple and will flex as demand decides. I'm looking forward to features like add-on support from Chrome and Firefox but it really feels like something that should've shipped with the browser as a default features. Because of this, it's really too early to tell and not all that useful in it's current state.

Overall Impression

I think Microsoft is definitely taking a better direction this time around. Some of it's ghosts from Windows 8(.1) are still haunting it like the assumption that everyone is a power user in some of the small feature details. For the first time in a while, I'm excited to see what Microsoft does with Windows from here and what's coming next.


"Are you Mocking me?": Overriding object behavior in Python Unit Tests

One of the things I've learned working at Google have been the importance of testing code such that it executes reliably and consistently. Most of my familiarity with tests comes from testing individual modules that I write (read as unit tests). I've commonly faced the problem where I have code that makes a network or disk I/O request or relies on some input from an external module I have no control over. Enter the concept of mocking.