Programming

Discussion in 'General Chatter' started by Morven, Feb 26, 2015.

  1. Morven

    Morven In darkness be the sound and light

    Splitting out from the discussion of programming languages in @ADigitalMagician 's intro thread, I thought it'd be nice for those of us who enjoy programming and learning about it to chatter. You don't have to do this for a living, and any level of experience and knowledge is fine. It's about enjoying it, not just something you do for work (though you of course can).

    As an icebreaker, I thought it'd be nice to start off with a quick recap of your history with programming and what you're currently doing or learning or curious about.

    I'll start. I did a teensy little bit of BASIC on friends' 8-bit micros and computers at school, but I didn't really get into it all that much until I owned a Commodore Amiga and started being curious about making it do things. Serious programming on the Amiga was done either in assembler or C. The C compiler was £200-ish, while an assembler was only £35, so I bought the assembler. This was when I was sixteen or so, about 1989. I wasn't really interested in game coding, though, so I went and learned AmigaOS coding instead, buying all the doorstopper books on it. About a year later I'd earned enough from working in a grocery store on weekends to buy Lattice C, at the time the only C compiler on the platform and what Commodore's engineers used to write much of the OS. I wrote a bunch of little things, including a fairly simple text editor, and a bunch of little system tweaks like an input handler that turned off the mouse cursor when the keyboard was being used, but turned it back on if the mouse was moved.

    Then in 1991 I went to college for CS, and was exposed to a bunch of new stuff: first, functional programming (we used Miranda, which is a simple teaching language implementation of pretty common functional language features), then Modula-2 (the college's favorite imperative high-level language). Meanwhile, I'd been exposed to UNIX, and loved it, getting way into UNIX C coding, playing with things like lex and yacc, reading kernel internals books, and all that kind of stuff. I learned shell and awk, and then Perl, a love that's stayed.

    Graduated college in 1994 and went to work for an anti-virus firm. My first job there was as a virus analyst. It was a fascinating introduction to how backward MS-DOS was compared to everything I'd used before, but disassembly and working with raw machine code and self-modifying code was captivating. I then ported the company's anti-virus programs to the Banyan VINES network operating system because a big customer wanted it (the World Bank); it's a disgusting mutant of SVR3 UNIX that I'm glad is dead. That was in C, again. Then I slipped more into a systems admin role with the company as I introduced them to the Internet and suchlike. Getting very involved in Linux about then, including submitting kernel patches for NFS (no idea if any of that small number of lines of code are still in use, probably not).

    Basically since then I've been a UNIX sysadmin doing some coding on the side. I bounced off C++ and Java, pretty much couldn't stand them. I still love Perl but essentially that language is dead now, the Perl 6 effort never having produced anything useful yet. Recently I've gotten a bit into Go. Couldn't stand Ruby. Thinking of playing with Python a bit.
     
    • Like x 1
  2. strictly quadrilateral

    strictly quadrilateral alive, alive, alive!

    I did some python in a math class a couple years ago, and while I've forgotten most of it, I still remember enough that I can program small uncomplicated things with very little preparation other than the chance to look at some old programs I made then. (Mostly just math, though, since that's what I learned.)

    At one point we programmed Mandelbrot fractals and I think I still have it somewhere. I should find it.
     
    • Like x 1
  3. winterykite

    winterykite Non-newtonian genderfluid

    this thread is an awesome idea!

    while html is not quite a programming language, i taught it to myself when i was in my early teen years (dunno how old exactly i was), and i joined our school's homepage club. i was one of the fastest typers ::D

    in grade 11, i joined the programming club, and watched the numbers dwindle from "there's not enough computers for everyone" to "five people left, me included". since my school didn't allow me to take advanced courses of both art and programming, and i really wanted to take advanced art classes, and my school didnt offer a basic programming course because of lack of interest, i attended a university class on programming instead. which i dropped after a semester because it was 6 hrs a week, of which i was accredited 2 (i hope this is the right phrasing, english is not my native language), and getting to campus from school was tricky and getting to applied programming class after lecture in time was damn near impossible due to how local transit worked. in grade 13, our math teacher told our class that we can totally take programming classes at university in grade 13, no problem, to which i objected. vehemently.

    so when i had my abitur, i had some knowledge of html, and some knowledge of java. but i liked programming. i wanted to give it another go, so i decided to make computer science my minor.

    (and, due to my major only being taught in cologne and berlin, moved to a different town)

    so ive been learning some more java, but i havent quite managed to figure out how to make actual double-click-on-it-and-it-does-things programs yet. i can make working java files, and am reasonably positive that i can code a text based adventure. i just need to figure out the step to ui and .jaring/.exeing it.

    i taught myself some css for my tumblr theme.

    and i started teaching myself ruby about a week ago, via codecademy. because i was bored, and procrastinating on other things.

    (in my 3rd semester, i took my major's perl class, but... sort of dropped it and did the java class assignment instead which was really easy because the end-of-year assignment was at the level of about halfways through the programming 101 class of my minor)

    last semester, i learned some R. which is awesome.
     
    • Like x 1
  4. albedo

    albedo metasperg

    Awesome idea. I'm a baby programmer, so my history isn't too interesting...

    I did the same 'let's build a homepage!!!' projects in middle school, but our high school offered no programming at all, so I was mostly adrift until college. Learned to program in Java, learned Assembly/C/bash in a hideously haphazard fashion because our curriculum sucked and had not been updated since about 1975.

    Anyway, had an internship for a year in Business Intelligence, doing some work in Business Objects and Informatica, but ended up getting a job as a software developer, playing with F#/VB.NET/C#.NET mostly. Lots of web development and server stuff, we're a small shop so I end up doing a lot of different things.

    (F# is a really nice language if you do a LOT of regexes, it's functional and has some nice matching functions. It's obscure but technically Visual Studio affiliated. I would share what exactly I'm doing, but... personally identifiable. :P Basically parsing documents into an abstract syntax tree and spitting them out in output format.)
     
    • Like x 1
  5. ADigitalMagician

    ADigitalMagician The Ranty Tranny

    Started college in 2010, working towards an Associate of Applied Science in Business: Management Information Systems. The piece of paper was largely useless, but I still appreciate the skills.

    My degree program I ended up thrown fully into the world of computer, where previously I'd been a curious kid afraid of breaking things.

    Not counting the ridiculous "intro to computers class" (It was "intro to Microsoft Office Professional"), I had a number of interesting computing classes:

    It started with Intro to Programming, where I was taught Visual Basic .Net.

    It was the worst. Don't learn VBasic. You will hate yourself.

    The class bored me, and I kind of went above and beyond and learned things like subroutines (My very first tentative dip into the OOP pool, even though VBasic still calls them subroutines.)

    Then I learned networking, which didn't include a ton of programming, but got me REALLY comfortable dropping into a shell and fixing shit.

    Then microdatabase "programming" which was "using MySQL without totally fucking it up".

    After that, I took a Linux Admin course where I learned the magic of Bash and bash scripting. This is probably a BIGGER reason I became a developer than my intro class. Bash is light, it's VERY easy, and producing interesting scripts doesn't take more than a little logic. But. . . VBasic and bash weren't really job market skills in 2012 when I graduated.

    So as soon as I finished my course load (December, 2012) I jumped into Python. Why Python? Mostly because it was really passed off as a "learning" language. So why not? I jumped into Learn Python the Hard Way and Invent Games with Python. It was fun and interesting, and when I finally got bored, I jumped into game development on my own. I wrote a shitty game. Then another shitty game. At some point I started poking at web stuff (Cherry, then Flask, then Django).

    While I was homeless, my web freelancing kept me in food when the unemployment wore off finally. I wrote websites in Drupal, and Wordpress, and I wrote a handful of web servers and micro CMS.

    Then I got my job! This is when life got interesting.

    The first thing I got asked to do was to write an API server. From scratch. I got to try out Bottle (Another Python webframework) and got a working API in a week. Then I got asked to convert it from Python to a similar API using Go. That took a month. I learned a fucking lot.

    Now I'm working in Brubek (Python web framework) connecting to MongoDB (Which means Javascript), Redis, a little MySQL (Which is stable and I haven't touched.), various APIs, some HTML5 work.

    I didn't cover the time I spent learning JS, and Ruby, and tiny amounts of PHP as needed.

    But that's me. I'm a server developer at a startup in NYC making apps for Topps trading cards.

    Also, I speak about game frameworks in Python and when I feel comfortable I'll link you to my PyGotham talk.
     
    Last edited: Feb 26, 2015
    • Like x 3
  6. Morven

    Morven In darkness be the sound and light

    I've really been getting into Go for server applications and little command-line stuff these days. I like that it actually compiles to an executable, rather than being byte-code or interpreted. I like that it is very terse. Anyone else here played with it?
     
  7. seebs

    seebs Benevolent Dictator

    Haven't tried Go yet. My main languages are C, shell, Ruby, and Lua. I also do a fair bit of Python, although I don't get along with it. I can do PHP, but hate it.
     
  8. Morven

    Morven In darkness be the sound and light

    Yeah, I can fix PHP but I won't write new code in it unless bribed handsomely, because it's truly painful and PHP must die.

    I don't do much shell because most of the time I'm "This would be easier and saner in Perl" if it's something I'm saving, but I'll work on it if I have to (mostly e.g. init scripts). C is what I've done the most coding in, but it's a mite too easy to shoot one's own feet off with it security wise (buffer overflows etc).
     
  9. jaob

    jaob still not really grown up

    I met and said hello to my first computer in 1968. Lord know what it was because it was the University's mainframe. We learned Algol and used punched cards. Each week we'd write a little program for say factorials or finding primes and the following week we'd get back the results. Often it was just an error report and we'd have to correct it and resubmit!

    In 1969 I started work at ITT making and testing the transistors that went into transatlantic telephone line repeaters. Just one transistor would have cost you £500 which was a huge amount of money. We had a IBM360 that used punch cards and paper tape and had a board with holes and little bits of wire which you pegged into it to do the programming. Analysing the data meant drawing graphs of failures and calculating lifetimes. It was hard but fun. I got kicked off the project because I discovered that there was a defective silicon slice in the batch and the bosses didn't want to admit it so they fudged the data.

    Later we bought a PDP11 and that was really nice. I learnt how to program that and really enjoyed myself. It had a high level language called FOCAL (iirc) which made life easier. However, you still needed to start the day by switching the bugger on at the mains and keying in (on switches) the first few instructions that started the low speed tape reader. A short paper tape would then be used to program the high speed tape reader which in turn would start the magnetic tape reader. And then you were ready to start work!

    I started teaching in 1974 but there were no computers in schools at that time. Eventually I got my hands on a Commodore PET and learned BASIC. Wanting to know how things worked I wrote a disassembler for it but never bothered to actually write assembler code. In 1980 the school got its own PET and of course I commandeered it for my classroom. I wrote programs for the kids and let me tell you, graphics were real graphics then! The screen was 40 characters by 25 lines of 8x8 bit blocks. Imagine a piece of squared paper 40x25, draw a circle on it, put an asterisk in each square the circle goes through. That WAS a circle, and we were happy with it!

    Funny bit: Once the kids were in the classroom I would switch the computer on, light a match and hold it behind the screen. Gradually the screen would illuminate just like TVs did in those days. When asked what I was doing I would say I was lighting the pilot light. This was a perfectly reasonable answer, such was the level of general knowledge at the time.

    I started writing programs for the school teachers, too, and as we progressed through the BBC Microcomputer era I wrote programs for admin. It was inevitable that as soon as we had a few machines in one room I asked if I could create a network and a little Econet was created. Now we could create big pictures of Mandelbrots by getting each computer to do a little bit. I'd set them all running at the end of school and collect the data in the morning. We'd print out the pictures and stick them on the classroom wall and everyone was pretty gobsmacked.

    Well, eventually the Acorn Archimedes arrived with its 32-bit ARM processor and the whole world changed. Time to learn C and reprogram the admin suite that I'd started. The network by now covered the whole school. That was a good period, with the expansion of computer usage by everyone. The kids were writing WIMP programs and one even wrote using FORTH. The big problem was that Acorn were not good at publicity and dear old Bill G was. So sadly we finally bit the bullet and swapped the Archies for PCs. More relearning, this time Borland's C++.

    During all this I saw the rise and fall of JANET and the bulletin boards and the first fumblings of the web. Because of my admin programming I became a member of the government committee that oversaw school computing and contributed to the way things were done. I have to say I am pretty proud of that.

    Now? Retired but still writing using that old Borland suite. Trying Qt because you gotta keep movin' on.
     
    • Like x 3
  10. siveambrai

    siveambrai Negative Karma Engine nerd.professor.gamer

    *goes and teaches more web designers PHP* Muhahaha
     
  11. Morven

    Morven In darkness be the sound and light

  12. ADigitalMagician

    ADigitalMagician The Ranty Tranny

    I built an API in Go. I have mixed feelings, but yeah, the bonus of compiled code and goroutines is a really sweet deal.
     
  13. ADigitalMagician

    ADigitalMagician The Ranty Tranny

    Oh, so I'm working on two game projects right now.

    One is less of a "game" and more of a "implementing interesting AI Proof of Concepts with some graphics."

    They're both available on my github: https://github.com/pathunstrom?tab=repositories

    That's all of my non-professional code and some of the client work I've done. (I open source basically anything that isn't specifically business logic or resources.)

    The important ones are ghostbowl and feb15-game-jam. The Game jam is actually no where near done (We kind of made it the March game jam instead, we were all sort of dead during February.)

    Other games of note:

    Tic-Tac-Toe was an interview test. The snake game is broken and I haven't taken time to fix it. The Pyweek 8-bit was actually me learning to do messaging/MVC patterns in Python. Tetris is incomplete because I need to solve a problem and haven't put time into it (the game jam team took the time I had.) I. . . honestly don't remember what other stuff I have there.
     
  14. Lissa Lysik'an

    Lissa Lysik'an Dragon-loving Faerie

    Engineer sends email to entire development team (75 people):
    "I need a list of all the DLLs in the project so I can add them to the link list of my module."
    There was much laughing.
     
  15. albedo

    albedo metasperg

    ... ... but why?
     
  16. Lissa Lysik'an

    Lissa Lysik'an Dragon-loving Faerie

    We're guessing he doesn't know how libraries work, although he supposedly has over ten years experience.
     
  17. albedo

    albedo metasperg

    ... Some programmers, man.

    That being said, I'm hideously stuck today, so I guess I shouldn't talk. :P I'm trying to do something complicated and it's eating my brain.
     
  18. Lissa Lysik'an

    Lissa Lysik'an Dragon-loving Faerie

    I like the brain-eating complication challenges.
    Unfortunately I'm working on a mind-numbing bit of tedium - converting ancient 32 bit C and C++ code to work correctly and safely when compiled to 64 bits. 99% is straightforward "use the correct size variables you ancient nitwits" and 1% is "crap, this is going to take a while to refactor into something sane".
     
  19. albedo

    albedo metasperg

    Ugh, that sounds gross.

    I usually like it, but this is never going to collapse down into an elegant solution, I'm just trying to minimize the mess, which is less fun. I keep hunting for something tidy and clean and it just isn't happening.

    I need to combine data from four different external sources into a single object. All of the external sources think about this data completely differently - they store it differently, publish data on separate schedules, include wildly varying kinds of metadata, and sometimes no metadata at all. The definitions for this data in every data source may change arbitrarily at any time; this is the first time anyone's tried to write them down, and we have minimal control over the external sources' data.The data has existed for years and is expected to persist for decades, which means dealing with all of the changes that have happened and will happen in the future. And for business reasons, the object needs to be generated whenever it appears in any of the external sources, which means that we can't make one data source "primary" for the purposes of constructing the object, we have to actually combine everything.

    So... yeah. I mean, parsing Microsoft Word into an abstract syntax tree is hard, but it's the kind of hard where you can go 'okay, this looks tidy and reasonable, now it can be a black box', you know? This is... not that.
     
  20. Morven

    Morven In darkness be the sound and light

    That's ugly ... and full of gotchas. I'd be worrying about people using your object assuming that it can be treated as canonical when the underlying data is less reliable. Is there at least some common ID kind of thing that will preclude any of the sources suddenly not counting as the same object?
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice