5 Things Only Experienced Developers Can Teach You About Java | Takipi Blog

2. Understanding the Debugging ProcessOnce your code is out and in the wild, or at least running on your development environment, it’s time to see if it actually works. The debugging process itself is pretty basic, but in order to make it even more helpful you need to focus on your logs.There are different levels to choose from:

Trace – Most detailed information

Debug – Detailed messages that are written to the log

Info – Runtime events that are visible on your console

Warning – Message about potential problems

Error – Unexpected conditions

Fatal – Severe errors

Source: 5 Things Only Experienced Developers Can Teach You About Java | Takipi Blog

In a bind 2016 09 28

It’s another one of those days. I am so irked by a metaphysical angst on what is happening in my country.
A part of me just wants to stand up and leave. This is so fucked up.

In a bind 2016 09 28

It’s another one of those days. I am so irked by a metaphysical angst on what is happening in my country.
A part of me just wants to stand up and leave. This is so fucked up.

In a bind 2016 09 28

It’s another one of those days. I am so irked by a metaphysical angst on what is happening in my country.
A part of me just wants to stand up and leave. This is so fucked up.

MobaXterm

The ultimate toolbox for remote computing – includes X server, enhanced SSH client and much more!

Source: MobaXterm

 

MobaXterm X server and SSH client

MobaXterm is your ultimate toolbox for remote computing. In a single Windows application, it provides loads of functions that are tailored for programmers, webmasters, IT administrators and pretty much all users who need to handle their remote jobs in a more simple fashion.
MobaXterm provides all the important remote network tools(SSH, X11, RDP, VNC, FTP, MOSH, …) and Unix commands(bash, ls, cat, sed, grep, awk, rsync, …) to Windows desktop, in a single portable exe file which works out of the box. More info on supported network protocols
There are many advantages of having an All-In-One network application for your remote tasks, e.g. when you use SSH to connect to a remote server, a graphical SFTP browser will automatically pop up in order to directly edit your remote files. Your remote applications will also display seamlessly on your Windows desktop using the embedded X server. See demo
You can download and use MobaXterm Home Edition for free. If you want to use it inside your company, you should consider subscribing to MobaXterm Professional Edition: this will give you access to much more features, professional support and “Customizer” software. Features comparison
When developing MobaXterm, we focused on a simple aim: proposing an intuitive user interface in order for you toefficiently access remote servers through different networks or systems. Screenshots

I was introduced to this by the technical manager of one of our clients and I love it.
Doing a lot of remote stuff. My main computers are an ubuntu server and a windows server both hosted in google cloud platform.
 
Have no problem connecting through RDP to my windows desktop in the cloud while it is a pain connecting from windows to the ubuntu server.
Mobaxterm kind of helps ease this pain.
 
Props to the developers.

There is a belief that 80% of all jobs never get advertised. I’ve seen alternate numbers nearer 40%. The proportion varies by seniority and salary – and the higher either of those go, the more likely the next step is a headhunter. They might start with the names on their books, but they will likely also use LinkedIn.
LinkedIn recruiter is like a Google Maps of a recruitment consultancy’s personal knowledge and network.
HR or the headhunter may finally resort to a job posting. However, only process orientated organizations publish all their vacancies online. As you can see, in theory LinkedIn is second only to a personal referral. A personal referral has a one in three chance of getting you an interview. Depending on the competition, applying blind is more like one in thirty.

Love reading this blog.

.

Direct marketing lessons from someone who built a $100+ million business – GrowthLab

Hope to apply this one day when my product is built.

40 percent of success is determined by the list – Are you targeting the right people?The next 40 percent is in the offer – Are the price and terms right?The final 20 lies in the creative – How good is the messaging in your sales letter?

Source: Direct marketing lessons from someone who built a $100+ million business – GrowthLab

Top 10 reasons why your Enterprise Java Application is slow

This is a gem of a blog post. Very instructive and useful.
Most of what is says can be considered common knowledge but by being concisely written and with relevant examples it turns something superfluous to useful.

Top 10 reasons why your Enterprise Java Application is slowby KARUN SUBRAMANIAN on JULY 27, 2014Let’s face it. Nobody likes a slow application. It is our job to make sure our applications  fulfill the functionality need completely, but at the same time delivers good user experience.In 16 years of my experience in technical support primarily in the world of JEE, while I cannot honestly say ‘I have seen it all’, I can say “I have seen a lot“. Here are the top 10 reasons why your Java application may slow.Note that this list is NOT ordered in anyway, meaning reason 1 is not always the most popular reason for the slowness. These are all equally critical issues that can cause your application to crawl.

Source: Top 10 reasons why your Enterprise Java Application is slow
 
 
 
1. There is a sudden spike in the ‘Load’ that you did not notice
This is especially true when your application processes requests from external entities (for example, a financial institution processing batch updates from a data provider). Since you cannot really control (for the most part) what others might send, you can suffer a surge in incoming requests and hence your application can slow down.
How can you monitor?
You must monitor the ‘throughput’ of the application (specifically, number of requests/minute). You will most probably need a commercial APM (Application Performance Management) tool to monitor this reliably. If you don’t have an APM solution implemented (why ?), try to come up with some home grown script/program that can monitor this. For one or my clients, I had to write a program that performed a ‘row count’ of a Database table that stored the ‘processed orders’. I had to run this program through a scheduler (cron) periodically and send an alert email if the number of processed records crossed a threshold.
2. There is a poorly responding backend system
Your application may talk to one or more backend systems other than a Database. Perhaps it talks to an external system using a Web Service call. Perhaps it sends a WebSphere MQ message to aremote Queue Manager (that in turn routes the message to an external system to get a response). If any of these external systems respond poorly (or even stop completely), your application will suffer.
How can you monitor?
You must monitor the response time of the external systems experienced by your application. A periodic synthetic transaction might help (if feasible). If you log the response times in a log file, you could monitor the particular entry in the log file. But the best bet would be to use an APM solution and instrument the specific method that makes the external call. Tools such as AppDynamics and CA Wily Introscope (among many others) can automatically detect the backends and reveal the response times.
3. Your database calls are taking for ever
This is a big one. It is possible that the sql queries (or Stored procedures) that originate from your application run extremely slow at the Database Server. This could be due to the following reasons:
a. Database Server is running our System resources such as CPU, Memory etc,
b. A Block in the Database
c. Missing index in the database, 
d. Your query really runs slow (perhaps you are missing a ‘where’ clause). In this case, work with a DBA to tune the query/SP.
How can you monitor ?
To some extent, monitoring from the DB side should help i.e the DBAs should have monitoring for things like long running queries, blocks, deadlocks etc. From application’s perspective, you must monitor the JDBC response times experienced by your application. You can either log this information in log file (expensive and not recommended) or use an APM tool. New generation APM tools like Dynatrace (among many others) can reveal slow running JDBC calls including the actual SQL query or stored procedure.
4. You are running out Database connections
This is another big one. Typically 50 JDBC connections per JVM should be more than enough. But it greatly depends on the Application. They key is to make sure you are not maxing out of DB connections. When you max out the DB Connection Pool, your requests are going to wait for an available connection which results in painful slow response time. The reason why you are maxing out of the DB connections should be found out. It could be that you are NOT closing the DB connections properly.
How can you monitor?
If your application server has JMX console, Connection pools can be monitored via the MBeans, but it can be a painful process. You can also write your own Java program (JMX client) to connect and retrieve values from the Mbeans. Easy way is to install a commercial APM tool
jmx
Image from wiki
5. You are running out of Threads
Work enters to your application via a Thread. You only have limited number of Threads to process incoming requests (limited by the Thread Pool). When you exhaust all the available threads in the Thread pool, subsequent requests go into ‘wait’ state, waiting for an available thread – painful wait time. The reason why you are running of out thread should be investigated. It could be because of a poorly performing backend or a slow DB response time.
How can you monitor?
If your application server has JMX console, Thread pools can be monitored via the MBeans, but it can be a painful process. You can also write your own Java program (JMX client) to connect and retrieve values from the Mbeans. Easy way is to install a commercial APM tool. Some Application Server consoles (such as IBM Websphere application server) have built in monitoring dashboards as part of the Admin console. But it can be extremely slow and not very flexible.
6. The Server hosting your application is running slow or running out of resources
Yes, even with Cloud and dynamically expandable hardware, the fact is hardware is not unlimited. When the CPU hits 100% in your host Server, your application is going to suffer. With shared hardware in most enterprises, it is possible that some other application is chewing up all the CPU and your application just becomes a victim.
How can you Monitor?
Operating system level monitoring tools will help. Tools like Nagios can help monitor the infrastructure effectively.
7. Super excessive logging in your Application
Logging is expensive, in terms of resource usage. While debug logging will help in certain situations, in production environments, keep the logging to a minimum level (perhaps ‘INFO’ or ‘WARN’ log4j levels). An additional side effect of excessive logging is Disk drives filling up (which can have its own consequences). One of my clients was logging every single sql statement generated by the application (Hibernate verbose logging) and the application was generating 500 MB log file every day. While the performance impact was not too bad in this case, it created disk space issue until I disabled the verbose logging.
How can you monitor ?
Periodically check your Application log files (JVM system out and system error). If you notice unnecessary noise, get rid of those logging entries. Checkout logstash.
8. Garbage collection overhead
This is a critical performance area for any Java application. If you are running of Java Heap, the JVM will initiate GC to keep up with the memory demand. GC tuning is a separate and exhaustive topic by itself. Short story is GC will consume resources and excessive GC overhead will slow down your application. Pay attention to the Minimum (-Xms) and Maximum (-Xmx) Heap size values in the Java command line options.
How can you monitor?
Enable verbose GC logging and watch the log file. You enable verbose GC logging with the options -verbose:gc -XX:+PrintGCDetails XX:+PrintGCTimeStamps.
Once the logs are collected, you can either eyeball it or use a tool like “IBM Pattern Modeling and Analysis Tool for Java Garbage Collector”
gc
Image from ibm.com
9. Third party jar files that you have included in your application is buggy
It is not uncommon to use third party jar files to use certain functionality for your application. However care must be taken to ensure there are no performance implications. Even if the jar is reliable and proven (such as spring.jar), there may be issues when you upgrade the spring version without analyzing the release notes etc. Perhaps you may be using the API in a certain way that changed with the newer release of spring. I have seen third party jars causing severe memory leak. I have also seen a rules engine (that was integrated into my client’s JEE Application) that ran into ‘infinite loop’ issue causing the entire application to slow down.
How can you monitor?
This can be trick to monitor. There is no bullet proof way to monitor just one jar file/plugin unless your application specifically uses the thrid part jar for certain specific transactions, in which case you can use an APM tool to instrument montioring for just that particular method. Even then, you won’t know if it is your code or the third part jar that is creating the issue. Through analysis is required to troubleshoot such issue.
10. Poor Application Architecture
No matter how much tuning you put in your code, application server and database servers, if the Architecture is flawed, your application will be slow. For example,
a. Even when not required, using ‘persistent’ messages with JMS.
b. Storing more than necessary data in a HTTP  ‘Session’ increasing its size
c. Not using (or using misconfigured) caching solution
Application architecture is a vast subject and scores of books have been written on this subject. Study carefully.
How can you monitor?
There is no specific monitoring to be done to monitor design flaws. Design issues will be revealed when you thoroughly analyze the problem and the available monitoring data.
There you have it. Application performance tuning starts from the design stage. There are various reasons your application could be slow. You must be diligent to monitor as much relevant metrics you can about your application and act promptly to avoid customer impact. Investing in a good quality APM solution adds heaps (no pun intended) of ammunition to your weapons in the battle of performance monitoring.
Good luck.

SOME THOUGHTS ON THE REAL WORLD BY ONE WHO GLIMPSED IT AND FLED Bill Watterson Kenyon College Commencement May 20, 1990

SOME THOUGHTS ON THE REAL WORLD BY ONE WHO GLIMPSED IT AND FLED
Bill Watterson
Kenyon College Commencement
May 20, 1990
I have a recurring dream about Kenyon. In it, I’m walking to the post office on the way to my first class at the start of the school year. Suddenly it occurs to me that I don’t have my schedule memorized, and I’m not sure which classes I’m taking, or where exactly I’m supposed to be going.
As I walk up the steps to the postoffice, I realize I don’t have my box key, and in fact, I can’t remember what my box number is. I’m certain that everyone I know has written me a letter, but I can’t get them. I get more flustered and annoyed by the minute. I head back to Middle Path, racking my brains and asking myself, “How many more years until I graduate? …Wait, didn’t I graduate already?? How old AM I?” Then I wake up.
Experience is food for the brain. And four years at Kenyon is a rich meal. I suppose it should be no surprise that your brains will probably burp up Kenyon for a long time. And I think the reason I keep having the dream is because its central image is a metaphor for a good part of life: that is, not knowing where you’re going or what you’re doing.
I graduated exactly ten years ago. That doesn’t give me a great deal of experience to speak from, but I’m emboldened by the fact that I can’t remember a bit of MY commencement, and I trust that in half an hour, you won’t remember of yours either.
In the middle of my sophomore year at Kenyon, I decided to paint a copy of Michelangelo’s “Creation of Adam” from the Sistine Chapel on the ceiling of my dorm room. By standing on a chair, I could reach the ceiling, and I taped off a section, made a grid, and started to copy the picture from my art history book.
Working with your arm over your head is hard work, so a few of my more ingenious friends rigged up a scaffold for me by stacking two chairs on my bed, and laying the table from the hall lounge across the chairs and over to the top of my closet. By climbing up onto my bed and up the chairs, I could hoist myself onto the table, and lie in relative comfort two feet under my painting. My roommate would then hand up my paints, and I could work for several hours at a stretch.
The picture took me months to do, and in fact, I didn’t finish the work until very near the end of the school year. I wasn’t much of a painter then, but what the work lacked in color sense and technical flourish, it gained in the incongruity of having a High Renaissance masterpiece in a college dorm that had the unmistakable odor of old beer cans and older laundry.
The painting lent an air of cosmic grandeur to my room, and it seemed to put life into a larger perspective. Those boring, flowery English poets didn’t seem quite so important, when right above my head God was transmitting the spark of life to man.
My friends and I liked the finished painting so much in fact, that we decided I should ask permission to do it. As you might expect, the housing director was curious to know why I wanted to paint this elaborate picture on my ceiling a few weeks before school let out. Well, you don’t get to be a sophomore at Kenyon without learning how to fabricate ideas you never had, but I guess it was obvious that my idea was being proposed retroactively. It ended up that I was allowed to paint the picture, so long as I painted over it and returned the ceiling to normal at the end of the year. And that’s what I did.
Despite the futility of the whole episode, my fondest memories of college are times like these, where things were done out of some inexplicable inner imperative, rather than because the work was demanded. Clearly, I never spent as much time or work on any authorized art project, or any poli sci paper, as I spent on this one act of vandalism.
It’s surprising how hard we’ll work when the work is done just for ourselves. And with all due respect to John Stuart Mill, maybe utilitarianism is overrated. If I’ve learned one thing from being a cartoonist, it’s how important playing is to creativity and happiness. My job is essentially to come up with 365 ideas a year.
If you ever want to find out just how uninteresting you really are, get a job where the quality and frequency of your thoughts determine your livelihood. I’ve found that the only way I can keep writing every day, year after year, is to let my mind wander into new territories. To do that, I’ve had to cultivate a kind of mental playfulness.
We’re not really taught how to recreate constructively. We need to do more than find diversions; we need to restore and expand ourselves. Our idea of relaxing is all too often to plop down in front of the television set and let its pandering idiocy liquefy our brains. Shutting off the thought process is not rejuvenating; the mind is like a car battery-it recharges by running.
You may be surprised to find how quickly daily routine and the demands of “just getting by: absorb your waking hours. You may be surprised matters of habit rather than thought and inquiry. You may be surprised to find how quickly you start to see your life in terms of other people’s expectations rather than issues. You may be surprised to find out how quickly reading a good book sounds like a luxury.
At school, new ideas are thrust at you every day. Out in the world, you’ll have to find the inner motivation to search for new ideas on your own. With any luck at all, you’ll never need to take an idea and squeeze a punchline out of it, but as bright, creative people, you’ll be called upon to generate ideas and solutions all your lives. Letting your mind play is the best way to solve problems.
For me, it’s been liberating to put myself in the mind of a fictitious six year-old each day, and rediscover my own curiosity. I’ve been amazed at how one ideas leads to others if I allow my mind to play and wander. I know a lot about dinosaurs now, and the information has helped me out of quite a few deadlines.
A playful mind is inquisitive, and learning is fun. If you indulge your natural curiosity and retain a sense of fun in new experience, I think you’ll find it functions as a sort of shock absorber for the bumpy road ahead.
So, what’s it like in the real world? Well, the food is better, but beyond that, I don’t recommend it.
I don’t look back on my first few years out of school with much affection, and if I could have talked to you six months ago, I’d have encouraged you all to flunk some classes and postpone this moment as long as possible. But now it’s too late.
Unfortunately, that was all the advice I really had. When I was sitting where you are, I was one of the lucky few who had a cushy job waiting for me. I’d drawn political cartoons for the Collegian for four years, and the Cincinnati Post had hired me as an editorial cartoonist. All my friends were either dreading the infamous first year of law school, or despondent about their chances of convincing anyone that a history degree had any real application outside of academia.
Boy, was I smug.
As it turned out, my editor instantly regretted his decision to hire me. By the end of the summer, I’d been given notice; by the beginning of winter, I was in an unemployment line; and by the end of my first year away from Kenyon, I was broke and living with my parents again. You can imagine how upset my dad was when he learned that Kenyon doesn’t give refunds.
Watching my career explode on the lauchpad caused some soul searching. I eventually admitted that I didn’t have what it takes to be a good political cartoonist, that is, an interest in politics, and I returned to my firs love, comic strips.
For years I got nothing but rejection letters, and I was forced to accept a real job.
A REAL job is a job you hate. I designed car ads and grocery ads in the windowless basement of a convenience store, and I hated every single minute of the 4-1/2 million minutes I worked there. My fellow prisoners at work were basically concerned about how to punch the time clock at the perfect second where they would earn another 20 cents without doing any work for it.
It was incredible: after every break, the entire staff would stand around in the garage where the time clock was, and wait for that last click. And after my used car needed the head gasket replaced twice, I waited in the garage too.
It’s funny how at Kenyon, you take for granted that the people around you think about more than the last episode of Dynasty. I guess that’s what it means to be in an ivory tower.
Anyway, after a few months at this job, I was starved for some life of the mind that, during my lunch break, I used to read those poli sci books that I’d somehow never quite finished when I was here. Some of those books were actually kind of interesting. It was a rude shock to see just how empty and robotic life can be when you don’t care about what you’re doing, and the only reason you’re there is to pay the bills.
Thoreau said,

“the mass of men lead lives of quiet desperation.”

That’s one of those dumb cocktail quotations that will strike fear in your heart as you get older. Actually, I was leading a life of loud desperation.
When it seemed I would be writing about “Midnite Madness Sale-abrations” for the rest of my life, a friend used to console me that cream always rises to the top. I used to think, so do people who throw themselves into the sea.
I tell you all this because it’s worth recognizing that there is no such thing as an overnight success. You will do well to cultivate the resources in yourself that bring you happiness outside of success or failure. The truth is, most of us discover where we are headed when we arrive. At that time, we turn around and say, yes, this is obviously where I was going all along. It’s a good idea to try to enjoy the scenery on the detours, because you’ll probably take a few.
I still haven’t drawn the strip as long as it took me to get the job. To endure five years of rejection to get a job requires either a faith in oneself that borders on delusion, or a love of the work. I loved the work.
Drawing comic strips for five years without pay drove home the point that the fun of cartooning wasn’t in the money; it was in the work. This turned out to be an important realization when my break finally came.
Like many people, I found that what I was chasing wasn’t what I caught. I’ve wanted to be a cartoonist since I was old enough to read cartoons, and I never really thought about cartoons as being a business. It never occurred to me that a comic strip I created would be at the mercy of a bloodsucking corporate parasite called a syndicate, and that I’d be faced with countless ethical decisions masquerading as simple business decisions.
To make a business decision, you don’t need much philosophy; all you need is greed, and maybe a little knowledge of how the game works.
As my comic strip became popular, the pressure to capitalize on that popularity increased to the point where I was spending almost as much time screaming at executives as drawing. Cartoon merchandising is a $12 billion dollar a year industry and the syndicate understandably wanted a piece of that pie. But the more I though about what they wanted to do with my creation, the more inconsistent it seemed with the reasons I draw cartoons.
Selling out is usually more a matter of buying in. Sell out, and you’re really buying into someone else’s system of values, rules and rewards.
The so-called “opportunity” I faced would have meant giving up my individual voice for that of a money-grubbing corporation. It would have meant my purpose in writing was to sell things, not say things. My pride in craft would be sacrificed to the efficiency of mass production and the work of assistants. Authorship would become committee decision. Creativity would become work for pay. Art would turn into commerce. In short, money was supposed to supply all the meaning I’d need.
What the syndicate wanted to do, in other words, was turn my comic strip into everything calculated, empty and robotic that I hated about my old job. They would turn my characters into television hucksters and T-shirt sloganeers and deprive me of characters that actually expressed my own thoughts.
On those terms, I found the offer easy to refuse. Unfortunately, the syndicate also found my refusal easy to refuse, and we’ve been fighting for over three years now. Such is American business, I guess, where the desire for obscene profit mutes any discussion of conscience.
You will find your own ethical dilemmas in all parts of your lives, both personal and professional. We all have different desires and needs, but if we don’t discover what we want from ourselves and what we stand for, we will live passively and unfulfilled. Sooner or later, we are all asked to compromise ourselves and the things we care about. We define ourselves by our actions. With each decision, we tell ourselves and the world who we are. Think about what you want out of this life, and recognize that there are many kinds of success.
Many of you will be going on to law school, business school, medical school, or other graduate work, and you can expect the kind of starting salary that, with luck, will allow you to pay off your own tuition debts within your own lifetime.
But having an enviable career is one thing, and being a happy person is another.
Creating a life that reflects your values and satisfies your soul is a rare achievement. In a culture that relentlessly promotes avarice and excess as the good life, a person happy doing his own work is usually considered an eccentric, if not a subversive. Ambition is only understood if it’s to rise to the top of some imaginary ladder of success. Someone who takes an undemanding job because it affords him the time to pursue other interests and activities is considered a flake. A person who abandons a career in order to stay home and raise children is considered not to be living up to his potential-as if a job title and salary are the sole measure of human worth.
You’ll be told in a hundred ways, some subtle and some not, to keep climbing, and never be satisfied with where you are, who you are, and what you’re doing. There are a million ways to sell yourself out, and I guarantee you’ll hear about them.
To invent your own life’s meaning is not easy, but it’s still allowed, and I think you’ll be happier for the trouble.
Reading those turgid philosophers here in these remote stone buildings may not get you a job, but if those books have forced you to ask yourself questions about what makes life truthful, purposeful, meaningful, and redeeming, you have the Swiss Army Knife of mental tools, and it’s going to come in handy all the time.
I think you’ll find that Kenyon touched a deep part of you. These have been formative years. Chances are, at least of your roommates has taught you everything ugly about human nature you ever wanted to know.
With luck, you’ve also had a class that transmitted a spark of insight or interest you’d never had before. Cultivate that interest, and you may find a deeper meaning in your life that feeds your soul and spirit. Your preparation for the real world is not in the answers you’ve learned, but in the questions you’ve learned how to ask yourself.
Graduating from Kenyon, I suspect you’ll find yourselves quite well prepared indeed.
I wish you all fulfillment and happiness. Congratulations on your achievement.
Bill Watterson

PS: Link rot is real. Most of the articles i’ve linked to during onthe8spot’s first years are dead. So sad. Doing this to save stuff.