Friday, June 19, 2020

cst 499 week 8

This week, we finished writing the paper in order to do the best job possible even if it was a little bit late. Now that everything is done, there's a few things I would like to finish in the next few months.


  • Portfolio rewritten in Github pages or other website hosting service without a huge WIX banner at the top
  • Apply to some local companies
  • Finish up/start over interview prep
  • Start reading all the books I didn 't have any time for in the school year
    • The Man Who Solved the Market
    • About Face: The Essentials of Interaction Design
    • Emotional Intelligence 2.0
    • Influence: The Psychology of Persuasion
Thanks to the CSUMB CS Online program I was able to meet a ton of cool people, learn interesting technologies and problems associated with it, and most importantly grow as an individual.

Tuesday, June 16, 2020

CST 499 Week 7

This week, we worked on the Capstone video. I spent a majority of the time working on text to speech using Google Cloud. I tried Java since we used it for the past 2 classes, but I couldn't get the dependencies to work and it would not run. I then followed a tutorial using C# in the in browser terminal and code editor. It was clunky and strange but it was able to run the sample. I could not figure out how to enter text in the terminal then run the code.

Now that I understood that it did work on my machine in some way, I decided to try Python. It has been awhile since I used Python but it's simple enough and easy to install the dependencies since its only one pip install line. I downloaded the entire text to speech library from the Google Cloud github since the sample code was helpful but not as in depth as I wanted it to be. Using the examples, I was able to write my own functions for it to do what I wanted: allow me to input text, not delimit it based on newlines, translate it to ssml, and modify the voice and pitch used. I like Python's ability to be simple and easy to write, but it reminded me of why I dislike Python; writing for loops with iterators is awkward. In Java it's easy, in Python its different in a bad way.

This Summer, I hope to finish off the CTI technical interview questions I saved from last Summer. The wild thing about this all is the sister school, El Camino (along with CSU Dominguez Hills) Community College, is from my hometown in south LA, where my sister and I both took classes. My High School, Junipero Serra High, is down the street from there and this CTI program combined with the Warrior-Toro CS cohort pathway program will have a huge impact on the largely underrepresented minority students who go to El Camino from Serra. I also read in the HS newsletter that they even started a coding club. It's all very exciting for my former high school and the great opportunities those kids will have.

Tuesday, June 9, 2020

CST499 Week 6

This week, we took the ETS test and worked on the video for the Capstone Festival this weekend.

We worked on writing a script last week, a Google Slides this week, and incorporated the script into the slides. There was a lot of information to cover but we will hopefully get it all done in max 7 minutes as the guidelines state. It seems like the demo video included an app as well as a website so theirs was an entire 9 minutes which we aren't given. I think it would be a better experience if we have a short video for the capstone and a longer one for our portfolios so we can explain as much as we want for at least our own personal records.

The ETS test score was lower than I expected, but it was a difficult test. I knew how to do a few but guessed on the majority of them. I don't feel like the material covered had that much to do with my career going forward. On Glassdoor, interview questions are posted and they usually aren't as extensive. If anything, focusing more on the Technical Interview or my Portfolio would have been a better use of my time.

Tuesday, June 2, 2020

CST 499 Week 5

This week we continued working on our project. Initially, I was working entirely in my own Github branch. It was many commits behind the master branch. I thought I could merge them all later, but that creates a lot of problems. This week, we worked more with the Github Issues project management feature where we assign ourselves tasks and then use pull requests to merge in to the master branch after they are reviewed. This system works for me and makes a lot of sense for everyone involved.

I also worked this week on learning how to branch, reset head, add, commit, checkout, and push to master with only the command line. Before, I only used the Github for Desktop app which I have had decent luck with. Then I had problems with merge conflicts and instances where I needed to reset the head of the branch but didn't have any buttons to do that. This prevented me from pulling from the master and using the command line makes it a lot easier. I still use the Github for Desktop app to check if changes have been made in a easy to see way.

Tuesday, May 26, 2020

CST499 Capstone Week 4

This, week we worked on our capstone project. I didn't get as much done as I would have liked, but I learned about a few interesting topics.

My goal was to add a license in a textfile to a window that could be closed by clicking off of it. I tried a few different approaches like linking a text tile to a Text object, then attaching that to a window or using a scanner to read in every line. In the end, those didn't work, and I created a very long String, called that class and function and printed it out to the window. There are some inconsistencies, but its functional.

I later created a mouse event to close the open window when it was clicked on.  As a result, it meets some of the requirements we initially planned, but not all. 

Another problem I had was that the window was too large initially, so I used several functions to get the window dimensions then create a viewing window of that size. This will most likely work on other's computers as well.

Next week, I hope to get a lot more done and ask for help when I need it.

Tuesday, May 19, 2020

cst 499 Capstone Week 3

This week, I focused on FXML and Menu bars for JavaFX. FXML is an XML based language that lets the user build a GUI without application logic. First, you make the main class and define the stage and scene. Than you change the import statements in the FXML file to include what you intend to work with. The elements the FXML file deals with can also be done in a .java file. FXML files are a little bit cleaner and it is easier to see what elements are nested. JavaFX can also use CSS to add style. In the JavaFX specific CSS, not every CSS statement works without issue. There are some limitations to its CSS abilities. When I was using Eclipse, with a few JavaFX plugins, there was still no JavaFX CSS specific help offered with code completion. Overall, JavaFX is a great way to make GUIs and I would definitely use it in the future.

Tuesday, May 12, 2020

cst499 capstone week 2

This week, our group discussed the effective meetings reading from last week. It seemed like we already used a few ideas in the article through our CS learning. A number of meetings could have been done over email and didn't need to be discussed. Meetings are nice to have in general, just so everyone can get their input in all at once. We used to keep minutes but every big decision was later posted to the Hangouts chat to remind everyone later. It was concluded that this article was not software development specific because as we have read about, failure in software will happen. Deadlines can be missed and features could be implemented incorrectly, it is not unacceptable for this to occur. Features that take longer than expected is built into Agile's point design. I haven't worked in a professional software development setting, so I will have to see for myself if the tips in the article work. 

Tuesday, May 5, 2020

cst 499 capstone

This is a summary of how to run business meetings that produce results. Before every meeting, plan the meeting, ensure the necessity of the meeting, ensure participation, and distribute pre-work. Before a meeting is planned, plan a pre-meeting with others who will help you plan for the meeting, then decide if a meeting is necessary. After you decide who needs to be at the meeting, postpone the meeting if essential participants are unable to attend. 48 hours before the meeting, send the reading material to every participant so they are ready to meet. 

During the meeting, facilitate the meeting, involve each person in doable actions, and create a follow up plan. The meeting leader should keep the discussion on track and ensure the meeting meets the meeting goals. The meeting leader should involve attendees who aren’t participating because sometimes people take time to think through their answers or will only respond if there’s a consensus in the room. A follow up plan with action items, name of person with action item ownership, due date, and definition of a complete action item should be made.

After the meeting, publish the meeting minutes, follow up, create accountability, and debrief meetings for improvement. The meeting leader, secretary, or note taker should publish the meeting minutes and plan within 24h. Then follow up with people between meetings. A culture of accountability should be established by making failure to keep commitments unacceptable. Lastly, the meeting leader should have participants discuss what was good and bad about the meeting process anonymously because you won’t get real answers otherwise.

Saturday, April 25, 2020

cst 438 software engineering


  • Microservices
    • Microservices are  used by companies to make their code more reusable by allowing engineers to combine ready made parts into a complete product. This is important because we may need to work on microservices and with microservices if we work at a very large company in the future. 
  • Agile development
    • We learned about agile development, which is a software development system used by small teams to transform user stories into product features. This is important because it is used in real life by product development teams we will be a part of in the future. 
  • Software testing
    • We learned about different types of testing like unit testing and end to end testing. This is important because we didn't do this in previous classes and it can be difficult to debug some languages. 
  • RabbitMQ
    • RabbitMQ is used to post and get messages from a server. It allows the user to see what information can be posted and gotten from a server. This helps users debug their code in other ways aside from the Java window or HTML errors. 
  • Model View Controller
    • MVC deals with app resources, the web browser view, and the web browser mapped to the code. This is a nice consistent way to organize apps rather than a monolithic app that can get confusing. 

Wednesday, April 22, 2020

cst438 software engineering

This week, we finished up the final project for the class. We met with the professor last week in order to review the project plan with the professor. Unfortunately we did not have enough time to discuss which stories would be the best for the project seeing as how we had 12 that were assigned. In the end, it did seem like we had, in general, to make a base project with basic functionality but all of the features did correspond to a story when finished.

I helped write some tests for the final project. We used the Mocksmvc class to do it. I had some trouble finding documentation or tutorials to help me with the specific issues that arose but was unable to find much. The way we used Mocksmvc seemed more intuitive than the way the tutorials used it however. In the future, I would like to learn more about software testing, it seems to be very important.

Tuesday, April 14, 2020

cst438 Software Engineering Week 6

This week, we worked on the second iteration of the Software Engineering final project. For the most part, we worked on setting up the base of the project so additional features could be added afterwards. In the Agile system, I am not sure where that would fit in the iteration. Would it be iteration 0, then the first iteration adds improvements or should the initial stories include the MVP? Either way we still have time to add more to the project. I am excited to work on the HTML and CSS parts of the project.  In the Internet Programming class, we used HTML/CSS with Javascript, this time we are using Java and Spring Boot, HTML and CSS.

We also worked on the capstone paper. We wrote about the ethical and legal considerations when making an application. These complications can get you into real world trouble unfortunately. This seems like a hard to navigate topic. No one wants to get into legal trouble trying to make some side cash. In my research, I tried to find trademarks and copyrights that our app violates. Luckily, I was not able to find any but we also didn't decide on a proper name for it. I doubt our team wants to take a properly spelled English word and purposely misspell it into something I can only describe as startup speak; eg Tumblr, Lyft, TikTok, ect. On the other hand, its a great way to avoid already existing trademarks.

Wednesday, April 8, 2020

cst438 software engineering w5

This week, we had our midterm. It was 20q multiple choice and 2 essay questions. We also had the first part of the capstone essay. We completed about 10 pages this week I think. Unfortunately we have material for the capstone class due at the same time as this class. I wish we continued the project from this class as our capstone because we would have 3 weeks done already by the time the class starts but that's not going to happen. I learned a lot about the software engineering process for the first essay and about microservices for the second essay. It seems like the microservices have their pros and cons. I wonder if I will use them in my future job.

I also took a look at the cst499 syllabus from Spring 2019. A student from a previous cohort mentioned it in their learning journal so it seems like the ETS CS test is still going to happen next semester along with something called the CLA+ exam. I tried to find a study guide but wasn't able to find anything comprehensive. A Reddit post mentioned reading old textbooks, notes, the CS GRE, and other resources have mentioned test questions from the GATE exam. I was there was a place to start, like a practice test so I can find my weakest areas.   My plan so far is to take a look at what information we know about the ETS CS test and go from there.

Wednesday, April 1, 2020

cst438 Software Engineering

what does SMART mean in the context of requirements?

User stories should be specific, measurable, achievable, relevant and timeboxed. Specific, user stories should not be vague. User stories should be measurable so they can be testable using numbers as criteria. They should also be achievable, so the user story should be finished in one implementation. User stories should have business value to one or more stakeholders using the 5 whys to find more stakeholders. Timeboxing means stopping work on a story when the time budget is up, then giving up or dividing the user story into smaller ones and then rescheduling those for the next iteration. One can also go to the customer to find the highest value story and doing that. 

Tuesday, March 24, 2020

cst438 software engineering w3


What does the acronym FIRST mean with regards to software testing?  In case you forgot, go back to chapter 8 in Saas.

FIRST stands for fast, independent, repeatable, self-checking, and timely. Good software tests should be quick and easy, not depend on other conditions, not depend on external factors, check itself, and created or updated when code is tested.

         In software testing, there are a few types of software tests like unit, integration/functional, performance, and behavior. According to https://www.vogella.com/tutorials/JUnit/article.html, unit tests test a small amount of code like a method or class. It’s dependence on other classes is removed by using mock objects. Integration tests are used to tests the whole system like when a user uses it. Performance tests make sure the tests are fast when used repeatedly. Behavior tests check if methods are called with the correct input using mocks and stubs.

Tuesday, March 17, 2020

cst438 software engineering


In your own words, what is TDD about? 
Test-Driven Development (TDD) is done in order to use tests to develop code. It results in code that is well tested and easier to read than other methods, so better. The tests used should be Fast, Independent, Repeatable, Self-checking, and Timely (FIRST). Learning how to use the testing suite should save more time in the long run and you should have all the testing done by the end. In it, we do the three steps of Red, Green, and Refactor. First, write and run a test to make sure it fails, then write the minimum code to pass the test, then refactor the code to make it less redundant while passing the tests, then repeat the 3 steps.
What is a MOCK and how does it help in unit testing?
A mock is used for testing. It has all of the information needed to run the test but isn’t the actual object you are testing. If it needs to be as complex as an object, use an object by using a factory or fixture. This helps isolate issues with testing functions but not the implementation of the object.



Tuesday, March 10, 2020

CST438 Software Engineering


what did you think Software Engineering was about before you started this course?  After the first week, in what way has your concept of Software Engineering changed?

I thought that software engineering was the process that results in software. I have a better impression of software after this week. I thought that it was interesting how cloud computing became such an important innovation in the past few years. The book mentioned how a popular online game was able to scale because of cloud computing. I thought that was interesting because it would be difficult to maintain servers in the house if someone worked from home. On the other hand, it could cost them a lot if the website became very popular but didn’t generate any money. I wonder how cheap cloud computing can become in the coming years.

I had a bad experience with Digital Ocean droplet servers. For a small project, I signed up and then I thought I turned them all off but I kept getting charged every month. I kept them because I thought I would work on it later but didn’t. I eventually had to delete everything to get rid of the charges for good.

Tuesday, December 10, 2019

cst 325 w7

This week, we learned about the challenges of rasterization based shadows, learned how to implement orthographic projection, projective texturing, and the shadow mapping algorithm.

There are 2 main approaches to rasterization based shadows: volume and image. In the volume based way, stencil shadows volumes are used to extrude polygons away from the light source and make those the shadow. In the image based approach, shadow mapping is used using pixels to utilize pixel depth from the light source. The image based approach is used currently. In the basic algorithm, the scene depth is rendered from the pov of the light  into a texture. The scene is rendered again from the eye and the pixel is calculated to be in or out of shadow using the depth texture. Then we see if the pixels world position is further from the light than the closest recorded distance for the pixel aka wesee if something is occluding the surface from the pov of the light. A problem created by this is aliasing and acne, where the shadows have blocky or patterned effects. This is solved using a bias offset so it calculates the depth to be slightly shorter.

Orthographic projection is used instead of perspective to match the direction of the light which is the same at all surface points.  The projection lines are parallel and perpendicular to the image plane, resulting in a view that is orthographic.

Tuesday, December 3, 2019

cst325 w6

This week, we learned about the basics of representing color. We also learned how scenes are illuminated as well as point, directional, and spot lighting. Finally, we studied Phong shading.

Color is a function of its wavelength represented by 3 colors and mixtures of those through addition or subtraction. Scenes are illuminated through direct and indirect lighting. When light interacts with a surface, it can scatter depending on the surface used.  Diffuse reflectors have rough surfaces so light scatters in many directions (not view dependent). In specular reflection, it is glossy so it mostly reflects in one direction (view dependent). In addition, there is ambient lighting where an object receives or reflects ambient light and gives no look of depth. The color of the pixel depends on emissive, ambient, diffuse, and specular light which depends on the light and material color in various combinations sometimes using the Lambert Law where the intensity of the reflected light is related to the orientation or where you are looking from.

Directional light doesn't depend on light source position or attenuate with distance. Point light depends on light source position and attenuates with distance. Spot light depends on light source position and attenuates with distance and buy angle from the center direction.

The basic shading models are Flat, Gouraud , and Phong. In flat shading, a single light is calculated per face which results in mach bands or a gradient effect. Dithering can be used to introduce noise to create more calculated faces and a better picture. Gouraud shading is shading per vertex in the vertex shader then sent to the fragment shader. It sometimes  creates triangles and boundaries when it should be smooth. Phong shading is shading per vertex or per pixel. Interpolate the normal across the surface and  calculating final lighting per pixel. Which removes the artifacts from Gouraud shading.

Tuesday, November 26, 2019

cst325 w5


This week, we worked on shaders, texturing, and transparency. We used texture mapping and filtering, applied images as textures to objects, understood methods and limitations of alpha blending, and applied alpha blending in WebGL.

Texturing is a process that takes a surface and modifies it at each location using an image, function or other data source. It makes 3D scenes look real.

In rendering, many buffers are used. A buffer is a part of memory that stores data per pixel like color and depth buffers.

The depth test using the Z-buffer compares the current fragment depth against the corresponding value in the depth buffer, if its less; it will be kept. Other tests are alpha, stencil, and scissor. The alpha test is used to remove colors where the opacity is not above a value. The stencil test is used to compare a fragment to another value in the buffer. The scissor test determines if a pixel is in a user defined rectangle, only keeping if it is inside.

Alpha blending uses an equation to determine if the new color overwrites the current buffer color and how much it contributes.

Wednesday, November 20, 2019

cst325 w4

This week, we learned about raytracing and it's similarities and differences from rasterization. We also learned about the CPU and GPUs role in rasterization. After, we learned about applying matrix transforms to geometry. Then we learned about how to manipulate render state and issue commands for 3D scenes in WebGL.

Polygon meshes are a collection of vertices, edges and faces that make an object. Triangles are combined with shared edges to make the object. The vertices are position, color, and texture coordinates. These meshes are used in the Rasterization pipeline because they are all triangles, are easy to calculate, and work well with hardware like CPUs and GPUs (heterogeneous computing)

The graphics pipeline is the model that describes the steps the system takes to make a 3D scene into a 2D one: Application, Geometry, Rasterization, and then to Screen. In Raytracing, the nesting order goes from pixel to object, and in Rasterization it is the opposite.

In the CPU, the application creates/loads geometry, then gives commands to the API what when and how to draw, it loads the triangle mesh data then issues a command to render. In the GPU, geometric transformations are applied to vertices and make primitives from them. Vertices are transformed from their locally defined space to the screen space, then they are assembled into triangles which receive values interpolated from the vertices. Then in Rasterization, the triangles are converted to pixels and then shaded; creating the final image. Each fragment finds the closest to the camera through the Z-value.

cst 499 week 8

This week, we finished writing the paper in order to do the best job possible even if it was a little bit late. Now that everything is done,...