Eat. Sleep. Code: The Computer Programming Thread, Ver. 010

On a different note, I’m learning Objective C. Getting started on iOS programming, going to be working on a new Mobile app for a project.

Backstory, I got a programming job just a few months out of college. Graduated in June, started in August. Found a job for a local company posted on the scools Job board through the engineering department, applied, and got it. My boss was amazing, as opposed to all the super intense interviews I had done (I applied for Heavy Iron studios who make games like WALL-E, and it was a 4 hour interview where I had to do physics, game design, and programming all on a white board). He saw my resume, and asked me a couple of simple questions. He asked, “I want you to make me a program that returns a random dice roll. How would you do it?”

I said, “Well that depends on what you want. How many sides on the dice? How many dice being rolled? Does it need to be able to take in a command on what type of dice to be rolled?”

He smiled, shook my hand, and said I had the job right there, just because I was asking questions and trying to get more info instead of just blurting out the simple (rand() % 6) answer.

Anyway, I got put into a big MFC consumer app in C++, which was their flagship app. It’s used to generate the advertisements that go out in weekly papers, we manage the pricing, the product information, the advertisements themselves, and churn it all out and generate the different versions that would need to exist for an ad (like, even though Best Buy puts out an ad a week, different regions have different ads. It may just be small like pricing differences, it could be huge differences in layout and products advertised, and in many states there are different legal requirements on what text should be shown). We streamlined this process so that one button push, and all the versions are calculated. We also then let them export it into InDesign, work on it there by artists, updating pricing automatically, etc. It filled a very specific niche. Big companies use it, like Best Buy, Circuit City, Toys r Us, Ace, Home Depot, etc.

Slowly I got involved in some of the other projects. They had a web app that could display the advertisements on a customer website, that was fed the data directly by our system. And they outsourced it, and because they sucked, it was brought in house. I got the code dumped onto my desk. “I know you’re good, and I need you to figure it out.” It was a combination of JSP and Flash. I was completely overwhelmed too, for weeks just trying to learn how to do it. 30 bugs sitting there that needed to be fix within a month, and I had no idea how to even compile the thing. Long story short, I finally did it, and got all 30 bugs fixed. Felt good. And I learned new skills.

After that, we started working on an application designed to put some of the core app functionality in a website interface, for stores like Ace where each ad is handled by the store directly (co-op). So, for that project, I learned how to do a java server, connected to a Flex front end. (Flex is like flash, but more designed for business applications).

I also got involved in the InDesign plugin, a config app, a workflow plugin, a Proofing application, etc.

All in all, right now I’m responsible for about 8 different applications.

As time went on, Connect 3 (the small company) was bought by DemandTec in the bay area, and then DemandTec was bought by IBM.

So now I sit, working from home, working on these same applications I have been for 5 years. Everyone else from the original team has left, most to work in a similar company startup in Orange County. My boss died of some sort of liver disease, which hit everyone hard, and most people just were mentally done. DemandTec, 2 months after he died and the next in line left, closed our office and laid off almost everyone. But since I had my hand in every project there, I was kept on, along with 1 other programmer. They’ve since left, and been replaced by programmers in India, who have recently been moved off the project too.

So now, it’s just me. I’m alone, supporting this software suite in line to not be supported past 2015. I’ve told my boss I expect to be fired in 2015, which he denies. He senses how I am just kind of existing. I honestly, most weeks, put in about 20% effort. Except for when theres something really important or a deadline, then I’m putting in 100% and making delivery. But otherwise, whats the point?

So, he’s getting me out of the initial software suite, and into Mobile Development. I’m happy. Although I’d prefer to do android development (I have some experience I did in my free time), I’m glad to learn something new. Objective C is weird sometimes, but it makes sense in a lot of ways. So I’m maybe 1 week into doing self teaching, tutorials, etc, and it’s cool. Just made an app that connects to the FourSquare API, and lets you search for anything based on your location. Mobile app programming is just cool, in a quick response feedback kind of way, that you just can’t quite get with desktop applications. So I’m hoping this takes off, and maybe can be my main focus going forward as the other project winds down.

And that’s my story, of how I went from college, to a local software company, to being a simple cog in one of the biggest tech companies in the world (400,000 employees world wide). I’m scared, because right now I am in power and can make the rules, but once my project isn’t necessary, I’m disposable and afraid of being unemployed.

And I should stop being scared and just interview at google already, damn it

Objective C syntax is dumb.

I mean, it makes variables and functions clearly distinguishable at a glance, but its usage of : and spaces and [] really threw me at first

Re: Pimp Willy’s story post-college:

I read that at least twice and damn… it’s an inspiration! I hope all goes well with you PW by 2015; you really should apply to Google, you’ll be fine.

I had a question to this thread in general. What are some good sites/free software that can allow someone to play around and work with mobile app design?

I’m not too worried, my boss has proved he values me as more than just the guy maintaining all the stuff nobody else wants to deal with.

Here’s one reason why (dumb story ahead).

So, we have our company, connect3. DemandTec wants to buy us, but they’re a cloud based company, and we’re a installed software based company. They do a lot of the pricing optimizations, deals, etc, but they don’t do the last piece of the puzzle (the actual advertisement generation and planning). So, they bought us because we were the last piece of the puzzle in their end to end vision.

So we do a web based application to prove we can. All the java guys bust their ass, generate this flex client with a java server, make a nice prototype, and demo it for DemandTec. They like what they see, so they go ahead with the purchase.

first thing they did? Fire all the java guys. Well, they basically said “We want to do this in house.” They are in San Francisco, we’re in So Cal. Anybody who didn’t want to move up there was let go; that was everyone but 1 guy who was young and still living at home, he took that deal. (he’s since left, and worked for IGN Pro League, and now works for Blizzard actually!).

So step 1, fire all the people in the company that you valued anyway.

All of us C++ guys were safe since we did our own thing, and had our own products. But, our software was not cloud based, and this was a cloud based company. So they say, “Let’s take this software you have, and re-write it as a cloud based solution.” So, you’d think that they’d bring us in for design, input, etc right? Since we knew what we were doing and why we do things our way? Nope. They cut us out entirely, basically. Started from scratch. And now, 4 years later, they’re still only at about 20% of the actual functionality of our software. It’s kind of silly. And when our software goes out of support, they will be forced to move to this other solution. It’s gonna be fun times.

Anyway, no matter how much cloud based software they have, the last piece (artist finalizing the document) is done in InDesign, offline. So, the plugin we developed actually supports both the offline and the cloud based solutions. So even after 2015, that piece will still live on, and right now I’m the only person who knows it. (a few others have trained on it, but they quit soon after). Ha ha.

So I am fine after 2015, especially with getting involved in new projects. It’s just that software development has followed a trend of moving programming jobs to india, which is much cheaper (about 4 developers for the cost of 1 here). But from my experiences, even the “senior” guys over there have programming skills like a college student here. They are really good at just doing what they’re told, but they aren’t good at learning or thinking for themselves or understanding the “why” of what they do. Which can be good, but if mismanaged, it’s bad. And I did more work by myself than all of them combined. But numbers are numbers to a company, ya know?

I am dumb and I have loyalty to my software. My boss poured his heart into it, and he’s since gone, and it’s silly but I feel like once it goes away, a big part of his impact on the world will be lost. And it’s easy, too. So I stay. I feel underpaid for the amount of responsibility I have, but I also have only been working for 5 years so I know I have nowhere to go but up. Considering where I started (right out of school) I took a pretty low salary, and it went up fast once I proved myself. I wish I was making 6 figures though. I think I will be there by next year. But I should start shopping myself around. It’d just be so hard to go back to an office job, I feel like I already have little time spent with my kids, and it would be even less if I took an office job (For instance, google is an hour + commute each way each day no matter which of the 2 offices I take a job at. I could go to the company most of my old coworkers are at, but the job is really intense and the commute is also almost an hour. So, I guess I pay for the salary with having more convenience.

You can do android development for free really easily. Get Eclipse, and get the Android SDK installed, then you can program and test completely free. This is done in Java. Start here http://developer.android.com/about/start.html

For iOS, it’s also free to test, but you need a mac to actually do it. Its done in Objective C. Start Here https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/index.html

Both offer free emulators/simulators to test your app. Android you can put your app and debug on any android device. Apple requires you to sign up for a developer program ($100 a year) to do this, and I think the device must be registered specifically for debugging.

Thanks for the insight PW!

I have Windows, so the iOS stuff is somewhat out of my reach at the moment. So that’s why you haven’t tried to go Google, commute and family time! The commute can be painful(2+ hours gone everyday…), I commute to school everyday and it’s an hour each way everyday (more if there’s a damned train/bus delay…), and then you have your kids; you can’t lose precious moments with your children.

I used to be left home alone with my brother (who’s only 2 years older than me) when we were young (6 and 8 years old) and we lived in a neighborhood that wasn’t very safe, but wasn’t very dangerous also, but that changed about 2 years later when the nearby school was remodeled, but enough about that…

I didn’t know that there was an Android SDK for Eclipse. I mostly use it for Java projects and some Javascript stuff and use a Virtual Machine for doing C++, since there’s some system libraries not available for Windows, but are on Linux and Mac (WTF??)

I’d recommend you actively interview for new jobs. At worst you say no or they say no, right?

What if you find a good one with much less fear of suddenly being unemployed? You might say yes.

Only interviewing, and feeling prepared, is a pretty big task. And like I said, unless the job is local enough I don’t have to travel more than 30 minutes to get to work, it’s just not worth leaving my current situation, unless it like doubled my pay or something. I probably will start to just put my feelers out there though, just to see what’s available.

I just came from my interview. Way, WAY less emphasis on tech than I expected. Ive been studying for at least 8 hours a day since Monday for this and was nervous as hell. It went far better than expected. Though, they gave me the same “contact you in 2 weeks” line at the end that the other company that didn’t call me back gave. I don’t know if that means anything in this case.
Thanks for your advice overall, PW.

urgh I hate objective C, well, I mildly dislike objective C, I HATE XCode. I hate their provisioning stuff, I hate their layout, their build process. Easily one of the worst pieces of software I’ve ever touched. My first project after school was a unity game, which required some messing around with objective C and a decent amount of XCode.

Glad to hear it went so well, I wouldnt worry too much about that line. It’s what they’re going to say even if they really liked you.

I havent really had much problems with XCode so far, but I did dislike how a lot of stuff seems to be done using the UI (ctrl drag a button to the source code to link it, etc). I’ve used it for some C projects, but mostly just as a command line compile. This was my first time using it as a main development environment. So far, I like it better than Eclipse at least.

We had a lot of trouble with their provisioning system, it always wanted us to update keys, and there was 2 keys and it was usually unclear about which needed to be updated, and adding devices was a huge hassle. I am very much not a fan of red tape being part of the build/push to device process. I haven’t used eclipse much, but I vastly prefer visual studio, or note pad++ and GCC even.

Also my next game is starting to get a lot of press!

http://blog.us.playstation.com/2013/10/31/the-real-horror-behind-daylight-on-ps4/


I havent tried actually connecting a device to it yet, so I look forward to the headache : /

grats on getting press!

MY first game never released and then I worked on a bunch of military contracts which no one will ever see, it’s always pretty exciting to see these articles!

Gonna be exploring the world of No-SQL with MongoDB soon once our POC phase is done with. Technology refresh!

Argh collision detection!

EDIT: Might as well ask here. I’m using a 2D array to test for collision against walls and floors. Any time I move the player, their position in the array changes. The collision box for the player is 77x120, and the floor tiles are 48x48 pixels. The player’s velocity is 10 pixels per frame.

My problem is how to adjust the rate at which the player’s position changes in the array. Having the array position change each frame is easy enough, but I’m trying to wrap my head around the logic of changing position only at set intervals. I think of games like Super Metroid where your position in the map changes at fixed points. You can move a few pixels and your map position won’t change until you reach a threshold.

3d or 2d?

2D

From the way it’s worded it makes it sound like it’s the camera.
I would just make a box attached to the camera. Then make second box it can’t escape from.

I’ve seen a few games do this btw.