Ask @sehurlburt:

One must have a hell of a discipline to be able to become a successful startup. How do you keep yourself in check when it comes to things that you're the only boss of? I can't do something meaningful that I don't have to answer to someone about. Did you ever find yourself in a similar situation?

Oh, absolutely! I probably shouldn't admit that so excitedly.
For me, I always keep in mind why I'm doing this and what my long term goals are. I make sure to dream big for long term goals, while actually planning steps to achieve them, so I get excited. I question what my options are, and ask if doing this business is really the best option I have. Time after time, I decide it is. It's hard to work at all when you don't really think what you're doing matters.
I've found that it's been really important to analyze what exactly gets me at those goals, and what's okay to slip on. As a business owner, especially one who doesn't want to have a ton of employees, I can't do everything. Tax paperwork slips (oops). I respond to a lot of messages very late or not at all. I'll miss entire business opportunities, because there's just too much on my plate. I'm not on top of a whole lot of things.
Part of the reason why I'm not on top of many things is that one of my goals and a reason I'm doing this at all is I cherish having work-life balance. It's purposeful.
I make sure to always do things I feel are fun, and exciting, along with tasks that are important to keeping a roof over my head but boring/dreadful. Even if the fun things don't seem as crucial. It helps remind me why I'm doing this at all and stay motivated.
And being purposeful like this-- realizing that I'm the one in control and I don't have to just trudge down a boring to-do list of life, probably seems obvious to a lot of people but has been a revelation to me. I can not do a lot of boring "important" things I hate and still be fine. I can do stuff for fun and be fine. I can rest and be fine. This realization has made me much more motivated and energized for the tasks I do do.
An important note to add on this: work to be very honest and realistic about what actually needs to be done, and the impact it has if not done. Keep a cool head.
I'll say the obvious, too: Being healthy helps. Take care of yourself, and focus becomes less of an issue. Your body will suddenly want to do more than just rest a lot, your mind will be healthier. Try cutting back on coffee-- you shouldn't *need* it, and sometimes relaxing is far more energizing.
It's also worth noting that leaning on others is powerful. I keep myself active in the Seattle community and know a lot of entrepreneurs, and talking to them helps me feel less alone and also provides a wealth of insight into whether I'm doing the right things and what my end goals can be. I lean on friends and family. And of course, I lean on my business partner for feedback and leadership. Friendship, whether it be through others in your community or your supportive friends or business partner, has been a surprisingly powerful force, and also makes things feel more worth doing in general. Life is about good friends, right?
Anyway, I'm not sure if that's helpful and can definitely go into more detail, but those are some things I've learned.

View more

I know close to nothing about VR. For me, at this point, VR just means doing smth like DrawLeftEye() and DrawRightEye(). Also, I'd guess screenspace techniques become too expensive due to higher res. That's all I know. So, my question: what are the differences, the new challenges that VR brings? Thx

Welcome to the awesome world of VR rendering! :) There's much to learn here, and I do have a character limit here, but I'll try my best to give a high-level overview of some things to watch out for.
I really like Alex's talk on VR rendering and the unique challenges VR presents. Check it out! http://alex.vlachos.com/graphics/Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016.pdf I also spoke about this at a very high level here: https://www.youtube.com/watch?v=2-P1GzG8o54 , and at a slightly deeper level here: http://voicesofvr.com/464-the-graphics-pipeline-optimizing-vr-experiences-texture-compression-from-binomial/ .
So, you're right, we now have two views to draw. That alone presents its own problems. Most of the scene is the same in both eyes, it's just a slightly different perspective. It seems a total waste to just render the scene twice. How can we optimize this?
Remember that the eyes are also warped. You're no longer just looking at a nice, simple 2D rectangle 3 feet from your face. And a lot of graphics techniques relied on the fact that the screen was 2D-- the effects weren't actually volumetric, they were flat and restricted to a pass done on the whole screen. In VR, we want to create volumetric graphics techniques whenever possible and can't do the traditional screenspace effects.
Volumetric effects come up in more than just screenspace issues, too. When I was coding up high quality VR particle effects, I couldn't use the very typical method of making the particles billboards to look "good enough" and save processing power because people could see that they were looking at billboards, especially close up.
Probably the most important issue is performance. You now have a high resolution screen that needs to refresh at 90 frames a second or faster or someone's going to throw up. Video games in the past got used to thinking lower frame rates-- even as low as 30 FPS-- were perfectly acceptable, and if it stuttered a bit lower than that sometimes that was even fine.
The fact that performance requirements and expected quality levels are so steep now is forcing a lot of innovation in engine development. I personally love research into things like foveated rendering, light fields, and raytracing.
There's also a matter of ecosystem. You have to think about what hardware you're going to support. APIs (check out the new Khronos' VR working group) You have to think about mobile vs desktop platforms, and the performance differences there. You have to think about different controllers and headset and API quirks.
And more! If you're using an engine you won't need to worry about a lot of lower-level details. You'll need to keep performance in mind, think about what platforms you'll support, pick an engine to use or think about whether it's worth it to modify one, and also keep in mind what effects are better suited for VR when you create graphics in your game
Check out some of the resources above and feel free to ask follow up questions!

View more

M25, recently finished BA in Computer Science in DE, but realized just how little practical knowl. I have. Previously done small projects w/ VR (Unity), Web dev, Linux-server admin., but never got *really* deep into one bc I find all of them equally interesting :( Where would Stephanie go from here?

Dennis Martin Herbers
This is a good question, and honestly a pretty tough one for me to answer since I'm not sure of all the details of your situation.
It really depends. You can check out my answer to this question that's related: http://ask.fm/sehurlburt/answers/141797444047 . Basically a student asked whether they should take time off or get a job right away, and I suggested getting a job right away (and maybe negotiating for a bit of time off first once that job is secure).
I'd say to read over the subtleties of that answer, but that's probably what you should do too. Aim to get a job. Look around in all the areas you're interested in-- it's totally fine if you don't have a lot of experience, learn on the job.
If you can, while you're looking, try to talk to someone in the fields you're interested in. See if there's anyone who seems cool here: http://stephaniehurlburt.com/blog/2016/11/14/list-of-engineers-willing-to-mentor-you . The nice benefit of this is it'll help you decide what career path would be best, but they also may be able to introduce you to people and even refer you to places, which is so valuable. They could tell you about opportunities you wouldn't know of otherwise. If you can, go to local meetups and try to meet people other ways too.
Check out this answer as well: http://ask.fm/sehurlburt/answers/141783968463 . Some general advice on finding jobs. Linking to other answers is a great way to get past the ask.fm character limit. ;)
One area I'm not as familiar with is a path some take-- continuing school, going on into academia and maybe going for a PhD. I'm not sure if that's the right path for you, but it's something you can ask about as well!
Don't worry about finding the perfect place right away-- getting that first job is often the hardest for people. But still try to get the best you can! I wish you the best of luck. :)

View more

After three very stressful college years (first one was OK) I finally graduated last year. I enjoyed the subject of computer science and programming, but I feel like I've a negative association with it due to being so stressed out and unable to stop for a breather. Do you have any advice for this?

Oh man, I understand what you mean by being stressed out and unable to stop for a breather.
I think the right answer for you will depend a lot on your personal circumstances, especially financially.
For me, I worked pretty much nonstop throughout college and was exhausted, but still jumped right into a junior coding job. I continued to be exhausted, trying to do what I felt was proving I earned my spot there while pretty much learning C++ and having to ship products with it. Not so fun.
But looking back on it, I think I may have struggled more in the long run if I'd waited too long. I didn't go to a very well known school, didn't have many sample projects to show, didn't know many practical coding skills. My professor offered me a recommendation and that was how I got this job, and I'm not sure I would've gotten another offer as easily or another offer that was as good (it was, overall, a really good job). I had a steady job, but one that didn't make a lot of money and that I wasn't comfortable staying in for too long.
Looking back, I think the advice I would give my past self would be to negotiate for a few weeks off-- or more!-- before beginning this first job. Usually companies don't really care, and the worst they'll say is no.
If you can live comfortably while you wait, or are confident it won't be hard to find work in tech for whatever reason-- maybe it's wise to take some time off. But I'd probably default to telling you to go get a job, and negotiate some time off before you start. People always tell me getting your first tech job's the hardest-- so just jump in and try now, then you can feel safe.
Hang in there. Make sure you sleep well, eat healthy, and stay very positive and confident. I wish you the best!

View more

Your efforts to help underprivileged people get into tech are truly inspiring. Thank You! What are your thoughts on how job displacement caused by automation of the workforce will affect underprivileged individuals trying to break into tech and other industries?

I think there are systemic solutions (i.e. universal basic income) that sound great, but we have to examine the details of those proposals and be critical of them to make sure they are actually feasible and good. I love seeing proposals for systemic, political, mass societal changes and I think they are very important and achievable.
What I place my focus on and think about constantly is what *I* can do to make a change and impact people's life, right now or in the near future. Some of the solutions that fall into this category are likely not good systemic solutions (not everyone in the universe can work for a tech corporation, to cite a simple example)-- but they do change some people's lives, and I can help pull other people up and that matters.
PAY
Well, I own a company! That's a lot of power right there. I can vow to pay everyone who works with me well, and that right there can make a big difference in people's lives.
Others have considered this too, like the CEO who set the minimum wage at his company at 70k ( http://www.usatoday.com/story/money/2016/05/26/does-70000-minimum-wage-work/84913242/ ). Or worker collectives like @brierwood and @CoLabCoOp (on Twitter).
I personally dislike the idea of us assigning "value" or "worth" to people's jobs, and then setting pay from there. You're determining how comfortable someone's life should be, how happy they should be, how much they'll be able to care for their families-- so what if they're just learning to code vs a seasoned veteran? Why does someone just starting to learn deserve a less comfortable life? They don't.
But it's more than that. As a business owner, I see first hand the amount of money it's possible to make and it just does not seem fair that people work at a set wage and I take all the extra profits. Be wary of stock options you get, and think about just how much that comes out to compared to how much the company's making (not to mention, many stock options won't even let you cash out if you leave before they vest). A friend of mine who was a CEO of a company shared all the profits of an acquisition with his employees evenly-- just cut them a check when his company was sold. And to give another example, look at me and Rich at Binomial. If one of us asked to take the lion's share while the other worked a salary, that'd just be silly. Why isn't it silly for someone who works with us? People should be paid evenly and fairly and profits should be split.
GETTING PEOPLE JOBS
Now, we can acknowledge the above pay issues while still admitting that most people get paid salaries that are way too low to live comfortably, and a job in tech could change someone's life.
I think being welcoming to junior coders can have a huge impact on communities.
I think we should help others get jobs, reach outside our networks to do so. We should have a good culture and work/life balance so more people can join.
Shoot, I'm running up against the character limit! Feel free to ask follow up questions

View more

but is any of this info really low level? how about C/C++ stuff and learning about the "dark side" of the gfx?

Every single resource I mentioned here ( http://ask.fm/sehurlburt/answers/141781964751 ) is indeed C/C++ and the dark side of low-level graphics! Seriously. It's not as scary as it seems.
I'm the sort of learner that likes to focus on one thing at a time and see things work as I go. So for me, I learned best with working engines I could slowly rip apart. If you're okay with not seeing a triangle for a while, you could start by looking at resources like the Vulkan samples and build up a graphics engine yourself from scratch. But either way, it's all C/C++ and low-level graphics. :)
If you're wondering about low-level theory and other ideas on getting, there's a bunch of good resources in response to this post ( https://twitter.com/sehurlburt/status/791943653056929792 ). One of my favorites is this blog, A Trip Through the Graphics Pipeline: https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/ . If you want to get real low level, you can start looking at hardware architecture to better understand the pros/cons of various optimization choices. I love Matt's resources on low-level coding and hardware architecture here: https://github.com/MattPD/cpplinks . The section on GPU architecture is especially good!
That's a lot of links and hopefully not too overwhelming. If you have any other questions ask any time.

View more

looking for advice. I was laid-off in August and decided to study programming instead of returning to factory work. I feel confident in my skills (web development), but I haven't found work (also terrified of tech interviews). I have two months left of unemployment, do I continue to follow my dream?

sean
The short answer: You absolutely need to follow your dream.
The more complicated answer: Keep yourself safe while following your dream. How easy is it for you to get factory or other kinds of employment? If it's really easy, I'd turn all your attention to finding web dev jobs for the next couple months. If it's going to be tough but you're more confident you can get that than web dev, maybe look a little for back-up jobs as well as looking for web dev jobs.
Absolutely do not be afraid of interviews. Are there bad interviews out there? Sure, yeah. But so what? Work at getting lots of interviews so that if some go badly you'll be fine. And remember bad interviews that make you feel bad because people were rude or made you feel worthless-- those are absolutely not your fault. Place blame where blame lies, no one should make people feel bad during interviews even if they mess up (this doesn't even touch on how some interview methods are simply ineffective), and the interviewers are to blame. Go to those interviews. Promise me you will.
If you struggle with getting interviews, I recommend getting yourself an online precense. Set up a good website (you're in a better boat than I am there, I'm a programmer but one completely lacking in web dev skills), get a nice resume set up, and if possible put some code or projects online. Blog! Twitter! It's amazing how powerful blogging about programming can be in terms of showing people what you can do and getting job offers. And of course, apply. Apply to lots of companies. And remember that personal referrals often count a lot-- so meet people. Go to as many meetups as you can if where you live has them. Go to a conference if you can, there's often scholarships.
Start as early as possible, since scheduling interviews and waiting for offers can take time.
If you try really hard and still can't get anything in two months, promise me you won't stop there. I know it's hard to look for work while working another job, but you can do it.
And please reach out, I'd love to stay in touch and help as much as possible. What's your Twitter name? DM me or e-mail stephanie@binomial.info any time.
Good luck. You can do it.

View more

how do I start with low level gfx?

I will attempt not to write an essay here.
Lots of ways!
The way I learned was by building projects with Cinder, an open source graphics engine. Cinder is nice because the engine's already built for you and it's not a crazy-complex engine (it's actually really nicely built), so you can modify it and see changes easily. You can take your time learning.
In terms of other open source engines, bgfx is also really great, there's OpenFrameworks, and there's Unreal too.
If you want to really learn about graphics APIs, many recommend not building on top of an engine but rather trying to build up the graphics yourself. For example, the Vulkan Samples here are great: https://github.com/LunarG/VulkanSamples/tree/master/API-Samples . I highly recommend checking out this thread too, which has some great getting-started-with-Vulkan suggestions! https://twitter.com/sehurlburt/status/806950062408351744
And then of course, I can't go without mentioning shaders. Who doesn't love shaders? No one, shaders are the best. There's https://www.shadertoy.com and http://glslsandbox.com/ .
I've done a few presentations and workshops on this topic, check em out!
http://www.slideshare.net/StephanieHurlburt/graphics-programming-workshop
https://docs.google.com/presentation/d/1yJSQy4QtcQxcMjr9Wj6kjMd2R1BLNA1mUebDtnaXDL8/edit#slide=id.p
https://youtu.be/2-P1GzG8o54
https://docs.google.com/presentation/d/1d0StEQMEdz4JUEHXfTPbwKIGYex2p5Mko1Rj66e5M80/edit#slide=id.p
If your aim is to get a job, remember that projects are always great-- so think of what you might be able to do that isn't super broad (don't build a whole game if you're just aiming for a demo-- maybe a particle sim, shader, etc instead). That'll help you learn, too-- you'll be able to just focus on one topic at a time without getting bogged down in many things you don't understand yet.
Feel free to ask anything more specific if you have follow up questions or get stuck along the way. I wish you the best!

View more

If in a fighting game (like street fighter) a ninja woman got taken apart by a man, what would be his WINNING QUOTE as he stood over her with one foot on her face....? (Need a girls opinion)

That's an awesome question. I love action movies and fighting games and winning quotes make me so happy.
So, check some of these out: http://forums.shoryuken.com/discussion/11890/all-time-greatest-street-fighter-quotes
The only male-specific one in there is, "Go home and be a family man." But a lot of people consider it one of the best Street Fighter owns of all time so we can't discount it.
See, that's not the same thing as "Go home and be a housewife." There's subtle differences that make the housewife version feel more lame. Being a family man isn't something usually referenced, especially not as an insult-- it actually has good connotations. But it's still not I'd consider fighters to be, typically. So it's surprising, and funny. It's actually kind of lame that a lot of female-oriented roles have over-used negative connotations we're all used to hearing, which make insults surrounding them seem more tired and boring.
Also tired and boring-- referencing how you didn't expect her to be a good fighter. Yeah yeah we all know.
Hmmm.
I'm not the best at this kind of thing, but maybe we can draw some inspiration from the quotes said by the women in Street Fighter.
Chun-Li: http://streetfighter.wikia.com/wiki/Chun-Li/Quotes
Cammy: http://streetfighter.wikia.com/wiki/Cammy/Quotes
Vega: http://streetfighter.wikia.com/wiki/Vega/Quotes
Ingrid: http://streetfighter.wikia.com/wiki/Ingrid/Quotes
Etc. They're pretty awesome.
I wish you the best in your journey.

View more

I just finished my first semester of programming, and want to get started with graphics asap. I noticed you rt the Graphics Codex and am considering using that alongside Computer Graphics: Principles an Practice (even though I don't have the "prereqs"). Would you recommend this, or an alt. method?

Oh gosh, I'm definitely no expert in the academics of graphics programming. I haven't tried it too much myself, but I've heard excellent things about the Graphics Codex. I've also heard excellent things about The Foundations of Game Engine Development (http://foundationsofgameenginedev.com/)-- there's a book on rendering there. And when I posted a little blog post about graphics programming earlier this year, the responses to it were chock-full of invaluable graphics programming resources (https://twitter.com/sehurlburt/status/791943653056929792). Definitely skim through all of those and read up on them! Lastly, follow graphics programmer blogs! Nathan put together an awesome list here: https://gist.github.com/Reedbeta/dd800c6bda59c3351fbd3474acbea430 .
What I can recommend with more confidence is starting a project yourself and getting your hands dirty ASAP. I am biased and don't have much academic experience, but I can say from my own experience it's easy to get overwhelmed by theory and there's a lot you can learn while you program. For getting jobs, people also really value seeing projects that you've completed. Going through your school class could be a great way to start a project while getting valuable support on it, and if you need ideas for projects you can reference the resources above.

View more

How did you learn how to program? :)

Keith Kaisershot
I first started programming through needing to use Mathematica, Matlab, and Maple in physics classes. It was fun to visualize my math equations and use it to help me solve problems. I remember working with an experienced programmer on one project and I just thought he was a total magician. Programming seemed so cool.
Then I went back to school to major in computer science, and studied mostly Haskell and Java and a bit of C++ alongside learning about computer science theory.
And I feel like I am constantly learning about C++. I learned a *whole lot* of C++ and graphics programming on the job. I didn't really know much about it in school. Having a mentor willing to teach you and/or a goal in mind is one of the best ways to learn this, I think-- there's just so much to the language, and it's nice to focus in on what's immediately useful and expand from there.

View more

When you're doing consulting work through Binomial, do you have a lawyer review every contract or NDA? Or only ones that seem potentially questionable?

Nicholas Arner
It's all about how much risk we're willing to take, and how confident we are in our own skills to evaluate them.
Definitely read up on contract law no matter what. Especially read about NDAs-- make sure they're not sneaking anything in there that isn't appropriate or necessary. Even if you have a lawyer look at every contract, this'll help you ask better questions and understand the feedback you do get better.
For us, we have a lawyer look at every Basis-associated contract we aren't 100% sure about, and we had a lawyer create us a template services contract we can use for contracts outside Basis (it's online actually! https://github.com/BinomialLLC/template_contracts ). If a company has a contract they prefer instead, we usually edit it ourselves instead of sending it to a lawyer because short-term contracts aren't as big of a deal to us. In the beginning of our business, we never had lawyers look at these short-term contracts because we needed to save on cash.
I wrote a little bit about basic things to watch out for in contracts, with a focus on full-time employees: http://stephaniehurlburt.com/blog/2016/8/24/advice-for-protecting-your-rights-as-a-software-developer .
Looking back on it, I would've consulted a lawyer initially, even when we were short on cash. Not really for the purpose of keeping us safe, those were pretty low-risk-- but for the purpose of promoting our business better. We could've included specific clauses about publicity, blogging about our work, etc that would've saved us some hassle and gotten the word out about our work better. It's not always about safety when reviewing contracts, sometimes you can get extra benefits out of a deal you wouldn't have thought of on your own!
If you have any additional questions about contracts, feel free to ask away! It's something I think about a lot.

View more