Firefox Update & Bash on Windows!

Many things have happened over the last little while – the three dimensional CAD drawing features are moving into testing and finalizing which is always great, especially after spending a lot of time in development.  Fleshing out the minor details and polishing the feature will probably be what I’ll be working on the next week or two.  With the interns from last year heading back to school (they were in the same PEY program as I was), we have fewer people at work.  The torch has been passed to the new interns and I hope to build a friendly relationship with them as well.  As a way to “go out with a bang”, the interns and I went to Canada’s Wonderland for a day of fun on Sunday (I’m pretty close in age to them, so we talk often).  Joking around, screaming our heads off and eating together will be something we remember moving forward.

Developments have been occurring on the Firefox end as well – I have decided to proceed with Visual Studio on Windows as my development environment.  After some searching, it seems there is a tool that is used to create the necessary Visual Studio solution files – it appears a push was made to encourage more Windows-based developers to contribute.  Perfect for myself.  I guess what solidified my decision to pass on the UNIX environment was, well, that Windows 10 received an update allowing Ubuntu to actually run within Windows, granting access to the Bash shell.  This was perfectly timed because now I can quickly execute scripts and use the powerful shell commands that would otherwise be absent in Windows (Cygwin and Powershell seemed to be iffy).  Natively running Ubuntu (my distribution of choice) within Windows gives me the best of both worlds, making it a no-brainer.

I will be moving forward with development on both ends, hoping to do as much as I can!

Firefox Development

Things have been moving smoothly for me at CAST as we enter into late summer.  The three-dimensional CAD drawings are nearing its completion, but of course I will be putting my code through rigorous tests to ensure robustness.  On the social side, recruiting season is beginning again and all my friends are talking about jobs and school.

A little news about me, this week marks the beginning of my side-project Firefox contributions.  After the work on Jupyter, I was privileged to be introduced to some other skilled Mozilla members who are working on the Telemetry team for Firefox.  I was assigned a task that was mostly refactoring some histogram code for Firefox’s tests.  Starting small, I am really looking forward to get my foot into the door because I have always favored Firefox over other mainstream web browsers for its customizability and efficiency.  Now is my chance to help bring the experience to other users everywhere.

Having the project code in C++ makes me feel a lot more comfortable and confident that I can produce industry-level code.  This week I will working on setting up my environment (still deciding between VS2015 in Windows or Sublime/GDB in Ubuntu 16.04…) and getting the Firefox debug builds working.  So far I can get them to build, but getting the debugger attached is proving to be problematic in Visual Studio so I may switch to Ubuntu after all.  I will update more as I progress in what I see as a wonderful opportunity to make a difference.

Mid summer plans

Well, we’re into August now and the heat just keeps coming.  Even in a cool place like Toronto the sun and heat get pretty strong, capping out at around 35 degrees Celsius.  Nothing compares to some of the southern states, but it’s quite toasty for me!

Things have been pretty uneventful at work – these last couple of weeks I have still be working on the project I described in my previous post – making two-dimensional objects appear three-dimensional when viewing in CAD mode.

The real update comes from my side projects – as you may know, I have been keeping connections with my UCOSP mentor as well as Mozilla in general.  I am just about to get started on some new projects – luckily for me, they are in C++ instead of Python, which means I should be able to adapt quickly and produce results.  One of my major concerns previously was lack of productivity arising from my love-hate relationship with Python in the Jupyter project.  Python is extremely easy to write, which is wonderful, but difficult when you need to read other developers’ code.  There is way to easily determine object type and thus see the class definition – a tactic I often use to determine the restrictions and capabilities on a specific object.  Without it, I find myself gazing into a black box, and that makes things quite difficult for me to grasp.

On the other hand, it is just more things for me to gain exposure in, so I can become a well-rounded developer!


Work Update

So a lot of things have been happening this month especially following up from our recently release.  It’s up on the store now, available to customers!

There was, however, some issues that customers were experiencing with the latest build, so I’ve been hard at work resolving them with the rest of the team.  I didn’t want to write a new post until we had addressed all of the problems and the new product, WYSIWYG R37 Update, was uploaded and made available.  It was unfortunate that we had to make a patch so quickly after releasing the product, but we have definitely looked back and learned from our experiences.

Moving forward, we have shifted gears and started development on our sister product, Vivien 2017.  This software has similar capabilities to our flagship product WYSIWYG, however, it is more geared towards interior designers and event planners as the emphasis is on banquets and arrangements rather than lighting and fixtures.  Personally, I have been continuing work on something that I had started as an intern, which is something that customers have been asking for for quite a while.  As of now, certain objects are drawn as lines within CAD for simplicity, but in real life, they are three-dimensional objects with thickness.  My project is to allow users to see their objects in their full realistic dimensions, which produces more accurately measured sets and arrangements within schematics.  This project is quite challenging as a each object has unique properties, such as thickness and internal angles.  Addressing such objects must be handled carefully in order to not break existing functionality.  The project itself is progressing smoothly and I am learning quite a bit about three-dimensional models.

This was and is a great learning experience that I hope to continue as I move even deeper into the code base.

Computer Security

Wow, what a busy week.  We are so close to our release, so I’ve been finishing off remaining features, fixing last-minute bugs and ensuring our software is stable and most importantly, secure.

One of the things we and many others have struggled with in the past and present is being able to keep customers coming and pirates away.  Our software uses a secure dongle system to prevent piracy, but with computers becoming faster and more powerful, security that may have been strong a few years ago are now crumbling.  Just like DES and MD5, crackers are a looming threat to most desktop software nowadays, especially those with subscription systems and hefty price tags.

This release, I have been working closely with the lead developer to increase the level of security in our application – although I think all of us know that the more we secure our software, the stronger the crackers will come firing back.  As someone who has studied cryptography and computer security in university, I know first-hand the thrill of reverse engineering and forcibly accessing what we aren’t supposed to access (in a controlled environment of course).  While I was what you call a “white-hat” hacker (one who hacks ethically with the goal of finding weak security), “black-hat” hackers are those who break in in order to gain profit – whether it through be free software or by reselling cracked applications.  Now that I am on defense, I can’t help but feel excited – excited to wear my white hat once again.

Graduation 2016

Well I have done it.  I have finally and officially completed my undergraduate education at the University of Toronto, graduating with high honours, and can now call myself an esteemed alum.

It has been a long (actually pretty short, I am going to miss being a student) and arduous journey.  I have met many intelligent people, had the opportunity to learn from skilled peers and professors and ultimately, I feel more prepared and ready to make a difference in the world.

Reflecting on the 4 + PEY (16 months) years at the university, everything went pretty much how I had planned, which is surprising.  Many people I knew had changed majors or specializations once or twice throughout their university career, but I stayed true to what I decided on in high school.  I grew up in a very technology-based household, having been exposed to games, programming and the black magic box that is a computer, since I was probably 5 years old.  I have always enjoyed tinkering, playing and messing around with different devices and moving parts to see what I could make them do.  Unfortunately such a hobby is very expensive when things start to break, and as a child I had to ration my $5 allowance sparingly.  Once I grew up and learned about programming, I was able to create, break and fix things that did not take physical form.  With the expense issue out of the equation, I knew this was the field for me.

Fast-forward 10 odd years, here I am talking like I’m already an old man.  What am I doing?  I should be enjoying my youth before it is too late!

Ah well, I enjoy what I do and I will continue to create, innovate and learn as much as I can.  Whether that be in my current workplace, a future workplace, or back in the classroom.  I look forward to what the future brings.


Science and Engineering Emmy 2015

Wow!  The software suite that I spent my 16 month internship working on has won a prestigious award!

“CAST Software received their second Technology & Engineering Emmy® Award for wysiwyg in the Pre-Production Visualization System category of the 2015 Technology and Engineering Achievement Awards” –

The particular revision of the software, WYSIWYG R35, was the application in which my main project as an intern, Fixture Attribute Layout Templates, debuted.  At the time we only had roughly 4 or 5 developers actively working on it.  You may have noticed that it says that CAST won its second Emmy.  To clarify, WYSIWYG won its first award in 2001, which was 14 years ago.  For a software suite to resurface and claim the prize after such a long period of time is symbolic of something great – something great about our work.  The important thing now is to not let this get to our heads – we must focus on continuing to provide the quality software that has brought many smiles to users everywhere.