Meet Specialist Patrick

Hey! My name is Patrick Friedman, and I am a Makerspace Specialist at UNT’s The Spark. I am a Junior Computer Science major at the University. Stemming from a young age, I knew that I always wanted to be an engineer. I enjoyed learning about computers and software. I had to learn to problem solve early on as my family constantly installed viruses and malware on the family desktop.

I have always liked creating and building. In school, I looked forward to working with computers and electronics. I have been in a woodshop and metal shop since they piqued my interest. I learned how to weld and use power tools, while others were learning Speech or AP English.

The Spark is a great space to learn and bring our creativity to light. Recently, I have gotten into 3D modeling and rendering, and I have used blender primarily as it is a free, yet powerful software. Many game developers and professionals use it to animate and even create full movies.

Included are some renders of projects I have done. Above is an early and final picture of a low poly well. Low poly is a polygon mesh in 3D computer graphics that has a relatively small number of polygons. Low poly meshes occur in real-time applications like video games. The number of polygons in a mesh is an important factor to optimize performance but can give an undesirable appearance to the resulting graphics. Below is a more high-quality render I have made. It is a lightsaber I created in the same software.

The Spark is available for every UNT student who wants to create or just learn a new skill. I am excited to keep working and gain important skills in engineering so that I can use it in the future both professionally and personally.

Written By: P. Friedman

Full Spectrum P Series

A Warm Welcome to Our Newest Machine, the Full Spectrum PS36 Laser Cutter.

A brief history on laser cutting:

The first working laser cutter was created in the 1960s by Western Electric, one of the forerunners of laser technology in manufacturing. Manufacturers soon began using lasers in their processes to allow for much faster production. Many advances have been made since then, such as metal cutting and glass etching. Today, we see more affordable options, better software support, and small-sized machines made specifically for makers. It truly has never been easier to get started with laser cutting.

Our laser cutter operates using CNC or Computer Numerical Control. This allows us to draft our designs on a computer program such as Adobe Illustrator or AutoCAD and upload them to the machine similarly to how a printer works. Laser cutting is accurate — the narrow beam of high energy light on our machine is merely 0.002”, or 0.05 mm. This is what makes laser cutting so unique: high accuracy and fast cutting of certain materials. Traditional methods such as saws and blades are not as fast, quiet, or clean. CNC combined with the highly accurate laser allows for intricate designs or even photo etching automagically.

An example etching piece created on a laser.

Laser cutters are limited in the materials that are safe to use without an industrial filter system, but luckily this includes all types of wood, specific plastics, and most fabrics. Materials that are not safe are plastics such as PVC, vinyl, or ABS. These plastics are commonly used in manufacturing today, but release harmful chlorine gas or hydrochloric acid when burned. This is why, when working with plastics especially, it is important to know exactly what material you want to cut and if it is safe to use on a laser.

Hobbyists and makers have welcomed laser manufacturing with open arms, as they make an effective tool for a variety of uses. Wood burning and etching, carpentry, and other crafts can make use of the precisely controlled laser. Laser cutters are easy to use and setup, with very little clean up required. Makers unfamiliar with CNC can learn very easily through a laser with Adobe Illustrator or similar programs.

If you have any questions about laser cutting or want to get started, visit The Spark Makerspace in Willis library and talk to one of our skilled laser operators!

Written By: M. Heins

Debugging and Finalizing- Part 2

To finalize and remove any discrepancies in our code, it is best to get rid of any unnecessary code. For example, to test the solving function, I had a test board with fixed values. One important rule is to never hardcode or fix values. This is fine for testing; however, we want the user to have full control to ensure future usability.

We also want to shorten and optimize our code. From the beginning, I emphasized that functions were the best way to code. It is much faster to debug specific areas in our code. We can also simplify things by utilizing object-oriented programming. We can have a functions file and the main driver on another main file. This will make our code easier to test, read, and optimize. Since we have a better understanding of our code and the project, many functions can be simplified. It is good practice to take breaks and step away during this step. It is easy to later question why you made some functions more complicated than they should be.

Now that our code is clean and debugged, we can add a Graphical User Interface. We are using a library called PyGame, widely used in Python for small games and early game development. A library adds lots of predefined functions that we can utilize. First, we will draw our board using simple statements in PyGame. Since we have already determined what the user can do, we have a roadmap. We will use the same functions, but modify them for our board. We must create a sketch, draw, select, place, clear, and an update function. We can also create a nice GUI update to show our backtracking algorithm. PyGame has useful draw and event functions for keyboard presses and formatting. The two screenshots are of my previous code and the updated GUI code with PyGame.

The left screenshot is my outcome. I allowed the user to play and have the solving algorithm run if they choose. I created an executable and setup wizard as well so others can download and install the game using a simple plugin installed similar to PyGame called Cx_Freeze. With this, I can change the logo of the executable, create a setup wizard, and so much more. I hope you enjoyed coding this project with me and implemented new functionalities to your liking.

Written By: P. Friedman

Coding-Part 1

To begin, we will write our code in an ideal editor. I am going to use Visual Studio Code because it has a nice design and useful extensions to help increase the workflow. However, something as simple as Notepad is enough.

We will need multiple functions to keep things clean. When coding, it is a good practice to indent your loops and functions cleanly and intuitively as it is easier to read. It is also important to use unique but informative comments and variable names. Naming a variable or a function, “A, A1, B, B1, B2,” is never helpful to you or anyone reading your code. This will ensure quicker debugging instead of staring at your screen for hours because you forgot about a semicolon.

Now that we have an environment, we can work on coding. Since we have a basic idea of Sudoku and what functions a user can do, we will first make the board. The board is a simple matrix, and we will initialize all the values to zero. We will make a print function for it as well for easy debugging.

To create a new unique solvable board, we must work backward. Sudoku is solved when all numbers counting 1-9 are entered and the constraints are passed. As we know, the constraint is that two numbers cannot be in the same row, column, or 3×3 grid. We can do this by implementing the backtracking algorithm. We will be able to make sure a given board can be solved and increase/decrease difficulty per the amount of numbers shown.

The backtracking algorithm is simple. Look for an unanswered spot on the board, pick a number, and continue forward. If there is a conflict, go back to where the problem occurs, and pick a different number. Then keep repeating the process until the board is completely solved. We must make sure to do this algorithm with time complexity in mind. If we do not check for the constraints first and instead test every number from 1-9, it will take a long time as this is very inefficient. This can be similar to the brute force algorithm. Every box has a possibility between 1 through 9. Therefore, we would have to test a maximum of 9^81 values as simple probability suggests.

Once we have made a function for solving the board and checking for an unsolved spot, we can continue. The algorithm will create new unique boards by itself. We will have to keep the solved solution so we can test the user on it later. Some numbers can be revealed by picking a random spot in the empty table and copying that same spot on the solution to show up onto the unsolved board. We can do this as many or as little times as we want. Now that we have the unique unsolved user board and the solved solution, we can start on the GUI or the Graphical User Interface.

Written By: P. Friedman

Prusa 3D Printers

Prusa Research was founded in 2012 by Josef Prusa. The company started as just himself with no outside funding and quickly began to grow into a now 500-person company with over 9,000 printers running at the Prusa factory. His original i3 design for the printer became one of the most popular 3D printer designs due to its open-source nature. They have become the fastest-growing tech company in Western Europe with a growth rate of 17,118% over the last four years. The largest reason for the company’s success is the decision to remain a completely open source. All the firmware, models, circuit board designs, and blueprints have been made public for people to customize, improve, and tinker with to make the product their own if they care to do so. Prusa has managed to be a leader in 3D printing innovation and design because of this principle. This allows people within this community to build off the work of those that came before them, instead of constantly having to work from the ground up. There are countless other 3D printing companies and designs out there, but you would be hard-pressed to find a printer that is not based on or highly influenced by the work of Prusa. Prusa Research has managed to play one of the largest roles in innovation for the 3D printing community in such a short amount of time, and it has been one of the largest contributors to the progression of 3D printing today.

Written By: K. Mortensen