Not bad right? Gonna set some time aside to run through the Learn More section.
I've been primarily coding in Java and Kotlin, and since I just finished my first term of Udacity: Android Developer, I wanted to give Flutter a shot before I start my second term. The video above is an iOS Simulator (left) and Android Emulator (right) running the Flutter app I built with DART (simple tutorial app on the Flutter site). The set up was fairly quick and easy to go through - though that might be because I already had Android Studio and Xcode on my machine.
Not bad right? Gonna set some time aside to run through the Learn More section.
100 days of code challenge
Today is my official 100 Days of Code!
This was a task from my Udacity: Android Basics Nanodegree program to encourage students to actively find at least 30 minutes in the day to code. This would help keep the content you learn active in your mind and help you inch closer to your project everyday.
What I'm working on now
I'm currently enrolled in the next android class, Udacity: Android Developer Nanodegree with the current lesson on Intents. I'm quite familiar with intents already based on previous android courses I've taken, but it'll be a good review before I move on to my next project.
The short answer is: yes. Not everyday was easy. Much of my time was spent reviewing lectures, scanning through documentation and filtering through Stack Overflow - sometimes just to find out that clearing my cache and restarting the IDE was the solution. When I bring this up to my coworkers and developer friends they all tend to respond in the same tone of grief, "Yeah... that's going to happen a lot". It's usually followed by words of encouragement that I'm not expected to know everything off the top of my head and that it's just too much information to memorize. However, being familiar with the code/structure/logic and how to find the answer is just as important.
As a side note, I do want to say my face looks more like this after 100 days of code - interrogating my code to find out why my app crashed.
Quite a while since my last post. But here a couple things to mention...
I completed the Udemy course on Kotlin for Android.
I completed the Udacity: Android Basics Nanodegree - Java based.
Over the past few years I've taken classes from Coursera, Udemy, Udacity, LinkedIn Learnings, and other online sources, but I have to say hands down, Udacity has been the best platform for learning for a few reasons:
1. The use of Slack already sets the precedence on how to use a highly used communication tool used throughout the tech industry. There are also Mentors who were previous students that have graduated and multiple official Udacity members that can assist on assignments or make announcements about live webinar sessions with recruiters or other engineers.
2. The online forums on Udacity are widely used and as a part of class work assignment. This opens communication to others outside of your program as well.
3. Multiple code reviewers; though this can be intimidating and may have produce different results each time your work is submitted, it is just like any other professional code review process. You will get personal suggestions and feedback from these code reviewers that are beneficial for technical growth and confidence.
4. It is co-created by companies in the industry - my course was co-created by Google. I believe this is why the course content is approached differently. Coursera is often taught by professors from various universities so the class itself is presented with a very academic approach. Udemy is often taught by professionals in the industry who have the passion and drive to teach others - the course is guided by this particular individual which is shaped only to this individuals view point of the field and industry. Udacity is guided by the co-creator company and how they use their tech stack. The content is built by a team and not just by an individual in the field, and course work applies to companies want their next candidate to already know.
At this moment, I am waiting for the new Android Developer Nanodegree program to start. Until then, I think I'm going to stick around the current free courses on git and flutter on Udacity.
IOS TESTING TOOL: LIBIMOBILEDEVICE
EDIT: updated instruction for "idevicepair"
What is Libimobile? It's a library to communicate with services of Apple iOS devices using native protocols. I find this tool especially helpful in QA to help hunt for bugs and allows me to pull crashlogs and device info quickly. If you have used ADB logcat for tailing Android logs then this will look very familiar. Below are my installation instructions on how to install and run on Mac.
All source and credits are here: https://github.com/libimobiledevice/libimobiledevice
1. Launch the terminal and enter the following commands to install:
2. Install Homebrew to help you install the necessary tools and libraries:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- You should start seeing the 🍺 during the installation
3. Install ideviceinstaller to interact with iOS devices like install, uninstall, archive, restore, etc.
brew install ideviceinstaller
4. Install these tools if you do not have them already
brew install automake
brew install libtool
5. Install libimobiledevice. This is the main tool we will be using for testing iOS.
brew install libimobiledevice --HEAD
- If you get an error such as "Error: You must `brew link libusb` before libimobiledevice can be installed" Please run:
brew link --overwrite libsub
- Then re-enter brew install libimobiledevice --HEAD
Verify Tool is Working
1. Continue working in the terminal or launch a new session
2. Plug your iOS device to your computer
3. Enter the following in the terminal:
- Your device will request confirmation to Trust your Mac. - Select Trust
- Run idevicepair pair again
- You should see something like this:
blee@blee-m01:~$ idevicepair pair SUCCESS: Paired with device
4. Check that you can pull your device information
- You should see something like below:
1. The main command you will use is idevicesyslog which will print out the device logs. You can also grep for keywords like "yourAppName".
idevicesyslog | grep "yourAppName"
2. To stop press CTRL+C
3. List of commands can be found here: https://github.com/libimobiledevice/libimobiledevice/tree/master/tools
- List of commands you may use more frequently. See Help for the necessary flags
Let me know what you think about this tool or if you have any hiccups on the installation process. Thanks!
When performing blackbox testing on mobile devices, it can be difficult describing the issues you come across to developers. This is where screenshots and video recordings can help convey that message more clearly. Sometimes a bug happens so quickly a screenshot can be difficult to time in order to capture the error. There are other services and apps out there that help you accomplish this, but below are instructions on how you can do this with existing tools you may already have - so let's review how we can do video recordings on iOS and Android (via Mac)!
Anddddd done! You have now recorded the actions made on your iOS device! A quick note - this will work for devices on iOS 8 or higher.
This will hopefully save you a significant amount of time on how you used to make recordings and help you convey your bugs better to developers! Let me know what you think!
Specializing in java
Just started my second week of of my 5 courses in Java specialization through Coursera. This is an intermediate level course which helps those that have some basic understanding of Java advance further into programming and data structures,
So why Java? From my previous posts, I was at the cross roads between becoming a more technical QA Engineer or switching gears to becoming a Junior Mobile Developer (being on the side of Android). With Java, I can continue going towards my path of a software developer or using Java as the language to use for an automation framework. However, I was introduced to a role I haven't heard of before - Software Engineer in Test. This brings a strong software development knowledge into the QA role that goes beyond unit testing. Well, what does that even mean - beyond unit testing? This includes automation, integration, scalability, performance and reliability as well as writing tools that would help both the software developer and QA. I was told by a friend, don't throw away your QA knowledge and experience to become a developer, learn how to use development as a way to further invest in your QA career and skills. That definitely wasn't verbatim, but that was message - and he was right.
Quality Assurance can be viewed differently among different organizations and it seems to be in par with how a company prides itself in upholding a particular set of standards. Not everyone takes quality as a pillar of support to uphold a company brand - similar in how some companies view security or customer support. Understanding how quality translates to a customer transcends the barrier of the value or price of a product. Take Apple for example, despite being a generally more expensive as well as being mentally conceived as more expensive, users are happier putting in a bit more money for the quality of a solid product in both design, hardware and software.. These are returning customers and quality is one of the major factors of such.
Though equipped with python and some Java from the books I've studied from and the online classes I have taken, the class itself was initially intimidating, The first thing the class does is ask the student to take a short quiz to gauge the level of understanding you have of Java - and after taking it, I was a lot less cautious about moving forward and instead, a lot more excited..
I believe for any QA that wants to go beyond the black box, picking up a language is necessary. I personally believe that all QA needs to start with python if they do not have any programming experience - check out Zed Shaw's Learn Python the Hard Way. I think paying the $40 to get videos alongside with the pdf is worth it, but if you don't want to shell out money that costs less than a video game, he does offer the pdf for free! After an introduction to Python, I highly recommend researching the language that makes sense for your current profession or your potential future profession. For me, it';s Java.
Feel free to ask me any questions you might have about getting started in learning a programming language or your thoughts on QA in the software development industry!
So I've taken a hiatus from my Java and Android studies, but I think my schedule has calmed down enough to allow me to get back on track. I'm currently using Java: A Beginner's Guide by Hebert Schildt - I find it pretty easy to follow and structurally well organized for me. However, jumping right into this book would have left me flat on the face if I had not picked up another programming language prior to this.
Python must be the easiest introduction to programming. as it is very human readable and quickly executable. I started off with Learn Python the Hardway by Zed Shaw. His teaching style is different from the approach of traditional textbooks in which he does a short example and explanation of the chapter and has you run through the exercises and have you investigate why certain results appear. This is the hard way - through self investigation rather than being fed information directly. I highly recommend anyone interested in programming to start with Python.
So why Java? Java is the language used to build Android applications as well as many other devices out in the world. I started to work on my own app, but I still have a long way to go to make more complex and powerful apps. Now that I've taken up plenty of time stalling on studying by writing this post, off to make some coffee to pick up where I left off.
Ramen - Waraku
same path, different road
Decided to edit this entire post because it was more of rant.
Recently, I had made a decision to change companies. To start off, LinkedIn has been a game changer for me. I no longer have to submit my resume through numerous websites for an interview as LinkedIn has evolved into a breeding ground for recruiters. With that said, I was not on the look out for a change.
What's in a job? If you're lucky enough, you will find a company that has a culture and mission that matches your personality and ambitions. I was extremely lucky to work for a popular tech company doing software quality assurance (mobile and web apps) and even luckier that this company and their management aligned with who I am and what I want to do..
I've had jobs that restricted internet browsing, used time punch cards that were older than me by at least 20 years, and false promises of full 8 hours worth of work at sites that took 2 hours to drive to. Everyone has their own horror stories of that one job. However, despite this, I don't believe people ever left that one job because it lacked free snacks, free internet browsing, or anything of that sort - it has always been due to poor management. That made it easy to look for another job and even easier to leave the old one. This was not the case anymore.
So why change when the current company offers everything you are asking for? Hell, I even live an easy 10 minute walking distance from my work! The new opportunity awaiting me offered nearly identical benefits other than the fact my commute to work would become 45 minutes.
Though I had a competitive salary, stock, and a team to lead, my opportunities to learn more were a bit stumped at work. I had picked up books and attended online classes like coursera, but it wasn't enough. I can only get so far on my own and I know that I am the kind of person that needs a direct mentor in mobile development. There wasn't a growth program that really suited my needs at work and I don't blame the company for that - they are on a huge growth streak and developers didn't have the bandwidth to be mentors. Even though I was growing with the company and became a lead, I had my own growth and my own timeline to consider.
The new company I am at now offered me a fast track in reaching my personal goals. To be clear, it's not that my previous company didn't want to help their employees with their goals, it was just a matter of implementing a meaningful program that would benefit everyone at the company which means it will take time. This new company already has a program in place and others have already gone through it. Even so, it was a tough decision, but I ultimately had to be a bit more selfish and look out for how well and quickly I can reach my goals.
Though it was difficult to leave such a great company and an amazing team of people, I am excited about my new opportunity. My goal hasn't changed, but the route I'm taking definitely has and hopefully, it will be the shortcut I'm looking for. .
Moved to Weebly
I wanted to do a new make over for the site. A buddy of mine works at Weebly and suggested that I use their service to rebuild my site. So far, the interface is pretty simple and easy to use - better experience than using what GoDaddy had provided. Having to change the A-Records in my domain to point here was as simple as a google search.
Let me know what you think of it so far!
Hey there - my name is Ben and these are the snapshots of my memory dump.