Parham Doustdar is a blind programmer and joined the show to talk about the advantages he has being a blind programmer, the tools he uses, why he had to quit school, and carving your own path.
Note: We couldn't stop using visual words when talking with Parham — even he couldn't help himself. So you'll get to hear us all laugh at ourselves near the end.
Toptal – Take control of your career and join the best at Toptal. Email Adam at email@example.com for a personal introduction to our friends at Toptal.
Rollbar – Put errors in their place! Full-stack error tracking for all apps in any language. Get the Bootstrap plan free for 90 days. That's nearly 300,000 errors tracked totally free. Members can get an extra $200 in credit.
Linode – Our cloud server of choice! This is what we built our new CMS on. Use the code
changelog20 to get 2 months free!
- Interviewing a good backend developer (without sight) · Issue #437 · thechangelog/ping
- MUD - Wikipedia, the free encyclopedia
- An Autobiography of a Blind Programmer – Parham Doustdar's Blog
- The Tools of a Blind Programmer – Parham Doustdar's Blog
- The Advantages of Being a Blind Programmer – Parham Doustdar's Blog
- Eclipse desktop & web IDEs
- Aphantasia: “how it feels to be blind in the mind”
- Hero: Uncle Bob
- Hero: Uncle Bob Martin (@unclebobmartin) on Twitter
- Docker - Build, Ship, and Run Any App, Anywhere
Hi I’m Parham Doustdar and you are listening to the Changelog.
Welcome back everyone. This is the Changelog and I am your host, Adam Stacoviak. This is episode 206 and today, Jerod and I are talking to Parham Doustdar who is a blind programmer. We talked to Parham about the advantages of being a blind programmer, the tools he uses, quitting school, carving your own path and more. We also couldn’t stop using visual words when talking to him and even he couldn't help himself either. You will laugh a little bit in this show... We've got three sponsors on this show: Toptal, Rollbar and Linode. Our first sponsor of this show is our friends at Toptal, the best place to work as a freelance software developer.
Alright, we're here today... Jerod, we’ve got an interesting guest here today. We’ve never had someone who is blind on this show, and this came from an issue. We've got Parham Doustdar on this show and -- where did this issue come from? What was the premise behind this?
Yeah, we have to give a thanks to listener Omid [unintelligible 00:01:55.18] - I probably butchered the last name there, sorry about that Omid - from Finland who pinged us on our repo in GitHub, that's Github.com/thechangelog/ping, where we take all sorts of suggestions, as well as news and repos and stuff like that, pulling us toward Parham and saying "This is an interesting fella. He has overcome being blind in order to be a backend developer and he seems like an inspirational person." So I hadn't heard of you before, Parham. I appreciate the ping there Omid, as well as... Another person came in here, Sallar, I am not doing so well here with names, Sallar Kaboli, who also added "Not only does he type and code in English, he types and reads Persian or Farsi as well. This is very difficult in general, and I admire him." You've got some admirers out there Parham, and thanks for joining us.
Hi. It's great to be here and thanks for inviting me and thanks to Omid and Sallar, who are… Well, they seem to be originally Iranian, so thanks to them also, for pointing me out. It's great to be here. Thanks for having me.
I was gonna say, you handled their names with way more grace than I did.
That's because they are Iranian, I just got a hint. [laughter].
Was it the last name that got it, or was it the first names?
Well, I actually talked to them on Twitter. Sallar is actually one of the guys who worked on a really useful library on Github. I actually first noticed his name when I was writing an article for SitePoint and his name always came in as the most popular GitHub contributor in Tehran. So if you go to my article on SitePoint, he is like at the top. I was like "Who is this guy?" That’s how I actually met him first.
Maybe the best way to open this up, since this a first for us, Parham, is that you can help us put some definitions behind things. We have never had somebody who's had what some might consider a disability, being blind or without sight. How do you describe how you are, your condition? What words are the right words to use?
Well, it's kind of hard to say, but I actually consider myself as being blind, which is like “I’m blind”. I think the first step to knowing yourself is accepting yourself as who you are. This came to me when I was like nine or ten, and you might not believe this, but even my family don't use the word “blind” with me. It doesn't really make them feel well. It makes people feel like you are lacking something, and they don't want really to induce this feeling inside you. So they start coming up with all these words, like, “differently-abled” and... I don't know, we have a lot of those here.
I actually think a lot of people use "differently-abled", but the fact is that before you can actually grow as a person, you need to accept your shortcomings, your weaknesses, your strengths, and instead of seeing handicapped people or blindness as a weakness, we could actually see it as a feature which would allow it’s to see its weaknesses and positive sides both at once, which would allow us to use it and abuse it sometimes. So it's just like a feature in any software; when you start adding a feature, you are probably missing out on a few stuff, so if you look at your life like that then it starts becoming an experiment that you can improve on.
I liked what you had said about choosing your own path and embracing your blindness as part of how you carve out your own path and life, and how you may not be able to do the things that everyone else does the same way they do, so for those reasons you can't go down the same path. You can't go onto Stack Overflow and follow the same path as someone else does to a solution. You kind of have to take a step back because of your different features and choose the path that actually fits for you.
And I think that's an interesting way to start the show, simply because somebody might look at - and Jerod and I look at your life, we look at the way you describe yourself and what you have done as like a superpower, like you’ve got things and you’ve got ways of doing things that Jerod and I just can't appreciate, and some of the listening audience, because we have sight and you don't have sight. So I wanted to put that out there first to sort of determine what the best way is to describe how you are, so we didn't obviously offend you or go down an assumed path and be like: “Man, we really messed up there!”.
No, it's actually great to… One of the really great stuff that people like you and Jerod do is that they start introducing blind people or different kinds of disabled people. What you do is raise awareness and that’s really cool, because people will get more comfortable. You won't believe how many times I have had people not talking to me because they are afraid of offending me at conferences that I've been to. They're like “Oh, how can I even start a conversation with a guy who is blind and codes?” And I'm like: “I’m not an abomination, you know. I don't bite!” [Laughter]
[00:07:47.07] I think there's this... I have to speak to that a little bit because I think that I might be that person sometimes. I don't wanna be that person, but I can catch myself at moments of that kind of situation where it's sort of like a paralyzation where I kind of get paralyzed by some sort of fear that I don't want to offend you, and it's just this potentially awkward situation... And people don't like feeling awkward, let’s agree with that. So for those reasons, you don't just don't get involved with something, or you just sort of avoid it. Some people call it anxiety... Whatever, but I might be that person sometimes, so I apologize in advance for anyone if I ever do that.
No, no. The point of what I said is that when you see me and you’re like: “Oh, I don't actually know this guy, but I heard another podcast about some other blind guy who did X and Y... Let's just go talk to him”. The fact that you have actually heard someone speak about his blindness gives you more of a courage and what you guys are doing is awesome because you're just helping the blind.. Well, not just the blind, but you get my drift. You are helping people integrate themselves with people with disabilities, so thanks for that.
Let's dig into, I guess, you more so than us. We appreciate obviously, you're giving us a pat on the back. You know, one thing we try to do with this show is shine a spotlight in areas where it's just not being shined, and to lift those up who don't often get the credit. You might look at our past shows and see the big names and small names, so to speak, but we try to really focus on the positive side of this community and to shed light in areas where it’s not being shed. With that said, let's open up your back-story. Let’s figure out where you came from, what got you into programming, what your origin story is. So let's start there with you.
Sure. Yeah, I was actually born blind which, is a really great thing because I didn't lose my sight in the middle of my life, which would probably push me into a period of depression where I would think, "Why me?" and all these totally useless thoughts. In my childhood, I started thinking about what I could and could not do. In the very beginning it was like... I started slowly, realizing that I could not do a few things. This was when I was about eight or nine years old, and this was mostly coming from the side of my family and my friends, who constantly were so smart to point out the stuff that I couldn't do.
I actually wrote a response about this on Quora about what was the worst thing that I went through in my life, so this is like a recap of that. So what happened was that slowly I started to think of myself as someone who couldn't really do anything. A few days back I was running around and climbing up walls even though I couldn't see, and all this was all through touch. And then one day, I'm like "What, if I fall? What if I break my neck, or something?" Let's just not go there anymore. Let's start being really quiet and not having much fun, even though that's fun, but let's not do it because it's dangerous.
This is the kind of stuff that people really get when they want to, I don't know, start a new business, but this was more of a life issue for me, like "How do I want to continue my life?"
At some point when I was 14 or 15, I starting getting really mad at myself for pulling myself into this position. I was like: “You can really go on living like this because you can't really stop doing what you like to do simply because it's dangerous. This is the time that you can risk for free”, because I was always being told that when you get older you can't really risk because the cost starts getting high.
[00:12:11.05] So I kind of started changing paths again and I started working on a computer, even though... Well, I'm in Iran and we have been embargoed and sanctioned for a very long time. You don't really get much of a technical background here. Computers were really new back then, so I was like, "Okay, let's just see how we can use a computer."
There was this woman at my school who actually told me about this software that could be a screen for the blind, and my parents were like, "Well, he can't see the screen, he can't really use that", but after like two or three days where I figured out the system through brute force - I would just press keys and see what happened - they started thinking that this could work, and I got a PC from my parents. That brought me into the world of computers at the very beginning.
We didn't really have any internet access back then. It was like at some certain hours like from 5 o’clock AM to 9 o'clock AM only, but after a few months the internet access in Iran improved and I got a dial-up internet access.
In the beginning I would just play text-based games on the internet. They are called MUDs, like “Multi-User Dungeons.” They are kind of a tabletop RPG turned into a text-based game that is interactive. You type in commands, you get in the app... It's like a command prompt, or a command line application. That's actually where they originated from.
So this was how I got introduced to English, and I had to know English really well to be able to play. This kind of led me to get my English language teaching degree when I was 17. That really jump-started my English, which actually jump-started my programming because I could now read stuff.
I started playing around with PHP when I was 18. I was going to a university to study computers and everyone was against this decision because there weren't any books, and I had actually studied mathematics in high school and I sucked at mathematics and I still do, but I kind of got through all that because I had no books. And the education system does not allow for blindness in mathematics and stuff. I will actually get to that later in the show.
But what happened was that I got a… You know, I went to the university and I couldn't actually learn anything because all the stuff was on a board, so I couldn't really read the board and no one would read me the board. So I switched to actually trying stuff at home, which led me to have great marks when it came to programming courses, but really low marks when it came to theoretical courses, which I actually left the university for, with just an associate degree and I got a job offer from a Canadian company, which actually started my official professional career as a PHP developer.
[00:15:43.29] I saw that in your post about you quitting school and the constant pressure of trying to deal with professors who just kind of wanted to get their job done, because like anybody I guess we might feel like we are being bothered by someone's features or disability, and having to do extra work to help somebody get by. It's kind of crazy how that plays out that way, and we all kind of navigate this world with… We all kind of think about someone else's situation and we try to have empathy, but I guess we only have so much empathy potentially, and then you're sort of like, "I can't deal with that" And for those reasons you kind of were pushed into quitting school, which is not cool... But then it also leads you to brute-forcing it which I can totally identify with, because - I think Jerod would also agree - I think that a lot of us just brute-force our ways into most things. I liked how you said you would just sort of hammer the keys or hit the keys and figure out what happens, and I am assuming listen, but I can totally identify with that portion.
That's what I do all day. Just, kind of hit the keys and see what happens. [laughter]
Hit the keys and see what happens, there you go.
Yeah, I actually Ctrl+S and go and refresh the page and see what happens, but I get what you mean.
I think the problem is that most people who teach are not actually given the toolkit to teach effectively, they are just using [unintelligible 00:17:16.19] as a reference and going through that blindly, excuse the pun. [laughter].
So what happens is that a lot of people actually wanted to help, but one, they didn't have enough base knowledge to answer my questions. A lot of visualization in teaching and I get that a lot and recently too, because I am preparing to get a job offer from another country so that I can relocate, but the biggest hurdle that I faced so far is the teaching of algorithms, and this stuff is so complicated that people start using images to convey meaning. And what happens is that it's so complicated that you haven't really practiced actually saying it, so you don't even know how to say it.
If I was to say - for someone who wants to learn data science, because I tried that too and failed, but if I started to ask you, "Why on earth do you want to plot data on a plot? Why do you put things on a plot? Why don't you just figure out the relations between the values by going through them? Why should you draw them on a X and Y axis?" And you couldn't really answer that without a really deep knowledge of how the brain works, and we don't really have that in Iran. I don't really think we have that kind of deep knowledge in the United States, in professors that teach in the university in programming, because if they had that much knowledge, they would be teaching psychology I guess, or NLP, or I don't know... But you get what I mean.
So what happens is that people don't really have the knowledge to help, even though they want to help. So that they do is that they start getting defensive because they have come up against this problem that they can't solve, so they are like, "I don't know, this guy just doesn't exist. Let's go on to teaching."
It's like a problem you can't quite ignore, but yet it's there. I feel you on that front, it's a terrible … I could even identify with being in that position before you hit some sort of hurdle; maybe not an exact person or something like that in that in this case, but where you hit this hurdle and it's just easier to ignore it and move on, rather than actually face the problem and deal with it, and actually help the person if it's in this situation.
Yeah. And one thing I started to hear a lot and I think I actually identified with was, "Dude how much am I getting paid for this job? I don't really wanna do this". I actually identify with that, but I don't know.
[00:19:57.27] I think somewhere down the line we actually need to focus on these kinds of problems. I was actually talking about this with Saqib Shaikh, that you might know - he came up with the idea of AI glasses that you just... I think you might have seen the video. Glasses made by a Microsoft engineer who's blind, and now he takes in photos and then AI actually starts reading stuff for him and identifying images. He just kind of made it to Hacker News front page of the just at the same time as I did. That was a coincidence, but it was kind of a dream for me to talk to someone at Microsoft, so that school.
But we were talking about this and I was just telling him that even sighted people can actually use this kind of information because not everyone learns through images. At some point we need to focus on what different methods for teaching there are, for when we want to teach mathematics. In terms of mathematics, it’s so theoretical that no one has even bothered to look at different ways of teaching it. So what has happened is that there is only one path and you’ll have to take that path only. Whereas in programming you have a lot of different paths.
I learnt programming without reading a single book, but I actually did improve with reading books. I'm just as affected with books like Clean Code, just as it has affected a lot of people, but you can actually code without doing clean coding, you know? So there are a lot of different paths to learning programming because it has been made simple, but for learning different contexts of concepts like mathematics - that doesn't really work well, and algorithms too.
Well, we wanna hear, Parham, not just how you got here, but we also wanna hear about how you go about your work, how you go about your learning, your experimentation. So we are gonna take a quick break and on the other side we want to hear from you on the tools you use, the struggles you have and some of the solutions that maybe you have come up with; I think everybody is excited to hear that from you, so we’ll take a quick break and we’ll be right back.
[00:23:46.12] Alright, we are back and we wanna learn about the tools you use. Recently Parham, you wrote a blog post titled “The tools of a blind programmer." If you are listening along, check that out in the show notes, we’ll link it up. And there you go through all the different tools you're using and kind of why the ones that you pick, which ones help you, which ones don't. Can you walk us through that? And then we have some broad categories of screen readers and languages and IDEs, operating systems, productivity tools... Maybe pick a path through there and tell us what tools you use, and maybe start with screen readers. That seems to be [unintelligible 00:24:19.17] one.
Sure. I’m actually going to assume that people don't really start going through that, so I am just going to give a quick TL;DR. Well, a screen reader is a software that reads the screen. I'm using NVDA, which is an open source screen reader which is programmed by the blind. It's actually done by a non-profit organization called Non-Visual Desktop Access. That’s what NVDA stands for. It's only a Windows screen reader, and unlike what most people think, you can't really take a Windows screen reader and just install that into Linux and hope that it works, because the APIs that these screen readers use, the operating system APIs are so low level that you can't really just copy one to the other always and just get that to work.
There is a screen reader for Linux, It's called Orca. It works in the Gnome environment. It doesn't really work on the console, but for console you've got SpeakUp. Actually I have started forcing myself... Ever since writing that article, I got a few questions about, "Is Linux really accessible?" So I’ve started playing around with Linux. I'm actually talking to you from the laptop which has Linux installed on it. I of course kept my PC around with Windows, so that when I want to have a quick fallback, I can actually refer to that.
I have been playing around with Oracle and SpeakUp these days, but in terms of Mac, Mac has Voiceover, and iOS phones have same screen reader; it's called Voiceover and it's a really good one, because Apple doesn't really do screen reading and it's kind of like... I would have guessed it is as good as Narrator, which is on Windows and it sucks, because Microsoft doesn’t do screen reading. They don't really have any blind people to code this stuff.
So what they do is they just start putting something together that just gets the job done but doesn't really do that really well. Apple has really done a great job with this. The screen reader is built into the operating system, so when you get an operating system upgrade, your screen reader upgrades too, so that’s really cool.
One other thing is that your screen reader doesn't really crash because it's one of the operating system processes, so when it crashes it can just reliably restart itself. But on Windows and Linux, since screen readers are just other processes, sometimes when your CPU or memory usage gets up, then your screen reader starts lagging, which is something that happens a lot when you are using an IDE.
In terms of IDEs, I use Eclipse. Other IDE’s are not really accessible much, but PhpStorm has been improving because Android Studio has been improving, and the changes kind of get pushed upstream to the IntelliJ platform. So I am hoping that PhpStorm gets really updated, even though I would have to use a pirated copy because I am not really allowed to buy this stuff.
[00:27:52.21] This is one other issue you have... I got a comment on my post and it’s like: “It’s one thing that you are blind, but it's another thing that you are doing this in Iran”. So yeah, being in Iran has its own quirks, that you can't really buy anything and you will get blocked if people figure out that you are Iranian.
Why is that? I don't understand that myself. Whenever I read in your post there, how you had to use a pirated copy of a paid one, I didn't quite get that. Why is it like that?
Well, politics usually... Well, for some reason at some point - I don't really even remember why - but at some point our two countries decided that they don't really like each other. So the US started to have these embargoes and sanctions of selling stuff to the Iranians. Like, I can't really have a job with a business that is working in the US. I can’t download stuff; Google code is blocked and, I don’t know... Docker, for example, is blocking us, and there are a lot of websites like SourceForge and Apple iTunes, and many more.
It’s kind of crazy that politics can play... When you rewind and sort of zoom out from this entire issue, here's someone who has a passion for programming, has a superpower, a feature or a disability or however you wanna term it, and they’re just trying to get by in life, they are just trying to forge their own path, and you've got these politics that says you can or can't buy something and it just blows my mind that you need a piece of technology that should be accessible to you, and because of where you live and because of the politics that don't really even involve you personally, affect your life. It just astounds me. Obviously this isn't a politics show, but just putting it out there. It's kind of crazy.
Yeah, and this is just the very beginning. For example, I am not getting the - when I was back in university I was not getting all the features that people in the US could use, like books or human readers or technology... You know, hardware like I could use. It's kind of like a difficult road and it's not really easy, and politics doesn't make it easier, so that's kind of difficult. So that's why, as far as I can remember, I have been trying to get out of Iran, because I wanted to have a better reach to affect people. But let me get back to that later, that's a really big issue.
We'll earmark that.
Yeah, we'll come back to that.
Let's talk about the technology, because you said that Eclipse is accessible and other IDEs aren't. What are the specific features of Eclipse, or what are the things that make it accessible for a blind person, over something like PhpStorm , or some sort of other IDE?
A really big thing is hotkeys and keystrokes. PhpStorm and IntelliJ in general, they have a lot of hotkeys, so you don't really face the issue of not being able to do something, but the problem is that there are a lot of popups and windows in IDEs that stay out of your way, so you can't really navigate with the arrow keys on them, but they provide useful information. For example, when you focus on a function or when you hover you mouse on it, you get a popup window - I don't really have an idea where that appears usually, but there is this popup that gives you this information of this function, if you were to call it, like the arguments and types of arguments and so on. So as a blind person, I need to have access to this and usually I don't, because that's, as I said, a different window, and there's no way to get to it.
[00:32:00.22] So what accessible IDEs do is that they have this keystroke to actually focus that window, to make your cursor go into that window. Eclipse, for example, has F2 and when you press F2 you get this documentation, you get autocomplete or content assist or IntelliSense, whatever you call it, and you can just navigate on the different items using the up and down arrow keys. But usually, since again, that happens in another window, when I use up and down arrow keys, I just hear the current line, because my screen reader just thinks that I am trying to move a line, but in fact I am not.
So when people start to work with screen readers, they will see that there’s a lot of stuff that might work for someone sighted, but they actually hinder the productivity of someone who is blind. I think this is where text-based IDEs come in, like Emacs and Vim. I haven't really used Emacs. There is a plugin called Emacs Speech, which has been written by T.V. Raman, who works at Google. This is kind of like a speech-enabled interface to Emacs, with specialized keystrokes. But I have kind of hit this barrier here, because I need to learn to use Emacs Speech before I can learn to use Emacs, and I need to learn Emacs before I can learn to use Emacs Speech. So I am trying to get through that and I will later on write a post about how my experience goes, but for now I can't really comment on those. I don't really have enough experience here to say that...
I can't help but think about the some of the smallest things that maybe aren't -- maybe you've overcome them quite easier; because I don't have any experience with screen readers, I wonder how it even deals with like a syntax error. Say you forget a semicolon at the end of your line of code and you save it and you go refresh the page and all hell breaks loose. How do you go about finding where that is? Does the screen readers help you find that? How do you do that?
Well, you usually would get a... I don't know, I think IDEs highlight that line in red or maybe draw a line under it, but we don't really get that feature. So what we have to do is that we actually have to try really hard to not make a syntax error, and when we fail... Well, some IDEs, like the Go Eclipse plugin that is for working with the Go programming language, I've seen that one actually provide information in that... I talked about the F2 key, so hen you press F2 it just tells you that you have an error in this line. The PHP plugin actually does that too, but the problem is that you need to press F2 on every single line until you get to that line where there is an error. So what I usually do is that when I... You know, for the past two years, I have done mostly backend work, because understandably I can't do HTML and CSS, so what happens is that when I run the application in the command line I get this error saying that line 24 is, I don't know, like unexpected left brace, and then I figure out, "Oh, I probably left out a semicolon there, or something." So I just go to line 24 or check out line 23 and 25 and it just shows itself, usually. When you start making syntax errors with the programming language, you kind of figure out what error means, so after a while it just becomes a habit.
[00:36:12.15] You just opened up a whole new ball of worms for me, or whatever that saying is, because... I mean, stack traces are almost...
Can of worms!
Thank you! Can of worms, ball of wax - mixed metaphors. Stack traces can be almost indecipherable when you are staring at them, let alone to have a piece of software read you a stack trace. Do you find that to be just completely confounding or do you find that not to be not too bad?
Well, I actually... One of the very neat features of a screen reader is... Well, there are actually two. But the first one is that you can control the mouse, that's really cool. So I can actually focus on a line and then I tell my screen reader to bring the mouse pointer here and I can just tell it to activate the left click functionality on this side, so that's really cool. But the second thing is that most people think of screen readers as a software that just starts reading a window from top to bottom, without actually giving you much control, but in reality you can actually jump around. What I actually do when it comes to reading stack traces is I just read the first line - well, depending on what language I'm using. In Python, I just read the last line, because that's where... The whole stack doesn't make sense, but then you read the last line and you're like, "Oh, okay..." But when I wasn't familiar with the Python stack traces, I would just look at that and be like, "Wow, where does this even start? I had no idea."
So it's more of a habit. You need to form a lot of habits as a blind person, to get around really fast. Because there is all this useless information and you kind of have to filter that out. It’s mostly mental. Your screen reader doesn't do it, your eyes don't do it, because there is no highlighting. For example, one thing that... You know, I read at 530 words per minute, right now - it's going up to 550 pretty soon - and most people say, “Wow that's really amazing”, and what I usually point out at this time is that you actually do read more than that, and that's because you have the ability to skim.
Like, imagine that you want to have a list of transactions, like 100 transactions on a page, and you want to quickly look at a list of successful ones, for example. Most applications provide the successful ones in green and the failed ones in red, so what you can do is just scroll down, have a quick look and you're like, "Okay, so most of that has failed." But me - no, I have to go through every single row of that data. The most I can do is just focus on the status column and just tell my screen reader to read that column, so what I hear is "Success - success - failed - failed - failed - success..." But still, there's no way of actually doing that as quickly as you can with sight, so there's a...
I feel like you should start a live stream or like a Twitch feed or something, so people can just watch you do your thing. Just listening to it, I am just imagining how that goes, and I'm probably imagining that wrongly. I don't know Adam if you are trying to do that as well, but I think it would be... I guess live coding is a thing that is going on nowadays, and people... Obviously, with the success of Twitch, people like to sit around the internet and watch people do things, whether it's playing video games or code. I'll be fascinated to just watch you code for an hour. Just FYI.
[00:39:58.25] I think in my case - well, not my case in particular - I am trying to imagine what it's like... Because Jerod, you and I might imagine, and when we share our imagination, I guess, when we actually imagine in our brains, we sort of paint a visual picture and that's one thing I kind of appreciate about those who are blind, is because you lose what is your physical sight, but you don't lose your memory sight.
I learned this from Blake Ross actually, I think he pinned a post recently about how everyone has this ability to visually paint a picture in their brain, in their mind’s eye so to speak, that's where that term came from, and I'm curious, Parham, if you have that ability to paint something in your mind and visually see something in your brain. I guess maybe it might be hard to really know if it's true for yourself because you have never really seen, so you can't... It's sort of like false for you in a way, because you are not sure if it's true. But that's how I think of it... I try to imagine myself in his position, I try to imagine what it might be to hear through his process [unintelligible 00:41:02.25] vibrations or things like that that alert him, versus sight. It's kind of [unintelligible 00:41:12.28] about that, sorry.
That's kind of a really great thing to do, and one thing that I usually explain to people to help them come into my world is I can't really imagine something I haven't touched before, whereas you can just look at TV and you see this, I don't know, this video of a lion -- I don't know what lions do... Or a panda hanging off a tree, or whatever, and you don't actually need to touch a panda to know what it looks like, you just need is an image. But I don't really have that.
If you had like this TV that would actually project tactile stuff, maybe I could have that, but the whole model of the world is built around sight, so I can't really know. Vision doesn't really mean the same to me and you, so it's kind of like a different terminology.
But on Jerod’s note though, I do think that there is an audience out there who would like to see what you do. Even though you can't see it visually, I am there's tons that... I mean, I can see how a Twitch stream of what you do can be embraced. You may not be able to see it, but others seeing it, seeing how you process things would inform a lot of empathy for one, a lot of insights to those who are leading or building these technologies, that have sight, to leverage the ability to see, to inform them. I can see that's pretty awesome thing.
Obviously, the live side of it is not necessarily required, just even Screencast. I think just watching you interact with your screen reader, to tell it, to instruct it - I just feel like that would a powerful thing to build.
That's kind of interesting, yeah. I actually tried this with livecoding.tv. It was an interview and part of that interview was they asked me to interact with a screen using my screen reader. A huge issue we had is the internet speed in Iran is really low, so I can't really broadcast... The screencasting option that you just said is a really cool one. I might actually do that. I might do that. That's a really cool idea.
It's time for another break. Let's go ahead and close for that and take a break/ When we come back, I think some pieces we can focus on -- we kind of teased earlier, but carving your own path. I think in that section of your post you talked about how as you evaluate your path, you evaluate whether or not your blindness will be an asset, or - I forget what the other word was that you used, but just basically an asset or a...
A liability, that's what it was. I think it's kind of an interesting thing to look at. Let's take a break here and when we come back we'll talk about some of the advantages and disadvantages from your perspective. So let's take that break and we'll be right back.
Alright, we are back with Parham Doustdar. This has been an inspiring conversation I think, because we get to see - I guess using the bad pun you used before, to say see, where you said blindly navigating something... I'll just restart, that’s just stupid as crap! [Laughter]
Couldn’t even talk my way out of that, [unintelligible 00:45:48.00] put myself in, man!
That was a nice one though. [laughter]
That was a nice one, yeah.
Yeah, I would actually keep that in somehow. That was cool.
We’ll leave that in. We won't edit that out. We’ll leave it in, because you said so, so why not. We said before the break - carving your own path, we talked about that. I really appreciated that perspective of your post, where everyone else might look at you - and again, there is that pun - but everyone else might see what you are and look at the way… I can't stop describing it in ways that are actually visual. See it's impossible, at least for me.
Right, that makes sense.
To read how you speak of yourself around your blindness and how you use it and how you've used it to navigate your life... It brought a lot of empathy into me with reading that part, because everyone is carving their own path and everyone hits hurdles. Your hurdles are different than ours, but I really appreciated how you described your blindness being an asset or a liability to you. Can you talk about the advantages and disadvantages of your blindness and show us some ways it's a superpower and some ways that maybe it's not for you.
Yeah, sure. I have a post called “The Advantages of Being a Blind Programmer” and when I actually posted that on Reddit I got a comment that said: “This just sounds like someone trying to push something that is, you know, negative, something that is a weakness, and convert it to something that is a positive point, whereas it's really not. You're just forcing it to be positive.”
I was actually afraid of that post coming off like that, so I conversed with this person and tried to get their perspective and edited my post so that it doesn't really get this attitude. But what we usually don't get is people looking at what they don't have and then trying to figure out where they can actually use this lack of whatever they don't have. That sounds really complicated, but let me break that down.
[00:48:06.06] So me, I don't really have sight, so where can I actually use this lack of sight? Well, I could do something that people thought maybe impossible because I actually like that kind of thing, so what I do is I just go to programming classes, or in my case I just start playing around with programming languages - not because I want to impress people, but because I really like to do this, and there is no other person around who has done this and this kind of gives me kind of a... I just get a kick out of doing stuff that no one has ever done before. So I use this fact and then I go forward. What happens is that when I go to an interview here, most of the time it's like the guy just looks at me and is like, “So... Do you program?” and I'm like “Yeah, I do” and he is instantly caught.
So what I can do is I can use my blindness, which is usually a weakness, and turn that into an instant marketing pitch. I have my elevator pitch down. I’m like, “I am a blind programmer” and everyone goes like, "Wow!" I haven't really done anything... I have just done something that people thought was impossible, and it's not really hard; it's just that no one has ever bothered to do it. So that's when your weaknesses kind of start to turn into advantages.
When you start having fun with your life, then you start doing things that might be impossible for others, but you just had fun and you just kind of did it without actually knowing that you were doing it. This is what happened with blindness for me, but it does obviously have its disadvantages, as I've said before. You can't really get a great education, you are limited with the accessibility of tools and accessibility of websites... For example when Facebook comes out, you can't really use that for two or three years, until they get around to making that accessible. So everything has a positive and negative point and that's what I'm trying to say, because most people just see the negative side, and it does have a lot of positive points.
For example, another thing that I talk about in my posts is how I actually talk to people. When you see me - that pun again - and when you come up to me and start talking to me, you have this instant connection with me because you start seeing something different. I don't really run out of talking points. Whenever someone just comes up to me we can start talking about my blindness, which is an instant conversation. I don't know -- what you call it? What's the word?
A conversation starter.
Yeah, yeah. Or icebreaker.
Yeah, so I get a get an instant ice breaker. It's a really great thing. For example, let me give you another insight into this. When I actually wrote “The Tools of a Blind Programmer”, this was my second post and no one gets 60 thousand views for their second blog post. That's really great for pushing me to write more, but when sighted programmers are writing, they are just one other person in that really big sea of programmers, so no one really pays much attention, and they have to write for three or four years before they can get to such a view count, but I just did that with writing about myself. I didn't really do something difficult.
[00:52:03.20] So what I'm saying is that the fact that you're different has its own, really overlooked advantages, and you need to look at your blindness or whatever you don't have as that. So when you don't have the knowledge to do something and then you learn that, you can just start blogging about that because a lot of other people don't really have that knowledge too, and they would appreciate your beginner input. That's another way of looking at the fact that like, "Well, I can't really write about this, I am so much of a beginner, so I have nothing to say." You can just take anything and turn that into something positive if you look at it like this.
You know, hearing you use visual words too to describe, even from yourself, I feel less bad now about doing that, but it also kind of gave me a new perspective, and I thought about -- we use words like 'see' or 'watch' or 'show' and we naturally think about them in visual terms, but I think that what they really are is a revelation term. If you kind of maybe put the word 'reveal' or 'revelation' in place of most of your visual words, I bet that it changes things because you can have a revelation, and we can have a revelation, and we both have different attributes in how we see the world, you know what I mean? So while the rest of the listening audience might hear and say, "Well, those are visual words." They are, but those visual words are actually describing something in a way that are nonvisual, to me at least. That how I think of it.
Yeah, but I never want to push off from the... I have this favorite author, his name is James Altucher and he has written books like “Choose Yourself!” - that was his bestseller book...
"Choose Yourself!", yeah.
Yeah, and what he does in that book, he focuses on his failures and his weaknesses, and that's how he actually tries to get his message across, and that's kind of a new, fresh perspective.
I think we all do that, I think we all have our weaknesses. I've got mine, Jerod’s got his and you've got yours.
It just so happens that yours is so... Unable to hide it. You can't hide your weakness, whereas maybe some of our weaknesses are less apparent and we don't have to lead with that. What I loved about what you had said there was... I'd love to actually hear your elevator pitch that you give to anybody about your blindness, but how you lead with that. To me that super cool, to recognize that what would typically be seen as a weakness, you leverage as the key feature, the selling point of who you are. I think that's exactly how you need to be honestly, because as you said before earlier in your life you were upset, that it was almost like it was your fault that you were blind; you blamed yourself you even said, and now instead you take what would typically be seen as a negative thing and turn it into a positive thing. We’ve said that time and again on this show, we like to focus on the positive side of things. I've said that in different podcasts about myself, that I don't like to let the negativity come in and let it define who I am. I like to focus on the positive side of things and see the positive side of things, because there is so much negative out there that if you listen to it, it would just drown you, and that's not a way to be.
[00:55:46.05] Yeah, like listen to music - how many positive music you hear daily? I don't know... Sometimes you just need to, as you said, focus on the positive to get the energy to wake up because if you don't, then you are like, "Okay, so what's the point of getting out of bed today? I'm just going to get whatever that happens to me happen to me anyway."
But for me, a really great turning point in my life to accepting my blindness was the fact that I kind of -- a lot of people might disagree with me here, so sorry; I'm not really trying to start a war here and that's not the point, this is kind of a personal thing - when I was 13, I kind of understood, and I still do, that whether or not God exists, this has nothing to do with my life. I'm afraid to believe that someone or something is controlling my life, and when I actually look at my life like this, when I actually embrace the fear of someone else controlling my life, this actually made its way into my own life in allowing others to control me. Others can't really define what I can or cannot do, it's only me. I can define whether I can or can't program. If I can program then great, but if I don't, it's just because I didn't try hard enough or I didn't know the solution. It's not that it's impossible, it’s just that I don't know how to do that.
When you look at it like this, when you start taking responsibility for what you do or don't do, this is the kind of thing that allows you to go and say, "Hey, I'm a blind programmer. Hey, just look", as opposed to other who kind of run away from being blind.
I had a lot of blind friends before who would even, as children, they would play like they were sighted. They would act as sighted people just because they were afraid of being blind. I would even hear things like, "I can read this or I can see this, whereas they can't." As far as you're going on like this and you're not accepting your weaknesses, this is not really going to work. At some point, you are going to say, "Okay, I can't do this." This is what defines me - my weaknesses, my strengths, they are what define me, so I might as well just accept them.
I think we're all dealt a specific hand, and that hand has its advantages and its disadvantages, and I think many times, certain people and all of us are given to kind of just complain about the hand, like "Oh, these cards suck. That's why I’m failing", or explaining, excusing away, as opposed to saying, "Well, these are the cards I got, and I need to go out there and do the best with the hand that was dealt to me."
So I think in that regard, you are a shining success story of somebody who said, "So I'm blind. I'm going to be a programmer anyways and I'm gonna make a life of something that I wanna do, despite all the drawbacks of this particular disadvantage." In that way I would say that you're super inspiring, so thanks so much for sharing that with us.
We’re gonna get to closing out there, so let's do a couple of our closing questions. The first one is programming hero. No doubt there are people in the community that you look up to, maybe a mentor, maybe somebody else who has inspired you to want to be a better developer. So if we had to ask you, who is your programming hero and why? What would you say?
[00:59:40.25] Uncle Bob, because he actually showed me... Well, I read his book called "Clean Coder" - not "Clean code" - when I was in a company, a startup that was failing because the software team didn't know how to act. His book came at the time when I was actually ready to hear that kind of thing. He changed me as a person, his book actually did. Both in terms of programming, his clean code book, and his clean coder book in terms of personality. I really got affected a lot by his book and I really thank him. I haven't really gotten to talk to him, but if he listens to this, I'm really glad that I read his book.
Very cool. That's not the first time we've heard Uncle Bob, is it Jerod?
At least once or twice, maybe three times.
Yeah, he actually taught me a lot about architecture, which is something that I focus on a lot when writing code, and the fact that I need the functions and statements to be really small to understand them, it kind of helps me build that kind of architecture. So my functions are six or seven lines only because that's how much I understand. Because if a function gets too long then I get confused, because I can only focus on one line at a time. So, couple these two together and I'm pretty much a really great architecture builder.
That's awesome. That's a distinct advantage there of your disability, because your necessity for simplicity ends up producing better software. Add that one to your blog post. Go ahead and throw that on in.
Yeah, blog about that. That's actually a really good point. But it also reminds people why, too. I was actually gonna say, in a funny way, you should be able to program with Ruby then, not PHP, because it's so expressive and tends to be very succinct in its form... But you’re a PHP developer.
Yeah, I actually dabbled with all kinds of programming languages and I really loved Ruby because it's really so expressive. I love expressive languages and it's just that I haven't really got a chance to use it at my job, so I don't really list that in my resume, but I’ve used a lot of programming languages.
Our next question we tend to ask at the end of the show, which we haven't done recently, but we’re getting back to it... Obviously our roots are in open source, it's where the crux of this show is, this bend/influence towards the community of open source software, the idea of open source software and those who are actively creating it, maintaining it, supporting it, doing it, all those good things. So in this case, we like to ask someone what's on their radar. In this case, if you had a free weekend and you were like, "Man, you know what? I'm gonna play with a new thing", or whatever it might be. What's something that's fresh on your plate, something that's open source or some sort of technology out there that you would like to hack on more, if you had more time?
Docker is one of those technologies that I really want to try and I haven't really gotten around to doing that because we've been blocked by the Docker team - they just have to block Iranian traffic. But I’m trying to figure out a way to get through that blockage and I've gotten success so far, so when I do get a free weekend, I want to play around with Docker, creating an environment for development, not just for production, because our team here has a lot of issues in creating development environments, and I'm kind of the guy that does R&D all the time, because I can really read fast and type fast.
So that's one thing that I really want to read more about and do more about. Docker has a really huge community and I really like that. And even the GO programming language is doing a lot in building community, too.
I like projects that are community-driven, because they kind of bring in a different kind of outlooks from every kind of person that joins. So they are really great.
[01:04:07.00] You can actually see this kind of difference in looking at community in the PHP frameworks. For example, compare Laravel, which became really popular really fast, to Symfony, which has been around for ages and is losing users to Laravel, even though Laravel is much simpler, it doesn't really have as many features and is not really great for writing great code. Is doesn't really force you to write great code, but a lot of people are doing Laravel because it is building a lot of community, and that's really a huge thing in open source, and I hope that people start moving toward building a community about the tools that they are spending their night and days and midnights coding. I've never had the ability to kind of contribute to open source, because I never get the time. I have no idea how people do that, so that might be something that I might have to figure out in another weekend, right?
I've seen your recent activity on GitHub, and you've gotten some commits at some point back to NVDA, which is the screen reader that you mentioned earlier, it's open source. I've seen that you've got some good commits back to that, and some contributions to Vagrant Vega and machinery. It seems that you're giving some time there, but you know...
Yeah. Well, it's just that Iranian companies don't really reward you for contributing to open source, so you can't really get that as part of your job. They even try to get you to not contribute to open source at all, so I don't really get the time to do that as part of my job. If I do that, it's because I just have to do that at home. So yeah, when I get home... I'm just going to get my wedding really soon, in like two weeks, so I'm really trying to...
Yay! I'm really trying to get job interviews to be able to relocate. So I'm trying to handle a lot of things, and I wonder how people just handle this stuff and contribute to open source.
There's a lot of people we've had on this show, where Jerod and I are like, "We've no idea how you do it", and somehow they do.
Yeah... They are awesome. All of them are awesome. Thanks to all of you, open source contributors.
Absolutely. It's been a pleasure to have you on this show. I know that you, as Jerod and I said, are an inspiration to many, and we look forward to hearing more of your story through your blog, and obviously we are excited about your wedding coming up in a couple week, so congrats on that change in life, and good luck obviously, because marriage is awesome. Is there anything else you wanna close with, anything else you wanna share with our audience before we close up the show?
I just want to thank everyone for wanting to know more about how blindness works and how different people work. It has been a really rewarding experience to share and get such great feedback from everyone, because we could just go in the "I don't care" mode, and "I don't care, I don't know... I have a lot of stuff to do." But the fact that we want to know more about ourselves and different people, it's really a rewarding experience and I thank you all for being so curious, and I hope to be able to share more of my story with everyone so that we can learn more about ourselves. Most of the times, I have been the one that is learning about other people, but I think now I've gotten to a stage where I can show a few points to sighted people so they could do the [unintelligible 01:07:47.08].
[01:07:50.01] Very cool. If you're a subscriber to Changelog weekly, we'll link up. I think we have actually on the radar right now one of your posts in there, so if you have any more future posts that we think should be shared, we'll include them in Changelog Weekly.
If you haven't subscribed yet, go to changelog.com/weekly. We should have changelogweekly.com, but that's just too many domains, Jerod; we don't like that. We are anti many domains, we want one single domain. But listeners, thank you so much for tuning in and those members out there who support us, we think you're awesome, thank you so much for that.
If you haven't heard, we do have a community membership where you can support what we do right here at the Changelog and also join some of the behind the scenes stuff. We'll give you an all-access pass to everything we're doing, our members-only Slack room, 50% off in our store, which includes one T-shirt now but many T-shirts in the near future, so take advantage of that. And also offers from our favorite sponsors and partners that work with us, we give deeper discounts than you can ever get anywhere else by supporting us. It's just 20 bucks a year, Changelog.com/membership, check that out,
Thanks for tuning in this week. It's time to say goodbye, so let's do that.
Our transcripts are open source on GitHub. Improvements are welcome. 💚