﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Ayende @ Rahien</title><link>http://ayende.com</link><description>Ayende @ Rahien</description><copyright>Copyright (C) Ayende Rahien  2004 - 2021 (c) 2026</copyright><ttl>60</ttl><item><title>Jason W commented on Expanding your horizons: Actions</title><description>I learned to love programming by writing MUDs and text-based games.  Few other endeavors have such a natural mapping from concept to code, and there's a wide range of interesting problems to tackle: TCP socket programming, data storage and schema/format versioning, AI, tons of data structures, graph algorithms, language processing, and compilers are just a few topics I delved into writing a MUD from scratch.

Another thing I highly recommend people write is an OSS library for public consumption.  Good naming, good documentation, and good design are things that should be much more highly valued.</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment13</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment13</guid><pubDate>Sun, 08 Jan 2012 11:56:21 GMT</pubDate></item><item><title>Hugo commented on Expanding your horizons: Actions</title><description>Very well put example for modern times. Reminiscent of Edison's quip about the lightbulb: "I didn't fail 10,000 times, I learned 10,000 ways not to do it". </description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment12</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment12</guid><pubDate>Wed, 28 Dec 2011 16:20:21 GMT</pubDate></item><item><title>Mike H commented on Expanding your horizons: Actions</title><description>Build a physics-based game and make it perform well. You'll learn a lot about being efficient with resources and memory by building a game - even in a managed environment.  Build a chat bot with XMPP.  Build a chat bot that utilizes Python's Natural Language Toolkit, and do some natural language processing. </description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment11</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment11</guid><pubDate>Wed, 28 Dec 2011 13:51:29 GMT</pubDate></item><item><title>Rafal commented on Expanding your horizons: Actions</title><description>My recommendations for leaving .Net Developers Comfort Zone:
- do some programming on Linux. 
- configure linux box as a network router. Add DNS, dhcp, vpn client, ssh etc.
- check how Linux/Unix system tools and services are implemented. Learn to use them, browse the source code. Think about filesystem/file operations, /proc, accessing system services and compare to Windows
- well, to compare anything to Windows you have to know how these things work in Windows. Think about complexity and usefullness of system services and tools provided with the system.
- write few Lisp programs
- or write a Perl script (yet on my TODO)
- or learn TCL/Tk (I'm still waiting for such elasticity in .Net)
Just start to unlearn .Net instead of learning more and more of it.

</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment10</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment10</guid><pubDate>Wed, 28 Dec 2011 12:55:32 GMT</pubDate></item><item><title>Artur Reaboi commented on Expanding your horizons: Actions</title><description>For me it is building an obfuscator for .NET. I know understand how the CLR is initialized, assemblies format, CIL opcodes, stack-based languages, abstract syntax tree and control flow, parallel pipelines,authenticode and strong-naming, many quirks of class/interface hierarchies, WPF, XAML/BAML, XAP, etc.
I have also done some quite advanced graph algorithms (for prunning and name collisions) and this got me back to the nice times of programming quests I participate in :)</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment9</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment9</guid><pubDate>Wed, 28 Dec 2011 12:11:31 GMT</pubDate></item><item><title>Morten Christiansen commented on Expanding your horizons: Actions</title><description>For learning about performance and efficient code, working with algorithms and graphics in general, I find ray tracing highly motivating. There seems to be nearly infinite aspects to focus on and if you focus on making it fast, you can learn a lot about the cost of things you may take for granted such as garbage collection, boxing/unboxing etc. It's a bit heavy on the math though, so it might not suit everyone.</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment8</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment8</guid><pubDate>Wed, 28 Dec 2011 11:14:47 GMT</pubDate></item><item><title>Josh Reuben commented on Expanding your horizons: Actions</title><description>Useful but difficult things to build:

1) a DSL that can generate code from spec
2) an emulation of a specific thought process - http://en.wikipedia.org/wiki/List_of_thought_processes
3) a static analysis mechanism that searches a common code base for duplicate or extensible code with near matching preconditions &amp; postconditions</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment7</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment7</guid><pubDate>Wed, 28 Dec 2011 11:01:23 GMT</pubDate></item><item><title>Tim Fish commented on Expanding your horizons: Actions</title><description>I totally agree that debugging complex low level stuff gets you an insane amount of knowledge. A couple of years ago I wrote an Ethernet bootloader for an ARM Cortex M3 and the necessary PC software. This needed assembly to copy the program into RAM, an ARM BOOTP client, a .NET BOOTP server, an ARM TFTP client and a .NET TFTP server. Debugging these relatively simple protocols was so much fun and unless everything was near perfect, it just didn't work. Wireshark is your friend!</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment6</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment6</guid><pubDate>Wed, 28 Dec 2011 10:50:37 GMT</pubDate></item><item><title>Dave commented on Expanding your horizons: Actions</title><description>I think the answer what people should try to build depends on their field. If you're working a lot with network technology I would suggest trying to build you're own HTTP(S) Webserver. For desktop developers it might be useful to write you're own windowing (GUI) layer based on DirectX.

BTW: Why is the publication date of you're articles in GMT timezone and comments have an Israeli timestamp (GMT +0200)? Isn't it much simpler to keep all dates into the same timezone? 

</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment5</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment5</guid><pubDate>Wed, 28 Dec 2011 10:44:00 GMT</pubDate></item><item><title>Phillip commented on Expanding your horizons: Actions</title><description>I personally struggle to read books, but put as much effort as i can to sit and read now-n-then. Most of what I've learnt is from trial and error, sometimes I struggle reading peoples blog posts about particular topics so when I post something I try to write it in a way that I understand so that maybe it can help someone else.

Currently building a personal project with RavenDB so I could learn it and because (I hope) the end result will be something that helps people. :)

I've learnt a lot from people i work with but after 8 years I still feel like i know absolutely nothing :(</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment4</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment4</guid><pubDate>Wed, 28 Dec 2011 10:42:27 GMT</pubDate></item><item><title>Frank Quednau commented on Expanding your horizons: Actions</title><description>I think there is one shortcut available, namely to have a mentor with whom you could work closely. While a good mentor will definitely let you do your own mistakes, he will be able to let you do those that help the most :)

Sadly, I never had one of those, but the internet does help a little.

The comfort zone is quite different for every one of us, but I think where most of us would have trouble on a fundamental level is trying to figure out how much of it may or may not help in certain situations: the use of neural networks in everyday programming. Areas where it may be used (but I don't know) are prediction models of server loads in clouds. An area where I could imagine it could help is optimizing UI layout for individual users. So much for the theory, only practice would help if it is just crazy or something that could be amazing shit.</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment3</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment3</guid><pubDate>Wed, 28 Dec 2011 10:22:58 GMT</pubDate></item><item><title>Luc Bos commented on Expanding your horizons: Actions</title><description>I used to play around with Microcontrollers like 8051 and the PIC 16f84.  I think this is one of the most eye opening experiences I've had with programming as it made me appreciate the comfort of the higher level programming languages.  

After that I didn't took things for granted anymore and I still think it's a wonder how things work seamlessly together.  The simple fact that the text that I'm typing in now shows up on my screen and will on a later time show up on your screens is simply staggering if you know what is going on in the background.</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment2</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment2</guid><pubDate>Wed, 28 Dec 2011 10:18:12 GMT</pubDate></item><item><title>Matthijs ter Woord commented on Expanding your horizons: Actions</title><description>For this same reason, Chad Z. Hower and I started a C# Operating System project (called Cosmos) several (7-8 years) back.

For me personally, I had to learn intel assembler, cil opcodes, operating system basics (what is protected mode?), et al, while implementing the first iterations of the compiler and the kernel. After the obvious parts, we have a working VS debugger engine (even allowing assembly-level debugging). All interesting parts to work on (and even more awesome to see working)

The project is still alive, but we're a bit low on resources (dev's), so we could really use devs interested in learning operating system development and spending some time on learning new stuff.

For more information: http://cosmos.codeplex.com, or join our mailinglist:
http://tech.groups.yahoo.com/group/Cosmos-Dev/

Regard,
Matthijs ter Woord</description><link>http://ayende.com/152641/expanding-your-horizons-actions#comment1</link><guid>http://ayende.com/152641/expanding-your-horizons-actions#comment1</guid><pubDate>Wed, 28 Dec 2011 10:16:33 GMT</pubDate></item></channel></rss>