Microsoft – Week 4

Hey there!  It’s now week four, also known here in Redmond as “two-weeks-before-OneWeek,” where a ton of awesome events are planned (as well as the Imagine Cup… hype!).

Aside from the waking up part, I had a great Monday!  After getting settled in with a can of apple juice and having my weekly checkin with my manager, Briana, I dove right into the code of the Touch Develop Minecraft extension I started on last week.  With everything running smoothly already, most of the work I did was general cleanups and optimizations.  I’ve also gotten in the rhythm of spending a bit of my Mondays doing some research- this week’s topic of study was data encryption.  This is a great resource if you’re interested in the nitty gritty of hashing algorithms, cool stuff!

(Oh!  It’s a secret, but I think I’m going to hold an intro-to-modding session on campus during my last week.  I’ll leak more details when I have them!)

I spent my Tuesday polishing off the Touch Develop extension: fixing a few last-minute issues, setting up my Gradle environment (a build automation service) to compile the project, and packaging the obfuscated files into a shared folder for the Mojang team to try out.  I also wrote up a little readme file with installation instructions and a brief tutorial, something I haven’t done in years.  I also finally decided to try out the IntelliJ IDE for Minecraft development- I wish I had done this sooner!  The setup process was so much easier than it is for Eclipse; no detailed project structuring was necessary to deal with my various Mekanism modules, it just magically set itself up from my build script.  I went to the Lincoln Square Cafe in downtown Bellevue with a few friends for lunch- not only did I get to enjoy a delicious taco salad while overlooking the city skyline, but I actually saw the Manchester United soccer team’s tour bus pull up right beside a hotel on our way back- I was not expecting to see Rooney himself today.  I’m still a little caught off guard.

Though my Wednesday started out slow, it picked up in pace pretty fast!  I finally had a meeting with Peli of the Microsoft Research team who I demoed my work on the Minecraft extension to, and we came up with some cool (but confidential!) ideas that I’ll be starting on soon.  The extension itself should also be reaching the Mojang team by now, I’m excited to hear feedback!  I’m also starting to seriously plan out this intro-to-modding session; it’s really shaping up well and I know it’s going to be awesome.  It’s also proving to be good logistics/coordination experience for me – there’s a lot that goes into making these kinds of things happen that you wouldn’t realize!

I only spent about an hour in my office on Thursday and not much more on Friday- definitely full days!  I had the opportunity to attend the CEO’s intern talk where I managed to grab front-row seats (after waiting in line for over an hour), it was crazy to see Satya so close in person after only seeing him in pictures.  Even better, he mentioned me and my projects during the Q/A session- crazy!  Aside from my weekly LeX video shoot, I held a meeting on Friday regarding a demo session we’re holding next week for my Minecraft extension I’ve been working on.  It will be the first time my software is actually going to be used so it’s pretty high stakes- I have to make sure everything is working beforehand!

I only have three weeks left, but there’s still so much more to do.  I have a feeling I’m going to be fairly busy… see you in a week!

Microsoft – Week 3

It’s that time of the week again: blog time!

I had an awesome long weekend; after running a patriotic 5k early Saturday morning on Bainbridge Island, I went on to see a spectacular fireworks show at Gas Works, a retired gasification plant turned into a popular green space.  And what a way to end the holiday with the U.S. Women’s National Team winning the Women’s World Cup!

Anyway, Monday and Tuesday were primarily office days for me- getting up to date via email and having meetings with my mentors.  There’s now a chance the Minecraft modding MVA course may fall through, but I won’t know for sure until the team gets back to me.  Regardless, there’s a new project in the works that will take its place if it doesn’t work out – the MSR (Microsoft Research) team is in need of a developer to port its Python-based tutorials for its Minecraft extension over to Touch Develop, and make a mini-series of tutorials.  It’s a bit tricky as I’m not really sure what I should be putting my full focus on yet, so I started my “Real Reelz” video script (a short self-narrated video of my story as a programmer) for the Hour of Code, which we’ll be filming at the end of my internship.  Although these days were a bit slow, I’m learning that this is just a part of the job – and when it is, it’s best to adjust yourself in order to stay productive.  I also spent a bit of my free time researching and learning the popular and lightweight data framework known as JSON (JavaScript Object Notation), just for fun (which should come in handy!).

Wednesday was also an office day, but it was much more busy.  After a morning meeting with Peli de Halleux of the MSR team I found that instead of taking up Python-to-Touch Develop port project, I’m actually going to be actively contributing to the Minecraft extension itself.  Rephrasing, I’m getting paid to develop a Minecraft mod- crazy!  After getting my development workspace set up and grabbing lunch I went onto my next meeting, this time with the group behind the Imagine Cup.  I had no clue how big this is going to be – there are three different focus categories (innovation, world citizenship and gaming), each with roughly ten participating teams, competing for first place prizes of $50k.  The event itself lasts an entire week (Microsoft’s “OneWeek” to be specific) and takes place right here on campus.  I still can’t believe I’m going to be serving as a judge- not only will I have the opportunity to work alongside some of the brightest minds in the tech industry, but I’ll be able to see competing projects at the forefront of innovation.

Thursday and Friday were my first real “code days!”  It’s been a bit of a challenge getting accustomed to the Windows platform- I’m just so used to developing in a UNIX environment.  I’m starting to get used to MS-DOS, though, with a little help from the internet.

Until next time!

Microsoft – Week 2

Sorry it’s late!

It’s now week two here in Redmond!  It’s commonly known that going back to work after a fun weekend is not exactly something you look forward to- I spent my Saturday rock climbing and going on a run through Bellevue, and had dinner with some family friends right on Puget Sound after seeing the new Mad Max movie (seriously awesome) on Sunday.  However, I for one was excited to get back in the office.

Monday and Tuesday were fairly relaxed for me.  I had some free time I used to research a few concepts I was unfamiliar with, including basic SQL authentication and “geofencing” using location services, both of which should help me complete my city’s park informational app.  I managed to finish the course structure and outline for my Minecraft modding course for Microsoft Virtual Academy (MVA), meaning I’m in the home stretch to presenting it to the Minecraft team!  I also ended up meeting with a group of college interns about an IoT project we plan on starting next week; I don’t know much, but from what I heard we get to mess around with Raspberry Pis and other goodies which sounds good to me.  On Tuesday I also ventured out to Cafe 34 for lunch to try some Indian- I was not disappointed!

Wednesday was definitely a more packed day – after getting to work, I had just over an hour to check my emails and make sure everything was in order before I took a shuttle to Building 92 to help the Learning Experiences team out with the Hour of Code event (specially for Microsoft’s annual Bring Your Kids to Work Day).  We ended up working through three consecutive sessions with 30 minutes rest in between (most of which was spent cleaning up after the last group and resetting the computers), it was definitely hard work.  After replacing some broken hardware it was onto answering the many questions the participants had – most of which just required quick clarifications, but several requiring a bit more thought.  I was asked at least five times about an issue relating to the way lives were removed in the game the students were editing; luckily my coworker Jayden ended up come up with a workaround.  In the end, though, it was lots of fun to watch as the students messed around with the programming tools- you could tell that they were really learning and having fun while doing so.

Thursday was jam-packed with tasks and events, but I have the long weekend to look forward to once I’m finished (no work Friday)!  Due to my general clumsiness I lost my ID towards the end of the day Wednesday, which meant a trip to Global Security Access Management (GSAM) early in the morning – the office that manages the fancy Microsoft ID cards.  Right after getting my shiny new card, I had to scurry to my office to check my email and submit my hours before meeting with the IoT group for a day-long kickoff.  After a quick run-through of the program, we were each handed bags filled with parts for what would end up becoming awesome little self-aware rovers after a little bit of assembly.  Sadly, I had to depart early to make it to my LeX video shoot, which should last right up until the end of my shift.

In other news, someone in my shared office space moved out, meaning I moved up to a bigger desk – yay!  See you in a week!

Microsoft – Week 1

I’m tying into my blog to provide weekly updates of my experience here at Microsoft. This post will serve as an introduction to both me and the internship program; some of this may seem a little redundant if you’ve already read my About page.

Hey there! I’m Aidan Brady, and this here is my first blog post as a Microsoft intern. I’ll be working under the “Developer Experiences” (or DX) team which encompasses development partners, education, and platform evangelism in general. I’m writing this post just so soon not because I don’t have anything to do, but rather because so much has already happened and I don’t want to lose track of it all!

A little bit about me: I’m 17 years old, a rising senior in high school, and an almost-11-year resident of Atlanta, GA (where it is currently near 100 degrees, thank goodness I’m here in Redmond). I’ve had an interest in computers for as long as I can remember, and I’ve been doing serious programming for close to seven years now. I’ve dabbled in Python, Swift and C++, but Java is definitely my specialty; alongside my most popular project, Mekanism, I’ve developed countless Java-based applications that I still maintain.

Outside of the tech world, I play piano, tennis (even though I’m one of the worst tennis players I know), love to run with either my music or my friends, and am known to spend quite a few hours at a time watching various shows on Netflix. Speaking of which, if you don’t watch Mad Men, you really should.

I arrived here in Seattle this past Saturday and am staying just across the street from the Microsoft campus at an “Extended Day America,” where I am accompanied by my parents due to what I assume are child labor restrictions. On the start of day one, I still didn’t quite believe I was actually going to be working for Microsoft, and I honestly still don’t. Every employee I talked to was welcoming and more than happy to answer my silly questions (“Where’s the restroom?” “Is the coffee free?” “How exactly do I get out of this building?”) – that includes the college interns who I work alongside in my shared office space. And yes, by the way, the coffee just so happens to be free!

Unlike some internships, there was really no “lazy warm-up period” – right after lunch orientation I was assigned my office and computer and briefed on how my next seven weeks would look. I spent the rest of the day filling up my computer with some shiny new Windows betas, including fancy copies of Visual Studio Enterprise 2015 and Office 2016 which managed to download in minutes thanks to the company network’s gigabit internet. And just like that, I finished my first eight-hour workday at Microsoft. I was in heaven.

Day 2 consisted of me finishing my computer’s setup, grabbing lunch with my intern co-workers, talking with my mentor and attending my first real meeting (woo!). I also found myself already habitually checking Outlook for new emails, and discovered that my calendar was rapidly filling up with company events. As I downed my sixth cup of coffee in my shiny new Microsoft mug, I was feeling like a true employee.

The third day was quite a bit more busy. After doing a bit of work on one of my programming projects in the morning, I took a 30 minute 8:45 shuttle to Redmond Town Center (RTC) where I met with Briana Roberts from the Learning Experiences team, a group within the larger DX organization, that is likely to take a good bit of my time throughout the rest of my internship. After a short meeting, I learned that aside from writing up these blog posts, I’m going to appear in weekly video blogs, work with the Harvard-hosted CS50 event, as well as serve as a judge during for Imagine Cup – and these are just the projects I remember off-hand. I hope I have a chance to work with the Minecraft team, too!

And here I am at the end of my fourth day! I had to get started a bit earlier to be able to hop on a shuttle to the CS50 Bootcamp, but that wasn’t too hard now that I’m getting adjusted to the three-hour time change. I didn’t exactly know my role when I first got there so I got myself some of the free catered breakfast (really good) and took a seat – the actual event started about 20 minutes later. After David Malan, the star of CS50, finished his speech, the attending teachers all filed into another room where tables were set up for different groups – the goal was to come up with a curriculum to teach students the basics of computer programming. Without clear instruction of what I was supposed to do, I decided to just take a seat at one of the tables and help a group with their lesson plan. I realized that I actually could contribute a lot to the conversation, being a student myself! After an insightful discussion on the issues with a typical course-based computer science education, we came up with a plan that involved a more individualized approach to programming, with students following their own projects that interest them and learning various concepts along the way – kind of like the way I learned. Little did I know that the outcome of this planning, however, was to actually teach it – David had a big group of students come into the room, and we all were paired up to have real one-on-one computer science instruction sessions. And that is how, on day four of my Microsoft internship, I became a computer science teacher.

My time here is definitely going to be busy, but it’s by all means going to be fun, and the experiences and connections I will make I’m sure I will take with me far past college. I have a new-found appreciation and respect for Microsoft, too.

Oh!  The Microsoft Learning Experiences is starting a weekly video series of some of us LeX interns, and I happen to be one of them. I’ll attach each video to its corresponding blog post, including this one!

I’m in Love with San Francisco

It’s not my first time here.  I was no less enthralled before.  It’s different this time, though…

It’s partly the people, partly the city’s unique culture, and partly the lovely weather.  I also love that every other billboard is advertising a startup tech company I’ve never heard of.  Maybe it’s also that the tech industry has grappled itself around the fantastic San Francisco skyline (which, in my opinion, is unmatched anywhere else in the U.S.), and the nearby cities of San Jose and Palo Alto.  Regardless, this city has pulled me in and I don’t ever want to leave.

Of course, I don’t live here.  I live on the opposite coast in a city that is also beginning to rise with tech-driven economic power.  The aura that resonates from Atlanta, however, is far less attractive than that I have experienced here – just walking down the roads of this fantastic California city, I feel like I’m at home.

I have one week left to make the most of my time here until I make the sad journey “home.”  Not nearly enough time to take it all in, but just enough to entice me to return.

Sigh.

It’s that time of the week!

You’ve survived five days of torture, whether it be work or school.  You’ve made yourself a cup of coffee and have settled into your nice, comfy chair – all ready to relax and enjoy the short period of weekend solitude that awaits you.  Right?

NO, of COURSE not!  Mekanism v8 is out!

It’s been a big release for me.  3/4 of a year in the making, I’m happy it’s finally done.  There is so much in this release that there is no way I will be able to put it all in one changelog.  I’ll do my best, though.

Content:

  • Flamethrowers – deadly, hydrogen-powered, fire-shooting, ore-smelting, forest-burning pieces of steel.
  • Fusion Reactors – ultimate end-game energy production.
  • Lasers – high-powered laser beam emitters, capable of breaking blocks and cooking chickens.
  • Laser Amplifiers – control your lasers’ energy transmission and beam direction.
  • Laser Tractor Beams – store the items your lasers mine.
  • Factory Installers – upgrade machines to factories and factories to higher-tiered factories without breaking a block.
  • Gauge Droppers – quickly swap fluids and gases from machines’ GUI gauges.
  • Lithium – a brand new resource, created by evaporating Brine.
  • Hohlraums – the key to igniting Fusion Reactors.
  • Filter Upgrades – upgrade your Electric Pumps to filter out heavy water for Deuterium production.
  • Solar Neutron Activators – advanced, neutron-absorbing machinery for Tritium production.
  • Energized Induction Matrix – massive, modular, end-game, multiblock energy storage.
  • Oredictionificator – standardize a single kind of dust, ore or ingot for your resource collection.
  • Baby Skeletons – you heard me.

Enhancements:

  • Brand-new upgrade system – upgrading never felt so good.
  • Redesigned side configuration menu – configure not only which sides items can enter, but also energy, gases and fluids.
  • Redesigned Seismic Reader GUI – now much cleaner and user-friendly thanks to Archtikz.
  • Enhanced Logistical Transporter algorithms – now much more server-friendly and work better with Bins.
  • Refactored machine recipe system – now completely optimized and more easily expandable for future additions.
  • IMC recipe API – allowing for much easier integration by other mod developers.
  • Digital Miner improvements – filter-based replace blocks, more filter-unique options, dynamic visual of the miner’s range, more user-friendly interface.
  • Teleporter redesign – now with a beautiful and advanced new interface and frequency-based teleportation, with private and public frequency networks.
  • Refactor of Salination Plant – now called Solar Evaporation Controller, much more CPU efficient, and capable of processing different resources.
  • Better NEI modules – neater, easier to interact with, and better showcasing of Mekanism recipes.
  • Better upgrade support – all processing machinery now can support upgrades, allowing for faster 5x ore processing.
  • Revamped multiblock system – all multiblocks now follow a unified framework, allowing for easier future additions and better code efficiency.
  • New multiblock features, including universal connected textures and multiblock creation animations.
  • Config-based machine disabling – server-based machine configuration to allow for disabling of certain machinery.
  • Improved sounds – machine and player-based sounds have been redesigned and improved to allow for seamless looping and better quality listening.
  • Refactored sound system – Mekanism’s sound system has been completely recoded to follow along Forge standards, meaning “sound mufflers” will now work on anything Mekanism.
  • Many more minor enhancements and additions I’m sure you will discover.

That was a mouthful.

Warning: Mekanism v8 contains some major changes that may corrupt some individual Mekanism machines or items.  Please back up your world before you update, or preferably, start a new world before playing with v8.  I will not be providing support on GitHub for transition issues.

I hope you all have as fun with v8 as I did developing it.  I can’t take all the credit, though – unpairedbracket has been an unbelievable help this release, and is the brains behind the new revamped recipe system, sound system, connected textures, lasers and Fusion Reactor.  Credit for the assets go to both my artist Archtikz and I.

Over the past few weeks, aside from finalizing this release, I’ve also been planning out what content will be going into v9.  I can’t promise it will be nearly as massive as this update was, but I have some pretty cool ideas.  I’ll keep you posted.

Have fun!

App Store Review Process – a horror story

I thought I’d write a brief post detailing my quest to submit my new Wordzie app on the iOS App Store.  This was the first time I’d ever attempted this, so I expected there to be some roughness along the way, but I was in for quite a ride.

To start off, the development process.  I will say that learning Swift was a very enjoyable endeavor; being a Java developer, the automated memory management that came with ARC made me feel right at home, and I was a fan of the simplistic syntax.  Apple’s Swift tutorials covered everything I needed to know and more!  Xcode, however, was a completely different story.  I’m not sure if Apple actually attempted to test Xcode 6 before its release, but it sure didn’t seem like it – as I started development in version 6.1, I was crashing at least eight or nine times an hour, and the syntax auto-completion only worked a fraction of the time.  It got to the point where I wrote the entire app’s server management in detail before I even began work on the app itself – and once I was finished, I stalled for as long as I could to open up Xcode again.

It wasn’t until Xcode 6.1.1 came out that I started the app’s development again – an undoubtedly more stable release, but still packed with issues.  It was a lot of fun to mess around with the storyboard, and any questions I had could easily be answered by a quick search through Stack Overflow.  It only took about three weeks of active coding to finish the first iteration of the app.  It’s all smooth and easy after that, right?

Wrong.  In fact, preparing the app for production made dealing with a buggy Xcode seem like heaven on earth.

Aside from getting all the proper certificates set up using Keychain Utility and the necessary build settings set up, it was miserable trying to get push notifications ready for release.  In fact, I’ve still yet to finalize their implementation for distribution – that will have to come at a later time.  At the time I finally managed to get my app submitted for review, I was ready to throw my MacBook Air through the window and smash the iPhone I had used for testing.  This was the start of the torturing 9 day “Waiting for Review” period where my constant refreshing of the iTunes Connect page most likely appeared to Apple as a continuous DDOS attack.  On the Friday I saw my app switch to the “In Review” state, my neighbors probably heard my victory cry from across the street; this feeling was short lived, however, as I was slapped in the face with a rejection just half an hour after with the most obvious reasoning possible: “2.1 – apps that crash will be rejected.”

WHAT?!  I had tested this app inside and out both on Xcode’s built in simulator and on my iPhone itself!  Impossible!  INCONCEIVABLE!

Well, it was obviously possible.  Off I go researching what could have gone wrong – after at least an hour of searching, I decide to load up the exact build I submitted to Apple onto my iPhone with iTunes.  Of course, as soon as I fire it up, I am faced with a crash.  Those pesky app reviewers were right, but how?  My stubbornness that usually does me harm came in handy – I needed closure.

Two hours of nail-biting research later (I was at least on page 19 of Google search results),  I come across something that seems so far out that it may actually be the cause – the Xcode “Optimization Level” build setting.  It seemed that this setting was different for debug and distribution purposes.  I quickly open up Xcode and change my scheme to match distribution, and am faced with the EXACT same crash on the simulator.  Brilliant.

It has now been nine days since I resubmitted the app with the working optimization level (which in my case was none), and right on queue, it’s now showing up as “In Review” on iTunes Connect.  I hope I get lucky this time around, but I have a lingering feeling that I’m going to be faced with another rejection.  Perhaps it’s just PADSD – post app-development stress disorder.  I don’t know what to think anymore.

Hopefully this post comes in handy for someone having the same issues I had.  I’ll post again once the app is finally accepted.

Oh, also, I haven’t forgotten about Mekanism, nor the v8 release.  I should be getting back on that within the next few weeks.

Studies

Here in the U.S., junior year is a pretty packed year.

It’s the year that you stack as many commitments into your schedule as you can in order to make a good impression on universities.  Even though I disagree with this routine, it is widely accepted as the way to get into a good college.  On top of this, you are expected to maintain a challenging course load packed to the brim with AP courses, do well on both your finals and your AP exams, and hold a solid GPA.  And even more, standardized testing (SATs, ACTs) are thrown at you along with gruesome hours of studying test-taking strategies and vocabulary.  It’s not fun!

You can probably now see the reason I haven’t been too active lately.  I’ve set my standards pretty high for my college selection, and the consequences of doing so are attacking me from all angles.  I’m pulling through, however – I should at least be done with the evil standardized tests by November.

Aside from this, I’ve been keeping a notebook with me that I’ve been writing ideas in.  Ideas not only for Mekanism, but also for my almost-complete PeerChess app, and for a social networking project I’m working on with a partner.  I’ve been warming myself up for these things both by prepping to become Java certified and also by developing little games.  I made pong the other day and had my friend record the sound effects – it’s pretty funny.

If you’re reading this, however, you’re probably most interested in Mekanism.  That’s understandable, and I have some plans and content in the works that should make you happy.  I’ll plan on making an update later with some sneak peeks.

A Long-Awaited Release

Hey all.  v7 has been pushed.

After many months of planning, implementing, and fixing (oh, the fixing), I performed the great merge of 320 commits into the master branch.  I hope you enjoy the:

  • 1.7.10 update, which involved a complete rewrite of the networking code.
  • Efficiency improvements, which should allow Mekanism to perform much faster on both clients and servers.
  • Portable Tanks, which I will (hopefully) be making a video on tomorrow.
  • Filter Cards, which let you save and swap filter data of Logistical Sorters and Digital Miners.
  • Seismic Vibrator and Seismic Reader, which let you explore layers under the surface without the hassle of picking up a pickaxe.
  • Salt Blocks, which make higher-tier ore processing slightly easier (and spawn kinda like clay does).
  • Fluidic Plenisher, which is the ever-hyped “opposite of a pump.”
  • Pressurized Reaction Chamber, which will be easier to use if you have installed NEI.
  • Glow Panels, which will, quite simply, brighten (and colorize!) your day.
  • Material and Mod ID Filters, which give Digital Mining and Logistical Sorting entirely new experiences.
  • Plastic Decoration Blocks, which I promise won’t pollute your oceans!

There’s a lot more to this update as well, but I’ll let you see it for yourself.  In the meantime, I’m busy coding flamethrowers for Mekanism v8.

Signing off.
-aidancbrady

The Fixing of Bugs

This week has been a week of fixes (and a little content as well).

Last week I mentioned that there were two main caveats of the current Mekanism 1.7 build – the first being the strange rendering of cables, and the second being the temporary removal of NEI.  Both of these issues ended up turning into hours of troubleshooting for me, which I will detail below.

Strange Rendering of Cables

Look at this.

That doesn’t look right, does it?  Something is…off.  Like the entire model is inside out.  Or like the textures are all flipped.  Yeah, it turns out this is a known issue in 1.7.2, and was fixed in 1.7.4 (like I mentioned before).

Anyway, I spoke to ChickenBones about this, and we ended up finding a workaround that involved using his library to take a two faced copy of the model and render both at the same time.  Not very efficient, but it works for now.

Removal of NEI

There’s a bit more too this than “it wasn’t ready yet.”  I wasn’t able to get the build script to run properly with the latest Forge and NEI installed, so I was putting this off until I updated.

Well, upon updating Forge, the script failed, stating that it was unable to reference some classes that were added with the new simpleimpl Netty wrapper system.  After troubleshooting on the #ForgeGradle IRC channel for a solid two hours or so, I was about ready to give up.  That’s when I realized that the log only was spitting out this error for 8 out of my 26 packet classes, and I found that there was a pattern – the error only occurred on my packet classes that had enums nested inside.  In other words, I found a bug with the javac compiler.  Probably the strangest issue I’ve ever encountered, and I’m going to report it to Oracle as soon as I get a chance.  I fixed the issue by taking the enums out of the nested classes.

With the fixes of these two issues, 1.7 is now technically more stable than the current 1.6 branch – this means that a release will be pretty soon.  I also have a few new features in the works :)

Hope you all are enjoying the summer, I sure am.
-aidancbrady