SeptaMap

The app that I built this week as part of my learning efforts is Septa Map. It takes the route number of any SEPTA route, and then displays the current location of all vehicles on that route using a Google map, updating every 30 seconds. It also displays any alerts and advisories for that route. It can be found at https://agile-oasis-33645.herokuapp.com/.

One of the new things I got to work with this time around was Gulp. Since I’m using node to serve my Angular apps from the built directory, I wrote a Gulp script to watch my app directory and rebuild it on all file changes, so I didn’t have to keep doing it manually every time. This was a fairly simple Gulp script, but it made a huge difference to my productivity while I was working on this project, and it really helped me see the benefit that automation tools like Gulp can provide. DevOps is an area that I really want to learn and improve in right now, so that I can bring more of those productivity benefits to my personal workflows, and I think starting to learn Gulp is a good first step.

What I’m Looking For in a Job

I just spent a little bit of time making the autosuggest dropdown in Demo Tape work with the keyboard. Now you can use the arrow keys to navigate it, and the enter key to select an artist. It was fun.

As mentioned in my blog post about leaving grad school, one of the things I took away from the experience is that I enjoy creating things and solving problems through programming. I like the win of figuring out a way to make something work. So I guess I’m looking for a job where I can have that on a regular basis. A development job, obviously. And right now my learning efforts are focused on the front-end, with Angular and such, so I should probably focus my job search in that direction too. (Besides, while my last job was technically as a full-stack developer, I don’t think my ColdFusion experience is going to open too many doors in today’s job market.)

Most of all, though, one of the main things I’ve realized since beginning my efforts at self-education is just how much I have to learn. Web technology is incredibly fast-moving, and just in the year and a half that I was in grad school, things changed tremendously in terms of what kinds of skills were de rigueur. I pretty much had to pick an area and start learning, so I chose the MEAN stack, but there’s so much more out there that I still don’t know. So most of all, I want a job where I can continue to learn and tackle some of those other areas, whether it be another front-end framework such as React, a different back-end language, or a tool that I haven’t had a chance to work with yet such as Gulp or SASS. I’m looking for a place where I can contribute while growing my own skills. That seems like a fair exchange to me.

DemoTape

The next app that I’ve built is called DemoTape. I got the idea from a coding assignment that a local consulting company uses for hiring. (I found out about it because my husband now works there. 🙂 ).

It can be found at https://pacific-depths-41060.herokuapp.com/. Just enter an artist’s name, select one of the provided results, and it will allow you to listen to the artist’s tracks, view and play albums, view (and view the Demo Tape for) related artists, view related events, and read a bio for that artist. It draws upon public APIs from Spotify, Ticketmaster, and Last.fm.

I found that using node, it was really easy to set up services to call upon and return json from the APIs. I think that this is an area where node really shines.

In terms of Angular, I was able to get more experience using custom events and also pipes. I really like how easy it is to use custom events in Angular. I think the Input/Output system, and just componentization in general, makes it incredibly easy and natural to keep things loosely coupled from the start.

Additionally, as I get more experience working with Angular, I’m able to really see how it speeds up front-end development. I was able to bang up this front-end from start to finish in a couple of days, and while I might have been able to do the same in the old days of using plain javascript and jQuery, it would have taken significantly more work.

I need more ideas for apps to build so that I can continue learning about the MEAN stack. (To be really accurate, this one would be the EAN stack, since it doesn’t use MongoDB for anything.) Well, what I really need is a job, so I can get paid while I learn. But I’m working on that part. In the meantime, I plan to keep learning and building apps. I’m currently trying to think of what I should do next.

Angular Tic-Tac-Toe

As a bit of Friday fun, I wrote a simple tic-tac-toe game using Angular. It can be found at https://still-ridge-62999.herokuapp.com/.

This time I practiced test-driven development while writing this small app. My first impressions of the practice are that I understand why people advocate for it; it helped me think through the requirements for each method that I wrote in a disciplined sort of way, and made sure that I kept my methods small, modular, and DRY. I also found that it made me more aware of edge cases and possible error states in my code. Finally, it was satisfying to watch each test go from failing to passing as I filled in the body of each method.

Of course, the real value of TDD will come through on much larger projects than this simple, one-component tic-tac-toe game. But everyone has to start somewhere, and I’m glad that I took this opportunity to start adopting the practice.

MEAN ToDo App

Naturally, my first app that I built using the MEAN stack was a todo list app.

This app can be accessed at https://nameless-harbor-94638.herokuapp.com/.

The following are some of the features of the app:

  • Adding todo list items to specific days
  • Displaying 5 days — by default, one in the past, and three in the future of the current day
  • Highlighting the current day
  • Dragging and dropping todo list items between days
  • Scrolling through days using the arrow buttons
  • Responsive design
  • Finished todo items move to the bottom
  • Edit todo items in place

Basically I tried to create the todo list app that I personally would want to use, and now that it is finished, I have begun using it to keep track of my learning and job search related tasks.

This was the first full-fledged application that I built using the MEAN stack, and I was pleased with how easy and quick it made development. In particular, the speed and efficiency of doing things with Angular is leaps and bounds ahead of the old way that I am used to doing things using jQuery. Writing http services with node and express is simple and intuitive, and adding features like drag and drop and the datepicker to Angular was simple, due to the robust ecosystem of modules that is available.

Another thing that I learned as part of this project was testing using karma and jasmine. I’m ashamed to admit that I have never done unit testing for javascript before, which is something that I knew I should remedy. I followed along with the Angular testing guide and practiced by writing tests for all of the components and services in the Hero Editor example app, and then wrote tests for the components and service in my todo list app. I found that once you get started, writing angular tests with karma and jasmine is fairly simple, and it was satisfying to be able to run the test suite and have that reassurance whenever I made changes. For the next app that I build, I am going to try doing it in TDD style, and see what that is like.

I am still working on coming up with ideas for my next app. I want to do something that involves calling upon 3rd-party APIs and incorporating the results, this time.

Education

Sometimes you don’t really know what you like until you stop doing it for awhile.

In 2015, I was a full-stack developer writing ColdFusion and jQuery, working remotely for a small company headquartered in Austin, Texas. I felt ready for a change, hungry for a new challenge. Rather than look for another web developer job, I decided to go for a much bigger change. I thought that I wanted to apply my programming skills to the field of science, by going to grad school for biomedical engineering.

I applied to Drexel University, and was accepted. During 2016 and the first half of 2017, I lived the life of a grad student. However, during this time, I gradually became disillusioned with my grand plan. I came to realize that the work of a scientist was not as glamorous as my (admittedly grandiose) dreams of making life-saving discoveries had led me to imagine. Due to the nature of the courses, I also wasn’t able to use my programming skills as much as I had hoped, although I did get some experience with Python and Matlab. Add to this the extremely high cost of the program and the length of time I would have to be in school before I could achieve my goal, and I began to see that it wasn’t worth it for me. I began to realize that I didn’t want what I had thought that I wanted.

I decided to leave grad school and look for a job as a web developer once more. I feel that I’ve come to appreciate programming more due to my time away from it. I enjoy the win of figuring something out and making it work, of running into an error message and searching the web for answers until I find exactly the thing that I need.

Since leaving school a couple of weeks ago, I have been working to get up to speed on technologies like the newest features of ECMAScript 2015, Angular 2/4, testing with karma and jasmine, node.js with express, and deploying to Heroku. I’ve decided to focus my learning on the MEAN stack for now, which consists of MongoDB, Express, Angular, and Node. In my next blog post, I will write about the first MEAN app that I have built, and what I learned from the experience.