What’s a full stack developer?

Found here:
http://www.laurencegellert.com/2012/08/what-is-a-full-stack-developer/

Main points:

layers of the full stack:

Server, Network, and Hosting Environment.

  1. This involves understanding what can break and why, taking no resource for granted.
  2. Appropriate use of the file system, cloud storage, network resources, and an understanding of data redundancy and availability is necessary.
  3. How does the application scale given the hardware constraints?
  4. What about multi-threading and race conditions? Guess what, you won’t see those on your development machine, but they can and do happen in the real world.
  5. Full stack developers can work side by side with DevOps. The system should provide useful error messages and logging capabilities. DevOps will see the messages before you will, so make them count.

Data Modeling

  1. If the data model is flawed, the business logic and higher layers start to need strange (ugly) code to compensate for corner cases the data model doesn’t cover.
  2. Full stack developers know how to create a reasonably normalized relational model, complete with foreign keys, indexes, views, lookup tables, etc.
  3. Full stack developers are familiar with the concept of non-relational data stores and understand where they shine over relational data stores.

Business Logic

  1. The heart of the value the application provides.
  2. Solid object oriented skills are needed here.
  3. Frameworks might be needed here as well.

API layer / Action Layer / MVC

  1. How the outside world operates against the business logic and data model.
    Frameworks at this level should be used heavily.
  2. Full stack developers have the ability to write clear, consistent, simple to use interfaces. The heights to which some APIs are convoluted repel me.

User Interface

  1. Full stack developers: a) understand how to create a readable layout, or b) acknowledge they need help from artists and graphic designers. Either way, implementing a good visual design is key.
  2. Can include mastery of HTML5 / CSS.
  3. JavaScript is the up and coming language of the future and lots of exciting work is being done in the JavaScript world (node, backbone, knockout…)

User Experience

  1. Full stack developers appreciate that users just want things to work.
  2. A good system doesn’t give its users carpal tunnel syndrome or sore eyes. A full stack developer can step back and look at a process that needs 8 clicks and 3 steps, and get it down to one click.
  3. Full stack developers write useful error messages. If something breaks, be apologetic about it. Sometimes programmers inadvertently write error messages that can make people feel stupid.

Understanding what the customer and the business need.

  1. Now we are blurring into the line of architect, but that is too much of a hands off role.
  2. Full stack developers have a grasp of what is going on in the field when the customer uses the software. They also have a grasp of the business.

Other Pieces of the Puzzle:

  1. Ability to write quality unit tests. By the way, even JavaScript can have unit tests these days.
  2. Understanding of repeatable automated processes for building the application, testing it, documenting it, and deploying it at scale.
  3. An awareness of security concerns is important, as each layer presents its own possible vulnerabilities.

primecoind and/or primeminer (beeeeerpool ed.) on a digital ocean droplet

First of all, make sure you have swap on (see previous post)

The Ubuntu droplet needed those packages
libdb++-dev libssl-dev libboost1.48-all-dev libgmp-dev

the versioning is sometimes tricky, depending on distribution version and a lot of others. I was successfully using 1.46 of the Boost package before, so you might want to try different ones. The distro standard you get with libboost-all-dev

assuming root here

Get the source from github

git clone https://github.com/thbaumbach/primecoin

Compile

cd ~/primecoin/src 
make -f makefile.unix

This is how i execute the miner. As you can see, i use nohup and & to daemonize and prevent signals when closing the shell. all output goes to primeminer_stdout for possible later reference. if you want to keep all output, consider using >> in order to append to the end of the file.

this is one line, replace $ to your liking

nohup ./primeminer 
-pooluser=$addr
-poolip=beeeeer.org 
-poolport=1337 
-poolfee=$fee 
-minerid=$id 
-genproclimit=$procs > primeminer_stdout &

More details here: http://www.ppcointalk.org/index.php?topic=485.0

make a swap file on the fly

Disclaimer: this should only be used if you can’t partition your drive by yourself, or it would be a hazzle to do so. I’ve used that method to make one compile process work, otherwise I don’t really need it.

Check for present swap space:
*if there’s any output you might consider another solutions*

sudo swapon -s

Create the actual file:
*bs times count equals filesize, in this case 1gb*

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k

Create a linux swap area:

sudo mkswap /swapfile

Output looks something like this:

Setting up swapspace version 1, size = 262140 KiB
no label, UUID=103c4545-5fc5-47f3-a8b3-dfbdb64fd7ebsudo swapon -s

Activate the swap file

sudo swapon /swapfile

Now `swapon -s` should show something like this

Filename Type Size Used Priority
/swapfile file 262140 0 -1

Make it persistent in the /etc/fstab with the following entry

/swapfile none swap sw 0 0

Make swappiness 0, otherwise performance will be poor. So it’s just an emergency buffer:

echo 0 > /proc/sys/vm/swappiness

And finally a bit if good practice, since this is root’s business:

chown root:root /swapfile
chmod 0600 /swapfile