Freitag Software
The Joy of Writing Software
  • Home
    • Links
  • My Software
    • JavaScript Programs >
      • Dots
      • The Code Cracker
      • The Deserted Ship
      • Flying Text
    • Java Programs >
      • Dot Animation
      • Operation Rescue >
        • Mazes for Programmers
      • Battleship!
      • Blackjack
      • Draw Poker
      • State Pattern Demo
      • Falling Blocks
    • Android Programs >
      • The Oracle
      • RPSLS
      • Gemini Falcon: Asteroid Miner
      • Gemini Falcon: All Boxed In >
        • Gemini Falcon >
          • Privacy Policy
          • A Game Oddity
      • Ay Caramba
      • Dots vs Dots
      • Ants vs Ants
    • Twine Stories
  • Random Thoughts
  • Book Reviews
  • Teaching
    • Real-Life Stories
    • Flying Text
  • About
    • Contact

Whew. What a ride it was...

8/15/2022

 
I've been teaching beginning CIS courses over the past 5 years, but now I've retired from the teaching biz. Teaching can be rewarding, but it also can be frustrating. Eventually the frustration overcame the reward and it was time for me to move on. 

As a fellow instructor said, "Who will fail the students now?" Probably nobody. Pass 'em on; keep 'em enrolled. Keep the headcount high. That's the goal of most schools, but it was never mine. 

I wanted students to learn. I gave them detailed evaluations of their programs and told them explicitly what to do to make their programs better. 

In most classes a few students did quite well. Most did not. Most obviously never even opened the textbook and then complained when they couldn't do the work and received a failing grade. Sigh. 

They are not my problem any more! 

I'm still writing code. Most recently I wrote in Python a boardgame simulator for TMD: Total Musical Domination. That was fun. Then I wrote a card game simulator for FAB: Form a Band. I'll always be a computer scientist even if I'm not being paid to be one any more. 

Has it been that long since I posted here?

1/14/2018

 
Apparently I did not create a blog post here for a full year. 

Good for me. I have a life and I've been living it. Not that I don't have a life at this moment now that I'm posting a blog post again, but I was updating this website with the software I've created recently and checked in on my blog post and saw how lazy I've been. 

Most of my mental energy over the past year has been put into teaching and trying out ideas on how to teach beginning programming to my students. I've had some successes and I've had some failures - mine, not my students. As always, teaching is rewarding, challenging, and frustrating -- sometimes all in the same hour! 

Starting a New Project

12/9/2016

 
After finishing a project, I like to decompress and relax a bit. I try to enjoy the product of my creative labor. Sometimes my downtime takes months, sometimes only a few days. 

The problem is that starting a new project is like taking a deep breath and diving underwater. I know I'll be gone from the world for a little while and in my own little creative world. It's exciting, but it's also scary. 

When I'm getting ready to start a new project I have to gather myself and mentally and emotionally prepare for the trip. I have to be willing to focus and engage and commit to a creative act. I have to squash my demons who keep saying that nobody cares if I do this or not. I have to create enough enthusiasm to get past the tough creative times after the initial excitement of the project dies down. 

I have to weave a spell around myself to care enough to devote my time and my life to this pursuit. It isn't easy sometimes, but it is getting easier. As I get older, it's easier to spend my time doing activities that I enjoy that others don't understand. As I get older I am content to spend my time in enjoyable creative and intellectual pursuits. 

Besides enjoying the time I get to spend with my wife and friends, I can't think of a better way to spend the days of my life. ​

Finishing a Project

11/30/2016

 
After finishing a project, after coming up for air, I frequently have a little let down. Even if the result is fantastic and I am very proud of my effort, being done is a little disappointing. While I was working on the project I was in the zone, experiencing flow, and completely absorbed. It was fun. 

Back when I played tournament chess I remember walking down the hotel hallway after winning my first chess tournament and thinking, "Really? That's it?" It just seemed so anticlimatic. I studied for hours and days and months, followed by playing 5 long games over a weekend, and I lost less than anyone else. That's it? Was the effort and sacrifice worth it? It didn't feel like it. 

I didn't think of it as a sacrifice at the time. I enjoyed playing and studying chess. I enjoyed meeting up with my friends at tournaments. I enjoyed winning and hated losing. And I was relatively successful. But the opportunity cost of the time spent studying chess instead of going out with friends in high school was a sacrifice. But perhaps a sacrifice I would make again anyway. I did have fun. 

So, now when I finish a creative project like programming or writing or an artistic pursuit, I still have a little of the, "Really? Is that it?" in the back of my mind. The difference now is that I am more content to have spent my time doing something that is challenging, new, and enjoyable. Even if that is it and few people will care if I did it or not. ​

An Independent Scholar 

9/12/2016

 
I enjoy programming. It's creative, it's fun, it's a way to experience flow while sitting in a comfortable chair in an air conditioned environment. 

Being a programmer, I've always enjoyed learning new techniques and concepts related to software development and technology. But I've always had a job that required me to think about business-related subjects that related to the job. I couldn't do my own thing. 

But, now that I'm a old fart, I can do as I please. I've always been interested in AI, machine learning, the singularity, and science fiction in general. I know, surprising, huh? Well, now I have time to indulge my interests. 

The college I work for wants me to go back to school and get a masters in Computer Science to continue to teach programming classes, but FT. I'm not going to spend more years learning what others want me to learn. I'm on my own now - I'm an independent scholar. 

As you know from this website, I've been writing apps for Android and learning about that platform. Its been fun. Now I'm focusing on a larger projects that enable me to code various approaches to machine learning. The world and the internet are my oyster and I intend to dine well. I look forward to years of exploration and fun! 

JavaFX

8/27/2016

 
Back in the day I wrote some small dialogs and simple user interfaces with Swing, but I never became proficient with it. I just never had the need to do so - especially after I became a supervisor, manager, and director at the software company I was working for. 

So, now that I've gotten back into coding in Java from the Android side of things, and now that I'm teaching Programming and Problem Solving I and II at Pima Community College which uses Java as the teaching language, I have more reason to dive deeper into Java. 

To my surprise, JavaFX seems to be reasonably easy to learn and use. Check out my BattleShip game I created to try out some JavaFX concepts. It's rather simple, but not too bad for a first effort. 

The problem with creating software for others to use is that the fun coding part of it is only a small part of the entire process. I like designing and writing and testing code, but I don't care for creating the graphical elements, the sound, or the user interface. Each of those areas is a full time career in themselves. So I'm focusing on the coding and the user interface you see will be simple and usually text-based just so I can keep moving and learning and enjoying myself. 

Programming Languages

8/27/2016

 
A lot of people have religious fervor over which programming language is the 'best'. I never joined that debate - it seems endless, if not pointless. Every language has good and bad points -- if you don't understand that, you aren't experienced enough in the language yet. The best programming language to use is the one that will get the job done within the constraints of the problem.  

A constraint could be a language that your company says you must use - so that's the 'best' language to use. A constraint could be an inability to hire someone with experience with a language you want to use. A constraint could be a tight deadline that precludes you learning a new language that might be more useful than the language you already know. And, of course, there are always technical constraints between various pieces of software that excludes or encourages the use of a language. 

So, I'm pragmatic regarding programming languages. What works works. Let's deliver something and move on the next cool thing to code. ​

Artificial Intelligence

5/14/2016

 
​I've always been interested in artificial intelligence and emergent behaviors. So, instead of just reading about the subject, I've decided to start coding. My plan is to read, learn, and create a Android app demonstrating whatever I've been learning. No hurry. This could be a 20 year project. 

My app Rock, Paper, Scissors, Lizard, Spook has an AI that uses pattern recognition and basic probability. If the human player has a simple pattern, the AI will recognize it and play accordingly. 

My app The Oracle uses randomness to keep the user more entertained. Not really AI, but it shows how a little randomness in a very simple toy can be entertaining. 

I've written a Battleship game that uses more sophisticated AI with rule based AI and probability maps. If the computer hits a ship, it knows to continue shooting around that hit. If the computer is looking for a ship, it will calculate the location that will most likely contain a ship. The AI is good enough to beat a human playing the best they can if the chips fall in the right way - just as human vs. human players win. Now I just have to write an app for it! ​

Going beyond Casual Games

1/18/2016

 
Now that I've created a few games for the Android, and a few for my classes, I'm getting tired of creating small games that I can code in a few days to a week. The good news is that now I can quickly code a variety of games; the bad news is that interesting ideas and solid code is only a small part of delivering a quality game experience to the player. 

So now I'm thinking about larger projects that I can work for a longer period of time on -- something more challenging and interesting than arcade-style games. If I come up with anything, you'll see it here first! ​

Teaching Programming I and II

12/27/2015

 
As the saying goes, if you want to learn something better, try to teach it to others. I knew how to code in Java before teaching this class, but after teaching both Programming I and II this semester, I'm a much better programmer now. 

It was extremely motivating to face a room full of students looking to me for answers to keep me learning and studying. It was a blast, actually. 

It was satisfying to see the metaphorical lightbulb go on over people's heads when they 'got it' and understood a concept we were covering. And it was frustrating when a student would not even try to put in the effort to understand the concept. 

I'll be teaching Programming I this semester so I hope to be able to use what I learned about teaching programming to improve the experience for everyone. 

(and maybe even get a little coding done myself!)

<<Previous

    Author

    David Freitag - 
    Someone who enjoys programming and software development.

    Archives

    August 2022
    January 2018
    December 2016
    November 2016
    September 2016
    August 2016
    May 2016
    January 2016
    December 2015
    May 2015
    January 2015
    December 2014
    November 2014
    October 2014
    July 2014
    June 2014
    April 2014
    March 2014

    Categories

    All

    RSS Feed

Powered by Create your own unique website with customizable templates.