Freddy Guime

Homage to Basic

It’s been a while…it has a sense of the old. You see it, but when you see the Beginner’s All Purpose Symbolic Instruction Code, it transforms everything around it. The letters become big and blocky, the monitor becomes concave, and all computers are grey. The keyboard feels heavy and has a personality, oh how I yearn for the times that Basic brings.

Like your first fling, you can’t never forget it. I would say it hasn’t aged as well as I would’ve liked it to, but it will forever a memory on most developers. Ah these younglings who have never experience such an era. It’s not even the language but what it meant to program back in the 80 and 90s.

…You could really understand a computer…

There was so little code between you and the metal. A single-task OS (sometimes not even that), a bunch of interrupts, a CPU that could only process an instruction at a time, back when 640k was too much. You could actually directly interface with the serial port and send bits (I still remember being ecstatic when I managed to turn on a single LED using one of the bits for the Parallel port by “printing” from basic to LPT1. It was a time of discovery, of wonderment and amazement. Of course that’s still happening, but let me indulge in the old-curmudgeon “Back-in-my-day…”

… You really really understood a computer…

Fat32, bootloaders, sectors, all of it. Today is very very hard to know what happens on the CPU. I work on an area where understanding the complexities and intricancies of the hardware pays large dividends. I’m talking about CPU L2 cache lining, evictions, branch predictions, concurrency, Main memory access semantics vs GPUs. And I claim that I don’t know today’s architecture like I knew the 8086 (or the Apple II c) for that matter. And don’t even let me get started with USB vs Serials and all the billions lines of code between me and those pesky transistors.

…You really really manipulated a computer with BASIC…

And it was great! You didn’t have to learn assembly to make a computer sing. I remember installing the Speech Synthesis card for the Apple 2 and making it read aloud what I typed. What a thrill that was. There was no software for it. You had to program it yourself, the manual came with instructions on what were the commands to send to what memory addresses.

I was untrained and unrefined and plain when I started programming BASIC. If anyone would looked at that code today, they would scream. It would have been the perfect example of many things that shouldn’t be done.

I was 9. and I was a Deity

In the christening that all developers go to, I still remember writing

10 print “hello world”

and then I added my first hack

20 goto 10

I was hooked

My flavor was the apple II c basic, and how I was so excited. Only 5 1/4 floppies, no hard drive. Terminal green screen, and not a care in the world. I would create silly things, a birthday card maker that printed text in those never-ending paper reams. The tick-tack of the dot matrix printer head still lodged in my memory. I remember creating my first bootable program…it was a matter of renaming a .bas a certain way, Android still does the same thing today 😉 and making it list the content of the current floppy drive at boot up.

I remember discovering how to center things on the screen…there was no internet back then, and books about programming in my neck of the woods were hard to get. How excited I was when I discover you needed to take the length of what you wanted to print, divide it by two, and then subtract it from the (halved) number of characters that you could fit in a line. Then you printed that # of spaces, and tagged what text you wanted. It was my first empirical algorithm.

I remember how I tried in that tight REPL until I got it.

Ah, those days.

When I moved to the x86, what a change. It had color, it had a better basic, it had peek and poke, and bload and bsave, and a hard drive. It has a shell, and TSR programs. Oh the days. I remember how I started creating more and more unrefined, crufty, yet cool as hell programs. The first one was simply just changing the Video Mode, oh lusty CGA, and then putting pixels on the screen. I finally learned about GOSUB.

My biggest memories were from when I decided to take my first consulting gig. I created a BASIC program that would show the different maps of my native country (Ecuador). I remember mapping every single line on the screen with line commands and point commands. I didn’t looked far ahead as to use files or image formats. It was all raw hand-coded BASIC.

I was 14

I remember how I panicked because the original basic could only hold so much memory, and my subroutine to draw one last map put it over the top. I couldn’t save nor load it. There was no github, no svn, nothing. I freaked out for twenty minutes until I realized that I had made a copy for a demo the day before in a 3 1/2 inch floppy. I lost a day’s worth of work, but I was so relieved it didn’t matter.

I remember learning empirically how to create sprites. I have so much flicker since I didn’t know nor understood about double buffering, yet it was my first video game. A sprite moved, and you have to shoot it down. Spacebar fired the missile, and the pattern of the enemy was so predictable. Yet I showed to anyone who would peek in my room. Those days I would eat lunch next to my computer while I tinkered in basic. It took a very persistent mom to drag me to the outside world and get sunlight.

I also remember creating what could be the predecessor of music-typing. I remember learning the piano and sometimes not feeling the pattern the music sheet was telling me to play. So I created an actual graphic music sheet composer that would play on that single-tone speaker, it even have legattos, and “:” and tempo. It was the most complex piece of code I created… Once I typed the last command I didn’t save, went for lunch, and then got distracted. When I came back my sister has rebooted the computer (ok it wasn’t mine, it was a shared computer for the whole family), and I lost it all…

Those are the experiences that shape you…

I was so angry, for the whole of two hours. Fuming, thinking this is impossible, I can’t do it again. But then remembering the end-result that I achieved once. It was still there, hinting at the greatness that I enjoyed for 20 minutes. it was possible to do it again.

And I did.

It took almost 6 hours of continuous programming (my first hack-a-thon I guess). But it was greater than my original one…how couldn’t it be, I discovered what I was doing wrong in the first one, how to make things simpler. And I immediately saved three copies, and learned the one shortcut that I will always from then on take the time to learn. F5, Alt-F-S, and today Ctrl-S. I typed the longest song that I needed to play for my piano class. I showed to anyone with a pair of ears that would listen. How proud I was. It was me, it was the computer playing for me, what I told it to. I made it do that.

Is so different than today. I stayed next to my computer to create video games, while today most kids stay next to their computer to play them (I know, I’m about to say ‘getoffmylawn’).

Basic was my first love. The reason that I became a Computer Scientist, there was just no other way. Before that day I remember saying “I want to be an Architect”, or a “Mechanical Engineer”, a Business Owner, I played with Legos, played with the Atari, played the piano…but that Apple II C and Basic sealed my fate. I felt like a deity. A Puppet Master that could do anything I wanted. I can change things, and I learned how to change things. It was so intoxicating, so simple back then. There was no object orientation, no dependency inversion, no unit tests, no databases and ODBC drivers, no IDE, no shell, no design patterns, no mouse, no Path (or classpaths) no installers or configuration settings, nor registries, there was nothing but you and the pureness of the machine in front of you…

It’s been 26 years since my first line of code was written, and when I close my eyes I do miss Basic. A clueless girlfriend, always meaning well, but get tangled so quickly in those goto statements, and really didn’t have too much to work with. I remember when I dumped her for C++. Such a sleazy, sexy and screwed-up language. I guess a guy is always interested in bad (language) girls…

I find it funny how I settled for the down-to-earth Java spouse, C++ was really wrecking my life. Still my first love will always be there and be special to me.

Happy 50th Birthday BASIC.

Freddy

Episode 42. Oh Lambda, Lambda, Lambda (no Omega Muu)

Lambdas… You have heard about it, it’s like those celebrities that are everywhere (Tom Selleck). Well, is time to go and actually meet the great start. In this episode, me (Freddy) and Bob go deep into Lambdas, what they really are (are they magical?) and why would you want to use them. So Join in and let’s listen to the most awaited feature of Java 8!
(And yes, the title is a reference to the “Revenge of the Nerds”, how appropriate isn’t it 🙂
Oracle Lambda Tutorial

 

Episode 41. Ah, Java 8 (and what it brings) + Streams and OSGI

And we are ramping up again! This is an exciting time to be developing in Java. With the advent of Java 8, lambdas, streams, Jigzaw and the Internet of Things, we are coming back big! In this episode we introduce our co-host Bob Paulin, and offer a glimpse of Java 8, Jigsaw, Streams, and OSGI Standard.

 

Follow
Me
on
Twitter! (@fguime)
And @Bobpaulin

Ah, beer, it’s April, and we just finished taxes ($!)

Tweet, Tweet! (https://twitter.com/#!/fguime)

Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It’s the Java pub house after all 🙂 https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

 

Episode 40. Don’t you hate when static gives you an unexpected jolt? (Discussion on static methods,classes, and inner classes)

So you have programmed for a while, and may even never realized that you have been using them, but there are static methods (which in turn can create static classes), inner classes and static inner classes. Sometimes is hard to understand why or when to use these, but never fear! After listening to this episode you will never get an unexpected static surprise!

Follow
Me
on
Twitter! (@fguime) (thanks!)

It’s now cold, oh, how I wish for a beer? (Have any?) beer…beer…beeeeeer…..:)

Tweet, Tweet!(https://twitter.com/#!/fguime)

Vote for us in iTunes(http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8& amp;tag=meq-20&linkCode=as2&camp=1789&creative=390957& creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It’s the Java pub house after all 🙂 https://www.paypal.com/cgi-bin/webscr? cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Oh My Gosh, is that Aarun Gupta, Bruno Souza, Danno Ferrin, Hanz Dockter, Charles Nutter and Yoav Landman? Session Previews (and reviews) from JavaOne

So, here’s the deal, I went down from Chicago to JavaOne 2013, and took Bob Paulin along. There are sooo many sessions and such great content that it was really hard to know when to start. So we decided to do something cool! We set-up shop in the heart of JavaOne and grab unsuspecting speakers and ask them to spare a couple of minutes to tell us about their sessions (all awesomeness!).

And the good news is that Oracle will make all of the presentations referred in this talk (and much more) available for everyone! Take a listen and prepare to be amazed by the awesome presenters of JavaOne.
 – Aarun Gupta (@arungupta)
 – Bruno Souza (@brjavaman)
 – Danno Ferrin (@shemnon)
 – Hanz Dockter (@gradleware)
 – Charles Nutter (@headius)

 – Yoav Landman (@yoavlandman)

 

Episode 39. Do I really have to database it?

It happens all the time, you are working and suddenly you need to database an object. And maybe you have a fancy O/R Mapper or something like that, but we seldom ask ‘do we really need this in a relational format?’. There are actual alternatives (from byte serialization to xml, to, oh, my, NoSql databases). Here we explore the reasons why you may want to skip the Object Relational mapping and concentrate more on ease of development!

Follow
Me
on
Twitter! (@fguime) (thanks!)

Hey it’s Freaking HOT outside! beer…beer…beeeeeer…..:)

Tweet, Tweet! (https://twitter.com/#!/fguime)

Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It’s the Java pub house after all 🙂 https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

 

JUG Post: Ok, I have a meeting, and am worried about no-show, what to do?

So you are a Java User Group leader, and as you look forward to the schedule presentation a sinking feeling creeps up. “How many people are really going to show up?”, “Am I going to have pizza for everyone?”, “Will my sponsors be glad or mad?”

While not an exact science I went out and asked the Java Leader Community how did they deal with the problem. Here are some suggestions compiled from the list.

Why is it important?

Because I say so! Kidding!

The biggest issues are that there is food costs (that might need to be fronted by the group leadership), room costs and capacity (A meeting of 20 people might only need a whiteboard and some chairs, that will not work with a meeting of 100 people), and sponsorship agreements (‘Yes, every meeting we have 100 people coming! of course of course, um… these 20… are just the beginning, I’m sure they are just stuck in traffic or something…really….’)

Expect no-shows

The first part of planning your meeting is to expect people just to not show up. If the event is free, and is easy to register, one can conservatively prepare for a 70% attendance. If, for example only 60% shows up, then it really becomes only a 10% no-show instead of the original 40%.

Remind, remind, remind

A week before the meeting, send a reminder to your group about the event. Sometimes people seem to register and ‘forget’ about the event. As you get closer, send another reminder a day before the event. (Meetup allows this fairly easily).

If the Event is full, then ask for “help”

Another way to help control no-shows for completely full events is to send an email telling people to un-register if not attending. A special tip is to make the Subject message grab your attention, like  “We are full, please unregister if you aren’t coming”. That way the message doesn’t get lost in the member’s mailbox.
 

Overbook your event

Just like Airlines overbook their flights, you can overbook your meeting :). Plan for that 70% attendance, and allow registration for those extra seats.

Don’t announce the event too early

Today, the human race doesn’t plan further ahead than two weeks. If you announce the event too early, you’ll get people signing up when they really don’t know what their plans are. They tend to forget they signed-up for the event and will cross-schedule with something else. If you keep it within two weeks people will usually remember the meeting (and make newer plans accordingly)

Bargain on your Pizza

You have 100 people registered, and you want to control your no-show cost. Well, once you start placing order (like 10 pizzas), negotiate a good price. As an example Gray Herter can get Papa Johns to cough up specialty pizzas for 10$ each (they usually order 20). So if there is pizza wasted, at least is not as bad as paying full retail price.
You can try also calling ahead and giving a rough estimate of pizza you need, and as the event starts, call and confirm an actual number. It seems that some pizza places are flexible enough that this is not an issue.

Or don’t have Pizza but Books!

A trick from CEJUG is that they ask sponsors to give them books for their attendees. The promise of a book is much alluring than pizza and they love it (since all our members love anything Java), plus they get it to take something home.

Watch that weather channel, and topic

Bruno Souza shares that weather plays a role in the number of now-shows. He plans for a 50% attendance,
 – If it rains, he expects less people
 – If it’s an intro topic, he expects more people (seems like people dropout less often if the topic is introductory)
 – If it’s in a remote area (out in the woods), he expects more people (since Java presentations are not as frequent in remote areas, people tend to show up for the opportunity)

Charge!

The best way to really reduce no-show numbers reported is to charge for the event. Put the money where the registration is! Bruno reports that once you start paying your no-show percentage drops from 50% to 20%. For paid events he will still hand out free passes for speaker guests and/or sponsors (and for those free tickets he still expects 50% no shows)

It’s always about the community 🙂

Live happens, and while sometimes we wish things are always the way it seems to be, when it’s not we just have to juggle it. With these tips at least you avoid some of the (sometimes costly) mistakes we all went through and prepare better for your group and/or organization. Hope this helps! (it did for me!).
Special thanks to the Jug Leaders in no particular order (Hildeberto, Frank N, Csaba Toth, Linda van der Pal, Gray Herter, Carl Trusiak, Alexis Lopez, Bruno Souza) for the tips!
Freddy Guime
Chicago JUG Community Leader

Episode 38. Hyperthreading, L1/L2 caching, cache busting, thread trashing, and priority bumping!

So we hear about HyperThreading and how it is sooo cool, well, it is and it isn’t. If you are really trying to squeeze performance out of your application HyperThreading might not be what you’re looking for. There are so many other things that happens at the CPU level that have so weird names (like Thread Thrashing, ‘say whaaaat?’). If you are really serious on squeezing every worthy CPU cycle of your app (or if you’re interesting on what really really goes under the hood) take a listen! (ah! and treat me a beer, if you like what you hear!)

Follow
Me
on
Twitter! (@fguime) (thanks!)

Hey it’s ALMOST SUMMER! and I would love to get a beer 🙂

Tweet, Tweet! (https://twitter.com/#!/fguime)

 

Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It’s the Java pub house after all 🙂 https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

Episode 37. Of Bits and Masks and Bytes and Trees and Games

Have you ever wonder how bit masking work (or what is that?) and why do you need it? Or why a tree structure exists? (or what is breadth first vs depth first), or what are game trees? We put our Computer Science hat and go “depth first” in some fundamental compsci concepts, and, more importantly their utility, ending with Game trees (and they are not only used for games)!

Follow
Me
on
Twitter! (@fguime) (thanks!)

Hey it’s SPRING! and I would love to get a beer 🙂

Tweet, Tweet! (https://twitter.com/#!/fguime)

Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It’s the Java pub house after all 🙂 https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4

 

Episode 36. An Intro to Multithreading Programming

This is a presentation I did for the Chicago Java Users Group on the topic of multithreading. There are some solid foundations in here to start tackling multithreading programming. Some of it might’ve been already been seen in depth from our other episodes, but in all, it has good foundations for anyone that does multithreading programming.

Follow
Me
on
Twitter! (@fguime) (thanks!)

Hey it’s winter (and not too many reasons to be outside, so might as well stay home and drink a few!) If you like what you hear, treat me a beer ! 🙂 (It’s the Java pub house after all 🙂

Tweet, Tweet! (https://twitter.com/#!/fguime)

Vote for us in iTunes (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Questions, feedback or comments! comments@javapubhouse.com

Subscribe to our podcast! (http://javapubhouse.libsyn.com/rss)
ITunes link (http://itunes.apple.com/us/podcast/java-pub-house/id467641329)
Java 7 Recipes book! (http://www.amazon.com/gp/product/1430240563/ref=as_li_ss_il?ie=UTF8&tag=meq-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=1430240563)
Hey! if you like what you hear, treat me a beer! (It’s the Java pub house after all 🙂 https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Z8V2ZWV93UMW4