APIs & Agile

API Lite, Please

The first two readings this week helped solidify my understanding of what an API does: It’s the mechanism by which a client communicates with a server (like a waiter taking an order from a customer, retrieving it from the kitchen, and delivering it back to the customer).

The second two readings, on REST APIs, completely blew my mind.

In addition to taking and delivering data, APIs can also post them. Moreover, you can make API requests in a browser to view JSON data specific to your query, including specific parameters that you control. Then, you can take the data you mine from an API request on one website, and use it to access or reference additional data on another website! This waiter is multi-talented!

It does bring up a question for me about security, however. I know that access tokens must be passed to authenticate that the person accessing the data is allowed to access it, but do systems become vulnerable for malicious data scraping when their APIs are available on something like Apigee? This goes back to the recurring theme of developer tools being transparent and accessible—from web inspectors to API management software—while also being acutely aware of the risks of the internet.

Back to Agile Framework

Since Week 8’s discussion of agile frameworks, I’ve been paying more attention to how teams in my workplace function. I remembered that one of my colleagues, who works as a project manager for the marketing and technology teams, had regular “scrum” meetings on her calendar. I asked if those teams operated under an agile structure, and she (impressed by my question) responded that yes, our Chief Information Officer prefers to operate that way.

She explained they work within a framework that’s most similar to scrum, with sprints (a blend of technology and design work) lasting 10-15 days each. It’s interesting to think about this technology culture being nested within the framework of higher education, which operates on a much more drawn out and fluid timeline.

My colleague noted that, while projects aren’t always strictly within the set scrum framework, it’s been helpful for the members of the team to operate using a common language and set of expectations, and the framework has allowed them to complete a lot of high level projects with success.

She also mentioned that she uses the tool MS Project, which allows her to help the team visualize the consequences of contingencies and dependent tasks not being completed.

Final-Pitch Updated 3

What:

I am starting a new job where I will be working as a consultant. I will be working a set number of days per year, which leaves me with a free day or two a week. I want to create a personal business site where I promote my work, portfolio, resume, ideas about digital communications, etc. I would use the website to promote my business and book clients.

Who:

The audience for this site would be small businesses who are looking for someone to boost their social media and digital platforms. I would like to target the food and restaurant industry but could expand to more industries.

Why:

I want to promote my brand and book clients  

How I’ll achieve my goals:

I would put as much material on my site as possible. I would be consistent with my brand (colors and design I use throughout)

Theme:

Personal Portfolio

Customization: 

  • I will add plugins for my social media accounts: I would create a list of social media images and link them to the platforms.   (YES)
    • what? social media icons
    • why? to connect my website page to the rest of my platforms
    • how? code the various images and link to my own social media
  • I will add a plugin for a favorite social media platform to use form 
    • what? basic form to submit your favorite social media platform
    • why? to provide more information about the client
    • how? i will code the plugin for that form
  • Create a child theme that allows hovering over menu options at the top: about, services, etc
    • what? menu hovering
    • why? to make the menus organized
    • how? create a child theme for menus and the hover option
  • Add a plugin for services  (YES)
    • what? services
    • why? to add services
    • how? code a plugin
  • Add a child theme for font and size of text (YES) 
    • what? child theme
    • why? organization
    • how? build a child theme for the function
  • Customize the fonts and theme colors

 

 

Reflection of midterm and agile

For this past week’s overview, I put most of my focus working on my midterm with a web developer. Overall, the experience was interesting. I was probably a bit too shy and awkward initially since I was the one leading the conversation and was not really sure where to start the conversation. It was reassuring to go over the rest of the class’s midterms with their own developers as well. It ended up going well and, despite my initial kind of confusion, I felt reassured afterward that it was not necessarily just me feeling lost. It is common for everyone, but sometimes I just think that my natural thought process does not function in a natural web developer process, so I have to check myself before I start a task and plan things out more efficiently.

As for last week’s discussion with Laura while she was substituting, we definitely covered the agile manifesto and the sort of chain of command that takes place in different work environments that web developers are a part of. While some are more beneficial than others depending on the workload, number of participants in a group and so forth, it was interesting to see such how there are many distinct structures in the work environment taking place.

Circling back to my web developer profile for the midterm, I was not surprised at all to learn that Emmett Jacobs had come from a deep-seeded interest in computers and technology. This kind of lead me to believe that yeah, this is something that I would be too late to take an interest in and such. However, after we went over everyone else’s midterms in class I was surprised to learn that a couple our our classmates had talked to people who still didn’t consider themselves “real” web developers due to their late start.

A Thoughtful Approach to Better Design

This weekend I began working and deciding upon the content I want to include in the final project, i.e. “It’s Susan’s Thing.” When building a website, I will have to keep in mind that the content (such as images, text and embedded materials) tells a story I want to present and the concepts I would like to share with my audience.

While tackling a project that I was never faced with before, in some way it becomes an educational experience. Therefore, in order to successfully complete this assignment, I will need to do research and educate myself so that I know what the best tools are and what languages might I have to revisit in order to create an effective website.

By learning the basics of web development in this course, I was easily tempted by the ease of finding ready-made pieces of code available online. However, by doing this, I would not be learning, but rather just manipulating code that essentially could be called cheating myself. This would also reduce the amount of effort I otherwise would put into gaining new knowledge. I don’t want to do that. I want to build a website based on my own inspirations and preferences. Every part of the design would be included there because I thought about it, and hopefully will meet my own level of expectations. Also, I won’t allow myself to be afraid to think outside the box and experiment with different techniques – achieving specific customizations sometimes requires courage 🙂

To conclude, I believe that building one’s own website from the very first line of code, forces to seek knowledge to achieve a given vision. You push yourself to research the required functions, which keeps you going forward, especially when searching for new ways and techniques to write and improve the code.

Midterm with Emmett Jacobs

For my midterm project I had a discussion with Emmett Jacobs, who works at DoorDash in San Francisco, CA. I originally found him because my older brother works at the same company with him. I started off by asking if he had always had an interest in web development and whether or not there was a triggering moment in his life that led him onto this path.

Telling me that he had always been drawn to technology and computers since a child, he was not surprised that he pursued it and it came to be his career. Specifically, he recalled first learning how to modify websites in middle school and had hosted GeoCities websites. From my own memory, I briefly recalled hearing that name but just as a blip of a memory and nothing I had sealed with first-hand. So this initially sparked Jacobs’ interest, that and his deep-seeded pastime of developing his own AIM icons when that used to be a real cool thing to express individualism. It was then in college that he had learned more legitimate applications of that kind of technology and processes. So Jacobs has experienced self-actualization about his interest in computers and technology in his early teenage years, but really attributes more serious learning about web development to his time in college. He says that college and his first job right after graduating really helped him develop skills and the ability to learn more complex and complicated tasks.

We then proceeded to discuss what aspects of web development were the most difficult at first. He immediately recalled a few things that stuck out in his memory that were not the easiest to comprehend at first. Jacobs said that the most difficult for himself was trying to fully understand how different aspects of web development flow and eventually and hopefully link together. As I asked him to elaborate, he mentioned specifically how the back-end functions and things such as jQuery preface the HTML. To break it down even simpler for someone like myself, he mentioned this is regarding how the data flows from the back end to the front end. It is hard to believe that someone who does this as their job everyday and makes it look and sound so easy that he would have ever had difficulty with web development.

Additionally, Jacobs spoke about some instances in which he struggled or more directly, would get frustrated with CSS. He mentioned that CSS and placing an image perfectly on a webpage can be annoying — how just about placing anything on a website with visual perfection can be frustrating at times. I found this interesting because out of all the coding languishes we have gone over this semester, I have personally found CSS to make the most sense, be the easiest and most interesting compared to the other languages, which have been a little short of killing me. Overall, Jacobs says that he finds the most enjoyment in back-end tasks more, especially things that deal with processing data. He says that the computations are more enjoyable, and that it’s naturally easier for him and makes the most natural sense out of all the work he does.

I asked if Jacobs had specifically had a project in mind when he was first starting out that was memorable. He told me about a project in college where he had to build a basic shopping cart experience. This involved things such as including how much items cost, how many items you had, the user experience with each click, how the cart processes commands and so forth. He told me that this was the first time data kind of clicked for him — learning about jQuery, CSS and other languages. He said this experience was when he learned the basics of everything involved in building a website. He mentioned that the debugging was frustrating at first because when data is showing you what you want, there are multiple things to consider and multiple places that things can go wrong.

Lastly, I asked if he had any advice and best practices for a student like myself first being exposed to web development. He really hammered in the concept that examples were crucial to learning web development without getting too discouraged. Jacobs mentioned that examples go a long way, and that is what he did and does in order to figure things out. I’m addition, he recommended that when dealing with projects, you need to break down a problem into very small steps. By doing so, you can learn each small step at a time and that way you’ll achieve more success and more understanding. He describes how he thinks about how to get data from the back end and how to break it down even further — what he would like to display, what CSS he wants to use, how he should format it and so forth.

[contact-form][contact-field label=”Name” type=”name” required=”true” /][contact-field label=”Email” type=”email” required=”true” /][contact-field label=”Website” type=”url” /][contact-field label=”Message” type=”textarea” /][/contact-form]

Profiles and commands

It was awesome diving into the command line again for this week’s assignment. It kinda puts the entirety of the computer’s capabilities into perspective, making it less ominous and strips away the “magic” aspect when it comes to performing actions like inquiries.

I think I’ll be a bit restrained when it comes to anything apart from creating directories through the command line, though. Considering the command line isn’t exactly idiot proof and I can accidentally delete my operating system, I’m trying to just stay with command practice on the tutorial rather than going to YouTube to see other possibilities.

I also liked reading other peoples’ profiles. From IBM developers to Facebook, it’s neat that the role is universal and the experts will always bring some value to literally any high-profile company. That can’t be said for most vocations, which are generally pigeonholed into one field.

For my developer profile, my staffer has written code for Facebook’s webpages. And while that may seem relatively mundane, it’s a lot more than for user accessibility and aesthetically pleasing purposes. With the social media behemoth’s overarching role in literally everything, from politics to sales to nonprofits, web development and design are more and more about ethics today than ever before. Cambridge Analytica, disinformation campaigns, etc. have put Facebook in the tough position of assigning its developers responsibilities that reach new limits. I love the relatively new function of “Related posts” automatically showing up under some posts from widely followed accounts, which are meant to serve as easily visible footnotes pointing to a credible source potentially countering the contents of the post without directly censuring it. That added tool is just one of the ways developers are sometimes a step ahead of news organizations when it comes to informing and educating the public. Very neat.

So Many Different Things Learned

We discussed in class why some of us had problems opening the file we created for homework last week. We needed to make sure that the PHP is opened in the server not in the browser. We also discussed the agile development process and the concept of waterfall. The concept lies in the idea that different teams work together at different stages and the work flows between the channels. However, there were many issues with that methodology. The agile manifesto came about to solve the problem occurring in the waterfall methodology. They created a  way of how software should be developed. The most efficient and effective method of sharing information and development of a team is face-to-face conversation. This goes against the new trend of tele-work and how agile does not work within that trend.

The double diamond concept of design was also discussed in class. Usually we look at the first problem then get solutions, but we should look at both diamonds and look at every angle before coming up with solutions. When we work on one thing, we delve deep into it and forget to look at the overall macro level of the project.

I finalized my developer profile. I enjoyed working on mine and getting to know a person in the web development field. I also learned that you can start and get yourself into this field whenever and it is never too late. It is also important to try something out before assuming you will not enjoy it or be good at it. In the case of my developer, he had no idea he would be interested in software development and after taking a random course, he realized that it is where his passion lies and what he wants to do in his life. I also got the chance to read other profiles and learn more about other developers. 

The tutorial about command line was descriptive. Programs are made up of layers which result in the final nice looking version. It is a very cool way of handling things and documents on your computer. You give your computer demands, which are passed on to the computer system to run. We can navigate through our computer the way we use Finder on Mac. We should always be careful of any commands we can give because we could mess up our computer system or wipe it out with one simple command. 

Command line

Using the command line is a very pure way to just…talk to your computer. It feels very much like a conversation. You type in “man” and the computer asks what you want to learn about. You make a mistake and the computer says the command wasn’t found. It’s an immediate feedback loop that’s very distinct from what we’re doing in Sublime Text. It’s a bit scary how direct and raw the possibilities are. After a brief bit of googling I found that if you type in sudo and just five extra characters, you can wipe your entire drive.

A point made in the “Your new friend: Command Line” struck me — original computers looked a lot like the command line window. I remember seeing the MS-DOS operating system on some of my parent’s old computers. That was definitely the last time I saw or used a computer that didn’t utilize a window and pointer-based UI.

I could see how, if you were so inclined to learn all the commands, using the command line would end up being a quicker and more efficient way to use a computer in some respects.

Let’s learn something new

As for the work for web development class, this week concentrated on finishing up the midterm. I decided to interview Grzegorz Trzmiel, currently working as a developer at IBM. Even though I had to turn my notes and the recording into a post, I believe the traditional format of an interview definitely had its perks. Certainly, a good interview is the foundation of quality reporting – a skill, especially needed in my field of work. Such conversation is the best way of understanding a complex idea and seeing it from someone else’s perspective.

The interview provided me with the opportunity to investigate the concept of programming in a more in-depth way, compared to what I learn in class every week. I was able to discover how an actual professional thinks and feels about the programming skills needed in a real world and why he holds certain opinions. What was also interesting was that I could explore the use, effectiveness, and usefulness of programming skills I’m currently developing. As it turned out, one of the disadvantages of conducting an interview is that it is very time-consuming. Unfortunately, it consists of many stages; such as research, setting up a time that works for both parties, an actual interview, transcribing and drawing the final conclusions.

In general, the interview wasn’t as scary as I thought it would be. I did my research, was prepared and at the end wrote a great post (while, of course, respecting the interviewee’s privacy while not mentioning some of the names of Grzegorz’s previous employers). If you’re interested in seeing how well I did on my midterm, I invite you to read my post from yesterday 😉

Developer Profile: Ryan Schneiderman

Ryan Schneiderman is the younger brother of a good friend of mine, Jason. They’re both developers — Jason works at Bloomberg and develops applications for the Bloomberg Terminal, a key piece of technology that traders, banks, and financial institutions worldwide use to get information on the price of a stock, for example, as fast as technologically possible. Though Jason doesn’t really use any of the technologies we’ve been exposed to in this class, he suggested Ryan would be a good choice.

Ryan graduated from Tufts University with a computer science degree last year and has been working as a freelance web developer since then. He recently finished a complete website for his father, a successful photographer in Vermont.

The first stage was architecting the overall project. He wanted to figure out what backend framework to use. Schneiderman eventually went with Django, which is a high-level Python web framework, mostly because he saw that a lot on job applications and assumed it was one of the more marketable backend architectures to learn. It turned out to be a really good framework to use for the website.

The first step after deciding to use it was to research a bunch of tutorials on how to use it, and then started to get simple “Hello World” pages working. He used Amazon Web Services to host the website. It was an early major hurdle, Schneiderman said, to know that he could host a Django application on AWS and then, from that point forward, it was just a matter of writing code.

The first thing he tried to do was just to display one of his dad’s images on a page with nothing else, just an image by itself on the front page. That in itself contacted all of the different parts of the application, from the database, to the view which queries the database and sending that information to the front end.

“I remember when I did that it was like the first  ‘eureka’ moment,” Schneiderman said.

A lot of the early process was troubleshooting. it was a lot of Stack Overflow, Googling, some YouTube videos. Every step of the way Schneiderman said he gained a little better understanding of what’s going on, then chunking away, getting a breakthrough, and hitting another obstacle.  Learning a new language or framework is a lot of small little victories that contribute to a greater understanding along the way.

“It was more a mental hurdle than anything else, just to stay the course and keep chipping away,” he said.

To design the prototype for what he wanted the site to look like, Schneiderman just used pen and paper just to figure out the aesthetic, the organization, what he wanted to have on each page.

As for giving his non-programmer father ability to use the site, Schneiderman said Django allows for a templated admin page that’s attached to the website. It’s basically an interface for the database, so you can upload images.

Django comes with a decent template structure to interface with the database from a user perspective. So that was actually one of the things that Schneiderman felt very fortunate to have chosen Django because otherwise he likely would have had to build an application that his dad could use to upload.

Most of the communication and collaboration between Schneiderman and his dad was on the functionality of the front end, which ended up being mostly HTML, CSS and JavaScript, including some React.

React is a JavaScript framework that allows for updated and state-based JavaScript. So for example, you can have constant rendering of different content that doesn’t require completely reloading the page.

On Schneiderman’s website there is a gallery that displays cascading images, and then when you click on the images, it enlarges it and then will take you to a separate page. And what you can do on the page is click on arrows that act as a slideshow and it gets you to different images. That function of moving through the images meant he had to reload the page every time.

But when he built the same slideshow on React, it was basically instantaneous. The tradeoff was that in order to do it, the page had to load more content up-front. So when the page is first loaded, all the images that you could possibly click on are already loaded, which takes a little longer.

This is as opposed to having one image on the page, then clicking through and sending a request to the backend to get a different image, so it was definitely worth it.

“If you’re planning on implementing anything dynamic on the front end, I would highly recommend looking into React,” Schneiderman said.

There was a lot of JavaScript, mostly interacting with dynamic content. For example, some images are vertical or horizontal, different sizes and proportions. When the page was loaded, Schneiderman wanted certain styling to be as a function of what the sizing of the image would be and of whether the image would be matted or framed.

With Django, there are certain tags where you can access content from the backend in the front end without having to do really complicated queries.

“It’s literally curly brace, percentage sign, and then whatever you named your image in the backend. Very simple,” he said.

Schneiderman recommended using YouTube videos to gain a high-level understanding of a new framework, and StackOverflow to get more granular. Google is also useful, but it’s key to use precise vernacular.

If he was to do the same project again, he likely would have used Bootstrap, which is a powerful HTML, CSS and JavaScript library Schneiderman wanted to use to simplify his CSS. Schneiderman styled the site by hand, and regrets not knowing about Bootstrap before.

Schneiderman, who coaches a middle school basketball team on the side, is now developing an app that helps basketball coaches and players facilitate the team building process. The app is within a website that can diagram and animate the plays. This way, players are able to study and learn plays more effectively and more academically, because the only time players are learning a play is in practice.