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

Also anyone looking for a game industry job I highly recommend gamasutra, their job board has a ton of jobs and updates constantly. If you are good at networking GDC is also very worthwhile.

Yup, I donā€™t think Flex is going to die overnight, but I suspect a lot of the flex jobs will dry up, and HTML 5 will start to crop up more.

At my job, I do the front end, the back end, and everything in between. Itā€™s fun not being pigeon-holed

Good knowledge on this page. I appreciate it.

If I may, Iā€™d like to re-ask a question a different way though: What forums or websites do you guys go to for learning/discussing programming or the IT industry in general?

Pretty helpful stuff. Iā€™m not sure what you meant when you said ā€œTo enter ITā€, thoughā€¦ Still, I found it useful to get perspective from someone in IT. Iā€™m told that CS and IT people donā€™t like each other. Is there any truth to that?

If youā€™ve looking to dive in, there are plenty of people who do their own lengthy series of tutorials on Youtube. ā€œnameof languageā€ + tutorial will get you what you need.

If youā€™re looking to learn Java, I found this webiste to be useful

http://docs.oracle.com/javase/tutorial/

If you need to look up classes/methods in detail:
http://docs.oracle.com/javase/6/docs/api/

Iā€™m looking to learn C++ and PHP. Is there anything like this ^ link immediately above for C++ / PHP? The only website Iā€™m using right now is
http://www.php.net/manual/en/index.php

Do you mean how to call C++ from PHP?

There is the cpp reference: http://en.cppreference.com/w/cpp

But if you want to learn CPP, I recommend searching very specific topics, such as Object Oriented Programming Examples in C++:
http://www.cplusplus.com/doc/tutorial/classes/

It all depends on how much you know about software already. If you have enough experience in a CS degree then you donā€™t need much more than a reference and a few specific examples.

Also to answer your question, ā€˜do CS and IT people hate each other?ā€™ They do come at odds with one another often enough due to various reasons, but mostly we get along through compromise. Mostly, the CS people think they should have everything available to them while the IT people have the impossible task of both supplying it and keeping it secure.

I also am not sure what Branh is saying for new graduates, I think itā€™s quite the opposite for recent graduates. They donā€™t know much and they arenā€™t going to be good at hacking anything together. They rather need too much time to get the same amount of work done correctly. I can see where maybe Branh is coming from, the new graduates may try their best, but they will not be able to understand the full implications of their work on the entire system.

Also this depends greatly on the company one is working at. One company may have their engineers hack together as much as possible in as little time as possible because the bottom line is the short term marketing vision, not giving an engineer a moment to sit back and connect the various systems together, Netflix for instance, run by Marketing/Business. The opposite example is a company who is interested in research and getting it done correctly, rather than on time, eg NASA run by researchers, doctors, etc (not a company, but becoming very much like a big business). You might also run into a third variation, they will make their IT and engineers at odds with each other, they will make it improbable to get any work done due to bureaucratic red tape, the budget is over-run and yet everyone is in too deep to cut the cord, eg Lockheed Martin.

I think all University students should have internships. More internships for credits, less class time == less debt. This will help students become acquainted with working outside of the classroom size bubble. It would be very unlikely a person would attend a university capable of supporting a large enough research effort such that undergraduate students could contribute and learn about contributing to a project much larger than they could ever hope to understand.

I am currently a Research Engineer, this is more like a job I am interested in:
http://www.linkedin.com/jobs?viewJob=&jobId=2249250&trk=rj_em&ut=1audzVA864GR01

This is a project I worked on before for my current job, the third picture is probably from the first simulation I worked about 2.5 years ago. It is an air traffic controller working in our simulation environment. Itā€™s an emulation of their software including the incredibly huge display, mouse, and keyboard:
http://www.aviationsystemsdivision.arc.nasa.gov/research/tactical/eda.shtml

I got my BS in CS, but then decided I didnā€™t want to be a software engineer, so I got my MS in CE, control systems and air traffic management research thesis, allowing me to get a more intellectually challenging job.

CS is a discipline and IT is a profession. Outside of the university and specialized R & D, you can expect your CS degree to get you into the IT industry. Remember CS is your major, but IT is the market.

If you want to become a CS person, then I would assume that something like a M.S in CS would be what you need. Typically to be a normal programmer, you need nothing more than a degree. And to be honest with you, Iā€™m not to thrilled about the way CS is presented to students. CS coursework is very concept driven, but there is little if anything tying it to the real world. That is why many professionals call it pretty useless. And there have been toned down majors that have kind of dethroned CS like CIS, MIS, BIS and such. CS is very good, and computational theory is interesting, but it would be so much more important to students if there was at least a class or 2 that really tied the theory into the real world. Just to see how all these turing machine, discrete mathematics, and other sort of logic really ties into reality.

Another thing Iā€™ve hated about CS is that compiler design and analysis classes have been pulled from most of CS coursework. I find that so silly, because compiler design is SO important and apply to so many concepts in computer systems. I wish I could go into it more, but needless to say the line between computer languages and grammar and naturally languages would be interesting to any student. CS is considered one of the harshest and most boring majors, but honestly it really has a lot of intriguing stuff and history.

I have no degree in CS, and Iā€™m self taught. I did go to school for CS, but I asked myself years ago ā€œwhat the hell am I doing hereā€. At the time I was in school, I would run into developers and bookstores, and theyā€™ll tell me they had no degree or formal schooling in CS. Experience is really all that matters in IT. Which is why the degree has lost a lot of credibility. CS is also a bearucratic major as well, as there is a sharp disconnect between real world professionals and university professors. A lot of guys in the university never held a real job. And there is a lot to get use to and learn in the real world. I really wish more retired developers taught CS. But to be honest with you retired or active developers teach more at trade schools or community colleges since the bereaucratic level is much lower there. The funny thing is that I know a lot about CS and computational theory, and a lot of that stuff I studied in on my own have found itself to be useful out in the real world. But I can connect the dots so to speak. Currently we have professionals in IT who canā€™t think outside the box, who are very knowledgable but not adaptable. If they could connect the theory and the practice they would be insanely good.

Anyway sorry to rant about CS. It just really piss me off how CS is presented in universities, and how out of touch professors really are. I really feel sorry for todayā€™s students who have to deal with out of touch professors, and then deal with a shitty economy when they graduate. And unlike me, you really have no choice but to get that degree now. Back in the late 90s you had a choice to just enter the industry and work your way up the ranks. Now days you have to struggle to get your foot in the door and to get shitty pay to boot.

/rant

Very much true.

CS is, iirc, a top ten most popular degree right now in american universities, so it is starting to become saturated. (The link escapes me at the moment, but it is a place where degrees are sorted by popularity, average salary, average starting salary, etc)

It is a huge problem for recent graduates to get a job as a software engineer. It is also a big problem for recent graduates to deal with the increasing debt from exponentially increasing tuition (fucking crazy), especially if they get a MS without funding.

I think one of the biggest disconnects between professionals and professors is the capability of a large company to create a huge software product. Imagine a poor new graduate having to step into a huge project and make some changes by the end of the month. Theyā€™d have a lot to deal with just to be able to make any sort of contribution to a likely very large system of systems. It is unlikely a university will have a course where the students make a new and minor change to a very large project which is on-going. They donā€™t get the experience of just getting something to fucking work, much less in a ten or twenty week course, have the time to really get a grips on a very large software productā€™s potential complexities. The biggest difference is the student is usually there from the start to the end of the project, where as in a company you will rarely be there from the start.

I was lucky at a University of California. We have lots of ex professionals (as well as the frizzy haired old professors). Probably most, if not all, of the professors spend significant amount of time as a part time contractor or advisor for businesses. So we do get some very nice collaborations between the university and companies. But one must also consider, most UCā€™s are near a hub of technology industries (eg Silicon Valley, Santa Barbara, San Diego).

While generally this is true, I did learn a lot of practical stuff in some classes. For instance, in one class we had to make groups, and then we had to design a full database for a product, then implement a web based application that tapped into that database. We had to do an idea, design, and full implementation over the course of a semester. Well about half a semester.

We had 3 guys in our group. One agreed to design and crank out the database, and had it done early. Me and the other guy were responsible for building the UI and Server code for actually connecting to the database. It was quite a wake up call for him, who had done so well in everything so far, to suddenly have this big project he couldnt crank out in a night. I ended up doing like 75% of the work because he just kept complaining he didnt have what he needed function wise to pull it off, but I was there pulling it off.

We did a facebook clone, skewed towards being deployed by a college on a campus, to help people get connected to people in their classes, and for teachers to be able to post assignments and stuff online. It completely worked, too, and for our demo we had people logged in, posting on each others pages, uploaded photos, the whole nine yards. The rest of the class had only powerpoint presentations and ideas, but no finished project. The next closest group had webpages with forms built, but they didnt actually do anything yet, so it was basically just a fancy powerpoint.

Blew my mind that many people were that inept, but this was at a Cal State university so maybe the quality is less

Awesome class. I had a few similar ones. I know other people took some similar courses I didnā€™t take. Itā€™s a lesson to learn about your group if someone simply wonā€™t or isnā€™t capable of doing the work. You need to pick up the slack. I think thatā€™s the best thing you learned in your experience. I also learned that lesson the hard way.

My school was kind of a special case but most/all of the CS professors in my school had worked in the industry, and a lot of them worked in the game industry itself(my AI teacher worked at nintendo while he taught) and we did tons of practical work. Every year weā€™d form teams and one class for the entire year was devoted to making a game in c++, and many of the classses were graded 100% on practical projects.

This is something VERY important that everyone should pay attention to, again, my school was excellent so they trained me for this, but if most schools donā€™t this is a skill that NEEDS to be learned, My first job was in an already established code base in a language I was not super familiar with and an engine I had never heard of. My training was Day one ā€œHereā€™s a tutorial for the languageā€, Day two ā€œHereā€™s the code base, hereā€™s the first couple things weā€™ll want you to do, go for it.ā€. Not only is it good for the project if you can get up to speed fast(I had A* pathfinding up and running by day 3, though it was a very simple case) itā€™s very impressive to your employers and makes you look important.

Something Iā€™m working on:

Spoiler

http://i34.photobucket.com/albums/d146/King9999/TileCrusherDevShot.png

Itā€™s a level editor for a game Iā€™m working on. Once itā€™s done, Iā€™ll make new graphics and make a bunch of levels with it. Currently, Iā€™m trying to figure out how to make it so that whenever I click on a tile in the level (the rows of grey tiles), not only will it change whatā€™s displayed, but it will also change the array that the level is based on. Ultimately, what I want this editor to do is save rows of numbers, and have the game read in those numbers from a file and display the levels. Hereā€™s how displaying the levels work:



int[,] newLevel = 
            {
                {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
                {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
                {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
                {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
                {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
            };
 
And then I use a for loop to display the tiles based on each element in the array.
 for (int i = 0; i < GRID_ROWS; i++)
            {
                for (int j = 0; j < GRID_COLS; j++)
                {
                    //draw tile at position
                    if (grid[i, j] == 0)    //empty tile
                    {
                        batch.Draw(emptyTile, new Vector2(80 * j + offsetX, 80 * i + offsetY), Color.White);
                    }
                    else if (grid[i, j] == 1)   //normal tile
                    {
                        batch.Draw(normalTile, new Vector2(80 * j + offsetX, 80 * i + offsetY), Color.White);
                    }
                }
            }
 


Iā€™m using XNA (C#) to write the editor and game

looks pretty neat and level editors are super useful for iterating on design. Iā€™ve always wanted(but never gotten around to) making a hit box/sprite tool for fighting games. Let you specify a number of frames for an attack, then be able to go through frame by frame and draw hit/hurt boxes and load the sprite for the animation.

Looks slick. What are you stuck on? Translating the click to the proper coordinates?

I was stuck on taking the mouse input and using it to change the array that I use to draw the level. I was able to figure it out; basically, the answer was in the code I posted. I have to do the reverse of what I did to display the level. If I want to get an elementā€™s index in a 2D array, I take the X and Y mouse coordinates and divide each number by the tileā€™s pixel size (in this case, itā€™s 80x80). The resulting numbers give me that elementā€™s position in the array.

So, if I click on a tile located at x=451 and y=191, I get the following:

(451 - 100) / 80 = 4.3875 = 4
191 / 80 = 2.3875 = 2

So the element is positioned at [2, 4]. I subtracted 100 from x first because I use an x offset for displaying the level at the center. Everythingā€™s working beautifully now. :smiley: I hope all this made sense!

Yup, definitely makes sense and a good way to do it. You might want to actually look into hit boxes and the like too. One of the games I made using XNA used 3d objects on a game board, and you could select a piece and move it around. When the mouse clicked, we could draw a tracer from the mouse into the game world and check if it intersected any objects. You could use similar logic here, which would be more of a general way to look at the problem.

The way you handled it works for this specific app, but what if the tiles were different sized, or the window could have the tiles located in different positions, etc. Then youā€™d want to take an even higher level approach at it. But for a level editor I think it works fine

Hereā€™s an updated version of my editor:

Spoiler

http://i34.photobucket.com/albums/d146/King9999/TileCrusherDevShotV2.png

I have the background slowly scrolling to the right continuously. Iā€™ve also implemented file creation and writing to that file. The next step is to add two more buttons to specify the level number and the turn count.

I hate to revive this thread over something so ā€œpettyā€, but Iā€™ve bumped into a situation that truly has me miffed:

I interviewed for a data entry position at some small company in my town last week. Just when I was starting to think I was passed over, they emailed me again to set up a second interview. Iā€™ve never had a second interview for anything. Iā€™ve googled this, and the results seem split: either I definitely have this job and this is a meet and greet, or this interview will be much more intense than the first.

I just wanted to ask fellow techies whoā€™ve had several interviews before: are things harder? Should I get extra ready for this? Itā€™s this Friday.

How are your knife fighting skills? Usually second interview for a data entry position, they throw a bunch of candidates in The Pit and last one alive gets the job.

haha jk, they are probably just gonna have you interview with another manager who will ask you the same questions as before. ā€œWhere do you see yourself in five years? Why do you want this job?ā€

ā€¦but srsly dude, dodge parry thrust, go for the eyes, watch out for tigers. Good luck!

How did your first interview go?

Typically first interviews tend to be for screening out all the idiots and unqualified people, and second interviews are when they get their elite narrowed down list, and want to go in and test your mettle, in my experience

If one would like to get into beginner programming as a hobby/recreation thing and not something as a career, where should I start.