• 2013: What have we learned?
    71 replies, posted
Welcome! The year is over and we've all grown as programmers, worked on our projects, and learned lots of all stuff. So let's talk a bit about ourselves, and what we've been doing this year. It's kind of like a time capsule, but not. Screenshots, videos, pictures, any content is welcome. I've moved from C++ to Haskell, stopped working with Desurium, and began thinking a lot more about my programs before writing them. Not a very active year for me compared to the previous (and hopefully not the future).
I learned to stop mixing coding styles. what an awful habit that was. [editline].[/editline] also figured out how to do threading properly. this year I'm going to try networking client/server stuff. (and hopefully more 3D stuff)
C++ Enough OpenGL 3.2+ to make a working "game" The maths to go with that (I have been taught it so many times and it never sticks) A ton about the Java threading mechanisms And I still have nothing to show for it :v:
I'm using my Bitbucket time-line as reference, so this is more or less inverse chronological. I've started looking more into functional approaches and problems. [URL="https://bitbucket.org/Tamschi/portalling.radar/src/e4cdca85f4d3bdf4376500aed98a59c5c4b137a4/StaticRadar.cs?at=default"]It turns out solving them generically does not work well in C#.[/URL] [URL="https://bitbucket.org/Tamschi/attachedanimations"]I also tried to make my projects more modular[/URL], so even if a project fails or gets stalled I usually end up with a bunch of drop-in solutions. The close coupling between GUI libraries and their UI model gets on my nerves, so I made one that just renders an objects graph: [vid]https://dl.dropboxusercontent.com/u/5013896/forum/Facepunch/Programming%20WAYWO/8.2013/OOTKGui%20Transparency%2C%20Animations%20and%20Margins.mp4[/vid] I'm not good enough with OpenGL to write the visuals properly at this point though. There are also issues with Intel drivers and frame buffers, maybe an OpenGL fallback layer would be in order. I think I finally have a good understanding of that API, now I'm just missing (a lot of) practice. I've learned a lot of maths at university this year, which inspired me to pick an old idea back up and write a [URL="https://bitbucket.org/Tamschi/project-portalling"]portalling framework[/URL]. So far it only works with linear traces in one dimension but I plan to extend it to 3D at some point. [URL="https://bitbucket.org/Tamschi/otr-store"]There was a Python project floating around for a while[/URL] (arising from a misunderstanding, not on my part), so I chipped in on the off-the-record's mailing list and started an implementation. It probably won't lead to anything at all, but now I have a good understanding about how to implement a simple remoting API on TCP and can explain why formatted data exchange should not run in a file format. (The reason is (very laconically) that everyone will just end up with incompatible implementations if it's not enforced. It happens all the time, so there are enough precedents. A background service also can do synchronization much better than a file interface.) [URL="https://bitbucket.org/Tamschi/project-binaryglee"]I made a dictionary data storage for .NET[/URL], so I suppose I learned how to manage memory manually in some regards. [URL="https://bitbucket.org/Tamschi/project-ratings"]Also some web scraping, which I was entirely new to. (No login.)[/URL] The application logic is basically skinned with the GUI here, which is an idea I plan to carry on with when making tool programs. [URL="https://bitbucket.org/Tamschi/components-bundle"]I learned about components too.[/URL] They are extremely useful when working with entities but I don't see their use outside of simulations in a broad sense. An example of a stalled project is the DAW I started writing out of frustration with Linux MultiMedia Studio (which has nasty crash bugs, at least on Windows). I can't complete it because I can't write GUIs at all and need to make custom ones for e.g. the piano roll editor. I also have only a very rough idea about how to host instruments. It seems I did all this in a shorter time than I remembered, I thought a good amount of that happened in 2012. I program really infrequently though, there are months long gaps all over the place. I took a computer science course at university that very slightly helped me understand LINQ queries better. It was an entry level thing for non-CS students, so there was not a whole lot to take away from it. I'm not focusing very much on computer science, so there is a good amount of mostly physics related things I won't bore you with that I learned this year. Some of it helps a lot when writing programs though, because the problems are in part very general. Maths too, but that has less applications here I think. Also a good amount of random (mostly technical) knowledge I tend to pick up and almost never use :v: Everything else is probably not even tangentially related to programming.
everything in C is actually an array, and every array is actually a pointer [] is the same operation as +
Wall of text. Delegates are the best thing ever. I write a lot more shit code, but in turn get a lot more done. You can do some crazy shit with C#'s GC, it's a lot smarter than I thought. I've done away with conventional game loops and switched to events. Serialization libraries are generally a pain in the ass, unless I need to store lots of different types of data I write my own solution. I'm no longer afraid of using the static keyword. Python is pretty cool, but I have no use for it. I'm comfortable with memory management now. I've started using Lidgren for networking instead of using sockets directly. I learned the basics of C++ and OpenGL. Source engine is a mess to work with. I came to hate XNA/Monogame and now use SFML.NET exclusively. I learned a bunch of easing/game related algorithms. I write a lot more generic code. Extension methods can be used to implement functionality into interfaces in C#. Unity is the #1 way to make a game fast. I hate working without VS intellisense. Web development is evil. Javascript is the devil. Haskell is witchcraft.
I learned a fuckton of stuff, namely: LINUX (Maintaining an installation, Development, ...) SDL (Video, Audio, Input...) Proper Commenting Maintaining GIT repositories decently Threading Sockets Basic knowledge on optimizations Bitwise Operations (~, &, <<, >>, ...) Writing Makefiles Efficiently using the Terminal for many purposes And a bunch of other things I can't be bothered to list.
Working with Unity Working with SFML.NET using Lidgren using LINQ (though I still prefer imperative to functional programming) thats pretty much it I didnt program nearly as much this year as I did last year
[QUOTE=reevezy67;43379311]Unity is the #1 way to make a game fast. Web development is evil. Javascript is the devil.[/QUOTE] Lies! Slander! Heresy!
Mostly the general stuff we all learn: better planning, better modularity, more professional developing styles. In 2013 I learned that no one ever knows everything they really need. In 2013 I pretty much changed my career path, as I decided what I wanted to do after graduating (programming, of course, which still isn't specific at all). I had a summer job writing code for a University system, which forced me to learn good practises to keep everything organized. I started to use Git instead of SVN. I took the plunge and 'learned' (again, I'll doubtlessly never know everything) OpenGL in C# and C++. Then I made a thing: [vid]https://dl.dropboxusercontent.com/u/10518681/Recordings/2G%202013-06-09%2004-20-49-09.webmvp8.webm[/vid] I wrote an application which was downloaded ~1k times. [url]http://bitnode.co.uk/driveeditor-vehicle-config-editor-for-beamng-drive/[/url] I wrote a GMod gamemode in Lua which saw over 250k unique Steam users on my own server. 2013 has been a big year for me, I really enjoyed it. I have a lot of users from here to thank, actually, as a lot of the work you do and encouragement you give is inspiring, as cliché as that sounds. So, thank you!
Nothing really, god damn it I'm one lazy fuck
Learned how to: -Drive, Permissions Management, Shell Scripting in Debian Wheezy (Building a Raspberry Pi File Server) -Indirect/Indexed Addressing & Other Registers for SNES Assembly -How easy FuzzBuzz is (Why are people having trouble with this is beyond me.) -Haskell is a powerful as fuck language.
i learned not to code while completely drunk, because it makes me feel bad when i can't code while sober
I learned how to code some visual basic, which is great considering I didn't know a lick of coding before.
[QUOTE=Quark:;43384442]i learned not to code while completely drunk, because it makes me feel bad when i can't code while sober[/QUOTE] :/
I learned a shit-ton of C#. Lambda expressions fuck yeah. How not to fuck-up while developing a game. Found a good comfortable style for coding. Damn, 2013 was long as fuck when thinking of the stuff I learned.
Made it through [URL=http://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs]SICP[/URL] and the [URL=http://en.wikipedia.org/wiki/Compilers:_Principles,_Techniques,_and_Tools]Dragon Book[/URL]. Learned Prolog, Scheme and a lot of math like lambda calculus and complex calculus, and a [b]lot[/b] of rigid body physics.
Learned to love C and minimalism coding, not to mention the switch from using git repositories everywhere to fossil repositories with self hosting documentation for my projects, and created and maintained a personal blog using only the fossil version control system to host it without any external software being needed. I learned to love the [url=http://gittup.org/tup/]tup[/url] build system, and to love it when everything is a file. Files as inputs, and outputs, not objects or globs. Less classes and namespaces and externals and more internals, simple systems, and minimalistic structures. On top of that I also learned how memory allocation and freeing works on a much lower level, which is always oh so useful when you're doing manually-assigned work in C. I learned that maintaining old software to work with recent software can actually be fun to do, and quite the learning experience as well. Not to mention porting it to your own systems and making it work there. Quite the learning lesson indeed! But most importantly, I re-learned to love again, and I fell in love. I learned to live again, to have fun, smile, and enjoy. I learned to love and be loved.
I learned C#, plus how awesome SFML.NET is.
It was a useful year, I learned a bunch about Swing and Java in general. - Improved my overall Java code tremendously compared to when I started out. - My code is much more maintainable than previously and as such given me the confidence to open-source it. - Using generics to create reusable classes - Understanding sockets in Java enough to write an IRC library and HTTP server - Multi-threading the right way in Swing GUI applications - Using anonymous inner classes in the right places - Swing design guidelines and making applications not look [I]too[/I] bad - How to use Git (with Eclipse) properly - Retouched on LWJGL and OpenGL again along with AABB physics - Writing Javadoc comments that are understandable Here's hoping that 2014 can be an even more productive year!
I've learned a bunch of stuff; - Unity - OpenGL / GLSL / HLSL / Cg - Developed my style further - C# - More C++ - How to create a software audio engine - Voxel octrees - x86 assembly and much more
How do you guys even remember what you did. I can barely even remember what i was working on last month. :v:
Absolutely nothing :(
I learned vectors, 2D math, transformations, matrices, with XNA 4 and C# I learned how multiplayer works, the problems it brings, causes and so on. Generally networking. I also learned a bit of F# now, althrough it is still mind blowing to me. I learned that weed and alcohol sucks if I want to program, and will stop them entirely. I also learned how crypters work, botnets. Yeah malware is bad, I know. Never infected PC so don't attack me. Learned to love github/svn (version controlling) and that merging hell is really hell :) Learned javascript and typescript. Started to hate CSS3 even more. I learned that working in team can be also as fun but it can be hell at first, if you are used to working alone. I also started to value libraries even more, because they sure save you loads of time. I also started to value professionalism in business, I don't use so much swear words now. I also learned that physical workouts, even if in front of computer, can boost performance and health. It is essential. Now I run everyday and lift weights :)
[QUOTE=Quark:;43384442]i learned not to code while completely drunk, because it makes me feel bad when i can't code while sober[/QUOTE] I've always wondered how I code when drunk, but I'm either too drunk off my ass to even remember I want to see what happens, or I'm too caught up trying to fix something I did to start drinking (anything, like, even water, I've managed to forget to drink even water for an entire night). [editline]2nd January 2014[/editline] Oh yeah, I also learned to stop SVN'ing and learned to love the Git. Made a web system for a piece of coursework that beat out 4 other teams to win an internship. The actual website design was atrocious, but the features we programmed edged us out above the competition nicely. This taught me more about JSP, AJAX, managing web servers (one team mate couldn't help but break it). Tinkered with the GJK algorithm in 3D for collision detection and finally understood it only to realise I have no idea how to respond to a collision.
I mainly learned C# and a little bit of C++ with Qt. -Entity framework with SQL (and compact edition) -Advanced WPF and the MVVM pattern (it works really nice if you got it right) -Some HTML, CSS and javascript -Some SFML.Net -Agile with TFS (vs2013 gave me a free account) -Unity -Threading in Java and C# -Some other stuff like webservices with Java and C# -Some other minor stuff i might have forgotten -Also, deployment of applications should NEVER be underestimated, especialy if you have to migrate a database by hand (MS access to SQL Server). I still beat myself for thinking it would be easy.
Qt is pretty nice.
what i've learn. Don't be an idea guy that can not code. and talk too much.
[QUOTE=pac0master;43455724]what i've learn. Don't be an idea guy that can not code. and talk too much.[/QUOTE] You've come far. We're proud of you <3
Linux is great for development, good compilers, proper terminal, etc. Linux is awful for development, I really miss Visual Studio, MonoDevelop is close but not quite there. More 3D graphics stuff, more of the maths, more of OpenGL. Learned to at least somewhat how to use VIM, I'm by no means good at using it, but it's powerful. How to use detours, and some reverse engineering to go alongside. What I haven't learnt: How to network an entity system. It's something I'm working on again now.
Sorry, you need to Log In to post a reply to this thread.