Working With Code: How Does a Graphics Coder Do His Job?

Listen to this episode

S1: This ad free podcast is part of your Slate Plus membership.

S2: You’re listening to working the show about what people do all day. I’m your host Greg regular Valley and I’m the director of technology here at Slate. And this mini season of Working brought to you by Microsoft. We’ll be talking to coders people who write software every day to help you log into Web sites give you access to public data sets figure out where satellites are in space for this episode of Working. I talked to Omar Shehata who does graphics programming for a company that makes three dimensional maps on the web.

Advertisement

S3: It was really interesting talking to Omar and learning how he views coding as a tool for self-expression.

S4: What is your name and what do you do. My name is Omar Shehata and I work as a graphics programmer. It’s cool. And what is what is cesium.

S5: So cesium is the company that cesium is a startup that works on 3D maps so you can think of it a little bit as like Google Earth but open source got it.

S6: So the code that you write day to day is to make those maps available to people or is it to do specific things with maps.

S7: So we don’t create the maps ourselves as much as we create tools that enable others to sort of create these maps and put their data on display. So for example a lot of times people people will have their own 3D data that they get from drones so things like construction companies or real estate or mining or things like that they will or agriculture is on another big one. So they’ll gather their own sort of 3D data scans and then you a way to sort of see it analyze it share it and the tools enable that sort of stuff is what we do.

Advertisement
Advertisement
Advertisement
Advertisement
Advertisement

S6: So a lot of it’s like 3D 3D mapping stuff.

S7: Exactly. So there’s a lot of tools already for sort of having your 2D traditional 2D maps but the 3D mapping is really in its infancy partially because the data sets so you get in 3D are often very large and difficult to work with. There’s a lot of different protective formats that aren’t always sort of interoperable. They don’t work together very easily. So there’s a lot of problems and make it hard to share the data. And just the sheer size of it makes it hard to work with.

S6: Have you always coded stuff for graphics or have you done other sorts of programming.

Advertisement

S7: I’ve always aspired to write graphics code in fact this is my first sort of real full time job working in graphics which is kind of a dream job. Before that I’ve I’ve done a little bit of everything from making websites to web applications and before that I got kind of got my start creating videogames mostly to video games but that was kind of how I got interested in working in graphics.

S6: Is there anything you think that’s different about coding for 3D or just graphics. That’s that’s like fundamentally different from coding for something else like a Web site or something like that.

S5: Oh definitely. I mean it’s one thing is it’s a lot more fun than just any other types of programming I’ve done everything. Obviously a lot more visual. So one thing that I know is that I really appreciate about this kind of work is that anytime you make a mistake or have a bug the result is often very visually interesting whether or not it looks good but it’s always something that’s interesting to look at. It always produces some kind of visual result the economy is looking like an example of a recent one. Yeah it’s all sorts of things one. Well this is kind of. So I don’t work in a lot of like character modeling but this is one I’m sort of glad I don’t work in character modeling because any sort of bug you have when you’re creating sort of a model’s face whether that’s like a 2D character or like a 3D character can often result in something pretty pretty scary to be honest. And what one example of this I have as I was working on sort of a character system where I was giving him a way to sort of have different emotions so I have different facial expressions and through a bug in my code accidentally had it put all of the expressions on top of each other at the same time. So this one character had like you know happy sad angry crying all at the same time and that looked very very bizarre but also because I was sort of trying to be like a little bit of a human character is very uncanny. So a little bit nightmare inducing but thankfully I don’t do that most of the time. That’s that’s something I can avoid most of the time.

Advertisement
Advertisement
Advertisement
Advertisement
Advertisement

S6: That’s funny. Can you talk a little bit about you know how you how you came into coding what was your path that led you to doing software development so how I got into programming is actually going to interesting story because I never I was never seeking to learn programming as sort of.

S5: And to itself initially all I really want to do is to tell stories and then I always writing these stories and the only person who would read them was my English teacher because she had to and then I was like OK well maybe I can tell my story so I can cartoons for animations and I would actually submit some of these on the new grounds. And well they got lead it because everybody hated them because they didn’t draw very well.

Advertisement

S7: And then I noticed some people were like making videogames and sort of telling their stories to them and then I started trying that and realized I’m actually better at writing code and freeing out these systems than I am at drawing or necessarily writing prose. So it’s sort of how I got into them.

S6: Do you still feel like you’re telling stories though.

S5: So in some ways I still aspired to work in games to tell these stories. But what sort of kept me in graphics programming in my I call this sort of a dream job is because I feel like as I as I work in this field where what you’re essentially trying to do with computer graphics is figure out how to visualize the world around you. So I feel like it’s a very interesting sort of job where a lot of what you do is you’re kind of looking around and sort of thinking looking at the details around you and thinking how do I accurately model or visualize this which which is interesting for me because it makes you really notice details that you wouldn’t have otherwise really thought about before. So for example I I could be staring at a and this just happened a bit when I was young it just kind of staring at a bottle of water and just kind of moving the moving the bottle watching how the water moves and how it settles and the waves it makes and kind of realizing how there’s an incredible amount of complexity there that makes it very difficult to accurately represent on a computer. So in a way it kind of makes me appreciate the like nature is it just this this weird kind of it’s all I almost sound like deep down I feel like I’m really like a birdwatcher like some kind of nature lover I just want to be outside and kind of watch how things are and learn about them and I feel like I get to do that as a graphics programmer.

Advertisement
Advertisement
Advertisement
Advertisement
Advertisement

S6: The reason that I asked to have you on the show was I saw a talk that you gave about visualizing four dimensional objects at a conference. And I think like you said something like you know if a shadow is a 2D representation of a three dimensional object then you just have to find a shadow of the four dimensional object to show it to people. And I started like sending mind blown gifts to my co-workers and then linking to the talk and I wondered if you could talk a little bit about what led you to form that conference talk and like what what was what were you thinking about that made you try to visualize four dimensional objects or people.

Advertisement

S5: Sure. So the reason I initially started that project itself was it was actually a math professor who was teaching a class on four dimensional geometry and you kind of needed someone to help write a tool for that. My interest in it was kind of the same experience you had was when I first learned about it I had this sort of moment of like denial or like you know there is no such thing as for you with this guy talking about and then sort of learning a bit more about how not only could you represent that but you could sort of attempt to see it and sort of these layers of getting my bone where I also learned that vision doesn’t really being able to see in three doesn’t really happen in our eyes as much as it happens in our in our brains. And that was kind of kind of a mind blowing realization because it meant that if your eyes just see 2D images and your brain is the one that puts together the 3D representation of your world then that could mean that you might be able to learn to see in four dimensions by sort of learning to make these associations that we very intuitively make for going from two to three but sort of learning and practicing to go from the sort of 3-D shadows to a four dimensional representation.

Advertisement
Advertisement
Advertisement
Advertisement

S6: Let’s talk a little bit more about like your day to day so what are your hours like when do you show up. When do you when do you leave.

S8: So I live in Philadelphia and the office is now in downtown Philadelphia which is great for me because my commute is like 10 minutes before that. The office in the suburbs. So my commute was about it was about two hours each way. So it’s kind of terrible but I would show up usually show up I like 10 A.M. and kind of leave at 5:00 p.m. just around the time the train schedule. Now I figured I’d get a lot more free time to myself. Now that we’ve moved but I end up just ended up just working those extra four hours partially because there were a lot of the workers just so enjoyable. So right now I usually will get in around 8:00 a.m. and will leave anywhere between 4 to 6 p.m. What makes it enjoyable.

Advertisement

S5: So I think for me it is part of that. At the end of the day what I’m doing is it’s very visual I can always see the results of that. So for example one recent thing that I was very sort of excited to be working on was we got some 3D data sets of the great pyramids of Egypt. It’s meaningful to me because I grew up in Egypt. I grew up around the and no one actually has any 3D era of the parents. If you open up you know Google Earth right now and you go to the pyramids you’ll just see like flat satellite images. Part of the reason for that is because there’s some government restrictions and some of these areas where commercial drones aren’t allowed to fly. But this company they’re working with managed to get that managed to construct this 3-D data from their proprietary like satellite images. So I was holding the very first public data set of the great pyramids of Egypt of places I’ve been through that no one else has ever seen. So that was like a really cool thing to be able to then put on the web and kind of share and show friends or family or even just even just fly around it myself.

Advertisement
Advertisement
Advertisement
Advertisement

S6: Yeah I mean there’s I did with the 3D stuff I guess. How close is that related to programming for video games do you think. Is it a similar language that you code in. Or is it a similar kind of process that you go through.

S5: It’s definitely very similar to programming in video games and that’s in fact part of what what I’m excited about about this job is that it would be easy if I wanted to to sort of transition back to making games. So I’m not everything I’m running is completely applicable. If anything it’s a little more. It’s a little harder. So you have to do all the things you normally have to do to render to display these 3D scenes except you have to do it on a sort of virtual globe which has its own additional challenges in some ways it is a little easier because in video games a lot of people care about you know the frame rate so everything has to run very smooth very fast otherwise it looks choppy and that sounds good. You still sort of have this requirement in this type of mapping work but it’s a little. It’s not a strict because people Well you’ll forgive me for being a little choppy here and there as long as they can see their data. The problem the big problem now is people have no don’t even have a good way of just seeing their data or being able to share it on the web at all. So just putting that data on the web and being able to share it in seconds as it so usually just to give you an idea of the kind of scale we’re talking about usually people will have like datasets that are anywhere between like a gigabyte to like half a terabyte. So imagine like sharing that even between computers or across offices in the same city or anything involved like putting on a hard drive and physically going to deliver that. And so being able the fact that we have a way of putting it on the web and giving you sort of a web link that will open that makes that go from you know if you had to download data set off and we’d be like hours to seconds.

Advertisement
Advertisement
Advertisement
Advertisement

S6: So instead you get them the data set in pieces somehow that match what they want to see exactly.

S9: That tiling is what you call some tiling 3D. It has kind of the big thing the big value that easy mounts for that kind of work.

S6: What are the languages that you program and do you have a primary language. Do you code in multiple languages all day.

S5: So our sort of visualisation engine is in jobs. Because that has to run on the web although a lot of our sort of tiling pipeline that takes in this kind of data transforms it and breaks it up as a mix of JavaScript and C++ and sometimes have to do some sort of data transformations in Python. So that says so for me it’s also kind of cool that you get you get to work on sort of running engine on the web in JavaScript learning about all the you know cutting edge web tools but also there’s a lot of very sort of like the stereotypically fundamental computer science problems of you have like a ton of data. You have an algorithm that usually might work fine but on a very large data set is suddenly suddenly not really feasible. And so how do you optimize that. And so it’s kind of almost like a whole spectrum of of engineering.

S6: I feel like are those the same computer languages that you studied in school.

S8: So we had done C++ in school not so much javascript that had been a little bit hadn’t grown as big as it is now. At the time though all the Web tools were still sort of nascent. So so a lot of a lot of jobs got out there and it was just kind of my own passion about making interactive things on the web and wanting to share them. And so I learned a lot of that from sort of my own work on the side.

Advertisement
Advertisement
Advertisement

S6: Can you talk a little bit about what you do like the kind of teamwork structure that you have at work. Do you work in a large team or a small team and how do you collaborate on what work you’re doing.

S8: So we’re a pretty small team we’re about the whole company is about top people. So it’s about like maybe six or seven programmers full time software developers and the way system works is actually very interesting because so caesium as a startup it’s only been around actually for a couple of months but as sort of a team they’ve been working together for about six or seven years as sort of a team and this big pairing company and for most that time the main theme project we work on was the cesium web engine. So that was completely open source. And so a lot of the way the team works together is in this in this very open source centric thing where everything is sort of transparent. So actually I think for for most of that for most those years they never use anything like slack or anything like that. And also I want to mention that when I say they a lot of us because I join the seizing team about a year and a half ago. So a lot of this was sort of before my time. But it’s interesting because everything. So have every everything they were doing had to sort of be public facing had to be accessible because the idea is if you’re maintaining an open source project you want people who are not in your office to be able to follow the conversation also contribute. So a lot of times so it also lets a little bit of awkward situations a lot of times someone might be right next to you but you might still want to like you know talk to them on online and in public just so everyone else would be involved. So a lot of it is as the sort of asynchronous post posts issue on Github and I could have page to sort of you know brainstorming ideas or sort of report a problem. And a lot of times you know you might need to sort of go to a board figure a problem out and usually you’d come back and say We spoke off line you know here’s here’s the solution here’s results here’s the picture void board that we drew.

Advertisement
Advertisement
Advertisement

S6: Do you have folks that work remotely too or do you feel like that’s sort of the same thing with the open source stuff.

S9: We do have a couple of folks who work remotely but most of the most the team is in the same in the same office.

S6: Some people picture programmers as like somebody who drinks Mountain Dew wears a hoodie and only does things at night any of those stereotypes are represented in you or how do you differ.

S9: So I feel very conflicted about this question because I really would like not to fit those stereotypes because I think it’s sort of in a big way. It’s like this gatekeeping and the community and makes it make it something that everyone can participate in. But I will sort of admit that I grew up sort of fantasizing about that stereotype. In fact there’s a kind of funny story where you know a part of you know you always seem like program movies. You know they’ll grab grab beer and you’ll sit down and hack at their computer. And so I grow up and Egypt’s a Muslim. I don’t drink. And so I would still get by like non-alcoholic beer and sit down and drink that and sort of role play this. This feeling of like yeah I’m a real programmer just like those those movies. So yeah admittedly I do I do have this and in fact a lot of what I used to do was always like these hacker funds or game jams where you’d like create something over a weekend so it’d be you know cutting away at night. And it is something I’ve enjoyed a lot in the past but I also now recognize that yeah you don’t have to be you don’t have to be sort of this this passion to do this as a as a career. And in fact going back to my orange is like I didn’t even start programming because I loved program ended up really loving it but the a lot of people might want to program just for as a means to an end to sort of get something done whether that’s a website or an application or game or story trying to tell an attractive story in some way. So that’s something I’m really passionate about and what I want people to know that you know you don’t have to sort of enjoy programming as a hobby as as well as a career to really do it successfully.

Advertisement
Advertisement
Advertisement

S6: In that vein do you see code as a tool that you use and then some other people would use it as a mean like as a passion.

S8: So I think for me now it has become the sort of passion where sometimes like the just the the act of creating something I’ve seen that I’m running on code thinking about it and getting something that works is fun in itself. Even if the result I’m creating isn’t that isn’t even that interesting. But I do think that’s that that’s what it is for me.

S6: For those listening that have never written even an Excel formula did you anything about programming. They should understand that a lot of people don’t.

S9: I think if I had to pick one thing is that actually yeah. This is the thing I wanted front and center. It’s that computers are not as smart as you think they are. In fact I think one of my favorite things about that I learned in college was that computers can really only do three things. You know you can really only do arithmetic so you can add things to check things. You can store things in memory and retrieve them and then the last thing is to sort of logical comparisons check if something of value is equal to another value or is greater than or not. So knowing that she give you an idea of just sort of how primitive these machines are that you know the comedians use very basic things. On the other hand the fact that they can do so much now is kind of a testament of how the engineering all these layers upon layers of tooling that make it easy each time make it easy for the next sort of set of programmers the next generation to build more and more sophisticated things. A lot of technology feels like black magic especially with a lot of artificial intelligence. People are either like very excited about it or afraid of it. And I think we sort of think you can do more than it really can. That’s something I’m actually very passionate about and that’s why so I mentioned them. So I started as sort of an aspiring writer and it’s something I’ve also been doing kind of on the side where I like to take everyday technology things they interact with and sort of explain them. So one recent thing I did was write an article about how the JPEG format works so everyone everyone uses images on their in their day to day life and using computers whether you’re taking pictures of their phone sending them putting them online and sort of understanding what goes into the creation of an image format like that. And it’s actually a lot of very fascinating engineering work just to get all those cat images you see something worth worth learning about.

Advertisement
Advertisement
Advertisement

S6: Yeah I mean so these formats like JPEG and ping and the gift that everyone uses all day to display their emotions to each other are based on these libraries that how long have they been around.

S8: So that’s actually more interesting is that the the JPEG format has changed a lot and has evolved and has had a lot of features but where most of what the epic images you see are still the same format that I think was created like around the 1980s I think so yeah I’ve been around for a very long time a lot of those libraries are open source as well.

S6: So having been programming for how many years have you been writing code so I guess it would be about 12 twelve 13 years now which is a significant amount of time given that JavaScript has gone from being used by very few to almost everyone I’ve talked to. Do you feel like even those 12 years you’ve adopted sort of a you know people don’t appreciate the stuff that was built before them that they’re building on top of thing and that’s what you want to explain it or is it I guess like what is that. That feeling that you have to explain it come from.

S8: So I think I’ve personally definitely had this sort of taking it for granted. I think you kind of have to be able to sort of do your job. In fact I was just thinking the other day about how a lot of our debugging tools for creating like web applications have changed significant and I’m not I’m really curious like how did that how did anyone ever get anything done just five years ago before any of these tools and matured. But really I think my my sort of motivation for wanting to explain all of these things is when talking to people who don’t sort of have a career in software where they there’s a lot of I guess either misinformation or sort of fear of technology or like I said sort of attributing things they can’t really do or having these sort of expectations for it. So I feel like I guess I feel like I want everyone to sort of get a chance to sort of see the beauty that we have here sort of the these great architectural achievements of our time because I think there’s a lot of there’s a lot of beauty and hidden complexity around this that we don’t really appreciate and then that’s almost in a way in some way the same reasons I like graphics programming a lot. But before before for sort of an innovative and angle on that to me it’s it’s it’s not even learning about code or technology at all. It’s learning about like the world like physics and light and perception and vision and how how sort of for the world as creation around this works for the lightning round tabs or spaces tabs definitely emoji encode.

S4: Good idea or bad idea. I now am a convert so I think they are a good idea. What is your favorite programming language to code in JavaScript 80 character column widths good or bad. I’m not actually sure what you’re talking about. It’s basically like when does the soft return start at characters wide or one hundred and twenty characters wide. I think wider is better. All right. Favorite code editor sublime deploying code on Fridays bad idea or worst idea I would do it again. Wow.

S6: Do you have an opinion on the caps lock key. And if so what is it.

S8: I’ve never really considered I have no I have no strong feelings about the caps lock.

S4: When was the last time you updated your personal website. A few days ago actually the ad my bank bank on talk. Congratulations. That’s awesome. Most people have never done that after the first publishing.

S9: I’ve redone my my personal website almost like every year as sort of. Who am I. Tradition. And I like the latest iteration a lot.

S6: I’ve been trying to sort of keep it cool and yeah we’ll link to that that talk from bang bang Kannan in the show nuts so everybody else can have their minds blown off the back of their heads. That’s 40. Thanks so much Omar for coming in I really appreciate it. Thanks for having me.

S10: That’s it for this episode of Working. Once again I’m your host Greg Lavelle if you like the show. Please give us a rating interview and Apple podcasts. And if you have questions or thoughts you can e-mail us at working it’s like dot com. Working is produced by Jasmine Molly. Special thanks to Justin you write for the ad music. All three of these episodes of footers are in your feet now. So if you like this episode go listen to the other two.