Posts

Showing posts from December, 2024

PLSQL and Oracle Databases

 Databases are the backbone of an application, it is crucial they allow for efficient storage, retrieval, and data manipulation. Oracle Database is a common and widespread database utilized in software. It is voted the most popular database engine in 2024. PL/SQL is an extension of SQL which is specifically created to use procedural constructs for different customized logic. SQL  SQL as we know is utilized specifically for: querying, manipulating, and managing data inside of a database with SQL statements. These statements are executed in line sequentially, and in order to chain together statements to combine multiple conditions or filters they have to be written in specific order.  Specific features of SQL are: -Simple queries (e.g., SELECT, INSERT, UPDATE, DELETE). -Data definition (e.g., CREATE TABLE, ALTER TABLE). -Data control (e.g., GRANT, REVOKE). The difference between SQL and PL/SQL is the execution of statements. SQL is simple and executes in individual order in...

System Design

System Design  A topic that I wanted to research and discuss is system design. The design of a system in software development is vital to create reliable, scalable, and software with high performance. System design is the process of designing the architecture of software that models and blueprints the entire system with all working components and how they will interact to complete the functionality.  A high level example of a system can be an e-commerce platform which involves multiple components in order to be well rounded and function properly. These components for this example would include: user interface, payment processing platform, product search, and inventory management. These components need to meet the functional requirement of the software which may be: search functionality, product catalog, payment processing, account management. The design of the system has to ensure that these parts can function together with high reliability, low latency, and being scalable for...

DevOps and CI/CD

DevOps and CI/CD pipelines are crucial for modern software development. DevOps are practices, tools, and standard philosophies that are integrated in software development to standardize development and IT operations in one. CI/CD pipelines are continuous integration and continuous delivery pipelines that are created to speed up the development lifecycle. CI/CD allows for developers to frequently merge code in shared repositories with each other and complete automated testing. The impact of such is that features and changes are pushed quickly while also maintaining a standard of quality through non time consuming testing.  -Continuous integration (CI) is the aspect that ensures that developers code changes are frequently integrated to create less major merge conflicts of codes, and allows for bugs to get caught early on.   -Continuous Delivery/Deployment prepares code changes for deployment through testing and deploying changes to production when ready.  The importanc...

Netflix and On Demand Streaming

Something that I wanted to explore is how companies, specifically Netflix, deal with big data and have such quick on demand streaming.  Content Delivery Network (CDN)  Netflix created their own proprietary CDN named Open Connect, which is a Content Delivery Network. This CDN is a network of servers that are spread across the world to deliver movies quickly while also remaining efficient to scale well. A CDN is vital to reduce latency and improve performance by simply serving content from a server that is close to a user.  Open Connect stores Netflix’s content, where they are cached on multiple of these spread apart servers around the world. A simple way this works is: A user requests content, which is then delivered from the server that is nearest to the user's location (instead of being from a central server which is common practice but not optimal for streaming services). Edge Servers Netflix uses Open Connect Appliances (OCAs) which are its own servers that are deploye...

Software Engineering Best Practices

Following software engineering best practices allows a developer to be efficient while also ensuring quality and replicable work. 1. Clean code Clean code is simply explained as easy to read and understand which does a couple things.  It allows for reduced time for current and future debugging, editing, and collaboration.  Collaboration is an important aspect, my first real introduction to team collaboration was in my last year of university  where a team of 9 of us worked on a project for a client. This allowed for us to practice applying real world  principles such as design, implementation, testing, and thorough IEEE documentation standards.  https://github.com/mnothman/HD-Requester Critical aspects that should be focused on include: Consistency : Using consistent naming and coding styles. Name styles include- CamelCase, PascalCase, snake_case,  while coding styles/conventions include PEP 8 for Python. Avoiding Hardcoding : Hardcoded values should be rep...