Posts

Showing posts from 2015

Java GC startup args

-XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime

Cleanup all target sub-directories

find . -name target -exec rm -rf {} \;

Bash commands

Bash Commands

Large Sets and Maps

Trove My test results for HashSet on Java 8 1M THashSets with 10 2 char strings each 620 MB 1M HashSets with 10 2 char strings each 955 MB 54% larger than Trove THashSet

VNC to Ubuntu fails with No supported authentication methods

See solution here sudo apt-get -y install dconf-tools dconf write /org/gnome/desktop/remote-access/require-encryption false /usr/lib/vino/vino-server --sm-disable start The last command did not execute, but the fix worked

AWS Scale

AWS Innovation at Scale AWS RDS Aurora MySQL Redshift $1K/TB/yr

Memristor

The Machine HP Talk November 1014 HP's datacenter scale computer How will memristors change everything Finding the Missing Memristor talk GUPS - giga-updates per second TEPS - traversed edges per second

Numbers Everyone Should Know

Numbers Everyone Should Know Sharded Counters How to efficiently index and page through comments

Composing and Scaling Data Platforms

Elements Of Scale: Composing And Scaling Data Platforms

Lambda Architecture

Lambda Architecture LinkedIn Lambda alternative using kafka  - Kappa Architecture

Microservices

Argument against microservices Microservies allow: small teams to focus on a set of related functionality and to be more agile independent parts of the system to scale independently using the right tool (language, persistence, framework, etc.) for the right job. It is generally understood that decomposition into microservies should not occur prematurely before there is thorough understanding of the ideal boundaries. The service should be coarse grained. There is overhead and distributed system complexity, however that exists in virtually any web and/or non-trivial system.

Create Java Executables with JRE included

Launch4j

Windows OS Downloads

You will need a key

Ubuntu boot order

If your BIOS does not allow to change the boot order, change the default boot entry of the Windows bootloader. For example you can boot into Windows, then type the following command in an admin command prompt: bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi

Fault Tolerance in High Volume Distributed Systems

Netflix Blog DependencyCommand wraps network bound commands has fallback logic executes in separate thread pools uses try/acquire has timeouts latency feeds back to circuit breakers

Avoid versioning by creating Tolerant Consumers

From microservices by Martin Fowler: ... preference in the microservice world is to  only use versioning as a last resort . We can avoid a lot of versioning by designing services to be as tolerant as possible to changes in their suppliers. Versioning by Martin Fowler

Virtualbox not displaying 64 bit options

Virtualbox not displaying 64 bit options

Web Testing

Ghost Inspector  - record and set assertions in chrome, then schedule automatic periodic testing Selenium phantomjs casperjs HP QTP

A/B/N Testing or Split-test

Image
EXP-platform "Data Trumps Intuition"  " significant learning and return-on-investment (ROI) are seen when development teams listen to their customers, not to the Highest Paid Person’s Opinion (HiPPO)​",  ACM video presentation about Amazon and Microsoft controlled experiments  -  startling results that were very surprising .​ Political and economic environment can dramatically affect results, necessary to use A/B/N testing. Approximately 1% drop in revenue per 100mS increase in page load time. Become data-driven, automate, implement abort mechanism. Newer AB testing video , lots of new information. Use A/A tests OEC - Overall Evaluation Criteria #1 Customer Lifetime Value - not always simple or obvious which to choose Return visits Revenue Conversion Click-through - is something else being cannibalized? Time on site Search optimization Twyman's Law - Any figure that looks interesting or different is usually wrong Doug Hubbard's How to Me

Windows 7 NTFS filesystem 10-50x slower then linux/ext4

Comparisons and recommendations for improving perforance

Windows Waltz

Window Waltz

Stored Procedures

Advantages and Drawbacks or using Stored Procedures Best Practices Checklist Bad/Best Practices

Intel Tick-Tock Processor Development

Intel Tick-Tock Processor Development Processors 2014/15

Moving from AWS to Real Hardware

Possibly More predictable Less failure Lower cost Less agility How and Why Swiftype Moved from EC2 to Real Hardware

MS SQL monitoring

Lock Monitoring

Simple Made Easy

Don't complect and entangle code Simplicity is the ultimate sophistication. - Leonardo da Vinci

Netflix Open Source

Netflix Open Source projects

Collective Leadership

TED Talk - Unlocking Collective Genius

Could development environment

cloud9.io

ThingWorx bought by PTC for ~30x revenue

ThingWorx had ~3.5 M revenue and was bought by PTC for 112 M or ~30x revenue Axeda had ~30 M revenue and was bought by PTC for ~170 M or ~6 x revenue Rick Bullotta apparently ticked off the PTC executives when he publically spoke about the price the pulled out of the air.

Productivity

5 Ways to Instantly Become More Productive Don't multi-task, focus on one task as a time until complete if practical Turn off notifications - except emergency communication, setup and socialize urgent communication channels Check email and IM periodically Handle email, IM, etc once and complete any action to be done with them if practical Prioritize Declutter  / organize

Code Reviews

Code Review == Code Smell Facebook uses karma points, everyone starts with 4 karma points, if your checkin breaks things you lose half a karma point, if you drop below 3 karma points, you are scrutinized and have barriers to checkins Paired programming is continuous code review and multiple individuals know the code

Paired Programming

Braintree - paired programming is part of the culture When is paired programming not productive Private offices are more productive  - Joel Spolsky Group Brainstorming does not improve productivity or creativity Microsoft and Fog Creek Software - Joel Spolsky has private developer offices so developers won't be interrupted by every phone call and conversation and can stay in the flow/zone and concentrate without interruption. When I worked for TeleAtlas we briefly TDD pair programmed continuously around the globe. We had developers on the project spread across enough time-zones that we kept a single development going 24x7 with various devs joining and leaving with their time-zone work hours. We sometimes even had more than two devs pairing simultaneously too. It was a beautiful thing. We ran the IDE on a high powered central development system in the data-center and all developers used VNC to connect to the session. This avoided the issues of hosting on a particular r

Traversing security, remote access

Hack from the inside out

DoS, DDoS

Introduction DoS or Denial of Service attacks effectively make service unavailable for legitimate use. DoS come in two flavors - DoS and DDoS (Distributed DoS). DoS occurs from a single server and DDoS is a coordinated attack by many servers simultaneously. DoS may originate externally or be non-maliciously self-inflicted due to accidental bugs or mis-configuration. Some examples of how big and simple they are to accomplish. Reasons for DoS There are many possible reasons for being the target of a DoS attack. The reasons below were derived from research found  here  and  here . Self-inflicted - bug or misconfiguration (non-malicious) Random target or  Prestige - challenge, bragging rights for hacker or group Politics - anti-capitalism, anti-american Training ground - experiment, training for other attacks Punishment for undesired action - disgruntled customer, employee, vendor, partner, etc. Anti-competitive business practice Ideological conflicts or Principle Driven -

VBox convert vmdk to vdi, resize, and grow win7 disk

stackoverflow create a new ext4 partition in gparted create a mount point for the new partition sudo mkdir /media/win7ssd sudo chown troy:troy /media/win7ssd sudo chmod 700 /media/win7ssd mount the partition sudo vi /etc/fstab      /dev/sdb3 /media/win7ssd ext4 defaults 1 2 sudo mount -a Convert and resize the existing vmdk sudo VBoxManage clonehd "/media/win7/Win7-disk1.vmdk" "/media/win7ssd/Win7-disk1.vdi" --format vdi sudo VBoxManage modifyhd "/media/win7ssd/Win7-disk1.vdi" --resize 40000 update the ownership and permissions sudo chown -R troy:troy /media/win7ssd sudo chmod -R 700 /media/win7ssd In virtualbox replicate the configuration but use the new disk

Test Frameworks

Lists of frameworks by language BDD Cucumber DBunit - JUnit extension for database driven programs

Documentation

Why You Shouldn't Comment (or Document) Code Doxygen

Undertow

Undertow is a Vertx like server sponsored by JBoss, foundation for JBoss AS 8 WildFly written in java, providing both blocking and non-blocking API’s based on NIO. Lightweight < 1MB jar < 4 MB of heap HTTP Upgrade Support Web Socket Support Servlet 3.1 Embeddable

Metrics, Monitoring, and Graphing Dashboards

Icinga  / Incinga2 - open source enterprise monitoring and notification Graphite  - highly scalable real-time graphing system Graphana  - rich graphing, dashboards, templates Sensu Ganglia Prometheus Icinga 2 contains an built-in implementation of performance graphing via add-ons such as PNP4Nagios, NagiosGrapher, InGraph, Graphite and Grafana. There is a module to  integrate Icingaweb2 and Graphite . collectd statsd Splunk Hosted Solutions AppNeta New Relic

Application Metrics

Dropwizard codahale Metrics     MetricRegistry metricRegistry = new MetricRegistry();     ConsoleReporter reporter =         ConsoleReporter.forRegistry(metricRegistry).convertRatesTo(TimeUnit.SECONDS)             .convertDurationsTo(TimeUnit.MILLISECONDS).build();     reporter.start(1, TimeUnit.SECONDS);      Counter c = metricRegistry.counter("foo"); //counter      c.inc();          Histogram h = metricRegistry.histogram("foo"); //distribution      h.update(200);          Meter m = metricRegistry.meter("foo"); //throughput      m.mark();      m.mark(200);          Timer t = metricRegistry.timer("foo"); //times an event      Timer.Context ctx = t.time();      ctx.stop(); Typical ConsoleReporter output: 2/12/15 8:34:21 PM ============================================================= -- Counters -------------------------------------------------------------------- hlr.assetsOnDupeShards-Advisory              count =

Dev Ops

FaceBook process and tools FaceBook release process Flickr/Yahoo DevOps IBM DevOps for Dummies 9 Must have tools for DevOps toolchain

Software Architecture

Software Architectures Event Driven Architecture (EDA)  - Java Swing is EDA Service Oriented Architecture (SOA) Resource Oriented Architecture (ROA)  - REST Pipeline Architecture  - pipes and filters Architecture Patterns Enterprise Architecture Patterns Application Architecture Patterns Integration Patterns Design Patterns GRASP (object-oriented design) Anti-patterns

Code Quality Metrics

From 97 Things Every Software Architect Should Know  #28 load the output from checkstyle , which is essentially a set of metrics on the class and method level, into a spreadsheet to render charts. The same metrics could also be shown as a tree-map using the InfoViz toolkit. A great tool to render complex dependency graphs is GraphViz. TreeMap visualization CheckStyle Eclipse plug-ing

Requirements Analysis

Request value of requirements/features, aides prioritization and identifying alternatives Discuss and document customer's why Document gestures per task and max time per task: user productivity Avoid discussing solution/how as it moves conversation from customer's domain to developer's  Fast, responsive, and extensible are not requirements because they aren't quantifiable Criteria are objective with thresholds Non-functional requirements like performance should be specified early and tested and tracked early (baselined) and throughout the project Clarify and Document Constraints Clarify, Document, Reduce and Manage Scope Prioritize and build most important features first Divide and conquer - breakup, parallelize, and design/implement smaller features whenever possible Document and track risks, i.e., the same as bugs update the status as risks are mitigated

Low-Code Development - MDD, MDA

Low-Code Development ... analysis by Capgemini found that MDD took only 2.5 hours per function point compared to 10.6 hours for Java and 15.5 hours for C#. MDD = Model Driven Development MDA = Model Driven Architecture Tools Sparx System Enterprise Architect IBM Rational Rose

Group Collaboration - How to Make Toast

TED Talk How to Make Toast DrawToast.com System Design

Project Management Tools

Atlassian Jira - Agile backlog management, sprint planning and tracking Confluence - wiki collaboration, not real-time multi-user collaboration like Google Docs Crucible - code reviews Clover - code coverage Bamboo - continuous integration Free tools GitLab  - issue tracker, code reviews Jenkins - continuous integration EMMA , EclEmma - code coverage Google Sites/Docs - real-time multi-user editing collaboration wiki Google for Business

Architect for Resiliency During Cloud Outages

Netflix Lessons Learned from AWS Outage Overcoming Outages in AWS

Meetings

Scrum Backlog Grooming Session Sprint Planning Daily Scrum Stand-up: accomplishments since last Scrum, today's objectives, impediments Scrum of Scrums - scaling Scrum to multiple teams, same as daily stand-up, but at team level Sprint Review - present the end progress of a sprint for inspection with demos Sprint Retrospective - what went well, what could be improved Quarterly Business Review (QBR) Change Control Board (CCB)

source repo mangement

myrepos

Ubuntu SSD performance tweaks

How To Tweak Your SSD in Ubuntu for Better Performance Coding for SSD part 1 Coding for SSD  part 6 summary

Read Execute Print Loop (REPL)

REPL for Java

Message Queue Options on AWS

Forter tech blog

Documentation Metadata Standard - Darwin Information Typing Achitecture (DITA)

Semantic Web Using DITA for Semantic Web DITA Powerpoint Powerpoint Open source publishing tool

Ubuntu 14.04 LTS Java Development Environment Configuration

Install and configure environment: Download the Ubuntu 64bit LTS install image Create a bootable DVD or flash drive Install Ubuntu Update software Install gnome classic Synaptic Package Manager PulseAudio Preferences - open and check the Make discoverable... PulseAudio Volume Control OpenConnect Cisco VPN client Update grub to reduce wait seconds    sudo gedit /etc/default/grub    #change timeout from 10 to 2 or whatever    GRUB_TIMEOUT=2   sudo grub-update Install  gnome classic sudo apt-get update; sudo apt-get install gnome-session-fallback Fix 14.10 vanishing cursor with sudo apt-get install ibus-gtk Reboot and select Classic before logging in Install Network Manager Open Connect Plugins (for Cisco VPN configuration) Open Applications : System Tools : Adinistration : Synaptic Package Manger Search for network-manager-openconnect Mark both entries for installation and apply Add launch icons to top menu/launcher/toolbar with     Sup