My Coding Conventions

When I run my own company or lead a brand new team, everyone will follow coding conventions. My Coding Conventions!

Here they are, to the best of my current knowledge and by probable order of importance.

  1. Every method will be documented! That includes purpose, parameters, proper usage, etc…
  2. Every property will be documented! Yes. Exactly the same.
  3. Every class will be documented! Especially about recommended uses and where it is suppose to go.
  4. Every public field which is not incredibly obvious will also be documented!
  5. Every conditional block will be an actual block, with parentheses. Even if it’s one line!
  6. Starting parentheses always get a new line! Exception: if it’s a conditional or property and it fits in one line.
  7. Every method shall appear in full before its first use. This makes the code more readable! Do It!
  8. Design for any part of the program should be ironed out ahead of time and with as much detail as reasonableness allows.
  9. To be continued… (Suggestion welcome)

Posted in IT, Practice, Programming, Thinking Out Loud by with 6 comments.

Fun With LINQ Expressions, Lambda Functions and Ternary Operators

At work, we work with Unity. Unity comes with its own IDE, MonoDevelop.

MonoDevelop sucks. I hate the way it looks. I hate the way it folds code. I hate the way it unfolds everything every time you save. I like the way it finds files and classes but that’s about the only thing I like about it. And I have to use it for debugging.

However, I don’t have to use it for actual coding. I use Visual Studio 2013 because we already have it and it’s a pretty good tool. It does lack some advanced capabilities and so I installed the ReSharper plugin which adds a lot of power to VS and makes it even much more useful.

What I like about ReSharper is that it suggested a lot of improvements to my code and actually taught me more about LINQ expssions and Lamda functions. I already knew and much liked Ternary operators. I think that all of them make code more lean and prettier and easier to read as it makes it more legible in actual English.

The C Trenary operator is “?”. You use it like this: “(condition) ? (variable if true) : (variable if false)”. Much easier than “if (condition) then return variable1 else return variable2”.

Lambda functions are a kind of anonymous function that is much easier and shorter to write. So, instead of writing “delegate(KeyValuePair<long, string> pair) { do something with pair }” and shoving all that into a callback, you just write “pair => do something with pair”. It doesn’t look like a big improvement but it is in the long run.

LINQ expssions are a sort of C# extensions that provide more functionality to a lot of data structures in a way that make them very generic and very easy to understand.

Which brings me to my example of how I used all of them together to get a very powerful operation done in what is, technically, a single line of code that is also easy to read. Code has been obfuscated to protect the innocent.

List<AClass> AClassList = AListOfStringListPairs.Select(stringListPair => stringListPair.Key != specificKey ? stringListPair.Value.First() : null).ToList();

In English, notice the translation isn’t difficult, I take a List of pairs, where each pair is a string and a list of classes, and filter out the heads of every list whose string fulfill my required predicate and put those into a new list which I can later use.

With out LINQ or Lambda, at least, this code would have been 3-4 times longer if not more. So I like this a lot. There is only one problem: Because of an unavoidable constraint of our development method, we can’t use some specific collection method which LINQ uses almost all of the time. So I can’t use most LINQ expssions. Which sucks.

But not as much as MonoDevelop.

Posted in Life, Practice, Programming, Thinking Out Loud, Work by with 2 comments.

Our Game is the First of the Unity Blog 2014 Global Game Jam Selection

See the post here.

Interesting Tidbits:

  1. There were 2292 Unity games in the 2014 Global Game Jam out of 4291 total (That’s more than 50%).
  2. The Unity blog decided to feature 4 games they found to be interesting (That’s less than 0.2%, of only the Unity games).
  3. Our game was number one on that list.
  4. Dropbox, where I hosted the web version of the game, is probably getting Slashdotted right now.
  5. If isn’t, it should be. I’ll go help with that. By posting to Slashdot.
  6. This game took ten people about 30 hours to make. From scratch. Including a few hours of sleep.
  7. At one point, seven of them occupied a table meant for one.
  8. This was me and Maayan’s first GGJ.
  9. I knew one and a half of the other people on the team. Maayan knew one.
  10. I would like to think that we had two major factors playing in our favour for recognition:
  1. We had a good strong team, covering well all the majour requirements, and each one contributed to the vision.
  2. We hit on a very good combination of interesting, challenging, good looking, well sounding, cute, competitive and overall fun gameplay.
  • This was and is incredibly awesome.

  • Posted in Gaming, Less Interesting News, Maayan, Programming by with comments disabled.

    The Results Are In!

    And you can see the awesome game we made at the Global Game Jam on my Projects page.

    The Global Game Jam Game page is right here.

    And thanks to everyone for a great time and great work.

    And our Music and Sound Designer is Alon Kaplan, starring as Sir Not-Appearing-in-this-Picture.

    Posted in Gaming, IT, Life, Maayan, Programming by with comments disabled.

    My Kind of Jam

    Global Game Jam.

    Don’t try to reach me until Saturday night.

    Posted in Gaming, IT, Life, Programming by with comments disabled.

    Not Everything Can Have a Title

    אתמול התחיל בקצת דכאון. זה היה מין יום של כל-הדאגות-שבדרך-כלל-יש-בחיים-ובדרך-כלל-אתה-מצליח-לקטרג-בירכתי-המוח-אבל-לפעמים-פתאום-נופלות-עליך-בכל-הכוח.

    אז הייתי מבואס כל הבוקר. לדבר עם מעין עזר לרומם את רוחי. אבל זאת לא הייתה הבעיה העיקרית. יום לפני חזרתי מוקדם הביתה כי פשוט לא היה מה לעשות. כל המטלות שלנו נתקעו בגלל בעיות עם השרת. אותי שלחו הביתה מוקדם. ואז בבוקר, המצב לא השתפר כל כך מהר כי הצוות שאחראי על השרת רק התחיל לעבוד ולקח להם זמן להביא אותו למצב ששימושי לנו. אז את רוב הבוקר עסקנו בהתאפסות על עצמנו ותכנון לעתיד וחפירה החוצה של משימות שעד אותו רגע “חיכו לאחר כך”.

    אבל כל היום הזה השתפר פלאים כשעשינו ישיבת חברה על מצב המשחק והתכנון הכללי וביקשו רעיונות והיה לנו רעיונות והקישבו לרעיונות שלנו ודיברנו הרבה על איך דברים צריכים להעשות ומה כן או לא עובד לאילו סוגים של שחקנים. ולקראת סוף היום גם קראו לנו שוב לדבר על הרעיונות והיישומים ובאמת הקשיבו ואני הרגשתי הרבה יותר כאילו לכל אחד מאיתנו באמת יש חלק חשוב בבנייה שלו ואני לא רק מי שאומרים לו אילו לבנים לשים איפה ופשוט עושה את זה.

    אז אני סיימתי את היום מלא באנרגיה ושמח וטוב לב. עכשיו אני רק מקווה שבאמת ישתמשו במה שאמרנו ואולי גם יקראו לי אחר כך להוסיף עוד נופח נרטיבי.

    Posted in Gaming, Life, Programming, Work by with comments disabled.

    My First Day at Work

    Was yesterday. Get to know the people more and they’re all very cool people. I didn’t get a lot done but that’s how first days usually work. I still had a lot of fun and I’m still excited to go back. I already think my main issue with a new working environment – people who are fun to work with, accommodating and just all around pleasant – is covered.

    And today I’m already suppose to start contributing to the actual SCRUM goals. It’ll probably take me longer than expected for the task but it’s still taking something off their hands and clearing some schedule.

    I’ve just marked the categories for this post and it obviously goes under Life, Work but I’m still not over the fact that probably most of these posts will also go under Programming, Games.

    Posted in Life, Programming, Work by with comments disabled.

    And now it’s signed and sealed.

    I have the papers in my backpack.

    I start on December 1st and I can’t wait to get started.

    But until I explain my blogging situation to my superiors and know what I can and can’t say, everything is confidential.

    Posted in Gaming, Life, Programming, Work by with comments disabled.

    איך תיאורים גורמים לי להרגיש

    בכל המקומות שאני מחפש בהם עבודה, אני רואה המון תיאורים שונים, למה שאני מניח שהיא, אותה עבודה. רק, כל אחד מהתיאורים האלו גורמים, לפחות למראית עיני, לעבודה להישמע אחרת. וככה נוצרת סלידה מתיאורים מסויימים.

    תכנת (Tachnat) נשמע כאילו העבודה פשוטה ובנאלית ומונוטונית ומי שמבצע אותה הוא לא הרבה יותר מאשר מכונה הממירה קפה לקוד.

    תוכניתן (Tochnitan) נשמע כמו Script Kiddie, כמו מישהו שהתעסק קצת עם המיומנות ולמד לבצע כמה דברים פשוטים ולכן אפשר לתת לו כמה עבודות שחורות והוא יסתדר. לא הרבה יותר טוב מקוף עם מקלדת.

    מתכנת (Metachnet) נשמע כמו מישהו שזאת העבודה שלו. הוא הוכשר לעבודה הזאת במקום מסוים שמכבד את עצמו. הוא מכבד את עצמו וכנראה שיכול להתמודד עם רוב המשימות קרובות הקוד שאפשר לחשוב עליהן. עם תיאור כזה כבר אין לי בעיה. ככה אני הגדרתי את עצמי כשהתחלתי ללמוד.

    מפתח תוכנה (Mefate’ach Tochna) נשמע כמו מישהו שלוקח את עצמו טיפה יותר ברצינות ו/או טיפה יותר ביצירתיות מאשר מתכנת רגיל. מפתח זה גם כנראה מי שהנושא יותר קרוב לליבו ועושה את זה כי הוא אוהב את זה והיה עושה (וכנראה גם עושה את זה כרגע) גם אם לא היו משלמים לו.

    מהנדס תוכנה (Mehandes Tochna) נשמע כמו מישהו שהוסמך אפילו מעבר למתכנת פשוט. מישהו שלמד את היסודות והדקויות, כנראה באיזו שהיא אוניברסיטה מכובדת. הוא יודע לא רק לתכנת אלא גם ללכת קצת מעבר. זאת ההסמכה שיוצא איתה בוגר טכניון שהלך כל הדרך. זאת ההגדרה שאני מעדיף ברגע שיש לי דיפלומה יפה ביד.

    ארכיטקט (Architect) הוא מישהו שכבר היה מהנדס תוכנה והתעלה מעל זה. הוא כבר חושב יותר גדול משורות קוד קטנות. אני מקווה להיות כזה באיזה שהוא שלב.

    כשהייתי במיקרוסופט ביום ראשון (דרך אגב, גלידה לפני הראיון זה רעיון נהדר) שאלתי את השאלה על אפשרויות הקידום וקיבלתי את התשובה הכי טוב שיכולתי לקבל אליה: הרי כל חברה תציע אפשרויות קידום לניהול צוותים והלאה אבל במיקרוסופט דאגו לציין שזאת רק אפשרות אחת. אפשר גם להתקדם בתכנות בלבד, לכיוון של הנדסה גבוהה יותר, ארכיטקטורת תוכנה וכו’… זה כבר משהו שיותר מתאים לי.

    Posted in Humanity, Life, Programming, Thinking Out Loud by with comments disabled.

    It is done.

    And by it, I mean this.

    Posted in IT, Life, Programming, School by with comments disabled.