Page 2 of 6
Posted: Thu Oct 07, 2010 11:36 pm
by thedisavowed
I am a php programmer.
I like programming b/c even though it is very logical and all that - there's so many possibilities and so many ways to do things. It lets me use my brain, and I like that.
A couple of thoughts about the profession:
1) IT is a very experience oriented profession. If you're seriously considering doing it, don't sleepwalk through school. Learn a language/solution broadly and deeply - and do as much development as you can. 3-5 years experience is the sweet spot for getting the jobs. You may as well start now.
2) You need to think a lot about your technology choices. It's tempting to go with something like PHP because it's open source and so ubiquitous (this very board runs on PHP). But if you want to work in an enterprise environment (the corporate world), jobs tend to demand languages like Java, and, more frequently, the .NET Framework (C# or VB.NET)
Open source languages tend to be more prevalent in the world of internet startups, though sites like Facebook are changing that I suppose.
PS - Javascript sucks man. It's ugly to write, read, and debug. If there's one thing in my work I wish would go away - it would be that. Do yourself a favor and skip conventional javascript once you get the basics down. Use a framework like JQUERY or Mootools. It'll save you a lot of cross-browser hassle.
Edit: Oh, one more thing. While you should get all the skills you can, remember that developer jobs are frequently outsourced to India and places like it. My boss doesn't use me on the design end much because she can pay a kid in Pakistan $200 to do it. I can't possibly compete with that. Your value add will be your managerial and communication skills. Develop something other than coding skills that you can present to your employer. It will help.
Posted: Fri Oct 08, 2010 2:23 am
by turquoise70
thedisavowed wrote:1) IT is a very experience oriented profession. If you're seriously considering doing it, don't sleepwalk through school. Learn a language/solution broadly and deeply - and do as much development as you can. 3-5 years experience is the sweet spot for getting the jobs. You may as well start now.
Could you clarify the part about doing as much development as I can? What did you do towards that end before you had a job programming?
Posted: Fri Oct 08, 2010 9:22 am
by rik0000
thedisavowed wrote:PS - Javascript sucks man. It's ugly to write, read, and debug. If there's one thing in my work I wish would go away - it would be that. Do yourself a favor and skip conventional javascript once you get the basics down. Use a framework like JQUERY or Mootools. It'll save you a lot of cross-browser hassle.
Don't do that.... If you want a slow(er) website use those frameworks, you end up loading a lot of javascript you don't use. If you use a lot of web 2.0 stuff it's okay, but most of the time it's just loaded for 1 or 2 functions of the vast possibilities of it. Many sites can be easily optimised, just by checking which scripts are loaded and deleting redundant stuff. A colleague does this for a living and loading of scripts is one of his key points. (Apperently, besides the effect on user experience, it's also good for you google ranking).
I agree on learning a language broadly and deeply and that also goes for javascript. Cross-browser isn't that of a hassle anymore (also with IE7/IE8(/IE9) it's also getting easier).
Posted: Fri Oct 08, 2010 10:50 am
by Cupz
Actionscript 2.0 is the fucking shiiiiit!
Posted: Fri Oct 08, 2010 12:10 pm
by rik0000
Cupz wrote:Actionscript 2.0 is the fucking shiiiiit!
Why not 3.0? Isn't 2.0 something as not really 1.0 and not really 3.0, some intermediate....? In class we skipped 2.0 for that reason...
(But yeah, actionscript is fun, if I recall correctly, it has been a while

)
Posted: Fri Oct 08, 2010 12:25 pm
by sub-r
rik0000 wrote:Why not 3.0? Isn't 2.0 something as not really 1.0 and not really 3.0, some intermediate....? In class we skipped 2.0 for that reason...
I only ever used 2.0, 3.0 really blows when you're used to 2.0. Simple features were complicated dramatically

Posted: Fri Oct 08, 2010 12:51 pm
by rik0000
sub-r wrote:rik0000 wrote:Why not 3.0? Isn't 2.0 something as not really 1.0 and not really 3.0, some intermediate....? In class we skipped 2.0 for that reason...
I only ever used 2.0, 3.0 really blows when you're used to 2.0. Simple features were complicated dramatically

1.0 is a scripting language almost the same as javascript, while 3.0 is more like a programming language with things like object oriented programming. What I've seen of 2.0 it's an attempt to achieve the things that are completed in 3.0.
But I understand that if you're accustomed to 2.0, you're not comfortable with 3.0, isn't that with all things in life?
Posted: Fri Oct 08, 2010 2:20 pm
by dono
Code: Select all
#!/usr/bin/perl
$_ = "&264SEL%4V8ZSVE^#8Zh\n";
tr/!1@^6V5*3N%4EZ#2L&8X7P0J9QhS/gixcshzdyfotarkunJebplvmqw. /s; print;

Posted: Wed Oct 13, 2010 9:39 pm
by (parenthesis)
Amateur programmer here. I've learned a lot of Visual Basic from the class I'm taking but I want to use something more powerful. I'm thinking about getting into C++ or Java sometime soon
Posted: Fri May 27, 2011 10:31 pm
by Guido
I made a mod r/m opcode disassembler today, which is basically an essential part of a x86 disassembler.
http://kashmirboots.com/upload/modrm.txt
Posted: Sat May 28, 2011 1:26 am
by Pantheon
Aha, cool. I've toyed around making x86 decoders and encoders too. I always got sidetracked and never finished one though, so its cool to see that you have writen one.
I've tested the code in MSVC++, and it works nicely. It wasnt happy about using initaliser lists to fill your unsigned char arrays btw. Also I noticed you can get rid of that switch statement in decodeSIB() by replacing it with:
PS: twoism wont let me post what I wrote below, it keeps messing it up :S.
what compiler are you using? I didnt try microsofts C compiler with it however.
Out of interest I tried to do a real world test with it by adding this code also:
Code: Select all
extern int myFunc( int a )
{
printf( "Hello" );
return 0;
}
and then setting in main():
thus opcode points to this instruction (I think the jmp is generated because of Edit and Continue was enabled or something)
Code: Select all
bytes: E9 CA 01 00 00
instruction: jmp myFunc
address: (4113A0h)
but your code decompiles it to
does it not handle literal operands yet?
I realy like this work guido, it realy makes me wish i'd finished one of mine.
Im heavy into writing self modifying code btw, there is something realy enchanting about it. Has anyone experimented with it?[/code]
Posted: Sat May 28, 2011 1:54 am
by Guido
Hey Pantheon, cool that you think this is interesting, I didn't really expect anyone to know what a mod r/m byte is

.
First of all, I'll admit the code is quite ugly and I didn't really put any effort in making it readable or compliant with any official C standard or guideline.
The reason it doesn't work for that JMP is that the code I posted only handles the disassembly of mod r/m bytes and the subsequent sib byte if present. This basically means that it can decode the format of certain instructions which employ this type of encoding into a human readable string. The actual reason it doesn't work for this JMP instruction is it isn't encoded that way. The format of it is just 0xE9 immediate word. Moreover the JMP instruction with the 0xE9 byte is a relative jump. Try entering something like E9 00 00 00 00 in a debugger and you'll see that the address it'll point to is relative to the EIP (instruction pointer). What the code I posted IS capable of is decoding instructions like ADD, OR, AND etc and decode it into formats like these (for example):
ADD EAX, [ECX + EDX*4 + 0xDEADBABE]
OR EBX, 0x12345678
I'm heavily interested in self-modfying code as well. As a matter of fact, I seem to have bursts of programming creativity every few months and I'm always inclined to program things involving assembly/machine language and other fairly low-level things. In my teens I used to dabble around with assembly language a lot and I did write various small .com files which heavily modified themselves.
I just started writing this small disassembler for fun and I already have grand ideas what I want to do with it. I think it would be interesting to create program which can load Windows EXE (PE) files and reorder its contents completely. The program would have to make a list or database of all calls and jumps the program does, and rearrange random codeblocks and update the calls and jumps, moreover swap registers, and perhaps intelligently rearrange instructions within codeblocks (PUSH EAX / PUSH ECX could be swapped without affecting the effective execution).
This actually has been done before in the virus writing scene. Search for the ZMist virus. Still, I think it would be interesting to code something like this myself too.
Posted: Sat May 28, 2011 2:16 am
by Pantheon
Thanks for clearing that up Guido, yes if I had thought a little harder I should have rememberd that Mod/RM is only used for certain opcodes. I realy like your idea for writing a polymorphic application. I would love to do the same, but I never ventured into Assembler much, I only learned what I could to help me do some dissasembly and writing self modifying code.
However, if you ever need someone to run an eye over your code or test it, just Pm me or something, I love low level programming. Keep us posted with and developments, plz.
I actualy wrote a small program recently that is somewhat relevent to this line of discussion.
My program can inject code into the boot loader on a usb pen, allowing any computer to boot into this code, bypassing the operating system entirely. The goal was to let me write a small computer game that would fit inside the boot loader, but I never got round to doing that yet, lol. My assembly is still too weak.
Posted: Tue May 31, 2011 3:50 am
by dono
Just along these lines...
I have been working a little bit on kernel programming. Got some boot code working, and a small unix-like kernel going. It's a lot of work though. I have been flipping between that and programming a MUD game framework for fun. First just locally, then when i get most of the framework down, I think i'll get some sockets going and try and expand it to a fully forking client/server MUD.
ANSI C, ftw!
Posted: Tue May 31, 2011 11:53 am
by Guido
Dono, check your PM.
Making a kernel is cool, I have never done it but I did read about the technical details of it various times. Check out this guy btw:
http://www.bellard.org/jslinux/ (requires modern browser). He managed to code an x86 emulator in Javascript. Sheer genius.
Posted: Tue May 31, 2011 1:40 pm
by Negamuse
Oh hey, this is a thread I hadn't seen before... shouldn't surprise me to see programmers on Twoism. Add one to the "it's my day job" list, although I do a fair amount in my spare time too, so it's not just a day job. I'm happy to see some people messing with kernels, emulators and such - high level programming is fine of course but there's a lot of fun to be had at lower levels. One of my favourite little pastimes of the last few years was writing an emulator for the first home computer I ever owned (an Acorn Electron!). I also did some mods for a Java game called Minecraft last year which involved some pretty grody hacking on the raw Java bytecode. Fun though.
Posted: Tue May 31, 2011 1:43 pm
by Guido
Cool. Perhaps all we (lower level) programmers should assemble in a chatroom and try to collaborate on something interesting.
Posted: Tue May 31, 2011 7:26 pm
by Seeya_Later
My planned major is Computer Science with Animation Emphasis.
I like C++ best, only because it's like a standard.
Posted: Wed Jun 01, 2011 11:42 pm
by Pantheon
Guido wrote:Making a kernel is cool, I have never done it but I did read about the technical details of it various times. Check out this guy btw:
http://www.bellard.org/jslinux/ (requires modern browser). He managed to code an x86 emulator in Javascript. Sheer genius.
I can hardly belive that link Guido, that is just too awesome. That guy is a realy genius.
I have encountered his work before in fact, as he made a realy minature C compiler (TinyCC) that can be embedded in aplications.
http://bellard.org/tcc/. I made a VST a while ago that had his compiler embedded into it, so when you run the vst you can change and recompile the audio processing code at runtime, from within ableton. It was buggy but it was fun to play around with.
I updated my bootsector program with an option to do some basic dissasembly of the boot sector using the diStorm library. Its good for dumping / writing boot sectors. It has a little hex viewer in it, and now dissasembly too. If anyone wants a copy just PM me or post here. It reads/writes to hard disks and usbpens. It could be good for anyone wanting to play with kernels or realmode x86.
Posted: Thu Jun 02, 2011 12:47 am
by Stry Craty Bya
doubleEntendre wrote:buffalo area.
I'm from Buffalo too
