Berlin Brown

Updated Publish Date:

Create Date:

Berlin Brown is a professional software engineer with more than a fifteen years of professional application development experience that has a proven track record of producing quality distributed software. My non-professional programming career started in Austin, Texas when I was 10 years old with the TRS-80 with early BASIC
AI/ML Updates This git repo and project will now focus on AI, LLM and ML Machine Learning. The computing world has changed in 2024.

About

Berlin Brown is a professional software engineer with more than a fifteen years of professional application development experience that has a proven track record of producing quality distributed software. My non-professional programming career started in Austin, Texas when I was 10 years old with the TRS-80 with early BASIC (Tandy RadioShack) and I haven't stopped programming since. My current focus technology stack includes Java enterprise web, mobile application development for Android and iOS. I am currently working with a financial services company (formerly a Citigroup unit), also with the City of Atlanta on a billion dollar engineering project and the Center for Disease Control (CDC) for a public health data collection module.

Specialties: Backend Java development, Frontend Hybrid development IBM Mobilefirst/Worklight, J2EE, performance analysis, web application security, IBM Webshere, IBM DB2 with a focus on Financial Services and Insurance. With new focus on #Atlanta, #AI, #LLM, #Blockchain

Core Blog Links


Blog - Berlin Brown
Blog - 2 - Berlin Misc
Applets (deprecated)

Open Projects

Capstone AI Projects

More Open Projects

JVM Notebook - Small projects demonstrating the features of various JVM languages including scala, jython, drools, antrl, abcl.

Java Clojure PDF Generator - Simple editor written in Java Clojure.

Squirm Artificial Chemistry Java 2D game demo

Simplest Possible POC Projects -

Small Reddit Like Site in Java - Post links to webapp, comments and more

Articles and Other Resources

Java Third Party List

Contact

https://x.com/BerlinBrownMech - twitter, berlinbrown - new

Twitter - twitter, berlinbrowndev2

LinkedIn

My Mastodon

Published on Github Pages

Popular AI and LLM

Top Github Repos

More Posts

On Cellular Automata

Cellular Automata

A New Kind of Science

The name Stephan Wolfram has been mentioned several times in this post. He is the founder of Wolfram|Research, his company is known for the popular Mathematica software suite and Wolfram|Alpha knowledge engine. He did not initially discover cellular automata but recently he has been a prominent figure in its advocacy. He spent 10 years working on his book, A New Kind of Science. In the 1300 page tome, he discusses how cellular automata can be applied to every field of science from biology to physics. NKA is a detailed study of cellular automata programs.

Basic Cellular Automata

Figure: Wolfram's Elementary CA Rule 30. Look at 3 bit input and 1 bit output. The diagram above depicts the rule 30 program (or rule 30 elementary cellular automaton). There are 8 input states (2 ^ 3) and an output state of one or zero. If you look at the diagram from left to right. The first sequence of blocks on the left depict an input state of { 1 1 1 } with an output of 0. Given input of cells { 1 1 1}, the output will be set to 0. Subsequently, the next set of blocks consist of an input state of { 1 1 0 } with an output of 0.

Applied Cellular Automata Cellular automata is often used with data compression, cryptography, artificial intelligence, urban planning, financial market modeling, music generation, and 3D terrain generation. If you are a software engineer, you may have to step back and consider how cellular automata patterns emerge and understand the nature of the dynamic system before looking for a typical software library. CA is not normally seen in everyday applications. Consider this when you look at some random pattern, don't think of the phenomenon as a random sequence of events that cannot be replicated, think of the event in terms of a cellular automaton. Try to imagine the rules that could model that natural behavior. Modeling seemingly random patterns is an area where cellular automata is being widely used. Urban planning departments are integrating geographic information systems (GIS) with cellular automata in an attempt to predict growth in an area of a city. Summary The simple squaring example mentioned in this post merely gives you an overview of a basic cellular automata system. Scientists, biologists, computer scientists and software engineers want to find better ways to observe relationships and patterns that occur in our world. Review Stephen Wolfram's A New Kind of Science to give you an idea for what is possible with seemingly simple rules.

On Unit Testing

This is an older post but still relevant. On Unit Testing

I am more interested in the psychology of unit testing, who does it, likes it, hates it? It really is one of those easy to learn, hard to master concepts. For example, many many may play chess when they are young and can end up being horribly chess players most of their life, I am part of that majority. Unfortunately, I have never played chess and sat down for hours and tried to master it. I never see the common patterns or have a developed end game. I mostly just play with a knowledge of the basic rules. Following good unit testing practices within your software development shop is a lot like playing chess. It is easy to learn and difficult master. Actually, there are a lot of big differences, chess is a game, chess is not coding, and people take their software development very seriously. So if you don't master unit testing, but are able to complete your job tasks, some might argue that is an acceptable risk in the world of software development. And why master chess or master unit testing? If developers are fine without unit testing, then why even suggest it. Some developers just don't want to invest the energy to master the practice. And in some development shops, there is no hard requirement to do so.

I am not going to convince you to write unit tests with this one post, I will leave that up to software guru Martin Fowler and the people at ThoughtWorks who have written large tomes on the subject. But I will present my thoughts on why some developers won't write unit tests but why they should. Those developers and architects that do advocate unit testing generally fall into that category where they have written just enough unit tests to find it useful and they generally love the practice, they also encourage others to follow along. I am sort of in that camp, I have almost become religious about it. I can't imagine my real code without unit tests and I just feel guilty by only testing through manual functional testing.

Jeff Atwood of Coding Horror wrote a short blog post on the topic, "I Pity the Fool Who Doesn't Write Unit Tests". Here is the one blurb that stuck out for me, "Even if you only agree with a quarter of the items on that list-- and I'd say at least half of them are true in my experience-- that is a huge step forward for software developers". And this one, "It's more fun to code with them than without". That is the essence of this unit testing religion, we can't force it on developers and we can't force developers to write unit tests only a certain way. I and many others don't believe in the practice of 100% coverage. You will rarely get there anyway, depending on the project or company. Some will argue that you shouldn't break the rule on non-determinism and this is a big one. Basically, the unit test should return the same output every time you run the test. You should avoid breaking this rule for unit tests but you can still write and add automated integration tests to your suite and not waste time, combine a collection of unit tests and integration tests. A simple integration test might test connecting to your REST microservice and validating the HTTP status code. At that point, your test moves into the integration testing category. If you connect to the database, run a particular SQL statement and validate data model returned from the SQL invocation, then your test is basically integration. Both scenarios are not units are non-deterministic but I would still consider them to be useful. Also, as a start for new developers getting familiar with unit testing, writing integration tests may be more familiar to them than decomposing or refactoring their code for a real unit test. There is a benefit in database or HTTP integration tests, you can add them to a test suite and run them in a automated form after a code change and after a build. Even bad tests can be useful.

Misko Hevery is creator of one of the most popular JavaScript frameworks to emerge in the last couple of years. It is a Google project that he started working as an Agile Coach. As he puts it, he wants to maintain the high level of automated testing culture at Google. Most of his published articles are not about AngularJs but on the benefits of automated testing. I can only imagine that he developed the MVC JavaScript framework because the old crop of frameworks were a pain to work with for developers. They were not testable.

On Java and Java Virtual Machine Languages

The Java Virtual Machine ( Sun's JVM is called HotSpot ) is a java bytecode interpreter which is fast, portable and secure. Jython, JRuby, Scala, ABCL (Common Lisp) are popular language implementations that run on the JVM that allow for the jvmcookbook sugar of their particular languages.

Review of languages

Images created with povray ray tracer povray