My name is Terrance and I like Spring MVC and snacks.

A developer communication ethic.

The content you are trying to access is only available to members. Sorry.

Linux in Windows as a Developer Environment — It’s Docker’s Fault

I needed to set up my newer windows box for development (most of my time is on OSX at my gig).

During a conference I went to a Docker presentation and was forced to bring in the windows machine for it’s awesome battery — and was the wrong thing to do.  Docker on windows sucks, and windows has no real good dependency management solution compared to Brew and Linux solutions.

I tested a Particle Argon board I got during a workshop and it worked great on the virtual Linux (the hardware — that’s Particle’s Web IDE in the pic).

Particle Argon Kit

Then, I installed a version of IntelliJ and VS Code (very popular, and kind of the best choice now).

My next steps are to get Docker up and going — maybe a Redis database or something with GraphQL.  It would be nice to be able to reset the system — everything in Windows gets so baked in and can become problematic.

The entire summary of this activity:

  1. Get a system up to develop in that I can configure without ruining my host system.
  2. Have the ability to have sandboxes — i.e. Docker.
  3. Have better package management than Windows can provide.
  4. Command line!!!!  that alone is worth it.
  5. The system still has to scream — I am running a very powerful notebook so am not too concerned.  Since there is a lot of virtualization swapping for performances this should be OK.
  6. Hardware — has to be usable (Particles and Arduinos etc.).

So far so good.

I will have more on things later and hopefully get this DLive/Channel stuff going as I restart my hands-on sessions.

Meetings and Studies and Bizzies

I haven’t been at this in a while although I have a backlog of things to write about that I have been accumulating from my readings and talks with other devs associates over the last few years.  Unfortunately some of it is timely technical material and the relevancy has probably fallen by the wayside.

One thing I have been wanting to start up again were my hands on tech groups and have been looking for some focus since there are so many things going on right now.  Since deciding not to use the Meetup site for EC Tech, I’ve been trying to come up with something that was a little more deep than just a glossover 101, because, that’s what the world needs is more glossover 101’s on tech.

So, right now in the boil are these topics:

  1. Security topics — oauths and verifications etc.  I have gotten some experience since the lat 20-zero’s in this sphere and have always wanted to finish out the investigations.
  2. Mobile application platform evals — are languages like Kotlin worth it vs Java etc., and quick launch but flexible-to-adapt platforms.  Are mobile apps even worth it even.
  3. General language/platform investigations with business ideas — I am looking at Y Combinator courses this summer and their materials — people can sign up.
  4. IoT.  There are a lot of robotics and such in my area; a deep look at machine programming might be worth it.  I see a lot of the raspberry pi work etc. but not interested as much as capitalizing on the real world.  Note I am very much in favor of dumb machines, well, what about IoT for them? And ownership over the code you purchased with that machine?
  5. Big data beyond the incessant people tracking psychosis a lot of the industry now practices.

The tech world is going back through a cycle of microservices (“write once, run everywhere” like 1990’s java) and ideas that were being used by developers but surfacing just recently — like cicd — seem to me to be as buzzwords or adapting tools we already do so, anything I do will encapsulate some sort of those aspects.  Mostly it is the materials that dictate it — tech — and not a grandiose vision of things yet to have been.

Of course I have some agile/lean/etc. topics to write about.  I usually keep these close to the vest as the outcome of those techniques end up on a developer’s lap, much like physicists never see atoms in an accelerator, just the aftermath.

Also, I am looking for a good platform to share with everyone, all this.  Since my group was localized, maybe it’s time not to do that?  Do not know.  Having kicked around podcast ideas since 2007, and doing online/youtube things it just didn’t catch my interest, and, there is a lot of good stuff out there now.

The trick will be — doing something relevant (to me and/or us),  and hopefully capitalizing.  See you soon.

Coaxial Surge Protector preventing High Speed Wi-Fi

So recently we called up our service provider to check in about cable/internet service.  They notified us that we could get a new modem because they had upgraded their speeds.

The modem arrived and had good installation instructions including going to a site to activate it.  All seemed OK, took 1/2 an hour.  Testing off the cell phones (I didn’t initially test on any machines) speeds seemed about the same as before.  And started to get the impression something was not right.

Next morning I wake up to log into work on my machine and the internet is way slow.  I decide to run a speed check:

Not so great at all.

Calling up the provider’s help desk, we start to walk through a debug — which involves switching ether net cables directly to a machine and running the test.  Still slow.  I get disconnected from them (of course) but continue on with an idea.

I had hooked my incoming cable to a surge protector — it worked fine with the previous modem.  But removing the coaxial surge protector from the chain was the solution — speeds were fixed.

I try on a few test sites:

Also — researching — this site discusses that surge protectors can be an issue.  I was surprised I had never came across the issue before as this answer was quite old:

Re: What about cable surge protectors?

You can’t use them for TV or HSI, they will mess with the digital signals, it is a proven fact.

I also believe, that I do not want my coax so close to the AC wiring, that it will jump from one line to another because they are so close inside those devices.

The coax must be grounded at the entry to the buiding, and grounds the shield on the coax.  That is part of the National Electrical code.

Running ethernet through those AC surge proector strip’s is the same deal, it will slow down your network, again, that is a proven fact.  There has been posters on this forum complaining on slow speeds and once their coax and/or ethernet was removed from those strips, they have gotten their speeds back.

Scrum Creep

Nooooo I’m not talking about that QA member who hogs up the standup meetings.  I’m talking process.

The content you are trying to access is only available to members. Sorry.

Hard Work

”The secret of success is making your vocation your vacation.” – Mark Twain.

I was reading through some Code Newbie tweets and was quite impressed with the enthusiasm of potential developers who had little, if any, work experience.  Well I’ve got some news for them. Know that stress you are having at finding your first job, doing your first job, doing any job?

The content you are trying to access is only available to members. Sorry.

Meetings Greetings – ECTech Future

Last I was here I was chugging through some examples in my Eatup on a few different JVM related languages.  Went well.

So after that I dropped the ECTech Meetup subscription, it was not fruitful and the tech scene had gotten taken over in my area by non-Java lovers doing things that don’t pertain to my existence.  It’s fine an dandy to do what you wish, but inside the small exosphere of a smaller city is tough to not have “The Grand Unified String Theory of All Techies” at hand, so decided to swim a bit further out into the surf and see if there are any larger waves and less single-minded beaches.  I guess I miss the Twin Cities’ diversified atmosphere in many cases, such is the work of a devotee remotee.  That said, I am soon starting up a newer group, more social-media oriented and probably geared towards us ruralites — there is a lot to learn about remote work and staying highly tuned as experienced developers and quality lifestyle. Note: until recently I have been as urban as they come since the late 1980’s — south side of Chicago and urban St. Paul MN.  One of the biggest impediments is no access to any Indian food whatsoever . . .

The company I am currently hitched to has some cool things going on and its been fun and I have engrossed myself.  We are linked to an SAP project and they really take Spring configs to their ultimate bloody end.  I didn’t think I’d be writing XML configs like this still, but am, and they still have their graces.  But as is usual, code generators can be problematic for the non-NOOBS — things like generated DTO’s that don’t let you do Jackson-like notations to manipulate them more fine-grained.  Still though, a business gives an engineer a palate to be creative around their needs in ways you may have never thought; anyone who can sit for 10 hours staring into code should be excited at the times we live in now.

Most recently, having had been Enterprise for so long (meaning large teams on large software in large companies),  I’ve gotten to work with some embedded developers and small project developers without Enterprise experience.  It has rekindled my desire at times to be in full control of code, full ownership, on my own projects I have neglected.  I am excited for them, and for anyone thinking about device programming or small microservice style programming.  Just remember — because it’s *yours* does not mean ignore software basics on deployment, code quality, tooling, continuous integration, refactoring and patterns.  So in many ways this blog is my *small* outlet.  Not to be reductionist, but doing Agile coding you really don’t get to see the big picture, just a jeweler’s glass on one piece of the puzzle; and that can be dissatisfying at times.  (On the other hand — Enterprise means BIG toys and I love that a well, and I love people in general.)

Kotlin.  Java.  I keep seeing Kotlin buzz.  I used to see Go buzz.  I lived through Groovy buzz though still use it and Grails for small testing scenarios and prototyping.  Java is not going anywhere.  As annoying as their lambda implementation has been to me, and streams, someone will always have to use something like it to make service busses etc.  C++ has went nowhere, nor Java, and C# fitting in much of that same sphere.

Please don’t consider me a Java fan boy — the reason I chose it (over my then-dual skillset of MFC/VB and java) was that all the ideas were coming from Java and open source.  Knock off the old outrageous per-cpu licensing WebSphere, ATG Dynamo and BEA used to charge (slain by Tomcat and JBoss) and the world of Agile, XP, testing etc. were all pushed light years ahead in the open source world; to me meant Java.

Process.  I still look at process, and the genesis of Agile as top-down from grassroots is complete.  Meh.  Maybe an observation here and there.

I find this interesting as well and will be pursing reproduction of the tests soon, being more interested in the lost art of slim, performing code:

Keep in mind for my approach — IDEAS trump TOOLS.  CRAFT trumps ORTHODOXY.

UI on the other hand.  JavaScript.  CSS – Less, SCSS etc.  I still see the same things going wrong as I have for the last 15 years.  Maybe it’s the nature of the beast — UI means UX means needing lots of churn and feedback.  But the turnover of the code generators; the “this is a better MVC/dependency library” — name it.  I am not involved in any consortium but the work is as tedious as ever and imho hasn’t gotten any better.  There is a lot of art involved in coding it, and without pattern training, or testing or code principles rigorously applied become time suck and error prone.

So getting back, will be posting some more solutions as I come across them like before and see where that leads.

Ciao for now!

EC Tech JVM Language Series

There will be a set of hands-on sessions with JVM languages for EC Tech that I will be hosting for this coming season.  What happened was, I was looking up a new TV diet called the GOLO diet when I ran across the GOLO language.  After reading about it, I realized there was a lot of this going on, such as with Kotlin on the INtelliJ they are heavily advertising, and the new Javascript library in Java 8 that runs on the JVM.  So,

This nice blog lists a few JVM languages — and posts this classic quote:

Learn at least one new language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut.
-The Pragmatic Programmer, Tip #8 “Invest Regularly in Your Knowledge Portfolio”, Andrew Hunt & David, Addison Wesley, 1999.

and though I do a lot of Groovy and love some of it versus Java, and love Java vs, it, well:

  • Why not re-look at some languages for fun?
  • See how the class files compile down with a compiler/decompiler on standard code examples?
  • Try a use case for each language they say they are good at?

And another list of languages on the JVM.

Hands on.  And drinks.

A Quick Sanity Check: Git Tag Cleanup Routine

I mentioned in an earlier post that if you want to move a tag in git you have to do a discrete tag delete, push, then re-add the same tag, push.  Sometimes though there are tags already out of sync in your repo.  To handle things nicely, first do this routine.

Update your local repos with whatever tags are on the remote.  It might not be necessary to do all branches but do the main ones, it’s quick, just to be sure you are synced up.  I’ve seen errors in SourceTree that don’t work that well with git tags so I’m not too trusting.

git checkout develop

git fetch --tags

git checkout master

git fetch --tags

Again remember – if you need to move a tag, delete it, push the change, then recreate it, push the change.  Do the changes separately the tag cannot do a compound move (delete/reassign) in git; and check your remote afterwards.

Ant, IntelliJ, and Eclipse

And it’s way in the future and here we are again arguing about which IDE is better: IntelliJ or Eclipse.  It never goes away.  And NetBeans is still the choice of newbs, and gets cast aside for enterprise work.  Personally I never look at it so it’s not in this discussion.  We are talking PRACTICE.

I use IntelliJ quite a bit.  I have to admit I do like the UX and the search is fabtastic.  Many would say that IntelliJ takes over those mundane low level things so you can code.  However I use IntelliJ more like a fancy task editor with terminal operations on the side.

I also use Eclipse.  I have to admit I like the way Eclipse integrates with very well with command line tools, servers, testing and it’s handling of class navigation.  In fact for many of the Java-specific tasks I would say I definitely prefer Eclipse.  And what is wrong with low-level control over code?  Nothing for a more guts-n-girder coder such as myself.

There is a social aspect I do not like about IntelliJ.  It crosses into an irrational  “Macs are the best” type of mentality.  This type of view skews the fact that there isn’t really a great tool and I like teams that have people doing any kind of tool so your project does not get strapped to the IDE.

Eclipse, with all it’s plugins, and workspace mechanic, test integrations — it can become a taskmaster making your life too much of a compliance hell.  I’ve seen whole projects strapped to Eclipse; in fact I think it lends itself more than IntelliJ to this due to *choices* — lots of choices.  Its roots with WebSphere are a testimony to this project dependency-ism.  I find it a little easier to exercise restraint in IntelliJ than Eclipse — probably due to the mundane management differences.

Recently working on some ant on a project I was new to, I was switching back and forth IDEs to decide what I’d like.  The project was ANT build based and I had to merge two huge branches.  A nasty merge.  So I used SourceTree/command line git as I usually do.

I resolved my conflicts in IntelliJ.  It was better.

I did my builds and ant management from Eclipse.  It was better.

Then after my first round of roughly 70 files merged I came back to do some optimization.  During that I decided to optimize the imports, and for kicks used IntelliJ (usually I use Eclipse for code quality).

IntelliJ messed up the imports.  It decided to take some of the necessary dependencies out . . . and broke my build. I went back to Eclipse to resolve these issues and decided to write this blog piece up; and here you are, one of the subtle issues between the IDEs; in this case Eclipse gets the nod.  (Also for import optimization — Eclipse didn’t mess it up.)

For this file, IntelliJ removed the IOException import directive.  I did an ant build, and you’ll notice a few things:

  1. The error in the code is not underlined.
  2. The ant output is not hyperlinked.
  3. If I want to fix the code there is no convenient highlight-and-fix.

View of erring class in IntelliJ with ant build output.

Now let’s compare this to the view of the same thing in Eclipse:

  1. The error in the code is underlined.
  2. The ant output is hyperlinked.
  3. If I want to fix the code there is a convenient highlight-and-fix.

View of erring class in Eclipse with ant build output.


Convenient highlight-and-fix in Eclipse.

So that really sums it up for me in this use case: Eclipse has better class navigation, class resolution and class tooling when doing these command line and refactor type tasks.  I find it a bit disturbing that IntelliJ removed this import during its optimization operation; but I keep learning not to trust my tools completely.

I will continue to use both IDEs of course.  Each has their merit.