diff --git a/.config/newsboat/my_urls b/.config/newsboat/my_urls
index 1725546a..46437991 100644
--- a/.config/newsboat/my_urls
+++ b/.config/newsboat/my_urls
@@ -51,3 +51,4 @@ file://./rss/linuxjournal.xml
file://./rss/linux_lads.rss
file://./rss/ishadeed.xml
file://./rss/bigdinosaur_blog.rss
+file://./rss/justingarrison.xml
diff --git a/.config/newsboat/rss/justingarrison.xml b/.config/newsboat/rss/justingarrison.xml
new file mode 100644
index 00000000..c2d1feca
--- /dev/null
+++ b/.config/newsboat/rss/justingarrison.xml
@@ -0,0 +1,14399 @@
+
+ The days of “cloud native” dominance are numbered. It has served us well, but it’s time for the next evolution of application-centric infrastructure to take its place. We can move beyond API driven low-level primitives and take the years of lessons learned to make them defaults for the platforms of the future. We’ve successfully shifted the data center primitives into the API driven cloud. Security groups, VPCs, and virtual machines work well as building blocks when you have specialists who can maintain them, but the next wave of applications and developers won’t have that luxury. They build applications and bundle them with availability constraints, security boundaries, and networking as part of regular deployments. The infrastructure boundary is shrinking from companies, to divisions, to teams and individual apps. What does this look like for the applications and platforms of the future? What technology exists today to help us get there? Rejected tailscale up
+) Streaming games from the cloud is great, but how can you get the same flexibility with existing hardware? Using tailscale with steam we can game from anywhere, anytime, on any device. 20 minutes Accepted Platforms evolve from client side to server side, imperative to declarative, and they grow in scope over time. What are the benefits and downsides of the different models and how will they impact your platform capabilities and long term goals. When you set out to build a platform you have goals for what problems it will solve, who it will serve, and what it can do. The moment a customer uses the thing you built you’ll know it was all worth it. A year later you’ll wonder where you’ve gone wrong. What could you have done better? Why are you planning another re-write? This doesn’t mean you’ve failed or you need to start over. Sometimes you need to take a step back to understand the path forward. We will review different options for types of platforms. Pros and cons for each and when to be cautious to know you’re building the right thing. Rejected Mastodon is free and open source microblogging software that many people believe will be the next Twitter.
+Because it is open source and built on the ActivityPub protocol
+ you can run your own instance or join one of the existing servers to find your community.
+The “fediverse” claims to be community owned, decentralized, and ad-free.
+It also lets you “own your own data” in direct opposition to the existing social media platforms. The fediverse recently crossed 1,000,000,000 posts
+—more than 75% of which comes from Mastodon. But none of that actually matters. In an ideal fediverse world, people would run personal servers or a community would run a server for members.
+The reality is people don’t want to pick their favorite community, running an instance is expensive and complicated, and owning your data isn’t a product feature. All of those “features” come with with a heavy price—responsibility.
+Running your own instance is increadibly time consuming and difficult to understand how to secure and scale.
+It also can be quite expensive if it grows to any meaningful amount of use.
+Even if you’re not a heavy poster, the way relays work consume a lot of storage to follow hashtags and users from different instances. Communities are not siloed independent bubbles.
+People are Venn diagrams of lots of communities and interests.
+Selecting a username can be difficult, deciding which community you want as part of your identity—even if you can change it—is too much.
+The act of choosing a server has kept more than a few people away from Mastodon. Hopefully, you don’t end up on a server that isn’t secure, has trouble scaling, or shuts down for a variety of other reasons.
+For example mastodon.technology shut down because of instability
+ and mastodon.lol shut down because of Harry Potter
+.
+One thing to know about ActivityPub is if you want to move your data to a new instance, the old one has to exist.
+If the old one is compromised or unavailable, too bad. Even one of the best run instances at hachyderm.io
+ had trouble scaling last year with 30,000 users and over $5000 worth of equipment.
+They were able to migrate over a terabyte of data to Digital Ocean which kept them afloat, but at a cost not many can afford—more than $1000/mo. Beyond scaling concerns is the legal responsibility.
+If you host an instance for other people you should be prepared to invest time documenting and training moderators or shut down like The Financial Times
+.
+As Nilay Patel
+ from The Verge notes, moderation is the feature social networks sell
+, and Mastodon has no plans for better moderation tools besides leaving it up to independent server admins. It’s only a matter of time until there will be a CVE found in the official Mastodon software which will leave a vast majority of instances vulnerable.
+This will be a wakeup call to administrators that the benefits of ownership are not worth the time investment.
+Even for single user instances. If the instance you’re on is compromised you will lose your identity because private keys are stored as part of the instance.
+No private keys, no identity, no portability. Administrators are not paid for their work, and very few instances have plans to continue operating if a single person leaves, runs out of money, or loses interest.
+I can imagine the headline now where someone offers to help run an instance, but in reality they only want access to user DMs and private keys.
+Just like Wordpress from the 2010s, many instances will be abandoned and never upgraded. Like Wordpress, the best way to use Mastodon is to pay a company to run it for you.
+Mastodon instances will fail to get updated for months at a time until individuals decide it’s not worth their time or $10 per month. I asked some of the largest instance admins
+ to share how much it cost to run their instances on a per account and per monthly active user (MAU) basis.
+On average it cost $.0085 per registered account and $.041 per MAU.
+That may seem cheap, but if Mastodon ever hopes to grow into the millions of MAU or have any celebrities join their platforms admins are going to be paying thousands or tens of thousands per month.
+As volunteers.
+With no income potential.
+They also will be trusted with user’s private keys and unencrypted DMs. The financial and trust models of Mastodon just don’t add up. You can, of course, run your own server.
+Just like you can run your own email server.
+And you will be blocked from the broader public discourse just the same.
+There will be no way for large instances to trust and allow every individual instance.
+The moderation work will be too much and they’ll end up trusting only large, established instances. If you’ve never had the pleasure of running a ruby on rails app with Postgres database I’m sure you’ll learn a lot about running apps from 10+ years ago.
+If you don’t know what PgBouncer or Sidekiq are in 2023 I wouldn’t invest a ton of time in learning them now. The only way I would suggest running an instance is with a managed services option like Cloudflare Wildebeest
+.
+It’s not without problems (I run an instance), but the MAU cost and ongoing maintenance should be much lower for a multi-user instance. For me, the final nail in the Mastodon coffin came from a Decoder podcast interview
+ with Eugen Rochko
+, the CEO of Mastodon.
+Throughout the interview it’s clear that Eugen has no plans for monetization beyond donations and running instances for interested users.
+While I highly respect Eugen’s technical abilities and drive and determination to build such an ambitious product on top of ActivityPub, I believe the vision is flawed. If mastodon is to be the poster child of the fediverse it needs to drastically simplify the requirements to run and maintain an instance.
+There should be a single binary, self-updating, single-user instance. Instead Mastodon is going in the exact opposite direction.
+The Mastodon company has fewer than 10 employees and is moving the largest mastodon instance to Kubernetes.
+They claim this will solve their scaling problems, maybe it will; but I would argue it will make the ability to run your own instance much harder—and I’ve been working with Kubernetes for 8 years. There are a few community run instances that run on Kubernetes already, but only because the admins were already familiar with it.
+If you want people to run their own instances it needs to be App Store simple. Will there be simpler and cheaper options?
+I don’t think so.
+Mastodon growth is already starting to plateau.
+All of the 3rd party integrations are happening with ActivityPub, not Mastodon. There are lots of companies investing time to integrate with ActivityPub.
+But almost every integration is a status/blog/picture update mechanism.
+It’s a more expensive and questionably better RSS. Is Tumblr going to save Mastodon? No.
+But Tumblr posts and comments will be consumable at toots. It has nothing to do with data ownership, identity portability, or federated networks.
+The ideals of Mastodon and the fediverse will be lost once established products use it. The Mastodon people hoped for is doomed. Mastodon will continue as a niche community and it will have lots of happy users.
+I’m greatful for the admins that have dedicated so much of their time running instances, and thank you to the admins who shared their instance financial information. If you love Mastodon I’m happy for you.
+The internet needs bold bets and people to invest in them. In 2016 Justin sold all of his Bitcoin and bought a Kubernetes home lab.
+The return on investment for learning Kubernetes has been more valuable than any crypto currency.
+With 6 years experience building labs at various budgets he’ll share what he has learned and suggestions if you’re getting started today. Many people learn by doing and have limited budgets.
+Kubernetes the hard way is a great learning tool, but to deeply understand how the underlying components work sometimes unplugging a cable is a better learning experience.
+This talk will collect hardware options and suggestions for people building home labs today. I will bring example hardware and have suggestions ranging from entry level to home data center. rejected WebAssembly (Wasm) promises faster start times, better security, and more portability than containers.
+But what can Wasm really do and how does it fit into the Cloud Native ecosystem?
+Bailey and Justin compare the technologies and show how they’re more similar than you might think.
+They’ll break down use cases in your existing Kubernetes clusters and explain why containers aren’t doomed, yet. The Cloud Native ecosystem is evolving to include more tools, platforms, and technologies beyond just Kubernetes.
+While many people are just getting started with Kubernetes there is a lot of confusion about WebAssembly being used for server workloads and how it complements Containers and Kubernetes. One of the most common questions in this vein is “What can I actually do with Wasm right now? How can it actually help me?”
+This talk is meant to be an extremely practical answer to that question that gives a guide to those in the Cloud Native technical community (devs and SREs) of what you can actually do with Wasm.
+We want to show that Wasm is a complementary technology and then demonstrate that with live examples to help audience members further understand what Wasm can do. rejected Flatpak might be a great portable, secure packaging format, but it’s not the most user friendly tool.
+There are plenty of downsides to flatpak apps, but it is increasingly the most ubiquitous Linux packaging format. One thing that is difficult with flatpack is launching applications from the terminal.
+Currently the only official way to launch an app is with: Application fully qualified names are usually some form of a reverse domain name where the application is hosted or the developer who created it.
+Examples include: And they’re never memorable. There is a feature request
+ to make apps easier to launch from a terminal.
+Unfortunately, flatpak ideals often get in the way of user friendliness. To make launching the latest version of apps easier you can add An easier way to create a shortcut is to symlink the desired command name to the flatpak export.
+Create the symlink in a folder already in your The symlink can always exist, but if the target file does not exist your shell should be smart enough to not execute or tab complete it. The age of content being king is long behind us.
+Packaging has replaced it in almost all media. In the early days of content creation—1500s, not 2000s—content was scarce.
+The printing press was invented, but people did not have access to content the way we did in the 1900s. From the late 1800s to early 1900s the world went from books as the main source of content to radio (live), recorded audio, movies, and television.
+The explosion of content and formats changed peoples consumption habits forever.
+No longer were you consuming what was available, there was too much to consume in a lifetime and you had to make a decision. Judging a book by its cover was the right thing to do.
+You could not consume everything so you had to choose what you would invest your time in.
+Packaging dethroned content as king. The first movie poster was made in 1895; the first movie trailer in 1913.
+Advertising and billboards would raise awareness, but they needed more efficient ways of helping consumers decide if they wanted to consume the content. Books, magazines, newspapers, and any content looking for your attention—and money—had to play along.
+Sensational titles, enticing images, provocative summaries are not new to YouTube.
+Advertisers and creators have been perfecting the craft in every new format for more than 100 years. The Internet had its own shift to packaging.
+In the early years (pre-2000) bandwidth was limited and images were scarce. As bandwidth increased so did the packaging.
+Lists of underlined blue text shifted to images.
+Animations and videos started to emerge and website designers—using that term very loosly—used every feature HTML and JavaScript provided to draw attention. If a human has to make a decision to spend their time on the content you created they first need to be convinced it’s something worth their time.
+But people value their time in differently.
+Video content focused towards kids and teenagers tends to have great viewing times because they don’t value their time as much as a busy adult. Content trying to reach a busy audience requires packaging that tailors to their needs.
+Word of mouth doesn’t have the same reach anymore because there are too many words and mouths.
+Trust carries a lot of weight. If you’re making content today and not putting effort into packaging then you are doing your audience a disservice.
+In the world of SEO optimizations, hashtags, and social media—your content will fail to convince anyone it’s worth the time to click.
+You can’t reach an audience who isn’t reaching back. As a consumer, what is the best content for you requires you to make a decision.
+But the decision you’ve made is entirely a decision based on the packaging, not content.
+You’ve judged links by their titles, videos by their thumbnails, and books by their covers because you have to. Standards like The Open Graph Protocol
+ are designed to make content more appealing.
+A list of unformatted link titles have no chance in the world of AI generated banner images and descriptions. But content is making a comeback.
+Search and recommendation engines can present you with packaged content, but rarely do they make the decision for you. When was the last time you clicked “I’m feeling lucky” and actually expected the best answer?
+When did you let the next YouTube video play without looking at your options? The answer for most busy adults is almost never.
+The only times we don’t make a decision is when we don’t have the option. Algorithmic social feeds have removed the decision making process.
+Facebook and Twitter have tried to convince us it’s better, but in the world of limited social graphs—your friends—choice matters. Taking who you know and showing their best content isn’t what we want.
+Showing us the best content based on what we like—or in some way indicated we like—is where content shines. TikTok is an interest based social network with seemingly endless content.
+The only thing you have to decide is how long you want to watch.
+Scroll and it’s gone.
+Immediately replaced with the next video you didn’t decide to watch.
+Engage and more like it will come. Algorithmic feeds switch the click.
+You don’t click after you decide what to watch.
+You scroll because you’re done watching. Watch time is still the primary metric that matters.
+Engagement matters, but the platforms live and die based on minutes watched because that’s what revenue is tied to. The real explosion of content hasn’t begun.
+SEO content farms that used to abuse search terms, hashtags, and post frequency were just the begining of the spam.
+The current implementation of internet search won’t survive the next wave of content. AI generated content is just starting to hit some platforms and the open web.
+The next 3-5 years are going to see and explosion of written content, then images, then music, then videos.
+This won’t look like the obviously spam content of the early 2000s. Excessive amounts of compute power will be used to create more, faster.
+Say goodbye to any service that offers a free tier.
+There’s no avoiding the mass of storage growth that’s about to happen. Every day there is more than 82 years of video uploaded to YouTube.
+The amount of content that will be uploaded per day of AI generated content will make YouTube’s current business model uneconomical without major changes. The only way to fight the AI is going to be with AI.
+People looking for content won’t be able to make decisions because packaging and recommendations will fail.
+Making decisions won’t scale because there’ll be too many options. I’m hopeful that the next generation of consumers will reverse the trend.
+The cycle will reset and the race to create the perfectly packaged peice of content will be avoided. Consumers will seek the imperfectness of human creation.
+The unpackaged “Me at the zoo
+” moments that make content fun. Not doing it for the likes, but just to share a raw moment of life. TalosCon
+ This talk is a demo and discussion about this blog post. https://justingarrison.com/blog/2022-11-04-immutable-declarative-automated/
+ accepted Amazon Elastic Compute Cloud (EC2)
+ has over 100 unique instance types with more than 600 size combinations.
+Picking the right instance type can be a difficult task for even the most seasoned engineer.
+Running an application on the largest, fastest instance you can afford does not guarantee the best performance. If you’ve ever wanted to understand instance type names or need help picking the right instance for your application you’ve found the right article.
+Here’s a moving picture version of this blog post.
+
+Conference
+
+Description
+Abstract
+Status
+Conference
+Description
+Session format
+Status
+Conference
+
+Description
+Abstract
+Status
+
+Conference
+
+Abstract
+Benefit to the ecosystem
+Status
+Conference
+
+Abstract
+Benefit to the ecosystem
+Status
+flatpak run APP_FQDN
+
+
+/var/lib/flatpak/exports/bin to your PATH but then you still need to remember the full application name.
+You can alias spotify='com.spotify.Client' but if the Spotify client isn’t installed your command will give an error.no such file or directory: /var/lib/flatpak/exports/bin/com.spotify.Client
+PATH to avoid getting tab completions with a bunch of org and com commands.ln -s /var/lib/flatpak/exports/bin/com.visualstudio.com $HOME/.local/bin/code
+
+The first movie poster
+ for L’Arrosour Arrosé.The Internet
+
+YouTube homepage (2005) via webdesignmuseum.org
+
Where content is (still) king
+Where are we going?
+Conference
+Description
+Status
+
And here’s a static picture version of the same information.
+A quick disclaimer, I work at Amazon but this is my personal blog reflecting my personal opinion. +All of the information was gathered from public sources and from my experience. +I wrote this because I wished I had it as a guide when I was first learning EC2.
+ +Instance names are made up of four sections.
+So how do you decipher an instance with the name r7iz.8xlarge?
+From the info above we know r is from the memory family which has more memory per vCPU than general purpose.
+Specifically it has 8 GiB of memory for every 1 vCPU.
+7 means it’s a 7th generation instancy type.
+The iz capabilities has a Intel processor (i) running at turbo frequencies (z), and 8xlarge is 8 times bigger than a r7iz.xlarge.

Many capabilities aren’t listed in the name because some families include capabilities by default.
+For example, the m family are all EBS and network optimized by default which is usually denoted with the b and n capabilities.
+Some of the larger m instances have have local NVMe storage which adds d to the name.
These capabilities aren’t always obvious so you’re going to have to learn about what’s available. +The good thing is you don’t need to memorize all of the instance types.
+Knowing one instance from the four most common families—general purpose (m), compute (c), memory (r), and storage (d or i)—will get you started with almost any application.
+Here’s more info about each of the family groups and types.
Instance families come in six different groups +:
+Most categories have multiple type options that refine instance features.
+General purpose instances keep a balance between vCPU, memory, and network performance.
+Some instances add aditional capabilities to CPU (z) and network (n) and there are multiple CPU options for AMD (a), Intel (i), or graviton (g) chips.
The general purpose group includes: A, M, Mac, T
+These are often used as web servers because they have a balance of resources.
+The t types can save you money with their burstable vCPU options and are a good choice if your workload CPU usage is similar.
This is the only group with Mac + instances which can be used for remote macOS workstations or build farm systems that need Apple tools.
+Compute optimized only includes the c type instance with different generations, capabilitities, and sizes.
+Almost every c instance has a 2:1 ration of memory to vCPU.
+If you use a medium instance with 1 vCPU it will have 2 GiB of memory.
+If you use a 32xlarge with 128 vCPUs it will have 256 GiB of memory.
These instances are ideal if your workloads need a lot of CPU power and not as much memory.
+Memory optimized instances are for workloads that consume more memory than CPU.
+They have a memory to vCPU ratio ranging from 4:1 up to 32:1.
+An instance like r6i.xlarge has 4 vCPUs and 32 GiB of memory while an x2iedn.2xlarge has 256 GiB of memory with 8 vCPUs.
Memory optimized are some of the best instances for clusters like Kubernetes because many workloads are memory bound more than CPU bound. +This will let you pack an instance with more workloads than types with lower memory to vCPU ratios.
+The memory optimized group includes: R, U, X, Z
+Accelerated computing is the most specialized of all of the groups. +If you need specialized compute acceleration for your workloads you probably already know.
+Most of these instance types have GPU accelerators or specialized machine learning chips.
+The only non-machine learning special accelerators are the f1 instances with field programmable gate arrays (FPGAs) and vt1 with Xilinx U30 media accelerator cards.
All of the types have a variety of local storage and high memory.
+The GPU types—g and p—have multiple video cards options with varying sizes of GPU memory.
+Some instances have multiple accelerators but not all accelerators can be shared with workloads at the same time.
It’s more important to chose the appropriate size for these instances to optimize your usage and keep your costs low.
+The accelerated computing group includes: DL, F, G, Inf, P, Trn
+Storage optimized is exactly what you might think—lots of throughput at low latency. +All of these instances will have local storage of various sizes. +For most of the instances the memory to vCPU ratio is either 4:1 or 8:1.
+All that disk IO wouldn’t be very useful without good network throughput and these instances generally have more network performance at smaller instance size than any other type. +They don’t have the fastest network available, but faster than many of the general purpose instance types.
+Storage optimized group includes: D, H, I, Im, Is
+This group only hase one type HPC with 2 options, the hpc6id.32xlarge or hpc6a.48xlarge.
+You can get a big instance with Intel (i) or AMD (a) processors with the main benefits being no hyper-threading and lots of network bandwidth.
If you want HPC instances you have a very specific need that needs either 16:1 or 8:1 memory to CPU ratio. +They are only available in us-east-2 and GovCloud regions so don’t expect to use these in multi-region deployments.
+Generations are a number 1 through 7 and corelate to how many versions of the instance family has had. +Older generations are eventually retired and replaced.
+Instance type generations include improvements in processor generations, memory speed, and network performance. +Intel based instances usually jump a generation when a new generation of chips are used. +I personally can never remember what lake generation + is the best with Intel so I use the highest EC2 generation possible.
+Graviton + also jumps architecture versions with generations. +ARM based 1st generation types are using Graviton 1, generations 2-6 are using Graviton 2, and generation 7 is using Graviton 3 (or 3E). +Graviton 3 includes support for DDR5 which is another example of general performance improvements in newer generations.
+Amazon Nitro + is the computer in the computer. +Nitro is a series of physical cards that are installed in an EC2 physical server. +There are a lot of great re:Invent talks that dive deep into Nitro if you want to learn more.
+ + + +All modern EC2 instance generations are powered by Nitro. +Even previous generations that historically were not powered by Nitro are being converted into Nitro based instances +.
+It’s usually a good idea to switch to new generations for price and performance benefits, but often times the current generation -1 are the most widely available. +There will likely be more regions that have the previous generation and each region will have higher quantities.
+Capabilities—sometimes called attributes—identify specific implementations or additional features about the instance. +As mentioned earlier, some types have the capabilities by default. +In that case the letter isn’t added to every instance but it is assumed because of the instance type itself.
+Some of the capabilities are mutually exclusive.
+You couldn’t have an instance with ag because those are both processor capabilities and there’s no such thing as an AMD Graviton.
+The most complicated capabilities usually include dn or en because those add storage and network performance.
+A x2iedn.2xlarge is one of the instances with the most capabilities specifying that it is an Intel processor (i) with a higher memory to vCPU ratio of 32:1 (e), local storage (d), and faster network (n).
The additional capabilities are:
+a – AMD processorsg – AWS Graviton processorsi – Intel processorsd – Instance store volumesn – Network optimizationb – Block storage optimizatione – Extra storage or memoryz – High frequencyInstances sizes are almost always twice as big than the previous size. +A large is twice as big as a medium and an xlarge is twice as big as a large. +The multiples of xlarge are almost always powers of 2 (2, 4, 8, 16), but there are 10xlarge, 12xlarge, and a few other odd xlarge numbers that exist. +The main thing with sizes is the vCPU and memory count increase linearly so if you know the ratio of a family or one of the sizes you can figure out the larger sizes too.
+Network throughput and storage do not increase linearly and those are often harder to figure out. +Many instances have a size where there is a jump in network performance or storage and everything above that size is consistent.
+Size is hardest to figure out with shared resources like a Kubernetes cluster. +Depending on which workloads are scheduled to which instances will give you a wide variety of performance if you’re not careful. +We recommend specifying the instance type or size your workload needs directly in the manifest with a nodeSelector + for consistent performance.
+The first thing you need to do when picking an instance type is understanding your workload’s needs. +You need to find the bottlenecks and limits of your application before you decide on an instance to use.
+Benchmarking on your laptop is not the right approach. +Unless you`re doing remote development in EC2, your local development environment is very different than where the application will run in production.
+Running a single Apache bench + or hey + benchmark might get you started, but you need to have a way to continuously profile your application in production. +Knowing how your application performs with production data, users, and environment is the only way to know for sure. +Invest time in collecting data from production before optimizing your instances.
+Once you know your application’s bottlenecks you can identify the correct ratio of performance between CPU, memory, network, and storage. +Keep in mind that running applications on shared instances—as is common with Kubernetes—your application will perform differently. +The way Linux shares a CPU is very different from high level reservations + and you should request instance types in your workload manifest.
+I’m a big fan of the EC2 instance selector
+ CLI and go library.
+It can be used to find any instance that matches your performance needs.
+Memory, vcpus, network performance, EBS throughput are some of the options to find available instances based on your region.
+The --service option is one of my favorites because it automatically removes instances that are not compatible (e.g. --service eks).
For a bit more visual appreach to finding instances you can use EC2Instances.info +. +It is a GitHub repo + hosted by Vantage + and makes it a bit easier to search through. +One of my favorite options is the full CSV export which I regularly download to be able to query and sort offline.
+The most important thing to know when picking the “best” instance is it depends. +The reason there are so many different instance types is to allow for a variety of applications to run at optimal performance and cost.
+If you are running production workloads and want consistent performance the best investment you can make is to continuously profile your application’s performance. +This will not only give you a baseline for scaling, but it will help you find regressions and bottlenecks.
+If you understand your application’s requirements, choosing an instance to match can be a lot simpler. +This can be difficult in an environment where the infrastructure is selected by a platform team and not the application developers. +Using a nodeSelector + in Kubernetes can make sure your workload is scheduled to the appropriate instances even in a shared environment.
+The infographic was created by Adeeba N. on Upwork +.
+]]> + + + +We all claim to be story tellers, but not many of us know the fundamentals of story telling. +Sr. Developer Advocate, Justin Garrison has worked with some of the best storytellers in the world at Disney and is obsessed with the art of storytelling and how it affects our lives. +In this session, he’ll discuss story structure, how to find great stories, and what you should avoid when telling your stories.
+accepted
+]]>Thanks to the 2022 StackOverflow developer survey + we can finally say 2022 was the year of Linux on the Desktop!
+Linux as a primary operating system had been steadily climbing for the past 5 years. +2018 through 2021 saw steady growth with 23.2% +, 25.6% +, 26.6% +, 25.3% +, and finally in 2022 the usage was 40.23%. +Linux usage was more than macOS in 2021, but only by a small margin. +2022 it is now 9% more than macOS.
+There is a slight difference between all respondents and professional developers, but that doesn’t take into account the 15% of WSL users on Windows or the 63% respondents that use Docker which uses a Linux VM on macOS and Windows. +I’d be very interested to hear about adoption numbers for cloud development environments (e.g. GitHub Workspaces) which are all Linux based. +It’s safe to say more people use Linux as part of their development workflow than any other operating system.
+2022 also saw more than a million + people gaming on Linux via the Steam deck. +It has been quite a year of Linux desktop usage.
+]]>Mastodon is built on the ActivityPub + protocol which is based on Activity Streams + which stores data in JSON Linked Data (JSON-LD) +. +All that means is Mastodon uses a lot of JSON that references other JSON. +A Mastodon instance can serve those JSON documents any way it wants so long as they are UTF-8 encoded.
+There are more than 17,000 Mastodon instances. +Why would you implement one with static files?
+The first reason is security. +Ars Technica has a great article + about some of the concerns with running large scale, multi-user social network servers. +I have a lot of my own concerns about Mastodon that I’ll save for a future post.
+There are scalability challenges on multiple levels. +The size of databases and uploads is what most admins are concerned with, but number of active users and scale of a single user (e.g. celebrity, company, government) is what will really take down a social network. +An instance with 30,000 active users costs nearly $1900 per month. +
+If Mastodon is going to be adopted by the critical users it needs to grow, instances—many of which are run by volunteers—would be crushed under the operational and financial responsibility. +Governments and companies aren’t going to join shared servers; they’re going to run their own instances on the domains they already own. +The best way to scale and maintain a server is to not run one.
+If you want to watch how I created these files check out the video.
+ + + +So let’s create a Mastodon instance using JSON files. +You can see the files on GitHub. +
+The files are hosted at https://mastodon.jgarr.net + so you can test this for yourself by searching for the user @justin@mastodon.jgarr.net
+You only need 1 file but to make a more complete user we’ll use these 6:
+The only required file is the user, but I wanted to show how easy it is to lie in the fediverse.
+Here are the files we’ll be using.
+.
+├── .well-known
+│ └── webfinger <- user discovery (optional)
+├── banner.png <- banner image (optional)
+├── followers <- how many followers (optional)
+├── following <- how many following (optional)
+├── image.jpg <- profile image (optional)
+└── justin <- user information
+Now let’s explain what they do.
+When you’re using Mastodon you can search for a user on any Mastodon instance with @user@domain.
+This is a short hand format which relies on webfinger
+ to translate a user at a domain into a standard URL.
When you do this search your Mastodon server will query the external server
+GET https://server/.well-known/webfinger?resource=acct:user@domain
+You can bypass webfinger if you know how to fetch the user’s information directly.
+If you search in Mastodon for https://mastodon.jgarr.net/justin you’ll get the same user.
{
+ "request": {
+ "remote_ip": "127.0.0.1",
+ "remote_port": "43636",
+ "proto": "HTTP/1.1",
+ "method": "GET",
+ "host": "mastodon.jgarr.net",
+ "uri": "/.well-known/webfinger?resource=acct:justin@mastodon.jgarr.net",
+ "headers": {
+ "Date": [
+ "Wed, 30 Nov 2022 06:00:09 GMT"
+ ],
+ "X-Forwarded-For": [
+ "fd7a:115c:a1e0:ab12:4843:cd96:626f:140a"
+ ],
+ "User-Agent": [
+ "http.rb/5.1.0 (Mastodon/4.0.2; +https://mastodon.social/)"
+ ],
+ "Accept": [
+ "application/jrd+json, application/json"
+ ],
+ "Accept-Encoding": [
+ "gzip"
+ ]
+ }
+ },
+ "user_id": "",
+ "duration": 0.000258163,
+ "size": 203,
+ "status": 200,
+ "resp_headers": {
+ "Accept-Ranges": [
+ "bytes"
+ ],
+ "Content-Length": [
+ "203"
+ ],
+ "Server": [
+ "Caddy"
+ ],
+ "Etag": [
+ "\"rm5bpw5n\""
+ ],
+ "Content-Type": [],
+ "Last-Modified": [
+ "Wed, 30 Nov 2022 05:39:32 GMT"
+ ]
+ }
+}
+The GET request technically uses the parameter resource=acct:justin@mastodon.jgarr.net but with this static file example we only have one user on the domain so we’ll ignore that part.
+If you want to have multiple users on the same domain you will have to handle parameters on the server side.
+Meaning, you can’t do that with static files.
This request returns the file
+{
+ "subject": "acct:justin@mastodon.jgarr.net",
+ "links": [{
+ "rel": "self",
+ "type": "application/activity+json",
+ "href": "https://mastodon.jgarr.net/justin"
+ }]
+}
+This says where to go fetch the next JSON document at the /justin path.
+Your Mastodon server will then go fetch that object.
GET https://server/justin
+{
+ "request": {
+ "remote_ip": "127.0.0.1",
+ "remote_port": "43650",
+ "proto": "HTTP/1.1",
+ "method": "GET",
+ "host": "mastodon.jgarr.net",
+ "uri": "/justin",
+ "headers": {
+ "Accept": ["application/activity+json, application/ld+json"],
+ "Accept-Encoding": ["gzip"],
+ "Date": ["Wed, 30 Nov 2022 06:00:10 GMT"],
+ "Signature": ["keyId=\"https://mastodon.social/actor#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) host date accept\",signature=\"FIFlf1AqeWuDGqF0lNJy+eRoxsy83dZ44nyhe3O+kEAB4WE8rDNKwhrGrO
+ 67 GZQin3lbkMZ4BKpj71wAjhNbFW8p7FtdbvGGKPwceRh5gx1hh2iqdd / INw9NZFpRbPG4wq9oHNU4MIMikICcgNDeLzcYYXbUMaDDe9W4eVzExK6SF5ulJDY0tbZchT + kaZKZqGhae25FFLc0gEPEjA3XOiZRhsVU + 7 bGPyX8Lo2g6ebGuIHPynB5WYeOu8u8noEHtbxzx + LIQZJqy1gHDb9zKq09q + f2h6ngaegayxFxZOVLMVEbhpauq1iELxlPCXaWAcwFFmWS7tJZHpqnFBAXKg == \""
+ ],
+ "X-Forwarded-For": ["fd7a:115c:a1e0:ab12:4843:cd96:626f:140a"],
+ "User-Agent": ["http.rb/5.1.0 (Mastodon/4.0.2; +https://mastodon.social/)"]
+ }
+ },
+ "user_id": "",
+ "duration": 0.000505261,
+ "size": 912,
+ "status": 200,
+ "resp_headers": {
+ "Content-Length": ["912"],
+ "Server": ["Caddy"],
+ "Etag": ["\"rm5bxppc\""],
+ "Content-Type": [],
+ "Last-Modified": ["Wed, 30 Nov 2022 05:44:13 GMT"],
+ "Accept-Ranges": ["bytes"]
+ }
+}
+If you look at the access log you’ll notice the signature in the header.
+This uses a keyId https://mastodon.social/actor#main-key which is the instance that searched for the user.
+There’s a signature which can be used to verify the correct server―or user―is making requests.
If you want to you can skip webfinger by searching for a user by their URL directly.
+If you search in Mastodon for https://mastodon.jgarr.net/justin you’ll get the same user.
That means we need 1 less file but it doesn’t seem as magical as @justin@mastodon.jgarr.net
This returns our actual user document.
+{
+ "@context": [
+ "https://www.w3.org/ns/activitystreams",
+ "https://w3id.org/security/v1"
+ ],
+ "id": "https://mastodon.jgarr.net/justin",
+ "type": "Person",
+ "following": "https://mastodon.jgarr.net/following",
+ "followers": "https://mastodon.jgarr.net/followers",
+ "inbox": "https://mastodon.jgarr.net/inbox",
+ "preferredUsername": "justin",
+ "name": "Justin Garrison",
+ "summary": "Static mastodon server example.",
+ "url": "https://justingarrison.com",
+ "manuallyApprovesFollowers": true,
+ "discoverable": true,
+ "published": "2000-01-01T00:00:00Z",
+
+ "icon": {
+ "type": "Image",
+ "mediaType": "image/jpeg",
+ "url": "https://mastodon.jgarr.net/icon.jpg"
+ },
+ "image": {
+ "type": "Image",
+ "mediaType": "image/jpeg",
+ "url": "https://mastodon.jgarr.net/image.png"
+ }
+}
+If you want to see your user’s JSON document you can append .json to your user’s URL (e.g. https://mastodon.social/@jgarr.json
+)
Not everything in this example user document is required, but here’s the first place we can lie about our account and make it look more legitimate.
+You’ll noticed the published date 2000-01-01T00:00:00Z which means we created an account long before Mastodon existed.
+Not a big deal, but it’s completely unverified.
We also add an icon and image to the profile so it doesn’t have the default image. +The images are completely optional, but it adds legitemacy to a federated account posing as a real user.
+Because we own the domain and can lie about the accounts we can use a commonly misspelled domain or unicode to create fake accounts.
+We could easily use any domain to make accounts like @charles@gov.co.uk or @tim@apple.ceo (both of these domains are currently available).
Mastodon puts the zero in zero trust. +In reality, any completely decentralized system—like the internet—only has trust through reputation, but in Mastodon you can fake a repulation.
+Here’s what the profile looks like.
+
After the user is requested your Mastodon instance will automatically fetch /followers and /following.
+Just like other documents these are reference documents to the actual data documents, but the data isn’t verified so we can lie again.
You’ll notice this account has 1 million followers and follows 1 account. +Both of which are not possible because even if you click the follow button the instance cannot acknowledge your request and this account has no keys so it cannot follow any accounts.
+GET https://mastodon.jgarr.net/followers
+{
+ "request": {
+ "remote_ip": "127.0.0.1",
+ "remote_port": "43692",
+ "proto": "HTTP/1.1",
+ "method": "GET",
+ "host": "mastodon.jgarr.net",
+ "uri": "/followers",
+ "headers": {
+ "User-Agent": ["http.rb/5.1.0 (Mastodon/4.0.2; +http
+ s: //mastodon.social/)"], "Accept": ["application/activity+json, application/ld+json"], "Accept-Encoding": ["gzip"], "Date": ["Wed, 30 Nov 2022 06:00:12 GMT"], "Signature": ["keyId=\"https://mastodon.social/actor#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) host date
+ accept\ ",signature=\"wUAArkeEJh4yXkstcC8IgrnSlsRcledOUjo63nqRZrXI0RtoKo369/+j5K7bEFDoJ8psuCnnY9cW+KDgog7Gg2mQjAb1cZa2ffeqFY3PPXqpO+5entfRkAEyYBsrd3CiVn5wz0LEwbOs3XHe1w2wVgoIbSunCE/DN0Ra5tQLriITzBA5YzI26QuQSJzb5sMmMjiTiVocF/i0djqXfLmnjvhyaxsS0i0O8LfPHVPzSSGFHaqzawIL28MZu8J42ha//baJmP
+ ozQQquFHKs7lcDcSSGtrvMGjfJYoFy4cMSsSqLH / 8 VRzNR0nXs47ydDwQ9XRpT55LPWL7uRQoeYBAkwA == \""
+ ],
+ "X-Forwarded-For": ["fd7a:115c:a1e0:ab12:4843:cd96:626f:140a"]
+ }
+ },
+ "user_id": "",
+ "duration": 0.000082826,
+ "size": 235,
+ "status": 200,
+ "resp_headers": {
+ "Server": ["Caddy"],
+ "Etag": ["\"rm1lyn6j\""],
+ "Content-Type": [],
+ "Last-Modified": ["Mon, 28 Nov 2022 05:30:23 GMT"],
+ "Accept-Ranges": ["bytes"],
+ "Content-Length": ["235"]
+ }
+}
+GET https://mastodon.jgarr.net/following
+{
+ "request": {
+ "remote_ip": "127.0.0.1",
+ "remote_port": "43678",
+ "proto": "HTTP/1.1",
+ "method": "GET",
+ "host": "mastodon.jgarr.net",
+ "uri": "/following",
+ "headers": {
+ "Date": ["Wed, 30 Nov 2022 06:00:11 GMT"],
+ "Signatur
+ e ": ["
+ keyId = \"https://mastodon.social/actor#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) host date accept\",signature=\"a3EqAl1mUNhvTQvgWCng44mJpxSNcYo1CnTlUH8qy9i84S3bBSR6tIdHvK1dpoLI2+evgUvyLW0H8l20dG9jzLUIUPoXyTG+TapAKr6Z9i80F20IxoInQzoZVl3ytgkMqGw2EFV0fU2/K18/Z+
+ wECJCQoFivt / QcMXPs7ox / EqxikZ + WyKsBX / TprzqFTSfg / ozpEluAxLmfNsN3IxYnb8XAGZlZC2n4Vkg9Ue + LYHH7PhLq3XAdQPgCKSI1IUxZVpeo0WttESxhAmoxVMd5bXSGJTVFInqKSH3J8UyhwbPKcCWm4oFnuVGAeZuL1UwyIQsiFgj53pU6oV + zwzZrJQ == \""],
+ "X-Forwarded-For": ["fd7a:115c:a1e0:ab12:4843:cd96:626f:140a"],
+ "User-Agent": ["
+ http.rb / 5.1 .0(Mastodon / 4.0 .2; + https: //mastodon.social/)"], "Accept": ["application/activity+json, application/ld+json"], "Accept-Encoding": ["gzip"]}}, "user_id": "", "duration": 0.000069315, "size": 230, "status": 200, "resp_headers": {"Last-Modified": ["Mon, 28 Nov 2022 05:30:23 GMT "], "
+ Accept - Ranges ": [" bytes "], "
+ Content - Length ": [" 230 "], "
+ Server ": [" Caddy "], "
+ Etag ": ["\"rm1lyn6e\""], "Content-Type": []
+ }
+ }
+/following
+{
+ "@context": "https://www.w3.org/ns/activitystreams",
+ "id": "https://mastodon.jgarr.net/following",
+ "type": "OrderedCollection",
+ "totalItems": 1,
+ "first": "https://mastodon.jgarr.net/following_accts"
+}
+/followers
+{
+ "@context": "https://www.w3.org/ns/activitystreams",
+ "id": "https://mastodon.jgarr.net/followers",
+ "type": "OrderedCollection",
+ "totalItems": 1000000,
+ "first": "https://mastodon.jgarr.net/follower_accts"
+}
+Mastodon never validates the data in /follower_accts that we claim holds our 1 million followers so we don’t have to create that file.
If you click the follow button your Mastodon instance will send a POST request to /inbox with your user’s key signature.
POST https://mastodon.jgar.net/inbox
+"request": {
+ "remote_ip": "127.0.0.1",
+ "remote_port": "42294",
+ "proto": "HTTP/1.1",
+ "method": "POST",
+ "host": "mastodon.jgarr.net",
+ "uri": "/inbox",
+ "headers": {
+ "Content-Type": ["application/activity+json"],
+ "Digest": ["SHA-256=8we9H5V74oUdQr8R5vay/dyQEi0I2up5wwI7+9e8T70="],
+ "Signature": ["keyId=\"https://mastodon.social/users/jgarr#main-key\",algorithm=\"rsa-sha256\",headers=\"(request-target) host date digest content-type\",signature=\"hx1jRjCGyBfnI/Cak8ujAlfau5G1Ph+9niCFyRdm5J7b9wQGxbk+SbUhG0kV2L7W0h54JBc6htQhR8V+fFqxX+UiLXe1l7jRoBZOYSKq7UKqtogJwLLvS89DeDgWLWDPqbZ6W1FzU9MLUqJLTqFNnhgtOH+m+YhKEfjE35+65d5vmPUNjR8TRDAjXjMugMi3NmeaeA789NV3gs7GaGyfI734kGwvPDHcLp9MyDHqBivdDqmPAzXRP4gyrjqXHQRpxCdX7iinA/aqgnsNf2CoY/uH7M+z+zPWohlTvVDU2L+xeT2N7pXFc6WxREPV4ojZ+VxMzmIuzHkxW8TVpVNwMw==\""],
+ "X-Forwarded-For": ["fd7a:115c:a1e0:ab12:4843:cd96:626f:140a"],
+ "User-Agent": ["http.rb/5.1.0 (Mastodon/4.0.2; +https://mastodon.social/)"],
+ "Content-Length": ["779"],
+ "Accept-Encoding": ["gzip"],
+ "Date": ["Wed, 30 Nov 2022 07:01:44 GMT"]
+ }
+}, "user_id": "", "duration": 0.000112712, "size": 0, "status": 404, "resp_headers": {
+ "Server": ["Caddy"]
+}
+Unlike the requests before, this request will use the mastodon.social user’s signature and key instead of the instance actor account. +My instance should connect back to the mastodon.social server to verify the user’s signature, but you’ll notice the status 404 because I didn’t implement following or create an inbox file.
+Even though the status is 404 the requesting server still shows a follow request is sent. +If you cancel the request it will decrement the followers count.
+Those 6 files is all you need to create a Mastodon user. +Here are some caveats you may have already noticed.
+You can create JSON objects with posts, replies, or anything you’d like, but Mastodon instances don’t fetch posts from external users unless someone from that instance follows the user or has reposted one of their posts.
+I implemented a single post in the /outbox file so if you want to see how they are structured you can browse the source files
+.
The instance is supposed to fetch pinned posts, but I couldn’t figure out how that is implemented. +If someone knows please reach out and let me know at my real mastodon account @jgarr@mastodon.social +.
+Next, we’ll give this instance some of the functionality that doesn’t work. +We’ll allow users to follow the account, and then let it create posts.
+]]>
+Thank you so much for subscribing to this newsletter. +It has been my pleasure to bring you a new issue every week for the past 100 weeks!
+This is the last issue.
+I have learned a lot from creating this newsletter and it has been a fun project. I wrote my first web assembly for this newsletter and more JavaScript than I expected. I appreciate the feedback I’ve received and for you taking the time to read these comments.
+I hope the gifs made you smile, the comments made you think, and the links helped you learn.
+I have been reevaluating a lot of the things I do online, and realized I want to do less and own more. I’ve been creating content that lives on a lot of closed platforms and I want to take a bit more ownership going forward. I’ll still be active, but I want to be more intentional about where I spend my time.
+See the first link below for how to keep getting emails from me.
+When I first started using a comment to raise awareness about the war in Ukraine I assumed it would last for a month or two. A bit like the Covid pandemic I was naive to how long things like war and global pandemics last.
+My heart breaks thinking of everything they’ve had to endure, and I’m filled with exuberance to see how they’ve rallied together as a nation. The war is not over, but I hope and pray they can rebuild into a even stronger nation.
+
+https://www.justingarrison.com +
+I don’t want to make any assumptions about why you subscribed to this newsletter so I won’t be moving any subscribers from this newsletter to my blog newsletter. I created an email sign up form on the home page of my website and you are welcome to sign up to receive my articles in your inbox. There’s also a new and improved RSS option!
+If you want to subscribe to my blog feel free to reply to this email and I can add you.
+
+https://github.com/koenrh/delete-tweets +
+I deleted 58,000 tweets using this script. I never really thought I would spend 14 years on a platform and then erase all evidence I was there. I felt, sad, mad, and relieved all at the same time.
+If you delete your tweets make sure they’re not being embedded in your blog or referenced around the internet. I broke more things than I expected. My own self inflicted fail whale.
+
+
+Ever wondered how to implement a certain algorithm? This has dozens of common algorithms implemented in various different languages. It’s really good to compare how features of each language let them implement the same functionality in different ways.
+]]>This site is generated with hugo + which I love, but the default RSS template is very basic. +I wanted to make the RSS feed better for people using readers and share what I did.
+My goals were:
+The default hugo RSS template is good enough to get started, but didn’t have these things and I wanted the experience to be better for the 9 of you who subscribe.
+What I ended up with was first adding the <image> tag to the template which is a default RSS element and when you load a feed in a reader should fetch the image.
<image>
+ <url>{{ $.Site.BaseURL }}img/profile.png</url>
+ <title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}}{{ end }}{{ end }}</title>
+ <link>{{ $.Site.BaseURL }}</link>
+</image>
+The frontmatter of my posts all have a thumbnail parameter with the main image which shows up at the top of the page and as the open graph image when you share it on social media.
+Feedly documentation says it will use an open graph image, but it doesn’t appear to be working for my feed so I added the image manually.
<description>
+ {{ printf "<![CDATA[<img src=\"%s\"/> ]]/>" $.Params.thumbnail }}
+ {{ .Content | html }}
+</description>
+Now when you read the feed you see thumbnail images and full pictures for each item.
+
Instead of using {{ .Summary }} I used {{ .Content }} which puts the full article text directly in the feed.
Finally, I found some additional integrations with Feedly +, but I’m not sure how widely they’re supported.
+<webfeeds:cover image="{{ $.Site.BaseURL }}img/og-image.png" />
+<webfeeds:icon>{{ $.Site.BaseURL }}img/profile.png</webfeeds:icon>
+<webfeeds:accentColor>DBEAFE</webfeeds:accentColor>
+<webfeeds:related layout="card" target="browser"/>
+This gave me a nice thumbnail icon for the feed itself. +I haven’t noticed the accent color working, but maybe I’m missing something, or it’s the fact that I’m color blind.
+
I found some of these tips from their article about improving reader experience + and if you know about other RSS extensions like webfeeds I’d love to hear about them.
+You can check out my full RSS template here + and you can subscribe in any RSS reader here +
+]]>
+Examples
+Documentation comes in many forms. If you want a great article about documentation go back to the very first issue of this newsletter. Once I have learned how something works the best way for me to understand how to use it is with examples.
+This week I’ve been building something without any example code. There is a high level spec, an example (full) implementation, but no simple examples. It has taken me much longer than I expected to reverse engineer my use case without any examples.
+Blast radius
+The entire world has been impacted by this war, and two people paid the ultimate price last week when rockets hit Poland. This war has been going on for 9 months and should never have happened in the first place. It’s not over yet and I’m not sure how it’ll end, but I hope it does soon.
+SSH has been a versatile tool throughout my career. SSH tunnels is something I have to look u the syntax for every time. This visual representation will hopefully help me remember how each type of tunnel works.
+
+A Visual Guide to SSH Tunnels (with labs) + — iximiuz.com + SSH port forwarding explained in a clean and visual way. How to use local and remote port forwarding. What sshd settings may need to be adjusted. How to memorize the right flags.
+Every programming language has features I don’t know about, but usually they’re not features I feel like I would use. This one looks really useful in a lot of situations.
+
+TIL—Python has a built-in persistent key-value store + — remusao.github.io + Simplex Sigillum Veri
+Make is one of the tools I love to hate. I put off learning it for a long time because I didn’t understand it and thought there were better tools. There are better tools, but none as universally available as make.
+Your Makefiles are wrong · Jacob Davis-Hansson + Blog on programming and stuff around it
+]]>
+Stuck
+I was wrote Typescript this week for the second time in my life. Learning new things is hard. Learning them without adequate documentation or a person to point you in the right direction is a test of perseverance.
+It’s amazing to me that junior engineers can grow at all in this industry. Senior engineers that are too busy to document how things work and in too many meetings to talk to.
+If you’re a senior engineer, documentation can be one of the biggest impacts you can have in your organization. Teaching junior engineers can help you learn faster than going off on your own to build new things.
+Reason to celebrate
+This comment has been dedicated to updates on the Russian invasion in Ukraine since it started 8 months ago. This past week the Ukrainian military made key advances to take back cities in Ukraine and forced the Russian forces to retreat. I read reports that people were cheering in the streets because it was such a key victory. The war is not over, but celebrating the battle wins is an important part of being one nation with a common goal.
+Because this newsletter is all about gifs and programming this is the perfect link. An endless gif.
+ +An endless GIF that always shows the current time in UTC
+Twitter has been recursive for years, but this is a fun post on how to predict tweet id URLs.
+Oisín Moran | How I Made a Self-Quoting Tweet +
+A tweet that references itself
+Databases are magical until you learn how they work. Then they’re scary.
+
+How do database indexes work? + — planetscale.com + binary tree
+]]>
+
+Accidental priorities
+I uninstalled the Twitter app from my phone last week. My screen time usage dropped 24%. An average of 1 hour and 45 min every day. I knew I was checking it too much but I didn’t realize how much.
+I’m trying to capitalize on some of that extra time with intentional learning and choosing what I prioritize. I would like to spend the time learning things more deeply, but that is difficult in 5-15 minute increments. So far I haven’t figured out what will work for me, but I have had more motivation to write on my site. If you haven’t subscribed to my site please check out the first link.
+A million snowflakes
+A snowflake is a beautiful work of art from nature. A blizzard is an overwhelming, blinding storm. An avalanche is the terrifying breaking point of unsupportable burden.
+I read an update about the Ukraine war this week and it said people work “emotionally exhausted” and that must be the understatement of the year. Covid, recession, climate, and on top of that war! The people in Ukraine are the toughest, most resilient humans on the planet.
+It has been 10 months and I still hope this war comes to a quick conclusion so they can begin rebuilding their country, cities, and lives.
+I wrote a about some common idealized rules for infrastructure and why they’re dangerous.
+
+Automated, immutable, and declarative - Justin Garrison + — www.justingarrison.com + The infrastructure lies we tell ourselves, and why they’re useful.
+A good round up of areas where Kubernetes is complex.
+
+Accidental complexity, essential complexity, and Kubernetes | Drifting in Space + — driftingin.space +
+Why Kubernetes is complex
+Systems don’t need to scale at the beginning. If you’re building for scale without data then you’re pre-optimizing when you should be shipping features and getting users.
+
+How to peacefully grow your service | by Jaana Dogan | Aug, 2022 | Medium + — rakyll.medium.com + In the last almost two decades, I have seen numerous Internet services ranging from small services for niche markets to Tier 1 services for major Internet companies. In this period, apart from…
+]]>The goals of infrastructure since I started managing it has been to automate it, make it immutable, and make it declarative. +A good sysadmin never had to do something manually twice. +An SRE doesn’t let their infrastructure change. +Platform engineers are imperative allergic.
+All of these idealized extremes are guaranteed to waste your time. +They are helpful mechanisms to employ as needed, but without understanding their usefulness can be dangerous traps.
+The benefits of speed, consistency, and a deep understanding of the systems you’re automating include having more time to automate more things and a fast track to a sysadmin level 2. +Automation can be leveraged thousands of times for thousands of hours or maybe only once a year for a few minutes.
+You shouldn’t have to manually do something more than twice, but the effort level of automating a system safely may be more than manually doing it 100 times. +It’s up to you to determine if the automation is worth it.
+How long does it take and how often is the task performed are the usual calculations to see if automation is worth it. +The unknown maintenance, feature additions, documentation, and training may take as much time as the initial efforts. +Not to mention the eventual re-write to rust.
+The downsides of automation include―but are not limited to―automation that exits half way and requires manual work to revert. +Accelerating an outage by running automation that assumed a system was healthy.
+The key to successful automation is to write the smallest amount of it as necessary. +Have well defined scope to the task your automating, and validations to assure it’s run under constrained circumstances.
+Automation is great. +The mantra to “Automate all the things!” is scary.
+Nothing should ever change in production. +Except for application deployments, logs, memory heaps, and a million other things you don’t care about until something breaks.
+The need for immutability came from a time when we had physical servers and very little automation. +It was hard to set up a server. +Days of plugging things in, updating firmware, rebooting, installing the OS―usually via physical media―rebooting again, and changing 18 files with the lessons learned from previous outages.
+After setup, the easiest thing to do was to not touch it. +Uptime was a source of pride because it was hard to achieve. +Keeping a server powered on for 365+ days was hard work and a badge of honor to show how good you were as a sysadmin.
+When we finally started to care about things like security patching, we would do everything to avoid rebooting the system.
+So we would mutate them.
+Anything short of a kernel update would get yum update and a quick SIGHUP.
Minimal automation and mutating files on disk didn’t scale. +More updates required more mutations. +Operating system, runtimes, and configuration changes required more downtime which was hard to plan for during maintenance windows.
+So, the pendulum swung the other way and immutability was the new uptime. +We could automate more things with new tools so everything old was new again. +Don’t-call-them-golden-images were all the rage. +Wrap your mutable RPMs in a Dockerfile and even your apps could be golden.
+“Infrastructure as cattle” became the goal, and plenty of conference talks proclaimed the enlightenment they had achieved. +The combination of automation and immutability made it so your could take a little bit of bash, terraform, and some artifacts and create a complete environment that never changed.
+The golden signal of a good sysadmin―now called SRE―was how fast you could create an environment from scratch. +“I can recreate everything automatically” was the most common lie we told ourselves. +The belief that nothing changed without us knowing was never spoken out loud. +So we called it “immutable”.
+The truth is, a system that doesn’t change isn’t useful. +It’s a snapshot, not a running system. +Lots of things change, but the things we carefully crafted should change less often or change with intention.
+The application configuration doesn’t change. +Unless you want to use dynamic feature flags or graceful degradation. +Operating systems never change unless you want fast patch times or need interactive debugging.
+The images should be golden, but the complete system cannot be semver’d. +Environments change too frequently. +You can’t take a snapshot of everything and re-deploy it exactly how it was. +Data―the thing you care most about―is different. +Tables have changed, APIs have updated, security keys are rotated (or they should be).
+There’s no such thing as complete immutability, but there is value in knowing which parts of your system should change and which parts shouldn’t. +When you evaluate the system you’ll find a lot more things mutate than don’t. +Hopefully, the pendulum has started to swing back to center and immutability is not the new uptime.
+Immutability still doesn’t solve problems of deployment. +Things mutate to create artifacts, get pushed to a storage system, and then a Jenkins orchestrated, Rube Goldberg bash script wraps curl, SSH, hopes, and dreams to push out a new version without downtime.
+We thought we were creating reproducibility with Dockerfiles, but reality was relying on :latest is just as mutatable as yum update-ing.
+There had to be a better way.
Instead of fixing the problems we created we decided that imperative steps were the problem so we started making things declarative.
+If statements were unreliable so they were removed.
+Loops and logic could not be statically queried and often lead to incorrect assumptions being made during outages.
+So they were abandoned for declarative, WET code.
We wrote more HCL and YAML than we ever planned in our pursuit of fully declarative APIs in the same way we chased complete immutability. +Just like immutability, fully declarative systems is a lie.
+The parts of your system that are immutable should be declared, but declarative systems are rigid and reliability requires flexibility. +How many replicas does your deployment have right now? +Hopefully, that’s not statically declared but dynamically scaled based on need―and limited based on budget. +What are the DNS names of your service load balancers? +It doesn’t matter, the Kubernetes service is dynamically provisioned and associated with targets and they’re available.
+We’re all tired of writing WET yaml so let’s go back to DRY HCL. +Better still, we can use the power of general purpose programming languages with Pulumi + or cdk8s + to create abstractions on top of the declarative APIs. +Then we transpile it to the verbose, declarative text files we can’t be bothered to artisanally hand craft on our Cherry MX switches.
+The goal of declarative systems is to reduce error prone, imperative automation. +If we can trust the declarative APIs then we can have some assurances the state of our systems are―or eventually will be―reconciled.
+Similar to immutable systems, we want to think we know what’s going on. +The best way we can find and fix a problem is to start with the correct assumptions, and ask questions of the running system to be answered―hello observability.
+The goal of all of these mechanisms is reliability. +Reliability happens with careful planning and understanding when to use―and not use―the mechanisms available.
+There will be a new goal, slogan, and unattainable holy grail. +Understanding how and when to implement the tools available for your requirements is the only way to succeed.
]]>
+How did this happen?
+I’ve been feeling not like myself for the past few weeks. A combination of traveling alone, sick family, and changes have left me feeling directionless. Sometimes we need to reset and check our priorities, but we don’t always have the answers.
+If you died today how would you want to be remembered? How do you think you would be remembered? Making those answers match is an ever changing, life-long process. Enjoy the journey without losing sight of your goals.
+Doing the work
+I met a friend in person who has been serving in the Ukraine armed forces. It was so good to see them and I asked what I could personally do to help. He had a few requests I gladly agreed to do everything I could.
+At some point you have to stop talking and start doing. I was glad to reach that point to help. I know there’s still more I can do, and I’m thankful for the people I’ve seen doing the work for a while.
+I believe the next big innovation in software development will be giving more people access to development tools and enabling more people to solve problems without writing code. The Replit mobile app is a dev environment with few trade-offs. It’s not a fully featured IDE for today’s enterprise development, but I can’t wait to see the software that gets written with it.
+
+Replit - Replit Mobile App + — blog.replit.com +
+Announcing the Replit mobile development app.
+Ferymon is created a WASM based cloud so they have something to tell with this article but it’s not all wrong. Some of the concerns from the past need to move out of the application and into the infrastructure. Event driven architecture and functions as a service have already been doing this and for me it hasn’t been the panacea I thought it would be.
+
+Rethinking Microservices | Fermyon Technologies (@FermyonTech) + — www.fermyon.com + Microservices are serving us well in many ways. But in some ways, we can do better. Will microservices v2 be powered by WebAssembly?
+Solving more problems and writing less code by focusing on the right things.
+
+Elided Branches: The Product Culture Shift + — www.elidedbranches.com +
+Adding product management to more traditional software infrastructure organizations, sometimes with a shift towards platform engineering, is all the rage today. As someone who has done both these things, it doesn’t surprise me to see so many people struggling to make it work.
+]]>
+Velocity is better than speed
+In physics speed is the rate of change over time. How fast something is going. Velocity is speed + direction. Depending on the target, you can have negative velocity.
+Moving fast isn’t a good measurement for making progress. It is better to move slowly in the direction you want than fast in any direction available. Maybe you’ll get lucky and you’ll move fast in the right direction for a little while, but unless you have a destination in mind you’ll likely lose focus and change course without realizing it.
+There’s too many things to learn and too many cool things to play with. Having distractions, hobbies, and things you do just because you enjoy them are great! But if you’re trying to make progress and achieve something you’re going to have to figure out what next step will point you in the right direction. No matter how slow you go.
+The cost of war
+I hope the war ends soon. There have been 6,322 civilians killed, including 397 children, and 9,634 civilians have been wounded since the war began.
+6,322 people had stories about what the had done. They had plans for where they were going. They can’t tell their stories or achieve their goals any more.
+I’ve wanted to do this math for a long time. Lambda and any 1:1 request to function system can be very cost effective for a long time. At some point the lines cross and it’s cheaper to run a server that can handle multiple calls.
+
+Modeling & Analyzing Lambda vs. Fargate Breakeven - Nuvalence + — nuvalence.io +
+At what scale do the economics of functions vs servers make sense
+There are a lot of cool projects that never become widely used. I’ve used projects like this in the past and it’s always cool to me how flexible the “everything is a file” paradigm in Linux can be.
+Teleforking a process onto a different computer! - Tristan Hume +
+Run a process on a different computer
+Lots of great information and stories from the maintainer of `curl` If you’re looking to get more involved with open source this is a good read.
+
+README - Uncurled + — un.curl.dev +
+everything I know and learned about running and maintaining Open Source projects for three decades.
+]]>
+Application Native
+The traditional box drawn around an “application” has been small. Developers don’t need to learn the other stuff like networking, storage, load balancing is a lie we’ve told ourselves for a long time—especially with traditional, on-prem infrastructure. The dividing line between teams was the boundary where applications ended and ops began.
+Ops was everything developers didn’t want to do. In reality, the application always included ops just as much as it included application code. Customers don’t care if you’re on-prem with Cisco switches and NetApp storage or in AWS with VPCs and s3. It’s all part of the application.
+Cloud Native came along and made infrastructure API driven. It made it possible for applications to take ownership and declare the requirements of their code, but it was not easy to get right. Infrastructure was still a separate thing managed by a different team with unknown skills.
+Now infrastructure is regularly managed by application teams whether they realize it or not. The Lambda function with API Gateway and Kubernetes deployment with LoadBalancer service are both managing infrastructure. Things like policy as code, service mesh, and mounted volumes bring security, networking, and storage into application management. It abstracts them into smaller, sane defaults the application code can use without requiring application developers to understand how they’re implemented.
+This is a good thing! Application teams can move faster and become customers of the services provided by the other components. Flexibility is available on a per application basis instead of per account or data center.
+What goes around comes around and for people familiar with Heroku this is what many people call a platform, but application native is more than that. It’s more flexible than platform guard rails at the cost of learning the additional configuration.
+Application developers don’t want to learn infrastructure, but when infrastructure speaks their language, hides the global complexity, and allows them to coordinate less with external teams the benefits are huge.
+People
+I met a ton of amazing people from all over the world last week in Dubai at Gitex. People from places I’ve never been and with backgrounds I know nothing about. The amount they’ve overcome, the skills they acquired, and the things they’ve accomplished left me humbled.
+Every conversation opened my mind to the amount privilege I have for being born who I am, where I was, when I was. I’ve had my own challenges, but they seemed miniscule in comparison.
+The people in Ukraine are overcoming more than I can imagine right now. They’ve been fighting to keep their freedom while others around the world fight for their freedom for the first time.
+I’ve never been more thankful for all of the freedoms and privilege I’ve been given and hope I can use them to give others more.
+My talk last week was all about how to manage infrastructure with control loops—what I call “Infrastructure as Software.” In my demo I used this example of a Crossplane package to condense the complexity of an EKS cluster into ~15 lines of configuration. Worth a read if you’re on a platform engineering team or manage infrastructure from your application.
+Production-Ready EKS Cluster With Crossplane + Crossplane allows you to manage cloud resources with the Kubernetes API using the kubectl.
+Charity Majors has seen a lot of stuff in her career and I generally agree with her observations about what’s happening with “ops” jobs. I like to describe the shift as “Application Native Ops” because more of the traditional ops tasks are shifting into the application layer. Scheduling, network, security, availability are all things that are handled by application teams via a platform or service (e.g. Lambda, Kubernetes, fly.io). The platforms have different default settings and some have more knobs than others, but it’s almost always the application that sets the desired configuration.
+
+The Future of Ops Jobs | A Cloud Guru + — acloudguru.com + The role of operations engineers is changing fast, and the role is bifurcating along the question of infrastructure.
+Since this issue is infrastructure focused I’ll add this great breakdown of what the backend of Netflix looks like at a high level. I worked at Disney+ for a while and one of my favorite things was trying to piece together all the components that users never see—there’s a lot.
+
+A Design Analysis of Cloud-based Microservices Architecture at Netflix | by Cao Duc Nguyen | The Startup | Medium + — medium.com + A comprehensive system design analysis of the cloud-based microservices architecture implemented at Netflix to power its global video streaming services
+]]>
+The right tools
+I’ve been building a shed in my backyard and it has turned into a neighborhood project. Multiple neighbors have graciously provided labor, tools, and advice to help me. This past weekend I was measuring and cutting facade trim boards and my neighbor, who has done woodworking for decades, was helping me.
+As we were measuring the wood for where to cut he was going to mark the cut and he stopped. He got down from the ladder and asked if I had a sharper pencil.
+At first it seemed like a strange request because the pencil he was holding was perfectly capable of making a mark, but I knew he was leaning on his intuition that precision mattered. That taking a couple minutes to get a sharper pencil would save him the expensive time of possibly cutting the wood incorrectly.
+He was later helping me put down roof tiles and as we were cutting felt for under the tiles he pulled out his special tool for roof felt—a 12" meat cleaver. Quite possibly the least precise “tool” you could use.
+In development we often look for the “best” tools. We spend time configuring our environment to optimally flow with our preferences. We rarely stop to think if we need the level of precision we’re asking of our tools. Using something that’s good enough for the task at hand and spending extra time on the expensive tasks that matter.
+Not everything needs to be the “best.” Those tools will usually slow you down with extra precision that has little added benefit for the end product. Find tools that match the requirements and update them as needed.
+Glory to Ukraine
+Anyone that has been reading the newsletter for a while knows I’ve been dedicating one comment to updates about the Ukrainian war. Last week there was hopeful news of victories by the Ukraine armies. Monday there was a barrage of bombs from Russia in retaliation.
+It’s still unclear right now what the outcome of the attacks will be, but I still hope and pray for the people in Ukraine that they will stay safe with minimal injuries and this war will end soon.
+We’ve probably all implemented bad ideas that worked surprisingly well. In this case, someone solved their problem of a website that would go down with bash and thinking outside the box.
+
+ITAPPMONROBOT - The Daily WTF + — thedailywtf.com +
+How to restart your computer automatically.
+You don’t have to be active in politics to want a better understanding of how your government works. This is a really neat REST API for The United States government. I’d love to hear if you know of other APIs that exist for governments in other countries.
+ +An API for querying everything related to congress
+I’ve been traveling more the past couple of months and I have avoided doing any development on planes because of the unpredictable internet access. I never thought about downloading the documentation I needed before traveling, but I’m going to give Zeal a try next time I want to build something at 30,000 ft.
+Zeal - Offline Documentation Browser +
+Zeal is an offline documentation browser for software developers.
+]]>
+Run software only as long as it needs
+The Double Asteroid Redirection Test (DART) mission happened recently and successfully crashed. I wish more software had a finite life span.
+“This is temporary” is a guaranteed way to make sure something runs forever. In my first sysadmin role there were plenty of “quick fixes” I implemented that were still running when I left. They weren’t documented and very few people knew why or how they were put in place. I’m pretty sure they’ve all been replaced, but sometimes I worry my naivete about how long it would have to be run combined with my documentation aversion because it “slowed things down” caused someone to be woken up from an alert and have to fix my fix.
+Don’t believe any software is temporary unless you know the computer where it runs will experience kinetic energy like the GIF above or first link below.
+So hopeful
+The war in Ukraine is not over but with some recent victories I’m hopeful it can be. The people and country need time to rebuild—physically, emotionally, mentally, economically.
+I cannot imagine the loss and pain they have gone through, but the resiliency and spirit of the Ukrainian people has shown me what it’s like to be a country united.
+If you only read one link from this week’s newsletter make it this one. A story that has stuck with me for years.
+
+An amusing story about a practical use of the null garbage collector - The Old New Thing + — devblogs.microsoft.com + The computer itself ceases to exist.
+Here’s a different kind of Dart. I’ve been learning some mobile development and trying to use Flutter + Dart. This was one of the more complete walk-throughs I found to get started.
+
+Flutter + Dart, or how to quickly build a mobile app without losing (too much of) your hair - Altkom Software + — www.altkomsoftware.com + In this day and age there’s a steady influx of new, revolutionary frameworks, be it frontend-related or mobile. If one has been active in web development, she
+This site will show what javascript is being injected into a page from an in-app browser. Helpful when you don’t trust the app your browsing from.
+iOS Privacy: Announcing InAppBrowser.com +
+See what JavaScript commands get injected through an in-app browser · Felix Krause
+]]>Adopting the cloud isn’t only about infinite capacity or on-demand flexibility. +It enables new ways of managing your infrastructure. +Using Kubernetes to dynamically manage applications and infrastructure is a powerful pattern many successful businesses use. +You can use the power of the cloud with the patterns of Kubernetes to improve your resiliency and scalability.
+accepted
+]]>
+The longest day of my life
+I flew from Bangkok to Los Angeles last week. The flight left at 0030 on Wednesday the 21st. It was a 6 hour flight to Seoul airport with a 7 hour layover.
+The second leg of the flight was 12 hours long and crossed the date line. After 25 hours of traveling I landed at my destination at 1000 the morning of the 21st. Ready to relive the day.
+Multiple apps on my phone erased the day I just lived because there was no way to programatically prepare for what just happened. I don’t know an answer to this problem, but I hope it’s possible—and easier—in the future.
+Ukraine Update
+I don’t know exactly what’s going on with the war in Ukraine right now. Based on the few news articles I’ve read it sounds like I’m not the only one.
+I hope this is over soon and people can begin to rebuild their lives.
+I have never heard of a hashquine before and it’s really cool! A file that displays its own hash. Unfortunately, it’s usually accomplished via collision trickery but still a neat concept. Would be awesome to figure out how this could work in a plain text file.
+[tweet https://twitter.com/David3141593/status/1573218394358386688 +]
+Speaking of decoding things. A good breakdown of how QR codes work.
+
+QR codes | Dan Hollick 🇿🇦 + — typefully.com + Ever wondered how a QR code works? No, me neither but it’s low-key fascinating. (Warning, there is some extremely nerdy shit here.👇 )
+I don’t know what I’d use this for but now I want to find something. Either way, it’s cool to add custom functions to Google sheets.
+
+Google Maps Formulas for Google Sheets - Digital Inspiration + — www.labnol.org + Use Google Maps formulas inside Google Sheets to calculate distances, travel time, get driving directions, look up postal codes with reverse geocoding and more!
+]]>
+Experience != expertise
+Lots of companies want you to have experience. They require years of experience with X technology, but those years don’t translate to expertise.
+Many companies don’t require expertise, but because they’re not experts themselves they don’t know what they need. Years of riding a motorcycle will give you a lot of experience, but the expert level riding in this gif—and a decent amount of luck—show what’s possible.
+A non-update update
+I’m writing this newsletter early because I’m traveling. If you’re a new subscriber I use a comment each week to raise awareness about the Ukraine war. Assuming it has not ended in the past 11 days—which would be awesome if it peacefully ended—it is still happening and people are still dying.
+Even if the war is not in the news that doesn’t mean it’s not happening or important. There are a lot of terrible things happening in the world right now and I encourage you to protect your own metal well-being to stay healthy and supportive of those around you.
+A good overview of pagination for API requests. Why you need it and different strategies to achieve it.
+
+Paginating Requests in APIs. | Medium + — ignaciochiazzo.medium.com + Learn the most common pagination API strategies: Cursor-based, Key Set-based pagination and Paged based paginations. Learn what the industry use.
+Gamification of learning is nothing new. Writing your own games for learning is less common. This site looks really cool to help you learn by modifying existing games or writing your own.
+Akedo - Play, Craft, Master + Retro gaming and coding platform with extensive catalogue of classic arcade games you can edit to make your own.
+I didn’t know this was possible with HTML so I wanted to share in case you didn’t know too.
+
+TIL: You Can Access A User’s Camera with Just HTML + — austingil.com + So that’s the HTML capture attribute. It’s a pretty cool way to add a nicer user experience if you know that your mobile users are going to be taking a
+]]>
+The importance of community
+Two weeks ago my dad passed out and was brought to the hospital. He had internal bleeding and when I got the message they didn’t know what was wrong. All they knew was he had lost a lot of blood.
+By the time I got to the hospital they had a better idea that it was likely an ulcer caused by ibuprofen. There was still a lot of uncertainty, but it turned out to be correct and he got the medicine and blood transfusion he needed and is doing much better.
+The doctors and nurses saved his life. My family and community of coworkers and friends enabled me to drop everything and be with him. I hope you have a similar network of support to help you focus on the important things when the time comes.
+Negotiations
+Ukrainian government expressed interest in negotiating a peace with Russia to end the war. They also implied it is impossible to negotiate with someone who who cannot be truthful—or even admit to invading foreign soil.
+The coming winter is going to be difficult even without an ongoing war. Now is the time to find a community that can support you and you can support in the coming year.
+A nice tool that gives most of the important information from dig in an easier to read output.
+
GitHub - natesales/q: A tiny command line DNS client with support for UDP, TCP, DoT, DoH, DoQ and ODoH. + — github.com + A tiny command line DNS client with support for UDP, TCP, DoT, DoH, DoQ and ODoH. - GitHub - natesales/q: A tiny command line DNS client with support for UDP, TCP, DoT, DoH, DoQ and ODoH.
+I’m going to have to read this one a few more times before I understand any of it. This last time I read it I learned why ipv6 doesn’t have/use ARP.
+
Hello IPv6: a minimal tutorial for IPv4 users + — metebalci.com + A short IPv6 tutorial, explaining the basics, primarily for home and small networks.
+I really good write up about an incident at Datadog and how they tracked it down. It’s full of unexpected places to find what seems like “normal” connection errors. Good for them for also putting in all of their false assumptions about what was causing the problems.
+
It’s Always DNS . . . Except When It’s Not: A Deep Dive Through GRPC, Kubernetes, and AWS Networking | Datadog
+ — www.datadoghq.com
+ The story of a seemingly simple issue that led us into the hidden complexities of gRPC, DNS, and Kubernetes.
+Culture
+“The emotional intelligence of management is what makes a company culture miserable or excellent.” Out of Office: The Big Problem and Bigger Promise of Working from Home
+I read this book last week and it had some really good insights that put words to experiences of corporate America. The main lesson from the book is working remotely is going to amplify the dysfunctions of companies and until bad practices are fixed working remotely isn’t going to be the idealistic environment so many people hope it will be.
+We interrupt this regularly scheduled Ukraine conflict update
+Comments are usually reserved for things I learned or tips for development. Ever since the war in Ukraine started I have reserved one of the comments to raise awareness of the conflict.
+This week I would like to interrupt the interruption to remind you that transgender rights are human rights and technologies and companies are not politically neutral.
+You might have the privilege to ignore politics, but I guarantee you not all of your co-workers or users can. The sooner you listen to how they are impacted by seemingly neutral decisions the better you can understand your privilege and how you can lend it to others.
+Are you a new manager or trying to improve your 1:1 meetings with your manager? This repo has some good ideas for questions and ways to make it more useful.
+
+GitHub - eugeneyan/1-on-1s: 🌱 1-on-1 questions and resources from my time as a manager. + — github.com + 🌱 1-on-1 questions and resources from my time as a manager. - GitHub - eugeneyan/1-on-1s: 🌱 1-on-1 questions and resources from my time as a manager.
+This site has the best visualizations of machine learning algorithms I’ve seen. If you ever wanted to get started with machine learning—or just understand the jargon better—this is a great place to start.
+
+MLU-Explain + — mlu-explain.github.io + MLU-Explain
+Finally, a vscode plugin that can tell me what */2 4 5 * 1 means. Check out crontab.guru + if you don’t use vscode. Just don’t tell anyone I included 4 links in this newsletter 🤫
+
+Cron Explained - Visual Studio Marketplace + — marketplace.visualstudio.com + Extension for Visual Studio Code - Translate cron-like schedules to a readable format
+]]>Everyone knows about garbage collection, but few people understand how it works. +Using every day objects can help you visualize invisible concepts such as garbage collection. +In this demo you’ll learn about what your software is doing when it’s time to take out the trash.
+Garbage collection is sometimes seen as a bad thing in software. +It’s easy to blame pauses and downtime on things we don’t understand. +Garbage collection has a lot of benefits and we’ll show why it’s necessary and what it’s doing. +We’ll represent it with physical objects so you can visualize what is happening under the hood and understand how it benefits your applications.
+rejected
+]]>I hosted a Twitter space to discuss the differences between devops and Site Reliability Engineering (SRE). It was very insightful and I was lucky to have amazing guests Liz Fong-Jones + and Emily Freeman + who I learned a lot from.
+If you have the time available you should listen to it here. https://twitter.com/i/spaces/1BdGYwZvaByxX +
+If you don’t have the time, here’s a summary.
+My first observation was that devops—in its intended form—required an org chart that was decentralized. SRE took an exact opposite approach and centralized the responsibility of reliability in a role. Sometimes SRE roles work on product teams, but they often report to a central SRE org and not the team manager.
+For years the devops community fought, and lost, the battle to keep “devops” out of job titles. It wasn’t a single person’s responsibility to create a culture that fostered learning and full application life cycle responsibility.
+Devops requires companies to work inefficiently because you have a lot of role duplication on teams, but you gain in speed and flexibility in team ownership. Devops jobs became new names for sysadmins, Jenkins administers, and occasionally a permanent member of an application team.
+Along came SRE—straight out of Google. SRE was easier to adopt for a lot of organizations because the reporting structure and centralization of expertise already existed in most large organizations. It’s harder to restructure an organization to allow self-sustaining, independent teams (i.e. devops) than it is to change the expertise on existing team structures (i.e. SRE).
+Liz and Emily both brought up some great questions and observations about each option. Here are some of my highlights from the space.
+Shifting things left to be addressed earlier in development doesn’t work for everything. DevSecOps tries to bring security into the early development cycle, but if you shift everything left you just end up with a pile with so much you can’t move forward. You need to be selective with what is important early on.
+“Debt is an investment. You take on debt to generate value and when you have sufficient value you begin to pay down the debt.” - Liz
+Blurring the line between pre/post production and allowing developers to work more safely in production is a good thing. Don’t spend infinite amount of time or money trying to make test environments look exactly like production.
+More teams and roles are having software development problems the more they use software defined infrastructure. Examples of network engineers now deploying VPCs instead of physical switches.
+Both structures need to focus on sustainability and need a voice at the executive level. If your company doesn’t have a director or executive level IC path then you won’t be able to help make decisions at that level. The most critical of which is how the org is structured.
+Platform teams focus on UX and defaults for development teams. They are centralized for good and bad reasons. It allows for easier sharing between teams, developer on-boarding, and helping teams learn and apply lessons from others. Platform teams need internal developer advocates.
+Mandated platforms are not successful.
+]]>
+Cloud Computing
+The phrase “the network is the computer” was coined in the 80s at Sun Microsystems to describe that you could use computing resources from other systems to enhance your local needs. The idea had been around before, but the ethos was driving computing in new ways.
+In the 90s and early 2000s computing became localized because computing power and operating systems were meeting the needs of the work to be done. Smartphones had simple workloads but grew beyond what local computing and batteries were capable of.
+There are always form factors that will be confined to local compute resources, but for general computing devices we’ll never go back to constraining ourselves to only localize compute. The advantages of using “the network” are too great.
+Sustaining
+Sprinting is a very different than running a marathon. Marathons need to consider how you pace yourself and refuel your energy as time goes on.
+If you’re new to this newsletter there are usually two comments dedicated to development tips and information, but for the past six months I’ve been using one comment to raise awareness of the war in Ukraine.
+This war has been a marathon. It’s not in the news because attention is short and news requires attention. You don’t see it in mainstream media but that doesn’t mean it’s not happening and affecting millions of people.
+Be kind. You never know how far someone has come or how much energy they have available to continue.
+I hosted a Twitter space last week with Emily Freeman and Liz Fong-Jones about Devops and SRE. I had a lot of fun and so many people asked great questions. Have a listen if you’re confused about how the roles are different and where they overlap.
+
+Play recording: [Rec] Devops vs SRE + — twitter.com + Justin Garrison’s Space · Where live audio conversations happen
+I needed a way to make a web page appear to load slowly. I immediately started looking for command line tools to throttle bandwidth and I completely forgot Chrome had this feature built in. I made a custom 56k profile and relived some of my high school experience.
+
+Simulate low-bandwidth conditions with Chrome’s network throttling + — ma.ttias.be + Chrome has a built-in developer feature that allows you to simulate low-bandwidth conditions on website. This is very useful if you’re testing mobile versions of an application (with GPRS/3G/4G/…) or want to test network congestions and high latency situations.
+In some of my debugging this week I stumbled upon this site for debugging connections to GitHub. Could be useful if you’re troubleshooting cloning or connectivity problems.
+ +Site to help you debug slowness and connection issues to github.
+]]>
+No code walls
+I’ve been prototyping a mobile app with no code solutions. It helped me start quickly, but I hit limitations with functionality I needed. I tried multiple options and they all had similar—but different—limits.
+I finally decided the app was worth making so I started picking a language, framework, hosting, etc. I’ve never written a mobile app before so it’s all new to me. I decided on Flutter which took me much longer to set up than I expected.
+The time spent on setup and research made me lose some of the excitement and motivation for the app. Persevering through learning hurdles is a big part of being a developer. If you don’t find yourself completely lost on occasion you’re not be learning new things.
+Independence
+I delayed sending this issue until it was August 24th in Ukraine. Today is their independence day from the Soviet Union in 1991. Today also marks 6 month of fighting to keep their independence from Russia.
+I still think of the families, soldiers, and my friends daily. They did not ask for this war, but they had to put their personal plans on hold and fight for their country or flee for their lives.
+This was a good article. Not as much for the question it answers, but for the history it explains about DevOps, SRE, and platforms.
+
+“Who Should Write the Terraform?” – zwischenzugs + — zwischenzugs.com + The Problem Working in Cloud Native consulting, I’m often asked about who should do various bits of ’the platform work’. I’m asked this in various forms, and at various levels, but the title’s question (‘Who should write the Terraform?) is a fairly typical one. Consultants are often asked simple questions that invite simple answers, but…
+The above article inspired me to write a thread about DevOps vs SRE. Some insights I’ve learned after being on platform and SRE teams and learning how Amazon organizes service teams.
+[tweet https://twitter.com/rothgar/status/1561073602832650241 +]
+Jasonelle lets you write mobile apps for iOS and Android with JSON and JavaScript. The examples are neat and could probably help you prototype something quickly, but the nested HTML/CSS in JSON would probably get unmaintainable if the app got too complex.
+GitHub - jasonelle/jasonelle: 🛸 🏘️ Jasonelle issues, releases, discussions and wiki repository. + 🛸 🏘️ Jasonelle issues, releases, discussions and wiki repository. - GitHub - jasonelle/jasonelle: 🛸 🏘️ Jasonelle issues, releases, discussions and wiki repository.
+]]>
+Design fossils
+When you start a new job or contribute to an existing code base you often have to dig to find where to make changes. Every time I do this I start thinking “I wouldn’t have done that” or “how does this work?” but it’s important to recognize I don’t have the limitations or knowledge the original creators had at the time.
+Everything builds on the past and you can’t be dismissive of what appears to be a bad decision with hindsight. Every day we’re making equally bad decisions that appear correct with our current context and knowledge. Be kind to yourself and those who came before you.
+Families
+I cannot imagine what the families fleeing Ukraine and Russia are going through. The thought of trying to flee my country with my own kids leaves me numb. They’re doing their best to get to safety under increasingly hostile conditions. I don’t know the best way to help besides sending money and supplies to local organizations that are able to help on the ground where it’s needed most.
+If you’re new to this newsletter—welcome! One of my comments is reserved for raising awareness of the war in Ukraine until the conflict is over.
+Dotfiles and hidden files that start with a . were a mistake. The `ls` command was trying to ignore the current directory and parent directory (. and ..) and failed to test the rest of the file name.
+A lesson in shortcuts. Long ago, as the design of the Unix file system was b… + A lesson in shortcuts. Long ago, as the design of the Unix file system was being worked out, the entries . and .. appeared, to make navigation easier. … - Rob Pike - Google+
+We continually live with decisions made in the past. The way a terminal emulator interacts with your screen and shell all have roots in hardware you’ve likely never touched.
+The TTY demystified + The TTY subsystem is central to the design of Linux, and UNIX in general. Unfortunately, its importance is often overlooked, and it is difficult to find good introductory articles about it. I believe that a basic understanding of TTYs in Linux is essential for the developer and the advanced user.
+Sometimes our decisions are wrong and need to change immediately. Other times they’re still wrong but it doesn’t matter and we can live with those decisions for a long time. Here’s a good example from the early days of Reddit.
+Reddit’s database has two tables | Kevin Burke +
+The early data design decisions for Reddit.
+]]>
+Complements
+When someone gives you a complement to your face, or via chat, or even in pull requests it feels good. If it’s a complement aligned with your values it could give you a boost for a long time.
+If the complement is unexpected or about something you are self conscious about it may make you feel worse; even if the other person intends it for good.
+Some of the best complements are the ones people say behind your back. They praise your work to someone else. They ask to be on a project with you, or say something like “they’re great” in passing.
+You don’t get the immediate lift, but you also avoid the potential down. Complements behind your back are the best for your long term happiness and success.
+Be Kind
+I’m reminded this week that you never know what someone is going through. Just because they appear “normal” doesn’t mean they’re not struggling. The mental and physical pain someone may be going through is not apparent.
+They may have lost a pet, have chronic pain, or live in a country at war. We are all human*. Remember that you’re communicating with complex people in everything you do. Showing kindness can go a long way.
+*if you’re reading this newsletter and are not human please let me know :)
+This article goes into a lot more than just publishing a package. Everything from setting up git hooks, GitHub actions, and testing. Worth a read if you’re a Python developer—or want to become one.
+
+How to create a Python package in 2022 | Mathspp + — mathspp.com + How do you create a Python package? How do you set up automated testing and code coverage? How do you publish the package? That’s what this article teaches you.
+The `yes` command has got me in more trouble than any other Linux command. I took down a Kubernetes cluster by filling hard drives with “yes” logs. I used a days worth of logging quota for an entire company in 30 minutes. Be careful. It’s extremely fast.
+
+A Little Story About the `yes` Unix Command | Matthias Endler + — endler.dev + Personal website of Matthias Endler, a Software Engineer interested in low-level programming and Backend development. Rust, Go
+Do you depend on open source code? This site gives you so much great information about your dependencies, licenses, and updates. I wish I knew about it sooner.
+ +Track all of your dependencies license versions, security advisories, and updates.
+]]>
+Forming your experience
+Sometimes we get stretched in multiple directions at once. When this happens we end up flat and shapeless. But when we’re pushed to go deeper in a single direction we can stretch a lot further than we ever expected.
+This probably means you need to say no to a lot of cool opportunities. But if keep disciplined in applying pressure in the same direction not only will you go a lot further, but it’ll serve you better in your career. The world has lots of people with shallow, shapeless experience. Being formed into a tool can be much more useful and valuable to the companies who need your experience.
+“Normal”
+The first ship of grain set sail in Ukraine after the recent agreement to allow exports. The president said a million jobs depend on the shipments continuing. This made me think how difficult it must be to go to work when your country is at war. Going back to some form of “normal” because that is what makes the economy function.
+I sometimes have a hard time doing my job from the comfort of my house when my kids are slightly sick. The thought of doing manual labor while the cities where my friends and family live are being bombed is a level of commitment and purpose I’ve never been required to have. I wonder if I would be brave enough to do it.
+It’s easy to think other companies are doing better than yours. Better infrastructure, cleaner code, tests, documentation—it’s good to have a reality check once and a while. The replies to this tweet will hopefully make you feel better about the state of your technical debt and processes.
+[tweet https://twitter.com/jlengstorf/status/1550195909337567232 +]
+I need to remember to use ugit instead of Googling my problem every time. Really helpful for undoing git commands
+
+GitHub - Bhupesh-V/ugit + — github.com + 🚨️ ugit helps undo git commands. Your damage control git buddy. Undo from 19+ git scenarios. - GitHub - Bhupesh-V/ugit: 🚨️ ugit helps undo git commands. Your damage control git buddy. Undo from 19+ git scenarios.
+I was in a Twitter space last week and shared some of my experience creating videos and talks. I always recommend you create learning material the way you would like to learn. It won’t resonate with everyone, but the people who learn the same way will love it.
+
+Bill Nye, the DevRel Guy + — dx.tips + The Case for using Props in DevRel, from AWS’ Justin Garrison
+]]>
+Stories
+I gave an internal talk at work last week about storytelling. I had been stressing about that talk more than any talk I had given recently. The hard part wasn’t the lessons or tips about telling stories. The hard part was telling how I learned anyone can be a good storyteller. Taking my own advice and being vulnerable will never be easy.
+Small steps
+If you’re new to this newsletter I usually have two comments about development and lessons, but since the war in Ukraine started I have dedicated one of my comments to the war.
+This week there was a small step for people and countries that depend on exports that usually come from Ukraine. Moscow and Kyiv agreed to continue to let Ukrainian exports―mostly food―to continue to other countries that desperately need it.
+I still hope and pray for more steps in the right direction to end this war and let the country begin to heal.
+Years ago (around 2006) Linux had a window decorator called Compiz/Beryl. It had a ton of cool visualizations like burning windows and virtual desktops based on a 3D cube. I’ve been having a lot of fun with this new GNOME extension.
+
+GitHub - Schneegans/Burn-My-Windows: 🔥 Disintegrate your windows with style. + — github.com + 🔥 Disintegrate your windows with style. Contribute to Schneegans/Burn-My-Windows development by creating an account on GitHub.
+Sometimes we think the only software that’s written is frontend and backend. Visual effects has a lot of software too. Not only for the artist tooling, but the scenes themselves are usually very complex and require code to create.
+This thread isn’t specifically about the software, but still fun to see people celebrate their work and give some information about what it took to create.
++ + +VFX artists: reply with a shot you helped create that you’re proud of. Bonus if you talk about your contribution.
— Todd Vaziri (@tvaziri) July 11, 2022
I didn’t know about this default signal handling in Go. Looks very useful and I know other languages have similar features. Can be very useful for debugging.
++ + +]]>TIL you can send a SIGABRT to a Go program to get it to exit and print a stack trace https://t.co/3yX0FW6NkZ
— 🔎Julia Evans🔍 (@b0rk) June 30, 2022
(for example if the program is hanging and you want to know where)
+Focus
+Our vision can be clouded by too many things. A little trim to get rid of the things you don’t need can give you a whole new look. Sometimes the hardest thing to do is saying no to a great opportunity. Having a clear goal is the first step to knowing what you need to cut out of your life.
+The best way I have found to do that is to take a break. Take time away from your daily work to focus on your yearly objectives. It’s a lot easier to know what to remove once you know what needs to stay.
+Too much
+I tried to stay away from news this week, but still saw more than enough to make me sad. Bombings in Ukraine, more human rights being removed, and so many other things that it’s impossible for people to remain angry and still function. You have to focus to be effective in driving change too.
+Just because you focus on one bad thing doesn’t mean the others are not bad, but we all have limits. Make sure you are aware of our own limits and do your best to make a positive difference.
+This week I’ve been hanging out with family, playing video games, and thinking about the next 3-6 months of what I want to learn. It reminded me of these tools to interact with Kubernetes with video games.
+There’s no real practical reason to use them, but I still think they’re fun so here they are. The first one puts Kubernetes namespaces, deployments, ReplicasSets, and pods in minecraft.
+
+GitHub - erjadi/kubecraftadmin + — github.com + Contribute to erjadi/kubecraftadmin development by creating an account on GitHub.
+A retro way to introduce chaos into your Kubernetes cluster.
+
+GitHub - lucky-sideburn/KubeInvaders: Gamified Chaos Engineering Tool for Kubernetes + — github.com + Gamified Chaos Engineering Tool for Kubernetes. Contribute to lucky-sideburn/KubeInvaders development by creating an account on GitHub.
+Finally, I know how to get rid of zombie processes.
+
+GitHub - storax/kubedoom: Kill Kubernetes pods by playing Id’s DOOM! + — github.com + Kill Kubernetes pods by playing Id’s DOOM! Contribute to storax/kubedoom development by creating an account on GitHub.
+]]>
+Igniting the flame
+Humans need to rest. Even if you’re excited about what you’re doing you have to take a break. There’s a reason it’s called “burn out.” You run out of fuel. It doesn’t matter if your fuel is excitement, calories, or any other motivation. When it’s gone the only thing you can do is stop and wait for it to come back.
+Too much
+I’ve been reserving this 2nd comment to continue to raise awareness about the war in Ukraine. I will continue to do so until the war is over, but there are so many other things happening in the world it’s hard to pick just one major event.
+All over the world there are human rights being violated, assassinations, weather catastrophes, and dozens more things to worry about. I am deeply sorry if any of these things have impacted you or people you know.
+I hope you’re able to enjoy the small things—like this newsletter—and stay safe.
+Generic search engines like Google can’t solve every problem for every use case. They’re very good for general purpose but new search engines have emerged for specific use cases. I’m very interested to see how this develops.
+Hello - Conversational Search + The next best engine for developers.
+Learning regex? Try explaining the pattern and see if you get a matching pattern.
+English to RegEx with Natural Language Processing +
+Regex is difficult to write and comprehend to the average human reader because of its complex patterns. This website uses GPT-3 to generate regular expressions from plain English.
+Want to sniff passwords on a Linux host? This is too cool and a bit scary. It’s evidence that once you have access to lower levels in the stack you have a lot more access.
+
+GitHub - citronneur/pamspy: Credentials Dumper for Linux using eBPF + — github.com + Credentials Dumper for Linux using eBPF. Contribute to citronneur/pamspy development by creating an account on GitHub.
+]]>
+[caption align=“alignnone” width=“980”]<img src="" alt=""> +[/caption]
+Shipping products
+Shipping products has been very different throughout my career. In my first developer role the products I created were loosely tied to the product the company made (movies). My second role I created services to help developers create the product (streaming service). My work with EKS Anywhere is a mix of open source and hardware.
+All three products have very different lifespans and maintenance cycles. The planning process and timelines were unrecognizable even though my primary responsibility was similar.
+The thing that has been the same with all of the products is the day things launch is always a massive collaboration driven by a phone call and spreadsheet. Getting people to do things in order with high probability of public failure is best to be controller synchronously with well documented run books.
+The danger of lies
+If you’re new to the newsletter I usually have two comments related to development, but for the past 100+ days I’ve been dedicating one of these comments to raising awareness to the war in Ukraine.
+Last week, Russia bombed a mall killing civilians. The Russians fighting the war are being lied to. They think they’re doing the right thing. They think they’re eradicating Nazis and lots of other dangerous ideas that would convince them killing innocent people is what they should be doing.
+Getting to this point is a steady progression. The rules and regulations that allow a government—and a subset of people in the government—to control information happens over time. The majority of people don’t pay attention until it’s too late.
+Not everyone believes it, but enough people do to keep control. Lies believed by the majority become truth.
+I worked for months planning and weeks building this cluster. I’m very excited to finally share it with everyone. I have other content planned but I wanted to share this blog post first so you can see what all went into the build.
+
+Cubernetes + — www.justingarrison.com + Parts list and process for creating a home lab Kuberenetes cluster
+This was a good overview of the different types of platforms that get built for running software. Each one further breaks down into smaller categories but this is generally where a lot of them fall.
+
+The 4.5 Kinds of DevTool Platforms + — dx.tips +
+How to make sense of the overwhelming world of Developer ToolingThi
+I bought new Eero 6+ wifi system for home after being un-happy with Ubiquiti for a while. My wifi speeds on my phone increased 5x. I couldn’t believe it. This looks like a fun project to get stats from the hardware.
+
+GitHub - brmurphy/eero-exporter + — github.com + Contribute to brmurphy/eero-exporter development by creating an account on GitHub.
+]]>It took a few months to plan and about three weeks to build my latest Kubernetes hardware lab. I tested with the new EKS Anywhere bare metal provisioner + to install the OS and manage Kubernetes. The cluster is going to be used for training and video content for the Containers from the Couch + channel and various in person conferences. Let me know if you have a meetup/conference you would like me to come to via email +.
+This blog post will include a parts list and process for anyone who wants to do something similar. I work at Amazon and this was a work project. If you have a cool Kubernetes cluster I’d love to see it.
+All prices are approximate and rounded to the nearest dollar. Taxes and shipping not included.
+Compute and networking
+Power
+Lights
+Tools
+Total parts = $6310
+I used a lot tools I already owned such as a dremel, hot glue gun, soldering iron, wire cutters. I also used some tools from friends such as a Glowforge for select parts. There were other parts I didn’t use because of space limitations and implementation differences between my plan and reality. All of the parts and tools listed above were used in the cluster.
+When I started working with EKS Anywhere for bare metal I knew I needed a new home lab. This time I wanted to build something that could be used to validate the software, something self-contained and portable, and something to show visually what the software does.
+I was going to write an app that showed diagrams and animations via a browser, but I wanted something without using a browser. It takes you away from the hardware. I wanted to have embedded systems and lights.
+I have an old Macintosh Classic that I thought would make a good candidate for the build, but the case was too bland. I thought about painting it and filling the monitor opening with a light panel, but I knew there had to be a better option.
+When talking to a coworker about the idea we started talking about iconic computer cases and I remembered the Mac Cube. I would be constrained because of the 8” size and the Kubernetes system requirements but once the name “Cubernetes” came to me I knew I had to use one for this build.
+I’ve run plenty of raspberry pi clusters in the past, but EKS Anywhere wasn’t going to support arm architecture at launch and I wanted machines with at least 16GB of memory to make sure I wouldn’t hit resource limits with a single node control plane.
+I bought a Mac Cube and started taking measurements to see what would fit inside. I looked at lots of different options and landed on the Pico-ITX form factor. Unfortunately, there aren’t many options in that size, but someone on twitter + told me about the LP-179.
+The LP-179 has Intel AMT support for out-of-band management and this was the perfect option for compute. The computers are designed to be used in custom installations and don’t have standard interfaces for power which was concerning at first but ended up being great. They had plenty of extension options and the computers came with every cable add-on I could want. The Global American support was also very responsive and helpful with a few of the problems I ran into.
+Once the computers arrived I did some initial testing with early EKS Anywhere builds to make sure everything would work and then started ordering the rest of the lights and case components.
+

Taking apart the Mac wasn’t hard. I wanted to re-use the central handle mounting mechanism to take the compute cage in and out of the outer shell. If you’ve never seen the original keynote it was quite amazing back in 2000 +.
+ + + +When took everything apart I thought I would have a lot of room left over. That didn’t turn out to be true, but I was able to fit all the networking components inside the case which I didn’t expect initially.
+
The cage gave a lot of structure for the inner cube, but didn’t give me a lot of options for where to mount the computers. I would need to take apart after building the case to work on the computers so I didn’t want to glue anything and wanted to make components as modular as possible. I 3D printed a center bracket to hold the latch handle in place. I later realized it would be the best place to mount the network switch so I printed a version with mounting holes and parts to hold the bracket to the bottom of the case.
+
I thought I could 3D print a bracket for the computers, but they’re too heavy and the part needed extra holes for air flow so filiment wouldn’t be strong enough. A friend cut the front Kubernetes logo with their Glowforge and offered to cut computer brackets for me too.
+My initial measurements were off and I didn’t mount the computers low enough in the case for the handle latches, but after lowering the mounting holes I was able to make it work. The acrylic is pretty strong and the whole compute module can slide out of the case as one piece which makes it much easier to work on.
+

The computers don’t have much clearence on the edges so I had to buy special network cables with really small connectors to clear the sides. I was a bit worride I wouldn’t be able to find somethnig small enough, but thankfully I found some that worked.
+
The cluster is powered by two 350w power supplies each with 3 power terminals (6 total). This turned out to be perfect for what I needed because there are 4 computers, 1 switch, and 1 case fan. The case fan could power from one of the computers, but I didn’t want cooling to be tied to a single computer. I bought a 5v regulator for the switch and was able to power on everything outside the case to test it.
+I bought a 12-pin molex connector so I could have a single power plug for everything. I cut four PC power cables to re-use the internal wires (3 each). That gave me a total of 12 wires in 4 cables which I bundled together and wired into the molex connector. The molex receptical required a bit of dremeling and hot glue.
+
The power supply case took me some time to design after taking multiple measurements of the power supplies. I designed it so the top portion would come off so I could adjust wiring if needed. Each half of the case took over 2 days to print.
+
It’s great having two separate switches to power on the computers and very satisfying to turn on.
+
For the computer power switches I printed a small bracket and hot glued them in place. The hardest part was remembering which switch goes to which computer.
+I also soldered LEDs onto each board where the case fan pins are so I could know when each computer was powered on.
+
There are three different lights that can be programmed on the case.
+The first is the front logo which uses an attiny85 controller and 12 LED neopixel light ring. It sits nicely in the acrylic heptagon logo and the power wires go inside the case and connect to one of the computer’s USB ports. Thankfully, the USB port power is always hot when the computer has power so the light starts once the case has power even if the computer isn’t turned on.
+The attiny is programmed in C using the Arduino IDE. The program for the front lights cycles in a loading pattern for about 2 minutes and then switches to an infinite breathing pattern. The front lights are not dynamically controled but I can take off the logo and re-program it if I need to.
+
The hardest part of the logo was getting power to the front of the case that could also be easily disconnected when the internals are removed. I decided on using magnetic pogo pins and 3D printing a bracket that would sit where the old power button was.
+
It took multiple attempts to get this printed correctly to hold the pogo pins and align when the inner cube was in the case. It still doesn’t work 100% of the time and the internal wires get pinched sometimes which stops the lights from working. I’ll likely need to re-wire this part to keep the wires on the outside of the cube.
+
The rear lights are connected with the same magnetic connector and are controlled via the raspberry pi pico controller. The reason I wanted this controller was because it works with Circuit Python +.
+
Circuit Python has a lot of libraries for programming the lights and it mounts to the computer as a USB mass storage drive. Using the USB drive with a Kubernetes volume I’m able to re-program the lights using a Kubernetes deployment.
+The final light for the case is the 32x32 light panel mounted inside the case. I wanted these lights to show more details about what was happening in the cluster and they have the most flexibility to program. It fits nicely mounted to the the old CD-ROM drive mount (once it was heavily modified).
+
After installing the panel the LEDs were too hash and hard to see so I put some frosted acrylic in front of it to diffuse the light. It’s much easier to see now, especially when the room is already light.
+
Once everything was built the cluster can be plugged in with a single power cable and single network cable. The cluster is portable, but only time will tell how durable it is. It’s very satisfying pulling the compute out of the case. This gif was an early test that everything would work.
+
I’ve been able to re-deploy EKS Anywhere to the cluster without any issues and heat hasn’t been a problem (so far). With additional fans in the case it seems there’s enough airflow even without a lot of space.
+I’m looking forward to programming the lights with different visualizations for node migrations, workload scheduling, and gitops workflows.
+I know there are cheaper ways to bulid a home lab Kubernetes cluster. My goal wasn’t to build a cheap cluster—see my privous post for a 4 node cluster under $100 +.
+What I really wanted to do for this cluster was build more visual, educational content into the hardware and have something I didn’t need to hide in a closet.
]]>
+Gatekeeping
+People take a path to learn and achieve things. Some people have more things to overcome than others and some learn things more naturally or “unconventionally”.
+For many people it’s hard to understand how someone else can learn the same things without using the same resources or taking similar steps in learning. Thinking the way you learned was the convention is gatekeeping.
+I went to a university to learn physics. I never would have made the progression I did without the structure of a classroom and a guided path of classes to take over multiple years. But that doesn’t mean people can’t use YouTube and free resources to learn the same things and much more.
+When job descriptions require degrees or XX years of experience it’s gatekeeping to think someone has to go through the same path you did to get where you are. We put them through ridiculous leet code questions to validate their expertise, but in reality it’s just us not accepting that anyone could learn what we’ve learned or be as smart as us without going through the same steps.
+Global money transfers
+I tried to send money to a friend in Ukraine at the beginning of the war. The best way we thought to do it was Western Union. I found the local branch, sent the money, and figured everything would be fine.
+A month later I got a letter in the mail they weren’t able to pick up the money. I sent it via PayPal instead and called support to return the Western Union money.
+Everything appeared to be going fine until I tried to go to a location and withdraw the money. I have—so far—gone to 2 different Western Union locations a total of 4 times and each time their systems were down, they didn’t have enough cash, or they closed early.
+This small inconvenience is nothing compared to the horribleness Ukraine has faced, but it reminded me that sending money globally to individuals is not even close to a solved problem. And crypto/blockchain/web3 would not have made this easier.
+Sometimes the hardest thing to figure out is where to start. This is a collection of “roadmaps” to learn different technologies (e.g. python, go) as well as career paths for frontend, backend, dba, and others. Everything is open source so you can contribute if you’re already in the field and experienced.
+
+Developer Roadmaps + — roadmap.sh + Community driven roadmaps, articles, guides, quizzes, tips and resources for developers to learn from, identify their career paths, know what they don’t know, find out the knowledge gaps, learn and improve.
+I got started using Linux with Knoppix live CDs. I always thought it was magical that you could boot an operating system from removable media.
+Ventoy lets you boot 900 different operating systems from a single USB drive. Pretty amazing and I would have spend way too much time playing with this if it existed in college.
+
+GitHub - ventoy/Ventoy: A new bootable USB solution. + — github.com + A new bootable USB solution. Contribute to ventoy/Ventoy development by creating an account on GitHub.
+I started learning flutter to write a couple mobile apps I’ve been wanting to build for years. Then I found FlutterFlow and it has helped me leapfrog a lot of meticulous effort to learn all of the UI elements which are fun but aggravating to learn.
+
+FlutterFlow - Build Native Apps Visually + — flutterflow.io + FlutterFlow lets you build mobile apps unbelievably fast in your browser. Build fully functional apps with Firebase integration, API support, animations, and more. Export your code or even easier deploy directly to the app stores!
+]]>
+Are you the balloon?
+Everyone needs some amount of structure. Some people need more than others and it helps them keep their shape. This works until someone throws a bowling ball at you. The more flexibility you have—and the less internal pressure—the more likely you are to be able to absorb the external force without popping.
+As a developer it’s important to be flexible. You might think something will take 2 hours, but instead it takes 2 weeks. When you work by yourself this might be fine, but when you work on a team, it’s crucial that you communicate frequently and let the team absorb the change so the group doesn’t pop.
+Micro schedules
+One of the ways to absorb external pressure while still having structure is by making micro schedules and habits. You can use habits to get things done without scheduling and you can keep flexibility in your schedule by using small blocks of flexibility.
+Deep work takes time. I like to block off at least 3 hours to get my own tasks done. It is always nice to have more, but 3 is about the minimum for me to get into a flow. Putting 3 hour work blocks back-to-back rarely works for me.
+I try to structure, my schedule to optimize for as many separate work blocks as possible. I move meetings together and free up afternoons to make sure I can achieve my goals.
+You’ll need to find what works for you, but one thing I know for sure is you need to be flexible because things change all the time.
+Controlling a countries supply chain is scary, but it is often more easy to track because it affects physical items in the world. Controlling information and communication in a country is much harder for people to understand and track the impact.
+
+Russia is taking over Ukraine’s Internet | Ars Technica + — arstechnica.com + Traffic from occupied Ukraine subjected to Russia’s censorship, surveillance machine.
+Senior engineers have more ambiguity in problems they solve. They also need to be more careful to prioritize because the scope of what needs fixing only grows the broader you look.
+
+Not My Job + — blog.dbsmasher.com + It is not my job
+Really neat way to try out tailwind. Even easier than installing things locally in an empty directory.
+
+**Tailwind Play + — play.tailwindcss.com + +** An advanced online playground for Tailwind CSS that lets you use all of Tailwind’s build-time features directly in the browser.
+]]>
+Measuring
+We often measure things in development environments to understand things like how much traffic our application can accept or how many resources it’ll use. This is a good practice to get estimations, but the only measurements that matter are the ones we do in production.
+I’m building a case and have to make custom brackets. I measured the space and then made prototypes out of cardboard and paper. I created 3D models and printed them. Hours later I had a physical bracket I could finally use! A marvel of rapid prototyping.
+However, I neglected to measure the bracket when the rest of the case was assembled. All of my screw holes were off and I forgot to give clearance for a critical part of the case. I had to repeat a lot of work I could have avoided by measuring with the production assembled constraints.
+War
+Welcome new—and old—subscribers! This space usually gives you more information on how to be a better engineer, but I have been reserving it instead to show support for Ukraine in the ongoing war for their freedom.
+The secondary impacts of this war are beginning to show (e.g. grain shortages) and it remains to be seen what this will do to the Russian economy. There have been too many horrible things that have happened in the world recently. I remain hopeful for the people of Ukraine that this attack will end soon.
+Are you ever curious what technologies a website uses? Built With can show you some of the front end and marketing tracking websites use.
+
+Find out what websites are Built With + — builtwith.com + Web technology information profiler tool. Find out what a website is built with.
+Technical interviews mostly suck. Many of them still require leet code style questions with riddles to solve and then require you to write code. Most of the time you don’t have the ability or time to search the internet or read documentation which is not how the vast majority of developers work.
+I like this approach of having someone explain code that’s already written. It shows they understand it or gives you insight into gaps they may have or their reasoning about what things might do. I especially appreciate this blog for explaining the perfect answers they’re looking for.
+
+Explain the First 10 Lines of Twitter’s Source Code to Me | CSS-Tricks - CSS-Tricks + — css-tricks.com + A question I always like to ask when interviewing a front-end candidate is: “Explain the first ten or so lines of the Twitter source code to me.”
+I can never remember what this paradox is called so I’m sharing it here that maybe it’ll stick this time. Jevons paradox says that efficiency gains (via technology, policy, or process) will be lost due to increased usage. Jevons measured it with coal but the same can be seen in other systems like highway lanes and internet bandwidth.
+
+Jevons paradox - Wikipedia + — en.wikipedia.org +
+Increased efficiency increases usage.
+]]>
+Boundaries
+I’ve known people who work 60+ hours a week for as long as I’ve been in tech. It doesn’t matter what company you work for, people will always fail at setting boundaries.
+Individual contributors failing to set their own boundaries is a problem, but a much bigger problem is when leadership does it. Once leadership does it it becomes an expectation and culturally accepted. If you’re in leadership and are not able to finish your work in 40 hours then you need to clearly communicate that with your leadership and make sure you do not set that expectation for people you manage. Once boundaries are not respected in culture it takes multiple generations of employees to reverse the negative effects.
+Destruction
+I continue to use one of my comments to raise awareness about the conflict in Ukraine. Once Russia stops their invasion, I will get back to two comments about development, technology, and lessons.
+This week, Russia continued bombing the Ukrainian capital, Kyiv. Putin also threatened to bomb new locations deeper in Ukraine if they were given long range weapons. To date, all of the aid has been short and medium range weapons.
+There is already so much pain in this world and because of one man an entire country is under attack. The destruction and loss they’ve already faced is something I will never be able to understand.
+Git is probably the least intuitive tool that every developer uses. You remember some commands to do your work, but there’s always the one person who really understands it. In a lot of ways, it’s similar to regex. This game looks like a fun way to understand how git works. You can see a little bit of it in today’s gif.
+
+Oh My Git! + — ohmygit.org + An open source game about learning Git
+Infrastructure as software has been something I’ve been talking about and promoting for 5+ years. I finally wrote a blog post so more people can understand how it’s different from Infrastructure as Code.
+
+Infrastructure as software + — www.justingarrison.com + What is beyond infrastructure as code?
+If you’ve ever wondered my process and tools for writing this newsletter it’s pretty simple. Here’s a thread with more links and information.
+]]>Open Source Summit North America - ContainerCon
+Many people know the benefits of using Kubernetes to operate at scale. +Some people also know the accelerated learning opportunities when things go wrong. +Where do you start debugging? What questions and patterns should you look for? +Justin will look at some common components that cause trouble and give you commands you can start with next time you’re troubleshooting an incident.
+rejected
+]]>Infrastructure has changed a lot, but the mantra of Infrastructure as Code (IaC) has been the goal for organizations for far too long. The idea that you can create infrastructure with text was a big shift for the industry 10 years ago, but it hasn’t held up to the test of time.
+When writing Cloud Native Infrastructure + the idea of Infrastructure as Software (IaS) was the main takeaway we wanted for readers. It was the main idea behind what we thought the difference between organizations working with a cloud native mindset and people with an automation mindset.
+The term isn’t new, but let me say what I don’t consider IaS.
+Writing your IaC code with a general purpose programming language is fine, but it’s not much different than using a DSL. Using a general purpose programming language brings all the benefits and drawbacks of general purpose programming languages.
+The biggest benefits for using the AWS CDK or Pulumi is your can have your developers write the code that creates infrastructure, and you can use coding practices to create libraries other people can share. But, using a general purpose programming language has downsides like runtime version management and non-deterministic outputs. Once I have the power to generate my code, it’s more likely that I’ll make a mistake with my assumptions or lack of familiarity with the code generator.
+Writing an application with typescript and infrastructure code in typescript means if you want to upgrade your version of typescript you need to upgrade both at the same time. Keeping your IaC code up to date becomes another maintenance task that can have conflicts with your application code. Application code changes a lot more frequently than infrastructure code and when your IaC is compiled with a different tool and language you can upgrade them independently.
+What if you want to re-write your application in a different language? You probably want to re-write both even if the infrastructure doesn’t require any changes.
+What do you do when the organization scales and you need to transition infrastructure ownership to a new team? Infrastructure engineers are not as familiar with languages like typescript or node and you will likely need to re-write the infrastructure into a language they know instead of train them in a new language and hope they don’t make mistakes.
+Writing infrastructure as code with general purpose languages also means you can’t easily share infrastructure patterns between services that are written in different languages. With terraform, my HCL modules worked no matter what language the service is written in. If I write IaC in python and you use typescript we can’t integrate our reusable infrastructure modules together.
+Infrastructure as data is all about separating your declarative requirements from the implementation code.
+I can write IaC with terraform like this
+terraform apply
+Or I can separate out my requirements from the terraform code into variables which represent the unique data for me.
+terraform apply -vars-file data.tfvars
+General purpose Infrastructure as Software requires you to separate out your data and code. Any good software will consume data and do work based on that data.
+In the past we used to hard code our database servers and in IaC we would hard code our hostnames and IP addresses too. Infrastructure as Data relies on general purpose infrastructure reconcilers to create infrastructure.
+This is an implementation detail of Infrastructure as Software, but it doesn’t explain why IaD works or how you should create your own reconcilers. For a majority of people using IaD they fall back to combining their data with some form of automation or templating their data into something that can be compiled. With Kubernetes this is the job of helm charts and kustomize.
+Using a managed service to create your infrastructure is fine for IaC, but it falls short from what IaS is capable of. A managed service like CloudFormation will take in your data (written by hand or generated from CDK) and apply it.
+It’s an Infrastructure as Data pattern but it’s only a 1-way sync (aka automation). CloudFormation requires you to send it data that it can deploy, but when things change CloudFormation is blissfully ignorant and doesn’t correct the discrepency from your desired state and the actual state.
+CloudFormation has drift detection but it requires manual interaction to detect drift and then to correct the drift. Infrastructure as Software does this automatically and continually reconciles your desired state and actual state. If Cloudformation had an option to continually reconcile state and sync state into the stack then it would be an implementation of Infrastructure as Software.
+So, what is infrastructure as software? IaS is software that manages your infrastructure continuously.
+The difference between code and software is code is just bits on a disk. Software is bits + electricity. Software is your code in action. It’s continually running to process data.
+Typically, IaC is only applied when code files change. You update your IaC files, push them to git, and some CD process (usually Jenkins + bash) runs to “apply” your changes. That’s not good enough for larger teams or when a lot of infrastructure is being managed.
+Drift happens. If you’ve never had to manually repair a terraform state file due to drift that couldn’t be reconciled consider yourself lucky. It’s only a matter of time.
+Infrastructure as Software reads your data, stores it, reads the infrastructure state, stores it, and then reconciles the two to match. It’s a 2-way reconciler that knows how to imperatively get from one state to another.
+Other systems have done this for years. Git is a commonly used reconciler with files. When you do a rebase or merge, git can figure out how to get you to a desired state imperatively.
+Take that same pattern, apply it to infrastructure APIs, and do it all the time. IaS watches the infrastructure too, and it runs the reconciler whenever desired or current state changes. The reconciler runs whenever state changes. Not just file changes like IaC.
+So, what are examples of IaS? The two best examples I know of are:
+Kubernetes controllers is what we used as examples in Cloud Native Infrastructure. While writing the book we found lots of other examples inside companies that did similar things. The default Kubernetes controllers are very specific to managing Kubernetes resources, but lots of people have been adapting the API and data storage capabilities of Kubernetes for general purpose controllers.
+Using Kubernetes CRDs + a controller to manage infrastructure is the idea behind crossplane +, AWS Controllers for Kubernetes (ACK) +, and GitOps. It’s also been used for managing state of applications in Kubernetes with operators +.
+GitOps is a newer idea for using a general purpose reconciler to manage more resources. You can manage applications, Kubernetes clusters, or any CRD. GitOps has some specific principles + that can help you think about what properties your controllers should have.
+There are multiple options for controllers that implement GitOps. Flux + and Argo + are the two most popular GitOps controllers I know of. GitOps is an implementation of IaS that is useful for people to transition from IaC.
+If you want to hear more I recently just did a talk about Infrastructure as Software and GitOps at GitOpsCon.
+ + + +If you’d like to learn more about Infrastructure as Software my co-author Kris + has a ton of talks about it too. Of course you’re welcome to read Cloud Native Infrastructure book for the full details.
+The infrastructure industry needs to move past Infrastructure as Code. Instead of creating new practices and tools we need to learn how to manage infrastructure with software practices and lifecycles that are proven to work at scale.
+]]>Open Source Summit North America
+Kubernetes is the most widely used container orchestrator, but scaling workloads is not as easy as it should be. +Workloads are diverse, but we deploy them to homogeneous compute nodes. +This leads to complex configuration, label proliferation, and cluster sprawl. +What we need is workload native compute scaling for any Kubernetes cluster. +Karpenter is a new way to scale clusters by provisioning compute nodes that workloads need. +Heterogeneous compute infrastructure helps simplify configuration and utilize clusters for more workload types.
+rejected
+]]>
+From memory
+My dad loves puzzles. He would do them when I was a kid, but he had a rule I’ve never heard of before. I’m not sure where or when he created the rule, but he was very strict about it for himself even though he never forced it on us.
+He would study the picture intently before opening the box, but once the box was opened he would not look at the picture again. He would do the puzzle from memory.
+To this day I don’t know why he did it this way. Maybe he wanted more of a challenge. Maybe he wanted to show off, or it was his version of a brain game.
+No matter what his motive was, ever since I was a kid I always thought looking at the puzzle picture was a form of cheating. But I do it anyway.
+Heroes
+There has been more than 4000 deaths in Ukraine since Russia invaded. More than 4000 people that no longer have life but are now memories. Their opportunity to have an impact on the world now comes from the people who remember them.
+You are still here. You still have an opportunity to make a difference in the world. Invest your time in people.
+Visualizing data is hard. Humans are not good at looking at numbers and finding patterns, but we are very good at looking at lines and shapes and finding them. I’m a big fan of tools that can take data and turn them into shapes humans can more easily identify.
+
+GitHub - AykutSarac/jsonvisio.com: 🧩 Visualize your JSON data onto graphs seamlessly. + — github.com + 🧩 Visualize your JSON data onto graphs seamlessly. - GitHub - AykutSarac/jsonvisio.com: 🧩 Visualize your JSON data onto graphs seamlessly.
+I haven’t used this but it looked like an interesting utility and workflow to build full stack sites. I like the idea of compiling the entire website into a single binary. Probably not the best idea for large, complex sites but could be great for small, independent projects.
+
+GitHub - livebud/bud: The Full-Stack Web Framework for Go + — github.com + The Full-Stack Web Framework for Go. Contribute to livebud/bud development by creating an account on GitHub.
+I’m a big fan of Amazon’s Systems Manager Session Manager. I don’t like the name but I like that it allows remote terminal connections using outgoing tunnels. This tool does something similar for SSH. You don’t need to open ports on your firewall or know the public IP address to connect to a system.
+
+GitHub - atsign-foundation/sshnoports: ssh no ports provides ssh to a remote Linux device with out that device having any ports open + — github.com + ssh no ports provides ssh to a remote Linux device with out that device having any ports open - GitHub - atsign-foundation/sshnoports: ssh no ports provides ssh to a remote Linux device with out that device having any ports open
+]]>
+Garbage collection
+It’s weird to think that our brains do garbage collection while we sleep. Reinforcing memories, storing things we don’t need, and generally flushing toxins so we can be refreshed and think clearly for another day.
+But humans have a finite runtime before we have to garbage collect sleep. Our ability to function relies heavily on our brain taking time to rest.
+I’m on vacation this week. Hopefully garbage collecting.
+Ukraine
+It has been 3 months since this war started. I am glad to hear there is still some aid flowing into Ukraine, but I’m sure it’s not enough. The amount of death and destruction that has happened in the past 3 months is something I cannot understand. Knowing the numbers is not understanding.
+Ukraine devops days is 3000€ away from their donation goal to help various charities. If you have the ability to give I’ll match donations from this newsletter up to 1,500€. If you donate please reply to this email with receipt. https://devopsdays.com.ua/ +
+This week’s gif comes from this link. Very good explanations—including gifs—showing how different types of garbage collection works in software.
+Visualizing Garbage Collection Algorithms + Developers take garbage collection for granted, but it’s hard to see how it works. Watch 5 different GC algorithm visualizations.
+Deno is still one of those things I want to spend more time with. It seems like it has a lot of benefits over Node.js and I’m excited to see how it matures over time.
+An Introduction to Deno: Is It Better than Node.js? | AppSignal Blog + Learn about the key features of Deno, how it outperforms Node.js, as well as where it falls short.
+Convert typescript into Amazon State Language (ASL) used for Step functions. Great idea and the project also has a live playground where you can compile your step function flows.
+
+ts2asl: A TypeScript to Amazon States Language (ASL) transpiler + — github.com + TypeScript to AWS ASL transpiler. Contribute to Stedi/ts2asl development by creating an account on GitHub.
+]]>
+In person
+I spent this week with 7,500 other people in a country I’ve never traveled to. It was amazing and stressful, but overall I’m thankful for the people I met and the conversations I had. Being face to face really does build trust so much faster than any form or remote communication I’ve used. Technology, business, and the economy require trust to scale and this week was a clear reminder for me that it is important.
+Giving presentations
+I have so much feedback for people giving talks at conferences I’m going to have to collect my thoughts and write a blog post. There are a lot of blog posts that already exist on the topic, but many people still do not read them.
+I told someone this week “it’s not education if it’s not entertaining” and I’m not sure I fully believe that, but there’s some truth that you need to get someone’s attention to be able to teach them and the best way to do that is to entertain them.
+This weeks gif comes from this site. A great resource for understanding what different algorithms do.
+visualising data structures and algorithms through animation - VisuAlgo + VisuAlgo was conceptualised in 2011 by Dr Steven Halim as a tool to help his students better understand data structures and algorithms, by allowing them to learn the basics on their own and at their own pace. Together with his students from the National University of Singapore, a series of visualizations were developed and consolidated, from simple sorting algorithms to complex graph data structures. Though specifically designed for the use of NUS students taking various data structure and algorithm classes (CS1010/equivalent, CS2040/equivalent, CS3230, CS3233, and CS4234), as advocators of online learning, we hope that curious minds around the world will find these visualizations useful as well.
+If you want to learn about systemd without breaking your own server this is a great resource. Not only do you get a live system to create units but they have a lot of great examples of different types you would want to understand.
+systemd by example - the systemd playground + Your description for this link…
+An open API for disease information (including COVID 19). Really, neat if you want to do some analysis on the data yourself. I’m not a doctor but I love that this exists and wish it existed for more things.
+ +Open disease data
+]]>
+Scripting
+I think about tools a lot. Tools that will solve my problems. Automation that will help me do something faster. APIs I wish existed. I sometimes write down structure for a database, API objects, and CLI structure I would like to exist.
+Then I come to my senses and create a crude script that pipes together a few existing tools into something that works good enough. It’s not as elegant as the one I designed and it doesn’t do everything I need, but it works and it’s good enough to save me time.
+Sometime it’s best to script something and move on. Solving problems is the goal.
+Coordination
+Coordinating people is one of the hardest parts of software engineering. It doesn’t matter if the coordination is for feature planning, a big launch, or an event. Giving everyone the context and instructions they need so everyone is successful has a lot of variables outside of your control.
+Software cannot reason. Distributed systems can only act as instructed. Thankfully, people have the ability to think—even if they don’t always use that ability.
+This week I’m using a link to raise awareness of Ukraine. Not only does this event look amazing and they have donations for various charities.
+[tweet https://twitter.com/devopsdays +_kyiv/status/1522275756621115392]
+I use this bot in a GitHub action for some of my awesome list repos. It’s very handy to check links in a readme.
+
+GitHub - dkhamsing/awesome_bot: Validate links in awesome projects + — github.com + :white_check_mark: Validate links in awesome projects - GitHub - dkhamsing/awesome_bot: Validate links in awesome projects
+I wish I was better at CSS. I know there is a lot I don’t know, but I didn’t know these images were possible in pure CSS.
+Diana Smith | UI Engineer / Web Developer / Frontend Specialist | cyanharlow @ GitHub + Diana Smith | UI Engineer / Web Developer / Frontend Specialist - Diana Smith aka cyanHarlow
+]]>
+Learning
+Learning is a process of identifying similarities between something we know and something don’t (the thing we are learning). Learning brand new things is usually hard, not because it is more difficult, but because we don’t have similar things to compare it to.
+When you first learn how to program it’s really hard. The similarities with things we know are very limited and not similar. Once you learn how to program, it’s much easier to learn a different language. Some languages have more differences than similarities (e.g. functional programming) but there are still enough similarities for us to know where to start.
+The more variety of experiences you have the easier it is to have similarities to learn new things. Having a deep knowledge in one area is good for some people, but having a broader variety of knowledge will help you innovate more than people with narrow expertise.
+War crimes
+Hello new subscribers 👋 I have been reserving one of my comments to continue to raise awareness of the war in Ukraine. When the conflict ends I will return to regularly scheduled stories and comments.
+War is literally armed combat with the goal to kill people or kill enough of them so they surrender their freedom to you. And yet, there are extremes that go to far. The fact that there is something more extreme than killing someone is a sad realization that people can be very evil.
+VSCode has some unique ways to handle development environments. I found myself programming on embedded systems this week and this fix helped a lot. Maybe it can help you too.
+Python Relative Imports in VSCode (Fix ModuleNotFoundError and Auto-completion) | k0nze + Progamming, Computer Science, and Everything in Between
+Python code wrapped in HTML tags? Sure, why not.
+
+PyScript | Run Python in your HTML + — pyscript.net + PyScript
+I’m pretty sure you’ve never used <pyscript> before, but just in case you have, here’s another 10 tags you’ve probably never used. Most of them you’ve never used for good reason.
+10 HTML tags you have never used before + — devapt.com + Here are the 10 HTML tags that you have never seen before. Learn when and how to use these tags in your project. Some of the tags are really handy…
+]]>Kubecon EU
+Congratulations! You’re using Kubernetes. You’re company is all in and you’re no longer a systems administrator—you’re a cluster operator. You’ve set up automation to create your first handful of clusters, but it’s not enough. The infrastructure is out of hand with versions and maintenance you can’t keep up. No amount of bash is going to scale to the amount of clusters you need. +So what other options are there? How can you manage 100, 500, or 1000 clusters? This talk will show patterns for deploying and managing hundreds and thousands of clusters. Terraform, CDK, Crossplane, GitOps, and more will all be discussed to show where they shine and where they might have limitations.
+Many companies are currently struggling with the amount of Kubernetes clusters they’re managing. They are applying the same principles that were useful for a dozen clusters to hundreds and they can’t keep up with releases or patching. +This talk will show the common patterns at different scales and when different tools might need to be used to help reach the next scale.
+https://github.com/fluxcd/flux + +https://github.com/crossplane/crossplane + +https://github.com/aws-controllers-k8s/community + +https://github.com/kubernetes-sigs/cluster-api +
+Rejected
+]]>GitOpsCon EU
+The cloud has enabled abstractions and automation, but Infrastructure as Code (IaC) doesn’t scale. You can use declarative YAML or imperative scripts and still lose control. Infrastructure as Software (IaS) allows you to control and scale infrastructure with the same practices as applications. GitOps is an implementation of IaS with lots of benefits over IaC. We’ll look at how it’s different, when you should use it, and where it potentially breaks down.
+The audience is users who are looking to understand why GitOps is recommended vs traditional infrastructure as code solutions. What problems are introduced with IaC and how an Infrastructure as Software (IaC) approach solves those problems.
+accepted
+]]>
+Site Reliability Engineering
+I was an SRE in a previous role and bought into the idea of SRE. I read the books and thought the concept was great, but after doing the role for a while and later seeing how Amazon does operations I realize that SRE is just the new ops.
+The skills and tools are better and the problems are slightly different, but the process and reporting structure didn’t change. The power dynamics between SRE and application developers is unavoidable so long as the reliability for a system falls on a different team than the creators of that system.
+The best way to get good at operations is to have teams where everyone has the same access, responsibilities, and titles. Reliability is discussed in the same meetings as features and design. Pagers are for everyone and tool silos are minimized.
+Funding
+I donated money to efforts and friends in Ukrane and it felt like my contributions were meaningless. They were fairly small donations, but I knew with enough people we could collectively make a big difference.
+But then companies and governments got involved with hundreds of millions of dollars in funding. I, again, felt like my contributions didn’t matter.
+But then I realized governments are micro payments from massive amounts of people. Taxes paid for that funding and collectively—through voting and representation—we all decided where to send the money. The government aid was very different from where I personally sent money, and new platforms and tools make it easier for me to make an impact without requiring the collective will of the government to do what I hope is right.
+I’m lucky to have individual power to pay taxes in a state of my choosing and country where I have some say in who represents me.
+This article had some of the best tips I’ve read in an article for a while. If you only read one article this week, make it this one.
+
+Five Koans of Software Architecture | by Marianne Bellotti | Apr, 2022 | Medium + — bellmar.medium.com + Software architecture is fun. So much so that there’s never any shortage of smart people eager to jump in with their opinions. In my various engineering leadership roles throughout my career so…
+How is technical debt different from financial debt? Why do we talk about technical debt so differently? This was a good article about how the business thinks about debt.
+
+We sound like idiots when we talk about technical debt | cyclic.sh + — www.cyclic.sh + When we use the term technical debt with non-technical business colleagues, they assume, that technical debt is analogous to financial debt. After a few minutes of discussion they are usually relieved to find that there is no actual money problem. How quickly would the CFO get fired if they claimed “we have a lot of debt” but couldn’t produce a balance sheet with lenders, amounts, interest rates and terms?
+The first article mentioned graph databases not having a use, and this article talks about a really cool use for them. It’s very industry specific but I know there are similar situations where a graph makes sense.
+
+Ordering Movie Credits With Graph Theory + — endcrawl.com + How Graphs & Games Untangled “The Golden Hairball”: A technical deep dive from the end credits experts at Endcrawl.
+]]>
+Figuring it out
+It’s so nice when you figure something out. It doesn’t matter if it’s a new technology, a hard problem, or a new way to explain something. Once you have the solution you can rely on that solutions for future, similar problems.
+Humans are great pattern matchers. By recognizing small similarities in simple problems we can solve more complex problems.
+One of the difficult things is knowing which tools to use. Because we rely on our experience so heavily we may not be able to find a tool that fits the problem and end up using something that is a poor fit. Will the problem get solved? Probably. Will it be the best solution? Likely not.
+Ukraine
+I continue to use one of the newsletter comments to draw attention to the war in Ukraine. This comment is the reason the newsletter is late this week because I had a hard time finding a new comment to share.
+But that’s not the point. The devastation in Ukraine has become a footnote for many news outlets. If there’s nothing new to report it’s not “news” no matter how tragic the status quo is. People are fighting for their country’s freedom and risking their lives. People are taking refuge in foreign countries and many of them have lost all of their possessions.
+I can’t get over how I would feel if it happened to me and my family and my heart aches for what they are going through. I hope this ends soon.
+Glory to Ukraine.
+This article has some great tips on designing APIs. Some of them are obvious if you’ve made any mistakes with an API. The other tips can hopefully help you avoid the mistakes in the future.
+
+How to design better APIs + — r.bluethl.net + 15 language-agnostic, actionable tips on REST API design.
+There are a lot of new versions of old tools and some new tools that are more intuitive or have clearer output than their predecessors. There were a few commands I’d never seen before and excited to try out.
+A list of new(ish) command line tools + A list of new(ish) command line tools
+If you run containers in AWS this was a great, thorough review of the different options and how fast they scale. Scaling isn’t the only thing to consider, but for some workloads it can be critical.
+
+Scaling containers on AWS in 2022 :: Vlad Ionescu + — www.vladionescu.me + Comparing how fast containers scale up in 2022 using different orchestrators on AWS
+]]>
+YOLO/CD
+Continuous delivery is built on trust. Trust is gained over time. How do you take the first steps?
+You can get some assurances with tests, but they’re never enough. You have to start slowly.
+Soon you’ll not care that there’s molten iron flowing from your Jenkins servers
+War crimes
+The events in Ukraine are still heart breaking. I will continue to use one of my comments to talk about it instead of my usual tips.
+It’s sad to me that much of it isn’t newsworthy anymore. Humans are so adaptable that weeks of reporting about people dying becomes mundane to hear. It’s not until there’s new extreme or horrifying information that it gets put into headlines.
+Going “back to normal” isn’t a thing. We just get used to the current situation until something disrupts it.
+If a picture is worth 1000 words then a diagram should be at least +500 PR. It’s nice to have native support for this it GitHub instead embedding pictures which were always a pain to maintain.
+
+Include diagrams in your Markdown files with Mermaid | The GitHub Blog + — github.blog + Mermaid is a JavaScript based diagramming and charting tool that takes Markdown-inspired text definitions and creates diagrams dynamically in the browser.
+NGINX has been easier than Apache from my experience, but nginx.conf is Turing complete which means you’re going to mess it up at some point.
+Avoiding the Top 10 NGINX Configuration Mistakes - NGINX + We help you avoid the 10 most common NGINX configuration errors, explaining the problems caused by each and how to fix them. Errors include insufficient file descriptors per worker, disabling proxy buffering, and not using upstream groups and keepalive connections.
+I’ve managed a lot of crons in my time and I wonder if that’s a thing of the past. I’m sure on-prem environments still have them but it seems that more and more are moving into container orchestration or higher level tools. In any case this was a good list of recommendations.
+
+Cron best practices | Arabesque + — blog.sanctum.geek.nz +
+The missing crontab manual
+]]>
+Statistics
+Facts don’t convince people.
+You don’t have to change someone’s mind. You just need to give them doubts about what they know.
+“Statistics should be the driest thing” – Florence Nightingale
+From How to Lie with Statistics
+You need to learn how to tell stories, not data.
+So much to learn
+In writing the detector for docker socket plugin I had a co-worker review it with me. They are a much better developer than I am. I can make things work, but it’s often not idiomatic and many times not clean.
+In a 30 minute call with them I learned a lot. I also learned a small bit more about what I don’t know (and need to learn more about).
+I love when that happens. When someone opens the door to more knowledge that is hard to gain without experience.
+Learn from the experiences of others to understand the things data cannot teach you.
+Here’s a project I spent some time on at work. It makes it easy for you to know if any workloads in a Kubernetes cluster are mounting the docker socket. It’s now open source and available as a krew plugin.
Running this on your cluster or manifest files should give you confidence to change your container runtime and upgrade to Kubernetes 1.24 once it is released.
+
+GitHub - aws-containers/kubectl-detector-for-docker-socket + — github.com +
+A Kubectl plugin that can detect if any of your workloads or manifest files are mounting the docker.sock volume.
+I didn’t know it was possible to to save your decryption keys in plain text. Extremely useful—and no surprise—that wireshark supports it.
+Decrypting your own HTTPS traffic with Wireshark – Trickster Dev + Code level discussion of web scraping, gray hat automation, growth hacking and bounty hunting
+I like it when people take the time to explain the output from commands and how you should read the data. It’s a way to learn from other people’s experience.
+I also didn’t know the difference between traceroute and mtr so this was particularly insightful to know I should be using mtr instead.
+How to properly interpret a traceroute or mtr + — phil.lavin.me.uk + traceroute vs mtr When a packet travels across the Internet, it travels through multiple routers. The traceroute and mtr tools
+]]>
+Working smarter
+I was sanding some wood and it was taking me a long time to get off a layer of paint even with rough sandpaper. I figured the paper was clogged or worn even though it looked fine. I swapped the paper without much change.
+I remembered I had a new type of sandpaper—SandNet—with the same grit but claiming to be stronger. I was skeptical but didn’t have much to lose. It made a huge difference! I immediately started making progress.
+It reminded me of working with familiar—but old—tools and libraries. Yes, they still do the job, but by upgrading the version or trying a newer implementation of the same tool it can make a big impact on the speed and reliability of our work.
+Global Economy
+I’m (still) dedicating one of my comments every week to the war in Ukraine until the conflict ends.
+This war is unlike any in the past. Not only is the world more dependent on other economies, but people are so much more connected and accessible.
+Companies pulling their business out of Russia impacts all of the people in Russia no matter if they agree with the war or not. Funding for Ukraine has had a boost thanks to individuals around the world donating. News and updates can be seen quickly via social media.
+I have been thankful to follow updates from various sources about people I know defending Ukraine. I would never get these updates on the news and am thankful for the people who have been dedicating time to post the updates.
+Go 1.18 introduced generics into the language which can be a great time saver when doing similar tasks with different types. Even with generics you’ll need helpers for a lot of common tasks. lo gives you a ton of helpers so you don’t have to make them yourself.
+
+GitHub - samber/lo: 💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find…) + — github.com + 💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find…) - GitHub - samber/lo: 💥 A Lodash-style Go library based on Go 1.18+ Generics (map, filter, contains, find…)
+Regex is one of those scary powerful tools. I’m thankful I spent a considerable amount of time to learn how to use it early in my career, but there are still many things that surprise me. This was one of the simplest and coolest regex expressions I’ve seen in a while.
+A regular expression to check for prime numbers — Noulakaz +
+How to check if any number is prime with a single regex expression.
+I often use python3 -m http.server to server a directory over http on my local network. Some systems don’t have python installed so I asked on twitter for alternatives. This one looks like a great option to serve files in a single binary.
+GitHub - briandowns/simple-httpd: Drop-in replacement for Python SimpleHTTPServer. Provides TLS via Let’s Encrypt over HTTP2, and auto generated self-signed certificates. + — github.com + Drop-in replacement for Python SimpleHTTPServer. Provides TLS via Let’s Encrypt over HTTP2, and auto generated self-signed certificates. - GitHub - briandowns/simple-httpd: Drop-in replacement for Python SimpleHTTPServer. Provides TLS via Let’s Encrypt over HTTP2, and auto generated self-signed certificates.
+]]>
+Troubleshooting
+I spent most of my week trying to figure out problems with new systems with minimal feedback. Learning new tools and systems is hard. Doing it without insight into how the system works is nearly impossible.
+This concept is easy to understand with logical systems like software. Even bugs can quickly be understood and fixed. We write tests and tools to give us more insight and help us understand and avoid the same mistakes in the future.
+Often times our careers need troubleshooting too. We continue on without feedback from people that can help us get better and be successful. While human systems cannot be understood or tested like software it doesn’t mean you should avoid creating mechanisms to better understand how and why things don’t go as expected.
+Getting better
+Until the war in Ukraine ends I’m going to be reserving one of my newsletter comments to encourage people to keep yourself informed of the situation and donate to the Ukrainian people, army, and support programs if you’re able.
+It’s important to understand what your own limits are while reading about such tragedies. We cannot ignore them, but make sure they don’t consume you.
+I’ve heard so many good things about this program that if you’re looking to become a frontend developer this is a great place to start.
+
+#100Devs - leonnoel.com + — leonnoel.com + Managing Director of Engineering @ Resilient Coders. Distinguished Faculty @ General Assembly. I train people underrepresented in tech for high growth careers as software engineers.
+If you want to learn more about infosec this site has free and paid self-paced training. It’s focused on red teaming but from the looks of it has plenty of introduction and advanced lessons.
+
+TryHackMe | Cyber Security Training + — tryhackme.com + TryHackMe is a free online platform for learning cyber security, using hands-on exercises and labs, all through your browser!
+This is a good Linux primer for systems administration and Devops engineers. It’s not deep in every area, but it gives a good general overview to point you in the right direction for different types of tasks and tools you’ll be using.
+
+Linux SysOps Handbook - Linux SysOps Handbook + — abarrak.gitbook.io + Your description for this link…
+]]>
+Taking space
+I’m taking up this comment to dedicate it to my friends and strangers in Ukraine fighting for their freedoms and in some cases fleeing for their safety.
+This newsletter is focused on developers but beyond that it’s focused on humans. Seeing pictures of my developer friends who have had to put down their keyboards and take up guns breaks my heart.
+Always focus on being human first. If we’re not good humans we can’t be good developers.
+Go
+I remember when I first was learning go. I struggled a lot. At the time I was writing python, ruby, perl, and bash but didn’t consider myself a developer. I tried to read everything I could to learn go. It wasn’t until I put down the books and started coding that I began to understand it.
+I thought I was dumb because I couldn’t write a simple go app from a blank IDE without looking anything up. Maybe programming wasn’t for me.
+I kept trying. Year over year I would pick go to write something instead of other languages and I got better. It’s not my favorite language to write, but I understand some of it’s strengths and use it more often.
+I still can’t write a simple go app without looking things up, but I’ve learned that that doesn’t mean anything beyond the fact that it’s not something I have to do.
+Practice is what helps you learn. You could read lots of books about how to play a piano, but until I sit down and play, it’s all just theory.
+This could be helpful when making web requests in code. Use your browser’s inspector to generate a curl command and then translate that directly into code in various languages.
GitHub - curlconverter/curlconverter: convert curl commands to Python, JavaScript, Go, PHP, R, Dart, Java, MATLAB, Rust, Elixir and more + convert curl commands to Python, JavaScript, Go, PHP, R, Dart, Java, MATLAB, Rust, Elixir and more - GitHub - curlconverter/curlconverter: convert curl commands to Python, JavaScript, Go, PHP, R, Dart, Java, MATLAB, Rust, Elixir and more
+The Go playground has been useful to help troubleshoot code snippets and get support. I always found it a bit lacking and minimal (just like go). This playground adds a few nice features and even has a self-hosted option.
+Better Go Playground + Better Go Playground with syntax highlight support
+This site can convert JSON output from an API directly into a go struct. I wish I had this years ago. I spent too much time manually writing structs from JSON output. I also heard the goland IDE can do this for you which makes me wonder why other IDEs don’t have this feature too.
+JSON-to-Go: Convert JSON to Go instantly +
+Do you have an API that gives you JSON data that you want to turn into a go struct? This app has you covered. I’ve done this by hand too many times.
+]]>
+Priorities
+This newsletter is not important. There is a global pandemic which has killed nearly 6 million people. There is a war in Ukraine which is claiming innocent lives and threatens global peace.
+Please prioritize your safety and health. Help where you are able and make sure you set your own boundaries to stay informed but not at the cost of your mental or emotional well-being.
+Packet switching networks
+One of the most interesting technologies I’ve ever studied is packet switching networking. It’s not intuitive that breaking up a message into smaller pieces and letting each of those pieces traverse independently to a destination would increase resilience of the message being received.
+The versatility of TCP and UDP allows it to be overlayed, tunneled, and encapsulated with other protocols and functionality. It also allows it to be blocked, filtered, and tracked.
+Maybe with the links below you’ll find some new ways to use this technology to accomplish your own goals or work around the goals of people and systems trying to limit your own freedoms.
+Tailscale is an overlay VPN with some amazing features. If you’ve never used it before I recommend you check it out. The feature I wanted to share was the new ability to share your exit nodes. Not only can you create a private network but now you can let your friends tunnel their traffic through your nodes.
+This can give them the ability to get around restrictive network filters, firewalls, or the ability to hide some of their traffic from onlookers.
+
+Sharing your nodes with other users · Tailscale + — tailscale.com + Sharing lets you give another Tailscale user access to a private device within your network, without exposing it publicly. This can be helpful for giving contractors private access to a secure server, or sharing a private Minecraft server with friends.
+Tunneling your outbound traffic can be useful, but so can tunneling inbound traffic. Often used for sharing a local web server on the internet through tools like ngrok there are lots of alternatives tools available and plenty of other reasons you might need to expose a local port to the world.
+GitHub - anderspitman/awesome-tunneling: List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting. + List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting. - GitHub - anderspitman/awesome-tunneling: List of ngrok alternatives and other ngrok-like tunneling software and services. Focus on self-hosting.
+If you’ve ever needed to remotely connect to anything you’ve probably tried using SSH. It’s one of the most versatile connection protocols available. This article shows some SSH use cases you may or may not have used.
+Tyblog | SSH Kung Fu + An extended look at SSH features that can serve a variety of purposes for different use cases.
+]]>
+Newsletter
+I wasn’t going to write an issue this week because I’m a bit overwhelmed by what’s happening in the world and it didn’t feel right to try to teach people tech when people are at war. I also know that there are still ways I can help.
+I can still teach others how to digitally protect themselves and give financially to people in need. I also hope this GIF made you smile because I’d like to bring a little bit of happiness into the world right now.
+I cried
+Russia began to attack Ukraine on Wednesday night for me. It was a long day at work that I mostly stayed disconnected online. That night I joined a Twitter Space with more than 50,000 people sharing information and talking about the attack.
+I tried to watch the news on TV but none of my local channels were covering it (I only have an antenna). I knew I could stream online somewhere, but the information I was getting from the Twitter Space was some of the best reporting I’ve heard in a long time.
+One of my kids came out of bed and wanted me to tuck them back in. I did and he said “good night.”
+My mind immediately went to to all the kids in Ukraine who would not have a good night. All of the parents who were scared. All of the families who would have to leave their homes to save their lives.
+I cried.
+This is the world we live in. Our physical safety and health are the most precious things we have. If I can give that to someone who doesn’t have it it is more important than anything else I can do.
+I had never heard of netblocks before this week but it looks like they have some great data about internet scale outages and censorship in different countries around the world.
+
+Mapping Internet Freedom in Real Time + — netblocks.org + Open, secure and reliable connectivity is essential for rights such as freedom of expression and freedom of association. Now we can measure network connectivity at internet scale.
+If you’ve never used Shodan to search for devices you’re in for 3+ hours of shock. I used to pay for a Shodan developer account which gives API access and more scans because I was fascinated by just how many things are connected and exposed on the internet. Use it to scan your own IP range and make sure your network isn’t exposed too.
+
+Search Engine for the Internet of Everything + — www.shodan.io + Search Engine for the Internet of Things
+Password managers all suck in various ways, but they’re WAY better than the alternative of not having one. I have been a LastPass customer for more than a decade and gladly pay for it. I’ve used various others (e.g. 1Password, BitWarden) and they all have pros and cons. I’m not saying you need to get LastPass, but you need to have something if you don’t already.
+#1 Password Manager & Vault App with Single-Sign On & MFA Solutions | LastPass + Go beyond saving passwords with the best password manager! Generate strong passwords and store them in a secure vault. Now with single-sign on (SSO) and adaptive MFA solutions that integrate with over 1,200 apps.
+]]>DevOpsDays LA
+It’s time we say goodbye to our good friend print(). The grep and bash that got us here won’t get us where we need to go. Systems and applications have changed. Where does monitoring stop and observability begin? What can modern infrastructure provide for applications today? Let’s look ahead by finding what worked in the past and what is missing.
The audience should be systems operators and SRE who have a focus on building tools for application developers.
+There is still confusion in the infrastructure space about what is monitoring and what is observability. When to use each one and what benefits they have. We can explore the topics more to help people know when they need one or the other.
+rejected
+]]>Workload native node provisioning in Kubernetes
+SoCal Linux Expo
+Kubernetes automatic node scaling has solved many problems, but it has introduced some new ones too. If you need your clusters to scale without pre-defined node groups or complex weight configurations we’ll show how you can dynamically add nodes based on workload needs with the Karpenter project.
+Karpenter is an open source Kubernetes node autoscaler that is optimized for fast node provisioning with workload defined constraints. Workloads don’t need to adapt to clusters to get the best node. Now your clusters can adapt to the workload to make sure all resources and constraints are perfect for what you’re running. Karpenter works directly with compute providers (eg EC2) so you get fast provisioning in the correct zone and instance size you need. You can create provisioners to restrict compute options or set defaults for your constraints. Karpenter also handles deprovisioning and cycling nodes based on your needs. In this talk we’ll cover some of the most used features and show differences between Karpenter and the Kubernetes Cluster Autoscaler and alternative providers like AWS Fargate.
+rejected
+]]>
+Refactoring
+This is a common saying for software developers. It doesn’t matter if your starting a new project or fixing a bug in an established project.
+Make it work means you write code that does what it’s supposed to and you write code that keeps your code working.
+Make it beautiful so other people can read your code. Working code isn’t useful if no one can maintain it.
+Make it fast should always be the last step. Don’t optimize when you don’t know what will be slow.
+Enterprise Open Source
+Lots of people don’t know what it takes to open source software from within an enterprise. Smaller companies might require peer review, an internal form, and maybe a license review.
+Large enterprise will have all of that and include tooling so you can track transitive dependencies, an open source office review, multiple lawyer meetings, and maybe a patent assessment.
+Refactoring enterprise, open source code isn’t straight forward either. While there is some freedom once the code is available under a permissible license there is still a lot of value from neutral governing bodies and foundations.
+I use to hate make because I didn’t understand it. Not only could I not make sense of all the weird variables and Makefile syntax, but it was hard to search for tutorials and examples.
I’ve learned a lot over the years from reading other Makefiles and many, many hours failing to make make do what I wanted. This tutorial and examples is something I wish I had years ago. I’m glad I found it last week because I still struggle.
Makefile Tutorial By Example + Makefile Tutorial by Example
+I may have shared this before but that’s OK because there’s a lot of new subscribers and if I forgot, you may have too.
+Earthly is like make + Docker. I’ve written a lot of Makefiles that use Docker to give repeatable, portable builds. Earthly takes that one step further and integrates them directly.
+Earthly - Better Builds + — earthly.dev + Earthly - The world deserves better builds
+I like embedded circuits. The reason I wanted to be a developer was to make lights blink. This website makes programming physical lights as easy as drag and drop.
+
+Adafruit Circuit Playground Express - Blocks / Javascript editor + — makecode.adafruit.com + A Blocks / JavaScript code editor for the Adafruit Circuit Playground Express.
+]]>
+Knowing how to debug
+Writing code isn’t too hard. Writing code that works is difficult. Writing code that does what is intended on the first try in all circumstances is nearly impossible. One way to get from writing to working code is through testing and debugging.
+There are lots of ways to improve your speed and accuracy when writing code. Some people only choose statically typed languages like Typescript and Go to catch errors at compile time. Others prefer test driven development and IDEs that assist in surfacing errors early.
+Using helpers can make writing code look easy and removes a lot of mundane tasks computers are well suited for. No matter how you get to correct functioning code there’s still a lot to consider for availability and performance.
+Software architecture
+Running a local app is very different than running a website at scale. Running a web app requires architecture considerations that can optimize for lots of different things (e.g. latency, throughput).
+If you run your app with the wrong architecture you can easily take good code and make it completely unusable. Locally optimizing can solve parts of a problem, but unless you understand the whole system you cannot guarantee your changes will have any impact.
+Microservices is an attempt to decouple components and allow optimization in many different areas. This can but useful but makes it much harder to optimize the end-to-end system.
+People who are experienced with different architectures make running reliable systems look easy. They often have a indescribable sense for what architecture should be used. Years of battle testing and outages gives them the ability to make it look easy.
+Sometimes a print is the easiest way to figure out why something isn’t working. Other times—with UI elements—a big red outline is the easiest thing you can do.
[tweet https://twitter.com/eyeshreya/status/1492022241168556032 +]
+“Platforms” are what infrastructure engineers are building and developers want to use. In reality what most applications and developers need is templates and defaults.
+Templates can be generated from the client or on the server and Efe has some great insights about building a client side “platform” with AWS Copilot.
+Thoughts on client-side platforms | Efe’s Blog + This post explains the motivation for client-side platforms by situating it against components and managed platforms, describes challenges with building such systems, and then lists design guidelines to tackle these challenges.
+If you want to optimize your architecture you first need to know what types of architectures exist and what benefits they have. Talescale has a great blog describing different options and why they picked some of the architecture they did.
+
+Modules, monoliths, and microservices · Tailscale + — tailscale.com + What is a microservice? When are microservices a good idea? Lately, I get people asking me when microservices are a good idea. In systems design explains the world, I talked about big-picture issues like second system effect, innovator’s dilemmas, and more. Can systems design answer the microservices question? Yes, but you might not like the answers.
+]]>
+Ideas
+In 1920, 14 year old Philo Farnsworth was plowing a potato field in Idaho. The teenager had moved there a couple years earlier with his family to a relatives farm. This farm was different though. This farm had electricity.
+In 1920 electricity was only in 50% of homes and this farm boy picked it up quickly. He found old electronics magazines in the attic and started tinkering with anything he could find. Electronics came naturally to him and soon enough he was thinking of new things to build.
+One day while plowing the potato field he realized that the straight lines back and forth through the field could be viewed from far away to look like a single image. Each line holding a horizontal fraction of the total image.
+He connected this idea with electrons and pictures. Just like how he could slowly plow an image into a field maybe he could transmit an image one line at a time and recreate it somewhere else.
+Nearly 10 years later, he held a patient for the first non-mechanical television using a horizontal image scanning technique and was well on his way to revolutionizing media and houses around the world.
+Invention
+The gif shows different transmission speeds for a modem and you can look at that and think that someone had to invent each one. The ability to transmit 56k data existed when 300 bps modem was invented but discovery is a linear process.
+All of the resources to create the television, the internet, rockets, and any other “modern” technology has existed for thousands of years, but humans have to incrementally discover and advance towards “new” technologies.
+Sometimes I think everything has already been invented, but I know that’s not true. Because what is possible changes with every new discovery.
+Feedback is an important part of any career. As a developer you often need to give and receive feedback about code but giving personal or behavioral feedback is much harder.
+Wes has a great thread with advice for how you can get better at giving personal feedback.
+[tweet https://twitter.com/wes +_kao/status/1489992239283683334]
+The game that has taken the world by storm. Now a bash script.
+
+Wordle in less than 50 lines of Bash · GitHub + — gist.github.com + Wordle in less than 50 lines of Bash. GitHub Gist: instantly share code, notes, and snippets.
+I learn more coding techniques from reading working examples than from theoretical explanations. Being able to compare examples in different languages is a great way to understand core differences between languages.
+This repository has almost 100 different games written in different languages so you can learn from each one.
+
+GitHub - coding-horror/basic-computer-games: An updated version of the classic “Basic Computer Games” book, with well-written examples in a variety of common programming languages + — github.com + An updated version of the classic “Basic Computer Games” book, with well-written examples in a variety of common programming languages - GitHub - coding-horror/basic-computer-games: An updated version of the classic “Basic Computer Games” book, with well-written examples in a variety of common programming languages
+]]>
+Movement
+If you look at images you can see art. If you look at art in sequence you can perceive movement. If you perceive movement you can see progress.
+Sometimes we get caught up looking at art we forgot to see how it fits into the bigger picture and how much progress we’ve made.
+Interpreted languages
+Imagine if every computer interpreted code differently depending on what model, operating system, and location where the computer was running. It would be impossible to write a program that would run with any sort of consistency or guarantees.
+That’s exactly how language between humans works, and somehow it compiles to something meaningful.
+I spent a majority of last week trying to compile words into something meaningful. We had to reach consensus about what words mean and how they will be interpreted by others from different backgrounds and at different times in the future.
+Telling computers what to do with structured, consistent words and punctuation seems infinitely easier.
+Have you ever wondered what it costs to run a website and app such as Lichess? $35,000 per month. A relatively small team runs the site and has a breakdown of all of their costs in a handy google spreadsheet.
+[tweet https://twitter.com/ornicar/status/1482671675489632257 +]
+Here’s a breakdown of a few different projects run by an individual developer. The two coolest parts of this dashboard is the effective hourly rate calculation and the historical view of growth over time. Some people believe creating services have a fast turn around to profit, but this shows development all the way back to 2017 with minimal profits.
+
+Open Project Dashboard | Cory Zue + — www.coryzue.com + Revenue and stats from my various revenue-generating side-projects. | Cory Zue
+Terraform has an infrastructure cost estimation as a paid feature of Terraform Cloud. It’s a useful to have an idea of how your changes will effect cost even if you’re not on a strict budget.
+Infracost is an alternative to the built in feature that puts cost estimates directly in pull requests.
+
+Cloud cost estimates for Terraform in pull requests | Infracost + — www.infracost.io + Infracost helps engineers see cloud costs before launching resources. Map costs to code directly in pull requests. Take action directly in your workflow.
+]]>
+Earned trust
+In any job you have to have trust. You can’t pinpoint a moment when you trust someone, but it’s easy to identify a moment when trust is broken. In a world of remote work without casual interactions with co-workers it can be very difficult to [re]build broken trust.
+If you wanted to get in shape you can’t go to the gym once for 9 hours. You would end up sore and in no better shape than when you started. But if you worked out consistently, every day, for 30 minutes you’d eventually get in shape.
+You can’t just do one trustworthy thing to have trust restored. It takes consistency and time.
+Additional content
+I try really hard to make this newsletter valuable to you. I don’t use it to push my content because I assume many of you may already follow my Twitter or YouTube.
+I had a great time in a couple Twitter Spaces this week about “dating” jobs and sharing how to tell better stories. If you’re interested in this content I recommend you follow me on Twitter, but if you’re not interested that’s completely fine too. I hope I have earned your trust enough so you know I’ll only bring in content I think will be valuable to your engineering skills and career.
+This was a very in-depth write up about the Roblox outage from last year. Two things stood out to me. First is that they’re running 170,000 containers. That’s a ton of containers! It doesn’t say if that’s spread across environments or only in production, but it’s still a significant size.
+Second, they couldn’t trust their monitoring during this outage. They had a reciprocal dependency on Consul that made it much more difficult to troubleshoot and find a cause for the outage.
+
+Roblox Return to Service 10/28-10/31 2021 - Roblox Blog + — blog.roblox.com + Starting October 28th and fully resolving on October 31st, Roblox experienced a 73-hour outage. We’re sharing these technical details to give our community an understanding of the root cause of the problem, how we addressed it, and what we are doing to prevent similar issues from happening in the future.
+When your developing a web service you need to be able to test it. Opening it on localhost is typically enough, but sometimes you need a way to make sure secure/HTTPS traffic is also working. This repo provides a free, wildcard *.localhost.direct certificate you can use for a trusted local connection.
GitHub - Upinel/localhost.direct: localhost with public CA signed SSL certificate + localhost with public CA signed SSL certificate. Contribute to Upinel/localhost.direct development by creating an account on GitHub.
+I’ve been using Revue for this newsletter which works well, but it’s not as flexible as my previous service. I really wanted a way to send articles from my phone to the Revue saved articles, but there’s no documented way to do it. I knew there might be clues in the extension because it is trusted code I could use to find what I needed.
+
+Reverse engineering a chrome extension + — www.justingarrison.com + Finding hidden APIs for fun and flexibility
+]]>I’ve been using Revue + for my 123dev + newsletter and wanted an easier way to save URLs to include in future emails. If you’re not familiar with it, Revue has a chrome extension so you can send URLs to a queue which shows up next to the editor.
+
It’s a really handy feature and I wanted to use it without the extension. Ideally, I could send these URL from my phone via a Siri Shortcut (I haven’t figured this part out yet).
+The functionality wasn’t exposed in their API docs + so I’d have to figure out another way. I learned some new things exploring the extension so I thought I’d share how I did it.
+The first thing I needed was to figure out what URLs the extension was calling. I tried watching Chrome dev tools for network calls, watching DNS requests, and tcpdump.
+Without having a man in the middle to decode https it wasn’t going to work. Thankfully, someone pointed out the code is available if you have the extension installed.
+First, we need to get the extension ID from the installation URL +.
+
The long string in the URL fdnhneinocoonabhfbmelgkcmilaokcg will be in our home folder with the source code.
On my computer it’s under $HOME/.config/google-chrome/Default/Extensions/fdnhneinocoonabhfbmelgkcmilaokcg. I opened the folder in vscode and looked at the main.*.chunk.js file.
It was minified so first I had to unminify it as best as possible. Formatting the javascript was as good as I could get it.
+From there I looked for POST url verbs to see what it was calling. I found this relevant code which looked like what I needed. It’s calling https://www.getrevue.co/extension/add.

You’ll see from the code the only thing it’s sending is a POST with a body. At this point I don’t know what the body should be, but I’ll try to figure that out later.
Now I need to jump over to Chrome to get my session cookie. Open getrevue.co in a tab and open dev tools.
+Go to the Application tab and then find Cookie in the left sidebar. Copy the value for _revue_session.
+
Now we need to send our request and see if it works.
+We still don’t know what the body data should look like, but looking at the API objects that are documented I’m going to guess it needs a title and url.
export COOKIE="your cookie session here"
+
+curl -X POST -b "_revue_session=$COOKIE" \
+ -H "Content-Type: application/json" \
+ -d '{"title": "TESTING", "url": "https://justingarrison.com"}' \
+ https://www.getrevue.co/extension/add
+Sure enough that worked!
+Here’s a snippet of the response
+
The response gives us a much better idea of the full body data we can use. Adding a description will be a minimal amount of information that would be useful.
+Now we can send items from the CLI but what about from iOS?
+Siri shortcuts are very powerful but also very cryptic.
+I was able to make a shortcut with the “Get contents of URL” function which is able to make a POST call.
+
I can put in the URL, change the method to POST, and add a body with the required title and url variables.
+Unfortunately, when I try to use this shortcut from the share sheet I don’t think it uses my session token so I never get authenticated to the API.
+If anyone knows a way to either open a Safari page and perform the action or a way to store an authentication token in the shortcut please reach out on twitter + and let me know.
+last modified January 20, 2022
+]]>
+Loops
+Inner loops and flow are such powerful things for developers. Some of the most productive developers are the ones who can easily get into this state. I spent most of my week trying to develop a fairly simple app, but instead I spent all of my time yak shaving and spinning my wheels.
+More problems
+++Today’s problems come from yesterday’s solutions.
+
++―Peter Senge
+
One of my favorite things about Kubernetes is that it has made many different infrastructure APIs intuitive (or at least consistent). In this article Slack calls it “intuitive consistency” which has helped me use APIs quickly more than any amount of documentation or sample code.
+
+How We Design Our APIs at Slack - Slack Engineering + — slack.engineering +
+Slack’s design principles and process for APIs
+Just because you have a design for your API doesn’t mean you know what technology you should use to implement it. This does a good job of explaining when you might want to use different data exchanges. Hint, never use SOAP.
+
+An Architect’s guide to APIs: SOAP, REST, GraphQL, and gRPC | Enable Architect + — www.redhat.com + By convention, a Protocol Buffers definition is defined in a .proto file. (See Figure 3, below.)
+If you’re looking for more details than the Slack article check out Zalando’s full API guidelines. There’s lots of details you don’t have to adopt, but I’m thankful they open sourced their guidelines for others to learn from. Every decision on this guide likely comes with years of lessons learned.
+Zalando RESTful API and Event Guidelines + Your description for this link…
+]]>
+Static force
+When I was a Sophomore in college I signed up for an upper division physics course called Statics. I had never taken a proper physics course before, and I didn’t have a clue what the class would be about. But I wanted to try it.
+I was in way over my head to figure out how much force applied in one area would effect other joints and beams. I absolutely loved it! I needed help to understand how to calculate the forces, but once I knew the basics I knew physics was what I wanted to study. This gif is a visual representation of the forces we would calculate in the class.
+In tech we work on specific areas to move them forward. We push and pull on things we want to impact, but lots of times they don’t move the way we want. In the past I thought this was because I wasn’t applying enough force.
+I’ve come to realize the amount of force doesn’t matter as much as applying force in the right area. Without being able to see the entire structure you’re pushing against there’s no way to properly measure where your force is having impact.
+Next time you want to have a big impact—take a step back and make sure you understand the structure you’re dealing with and where the best place to apply force will be the most effective.
+Dynamics
+The companion class to Statics is Dynamics. This is the study of forces with bodies in motion. The main difference between the two is time.
+The rules of applying static force still apply, but when you measure change over time you realize that a tiny bit of constant force can have an exponential impact later.
+Organizations are not static. They’re constantly moving and changing. You can have impact, but you need to be patient and consistent. You need to constantly nudge your area of impact in the right direction.
+If I fired a cannon ball out of a cannon it immediately has a huge force applied to it and moves very quickly. Without a constant, corrective forward force being applied a relatively small force like gravity will quickly push the cannonball to the ground.
+Sometimes, I think all I need is a big bang and the change I wanted will be done. There’s a constant force of cultural gravity resisting change in any organization. My job isn’t done with just one big effort. Many smaller forces applied consistently over time will have a much bigger impact.
+I hosted my first recorded Twitter Space on Friday Jan 7th discussing the original Bitcoin whitepaper. It was sometimes hard to keep the space discussing the white paper and not everything else crypto and bitcoin mean to people. The realization that the word “blockchain” never occurs in the paper was very interesting.
+[tweet https://twitter.com/rothgar/status/1478048553679290370 +]
+Free Code Camp has a great rust overview for beginners. It has two hands on projects that you should be able to walk through in a few hours to understand some of the basics and learn with functional projects.
+
+Learn Rust Programming Course – Interactive Rust Language Tutorial on Replit + — www.freecodecamp.org + For six years in a row, Rust has been voted the most loved programming language by Stack Overflow. So if you’re ready to learn this popular programming language, this course will introduce you to Rust so you can start using it in your projects. You will be working entirely within
+I was setting up a Windows desktop recently and there are two usability things I miss from Linux any time I try to use a different operating system. Sloppy window focus—where your window focus follows the mouse pointer without raising the window—and Alt key window moving and resizing.
+AltDrag works great for window moving while holding the Alt key and left mouse click or resize a window with Alt+right click. Between AltDrag, the new Windows terminal, and WSL2 I’m almost comfortable using Windows.
+If anyone knows of a good sloppy focus tool for Windows please let me know. All the ones I’ve tried didn’t work well.
+
+AltDrag + — stefansundin.github.io + AltDrag brings the window moving behavior from Linux to Windows.
+]]>
+The illusion
+You’re free to do whatever you want. The part that I’ve had problems figuring out in the past is I have freedom with and without a leash.
+Without a leash I can go wherever I want. I can go anywhere, learn anything, and do anything. I have to pay the consequences of my actions but I’m free to do them.
+With a leash I can go wherever I want within certain bounds. If I’m at a job but want to do something else I can work with my manager to let me get closer to that tree programming language. I can sniff those bushes that new tech to see if I like it. But it’s up to me to communicate what I want to do and take the first step.
+The real freedom comes when you realize you’re the one holding the leash. Don’t hold yourself back.
+Cycles
+Humans need cycles. Every day is new but we have a hard time making big changes or breaking habits without large life events. There’s no way you would be able to maintain excitement for every second of every day.
+New years is just another day but a milestone in our cycles in how we measure time. Take advantage of it to make big changes, one small change at a time.
+I personally want to get better with CSS this year. This site might be familiar to many of you, but I’ve only gone through some of the tutorials and already learned a lot.
+
+Learn CSS + — web.dev + An evergreen CSS course and reference to level up your web styling expertise.
+If you want to learn python or have an instant, web-based python playground this site has a really cool interface. It’s also open source so diving into some of the code to see how it’s built it is something that can teach more advanced developers.
+
+futurecoder: Learn to code from scratch + — futurecoder.io + Your description for this link…
+I think I’m finally sold on benefits of GraphQL at large organizations. Even small APIs can benefit from the structure and best practices in many of the libraries and tooling. I thought this workshop was really interesting. Daily emails to teach you about a new concept in GraphQL. Delivered to your inbox.
+
+GraphQL workshop + — graphqlworkshop.com + Discover your path through the GraphQL wilderness.
+]]>
+Start fresh
+At the end of every year I read or delete my pocket queue. I highly recommend it. It feels really good to start the year without all the baggage of the things you wanted to read but never prioritized.
+The same goes for things you wanted to learn. All those frameworks and languages you haven’t needed probably don’t matter that much. Take some time to push yourself to new things in 2022 instead of feeling guilt over the things you didn’t do in 2021.
+What you’ve accomplished
+It doesn’t matter if you learned to program this year, if you switched careers, or you chose to be a nicer person. You survived the past 2 years and that’s a big accomplishment. I hope you have a wonderful holiday and new year and hope you success on your goals for 2022.
+As for me, I’m looking forward to helping more people be better versions of themselves. I have lots of goals to create new content to reach more people and to dive deep in some areas of tech to understand them more deeply.
+I wrote up a full blog post of some things I learned publishing this newsletter every week for an entire year. I know lots of other people started, or wanted to start, newsletters so I hope you find this useful and help you focus on some of the things that I’ve found matter.
+
+Lessons learned from 123dev newsletter + — www.justingarrison.com + One year of failures and tips for new and existing newsletters
+I’ve been recording videos of resume reviews for over a month for lots of people looking for tech roles. Last week I had the idea to ask if I could post some of the reviews so more people could learn about good resume practices.
+Here’s a video of one of the reviews with more scheduled to be posted on my YouTube channel over the next month.
+
+Free resume review: from food services to tech + — www.youtube.com + A resume review for someone trying to get into tech coming from food services. What things they should highlight in their resume and make sure are relevant t…
+If you haven’t been keeping a brag doc I highly recommend you start in 2022. It’s not a place to record all of your tasks. Rather it’s a place for you to promote the things you had significant impact on, were proud of, or good feedback you received along the way.
+I have a 2 hour calendar appointment on my calendar that repeats every 3rd Wednesday every 3rd month. This means I’ll fill out my brag doc 4 times a year and it’s on my calendar so I won’t forget. Doing it quarterly I have found gives me enough granularity to not forget things but still focus on bigger accomplishments.
+At the end of the year I clean up the doc and share it with my manager. It gives me a starting point to talk about career goals, accomplishments, and promotions.
+Get your work recognized: write a brag document + Get your work recognized: write a brag document
+]]>I have been running 123dev newsletter + for a full year. 52 weeks in a row. I’m really proud of myself for writing more, being consistant, and—unlike my exercise plans—sticking to a new habit.
+Not only did I buy a domain and use it, but I’ve received great feedback on the content and format. It has given me an outlet to share my thoughts, and—according to the people who’ve reached out—added value to their lives.
+But the newsletter is a failure.
+At least it is according to my original goals and assumptions.
+I made a lot of mistakes and wasted a lot of time creating it. I want to give you the hindsight I have after consistantly writing every week for one full year and failing to meet my goals.
+My original goal when I started in January of 2021 was to have 2000 subscribers by the end of the year. As I write this it is the last week of December and I have 327 subscribers.
+I knew newsletters with tens of thousands of subscribers and some had thousands of subscribers within their first month. I thought I had a growth hack they didn’t have. How hard could it be?
+When I started the newsletter I had about 7000 Twitter followers and thought I could leverage a fraction of that number to spread the word of my newsletter. I intentionally created a format that I thought would be sharable on social media and a name I thought would be unique.
+There is a gif in each issue and if I made it really easy to share the gif I thought it would help the word to spread. Part of the reason I created the format I did was because I thought issues of the newsletter could go viral, or at least gain some momentum from readers sharing their favorite gifs, insights, and links on social media.
+I spent many nights learning about open graph, Twitter video cards, javascript and making it so that every post could be shared with an embedded video with the weekly gif +. I failed a few times with different technologies and in the end it just didn’t matter.
+To this day I have seen one social media post from someone clicking the share button I thought would be a breakout success. They only reason they clicked the share button was because I asked for someone to share that issue.
+I learned that the best way to grow your audience is from an existing audience or slowly over time. Many of the people I know with tens of thousands of subscribers have been running their newsletters for 3+ years. Others who got thousands of subscribers got them because they had a large audience or had people with large audiences share their newsletter.
+Most of the newsletters I know of are news aggregators. Give people value by saving them time with human curation and maybe link summaries. It’s a big value proposition and one of the reasons I subscribe to so many newsletters. It’s a very clear what you’re getting when you sign up for the newsletter or look at a couple old issues.
+But it wasn’t the format I had. My goal was to teach people different aspects of what it meant to be a developer and give them some related links or tools. Which means I needed to find an audience. Not people who wanted to get the best news from the week, but people who wanted to learn from my experience as a developer.
+But my existing audience on Twitter was likely the wrong audience. I needed to find more entry level software developers or people trying to get into tech. Until I found the right audience the newsletter content wasn’t going to add value for a lot of people because the content I usually share online is very niche.
+Even though Twitter is still the primary place I promote the newsletter, I started hanging out in different audiences. I intentionally engage with people doing #100DaysOfCode and Twitter spaces for people looking to get into tech or learning to be a developer. I don’t promote the newsletter directly, but engaging in those places naturally help people find the newsletter when they click on my profile. I don’t intentionally make the content for beginners, but I find they’re the ones searching for new content the most.
+In addition to the 326 subscribers I have 321 followers on the Twitter account. Creating a Twitter account was a mistake.
+I thought it would be good to have a newsletter brand, but in reality it either split the audience or it duplicated count. I’m not quite sure.
+I might shut down the twitter account in the future, but I haven’t figured out how to promote the newsletter itself. The website is invisible because it just redirects to Revue, and without a social media presence I’m not sure how other people gain a lot of subscribers without having a large audience or letting it grow organically over time. I’m open to hear your thoughts and suggestions.
+If you want to get a big subscriber base right away the easiest thing to do is to have an audience on another platform and share the newsletter there. If you don’t have a large audience anywhere then the next best thing is to go find the audience you want and start adding value in that community.
+Find people with the audience you want and engage with them. Add value to their posts in comments and extend who can find you by not waiting for the audience to come to you.
+I’m thankful for everyone who subscribes. Seriously, it’s really cool that you get the emails over RSS or following on Twitter.
+Your inbox probably gets a lot of messages. You may be strict about what you sign up for or you may filter all my emails to the trash. It doesn’t really matter.
+But I learned that a lot of people treat email different than anything else they do online. It’s not social media with frequent comments, likes, or shares. It’s not a blog posts with infinite open tabs or read later queues.
+Email is different. Many people stop multi-tasking when they read email.
+They’re going through messages sent to them and they do it with a mission. The mission isn’t to learn something or deeply read about a topic. Many people put off reading extremely long emails.
+I think the mindset people are in while reading emails is a big reason the share button never worked. People don’t want to post their personal emails to the world. It’s not the mindset or content they think of when reading emails. It’s personal.
+It could also be that my gifs and content aren’t very good. I may never know.
+But I do know that I rarely see people who share and only a handful of people have every replied or given feedback.
+When I started the newsletter I picked Buttondown as my newsletter platform. It was simple enough to get started and powerful enough to one day automate the things I wanted to.
+I still wanted to publish all the content to my own static website because that was the only way I could get the share button to work the way I wanted, but Buttondown’s flexibility ended up making me focus too much on the platform and not enough on the content. It also didn’t have integrations for posting issues of the newsletter, organizing potential content, or a Twitter profile link.
+Most people probably don’t care about those integrations but I was having hard time organizing potential links and remembering to share content without building things myself. I’m not opposed to building things, but I spent far too much time building and not enough time focusing on content.
+When I saw that Revue was getting Twitter profile integrations I knew I needed to switch. Twitter was the only place I was promoting the newsletter and having a link to 123dev.email + was not resulting in new subscribers.
+I didn’t want to lose my existing issues in Buttondown and Revue doesn’t accept markdown content or import from Buttondown so I meticulously trasferred every issue and scheduled them to publish. Once all the issues were published—Revue only lets you publish one per day—I imported my existing subscribers and switched the website sign-up form.
+This triggered spam detection on my account and I was locked out for over a week. I wish I would have picked Revue from the begining. It’s not as automation friendly but gives me a lot of good enough features for the current subscriber size.
+If you’re not publishing a news aggregation newsletter then you’re likely going to be writing some original content for the newsletter. Original content can be more shareable, but it might be hard to do on a weekly cadence.
+Most weeks I share something I’ve learned recently. But I don’t learn shareable content every week and plenty of times I don’t write anything original.
+If you learn something new it might be better to track your resources and save them until you have enough to create a full newsletter. Not only will it be easier to write and share content together but creating themed issue with tantalizing titles will likely get you better click rates.
+I don’t have hard numbers but I suspect it’s better to have unoriginal content than to skip weeks until you do. My fallback is to pick out a handful of tools from my GitHub stars and try to create a theme around them.
+If you’re not publishing news content it’s also helpful to re-publish some of your old issues. It’s likely that many of your subscribers have not read your backlog and because the issues are topical instead of based on recent events it makes it easier to take a week off. I might even do that next year.
+My best advice if you want to start a newsletter is do it now. Figure out a pace that works for you and be consistent. Find content that’s original and give yourself enough flexibility so that you’ll still enjoy writing 1 year or 5 years later. Write content that you would want to see in your inbox.
+Don’t be upset if you don’t have huge growth (or even double digit growth). You’re going to have to promote yourself and your newsletter to get more subscribers. How and where you should do that I’m not sure yet.
+While you’re at it please subscribe to 123dev +. 🙂
+]]>
+The future of the web
+Many people believe the future of the internet is web3. The more I dig into it the more I’m convinced it isn’t a technology stack and instead it’s a business model.
+It does little to address the shortcomings of existing systems and in many ways harms and alienates more people. Maybe that’s the exact reason it will be the future of the web—that’s terrifying.
+When the justification of harm can be rationalized as the fairness of code the writers of the code avoid accountability. A trustless system where personal responsibility decentralizes liability is no way to run a globally inclusive communication platform.
+Community
+Finding your people can be difficult. What used to be confined to physical locations is now categorized and searchable in your social network of choice. I don’t believe online communities can replace the need for in-person interactions, and people’s interests cannot be confined to a group of categories.
+As a developer it’s easy to think your community is a language, framework, or API. While those can help introduce you to other people it’s important to remember we are not our tools.
+Community can be much deeper than shared interests. Be your authentic self and let your people find you. Make sure you relate to the human side of community.
+This article puts a lot of things in perspective. Especially at this time of year it’s good to remember what matters.
+The author asks three questions and explains why they’re important.
+
+How Will You Measure Your Life? + — hbr.org + Don’t reserve your best business thinking for your career.
+I could never remember how to inspect a certificate from a terminal so I have an openssl alias in my shell to query certificates from web servers. This tool has a lot more options and is much easier to remember.
+GitHub - pete911/certinfo: print x509 certificate info + — github.com + print x509 certificate info. Contribute to pete911/certinfo development by creating an account on GitHub.
+Cloud providers don’t always have the most flexible APIs. To get information you need might require lots of API calls or custom tools. GraphQL APIs can help improve your interface to the cloud, and cloudgraph looks like a really neat option.
+
+GitHub - cloudgraphdev/cli: The GraphQL API for AWS and Azure (GCP coming soon!) + — github.com + The GraphQL API for AWS and Azure (GCP coming soon!) - GitHub - cloudgraphdev/cli: The GraphQL API for AWS and Azure (GCP coming soon!)
+]]>
+Crumple zones
+Older cars were built strong with lots of metal and reinforced welds. The thought that building every part strong so it wouldn’t break turned out to be a bad idea.
+In an accident, something has to give. All that energy has to go somewhere. With a rigid frame—and mostly hollow interior—the area that usually collapsed was the passenger space. Combine that with a lack of other safety features, accidents used to be much more dangerous for the people than the cars.
+Newer cars have intentional weaknesses in the front and rear known as crumple zones. This makes sure the rigid passenger compartment is the last thing to collapse.
+Writing software and building systems need similar intentional weaknesses to make sure the most important components and critical functionality is protected. Sometimes, you can predict how systems will fail. Other times you have to discover failures in action.
+The car industry does this by building test cars, crash test dummies, and lots of instrumentation (e.g. sensors, high speed cameras). The software industry does this with trial an error, test environments, and debuggers.
+Security patching
+The internet was in a flurry to update log4j settings to prevent exploitation last week. If you were quick, you updated your settings and then had to patch the library the next day.
+Your ability to deploy changes quickly has impact for your business’ ability to adapt and your security posture. All that time you’ve put off updating your Jenkins instance or migrating to a new system should have been a higher priority.
+This security vulnerability devolved into a discussion online about open source funding. How can we prevent these type of issues in the future and what is the responsibility of “big business”? I don’t have answers, but I don’t think the solution is as simple as throwing money at maintainers, and current solutions with scanning and notifications aren’t working.
+I talked to a lot of people last week about getting a job in tech. I took a lot of the advice I was giving in DMs and put it in this thread. If you’re a new subscriber thank you. Feel free to reply to this email if you have feedback or would like to see specific topics.
+I wrote this blog at the beginning of this newsletter, but I’m going to include it again so all of the new subscribers can read it too. Still relevant information that is more generic than the twitter thread.
+
+Breaking into tech + — www.justingarrison.com + Resources and advice for beginning a career in tech
+I found this page extremely useful for HTML and CSS snippets. Not only do they give you the code but they clearly show what it should look like with an image and example.
+Layout patterns + — web.dev + A collection of layout patterns built using modern CSS APIs that will help you build common interfaces such as cards, dynamic grid areas, and full-page layouts.
+]]>
+Isn’t it great when a problem fixes itself? I’ve seen this happen more often with people systems than with technology. Ignore that email a couple of days and it’s likely not to be a problem anymore.
+With technology we usually have to take some action. Reboot a server, add a sleep, or add more resources. It’s not a “fix” but the problem isn’t visible for a little while so we can go back to doing other things.
+Sometimes you can push the problem off long enough to another person, team, or even a provider. Other times you push the problem off to the future you hoping you’ll have more time or more knowledge to fix the problem right this time.
+I watched from afar as 20,000 people attended re:Invent this past week in person. It looked like a lot of fun and I can’t help but think a lot of people learned a lot of things.
+More important than learning things, conferences are about building trust and networking. Humans build trust by doing things together and having shared experiences. Usually, trust is built faster when people are physically together because the most memorable experiences are created by our senses.
+If you want to learn something, there are more efficient ways to do it than attending a conference. If you want to build trust and meet like-minded people there are cheaper alternatives.
+But I know not being efficient and not finding the cheapest solution also have value. When it comes to doing both things and being a good way to get funds—conferences are the best we currently have.
+I worked on a new autoscaler for Kubernetes called Karpenter which was launched this past week as now being “production ready.” The main question I heard was “how is this different than the existing cluster autoscaler?” I made this quick video to describe some of the differences. In true “Justin” fashion—I used props.
+Karpenter vs Kubernetes Cluster Autoscaler +
+How is Karpenter different from the cluster autoscaler? We’ll show some of the differences here and you can read more at https://karpenter.sh +
+I don’t enjoy doing coding puzzles for fun. It’s weird to me. I’m sure it would make me a better developer and probably help me interview better, but I just can’t get into it.
+If you do like this sort of thing, I always hear about people who like advent of code.
+ +This was the most level headed review of blockchain and web3 technologies that I’ve read. Many of the technical limitations can be overcome, but I wonder how much of it is already too late. Even if the design is changed, is there any real benefit compared to alternatives? None that I’ve seen.
+
+An Engineer’s Hype-Free Observations on Web3 (and its Possibilities) + — www.psl.com + Our thoughts
+]]>
+Logic
+How people think has been on the mind of philosophers for ages. Aristotle had the most famous works on logic for around 2000 years. In the 1600’s Gottfried Leibniz attempted to improve on Aristotle’s logic by simplifying it and representing it in mathematical notation.
+Two hundred years later George Boole further simplified Leibniz’s logic and notation into what we know today as Boolean algebra. Every introduction to computer science will teach you AND, OR, and NOT which are the foundational components of human logic.
+In the 1930s Claude Shannon realized that he could apply Boolean logic in circuits using gates in what he called “switching algebra”. It didn’t matter if the circuits were made of wires with electrons or water with dams. Before Shannon no one connected the ideas that you could build circuits (e.g. electricity, telegraph networks) with any type of logic in them. Of course this thought later evolved into transistors and computer chips.
+It’s amazing how much we take for granted in our education and career. We have the benefits of all the people who simplified complex ideas into teachable, concrete “facts” that are obvious in hindsight.
+Movements
+++The spirit of a movement is in its founder.
+
This applies to movements, technologies, and companies. You can tell a lot about what a community values from the people who cultivate it. Sometimes, you can’t identify individual creators for movements, but companies are much easier. In some cases you can even tell what founders are like by looking at what they’ve created.
+If you want to learn more about the history of computing and some of the people involved, this article was a good summary. It’s a fairly long article, but does a decent job summarizing many books written on the same subject.
+
+How Aristotle Created the Computer - The Atlantic + — www.theatlantic.com + The philosophers he influenced set the stage for the technological revolution that remade our world.
+I haven’t had a chance to use earthly yet but I like the idea of it. Usually, for build systems I’ve had Makefiles which execute different commands in containers. This is great for portability, but often requires more make logic than I want or more bash than is maintainable.
Earthly combines them by essentially making dockerfiles with targets. I could see this solving some problems and would love to see it implemented as a custom Dockerfile syntax.
+About the only thing I don’t like about Earthly is the BSL license which would make me hesitate using it in any company setting and potentially limiting its usefulness.
+
+Earthly + — earthly.dev + Earthly - The world deserves better builds
+Git is a barrier when learning how to code and commonplace once you’ve been developing for a while. It doesn’t mean it’s easy and even after years of using it I still learn new tricks, aliases, and functionality.
+Conditionally setting your commit email depending on what folder you’re in is a nice trick if anyone does development professionally and personally. I wish this could easily be set on a per-clone basis but it’s still nice to have a top level way to configure it.
+Conditionally set gitconfig + Personally, I try to keep my development environment as convenient to use as possible and with the advent of BeyondCorp-style zero trust, more internal services are thankfully available without a VPN required. This makes it easy to access tooling from your mobile device and other places but it can also mean the line between work and personal blurs a little bit. A lot of my custom work-related configuration has been deprecated (utilities for wrangling VPNs and proxies) and I basically don’t maintain anything more than what was already open sourced.
+]]>
+If you watch the gif again look at the moment the ball hits the glass. The glass appears to shatter before the ball makes contact. How is that possible?
+It turns out glass often breaks from tension rather than compression. The ball pushing on the glass makes it break from the opposite side from where it hit.
+Sometimes we think our features or products are going to make a big impact for a certain use case or user. It’s not until we observe their actual use cases that we realize our assumptions were wrong, but the reality makes more sense. Don’t ever be afraid to be wrong about your use case assumptions. It’ll help you adapt and build the right thing your users need.
+I started playing Halo this week using Xbox Cloud Gaming beta. It works in many use cases, but it’s extremely frustrating for others (e.g. fast pace multiplayer). It reminds me of a classic innovator’s dilemma situation when a new product is only viable for a small subset of the existing user base.
+But the new product creates new consumers because it allows people to do things they couldn’t do before—even with a worse user experience. In my case it let me play Halo Infinite even though I don’t have a gaming computer or Xbox. I was a non-consumer, but became a consumer even though the performance and graphics are not as good.
+If history has taught us anything it’s that poor performing products will almost always get better with time. Soon the thing that was a small, niche market will displace the traditional revenue streams.
+Speaking of innovation—I posted a recent lightning talk about how to determine what new products will be big and which are just exciting new technologies. Creating new consumers is a big reason why I don’t think web3 is a disruptive innovation. It doesn’t create any new consumers.
+
+TikTalk - Devopsdays Portland, OR 2021 + — www.youtube.com +
+A lightning talk about cycles in technology and how to spot them. https://devopsdays.org/events/2021-portland-or/program/justin-garrison + Full abstract:Technolo…
+I find myself constantly telling people that being data-driven is not going to make you innovative. I usually would say this because collecting data will make you too slow. Thanks to this article I now have a better way to articulate why. Because fundamentally the majority of data will favor the majority audience. But disruptive innovation happens with non-consumers and “visionary ideas derive directly from centering people at the margins.”
+
+The Oxymoron of “Data-Driven Innovation” – Chelsea Troy + — chelseatroy.com + Once upon a time, during the dawn of the internet era, early web products often came from college dudes. The dudes were almost always wealthy and well-connected, but they weren’t usually market-savvy. These people, now billionaires, have given beaucoup interviews on how they got started. Look: I’m as concerned about survivorship bias in drawing conclusions…
+If you’ve ever seen a bash script that self expands an archive and executes an installer it was probably made with makeself. In a world of containers and multiple other portable executable formats I don’t recommend using it, but it was something I learned about fairly recently despite having used shell archive “shar” files for many years.
GitHub - megastep/makeself: A self-extracting archiving tool for Unix systems, in 100% shell script. + A self-extracting archiving tool for Unix systems, in 100% shell script. - GitHub - megastep/makeself: A self-extracting archiving tool for Unix systems, in 100% shell script.
+]]>
+Some developers are very skilled. They can do things seemingly impossible for others. It might be developing a feature faster than others, debugging a hard problem, or reaching new scale with systems.
+Many times those skills are accompanied by a decent amount of luck. While a skilled developer can replicate something with high accuracy, it’s not always skill alone that helped the first time.
+Maybe you’re in the same position. You’ve done some incredible things as a developer, but you haven’t been able to replicate it. In both cases it’s alright. You can be incredibly skilled and still only have a .03% rate of making a hole-in one.
+When developing code lots of people talk about optimizing your “inner loop.” The cycle of writing code and knowing if what you wrote works as intended.
+For many decisions we make—especially product decisions—there is no inner loop. The feedback cycle for knowing if we chose the right thing can be weeks, months, or years. The further away in time you move from the decision the harder it is to know the reasons for success.
+One thing that is important to do with long feedback loops is to collect relative data from the moment you make a decision until the time you know the decision outcome. You can’t attribute success to a single decision, and you can never accurately compare two simultaneous decisions.
+Layering data from multiple decisions can retroactively shrink feedback loops to discover patterns. Thankfully, people are very good pattern matchers and even with long feedback loops the patterns you find can help you make better decisions with less data in the future.
+I learned a few new sed tricks from this repo. You might too.
GitHub - adrianscheff/useful-sed: Useful sed scripts & patterns. + Useful sed scripts & patterns. . Contribute to adrianscheff/useful-sed development by creating an account on GitHub.
+Creating infrastructure with code is often a very imaginative process. We used to visualize our infrastructure because it was physical servers, switches, and cables.
+Now, it’s all virtual and our tools automatically create the component dependencies with directed acyclic graphs (DAGs). It is much harder to visualize what is being built, but thankfully with tools like rover if you’re using Terraform you can still visualize and explorer your infrastructure.
+GitHub - im2nguyen/rover: Interactive Terraform visualization. State and configuration explorer. + Interactive Terraform visualization. State and configuration explorer. - GitHub - im2nguyen/rover: Interactive Terraform visualization. State and configuration explorer.
+If you’re using the AWS CDK to build your infrastructure there’s also this tool to create diagrams of your AWS components. It’s not quite as powerful and rover but getting up-to-date diagrams can help you better understand the infrastructure.
+GitHub - pistazie/cdk-dia: Automated diagrams of CDK provisioned infrastructure + Automated diagrams of CDK provisioned infrastructure - GitHub - pistazie/cdk-dia: Automated diagrams of CDK provisioned infrastructure
+]]>
+Learning new things is hard. I don’t care if it’s a programming language, being a parent, or starting a business. One of the hardest things about being a developer is it’s such a new profession you’re constantly learning new things. If you’re not falling on your face once in a while you’re not moving forward.
+I don’t like many things about Thomas Edison, but he certainly had a positive outlook on failure.
+++I have not failed. I’ve just found 10,000 ways that won’t work.
+
Thomas Edison
+Gogh is a neat tool to that can add themed profiles to your terminal emulator (Linux and macOS). What I really like is the website which shows the colors used in the theme and provides some basic filters to find the perfect theme.
+Gogh - Color Scheme + Color Scheme for Terminals
+Speaking of screenshots. Lots of people know about carbon for providing screenshots of code files which can be easily styled. I learned this week that there’s also a CLI to use the service. This was especially nice for me because instead of using a file I could pipe to the CLI to get screenshots of command output.
+GitHub - mixn/carbon-now-cli: 🎨 Beautiful images of your code — from right inside your terminal. + 🎨 Beautiful images of your code — from right inside your terminal. - GitHub - mixn/carbon-now-cli: 🎨 Beautiful images of your code — from right inside your terminal.
+Speaking of something you can pipe commands to, seashells lets you pipe any command output to a URL. I’m still not sure why I like this so much or when I’d ever use it, but it certainly is cool.
+ +Pipe command output to the web.
+]]>
+We’ve all worked hard on something only to have it go completely unnoticed or the work completely cancelled. It really sucks. It’s out of your control, but that still doesn’t make you feel better.
+When this happens to me—it has happened a few times in the past two months—I focus on what I learned doing the work. Was there a hard problem I solved? Did I work too hard and should I put better boundaries in the future? Knowing what I know now, would have have solved the problem differently if asked to do it again?
+Just because someone else didn’t notice doesn’t mean the time was wasted. It’s a good opportunity to watch out for people doing good work and make sure you let them know you noticed and appreciate it.
+I’m helping onboard someone at work and it reminds me of what it was like for me at Amazon. Sometimes, I think everything should be automated so we don’t have to go through this process each time, but then I remember that companies and processes change all the time. Automation is a lot more work to maintain than documentation.
+I also remember that part of onboarding is building trust. The person has already been hired which shows everyone trusts they can do the work. But as humans we need to build trust over time and onboarding check-ins are a great way to start building it.
+Being new you also need to learn what’s normal and acceptable. The best way to do that is by talking to people. You’re constantly watching for how and when people communicate. If everything was automated you would have every account and application you needed and be given a task list to start working. You would miss out on building trust, watching how, when, and where people ask questions, and who they go to for answers.
+Would it be more efficient? Yes. Would it be better? I doubt it. It would be impersonal and could degrade team and company culture into minimal, transactional communication for the sole purpose of business delivery optimization. That sounds like a terrible place for people to work.
+You can’t find one thing that made you fail any more than you can find a single thing that made you successful. I love how simple that idea is and how clearly it stops people from looking for root causes.
+
+Root cause of failure, root cause of success – Surfing Complexity + — surfingcomplexity.blog + Here are a couple of tweets from John Allspaw. https://twitter.com/allspaw/status/1027933534655270912 + https://twitter.com/allspaw/status/1036942676376150016 + Succeeding at a project in an organization is like pushing a boulder up a hill that is too heavy for any single person to lift. A team working together to successfully move a boulder to the top of the hill It doesn’t make sense…
+Roblox had a 3 day outage and I feel really sorry for the team responsible for fixing it. I don’t know any details, but from a case study I read they use Hashicorp tools (consul, nomad, vault, terraform) with a 4 person SRE team serving 100,000,000 monthly players—might be more now.
+One thing I found interesting was people online seemed surprised at the small team size relative to the amount of players. It’s not the scale that is a problem, but the scope of work and the company’s dependence on reliability that causes more burnout.
+I was on a team of 4 in Disney Animation with a smaller scale and a larger scope and it was hard to manage all our responsibilities. However, with Disney Animation we had more freedom with reliability because we had no public facing services that would cause direct revenue loss.
+My time as SRE at Disney+ was on a team of 4 with direct customer impact if we had an outage and similar scale and scope to Roblex. It was very stressful, but not entirely uncommon from what I’ve seen in the industry.
+
+An Update on Our Outage - Roblox Blog + — blog.roblox.com + We recently experienced an extended outage across our platform. Learn more about the outage and steps taken to address it.
+I started a casual club on Twitter for people who like to read and discuss white papers I call #PaperClub. I’ve learned a lot from reading papers and would love to share what I’m learning and learn from others too. We’ll be reading the papers and then discussing them in Twitter spaces once every few weeks. The first paper we’re going to read is the Google Borg paper which is a great read for distributed systems design.
+I’m semi-cheating with this newsletter because I’m sharing my tweet which has two links. One to the Borg paper and one to the Twitter Space. If you want to add a calendar reminder for the space open the link from a mobile client and click “add to calendar”.
+Justin Garrison on Twitter: “We will be discussing the original Google Borg white paper on our first ever #PaperClub You can read it here https://t.co/sc1OzpQprD We’ll discuss it on Nov 12 here https://t.co/ZOs1WiLAUB” + “We will be discussing the original Google Borg white paper on our first ever #PaperClub You can read it here https://t.co/sc1OzpQprD + We’ll discuss it on Nov 12 here https://t.co/ZOs1WiLAUB +”
+]]>
+Continuous integration and deployment systems have gone through a lot of changes. What started as shared bash scripts and Makefiles changed into central systems that could be shared by multiple developers and teams. This shift allows for more repeatable, scalable, and more secure systems.
+As systems optimize globally they can negatively impact local optimizations. This is a usually a win for an organization because they consolidate expertise and reduce overhead costs, but they reduce flexibility and can become a bottleneck.
+There are trade-offs in system design but fundamentally when you push dummy commits to test CI/CD with long feedback loops it’s likely a problem with your org chart. Or maybe it’s not a problem at all and your fast feedback loops are not as important as the other benefits of centralization.
+One of the best and worst parts about being a developer is learning new things all the time. The amount you learn varies throughout your career but if you’ve gone a couple weeks or months without learning new things at work you should check to see if you still want to be a developer and if you’re working on the right things in the right place.
+Thankfully, you’re subscribed to this newsletter which attempts to teach you some new things too. 😊
+Anything I can do to get faster feedback loops in continuous integration (CI) the better. I have had so many commits like this git commit --allow-empty -m "trigger build" && git push just to trigger CI systems. It looks like act can help with that and still allow for centralized systems in GitHub Actions to improve global optimizations.
GitHub - nektos/act: Run your GitHub Actions locally 🚀 + Run your GitHub Actions locally 🚀. Contribute to nektos/act development by creating an account on GitHub.
+HashiConf had a lot of announcements for improvements to the HashiCorp tools. I especially liked this improvement to making consul multi-tenant aware. Instead of needing to manage lots of control planes you can manage multiple partitions with a single control plane.
+This is a good example of a centralized optimization which can greatly reduce overhead and benefit all users. It can also be an example of consolidating failure impact and being careful about things that can be “too big to fail” when everyone and everything depends on them.
+
+Announcing HashiCorp Consul 1.11 Beta + — www.hashicorp.com + HashiCorp Consul 1.11 adds important new features: multi-tenancy with administrative partitions and a new installation-and-management Consul Kubernetes CLI.
+I’ve used a lot of different libraries for CLI tools. Python argparse is the first one I really loved because of how flexible it was. Go has a wide range of highly opinionated (eg cobra) and do whatever you want (eg flag). I found go-arg while working on my latest open source CLI tool and I like the balance of simplicity and configuration in a struct.
+GitHub - alexflint/go-arg: Struct-based argument parsing in Go + Struct-based argument parsing in Go. Contribute to alexflint/go-arg development by creating an account on GitHub.
+]]>
+++It is easier to educate a do-er than to motivate the educated
+
My experience at companies in various jobs and in open source communities echos this quote. I have had the privilege to work with some very smart people. If given the chance when starting a new project I will always pick the people who are excited to learn new things over the people who already know what to do.
+I was physically present for part of Kubecon last week and I’ve come to realize I don’t like calling conferences “virtual” and I prefer “remote” or “distributed.” Virtual can imply that there are not real people you are interacting with in chat or in video calls. I know chat bots are popular but I don’t look forward to attending conferences with them.
+I had also forgotten what it was like to be in a large room with other people. I was thankful for all of the measures the conference had, but that didn’t stop me from over-thinking ever moment I touched a door handle or my mask slipped below my nose.
+Once I returned home and participated in the conference remotely the entire experience and my involvement changed drastically. I fell right back into the partial work, partial participation trap that I don’t think will ever go away with remote conferences.
+This is so easy to add basic style to a plane HTML site. It’s not perfect, but it’s a great starting place if you want some CSS you can tweak to your liking.
+
+100 Bytes of CSS to look great everywhere ∊ swyx.io + — www.swyx.io + Simple grab and go upgrade to the base user agent stylesheet to make for readable sites
+I’ve been using VS Code as my primary editor for over a year now and didn’t know that code snippets can have variables or about LogPoints. Both seem very useful I am going to try to set up and remember to use.
+
+7 VS Code Tricks Every Developer Needs To Know | by Percy Bolmér | Aug, 2021 | Towards Data Science + — towardsdatascience.com + A summary of the best features in VS Code that will level up your development speed. Code snippets, Refactoring tricks and Logpoints.
+If you ever use watch then you’ll probably love viddy. It’s a “modern” replacement with some nice things like history playback, keyboard shortcuts, and text search. It also has a nice output for demos.
+GitHub - sachaos/viddy: 👀 A modern watch command. Time machine and pager etc. + — github.com + 👀 A modern watch command. Time machine and pager etc. - GitHub - sachaos/viddy: 👀 A modern watch command. Time machine and pager etc.
+]]>
+I heard the GIF came from what happened when Facebook ran the following command.
+ip link set fb0 down
Thankfully they were able to fix it with
+sudo reboot
++If you’re overthinking you should write. If you’re underthinking you should read.
+
Written word is much slower than spoken word. It helps to slow down and be deliberate when you have lots of ideas in your head.
+When I’m “underthinking” I like to ask people questions, lots of questions. Reading lets me dwell on words longer. I can really slow down and take my time to have more thoughts about fewer words which often will cause me to overthink.
+I try not to make this newsletter about current events, but it’s hard to avoid some of the lessons learned from this week. The first sentence in the last paragraph says so much (emphasis mine)
+++We’ve done extensive work hardening our systems to prevent unauthorized access, and it was **interesting** to see how that hardening slowed us down as we tried to recover from an outage caused not by malicious activity, but an error of our own making.
+
I think this may be a lesson in the fact that once your application and organization gets to a sufficient size the only way to properly test failures is through practices like chaos engineering. Unknown unknowns are the things you can’t plan for.
+
+More details about the October 4 outage - Facebook Engineering + — engineering.fb.com + Now that our platforms are up and running after yesterday’s outage, we are sharing more detail on what happened and what we’ve learned.
+If you were one of the many people who learned about BGP this week I liked Julia’s practical list of tools and links anyone can use to explore BGP. It’s a good set of commands to know because there tends to be a large BGP inspired outage once every 5 years or so.
+Tools to explore BGP + Tools to explore BGP
+One of the fallacies of distributed systems is that the network is reliable. This article has lots of examples of networks being unreliable even without human intervention.
+The Network is Reliable - ACM Queue + “The network is reliable” tops Peter Deutsch’s classic list, “Eight fallacies of distributed computing” (https://blogs.oracle.com/jag/resource/Fallacies.html) +, “all [of which] prove to be false in the long run and all [of which] cause big trouble and painful learning experiences.” Accounting for and understanding the implications of network behavior is key to designing robust distributed programs—in fact, six of Deutsch’s “fallacies” directly pertain to limitations on networked communications. This should be unsurprising: the ability (and often requirement) to communicate over a shared channel is a defining characteristic of distributed programs, and many of the key results in the field pertain to the possibility and impossibility of performing distributed computations under particular sets of network conditions.
+]]>
+I have lost track of how many times I’ve patched a bug only to have it come back and hit me in the head. Sometimes tests will help you avoid a self-made trap, but more often then not I’ll just push harder until it breaks.
+Thorough code reviews can also help but in reality the only thing that has consistently helped me avoid a bruised ego is discussing my proposed fix BEFORE I do any work. Not only will they likely find something obviously wrong with my implementation, but usually I’ll find something wrong by explaining it to someone first (a.k.a. rubber ducking).
+I was in a Twitter space this past week and someone asked how much of what I’ve done do I attribute to luck. I came to the conclusion that privilege is a synonym for luck and things in my past that I thought were extremely lucky were in fact my privilege in action.
+The main difference between luck and privilege is one can happen in an instant and be good or bad. The other is an invisible system that benefits a particular class of people and is not easily removed.
+As hard as I’ve worked in my life and as many obstacles as I’ve overcome I’ve been living on easy mode and there’s nothing lucky about that.
+My own experience with project management at various companies echos what is in this post. I always thought project management helped management reporting more than it helped engineering, and this quote from the post was particularly insightful
+++Optimizing for reporting is optimizing for a low-trust environment
+
+How Big Tech Runs Tech Projects and the Curious Absence of Scrum - The Pragmatic Engineer + — blog.pragmaticengineer.com + A survey of how tech projects run across the industry highlights Scrum being absent from Big Tech. Why is this, and are there takeaways others should take note of?
+There was a lot of AWS announcements this week and this was my favorite because it has the most potential to reduce the amount of code I need to write. I’ve written a lot of “glue lambdas” in my time and regularly suggest people use step functions to make lambdas more useful. These new integrations makes step functions just as powerful with less code.
+
+Now — AWS Step Functions Supports 200 AWS Services To Enable Easier Workflow Automation | Amazon Web Services + — aws.amazon.com + Today AWS Step Functions expands the number of supported AWS services from 17 to over 200 and AWS API Actions from 46 to over 9,000 with its new capability AWS SDK Service Integrations. When developers build distributed architectures, one of the patterns they use is the workflow-based orchestration pattern. This pattern is helpful for workflow […]
+I have been trying to grow my Twitter following this year and was not having much success for months. I thought tweeting regularly and engaging with RTs and likes would be all I needed. I was wrong.
+After months of getting a few followers per day I started doing more research and switching up how I engaged on Twitter. This doesn’t have much to do with development, but I will say that tech twitter is a place I’ve been able to learn from and help a lot of people. Having even a small following on Twitter has given me a lot of opportunities in my career and if you’re interested I put some actionable advice in this thread.
+Justin Garrison on Twitter: “I’ve been trying to grow my twitter following for the past month. I’ve gained 1000 followers (thank you 🙏). It doesn’t sound like much to some people but it’s a lot for me Here’s what I’ve learned 🧵” + “I’ve been trying to grow my twitter following for the past month. I’ve gained 1000 followers (thank you 🙏). It doesn’t sound like much to some people but it’s a lot for me Here’s what I’ve learned 🧵”
+]]>
+I twice had lunch with Ed Catmull at Disney and I asked him if there was anything that surprised him about managing people. He said he was surprised how well people can game rules and metrics for their own benefit.
+The above gif may or may not be real, but also speaks to people manipulating perception for—maybe—their benefits.
+++When a measure becomes a target, it ceases to be a good measure.
+
Goodhart’s law
+This article talks about why measurements being turned into targets is a bad idea. Through lots of research, DORA observed some metrics that indicated high performing output. Making the metrics the goal is a good way to not achieve the desired outcome.
+
+How DevOps teams are using—and abusing—DORA metrics | TechBeacon + — techbeacon.com + Using DORA metrics for the wrong reasons will result in poor outcomes. Here’s why—and what you can do about it.
+This new website is handy if you need to test nginx configurations. The write-up for how Julia created the site is even better.
+New tool: an nginx playground + New tool: an nginx playground
+This is a really cool website to transfer files or share text between two computers—or mobile devices—on your LAN. It’s even better that you can host it yourself and the code is available on GitHub.
+The server code is less than 300 lines of javascript and neat to read through to understand more about how it works.
+GitHub - RobinLinus/snapdrop: A Progressive Web App for local file sharing + A Progressive Web App for local file sharing . Contribute to RobinLinus/snapdrop development by creating an account on GitHub.
+]]>
+++I would rather entertain and hope that people learned something than educate people and hope they were entertained.
+
Walt Disney
+I had a lightning talk for Devops Days Portland called “TikTalk” about innovation. Please go watch it because it was a lot of fun to make.
+Innovation comes in different forms; there are sustaining innovations and disruptive innovations. Most companies need people who can help sustain their innovations. They need to be better, faster, and stronger than they were.
+Disruptive innovations are the things that build new businesses—typically by destroying old ones. It can come from new technologies or new abilities. The difference between sustaining and disruptive innovations is in the customers.
+Sustaining innovations will grow markets because they’ll meet the needs of ever demanding customers. It’ll grow because it’s finally good enough.
+Disruptive innovations will create new customers because it will let non-consumers do something they couldn’t before. Maybe the old thing required special skills or they couldn’t do something in a certain setting. It’ll grow because the consumers are good enough.
+If you want to learn more I suggest you read The Innovator’s Dilemma: The Revolutionary Book That Will Change the Way You Do Business and Seeing What’s Next: Using the Theories of Innovation to Predict Industry Change.
+Something I wish I understood earlier in my career was how influence at companies worked. I always thought the organization chart was the only way to have influence until I read this and realized the org chart has very little to do with actual influence.
+
+The shadow org chart. Like every company, we have a… | by Henry Ward | Medium + — henrysward.medium.com + Like every company, we have a hierarchical org chart with me at the top. It looks something like this: I have long felt there is a shadow org chart, much like a shadow economy, where employees trade…
+I agree with Shawn that there’s a lot of value in “distros” to help make decisions for developers and accelerate what users can build. I’m a big fan of services like Vercel—where this newsletter is currently hosted—and they can solve problems for a lot of apps and sites.
+However, large apps are complex and specialization doesn’t always work. If specialized “distro” providers are going to grow they will either add features and become more complex, or somehow help customers avoid complexity and shift it onto the provider. I don’t have a lot of hope that complexity will be avoided.
+
+Cloud Distros: and the Deployment Age of the Cloud ∊ swyx.io + — www.swyx.io + The next step in the evolution of the Cloud is specialized distros.
+This article has some very good general purpose logging advice for applications written in any language. I like the advice that logs should be
+There’s also some good specifics in the article on how to set up logging in python. What formatters you should use and how to configure the logger.
+
+How to log in Python like a PRO 🐍🌴 + — blog.guilatrova.dev + I’ll show you what good logging is with real-life examples. Most people don’t know what to log, so they end up creating just noise….
+]]>
+This past week I was part of the team that launched EKS Anywhere. Launching an open source project was something I really wanted to do to see how it was different from products and services I’ve helped launch in the past.
+The biggest difference for me was it’s really refreshing to point people to GitHub for issues and to let people use the software for free. The users I got to talk to were fellow infrastructure engineers which also made it really easy to talk about the project because I am personally familiar to the problems it solves.
+Humans are really bad at estimating a lot of things. Exponential growth is one of the hardest things for people to understand. I’ve seen countless graphs with slow growth curves that have caused enormous outages. I’m thankful no system I have been responsible for has caused any physical harm to people.
+The 60 minutes after the Titanic hit the iceberg it was reasonable for people to think everything was going to be fine. However, there was nothing you could do to stop it. It was a tragic and unfortunately similar events have happened since and will happen in the future.
+This is good advice if you’re looking to change roles or companies. Finding interesting problems is more important than interesting technology.
+It’s also important to note your resume you should focus on the problems you solved, not the technologies you worked with. Listing technologies will get you past the resume filters, but focusing on the technologies during the interview is a good way to make sure you don’t get opportunities grow. Focus on value you bring to a role based on the problems you’ve solved. The technology is just an implementation detail.
+
+Work on interesting problems. Not interesting technologies. - Rukshan’s Blog + — ruky.me + When I first began learning programming with basic and pascal, our computer class started teaching us Java. As for a 10 year old it was hard for me to grasp the concept of object oriented programming. It took me another 10 years to partially grasp the concept of OOP, and another 10 years to completely…
+I wrote the example hello-eks-anywhere “app” and I learned how to make nginx route to different folders depending on the user agent. This made the user experience better because you could deploy the same app and curl it to get a text based document that looked good in the terminal, or you could open a browser to see an HTML page. I did the same thing with the hello-app-runner app I wrote but that was implemented in Python.
+hello-eks-anywhere/default.conf at main · aws-containers/hello-eks-anywhere · GitHub + — github.com + Example application to deploy to your first EKS Anywhere cluster - hello-eks-anywhere/default.conf at main · aws-containers/hello-eks-anywhere
+I use a lot of git aliases. It’s fair to say I use more aliases than I do native commands. This post had some aliases I never thought to add even though I have similar workflows.
+My favorite git aliases - Lazy Electron Consulting + I tend to use git from the command line frequently. There’s a useful feature to reduce repetitive work called git aliases:
+]]>
+The right tool for the job isn’t always the best tool. Some tools are made for a specific reason, but there is a learning curve and cognitive tax to know how to use new tools. Sometimes the right tool is the one that is good enough that you already know.
+The hardest part is knowing when to switch tools. If you work on a team this means updating documentation and training and maybe convincing the rest of your team the switch will be worth it.
+The same can be said for workflows, but workflows are much more sticky than tools. This past week I wanted to edit a gif. I needed to speed it up and remove a couple sections.
+I know this is possible with ffmpeg or I could manually export all the images and do it with a file manager. I wanted a GUI tool because it would be a lot faster and because most of my gif edits are visual I can’t automate the process.
I spent 30+ minutes looking for a good visual gif editor and then realized my workflow was flawed. Instead of modifying the final file I needed to do my edits closer to recording time when the file is still a video. There are LOTS of great video editors.
+By shifting my work earlier in the workflow and outputting a finished gif I was able to accomplish what I wanted faster and with more options.
+The same optimizations are true in development. Lots of times there are small improvements, but every once and a while you’ll find that you can greatly improve your feedback loops and build process by changing where you perform work in the process.
+I’m a sucker for anything that can visually explain to me how something works. This time is a visual guide to how react renders different parts of the app.
+
+A Visual Guide to React Rendering - It Always Re-renders | Alex Sidorenko + — alexsidorenko.com + Contrary to popular belief, by default, react component doesn’t care whether its props changed or not. It will always re-render when its parent renders.
+This article isn’t about not being exceptional. It’s about being yourself and knowing what makes you unique and happy. You shouldn’t try to be the best if that’s not what you want to be.
+Be the best you.
+
+It’s Okay to be An Average Developer | by Adam Kiss | JavaScript in Plain English + — javascript.plainenglish.io + You do not have to be a specialist in Frontend, Backend, Machine Learning, Augmented Reality whilst knowing your way through AWS, and oh, let’s not forget, also work on your Flutter and React Native…
+I spent a lot of time last week with bootstrap. I had never used it before, but I understand why so many people use it now that I completed a project with it. Someone let me know about bulma which they described as a modern bootstrap. I don’t know all the details and maybe bootstrap 5 does similar things, but it’s worth digging into to find out.
+
+Bulma: Free, open source, and modern CSS framework based on Flexbox + — bulma.io + Bulma is a free, open source CSS framework based on Flexbox and built with Sass. It’s 100% responsive, fully modular, and available for free.
+]]>
+As a junior developer you get assigned work and have to implement it and solve problems within a certain scope. As you get more senior you have more responsibility which often comes with more visibility and more pressure. Sometimes you’re a blocker for a new project or are part of an outage. These can be stressful situations.
+If you have a desire to have more freedom to choose your work and solve bigger problems you’re going to have to deal with some level of new things which can be stressful. I suggest you find healthy ways you can deal with stress early in life and make them habits before you find yourself stressed with no release.
+There’s a line from the movie A Knight’s Tale when William Thatcher (played by Heath Ledger) is being sent away as a boy presumably because his dad can’t take care of him. His dad tells him to “change his stars” and William asks if it can be done. His dad says “Yes William. If he believes enough, a man can do anything.”
+For lots of people, including myself, “changing your stars” is about survival and money is a requirement. When you constantly have to stress about food, shelter, safety, and basic necessities you cannot live.
+Tech is an answer for many of people seeking to change their stars. It can give the freedoms they never had and provide for them to live.
+Be kind to people you work with. You never know where they came from or what motivates them to be here. You don’t know what they’re going through, and a kind word can go a long way.
+If you’ve ever used json at the command line you’ve likely used jq. This has some well organized example for usage with clear breakdowns of how to do each task. Knowing these fairly basic use cases can go a long way.
I can’t stop thinking about the phrase in the article
+++They are in my head, not my fingers.
+
What a perfect way to describe knowing something but still needing to look it up.
+
+JQ Select Explained: Selecting elements from JSON with Examples - Earthly Blog + — earthly.dev + In this article, I’m going to go over the basics building blocks of jq in enough depth that you will be able to understand how jq works.
+I used to think I had to know how to program before I could be a developer. For years I was creating tools and automation without considering what I did programming.
+When I got my first “real” developer job I realized the work had more to do with how you approach problems and being able to learn new things.
+
+Keeping Up - by Jeff Schwab - Deeply Nested + — nested.substack.com + The more you know, the less you know.
+I’ve never seen GitHub discussions used for teaching. The threads here had very clear definitions and some wonderful and simple imagery to explain the concepts.
+Glossary + Explain Like I’m Five · Discussion #46 · reactwg/react-18 · GitHub + Glossary + Explain Like I’m Five
+]]>
+Growing up my dad loved puzzles. He had the weirdest rule that I never understood.
+No matter how many pieces the puzzle had, he would look at the picture once when he opened it and never looked at it again. Thankfully, he never enforced that rule on us as kids, but I still don’t understand why he did it.
+Learning a new framework or architecture is like doing a puzzle. At first you just need to flip all the pieces the right way to understand what you’re dealing with. Then you’ll likely find the edges of the technology to see where things fit. At first putting parts together is slow, but as you get more familiar with the colors and shapes and as more and more of the puzzle is filled you can solve the whole picture faster.
+Documentation is the picture on the box. Some puzzles you don’t need to look at the picture and some people like to do it the hard way. But a puzzle without a picture is a special kind of torture.
+With many open source projects docs live in a folder with the code. It makes it easy for developers to update functionality and documentation in a single commit. As the project grows sometimes docs get split out into a separate repo for a multitude of reasons.
+I’ve realized how much I like keeping docs with code for as long as possible. Not only are cross referencing code and docs easier—especially as things change—but tests and deployment pipelines can and should fail if documentation builds fail.
+Something I never thought of before is keeping docs and app code together also gives adequate credit to documentation writers. You can look at the code history and see who has the most commits, but if docs are in a separate repo the writers are never seen as part of the project or praised for their contributions. The truth is, docs are a critical part of the project and, depending on the project goals, should be prioritized equally with any other project deliverable.
+I was never a strong writer in school and I mostly hated doing it. Somewhere early in my career I learned I enjoyed writing technical articles, and it has opened more doors for me than I can count. Now I treat documentation as human automation.
+Just like a script can help you automate a repetitive task, or a unit test can validate your code. Your docs are automation for teaching people and scaling yourself. You don’t have to spend time with each new users or answer the same questions 100 times. The best part is you don’t even have to remember the answer yourself!
+Spend some time to learn to write. Bad code with good docs scales more than good code with bad docs.
+
+How writing can advance your career as a developer - Stack Overflow Blog + — stackoverflow.blog + “In their first few years on the job, engineers spend roughly 30% of their workday writing, while engineers in middle management write for 50% to 70% of their day; those in senior management reportedly spend over 70% and as much as 95% of their day writing.” - Jon Leydens
+I learned about the web share API this week. It could be very useful once full OS and browser support comes around. For now it can help make websites on mobile feel more native because you get the OS share controls and targets without needing to take up a ton of screen real estate for share buttons.
+
+The Web Share API ← Alligator.io + — alligator.io + Learn how to use the Web Share API for a simple way to integrate your device’s native sharing capabilities into your website or web app.
+This started out very basic with information on how website passwords work (e.g. hashing and salting). It got deep into one time codes and HMAC pretty quick with good code examples. I didn’t realize it was a 3 part series which all had good information if you’ve ever wondered how one time passwords work.
+How does Google Authenticator work? (Part 1) + When you’re accessing services over the WEB – let’s pick GMail as an example – couple of things have to happen upfront: The server you’re connecting to (GMail in our example) has to get to know who you are. Only after getting to know who you are it’s able to decide what resources you are allowed to access (e.g. your own email inbox, your Calendar, Drive etc.). Step 1 above is called authentication.
+]]>
+I listened to this book and here are the action items to help you climb the career ladder into senior leadership if that’s what you want. It’s not the best strategies for a dev/IC, but some of the tips are still helpful. If you can follow some of these tips your career climb hopefully won’t look like the gif.
+In technology there are different approaches to teach people. Lots of people teach concrete, actionable topics through how-to articles. Blog posts and videos like “build a streaming platform with Javascript” or “bubble sort with bash”. These tutorials aren’t for everyone but there’s a big audience that knows they want to learn it.
+Other people, like me, teach less actionable topics that fewer people know they need. I realize that the posts I write are rarely “How to do X with Y” which makes it harder to find an audience and much harder to search. I try to teach topics from my own experience and things I wish I knew sooner. Thank you for learning with me. ❤️
+I’ve never used Koyeb but this was a good example of when you should not use Kubernetes. Kubernetes has always been focused on extensible, general purpose container and infrastructure orchestration. Nomad was optimized for fast scheduling with any job—container or binary—at the trade off of extensibility. Hashicorp tools have always had multi-datacenter controls which was a big win for Koyeb’s use case.
+In Koyeb’s case multi-datacenter, fast scheduling was exactly what they needed for their data plane. Of course they’re still using Kubernetes for the control plane because the requirements on that system is a good fit.
+
+Koyeb - The Koyeb Serverless Engine: from Kubernetes to Nomad, Firecracker, and Kuma + — www.koyeb.com + We decided to build our own serverless engine, one that would not be limited by existing implementations. The first version of Koyeb was built on top of Kubernetes and allowed us to quickly build a working cloud platform. After a few months of operating with this version, we decided to move user workloads from Kubernetes to a custom stack based on Nomad, Firecracker, and Kuma.
+I’ve never been much of a book reader until I discovered audio books. Up until I was about 20 I can only remember finishing 2 books that had more than 100 pages. With audio books I consume dozens of books per year.
+I discovered Hoopla this week and after a few failed attempts at using Libby/Overdrive in the past. Hoopla’s content library is much larger than the others and I’ve already found about 10 books from my wish list I have queued up.
+It has some videos I also want to check out and I was able to get a library card for a supported library online. Worth checking out if you have a wish list of books you haven’t bought or listened to yet.
+Hoopla +
+Tap Into Discovery. Read, Listen, & Watch with Your Library Card
+If you’re new to development or want to understand Javascript better this is the most thorough “notes” I’ve ever seen. Pick up from the beginning or jump to whatever topic you want to learn. The worst part is the cursive font.
+
+Beginner JavaScript Notes - Wes Bos + — wesbos.com + These notes are a free resource, based on my Beginner JavaScript Video course . They can be used as a stand alone guide, along with the videos or a quick reference for all the different parts of JavaScript like the different ways to declare a function.
+]]>
+I’ve never worked somewhere that had a completely off-the-shelf CI/CD system. In some cases the systems are just minor tweaks or wrapper scripts over common tools (usually Jenkins). In extreme cases it’s completely from scratch tooling that has syntax and behaviors I’ve never encountered before.
+They’re usually hyper optimized for a majority of internal applications or specific languages, but they completely fail at being useful for the last 10-20% of internal applications. In the name of developer productivity we try to be special and I’m not sure if that says more about the state of general purpose CI/CD systems or developers desire to over optimize.
+I don’t like them and prefer working around issues with common tools than streamlining with custom solutions.
+The Olympics have come a long way in 113 years. Each year what used to be impossible became possible. Congrats to all the medalists and people pushing themselves to be physically and mentally stronger.
+As developers we are asked impossible tasks. “Make the API never go down, but don’t spend more than $100.” “Please make this tool as simple and opinionated as possible, but also make it flexible so anyone can use it.”
+We should always ask clarifying questions to make sure we understand the request. Many times it’s our job to educate the requester why the task is impossible. Other times it’s our job to come up with the best compromise. Sometimes we need to ignore the request completely and build what we think is right.
+I wrote down my advice for how you can use Slack effectively in a work environment. A lot of it comes down to providing passive communication like you normally would get in an office setting. With Slack you have to be more deliberate about it.
+
+Successful Slack + — www.justingarrison.com + Tips for using Slack in a work environment.
+DNS has never been something I understood well. I know how to run DNS servers, how to debug DNS issues, and roughly how it works—not including DNSSEC—but if you asked me what records were used for what I’d have to look it up most of the time. I learned about a lot of record types in this post; they’re mostly old types.
+
+(All) DNS Resource Records + — www.netmeister.org + Just how many weird Resource Records can you stuff into a zone file? And what do these weird RRs actually return?
+I remember in the early days of Kubernetes people would say you shouldn’t use the default Kubernetes deployments because they were very limited in what they could do. I always said they provided more than what people had today and were often good enough. Kubernetes turned 7 this year and I still think that a simple rolling upgrade is good enough for a majority of users.
+
+Deployment Strategies In Kubernetes + — auth0.com + Learn what are the different deployment strategies available in Kubernetes and how to use them.
+]]>
+Cher Ami was a messenger pigeon used by the American army in France during WWI. A battalion of 550 troops was surrounded by the German army and the allies thought they were in a different location. The Major was trying to send out messages for help, but the messengers he sent (humans and pigeons) kept getting killed.
+The allies began to drop artillery fire onto their location not knowing it was them. The Major sent out another pigeon, Cher Ami, with the message
+++…For heavens sake stop it.
+
Cher Ami was shot down with a bullet in his chest and another almost severing his right leg. Even though he had been blinded in one eye he got back up and flew almost 60 mph (96 km/h) to his destination and delivered the message that saved 194 soldiers.
+The pigeon in the gif is a jerk.
+I’m a huge fan of no code solutions because they open the door to a lot of non-developers and make prototyping easier. I’ve made lots of fun apps and websites with them but always for personal projects.
+When I think about using these tools in a professional setting I realize there’s a lot missing. Without code you can’t have version control. Without version control you can’t have code reviews. Without code reviews you can’t bikeshed about text formatting. Without bikeshedding about text formatting you’re going to probably ship value to customers faster.
+I guess it’s not all bad. Have i mentioned I’m a huge fan?
+I’ve used Glide the most out of any no code app creator. I like some of the features it has over other options and how simple it is to integrate with Google sheets. I’ve built random apps for myself and others and even though it’s limiting in what you can do it’s great to see how easy you can do it.
+
+Powerful apps from spreadsheets. + — www.glideapps.com + Glide turns spreadsheets into powerful apps for work, without writing any code. Pick a spreadsheet or start with a template, customize your app, then share it instantly with anyone. Start today for free!
+Voiceflow creates voice assistant apps for a variety of platforms and I really like their UI for designing conversation flows. Conversational apps have a lot more to think about because you need to always be ready to catch unknown input. I’ve built chat bots for my kids stuffed animals and flows to set my Slack status. The flexibility of running custom commands easily while driving was a killer feature for me.
+
+Voiceflow | Design, prototype & launch voice & chat apps + — www.voiceflow.com + Visually design, prototype and publish voice and chat apps across channels like Alexa, Google or any custom channel/modality. Get started today, with no code.
+Bubble made a big splash recently with a round of VC funding. I had never tried it before but now have gone through a few of their tutorials and I like how powerful it is to build apps compared to something that is more design focused like webflow.
+The Bubble UI would take a bit to get used to, but I can understand why something so flexible also has a lot of buttons and knobs.
+
+The best way to build web apps without code | Bubble + — bubble.io + Bubble introduces a new way to build software. It’s a no-code tool that lets you build SaaS platforms, marketplaces and CRMs without code. Bubble hosts all web apps on its cloud platform.
+]]>
+Code and systems break all the time. At a certain scale it’s important that your start building software that can heal itself. It’s sometimes confusing what that means because what state should the software return to?
+While it was bent out of shape the paper clip wasn’t broken, but it wasn’t useful as it was intended to be. Software is similar in that it may still be functioning but not usable for its intended purpose.
+Unfortunately, there’s no code that I know of that automatically can bend back into it’s intended state when exposed to heat. It’s something we as developers have to make it do with carefully tuned systems to check and verify the current state.
+When telegraph usage was ramping up in the world there were two big problems for adoption—cost and reliability. To solve the problem of high cost many companies created codes that would compress a message into the lowest cost possible. The lowest cost was sometimes the shortest amount of characters but not always. Compression also helped with being able to communicate faster but that was a side affect. Messages could be encoded at one end and decoded on the other to convey a lot of information. One example I found from a theatrical code book was the word “Filander” which translated to “are you willing to appear in tights.”
+As telegraph lines got longer there was another problem of how to make sure the message was correctly received. Not only could there be encoding errors but without repeaters data loss could happen regularly at long distances. In order to validate messages checksum letters were added which made the message longer but it was still cheaper than sending it twice.
+That story reminds me it’s possible to build reliable systems on top of unreliable technologies. Packet switching networks and TCP/IP is another great example. By assuming an unreliable connection the creators were able to design very robust communication.
+This post series has a lot of great introductions to building resilient systems. Most of it is focused on designing systems and is still good information for developers to know. Bonus points because the first post has a terrifying gif.
+
+Patterns for Resilient Architecture — Part 1 | by Adrian Hornsby | The Cloud Architect | Medium + — medium.com + As you may know, a quote that shaped the way I think about architecture is from Werner Vogels, CTO at Amazon.com. He said: Having worked on large-scale systems for more than a decade, if I could…
+I’ve known about .new TLDs for a while but I didn’t know how many there were. This list has everything from creating new docs and calendars to jpgtopdf which rolls right off the tongue.
+I’m only sad that new.new isn’t a redirect to register a new .new domain.
+
+.new - Google Registry + — whats.new + Browse the full list of .new shortcuts available today from Adobe, Spotify, and many more.
+Some great lessons in this post that are true from my experience too. I especially liked the tips that great teams make you exponentially better and writing code for humans.
+I’ll add that you should make sure you write your code for humans in the future who will have to solve unknown bugs and reproduce the context of the problems you were trying to solve and probably hate the code they’re reading because it uses old frameworks and the author left the company with only a vague git commit message that says “fixing bugs”.
+
+The 10 Most Valuable Lessons I Learned As A Developer + — blog.oliverjumpertz.dev + I’ve developed software for over 21 years now, which is way over half of my lifetime. Here are some of the most valuable lessons I learned along the way.
+]]>
+For all the automation the technology industry prides itself in there’s still a lot of it that’s manual. Some companies get up on stage and talk about how great their automatic canary deployments are, how they use feature flags, or a variety of different methods to get their products to market.
+I’ve been a part of some large product launches and plenty of incremental changes in various environments. As soon as the product launch requires coordinating with a non-development team (e.g. blog post or press release) they all had some form of a slack channel, email list, or phone bridge where someone was in charge of manually going down a spreadsheet and clicking buttons.
+This is fine. Not everything has to be automated. You’re not doing it wrong. Sometimes the right thing to do is manually get acknowledgements from all stakeholders and click a button.
+I saw a lot of interest in remote coding setups and products this past week. Everything from GitHub Workspaces, gitpod, and a bunch of others I had never heard of. I don’t think the products or industry are quite ready for a shift here, but I do think it’s close to becoming a reality.
+Many of the products want to solve every problem. Some want to own the entire stack. The one that wins will probably have the lowest barrier to entry—fewest required changes—and it’ll be free. I wouldn’t be surprised if we see splintering on which products to use based on programming languages or tool chains.
+This was the best and worst thing I read all week. It was the best because it accurately described successes I’ve seen at companies in my career. It was the worst because it accurately described failures and inability to change I’ve seen too.
+It was a bit wordy and the graphs didn’t always help, but the four stages are spot on.
+
+If You Want To Transform IT, Start With Finance – zwischenzugs + — zwischenzugs.com + tl;dr - ‘Money Flows Rule Everything Around Me’ When talking about IT transformation, we often we often talk about ‘culture’ being the problem in making change, but why stop there? If we take a ‘5 whys’ approach, then we should go deeper. So, where can we go from ‘culture’? Here I suggest we should consider…
+This is a massive list of free programming books. Many of the books are older (2+ years) but still a ton of amazing content if you’re looking to learn something new and you learn well from reading books.
+GitHub - EbookFoundation/free-programming-books: Freely available programming books + :books: Freely available programming books. Contribute to EbookFoundation/free-programming-books development by creating an account on GitHub.
+Along with programming books there’s often a lot of gaps in knowledge in how to design systems. Common patterns, how to scale specific components, and how to pass interview questions are all covered in this link. My only complaint is it uses transparent images and I had to turn off GitHub dark theme.
+GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. + Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. - GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
+]]>
+Lots of people recommend learning to program by starting with fundamentals. Learn the basic language patterns and elements and work your way up to frameworks. You’ll have a stronger understanding of how things work.
+I don’t think this is good advice anymore. By doing this you slow down your speed to market and what I’ve seen is more companies need speed than understanding. If I want to create a website I’m not going to start with HTML and CSS. I’m going to use a generator like React, Vue, or Hugo.
+Having speed matters more and gives you more opportunities because deep knowledge is increasingly not necessary. Starting from the fastest option to get your product to market and working your way backward to the slowest works for products and education.
+As a junior developer your scope of problems is limited and tasks typically take 1-2 weeks. As a senior developer projects are more ambiguous and take careful planning to complete in 1-2 months. A team lead will have projects that take 2-4 months to complete and require planning for multiple developers and coordination with multiple teams. Principle and staff developers will require planning for large projects that take 6-10 months to complete and likely require a lot more team coordination and research to understand the problem space.
+I’m a fan of clever URL tricks. Here’s some for GitHub you may not have known about.
+
+GitHub URL Hacks + — www.justingarrison.com + Handy tricks and shortcuts while using GitHub
+On the opposite end of using code generators is writing assembly. Web Assembly (WASM) is quite fascinating in it’s ability to add speed to the web compiled from many different languages. Here are some examples of writing raw WASM which are cool achievements but I’m sure took longer than using a higher level language and compiling the code.
+GitHub - binji/raw-wasm: Raw WebAssembly demos + Raw WebAssembly demos. Contribute to binji/raw-wasm development by creating an account on GitHub.
+This is a different kind of generator but still quite useful. If you’re trying to test parsing, searching tools, or load log collection systems flog is very useful.
+GitHub - mingrammer/flog: A fake log generator for common log formats + :tophat: A fake log generator for common log formats - GitHub - mingrammer/flog: A fake log generator for common log formats
+]]>
+The ability to educate with stories is something humans are very good at. Videos are just a new(ish) medium for telling stories. One of the reasons I love gifs is they’re videos with restrictions. The restrictions limit the types of stories we can tell but not the impact those stories can have to educate.
+I loved the visuals of this gif because even if you know the basics of how a rocket gets to the moon when you see it all in 60 seconds it can still educate you. Many of the details are incorrect (e.g. size of Earth and moon, distance apart) but the thing this animation teaches you is the process and order events happen. You can fill in the details if you’d like, but knowing the order helps you tell a story.
+There were some people making fun on someone for saying base64 encoding is secure. Many people know that’s not true, but everyone is still learning. There was absolutely a time when I believed it to be secure too. Kudos to them for learning and sharing in public.
+It’s important to know how to be kind and educate people without publicly shaming them or making them feel stupid. We’ve all made incorrect assumptions on our paths to learn new things and it’s okay to be wrong. XKCD 1053 is great at putting it into numbers when it says every day 10,000 people learn something that “everyone knows”
+AWS Infinidash launched last week with a lot of fanfare. It was a joke that started on twitter poking fun at AWS product naming, recruiters, and general hype cycles in the industry. The way everything happened taught me a lot and hopefully everyone had a laugh. Corey Quinn and I did a live stream for the launch and tried to balance the fun while letting people in on the joke. You can find the live stream and other content here.
+Even though most of the tweets and jokes have stopped there will probably be some more news about it this week. I also bought a few shirts which benefits a youth LGBTQ+ organization. Check it out.
+GitHub - joenash/awesome-infinidash: An awesome list for the awe-inspiring power of Infinidash, an imaginary product. + An awesome list for the awe-inspiring power of Infinidash, an imaginary product. - GitHub - joenash/awesome-infinidash: An awesome list for the awe-inspiring power of Infinidash, an imaginary product.
+If you’re a developer you should use git. If you use git you probably use GitHub. If you use GitHub you would benefit from a native CLI client.
+I’m still learning some of the functions, but the more I work with GitHub Actions and the rest of GitHub repo features the more I appreciate not having to click through the web UI.
+GitHub - cli/cli: GitHub’s official command line tool + GitHub’s official command line tool. Contribute to cli/cli development by creating an account on GitHub.
+TLS certificates were never intended to be human friendly. They are great for security but not for automation or human workflows. CFSSL tries to make it better for humans with some common tools to make creating and managing certificates easier.
+GitHub - cloudflare/cfssl: CFSSL: Cloudflare’s PKI and TLS toolkit + CFSSL: Cloudflare’s PKI and TLS toolkit. Contribute to cloudflare/cfssl development by creating an account on GitHub.
+]]>
+Why do fans have that weird nob to turn on oscillation but they have buttons for speed control? Why not put an oscillation button on the front? The nob is hard to reach and especially difficult while the fan is oscillating. It’s terrible UX.
+It’s incredibly simple to implement which makes it extremely reliable. As a user of a fan’s interface I would prefer a button next to speed controls. As a builder, I rather not implement a secondary motor and deal with the guaranteed support and defective returns a more complex system would have.
+With any system, the most important feature is if it does what I expect it to do. This is equally true for software we write, process we implement, and systems we build.
+I remember reading a report years ago that Google published to determine the key metrics for a high performing team. It wasn’t talent, collaboration, or anything else I would have guessed. The key indicator was how safe did the team feel to make a mistake and speak up. The report called this metric “psychological safety”.
+Over the years I’ve been on a lot of teams and most of them I feel like I would say I had the safety to not worry about failing or asking a dumb question. In the past year I’ve come to realize this is one of the biggest privileges I have as a while, cis male. Even if I feel like the team is safe and welcoming of all ideas that doesn’t mean everyone on the team feels the same way. I’ve tried to change my actions and behaviors to not make these assumptions anymore and to make sure I explicitly let everyone know they are safe to make mistakes and learn without repercussions.
+Here’s some good advice about how to use secrets at the command line. In most cases people don’t think about this because everyone has their own computer and assume it is secure. In reality there’s lots of things that can read your shell history, crawl /proc, or get information you may be leaking unintentionally.
+
+How to Handle Secrets on the Command Line + — smallstep.com + How to keep secret credentials safe on the command line.
+A great intro to CSS I wish I had read last year. Lots of other links to dive deeper into topics like flex boxes and grid too. As someone who before last year wrote almost no CSS I’ve had to start from the very beginning.
+
+CSS: From Zero to Hero - DEV Community + — dev.to + CSS defines the way things look on your websites. HTML is your content, JavaScript adds interaction,… Tagged with beginners, css, frontend.
+This was a fun look at how UTF characters work and specifically emoji. I feel like a lot of what I learned in college was a lie when I think that most characters are more than a single byte.
+Bear plus snowflake equals polar bear - ⌨️🤷🏻♂️📷 + This is simple enough; this page is encoded as UTF-8, which implies 8-bits per ASCII character, or a byte per character.
+]]>
+Many of us probably heard about the HBOMax email that was sent out by mistake last week. It wasn’t a major outage, but a lot of people were talking about it. I especially loved the outpouring of support I saw online for whomever triggered the integration job that sent the email. 💖
+Just like the gif, no one person is to blame. The person who poured cement isn’t any more to blame than the person who architected the building. With any incident, if a single person can cause an outage it is almost certainly not their fault.
+There was a CVE for Google Chrome and I was asked to update it on all the computers. We had tooling to run arbitrary commands on sets of machines so obviously I ran yum update -y google-chrome-stable. In that moment I had forgotten Chrome had special repos which did not point to our internal mirrors. I also forgot that Chrome was installed on servers. Instead of updating less than 800 computers from internal repos I triggered 4000+ systems to simultaneously download Chrome directly from Google.
Our ISP connection couldn’t handle that throughput (~225 GB) so systems started to back-off and retry as the bandwidth was used and systems re-connected. With that many connections coming at once Google automatically blocked our public IP which cause more systems to back-off and retry. It also blocked us from all of our GSuite tools so no one could check email or use docs.
+I had caused a 3 hour delay to 1000+ employees on an already tight schedule. I learned a very important lesson and we took action to make sure an outage like that was not as easy to cause in the future.
+Blameless isn’t enough to make postmortems useful. I like the wording this article uses with “actionable retrospectives” because that aligns with the goals. It also has tips that go a lot further than avoiding blame.
+
+Blameless postmortems don’t work. Be blame-aware but don’t go negative + — techbeacon.com + Blameless postmortems feel wrong since humans are wired for blame. Successful teams are blame-aware and focus on actionable outcomes without going…
+Reading postmortems is a great way to learn systems and how they break without needing to live it. Of course, living it helps cement the paranoia that many sysadmins have learned over years from on the job experience. Well written postmortem can teach a lot, and this one stuck out in my memory as one I learned from recently.
+
+A Terrible, Horrible, No-Good, Very Bad Day at Slack - Slack Engineering + — slack.engineering + This story describes the technical details of the problems that caused the Slack downtime on May 12th, 2020. To learn more about the process behind incident response for same outage, read Ryan Katkov’s post, “All Hands on Deck”. On May 12, 2020, Slack had our first significant outage in a long time. We published a summary …
+If you need some more guidance on conducting your own postmortems this post has more details on what you should and shouldn’t do and some tools that can help. I hope everyone can learn from their mistakes openly, and not have to fear retribution for their actions.
+
+A Project Postmortem Toolkit: Apps and Approaches that Help You Learn More from Retrospectives + — zapier.com + In war, you need to have a reason for every action. One misstep, and you put your entire squad in danger. That’s why the U.S. Army treats every training exercise like the real thing—to the extent that they conduct performance critiques after every activity. Team leaders are tasked with planning…
+]]>
+Oftentimes in technology we say declarative things are better than imperative. Why write a script when you can create an abstraction? In reality there’s no such thing as something being completely declarative outside maybe binary data in memory, but even that requires sequential steps before it can be stored.
+However, we can hide imperative steps behind a declarative interface and a user never needs to know about the complexity. Just like these bowling pins, a bowler doesn’t know how they got there. They ask for another set of pins and it shows up.
+Don’t try to fool yourself or your users that complexity doesn’t exist. Make your interfaces a delight to interact with.
+Guys (I’m only talking to male identifying people when I use that term) what’s up? I saw so much crap this past weekend and we all need to do better. Here’s some ideas I’d like us all to try:
+I promise if we could even get these basics accomplished we could greatly improve our industry and open doors to so many incredible people.
+I wrote down how I make each 123dev post an embedded Twitter video if you share it. As a true backend engineer I started with web redirects and then created a custom webserver. Finally, it dawned on me than Javascript would probably work better (and it did).
+Justin Garrison’s personal site + If you share this post on Twitter it will show up as an embedded video
+Remote repositories looks like a really useful extension for VS Code. Being able to work on any GitHub repo without cloning it lowers the barrier for participating which could be a great enabler for new contributors.
+
+Remote Repositories extension for Visual Studio Code + — code.visualstudio.com + Remotely browse and edit a source control repository from within Visual Studio Code.
+I still don’t know when to use CSS grids vs other options like flexboxes. But I do know I’ve never seen as easier way to generate the code required to create a custom grid layout.
+GitHub - sdras/cssgridgenerator: 🧮 Generate basic CSS Grid code to make dynamic layouts! + 🧮 Generate basic CSS Grid code to make dynamic layouts! - GitHub - sdras/cssgridgenerator: 🧮 Generate basic CSS Grid code to make dynamic layouts!
+]]>
+Looking back at old technology products most of the time I think how bad they were. Occasionally, I remember something I really liked and I wish I could have it again. But then I realize the products were good at the time but probably would hold back innovations in ways I couldn’t predict.
+Much like this car jack which seems like a great idea! Takes up minimal amount of space, self inflates, and probably about as safe as scissor jacks are today. But when you think about it maybe if we all had self inflating car jacks the electric car would have one more obstacle to overcome.
+This week I was working on content for a new workshop and I had to add an EC2 instance to an ALB manually. It dawned on me I never had to do that before and I didn’t actually know the steps required. I hope I don’t have to do it again but I’m thankful I did because I’m sure it’ll help me troubleshoot automation in the future.
+There’s some really good nuggets of wisdom here. There’s also some not great advice and quite a bit of bias. I didn’t read all the comments but the OP’s content is worth looking through.
+
+Drunk Post: Things I’ve learned as a Sr Engineer : ExperiencedDevs + — www.reddit.com + I’m drunk and I’ll probably regret this, but here’s a drunken rank of things I’ve learned as an engineer for the past 10 years. * The best way…
+A thorough, 5-part walk through of DNS lookups on Linux. Covering everything from config files, to NetworkManager, and even Kubernetes. Worth a read if you’ve ever been curious how it works.
+
+Anatomy of a Linux DNS Lookup – Part I – zwischenzugs + — zwischenzugs.com + Since I work a lot with clustered VMs, I’ve ended up spending a lot of time trying to figure out how DNS lookups work. I applied ‘fixes’ to my problems from StackOverflow without really understanding why they work (or don’t work) for some time. Eventually I got fed up with this and decided to figure…
+I learned a lot of new things while making the site for this newsletter. It’s not super deep technical stuff but it still took me a few weeks to troubleshoot and get things working exactly as I wanted. I wrote a lot of it down here and have one more blog draft I hope will be ready soon.
+
+Making 123dev Website + — www.justingarrison.com + Problems I figured out when creating 123dev.email
+]]>
+Sometimes our curiosity gets the best of us. I cannot count how many times I’ve run a command, changed a config, or pushed a button that burned me. Usually, I learn my lesson. Many times I’ve put up guardrails or warnings so other devs wouldn’t burn themselves in exactly the same way. People are very creative and until you remove the candle they’ll always find a way to learn on their own.
+I have kept my resumes in a git repo for the past 8 years. It is extremely helpful for many reasons. Not the least of which is to remember jobs I applied for and to see how my resume has changed over time.
+I have one general format on main and keep different branches for each company and type of role I apply for. I would also recommend you tag a generic version as a release so it’s easy to find. When you make a commit be as descriptive as you can for what changes you made and why (just like code).
There are a lot of old tools being rewritten in rust and I’ve been enjoying quite a few of them. Some are also enhanced in the process which loses compatibility but gains usability. I especially like fd, exa, and bat. There are lots more to check out in this list.
GitHub - TaKO8Ki/awesome-alternatives-in-rust: A curated list of replacements for existing software written in Rust + A curated list of replacements for existing software written in Rust - GitHub - TaKO8Ki/awesome-alternatives-in-rust: A curated list of replacements for existing software written in Rust
+I discovered entr this week when looking for an easier alternative for inotifywait. Was a great way for me to recompile and test a go app when I saved the file with ls | entr -r go run main.go.
GitHub - eradman/entr: Run arbitrary commands when files change + Run arbitrary commands when files change. Contribute to eradman/entr development by creating an account on GitHub.
+I found just before I realized it was written in rust. It’s an alternative to make with some things I really like. It’s not a build system so you don’t have to trick it into being a command runner. It automatically sources .env files and also has a default way to list all recipes.
GitHub - casey/just: 🤖 Just a command runner + 🤖 Just a command runner. Contribute to casey/just development by creating an account on GitHub.
+]]>
+When I think about how I create software it feels very haphazard. Some days are better than others but I rarely make the progress I want. By the time I’m ready to share with someone I realize how much a week or a month of steady progress adds up.
+The gif was created by making folds and creases in paper and then using stop motion to put them together. Progress must have been slow but the end result is stunning.
+One of the biggest differences with software is there is no end. There’s usually just a progression toward improvements and enhancements.
+How we extend our browsers has changed a lot over the years. One of the things I like about the current generation of extensions is many times they’re written in javascript and approachable for a broad developer base. Here’s three browser extensions I like that are also open source so you can see how they’re built.
+The Internet Archive is an amazing service to see what pages historically looked like. This extension gives you an easy way to jump directly from your current page into a historical timeline.
+GitHub - vegetableman/vandal: Navigator for Web Archive + Navigator for Web Archive. Contribute to vegetableman/vandal development by creating an account on GitHub.
+There are plenty of occasions where you need to test how apps or websites behave with specific headers. I often used curl -H but that doesn’t work if I want to render a page. With this extension you can test specific features, enable tracing, or test different user agents.
GitHub - bewisse/modheader: ModHeader browser extension + ModHeader browser extension. Contribute to bewisse/modheader development by creating an account on GitHub.
+I have manually erased tracking data from URLs I share for years. There’s now an extension that does it for me automatically.
+Kevin R. / ClearURLs · GitLab + ClearURLs is an add-on based on the new WebExtensions technology and will automatically remove tracking elements from URLs to help protect your privacy when browse through the Internet.
+]]>
+Everyone is familiar with their own complexity. I’m sure this clock makes sense to the person who built it. When you’re the one who creates it it doesn’t seem complex but perfectly logical.
+Complexity shows up in our daily lives, in code, in systems, and especially organizations. Fighting complexity isn’t always the right solution, but finding a complexity that can be reasoned about and understood by others is often the best solution.
+Complexity that other people are able to understand is called common sense. It doesn’t mean it’s not complex, but the shared knowledge of the complexity is understood by others.
+I don’t talk about my job in this newsletter much because this is a personal project, but today we shipped a new service I worked closely with to launch. I learned a lot about how AWS delivers new services and it’s very different from my experience at previous jobs.
+One thing that was the same is how rewarding it is to ship a product as a team. All of my personal projects are great to work on and rewarding to see people use them, but it’s not the same as collectively delivering something bigger than what I could do on my own. For some reason I don’t get the same collaborative feeling when open source projects I work on have releases.
+Here’s a hello app I built for App Runner’s launch. I talked about some of the things I learned in previous newsletter posts and a lot changed while I was building it. I worked with one of our designers which was a great experience, and also worked with our open source program office (OSPO) which hopefully sets me up to open source more code in the future.
+
+GitHub - aws-containers/hello-app-runner: Example application for AWS App Runner + — github.com + Example application for AWS App Runner. Contribute to aws-containers/hello-app-runner development by creating an account on GitHub.
+Great insights
+Read the article for fascinating stories and examples connected to each piece of advice
+
+All the best engineering advice I stole from non-technical people | by Marianne Bellotti | Medium + — bellmar.medium.com + As I focus on becoming a better manager of engineers, I have been reflecting more and more on the advice that produced a 10X boost in my abilities at that same stage. More often than not the best…
+I had some fun trying to explain complex technology topics in simple terms.
+Justin Garrison on Twitter: “Alright Twitter tell me a technical term and I’ll explain it in simple words” + “Alright Twitter tell me a technical term and I’ll explain it in simple words”
+]]>
+The gif is from a silent film I’ve never seen but it won the first ever Academy Award (1930). Ninety years later I would have a hard time reproducing that shot, and I love the vision someone had to make it happen. It reminded me of one of Clark’s laws; I’ll list all three for you here:
+While I think Kubecon is one of the best virtual conferences I’ve been wondering a lot about the usefulness of conferences in the future. What are the benefits to have thousands of people stop their normal work schedules to spend a week focused on learning and networking. Wouldn’t it be better to let people focus on learning when it fits their schedule best and network more intentionally instead of who happens to be online or close to their physical location in the moment?
+For me an ideal conference platform would:
+One of the biggest drawbacks to virtual conferences is the lack of shared experience. If a virtual conference can solve that problem it could make the synchronous time investment worth it. IMO shared experience is one of the things Twitch and Fortnite do really well.
+If you’ve never read the Kubernetes Resource Model I encourage you to do so. It’s a design doc from the early-ish days of Kubernetes and really helps to explain some of the fundamental principles of Kubernetes and how “Kubernetes is not just API-driven, but is API-centric.”
+community/resource-management.md at master · kubernetes/community · GitHub + Kubernetes community content. Contribute to kubernetes/community development by creating an account on GitHub.
+kcp was one of the more interesting announcements I saw from Kubecon EU which really leans into the API patterns described above. It takes my favorite part of Kubernetes—the API—and strips out the resources you don’t need if you’re not running a cluster. Lots of people are looking to use the Kubernetes API to drive the rest of their infrastructure and this is a better place to start than a stripped down Kubernetes cluster.
GitHub - kcp-dev/kcp: kcp is a prototype of a Kubernetes API server that is not a Kubernetes cluster - a place to create, update, and maintain Kube-like APIs with controllers above or without clusters. + kcp is a prototype of a Kubernetes API server that is not a Kubernetes cluster - a place to create, update, and maintain Kube-like APIs with controllers above or without clusters. - GitHub - kcp-dev/kcp: kcp is a prototype of a Kubernetes API server that is not a Kubernetes cluster - a place to create, update, and maintain Kube-like APIs with controllers above or without clusters.
+Many environments could benefit from policy as code. There’s great work happening in this space but not very much adoption that I’ve seen. This post gives you some ideas of policies you can use beyond the usual “don’t deploy on Friday” that I typically see.
+
+Open Policy Agent: The Top 5 Kubernetes Admission Control Policies + — blog.styra.com + These are the top five Kubernetes admission control policies that you should have running in your cluster right now.
+]]>
+Sometimes I’m equally surprised as this baby when my code works. Especially when I either do it on the first try or I fight with it for days and finally figure it out. It’s exciting and then I try to figure out why it works.
+I struggled with something for the new 123dev website for a few nights this past week. I thought the problem was because of my lack of CSS skills and I spent most of my time trying to figure it out. It turned out to be completely unrelated to CSS—full write up in next weeks post—and reminded me of the importance of finding the simplest reproducible issue before making assumptions.
+I put out a new YouTube video ahead of KubeCon EU this week. It doesn’t teach you anything, but hopefully gives you a laugh. If you haven’t seen the original “mother of all demos” I highly encourage you to look it up. It happened over 50 years ago!
+
+The Mother of all Kubernetes Demos + — www.youtube.com + They were ahead of their time.
+There are lots of code snippets for HTML and it’s a good idea to update from time to time. I try to find something modern to make sure I’m not carrying too much cruft. This one looks good and walks through line by line which is helpful to understand what it does.
+My current HTML boilerplate - Manuel Matuzović + Every element I use for the basic structure of a HTML document, with explanations why.
+Flexboxes are still magic to me. Chrome 90 now has some interactive tools to debug them. Some other really nice debugging tools are included in this release too.
+What’s New In DevTools (Chrome 90) - Chrome Developers + Debugging support for CSS Flexbox, performance heads-up display on page, issues tab updates and more.
+]]>
+I was at Disney Animation when they first showed us the animatronics for the new Beauty and the Beast ride for Tokyo Disneyland. I never saw this transformation and still don’t understand how it works.
+Honestly a lot of code I write feels the same way. The fact that I can tell transistors what to do with any resemblance of English language is pretty magical.
+A lot of times we talk about how software should delight users and if it doesn’t then it’s a bug. There are lots of different ways to say this but really it comes down to user empathy. You should know where your users are coming from and have some ability to help them through their current struggles of learning something new or fixing a production outage.
+In reality we’re only looking at a small slice of the person’s life to try and make it better. The COVID situation in India right now breaks my heart. There are too many people directly or indirectly affected by loss of life from the spreading virus. Software cannot fix this directly, but UX plays a critical role for people making vaccination appointments, doctors and volunteers getting people the medical attention they need, and even people far away making donations. Having empathy for users in these dire situations makes me think about the importance of UX in a much more critical light.
+This week I learned that you can use .mp4 files as a source for <img> in HTML (depending on the browser). I’m sure a lot of people knew this already, but I didn’t so I wanted to share. It has solved some problems for me with the new 123 dev site [WIP].
No, this link preview doesn’t count as a gif in the newsletter. ;)
+Embed MP4 in HTML <img> Tags for Improved GIF-Like Experience + By embedding MP4 in HTML tags, Safari Technology Preview is improving the terrible performance and quality costs associated with GIF files.
+There has been a lot of discussion online about open source licenses because multiple projects have re-licensed in recent weeks. This is a good talk laying out some of the basics in open source licensing if you’ve never understood why there are so many or how to use them.
+
+All Things Open 2020: The Basics of Copyright and Licensing for Software Developers : Free Download, Borrow, and Streaming : Internet Archive + — archive.org + DescriptionWhether you realise it or not, copyright flows through every element of the software that you build and use. Every line of code or documentation you…
+I first read an article based on this talk but then saw the talk and liked it better. It discusses how lots of engineering has changed to building on top of vendor APIs and how that’s different than traditional engineering practices. Some good things to consider in the new world of “vendor engineering.”
+
+Glue Work Makes the Dream Work + — www.youtube.com + DevOpsDays Texas 2021 Opening KeynoteToday, our systems are made up of a patchwork of tools and services from different companies. We no longer need to be ex…
+]]>
+
+Click the image for the full length video. It’s worth it.
+In the struggle for survival, the fittest win out at the expense of their rivals because they succeed in adapting themselves best to their environment.
+You may think that quote is from Charles Darwin but it is actually a misquote. I’ll let you do your own homework to find the true author.
+Many people use the cloud for different reasons. Maybe it’s for features, for scale, or for cost. Blockbuster had lots of movies, they had scale, and they gave lots of people value compared to going to a movie theater. They had plenty of opportunity to adapt but couldn’t. One major reason was the debt they accrued planning, building, and stocking 5000+ stores.
+I saw multiple people arguing that the cloud is more expensive than on-prem and I could only think that’s not the point. Even if I’m able to keep hardware long past its support cycle and squeeze every last electron through its transistors if my needs ever change or the environment in which I offer value moves on and I cannot adapt I’m done.
+The biggest value to me in using the cloud is your ability to adapt.
+I didn’t know HTTP was going to get a new method! SEARCH (proposed) sounds like it could solve some real world limitations with existing methods. Normally I would link to the spec, but this article did a good job of explaining why it’s needed.
+
+Defining a new HTTP method: HTTP SEARCH | HTTP Toolkit + — httptoolkit.tech + Nothing is ever finished or perfect, and HTTP is no exception.HTTP SEARCH is a new HTTP method, for safe requests that include a request…
+My co-worker showed me this a few weeks ago and already it has saved me a ton of time. Not only does this do OS and brew updates but it also handles way more like vscode, vim. and tmux plugins. Well worth an install.
+GitHub - r-darwish/topgrade: Upgrade everything + Upgrade everything. Contribute to r-darwish/topgrade development by creating an account on GitHub.
+Little tools like this make me smile. You’ll probably never use it beyond playing with it and the one time you need it you’ll forget all about it. Still, it has some really handy features like viewing command args and open network connections. Both available in /proc but this is easier to remember.
GitHub - google/gops: A tool to list and diagnose Go processes currently running on your system + A tool to list and diagnose Go processes currently running on your system - GitHub - google/gops: A tool to list and diagnose Go processes currently running on your system
+]]>
+I’m sure many of you saw this gif in various places recently. There’s lots of similarities that are obvious from a software engineering perspective. To me it shows how difficult a re-write really is.
+“Most people overestimate what they can achieve in a year and underestimate what they can achieve in ten years.”
+The same is true for what I can achieve in an afternoon and what I can achieve in a week.
+The data in this article was a bit surprising to me. Function instance size doesn’t matter and it seems nearly impossible to write a fast starting function if you need a common library like boto3. If your function is >15 MB you’re better off packaging it as a container.
+
+Cold Starts in AWS Lambda | Mikhail Shilkov + — mikhail.io + Selection of languages, instance sizes, dependencies, VPC, and more
+This was a thorough write-up of how to reverse engineer a Dockerfile using only the container image. It has been a long time since I’ve had to do this, and is very helpful to understand how container images work.
+Reverse Engineering a Docker Image — The Art of Machinery + This started with a consulting snafu: Government organisation A got government organisation B to develop a web application. Government organisation B subcontracted part of the work to somebody. Hosting and maintenance of the project was later contracted out to a private-sector company C. Company C discovered that the subcontracted somebody (who was long gone) had built a custom Docker image and made it a dependency of the build system, but without committing the original Dockerfile. That left company C with a contractual obligation to manage a Docker image they had no source code for. Company C calls me in once in a while to do various things, so doing something about this mystery meat Docker image became my job.
+I read this book last month and really enjoyed it. I was going to link to the TED talk from the author, but it doesn’t do the book justice. My summary is you’ll have more good ideas with more diversity in people you hang out with and you should let hunches germinate over long periods of time. Lots of examples in the book for why your companies shouldn’t keep R&D research a secret and why working in an office is probably beneficial for innovation.
+(this is an affiliate link)
+Amazon.com: Where Good Ideas Come From: The Natural History of Innovation (Audible Audio Edition): Steven Johnson, Eric Singer, Penguin Audio: Audible Books & Originals + Amazon.com: Where Good Ideas Come From: The Natural History of Innovation (Audible Audio Edition): Steven Johnson, Eric Singer, Penguin Audio: Audible Books & Originals
+]]>
+The gif this week is the first of many I’ve made with a focus on teaching engineering concepts. It is part of an article I wrote for The New Stack explaining different patterns for Kubernetes cluster upgrades. The full article be available later this month.
+With a little bit of shared knowledge you know exactly what is happening in that gif with almost no words. I’ll still be sharing gifs I find funny or intriguing in the newsletter, but creating and sharing my own gifs was a desire from day 0.
+Usually, I share information I find valuable to learn, but this week I have three articles I disagree with. I didn’t reach out to the authors. I didn’t tweet or comment about how terrible these articles are. I share them with you to hopefully help you know that even if you disagree with something you can do so in silence.
+I know I’m “publicly disagreeing” here in the newsletter but this audience is very small — less than 100 — and it’s perfectly fine to talk about how you disagree in private. Maybe you’ll learn something new from the people you tell. Maybe you’ll end up agreeing. The important thing is to always have an open mind and try to learn. Not try to be right.
+The thought that companies would be able to run reliable Kubernetes in their data center, provide self-service provisioning, accurate billing, and secure multi-tenancy while meeting public SLAs is not a reality of any on-prem environment I’ve worked. The author mentions that anything can be provisioned as a service behind an API. This assumes the admins of those resources have a level of development ability and all of a sudden have clear backlogs to dedicate time to building and documenting APIs and libraries for internal and external customers. I can’t imagine this renaissance happening. At least not the way the author describes it.
+Datacenter Renaissance: part one | Fluid Thinking + With the rise of Kubernetes, enterprise investments in legacy datacenters can become significant economic leverage, by converting legacy IT ops into private clouds. While many enterprises have considered divesting their datacenter infrastructure, and moving primarily or purely into public cloud environments, they may be missing a significant economic opportunity. Kubernetes, along with other automation, provides a unique opportunity to transform cost centers into value-producers, creating efficiencies and accelerating innovation.
+This article was misleading and left out some key bits of information in an effort to make Google — and specifically GKE — look bad. The thing X.Org is saving $3000 a month on is they don’t have to pay egress charges for CI builds. Why did they have high egress charges? Because Packet gives them free CI resources — read the linked PDF in the article for more info.
+Benjamin Tissoires, a Red Hat/IBM employee and GCP competitor, mentions creating their own K3s on Equinix was “painful” compared to GKE. If X.Org didn’t have free resources with Packet I’m sure the monthly costs and benefits of hosting their own Kubernetes, Gitlab, and object storage would be very different.
+
+X.Org says it’s saving a packet with Packet after migrating freedesktop.org off Google Kubernetes Engine • The Register + — www.theregister.com + The hidden cost of multi-cloud, and how full open source reduces lock-in
+Given the examples in this next article I completely understand why the author doesn’t like environment variables for configuration. I have different examples from my own experience and absolutely love environment variables for configuration for command line tooling — I mostly dislike them for web application configuration. The entrenched nature of environment variables in Linux and Unix for basic functionality like PATH, PWD, and USER make me know fighting environment variables is a losing battle unless, maybe, you’re using Windows locally and on your servers.
Nibble Stew: Never use environment variables for configuration + Suppose you need to create a function for adding two numbers together in plain C. How would you write it? What sort of an API would it have?…
+]]>
+People often feel guilty for saying no to opportunities, but in reality you should say no when you really care about something but know you are not the best person. It doesn’t matter if you’re not interested, if you don’t have enough time, or you don’t have the right skills. If you understand saying no will make the project/event/collaboration/etc. more successful then you can better position yourself to say no and explain why.
+I can imagine the guy in the gif originally thought he was helping by saying yes to this. It looks like everything worked out well… for the person throwing the ball.
+++The test of a vocation is the love of the drudgery it involves.
+
++— Logan Pearsall Smith
+
You should curl -sL http://bit.ly/10hA8iC | bash this link first and then wget the link to read the source. Bash, embedded python, and audio if you’re on Linux — assuming your audio is working. :) Pretty amazing.
A random script on the internet +
+Nothing to see here
+If you like ruby syntax but want something that can be compiled into a portable binary crystal looks like it could be a good fit. I’ve never written anything in it, but I’ve been watching it for a while. Great to see them release 1.0. 🎉
+
+Crystal 1.0 - What to expect - The Crystal Programming Language + — crystal-lang.org + The release of the first major release of Crystal arrives after many years of hard work. With thousands of contributions from people worldwide, it was finally possible to find consensus for what truly mattered for 1.0 and what could wait for future releases. Getting here wasn’t an easy journey, filled with enriching, controversial, delightful, and endless conversations that, in the end, made it possible to build a language more useful for more users.
+I love Terraform. It can do a lot of things really well and with all of the provider plugins it’s really easy to get started. I completely agree with this article that you shouldn’t be deploying your applications with Terraform.
+As much as some people want to stick with the tool they’re familiar with, Terraform can deploy software but you’re going to hit a lot of limitations. You can try to mask those limitations or orchestrate Terraform apply commands with Jenkins. In reality you should use a different tool.
+
+Don’t Deploy Applications with Terraform | by Paul Durivage | Google Cloud - Community | Medium + — medium.com + I know. This is a loaded topic. I can’t believe I’m going there–diving into the depths of a topic so heated, you probably already have strong opinions. Seriously, Terraform is not application…
+]]>
+Sometimes I push code into production that I’m certain will work well. Not because of test coverage or PR reviews, but usually just because the change was so simple and obvious there couldn’t possibly be another way to do it.
+Many times those pushes work fine and my false confidence is reinforced to do it again another day. Often times I end up paying for an undocumented quick fix later. Sometimes those guaranteed-not-to-fail code pushes catch fire and roll production down a hill. Those are good learning experiences.
+It’s hard for me to let something go unfinished. I have plenty of things in my life that aren’t finished but I almost always have an intention of finishing it some day.
+Some projects don’t need to be finished to teach you something. When learning to code, learning a new library or API, or even trying to automate something it might feel like a waste of time if we don’t finish our goal.
+In reality you’ll learn something that later can help you in ways you would never expect. Some will give you more insight into how to do something, but often times the best insight is how not to do something.
+I wrote about how documents play a key role to our meetings and design process at Amazon. There has been lots of articles about the document types we use but I’ve never seen someone write about how we use them or benefits they have.
+
+The Document Culture of Amazon + — www.justingarrison.com + A look at Amazon’s culture of writing and reading
+I can’t imagine maintaining a single open source project for 23 years! But that’s exactly what has happened with curl. This article has a ton of great facts about the project and some great hindsight about the last 23 years maintaining the project.
+curl is 23 years old today | daniel.haxx.se + — daniel.haxx.se + curl’s official birthday was March 20, 1998. That was the day the first ever tarball was made available that could build a tool named curl. I put it together and I called it curl 4.0 since I kept the version numbering from the previous names I had used for the tool. Or rather, I bumped it up from 3.12 which was the last version I used under the previous name: urlget.
+I had never heard of the strangler fig migration pattern even though this article is quite old — 2004. There are quite a few newer articles on how you can put this monolith application migration pattern into use but I thought it would be best to link to the original article instead.
+
+bliki: StranglerFigApplication + — martinfowler.com + Inspired by the strangler figs in Australia, a strangler fig application gradually draws behavior out of its host legacy application
+]]>
+I’ve been on a diet and I’m pretty sure this cat has better sit-up form than I have. Just like anything we do it takes practice and if we don’t do it for a while we fall out of form. As much as I exercised in high school I have to relearn a lot after not doing much for the past 20 years.
+Even if I’ve written a lot of code it will take me some practice to pick it up again after a break. Software has changed a lot in the past 20 years and thankfully for me sit-ups haven’t.
+I heard part of this quote in a book I read recently and it made me think about errors in systems and trying to prevent them is a game you cannot win. Instead making systems resilient is a better use of our time. Instead of trying to define and catch every error it’s better to exit as gracefully as we can and let the process be replaced.
+++Perhaps the history of the errors of mankind, all things considered, is more valuable and interesting than that of their discoveries. Truth is uniform and narrow; it constantly exists, and does not seem to require so much an active energy, as a passive aptitude of the soul in order to encounter it. But error is endlessly diversified; it has no reality, but is the pure and simple creation of the mind that invents it. In this field the soul has room enough to expand herself, to display all her boundless faculties, and all her beautiful and interesting extravagancies and absurdities.
+
– Benjamin Franklin from his report to the King of France on Animal Magnetism, 1784
+I finally spent some time this past week learning how to use pipenv to managed dependencies. It wasn’t nearly as bad as I thought switching would be and my use cases comes down to pipenv install and pipenv shell. Here’s a more thorough look at the benefits over pip.
+Pipenv: A Guide to the New Python Packaging Tool – Real Python + — realpython.com + Pipenv is a packaging tool for Python that solves some common problems associated with the typical workflow using pip, virtualenv, and the good old requirements.txt. This guide goes over what problems Pipenv solves and how to manage your Python dependencies with it.
+In a similar tangent to learning pipenv I also re-discovered fastapi python library. I haven’t used it yet but it looks like a great way to implement an API with modern features in python, including async request processing.
GitHub - tiangolo/fastapi: FastAPI framework, high performance, easy to learn, fast to code, ready for production + FastAPI framework, high performance, easy to learn, fast to code, ready for production - GitHub - tiangolo/fastapi: FastAPI framework, high performance, easy to learn, fast to code, ready for production
+I found the story behind mailoji interesting partially because it’s something I could see myself doing. Or at least buying 10 domains and never finishing.
+Mailoji: I bought 300 emoji domain names from Kazakhstan and built an email service | Tiny Projects + I bought 300 emoji domain names from Kazakhstan and built an emoji email address service. In the process I went viral on Tik Tok, made $1000 in a week, hired a Japanese voice actor, and learnt about the weird world of emoji domains.
+]]>
+I never thought about how donuts were filled. I should have guessed it was someone’s job, but I assumed it was automated. It makes me realize there’s a lot of work I never think about.
+There is lots of work I do that no one else thinks about. This isn’t a bad thing. It’s important to view my work as a delightful filling to someone’s day. Hopefully, like this email is for you.
+I’ve been working on a personal project that was beyond something I’ve done before. I was excited to learn new technology and solve a problem for myself. After multiple nights researching and trying things I was failing to find docs or examples for what I wanted to do.
+I thought about abandoning the project but reached out in one of my communities and found someone who knew about an example for what I wanted. They also had additional information they passed along which would have taken me at least a night to figure out. I often tell people being part of communities is important to help you grow and this is exactly one of the reasons why.
+This article describes options for keeping systems from getting overloaded. Many people know push vs pull for sending data, but this describes options I don’t think are as commonly known. The final design used for EC2 is something I never thought of.
+Avoiding overload in distributed systems by putting the smaller service in control | Amazon Builders’ Library + At Amazon, we build large-scale distributed systems that are composed of smaller independent services, each with a narrow set of responsibilities. These services interact with each other over well-defined APIs, allowing us to scale, evolve, and operate each one of them independently.
+I appreciate Bryan’s openness in this post. He didn’t have to write it and its existence may help future companies change how they think about compensation.
+Compensation as a Reflection of Values +
+Our thoughts on compensation, and how they reflect Oxide’s values.
+I frequently think how much animations can help us learn. This is especially true for things that are hidden or invisible by making them visible. This website could have been thousands of words, but instead it’s 21 animations with a few sentences to explain what’s happening. For my understanding of these engines these short animations are better than the thousands of words they represent.
+Animated Engines - Home + Animated Engines Home Page
+]]>
+Learning how to ride a bike requires you to balance in new ways. Riding a bike on a tight rope requires similar balance, and I can only image the perceived risks of failure makes it exponentially harder to focus.
+Trying anything new will require some sort of balance. Physical, mental, time management, relationships all create a balance in our lives that can easily topple due to unexpected illnesses, changes in priority, or adding new plates to juggle. Balance is only achievable when we understand how we fall and reacting to the signals that indicate we are falling.
+The people and systems who do this the best are the ones that can measure and react — and even predict — to falling. Don’t be afraid to ask for help.
+I did something without thinking too much about who it could harm. I never thought about how something could escalate or who it would discourage from participating. I could have deflected blame or defended my actions, but I took a moment to stop and think about someone else’s perspective.
+Not learning from your past is a guaranteed way to grow in one skill. Defending my actions is not a skill I want to perfect.
+A huge list of resources that have something to offer developers. I look through this on occasion to see if there’s something I can use.
+ +This is a fairly old post but I like Joe’s perspective on different types of lock-in. He talks about operations and developer lock-in in this post but also points out data in the footnotes. It comes down to lock-in is anything that will cost money — or time — to change and companies usually optimize for the cheapest lock-in possible.
+Operations Lock-in vs. Development Lock-in · 80% + I’m not a large enterprise developer. My experiences are at the unique environments of Google and Microsoft1. Over my career I’ve helped build platforms and I’ve learned that to build a great developer platform (or any good product at all) requires you to talk to many customers and put yourself in their mindset. This extends from the day to day usability of the product to the decision of a customer to bet a part of his/her business and career on the product in the first place.
+I’ve learned a lot from reading whitepapers. My favorite way to read them is by printing them out and going outside with a pen. I take my time and mark up the pages with notes and underlying key things I learn.
+This is a fantastic collection of whitepapers if you’re interested in distributed systems. Feel free to reply to this email and let me know your favorite whitepapers! I’d love to read more.
+Foundational distributed systems papers + I talked about the importance of reading foundational papers last week. To followup, here is my compilation of foundational papers in the d…
+]]>
+It’s difficult with software to know when to stop and release what you have. There’s always one more feature to create and one more bug to squash. Putting out software you know has bugs or doesn’t do everything you want is anxiety inducing but also freeing because it can only get better from here.
+I like side projects because they give me creative outlets and new ways to learn. This newsletter is one of my side projects.
+I try to treat my job as a side project to my life. It’s not as important as my family even if it’s my primary source of income. I didn’t always have this luxury, but I hope you can find a balance for your work and what is important to you.
+The gif is from this article about elliptic curve cryptography. I’m sure I’ve read this article before but apparently had forgotten a lot about how it works. It’s worth a (re)read if you’re interested in how newer cryptographic algorithms work.
+
+A (relatively easy to understand) primer on elliptic curve cryptography | Ars Technica + — arstechnica.com + Everything you wanted to know about the next generation of public key crypto.
+Daft Punk announced this week that they were breaking up. 😢 I’ve enjoyed their music and creativity for a long time. This thread with lots of pictures about how the original Daft Punk helmets were created was way more electronics than I expected. I take for granted the plethora of small electronics we have today that didn’t exist 20+ years ago.
+[tweet https://twitter.com/Daft +_Wub/status/1362285526435340288]
+The Kubernetes vertical pod autoscaler is really useful for setting your pod resource and requests based on actual usage. The docs are good, but they don’t go into all of the details and considerations as this post. Pointing out that you shouldn’t use the vertical pod autoscaler on the same workloads with horizontal pod autoscaler is something I think a lot of people (including myself) miss.
+
+Vertical Pod Autoscaling: The Definitive Guide - Povilas Versockas + — povilasv.me + The definite guide to Vertical Pod Autoscaling. Automate your Kubernetes CPU and memory resource requirements.
+]]>
+I often watch conference talks from companies that appear to be complete internal products, but behind the scenes are more like the blackbird car in the gif above. Companies have high performance, purpose built solutions they create and then present them as the answer to everyone’s problem. This isn’t always a negative thing. You should be aware that their Ferrari may not have a windshield or AC.
+The problem with big projects is they require learning a lot of things and have low probability of being completed because staying focused to overcome all the barriers is hard. When implementing a big idea the key to success is learning one thing at a time.
+If you try to implement a big idea all at once you’ll have too many things to learn. If you can find one thing to learn and pick a smaller project to teach you that you can build up the skills to implement the big project before you realize.
+This talk was so well done. Not only was the editing and diagramming cool, but the tool they built — gcploit — has scary potential.
+
+Compromise any GCP Org Via Cloud API Lateral Movement and Privilege Escalation: Blackhat/Defcon 2020 + — www.youtube.com + In this Blackhat/Defcon talk, we detail ways to exploit GCP service accounts, and go over some tools to defend against these exploits such as org policy and …
+Even with prices available via an API it’s still difficult to estimate costs of projects and changes. This CLI looks like it’ll be handy for personal and work projects.
+GitHub - infracost/infracost: Cloud cost estimates for Terraform in pull requests💰📉 Love your cloud bill! + Cloud cost estimates for Terraform in pull requests💰📉 Love your cloud bill! - GitHub - infracost/infracost: Cloud cost estimates for Terraform in pull requests💰📉 Love your cloud bill!
+Writing tests is not something I’m great at. I never had great intuition on how to write testable code and it always felt like a waste because most of my projects only involved one or two people. I’ve been trying to write more tests in go lately and testify seems like it might help me write them.
+GitHub - stretchr/testify: A toolkit with common assertions and mocks that plays nicely with the standard library + A toolkit with common assertions and mocks that plays nicely with the standard library - GitHub - stretchr/testify: A toolkit with common assertions and mocks that plays nicely with the standard library
+]]>
+Sometimes we make decisions in software and design that appear to have no impact on what we’re building. After many years of unchecked decisions we may find our systems breaking from a million — seemingly weightless — snowflakes.
+Open source is changing and so are the people and communities. What started as free software stored in a drawer back when people used to share computers has evolved into big business and companies trying to protect the type of open source that benefits them. A new generation of users and contributors are getting involved and have their own motives.
+I’m excited to see where open source ends up for my kids. I try to help guide communities to learn from the past, but the world is different and the next generation is less gate keeping and more welcoming so I stand back and take notes instead.
+If you’ve ever struggled with creating AWS IAM rules — I know I have — this tool is for you. It watches the AWS CLI or any app built with the SDK and can automatically build an IAM profile based on the access it observers.
+GitHub - iann0036/iamlive: Generate an IAM policy from AWS calls using client-side monitoring (CSM) or embedded proxy + Generate an IAM policy from AWS calls using client-side monitoring (CSM) or embedded proxy - GitHub - iann0036/iamlive: Generate an IAM policy from AWS calls using client-side monitoring (CSM) or embedded proxy
+I use gotty occasionally to use my terminal from my browser. Usually, I use it for screen sharing, but I love Julia’s use case and fork to enable dynamic, isolated sessions for the terminal game she made described in this blog post.
+Day 38: Modifying gotty to serve many different terminal applications at once + Day 38: Modifying gotty to serve many different terminal applications at once
+This post has great comparisons on how errors and exceptions are handled in different languages. I had never put much thought into how the definition of errors and exceptions shapes the code. It makes me appreciate go a little bit more.
+Errors Are Not Exceptions - DEV Community + Many language ecosystems use try/catch paradigms to represent both errors and exceptions. This is wrong. Tagged with languages, go, javascript.
+]]>
+There were some conversations on Twitter this past weekend that HTML is not a programming language. I don’t care about semantics, but I DO care to recognize people that write HTML as developers.
+My first full-time job I wrote code to solve problems even though I didn’t have “developer” in my title. I automated a job that used to take 3 weeks down to 3 hours with the code I wrote. It just so happened that my IDE was Excel.
+I spent a lot of time this past week talking to people about applications they’ve built and run. It’s great to hear about design and trade-offs for things I’ve never worked on and failure modes I’ve never had to consider. I’ll be posting the conversations on YouTube in the coming weeks.
+I wrote down my setup for remote whiteboarding. I’m using an open source app which fit’s my needs for simplicity and a friendly pen interface. I address a lot of other options and when you might want to use them in the post.
+
+Whiteboarding software and hardware + — www.justingarrison.com + Options for personal and shared whiteboarding
+I never read comics growing up, but lately I’ve been learning a lot about visual story telling. From Julia’s blog—link from last weeks email—I found Understanding Comics book and I’ve already read it and learned a ton!
+Amazon.com: Understanding Comics: The Invisible Art: McCloud, Scott: Books + Amazon.com: Understanding Comics: The Invisible Art: McCloud, Scott: Books
+If you’ve ever wondered about message queues and how they work this article is for you. It explains the concepts of message delivery, types of usage, and software options.
+
+The Big Little Guide to Message Queues + — sudhir.io + A guide to the fundamental concepts that underlie message queues, and how they apply to popular queueing systems available today.
+]]>
+There’s been a lot of open source news this week between my current employer and Elastic. I have nothing to do with it directly, but it reminds me that open source is people which means there will always be drama.
+Even when it’s billion dollar companies it often comes down to a small number of people making decisions. I think this weeks drama hurt the image of open source more than it helped.
+I got to review a resume for someone graduating university soon and gave them some feedback. The main thing I tried to explain is your resume needs to focus on what you’ve done, not what you know. You are trying to enter a business contract with someone and they need to know that you have shown a repeated ability to work for money.
+It helps a lot if you can quantify the work you’ve done even if the numbers don’t seem impressive to you. “Helped customers do X” is not as good as “Helped twelve customers do X”. It’s even better if you can point out what you did to make the process or product better for you, your employer, or the customer.
+If you write markdown or similar markup language docs you owe it to yourself to learn about writing with symantic line breaks. I didn’t know it had a name before last week even though I was always a big proponent to writing this way. It makes editing and reviewing documentation much easier.
+
+Semantic Line Breaks + — sembr.org + When writing text with a compatible markup language, add a line break after each substantial unit of thought.
+Julia has been writing technical zines for a long time now. I’m glad she shared her thought process in how to explain technical content with cartoons. The best news is, you don’t have to be an artist to draw!
+How to teach technical concepts with cartoons + How to teach technical concepts with cartoons
+If you write go and use the AWS SDK you may want to know v2 is generally available. I spent a couple days last week writing an example application and then a couple days converting it to v2 SDK to give it a try.
+Updating the SDK was not trivial even though my tool was only a few hundred lines of code. But there are quite a few benefits like improved performance and more go-like API calls that may be worth upgrading for.
+
+AWS SDK for Go Version 2 – General Availability | AWS Developer Tools Blog + — aws.amazon.com + We are excited to announce the General Availability (GA) release of the AWS SDK for Go version 2 (v2). This release follows the Release candidate of the AWS SDK for Go v2. Version 2 incorporates customer feedback from version 1 and takes advantage of modern Go language features. The AWS SDK for Go v2 requires […]
+]]>
+The more programming languages I learn the more it resembles human language for me. It takes a lot of practice to write content that humans want to read. It takes similar practice to write code that computers want to execute.
+If I start writing in another language the meaning of the words might be the same, but how they will be interpreted by the readers could be completely different.
+There’s a lot of articles and books that claim to have formulas to help you get good ideas. At some point you have to figure out what motivates your brain. For me it usually is a mix between learning something new, having problems to solve, and freedom in how I solve them.
+Even if you’re not using AWS this post shows how software problems are being solved with infrastructure. I especially liked “in the 2000s you were a ruby developer. In 2010s you were a rails developer. In 2020s you’re an AWS developer.” It used to be that infrastructure was an implementation detail—in some cases it still is. Now the language and framework is implementation detail.
+
+AWS as a Framework | Build Galvanize + — medium.com + AWS acts increasingly like a framework. And if you can understand how this framework is meant to be used, the better you can harness its potential.
+Occasionally, I need to get a terminal on a remote system someone is using to debug something or get something that’s lower latency than video screen share. There are a few different options for programming but less for terminals. I’ve used tmate in the past but it has limitations as a tmux fork. I found upterm this week and really like it. It’s open source and you can run your own proxy server which helps with security.
+GitHub - owenthereal/upterm: Secure Terminal Sharing + — github.com + Secure Terminal Sharing. Contribute to owenthereal/upterm development by creating an account on GitHub.
+I have written a lot of bash, but it’s always difficult to start from scratch. This is a great first template if you’re going to write any complex bash.
+I almost always prototype things in bash unless I hit one of these limits
+This template has a default amount of 4 arguments, but it’s still a helpful starting point.
+
+Minimal safe Bash script template | Better Dev + — betterdev.blog + Minimal Bash script template that will make your scripts safer, consistent with standards, and provide a way to parse and validate parameters.
+]]>
+Learning new things
+The gif reminded me of what it feels like to be new to something. You think you know where you’re going, you start to understand what you’re doing, and then you’re free falling. You pull the rip cord, gain a resemblance of control, and slow down—just a little bit.
+Learning new things doesn’t end the way it started and you still don’t understand it all, but you’re having fun and want more!
+Tech
+I was so optimistic a week ago and this week my optimism was briefly swept away and I was not able to focus. I felt like I was free falling with my eyes closed knowing just how close danger really is.
+Tech didn’t matter but was a welcome escape to fantasized safety for 20 minutes at a time. It’s OK if you felt the same.
+I wrote down my thoughts on how to get into a career in tech. I’ve been talking to a lot of people new to technology, and this is the general advice I’ve been giving.
+
+Breaking into tech + — www.justingarrison.com + Resources and advice for beginning a career in tech
+My previous role was part of a “developer productivity” team and I like the micro-feedback loops laid out here. I audibly gasped when I read how inefficient environments “focus on trying to spot the under performing developers” because it was too real.
+
+Maximizing Developer Effectiveness + — martinfowler.com + To be successful at digital transformation you need to optimize the key feedback loops in your software engineering organization
+Speaking of making developers productive, being able to find services and who owns them is a huge drain on time especially as teams and companies grow. I’ve seen various products for internal developer portals but rarely are they open source or pluggable. The biggest problem I always see is buy-in from the entire organization usually needs to come from the top.
+
+GitHub - backstage/backstage: Backstage is an open platform for building developer portals + — github.com + Backstage is an open platform for building developer portals - GitHub - backstage/backstage: Backstage is an open platform for building developer portals
+]]>Since this is the 1st newsletter I’ll explain how it works. I’d like to help you learn development or become a better developer. I also want you to look forward to opening this newsletter. I’ll keep the content short so you can skim everything in under 10 minutes. I’ll do that by always providing:
+The gif will hopefully make you smile. The comments will make you think, and the links will teach or show you something you didn’t know. Usually, content will be about development or technology but not everything.
+
+I’ve been talking to a lot of people trying to break into tech. They’re learning development for the first time and often not sure where to start. It has been encouraging to me to see people taking initiative and the new ideas and insights they can bring to the industry.
+My advice every time has been to find something in technology that they’re interested in and find a community they can get involved with. I recommend they find a small/local community that can help them learn what companies and people are doing in their area, and also find a global community where they can share what they learn and give back by teaching others. In my personal experience—which is unique to me and shows the enormous privilege I have—all of my job opportunities have come through personal connections in communities and not raw talent or interviewing skills.
+This is a new year and I’m really excited to learn and create new things. I have a lot planned—both work and personal—and I can’t wait to get more creative than I’ve been able to be in the past due to lack of time or work restrictions. This newsletter is one place for a creative personal outlet.
+I liked reading the background on localizer and why other tools like telepresense and kubefwd didn’t work the way they wanted
+Localizer: An adventure in creating a reverse tunnel/tunnel manager for Kubernetes + — blog.jaredallard.me + How I made a tool that enabled developing with Kubernetes to be as simple as “docker-compose” was.
+I loved this video going through a scene in Disney’s 1993 Aladdin and specifically focusing on character development for introducing Aladdin in the movie. If you’ve never looked at animation in slow motion or shot by shot you’ll probably learn some neat tricks about techniques used.
+
+Aladdin – Character Animation at its Best + — www.youtube.com + Taking a look at fantastic character animation in “Aladdin” (1992) during the “One Jump Ahead” song sequence.Please consider supporting this channel on Patre…
+This article is a great framework for what you need for technical documentation. Tutorials, how-tos, references, and explainations. If you want to make your code more approachable this is a great place to start!
+The documentation system — Documentation system documentation + There is a secret that needs to be understood in order to write good software documentation: there isn’t one thing called documentation, there are four.
+]]>Slack is a major part of how we communicate at work. If you still think it’s just about chat then chances are you’re using it wrong. Other collaboration tools exist and some have similar features but Slack is the dominant choice.
+After using Slack, and similar collaboration focused tools, in multiple jobs here are some practices I’ve found that will make it better for everyone. Some of these tips work best in a remote-first, asynchronous environments, but many of them apply to fully co-located teams and companies as well.
+There are a lot of different use cases for Slack and these tips aren’t for your specific love for IRC or disdain for electron apps. I’m not going to embark on a “use threads” holy war, but these tips are beneficial for your organization globally and not just you individually.
+General practices that have helped me
+/dnd if you need to focus/call as soon as you’ve spent 10 minutes on a topic or need claritySome things need to be agreed upon at a company or team level. If your team has any of these practices make sure you write them down (outside of slack). New hires won’t know the team norms and a quick wiki entry will help keep expectations consistent.
+If there’s one practice you should learn it’s to use statuses to provide current, passive information. Don’t set an emoji as a permanent status because you like the picture next to your name. You have no idea how many people will hover over your status only to find it’s not useful. It erodes trust which makes statuses less useful for people who actually use them. This doesn’t apply for a community workspace where expectations are drastically different.
+
A status should be current, passive information for everyone to see. It’s better than sending a message to a team channel because:
+If you can, automate status messages. There are calendar integrations
+ and commands like /call will automatically set your status while you’re on a call. I’ve written automation with CLI tools, Microsoft Power Automate
+ and voice assistant apps via Voiceflow
+ to help with this in the past.
Here are some examples of helpful status messages:
+/status 🌴 on vacation until 8/20/status 🎧 working with slack closed/status ✈️ traveling- txt for urgent requests XXX-XXX-XXXX/status 🍕 lunch until 1300 PT - I like to set my emoji to whatever I’m eating that dayAll of those status messages can give the same type of passive information someone would get if you worked in the same physical office together. If your company has multiple locations or hybrid work environment I’ve also had great success with adding custom emoji for each location or special WFH emoji.
+You should also use reaction emoji for passive acknowledgement. A quick 👀 or ✅ can help everyone know you’re looking into an issue or understand what needs to be done. You can send an emoji reaction to the last message with +:emoji:.
At minimum your profile should have your time zone, profile picture, and name. It’s cute to use a handle, but not approachable or friendly for people who don’t know you. Your time zone is needed for functionality like delay send and a time zone will show other people your local time when they click on your profile which will help them know what to expect for a response time.
+Even if your company is located in the same time zone it is passive information you can provide that can help as your company grows or when people travel. Get in the practice of doing these things early.
+Profile pictures don’t have to be of you. It is not always comfortable for people to have a picture of themselves in chat or it may not be safe for them to do so. Having a unique picture of your pet or something you like is still more useful than the randomly generated default avatars.
+Seeing a picture of you helps a lot of people know who they’re talking to and remember that you’re a real person—empathy is easily forgotten. It also helps for people who have never met you in person because maybe there are two Justin Garrison’s at the company and it’s hard to track down which one is you in the company directory. A consistent picture can save people a lot of time.
+
People should not abuse @here or @channel messages in any large channel. If it’s used too often it becomes useless as people ignore the messages.
However, you’re responsible for setting up your notifications for your personal preferences, to effectively let you do your job (e.g. if you’re on call), and to keep a healthy work life balance. If you are able to disable all notifications and still be effective at your job and communicate in a timely manner I highly recommend it.
+When your company is large enough there will be someone awake and in Slack 24⁄7. Some people are in different time zones and on completely different days. Other people need to work different hours to take care of sick family or children.
+They should be considerate of your local time and use delay send + if possible, but it’s still your responsibility to disable push notifications if you don’t want to get them. If the message doesn’t require an immediate response it’s better to send an email.
+If you see a message but cannot respond right now or it doesn’t need an immediate reply use reminders
+. These can be generic reminders to /remind follow-up with Sarah or they can be message reminders for specific messages. The best feature of reminders for me is the fact that you can snooze them for later. On busy weeks I’ll get 5+ reminders Monday morning and I can pick which are urgent and snooze the rest.
Slack is not a permanent knowledge repository and you should not assume everyone has seen every one of your messages. Messages are ephemeral and if you need a permanent record of a decision or want people to think about a topic it should be written down somewhere else.
+Email is good for asynchronous, long form communication but it’s a terrible permanent record because it’s usually not searchable for new hires and company retention policies might be short. You need another knowledge repository for place where people can think asynchronously and slowly + and reference it weeks or years later. I’m a fan of Hashicorp’s RFC process +.
+Yes, Slack has a search and it works. You cannot expect a new hire to know what to search for or even what channels to be in.
+If you ask someone to do something and they do not acknowledge the message it is your responsibility to follow up with them and make sure they got the message and understand.
+Channels should be named in a way that make sense to your company. Team channels, product channels, support channels, and water cooler channels are all pretty normal and you can figure out the best way to name them.
+Make sure each channel has a description of what it is used for. New people to the channel or new hires don’t know the social norms and having a description will quickly let them understand what they should put there instead of watching behavior and trying to figure it out on their own.
+You should also pin important channel messages. Even if you think everyone knows about a link or topic you need to think about the person that starts in 6 months. I guarantee they won’t know and having a few pinned messages can help.
+If you need to talk to multiple people try to use relevant public channels first. You never know who else might be interested or have valuable insights into what you’re talking about. It can also help spread knowledge faster because there’s a chance more people have context on what you’re saying.
+If you need to talk in private try to use a private channel instead of a group DM. Private channels can /invite more people if necessary but group DMs lose chat history as people are added. Group DMs also cannot be organized and you’ll end up with 10 different rooms with ±2 people and it sucks trying to find the right set of people.
Don’t flood discussion channels with automated bots or alerts. There’s nothing worse than having an important conversation interrupted with 5 random bot messages. Keep separate, opt-in channels for bots and automated feeds (e.g. RSS).
+Slack is a tool that can be used very poorly or can help you more effectively communicate with coworkers in the same building or on the other side of the world. Think about your usage patterns and how they might exclude people unintentionally. Think about people not online and reading slack right now or people that will start in 6 months. Think about people who use screen readers or are neurodivergent and how your behavior might impact their effectiveness to work.
+If you understand other people have different personal preferences for how they use Slack and set expectations appropriately you can use it much more effectively.
+]]>
I’m Justin.
+I previously wrote at Medium +, howtogeek.com +, and 1n73r.net +. Most of those articles have been moved to this site.
+]]>GitHub’s UI has improved a lot over the years but sometimes you just need quick access without clicking. Here are a few GitHub URL tips to get you data you want faster. One cool thing is all of these tips give raw text output so they work great with curl and other CLI tools.
If you want to get a users public ssh keys you can add .keys to the end of their user profile URL. Here’s mine.
https://github.com/rothgar.keys +
+If you want to get a user’s profile picture you can add .png to the end of their user profile URL.
https://github.com/rothgar.png +
+If you want to get gpg public keys you can add .gpg to the end of their user profile URL. I don’t actually have any gpg keys so you can see what it looks like if a user doesn’t have them with my profile.
https://github.com/rothgar.gpg +
+There are lots of different feeds you can subscribe to.
+Repo commits
+https://github.com/$USER/$REPO/commits.atom +
+Repo releases
+https://github.com/$USER/$REPO/releases.atom +
+Repo tags
+https://github.com/$USER/$REPO/tags.atom +
+Public RSS feed will show public user activity. Repo stars, releases, etc.
+https://github.com/rothgar.atom +
+There’s also a private user feed which is great if you don’t log into GitHub often.
+It requires you to click in the UI, but I still find it incredibly useful. Log in to your account and on your dashboard scroll all the way to the bottom and click “Subscribe to your news feed”. This will generate a private token automatically and send you to https://github.com/$USER.private.atom?token=...
You can plug this directly into an RSS reader and it’ll include everything that normally shows up on your private dashboard feed. Repos and users you follow, project releases, and more.
+
This is a public RSS feed for GitHub security advisories.
+https://github.com/security-advisories.atom +
+You can diff branches in a repo by adding /compare/[fork-user:]$BRANCH...$BRANCH to the end of a repo url.
If you want to compare a dev branch to the main branch for my bashScheduler you can check out.
https://github.com/rothgar/bashScheduler/compare/main...dev +
+If you had a fork of the repo you could add your username before main like this.
https://github.com/rothgar/bashScheduler/compare/$USER:main...dev +
+The cool thing is you can get a raw patch or diff output using the same url and adding .patch and .diff to the end.
https://github.com/rothgar/bashScheduler/compare/main...dev.patch +
+https://github.com/rothgar/bashScheduler/compare/main...dev.diff +
+If I missed any cool URL tricks please let me know on Twitter +. You can find a ton of other cool GitHub tricks in this github-cheat-sheet repo +.
+]]>I wanted a landing page for the 123dev newsletter + and it was the perfect opportunity to try a few new things.
+I have static sites on GitHub, Gitlab, Netlify, and Amplify. They’re all great options for static site hosting but I was missing a few to fill out a complete bingo card.
+My main goals were to have a simple layout that highlights the weekly gifs and is easy for people to share. I really wanted a way to embed the gifs into Twitter if someone shared a link on there. I didn’t know how I wanted to accomplish that and it turns out there are multiple options.
+To keep things simple I’m using hugo + for a static site generator and I’m using a modified hello-friend-ng + theme. I tried other static site generators like eleventy + but after spending a night trying to figure it out I went back to hugo.
+I also wanted to give CloudFlare Pages + and Workers + a try so I started there.
+My first problem was getting gifs to show up inline efficiently. I knew I could use gifs but they’re really big which takes a while to load. All of the gifs are under 5MB but if I wanted to have a list of posts that could easily make a page >20MB.
+In-line videos is the obvious choice but I didn’t know how to make it work. Turns out it’s not too difficult. Because all of my posts and media files have the same naming scheme I can use the following template in hugo.
+<video width="100%" muted autoplay loop playsinline>
+ <source src="{{ $.Site.BaseURL }}/media/{{ with .File }}{{ .TranslationBaseName }}{{ end }}.mp4" >
+ <img src="{{ $.Site.BaseURL }}/media/{{ with .File }}{{ .TranslationBaseName }}{{ end }}.mp4" >
+ <img src="{{ $.Site.BaseURL }}/media/{{ with .File }}{{ .TranslationBaseName }}{{ end }}.gif" >
+</video>
+And then I just need to make sure each post has a gif and mp4 video. The gifs are usually smaller dimensions and worse quality but they work inline in emails so I still use them.
+This worked for desktop browsers but I quickly found that the videos didn’t play on mobile devices. Turns out CloudFlare doesn’t cache the media files with which was causing them not to load. It took me 3 days to find this +.
+I added a page rule in CF for
+*123dev.email/media/*
+Browser Cache TTL: a day, Cache Level: Cache Everything, Edge Cache TTL: a month
+Once I got the files cached everything on mobile worked for a day and then it broke again. :( I tried getting this to work in multiple other static hosting sites and the only one that worked out of the box was Vercel +.
+Vercel has a ton of extra features I currently don’t use but I appreciate how seemlessly it has handled the media files so I’m still using it.
+The next project was to make Twitter player cards + work whenever someone shared the link on twitter. This was more complex than I expected so I’m going to write another blog post with all the things I tried and what I ended up with.
+The first thing to figure out was how to make hugo output two different pages for each content page. I also wanted to avoid forking the theme so I needed to figure out how to make the changes locally in my repo instead of editing the theme directly. To make hugo render content pages twice you need to create a custom output format +.
+I added the following config to my config.toml file which tells hugo to generate HTML pages and also a new “FULL” format type. FULL is still an html page but it uses a different default template for the content.
+[outputs]
+ page = ["HTML", "FULL"]
+
+[outputFormats]
+ [outputFormats.full]
+ name = "full"
+ mediaType = "text/html"
+ path = "full"
+ isHTML = true
+Now I created two template files and put them in ./layouts/partials/twitter-vid.html and ./layouts/posts/single.full.html
├── layouts
+│ ├── partials
+│ │ ├── twitter-vid-home.html
+│ │ └── twitter-vid.html
+│ └── posts
+│ ├── single-baseof.full.html
+│ └── single.full.html
+twitter-vid.html is a templated <head> section for all of the twitter player metadata. The twitter-vid-home.html file is a special version of the header for the home page. The single-baseof.full.html is used to combine the twitter-vid.html with the single.full.html template.
<!DOCTYPE html>
+<html lang="{{ .Site.Language }}">
+<head>
+ {{ block "title" . }}
+ {{ end }}
+ {{ partial "head.html" . }}
+ {{ partial "twitter-vid.html" . }}
+</head>
+<body class="{{ if ne $.Site.Params.defaultTheme "light" -}} dark-theme {{- end -}}">
+
+ {{ block "main" . }}
+ {{ end }}
+
+</body>
+</html>
+Now whenever I run hugo I get all of my standard posts in /posts/ and I get a separate “full” page at /full/posts/. Now I just needed a way to make routing dynamic based on how they’re shared.
The only other thing I wanted on the homepage was a subscribe button. I’m currently using Buttondown + for organizing and sending the email.
+They have a way to embed their signup form in an iframe which is nice but all you really need is the action link. Here’s what I’m using. It works, but I want to make a couple changes and style updates.
+<form style="text-align: center;" action="https://buttondown.email/api/emails/embed-subscribe/123dev" method="POST" target="popwindow">
+<input type="email" id="bd-email" name="email" required>
+<input type="submit" value="Subscribe">
+</form>
+I made a bunch of other theme edits for things like posts lists and all of my pages get more “front matter” so that I can render the variables in the page. One of the main things I needed was the height and width of each video because it’s required for twitter’s player metadata.
+altext: "a cat waving at something"
+attribution_site: "reddit"
+attribution: "https://www.reddit.com/r/gifs/comments/k3bjan/cat_trying_to_learn_a_new_tik_tok_dance/"
+cover: "4"
+width: "640"
+height: "1352"
+I currently get the inforamiton from ffprobe
ffprobe -v quiet -print_format json -show_format -show_streams ./static/media/${POST}.mp4 | jq '.streams[0] |.width,.height'
+The final thing to update was I wanted the original signup form at justingarrison.com/newsletter + to forward to the new website. That was easy to do by just updating the hugo page to contain a client side redirect with
+<head>
+<meta http-equiv="refresh" content="0; url=https://123dev.email" />
+</head>
+Like any good side project I’ve learned a lot and the more I learn the more I want to try new things. If you’d like to come learn with me please feel free to subscribe to the newsletter.
+]]>DevOpsDays LA
+You’ve adopted DevOps but you’re still not seeing the product acceleration your were hoping for. Amazon is a “prime” example of shipping fast. Let’s have a mock meeting for a new AWS service to understand how a document first culture can help you get buy-in and optimize your meetings for getting consensus quickly.
+Engineers who want to change the culture of their companies by using document first process and tools used at Amazon.
+Engineers are trying to change their process and culture to ship things faster and make better decisions. We’ll give a first hand look at what it’s like to have a meeting at Amazon for a new product.
+rejected
+]]>Kubecon NA
+There’s a prevalent theory that adding one more cluster will solve your problems. +It’ll unblock that team, or enable that new project to be successful. +But the cluster sprawl and management overhead can slow you down. +Local optimization can have big impacts to the global organization. +In this talk we’ll look at operating cluster scale at scale. +What patterns can we learn from the past to help us plan for future growth, and what tools exist to help us get there?
+There are a lot of tools that help with parts of multi-cluster management (provisioning, configuration, deployments, networking) but rarely do talks or tools talk about the complete considerations of when to use multiple clusters or when something like multi-tenancy is a better option. +Many talks focus on how they can optimize one portion but it’s hard to put those things into practice without understanding how tools fit together or what day 2 operations really look like. +This talk attempts to address some of those areas for multiple use cases such as multi-cluster for environment splits, for team/application isolation, for on-prem/off-prem, and for multi-region deployments. +Focusing mostly on cluster operators and how their choices impact application developers.
+Rejected
+]]>Kubecon
+EKS Anywhere is a new open source project to deploy and manage Kubernetes in any environment. +It builds on top of the open source EKS distro and other community projects to provide opinionated tooling so you can gain from the expertise of how AWS runs Amazon Elastic Kubernetes Service (EKS). +This presentation will dive deep into the technologies and how EKS Anywhere combines them to solve real world problems.
+This talk will go into more details about how EKS Anywhere works and how other builders can combine existing tools to create opinionated tooling for their own needs. +I know this sounds very much like a vendor talk and I work on EKS Anywhere so I am obviously biased. +I respect Kubecon and the community a lot so I will do my best to focus on the great work of the community on the projects that are used in EKS Anywhere, help users understand how the projects are combined, and help builders understand what they might want to consider when building their own cluster lifecycle tooling.
+Rejected
+]]>DevOpsDays PDX
+Technology has cycles of innovation and refinement. +Movements that bring new ideas and ecosystems that refine the ideas into usable tools for a broader audience. +Devops and container orchestration were big ideas that were refined by config management and Kubernetes. +Here we’ll explore the patterns and what might be next.
+Accepted
+]]>I posted last year + about what it was like to move from a full time development role into a developer advocate (DA) position. I wanted to follow it up with my experience after one full year for anyone interested in this type of role.
+Everything I said in my six month post is true and I can sum up the last six months with.
+++Devrel puts the I in IC
+
For those of you not aware IC stands for Individual Contributor and generally is used to describe non-manager roles.
+I work with a great team of other developer advocates and directly with our product teams. At many times I feel more like a contractor than a team member. But fundamentally I need to add value to the organization and products on my own.
+Even though I write more software as a developer advocate I haven’t reviewed a PR for a critical bugfix in over a year. I haven’t had to debug someone else’s code. I don’t have to re-read someones convoluted comment about what a snippet of code is supposed to do.
+Most of the code I have written I wrote completely from scratch on my own and I’m the only one who touches it. That gives me a false sense of my abilities to develop good software. My scope of development is much easier than developers working on large projects on critical business applications.
+The risk is much lower for the code I write. Worst case scenario is my demos won’t work in front of a live audience. I won’t take down production or cause loss of revenue directly.
+I’m able to write a lot more software because I’m not burdened by coordinating with other people, I don’t have to worry about scale or long term maintenance. What frameworks and languages I use are entirely up to me.
+This is honestly great for me. I learn a lot with this experimentation and I can build and teach things faster which is needed with multiple talks, streams, and articles in flight at all times.
+I also realize that my ability to contribute in a complex environment with business critical software will atrophy over time. That’s not a bad thing because my days of doing that work are behind me. But if I wanted to move back into a full time engineering role it would take me some time to acclimate.
+I’m also aware of that limitation and I try to approach problems from the mindset of an enterprise developer and not a developer advocate. I’m able to provide more business value bringing that knowledge closer to the products.
+This has been great! I don’t mean helping people through talks and streams but actually 1-on-1 talks with people learning and building a career.
+My time is up to me to schedule and prioritize and I haven’t had that freedom for a long time. I’ve been spending extra time mentoring people and joining community calls to help people learn.
+Going into this role I was hoping that would be a freedom I would have and it has proven to be a reality over the past year. There are times I can’t focus on this but as product waves come and go I fill a lot of that time on calls with people to hear their stories and help where I can.
+There are situations I should have said “no” to things and didn’t. There is a fine line between helping and burnout.
+Because my time is mine I need to do a better job at focusing on my goals and shedding anything that doesn’t align with them. Amazon does a good job with this by making principles and tenets part of our core structure as an organization.
+My team has tenets. As long as what I’m doing aligns with those tenets it doesn’t matter what the task actually is. We have a lot of trust on the team and within the org that people are doing what they think is the best thing.
+There are opportunities I’ve wanted to pass along to someone I think could benefit from it. But it’s hard to know who that person is.
+I have a lot of acquaintances and with the speed and different directions of this role it’s hard to keep in close contact with people. If our paths don’t cross often we usually just see each other in passing as we start the next thing.
+COVID has exacerbated this problem but I’m sure it still exists in a world where we’re not all stuck at home. Attending in person conferences as an attendee was a time to connect with friends, but now I’m in a position where conferences are part of my job which takes some of the fun out. It’s kinda rough.
+I miss the close bonds I had with people dealing with the same big projects and troubleshooting the same bugs. I don’t think that exists as a DA and it can get very lonely. I only imagine it’s worse for people who travel often.
+I’m sure in a world without a global pandemic you have great experiences and amazing memories, but without someone to share the journey with they turn into stories instead of meaningful human connections. I’ve seen that play out with far too many developer advocates who spent years on the road because that’s what the job asked.
+I’m a part of multiple devrel slack channels and small groups, but they’re all only haphazard meetings with like-minded individuals. I don’t feel a connection in those spaces the way I did with my previous teams.
+I’m not sure how to break this cycle or feel more connected with people. I “fly” from one virtual conference to the next and no virtual hallway track or happy hour has helped.
+I said in my last post that devrel can be an echo chamber and I’m afraid I started to fall down this hole. Most of my Twitter feed and YouTube recommendations are from other devrel people. My ads are for camera accessories and streaming gear. My search history is littered with OBS how-tos and social media automation.
+I tried really hard to avoid this trap, but I think it was inevitable for someone like myself who dives deep in any role and community. There are some things I tried getting better at and failed (subscribe to my YouTube +). There are other things I didn’t finish, and there are things I never started.
+I still try to be a customer first. Have empathy for the people I represent and understand their constraints. It’s not always easy to do this and directly impact the products I support.
+I need more data. I need more hands on experience. I need depth in the technologies and services they’re using. I need more time.
+Even with the downsides I still can’t believe I get to do this for my job. My weekly tasks vary from testing new services, writing and reviewing docs, creating videos and gifs, and coding.
+I enjoy all those things and wouldn’t want to do any of them full time. I like the variety. I get energized by the diversity. I love helping people. I take pride in my impact.
+Photo by Cookie the Pom + on Unsplash +
+]]>All Things Open
+Congratulations! The war of The Enterprise vs Open Source is over and you’ve won! But at what cost? You may be able to use and contribute to open source but on enterprise terms. Let’s have a look at what it takes to create an open source program that can hold up to enterprise requirements and also what it’s like to contribute to open source as an enterprise developer.
+45 minutes or 15 minutes
+Virtual
+Rejected
+]]>I learned containers to solve problems with repeatable, isolated application deployments. +Now individual applications aren’t a problem and my environment is much more complex. +Containers has proven to be the little standard that could adapt. +No matter if you’re new to containers or an experienced user we’ll look at how containers are used for packaging more than traditional web apps.
+Accepted
+]]>o11ycon
+T’was the night before launch and all through the app +Not a ticket was open, not even a slack. +The backlogs were sorted in Jira with care, +In hopes that no bugs would show themselves there. +The pagers were quiet next to devs in their beds; +While SLO graphs danced close to the edge. +And SRE wake putting finishing touches, +On one last push with no repercussions. +When out of the alert arose such a clatter, +I sprang to my laptop to see what was the matter.
+Rejected
+]]>All Things Open
+From hundreds to hundreds of thousands of community members, the Kubernetes project and Cloud Native ecosystem has thrived for the past seven years. Many companies have gone all in on Kubernetes, but how can a vendor neutral project provide stability guarantees that companies need? How can maintainers plan feature enhancements and react to security vulnerabilities? Everything from KEPs to SIGs, we’ll look at the structure, process, and tooling Kubernetes has used to become one of the most active open source projects ever.
+45 minutes
+Virtual
+Accepted
+]]>In my time at Amazon, I’ve observed the way we use documents is incredibly unique. A lot has been written about the six-pager and PR/FAQ so I’m not going focus on document formats, but I wanted to share how our process benefits from document-based meetings. I also have identified some areas for improvement if you are looking to adopt document-based meetings for your workplace.
+I’ve been wanting to write this blog post for a while and Jaana’s tweet finally gave me the inspiration to share my thoughts.
+My role is a Sr. Developer Advocate within AWS Container Services so my experience may be different from other areas and roles at Amazon. A majority of my meetings start with reading a document. This takes “this meeting could have been…” and flips it upside down. Most of the time, if there isn’t a doc there isn’t a meeting.
+Depending on the meeting, the document could be a six-pager, a PR/FAQ, a one-pager about an idea, a narrative to help find a solution to a problem, or even a service review full of charts, graphs and bullet points. The document adapts to fit the audience and purpose of the meeting.
+Reading documents is so ingrained in our culture and process that our scheduling tools have check boxes to automatically create a document. If I’m catching up on a new service or feature launch, I will find the document rather than emailing or calling the product manager.
+The interesting part to me isn’t in the format of the document, but how it is used. Meetings start with reading. Depending on the length of the document, we’ll read anywhere from ten minutes to half an hour. If the meeting has a long document (six-pagers are the longest) and many attendees, the meeting will be scheduled for enough time to read and discuss.
+Reading the doc is part of the scheduled time. I’ve worked at plenty of places that I’ve tried to document everything for a meeting ahead of time. I’ve written well thought-out emails, shared links to documents, and written detailed wiki pages. In all of my meetings outside of Amazon I had one of three outcomes:
+Before I started at Amazon these were some of the expected benefits to reading in meetings.
+Some other benefits I’ve found while putting it in practice are:
+There are some limitations to document based meetings. The first I have noticed is if you’re not a very good writer you will be at a disadvantage communicating your ideas. Amazon has a lot of internal training to help you write good Amazon documents, but even with training it still requires a good foundation. I’m very thankful for my years of practice writing for How-To Geek + and Cloud Native Infrastructure +. Even with that background, my first one-pager review was intimidating.
+I’ve been told “if there’s no document, it doesn’t get done.” This includes meetings. If there’s no document, we cancel the meeting.
+While documents can create a more level playing field it’s also a high barrier to entry. Even for small ideas, features, or iterations the first thing you will likely need is a document. My perspective may be skewed because in my current role I don’t write production service code, but I do affect features, design, and positioning of the services. I have a lot of feedback and ideas, but I don’t implement them.
+The available wealth of historical documents can be enlightening to read through, but it also can be confusing to trace the lineage of a service with a plethora of documents and comments. I have caught myself more than once reading a document which I thought sounded similar to an existing service only to realize 20 minutes later the document is for the service and I didn’t look at the date of the document or I didn’t know the product code name.
+I have the benefit of working with the service teams and providing direct feedback about new features and services. Most documents I read are very interesting. Many teams at Amazon don’t have direct product input. However, they’re still required to write documents to communicate plans with their team. Not all docs are interesting, but they are crucial to the decision making process.
+I’ve said multiple times that Amazon has the foundation for a great remote-first company. The document-based process provides employees in multiple timezones the same context as someone in Seattle. The discussions in meetings enable faster feedback loops, but the downside is they can limit the potential for asynchronous engagements if notes and questions aren’t captured in the document.
+I’ve never had the benefit of attending an Amazon meeting in person. From what I’ve heard document-centered meetings have been extremely successful in transitioning to remote requirements. But the content isn’t the only thing that matters.
+Amazon, like many large organizations, uses a lot of tools to communicate. It’s often difficult to find documents spread across so many tools without an ability to cross search or centrally organize them. I could see how a tool like Command E + could help a lot. This can be additionally difficult with the multitude of open source and social platforms I engage with on a weekly basis. I currently have a user in 53 Slack workspaces. 💀
+Even with areas that could use improvement I can’t think of a place I have worked that wouldn’t benefit from document-based meetings. I’m sure with more practice I will get better at writing with a more Amazonian style.
+I thoroughly enjoy not having to prep for meetings, because I’m confident the document will give me the context I need to participate. I know the person who called the meeting invested their time so they don’t waste mine. I reciprocate the same thoughtfulness with meetings I create and documents I write.
+Thank you everyone who reviewed this document. ☺️ Banner image credit pixbay +
+]]>All Day Devops
+It doesn’t matter if you do it the hard way or with opinionated tooling, Kubernetes cluster creation is a solved problem. +But how many clusters do you need? +The correct amount is N+1. +How can you manage that many clusters, upgrades, security patching, and guarantee workload availability? +We’ll look at common patterns for cluster deployments, upgrades, and what components should be decoupled by explaining how the patterns work and how they can be applied to any environment.
+Modern Infrastructure
+Accepted
+]]>All Day Devops
+It’s day one at Air C and D. +I’m the new SRE and I need to make our service more reliable. +More 9s is all I was told. +Yes, I already asked if moving the decimal was an option. +It is not. +The site goes live in 3 days. +Let’s figure out how to keep our 9s while under pressure of launch, performing upgrades, and multi-region deployments.
+SRE
+Rejected
+]]>Crossplane Community Day Europe
+Your toy application is a buzz on the internet. +It’s containerized but your uptime is falling with style. +How can you get cloud services in a Kubernetes native way? +AWS Controllers for Kubernetes (ACK) rides in to save the day, but what about about multi-region? +ACK has a friend in crossplane to give your app the love and scale it deserves.
+Developers with containers already running on Kubernetes or thinking of moving to Kubernetes. +Users who want to scale their application beyond a single region for HA or being closer to customers. +They’ll learn how they can easily do that with crossplane and how ACK accelerates what they can do with in AWS.
+Customers will learn how they can use crossplane even if they have no intention of running multi-cloud architecture. +They can benefit from the abstractions and tooling available to solve problems on single cloud vendors too. +They will also learn how AWS Controllers for Kubernetes accelerates what crossplane is able to do in AWS.
+Rejected
+]]>Maybe you want to switch your keyboard layout because you hear there are benefits for alternative layouts. Some people do it for speed, others for ergonomics.
+I learned to touch type with QWERTY and could type 50+ words per minute. I later switched to Dvorak after having wrist pains typing for extended periods of time. I’ve been typing with Dvorak for nearly 20 years and here’s my experience.
+It’s nice that every operating system has Dvorak as an optional layout and there are plenty of learning tools that exist to re-learn how to type. In my experience using Dvorak has allowed me to use my computer for longer periods of time with less wrist pain which was my main goal.
+Dvorak is all about efficiency and mostly delivers. Putting the vowels on your home row means your fingers don’t have to move as often and theoretically this translates to faster typing.
+Overall I’m very happy I switched and I’m not sure I would be able to do my job today without it. An added benefit is no one will ever want to use your computer.
+If you use other people’s keyboards often for support or pairing it’s going to take you longer to switch layouts. I frequently used other people’s keyboards when I was learning Dvorak and it took me about 3 months to be able to touch type with Dvorak.
+While Dvorak puts commonly use keys on your home row it turns out people have adapted to having inefficient keyboard layouts. Typing English words are much more comfortable in Dvorak, but as an engineer many of my daily tools have worse ergonomics.
+CLI commands such as ls, vim, and jq are worse in Dvorak. Thankfully - is in a significantly better location and / is roughly the same, but the over use of my right hand is noticable.
There are some tools that can help, such as fasd, but it doesn’t compensate for defaults. Movement with jklm keys are not next to eachother and don’t make logical sense, and common shortcuts for copy, paste, and undo are all over the keyboard.
Programming has partially adapted to QWERTY and ; is the biggest key placement difference. Depending on what language you use your experience may be different.
After typing with Dvorak for nearly 20 years I don’t type any faster than I did with QWERTY.
+It doesn’t happen as often as it used to but there are systems and older remote protocols that don’t support alternate layouts. These would by impossible to type on because local layout was ignored and the keyboard would translate twice producing completely useless output.
+If you use embedded systems or modify BIOS screens your likely going to have to hunt and peck for keys. It may also get very confusing during a OS boot not knowing what keyboard layout has loaded yet. This is the worst with password fields that don’t show typing or mask the letters.
+If you use a company controlled OS you may not get to set your keyboard layout during installation. This means user logins will be in QWERTY but screen unlocks will be in Dvorak. This is partially bad when resetting a password. Make sure you learn the new password in both layouts so you can type it properly.
+If you have a desktop — or a laptop you never unplug — get a keyboard that you can program to be in Dvorak at a hardware level. Keep the OS in QWERTY and don’t worry about switching in software.
+If you’re switching for ergonomic reasons look for a proper ergonomic keyboard first. I got more comfort from a proper ergonomic angle more than switching layouts. I especially like my Ergodox EZ because I can have a programming layer with common brackets and braces in easy to reach locations.
+Layouts such as Colemak might be a good alternate to Dvorak because it keeps some of the keyboard shortcuts the same but still puts more commonly used keys on the home row.
+
One of the things I miss most about working in an office is diagramming with coworkers. I’m a very visual learner and drawing what I’m thinking and having others explain their thoughts in picture form help me a lot. If you’ve seen any of my conference talks you’ll also probably know that I like props too!
+Let me start with what I’m using and then can explain some other options and trade-offs. Here’s the best option I’ve been using.
+I love how simple it is. No signup, just create a board and share the URL with someone. The board interface is minimal but has most everything I want and already has keyboard shortcuts without needing any config.
+
WBO was the best performing web whiteboard software I tried from an iPad with pencil. It’s not perfect and has some glitching when zooming on a touch device, but the trade-offs have been well worth it for me. The “app” is a web wrapper—with no back or share buttons—but it works when I don’t want to be at my desk.
+It’s open source and already packaged in a container so running it in AWS ECS with Fargate or Amazon Lightsail were both easy with no ongoing maintenance. The boards are saved to disk on the server so if you want to keep them around you’ll need to make sure you have persistant storage. I treat it as disposible and always make sure I save a screenshot if I care to have a copy of the board.
+Drawing with a mouse is never easy so I would recommend if you want a better experience you’re going to need some way to use a pen/stylus. If you don’t have something with a touch screen there are quite a few cheap convertable chromebooks on the market or Wacom tablets + range from $60-$200.
+
I was drawing boards from my iPad but recently I bought a Wacom Cintiq 16 tablet which has been great. It has more space than a typical tablet and is more sturdy while sitting on my desk. It’s not a cheap option though so make sure you’ll benefit from the hardware. As an added bonus it makes a great 2nd display and has perfect resolution for sharing my screen in Twitch streams and meetings.
+There are different types of collaborative diagramming people use. Some people prefer building diagrams by themselves in something like Microsoft Visio + or diagrams.net + (formally draw.io).
+These are great for permanent documentation, slides, or sharing. They’re not great for on the fly collaboration or multi-user editing. In this post I’m specifically looking for software that let’s me learn with someone, not from someone.
+I’ve used Miro + and Microsoft OneNote + but for me these are more like note applications that happen to have drawing. Drawing in them works but is clearly an afterthought and the UI is mainly optimized for mouse/keyboard usage and not pen/stylus input.
+I wanted something that is cross platform—macOS, Windows, Linux, and hopefully iOS, Chrome OS, and Android. I don’t know how or where my coworkers want to collaborate so it needed to be something web based.
+Zoom whiteboard + is really cool and recently got support for other operating systems—not just macOS. I don’t like that I have to be in a zoom meeting to use it though. Sometimes I like to draw things I’m thinking about or collaborate asynchronously. Screen.so + has a built in whiteboard app too but has similar limitations.
+I used to love the Microsoft Whiteboard + app for iPadOS, but over the years it got more buggy and integrated into Microsoft Teams which I don’t have. Similarly, Google Jamboard + is really cool but tied to a Google account which I may or may not be able to use for work content. As a bonus, Whiteboard and Jamboard both have physical options if I ever worked from an office again in the future.
+I’ve tried a few other open source and proprietary tools like Openboard + and Endless Paper +, but for my use cases never worked out. I really liked the concept of Openboard letting me draw over the top of my screen and no matter what was on it but it was very buggy when I tried it on Ubuntu.
+Excalidraw + is a popular alternative to WBO. It has a good drawing interface and adds a lot of features to create structured diagrams too. Every time I use it it feels like much more than a whiteboard which often means I end up hunting and pecking in menues to do exactly the right thing instead of just drawing and letting ideas flow.
+Drawpile + has some really neat ideas like communities, but the native apps seemed to make it make it harder to develop features and there’s no mobile support. The self hosted server was harder to run than other strictly web based apps.
+Spacedeck + was a SaaS offering turned OSS. It looks more like a Miro competitor but still being maintained if that’s what you want.
+Awwapp + and Browserboard + are simple hosted whiteboards which worked well for me the few times I tried them. They have some paid options which add nice features, but I never stuck with them.
+Vibe + has a really nice web app which fixes some of my complaints with WBO. Similar to Jamboard, Vibe also have an optional $3000 “whiteboard” they’ll sell you with their app running full screen for a more traditional whiteboarding experience.
+]]>You’ve discovered that Signal + can provide you with secure communication from your phone that is cross platform and free!
+First of all you may be asking “who makes Signal?” Signal Messenger LLC. is the company that makes the Signal app. They are funded by the Signal Foundation which is a non-profit organization that relies on your donations + to make the app free and not have ulterior motives with your data.
+The foundation’s mission is
+++To develop open source privacy technology that protects free expression and enables secure global communication.
+
The Signal app is all open source on GitHub + and their protocols are well documented and available on their website +.
+But that’s not why you’re here. Let’s show you some tips to get the most out of your new secure messaging app.
+Signal is great, but there are a few things you may want to change depending on how secure or private you want your communications.
+You can disable what is shown in notifications to help with privacy. Turn off whatever you don’t want shown.
+
You may also want to disable the notification you get when one of your contacts join Signal. Especially ad the rapid pace people are joining.
+
You can set the Signal app to lock when your phone locks under privacy. It may also be a good idea to enable incognito keyboard which will ask your keyboard to remove personalization while typing.
+
You can turn off read receipts, typing indicators, and automatic link previews under the communication settings. Link previews only work on sites that use <code>https://</code> +
+
In chats you can change when to auto-download files. Some of these can be quite large so it may be a good idea to only automatically download on Wi-Fi.
+
At the very bottom of Chats and media is a message backup option +. The backup is encrypted and stored locally on your phone. If you’re using a backup service for your phone they will also be backed up to the cloud which you may or may not want (even if it’s encrypted).
+
You can use Signal from another device including tablets and laptops. Install the Signal app on the other device and it will show a QR code. Open the linked devices setting and click the + button at the bottom. Scan the QR code and you’re all set.
+If you tap on an existing linked device you have the option to remove it from being able to send or receive messages. Be aware that any existing messages on the device may still be available and cached on the device. This setting is not a “secure wipe.”
+Signal chats work similarly to traditional SMS messaging apps. You can send text, emoji, and stickers, or attach pictures, gifs (searched from giphy), files, contacts, or locations. You can record voice messages by holding the microphone.
+
You can also make audio or video calls when you select a contact and click the icons in the top banner. All calls are encrypted and can optionally go through a relay server so you do not expose your IP address to the recipient. You can enable the relay server in settings -> privacy -> communication.
+A relay is a server that Signal controls that your call will go through. Similar to a VPN in the way it would expose the server IP to the recipient without exposing your IP. If you’re interested in the Signal server architecture you can check out this post +.
+
A single hallow check box next to a message you sent means your message was sent. Two check marks means the message was delivered. Once the recipient reads the message the check marks will fill in.
+
If you see a little person icon next to the person’s name in chat it means that person is in your contacts. If you want their name to automatically be filled out you can go into your phone’s contacts and add the number to a contact.
+
If you open a chat you can look in settings and enable disappearing messages. This is super helpful to prevent messages persisting.
+
You can—and should—verify a contact to make sure you’re really talking to them. This verifies the encryption keys used at both ends of the conversation. You can do that manually or automatically by scanning their QR code.
+Ideally you will do this verification out-of-band from Signal either in person or through some other video/image sharing service. Facetime, zoom, etc. are great options if you can’t meet in person.
+Once you verify a contact you’ll see “Verified” text under their name. If you manually mark the contact as verified it will show a message in the chat that you marked them verified.
+You can create a group message from the main screen clicking the pencil and then “New group.”
+
Add contacts to the group and you’re ready to go.
+You have similar settings to 1:1 chats. You can have a group video call with up to 8 people and a group chat with up to 150 people—RIP notifications! If you want to have a group call without video you need to start a video call and disable your camera before you join.
+You can change who can invite people to the group or make a group link easier for someone to share if they’re not in your contacts.
+The links are public but an admin needs to approve members joining the group by default.
+
Group video calls work the same way as 1:1 calls but groups don’t have audio only calls—although you can disable your video in a video call.
+If you want to use signal without giving out your real phone number you can use a service like twilio that will provide you a forwarding number.
+Check out this great guide + on how to set it up.
+If you see this seemingly scary message don’t be alarmed. It likely just means the person on the other end of the conversation + got a new phone or re-installed Signal.
+
You can still verify the persons safety number to make sure there is no man-in-the-middle attacks. This is distinctly different than how iMessage and Telegram work because in both of those apps they store your private key.
+Pins are important because they will enable Signal to get rid of phone number requirements.
+The support page + says it best
+++Your Signal PIN is a code used to support features like non-phone number based identifiers. This means that your PIN can recover your profile, settings, contacts, and who you’ve blocked if you ever lose or switch devices. A PIN can also serve as an optional registration lock to prevent others from registering your number on your behalf.
+
It hasn’t rolled out yet but has been in the works for a while.
+If you want to stay up to date on signal news I highly recommend you follow the Signal blog +. They have lots of great technical and non-technical information on new features and news.
+]]>I’ve been talking to a lot of people about how they can get a job in technology. Some people are starting from knowing nothing and others have done some coding lessons or maybe an idea about what they want to do.
+Many people I’ve talked to think working in technology is all about programming. While it helps for many different roles it’s not everything.
+You will need to understand some technology or at least be curious enough to learn how things work and driven enough to not give up. I’ve been working in tech for more than 15 years and in all of my positions I can only remember a few weeks where I programmed more than 30 hours in a week. A majority of my time has been spent learning, planning, and coordinating with people.
+I’ll admit when I got started in early 2000s things were very different, and being a white male my experience in technology is very different than others.
+Despite our differences I hope these resources can help you get into tech.
+Some of the people I’ve talked to decided they wanted to be a data scientist because they had a background in math or working with data so it seemed like a natural path. While that may be true, tech is very broad and different roles need different skills.
+Before you decide on a position and make decisions about what is required try to find someone who has the job you want. No matter if they’re a frontend developer, engineering manager, or database administrator.
+See if you can find someone who has the job you want and ask them what skills they needed to get their job, their work history, and what they’re learning.
+LinkedIn can be a great resource for this. You may not get a reply from blind DMs but you can still read through people’s job history, see what they’re posting about, and find out who else they talk to.
+There may also be variations on positions that you’re not yet aware of. A customer success employee at one company may be a technical account manager, solutions architect, or developer advocate somewhere else. A project manager may need to know how to program, or may need organization skills and how to communicate well.
+Don’t make up your mind about what you want until you know a bit more about what you’re interested in and what it takes to work in the position.
+So you’ve decided you want to learn programming but not sure where to start.
+There are lots of great resources that exist free online for learning how to program.
+My advice is usually to start with javascript or python.
+Javascript because it probably has the most available jobs and can be used for frontend, backend, or mobile development. Python is great in data, scientific, and backend roles. Both languages have hurdles to learn, but you don’t need deep computer hardware knowledge to solve real problems with them.
+In either case, if you start with one language and work on it for a little while and it doesn’t start to make sense it’s OK to try a different language. You may have more success by simply switching and trying something new.
+I’ve personally done courses from codecademy +—I especially like their “sorting quiz +“—udemy +, and frontend masters +. All are great options to get started.
+I can’t possibly list all of the resources available online but here’s some resources from other people who learned how to code and what they used.
+ + + +How I learned to code + from Brianna McCullough +
+Once you have an idea about what you want to do and what you want to learn my next advice is to find a community.
+For me community accelerated my career more than anything else I learned or did. I have a bachelor’s and master’s degree. I’ve written a book, and I’ve learned multiple programming languages.
+But the thing that helped my career early on more than anything was volunteering to help with a podcast for the Linux Mint community. That volunteer work would help me get my next 2 jobs which in turn would help me get my next 3 jobs.
+I usually recommend people join two communities. A local community so you can learn about what companies hire technology talent in your area and a global community to push you more.
+The local community is a great place for you to meet people face-to-face. It doesn’t have to be in the technology you want to learn, but it will still be a good resource for connecting with people and help you get some low-risk feedback on things you’re learning and building.
+Use the local community to customize your skills to your region or market. Technology can be very unique depending on what market you work in (e.g. banking, marketing) and where you work (e.g. India, Nigeria, UK).
+The local market should give you a great advantage to understand what people do at companies nearby, what tools they use, and what projects they’ve completed.
+Find a global community that is focused on the area you’re learning. It can be on twitter, Stack Overflow, or forums and chat rooms.
+The global community will help you learn what’s next. It will open your eyes to things you didn’t know you didn’t know and will push you to learn things you probably won’t understand. This community will give you a big advantage to learn ahead of your local community and help in job interviews.
+You don’t need to be as active in both communities, but spend some time answering questions, give feedback, and show off what you’ve learned. It will accelerate your learning and opportunities more than you know.
+Once you have some understanding of what you want to do, you learn some skills to do the job, and you build some relationships within your community you have everything you need to apply for jobs. It’s OK if this process takes you 6 months or a few years. Everyone is different and it’s never too late or too early to start.
+I usually recommend you apply for jobs from your network. Find opportunities that are not on big job sites and you can talk directly with a hiring manager or someone on the team. This will give you a big advantage instead of applying to dozens or hundreds of jobs on a job board.
+When you are preparing for an interview it’s good to remember that the job description you applied for reflects the skills and projects the role has done in the past year. The interview process will be looking for skills they need for the next year.
+This is where being involved with communities can help a lot. Your local community can help you understand what the company has been working on and who their competition is, and the global community will help you know what skills and tools are needed for their next big projects.
+There is a lot of opportunity and variety in a career in tech so I hope these resources and advice can help you on your journey.
+]]>Let’s talk about what it takes to create movies and ship them to theaters as well as what it takes to +stream movies directly to viewers. Justin has experience running infrastructure for both and wants to +help you be successful in your cloud or on-prem journey.
+There’s lots of talk about websites and apps that use cloud technologies but there’s often gaps for +various industries that don’t fit the typical website. Even though much of the infrastructure at Disney +Animation and Disney Streaming didn’t use CNCF products I think it is still beneficial for attendees to +understand how you can solve business needs with cloud technologies as well as applying cloud native +practices to traditional infrastructure.
+Justin will draw from first hand experience building a studio from scratch (Disneytoon studios), creating +Oscar winning movies (Zootopia, Moana, Frozen II), as well as running global infrastructure for Disney+ +launch from 0 to 50M users.
+Justin has experience creating your kids favorite movies and running infrastructure for some of their +favorite apps. He co-authored Cloud Native Infrastructure to help you be successful in the cloud and +wants to make the cloud services better for what you need. He is passionate about open communities +and sharing from first hand failures so you don’t have to experience the same pitfalls.
+Accepted
+]]>I think there’s a rule that any helpful tweet with 10k likes should be a blog post.
+My past two on-boardings have taught me a lot about what it takes for me to feel comfortable in a new job. I owe these insights to my managers for good and bad experiences that showed me things that mattered to me and things that I thought important that turned out not to be.
+I’m sharing them here to help you, as a new employee, have a better idea what to ask for, and for you, employer, give your new hire the best chance of success.
+New jobs are stressful. All of this information comes after someone has decided:
+With that in mind empathy is key.
+As the employer you probably lost someone who just went through the above experience or are growing and at risk of not meeting deadlines for product without someone who can on-board quickly and contribute to your goals.
+How can you help them be sucessful? Here’s my tips.
+I’m writing this from the perspective of the new hire since that’s the role I’ve played recently. Most of this advice applies to companies with at least 1000 employees.
+Within a week of your start date someone, ideally your new manager, should reach out via email for a call. There are going to be some questions about day 1 expectations that should be answered before you start.
+At minimum you should get a phone number to call/text when problems arise during on-boarding. This is also a great time to confirm their address for shipping equipment.
+Sometimes addresses are not known until the employee fills out benefits forms (at least in the United States) and the address from their application may be old depending on how long they’ve been “in the system.”
+This is the same for on-site on-boarding and even more critical for remote on-boarding. When you’re a stranger in a new place things can be hard, but it’s easy enough to ask a stranger and rely on human empathy. When you’re a stranger remotely you can’t casually reach out to strangers.
+My manager 2 jobs ago handled this great
+Getting an out of band contact number is super helpful and reassuring to have for a new hire.
+The week before the new hire starts your manager should also assign an on-boarding buddy and at minimum they need to let them know their responsibilities and have them review the on-boarding documentation.
+Before the new hire starts they should have all of their accounts created and their equipment should already be delivered.
+I know new hires often are last minute things. I can’t tell you how many Friday afternoons I’ve been told a new person is starting Monday and needs everything set up.
+This is a bad experience for everyone involved. If this keeps happening you need to figure out what it takes for your company to make hiring people and confirming their start date better for everyone involved.
+If the new hire is waiting for accounts, access, or equipment on their first day or week it is likely a sign they won’t have everything they need for at least their first month.
+If you are shipping them a laptop or security keys this is also a great opportunity to send them some on-boarding swag. A t-shirt, stickers, water bottle, or anything goes a long way to make someone feel welcomed.
+You’ve finally made it to day 1! First thing should be a call with your manager or someone you’ve met before.
+On-site onboarding is usually done with HR or an orientation team which is fine because there are other people having a shared experience, there are opportunities for casual banter, there’s signs/handbooks to read, and in person human empathy goes a long way to make people feel comfortable.
+None of that works remotely.
+You’re alone in your office/bedroom/kitchen and need some guidance. Even senior hires who will be more independant once settled will need to know where to get answers to questions and who to contact.
+Ideally your manager will be available for immediate questions for at least 1⁄2 of the day. If your manager is not available then an on-boarding buddy who you’ve been introducted to should be readily available.
+After or during your initial phone call your manager should send you an email with resources and links to read during your first week.
+The email should include
+One of the links should be clear documentation about on-boarding expectations. How long it is expected you will have to get familiar with the people, processes, and social norms should be in writing not only for your benefit but for your team to be on the same page. Make sure this is written down and not verbal because the new employee will want to reference it multiple times.
+Some people will be comfortable faster than expectations and some people will need longer. Both of those negotiations should happen with your manager based on the written expectations.
+You need a baseline before you can negotiate changes. This is especially important if you will be on-call for critical support.
+If your company has more than 100 people you also should have an internal website with an up to date org chart. Investing in making this site good will pay off huge as it frees up all new hires to find their own answers to the question “Who should I ask?”
+My favorite org chart sites had the following features:
+Some optional features that can also be helpful - Person’s general location and timezone if remote or building/office location if on-site - History of employment including teams and projects they’ve worked on - Calendar availability or quick link to schedule a meeting
+Some things you probably want to avoid in a company directory but will be helpful to have available at a team level - Cell number: some people may not want that information public or feel safe with it available to anyone - Birthday: this is too personal for large companies to have publicly available - Social media profiles: depending on your team this could be a great way to build trust but should up to the team to share
+By the end of day one you should have all of your introduction meetings scheduled. Ideally, your manager or on-boarding buddy will schedule these and along with the invite send information about who is on the meeting.
+A brief intro to introduce you and give names and roles is sufficient. You should be able to look up the rest of the information from the org chart. It’s more important that your manager introduces you to the people you will be meeting. A lot of social anxiety can go away with a trusted third party introduction.
+You hopefully will have a call with your on-boarding buddy day 2 to answer new questions and let you get more context on what they do.
+If work is assigned or tracked in a standard tool it would be great to have tasks created for you so you can see how work is coordinated. Your buddy should be able to explain the process and help you identify the most important work the team is currently doing.
+Day 3 or 4 should have a follow-up call with your manager if you haven’t talked recently. Even with an on-boarding buddy it’s important for the first week to have regular check-ins with your manager to make sure you’re aligned with the most important things for you to do first.
+At this point it’s nice to be invited to some of the undocumented areas of the culture. They’ve existed everywhere I’ve worked and come in a variety of forms.
+Disney Animation had a “work room” which was a secret room where employees would unwind or celebrate.
+In the digital world this often takes the form of no-management private chat rooms, out of band group chat (e.g. WhatsApp, sms), or public #YELLING channel. There needs to be space for that and personally I think within the first week is a good time to be invited.
+When you on-board in person it’s easy to socialize and meet people. Remotely you don’t get lunches together. There’s no common coffee room or ping pong tables. You have to be very intentional about building trust between people.
+You have already been hired which means they trust your technical abilities. They trust your skills, but the best teams are built on psychological safety.
+That safety can only come from trusting people’s integrity and being allowed to be vulnerable.
+Humans need time to build that kind of trust, and it doesn’t come from pull requests or meetings. You’ll need to be very intentional about having time to build rapport.
+On-site jobs have benefited from building this trust quickly through colocation, shared experinces (e.g. weather and traffic), and frequent hallway conversations. When you’re remote you have to make sure you still provide space and time for these conversations to happen because they won’t happen organically.
+On-boarding remote isn’t incredibly different from in person but you have to be more explicit to create time for the new hire to get to know people better and you need to make sure things are written down and searchable for a new employee. I’m sorry but having a bullet point in your 80 page employee manual doesn’t count.
+In person on-boarding benefits a lot from asking the same questions multiple times and meeting lots of people quickly through lunches and organic meeting spaces (e.g. coffee, cafe, bathrooms). Focus on making your information easy to search and ways you can help build trust on the team and your new hire should be able to on-board quickly.
+I found a lot of great resources in replies to my thread (thank you all). Some things I don’t think would work at companies I’ve worked for but it may be worth reading to get ideas on how you would like to change on-boarding.
+ +]]>I switched from a role as a Sr. Software Engineer leading a team of Site Reliability Engineers for Disney+ to a Developer Advocate for containers at AWS. Here are some of my experiences and observations about the role change, and what it might mean for you if you’re looking to do a similar switch.
+I was a long time engineer in various roles. As I changed roles my title changed from Sysadmin to Sr. Systems Engineer and then to Sr. Software Engineer - Lead.
+Titles have different responsibilities and expectations depending on where you work. As a systems engineer I was responsible for provisioning, configuring, and scaling lots of servers, but they never required me to be on call because my customers (artists) were only using the systems during work hours.
+As a lead software engineer I was responsible for prioritizing team initiatives, discovering and addressing customer needs, and writing and reviewing code. I was also responsible for a lot of infrastructure that I was on call for every other month.
+After 7 years of being responsible for building and maintaining production systems I switched to a developer advocate role for a lot of reasons. The main reason was a lot of the parts of my job that I enjoyed (e.g. teaching people, guiding product) were things that appeared to be responsibilities for a developer advocate.
+I have been public speaking + in my free time for a while because I loved the opportunity to help people learn from my experience and it always taught me new things.
+It may also be important to point out that I became a developer advocate right when COVID-19 quarantine happened. The usual things you may associtae with a developer advocate (e.g. traveling, conference, etc.) I haven’t done.
+However, during all of my interviews I made it very clear that I would not be able to travel for at least the first year due to having a 1 year old baby at the time.
+So here are my unordered observations after making the career change.
+I was surprised the most by this. As a DA at AWS I have a lot of freedom to pick areas I want to focus on. This is partially an AWS thing and partially the DA role, I think.
+The really refreshing thing is I don’t have to write code to implement a feature or support for years in production. I can learn something new and never get paged for my terrible implementation with a new language/framework/tool.
+I get to find a customer pain point, write sample code to fix it, and then document my findings for internal product teams so they can implement it in their own way or teach customers to enable them to understand the problem and find their own solution.
+I enjoy writing code a lot more when it has a more finite purpose and won’t wake me, or anyone else, up at night.
+You know how you have a backlog to learn a new tool, framework, service, library, etc., and your schedule is so full of meetings that you’re lucky if you get 4 hours a week to dedicate to learn the new thing.
+Even when you take 4 hours you still feel guilty because there’s an entire backlog of bugs, feature requests, and deadlines you’re not doing.
+As a DA I’ve been lucky enough to spend ~50% of my time learning new things. I spend a ton of time reading about new products and services we’ve shipped or will be shipping.
+I equally spend time writing code to test the things we’ve made. I try to find the sharp edges in our products to make it better for customers.
+Sometimes I do that before the product has been released, but many times I don’t even know about a new service until I see the blog post announcement (AWS is a big place).
+Trying and learning new things is one of the joys that brought me to tech in the first place. It’s so refreshing to be able to spend time to understand who the customer is, and bring customer feedback to the product team on how it can be better.
+There’s never enough time to try everything that comes out. I spend a good deal of time with products that AWS doesn’t make too.
+I have a lot of experience with tools from my 7 years as a practitioner, but the industry changes so fast I still try to understand when a tool might be the best fit.
+I’ve heard devrel is different at lots of companies and so far I’m happy with how it is structured at AWS. Devrel at AWS is part of the product organization.
+I’m in product design conversations, I review PRFAQs +, I give product feedback, and write my own documents for ideas I think would be useful. Even when I’m wrong (which has been frequent) everyone I’ve talked to has been helpful in showing me where my assumptions were inaccurate or gaps in information were leading me down a different train of thought.
+I am directly able to take things I’ve learned using AWS services and tell the product team how I would like to see things different or where a use case may not be supported and they have always been receptive to my feedback. I’ve been asked to participate in additional conversations to help refine those ideas and literally advocate on behalf of the customer.
+I always felt like I got great customer support as an engineer at Disney, but being one step removed from the product engineers always made it seem like the process took longer than it needed to. Even if implementation still takes the same amount of time I now get more regular feedback loops and it’s my job to help improve the products and I feel even more invested.
+I’ve only been at AWS for 3 months. On-boarding and meeting people internally is a big reason for this.
+Some possible reasons I don’t have these types of calls include:
+In any case, I expected there to be at least 1-2 customer meetings per week. For the past 3 months that has not been the case. I have only had 1 customer meeting and that was because I volunteered for it.
+I’m happy for that, but also I know there will be times when I’ll want to dive deep with customers to understand their use cases and pain points.
+I didn’t expect this at all. Between product, customer, team, and community I assumed I would be in meetings a lot.
+As a lead software engineer I was in meetings for at least 50% of my week. I easily averaged 4 meetings a day and that includes a day dedicated to no scheduled meetings.
+Some of that is cultural differences at AWS and some of that is freedom and responsibility in the role to work on what I think is the most important. Also, a good portion of that is not having sprint planning, backlog grooming, sprint showcase, etc.
+Even though I don’t feel like I’ve been very productive (mostly because I’ve been on-boarding) I can see how only having a handful of recurring meetings on my calendar will help me be way more productive and focus.
+The way meetings are conducted at AWS is unlike anything I’ve ever experienced. In 3 months of meetings only 1 has had a slide deck, but that’s information for a future post.
+At my past 3 jobs I typically was one of only a few people with a twitter account. I was almost always the only person who regularly used an RSS reader and kept up with technical news, projects, and interesting blogs that surfaced in developer spaces.
+Because of that I shared a lot of news, projects, tweets, etc. with co-workers. In most cases they had never seen or heard the thing I was sharing.
+Now I find myself on the receiving end of too much news.
+I never thought I would learn so much about how people use social media, articles, and blogs to gain insights into what customers are doing and want.
+It’s really interesting to see conversations sprout from tweets from individuals, blog post from small startups, or random deep dives into a new announcement. I had heard AWS was customer obsessed and I assumed they paid attention to big users, but I didn’t realize that if you so much as tweet something about an AWS service there is probably someone who sees it and it may end up on a PRFAQ even if they never respond or favorite your tweet.
+I know this isn’t the case everywhere, but not only devrel employees are paying attention. Project managers, engineers, and maybe even management show up in threads I would have never seen at previous companies.
+As a matter of fact previous employers actively discouraged engaging with anyone online about work related topics. For a long time I was terrified to post personal things online for fear of getting in trouble at work.
+This was expected before I joined, but I didn’t expect that I would spend more time on internal documents than external.
+Providing feedback and writing my own internal content takes time.
+In the 3 months I’ve being doing devrel I only have 1 blog post and a 3 other documents that will be made public. Everything else, so far, has been internal facing.
+The amount I’ve written has been greatly impacted by on-boarding, learning processes, learning projects, and generally just trying to focus while the world seemingly falls apart.
+This obviously varies for different people and different teams. For right now I’m still learning and am pretty comfortable with focusing on internal docs.
+In 6 years as an engineer I was able to open source 1 project and had 1 public PR related to work which each took 3 months of legal reviews. All of my other contributions were to internal, private repositories or were made in my free time.
+In the past 3 months I haven’t been committing code to open source projects yet, but I’ve been a lot more active in issues, community slack channels, and SIG email lists and calls than I previously was allowed.
+This is great for me because I love community. I love helping new people, providing feedback to issues, and also contributing code.
+I need to make sure I balance my time and have been intentionally slow to commit to anything. Being involved in open source is a big driver for me to continue down the devrel path.
+There’s a few things that worry me about devrel I haven’t found solutions for yet.
+One is I’ll stop being a practitioner and become a talking head. I’m writing more code than ever, but that doesn’t mean I understand the constraints of building and operating real systems inside companies. Some of that I can get from listening to customers, but as time goes on I’m afraid my memories will fade and I’ll forget the pain of upgrading a complex system, or overly simplify the process developers have to take to push code to prod.
+I wish there was some way for me to take on responsibilities in real life productions systems outside of AWS for a time to keep the problems fresh in my mind.
+The second is I spend too much time typing. I have wrist problems and all this coding and writing has me trying to find different ways to be productive without being at my computer.
+I think travel and speaking would help, but for at least the next year I need to find a way to take more breaks.
+My third observation is devrel can be a bit of an echo chamber. Maybe it’s because I’m new to this job, but I see a lot of posts (including this one) about devrel.
+I don’t remember seeing them when I was an engineer which makes me think they were always there and I never paid attention to them. Which then makes me think it’s probably harder to get a message to engineers than I think, and there seems to be constant questions about business value of devrel teams.
+I never put thought into proving the value of engineering to an organization, but maybe I have doubts about the perceived value of devrel for the organization.
+There are great people putting lots of thought into devrel and what it means for companies to have dedicated teams in this space. I’ve learned a lot from people like Mary Thengvall +, Swarna +, and Ashley Willis + on what it means to support devrel teams, building inclusive communities, and providing value to the organization.
+Lastly, will I ever be able to go back to engineering? I see a lot of talk about management to IC switching, but rarely see devrel to engineering.
+Some days I wish I was still an engineer talking to other engineers. It’s probably just me, but it seems like now that my title has changed all of my experience and desire to help people are invalidated behind a pretence that I’m trying to sell something.
+]]>There has been a lot of bad news about snap recently. I’m not a fan, and it looks like other people + are speaking out + too. Linux Mint has even decided to drop snap + altogether.
+If you’re looking to drop snap here’s how to make sure it stays off your system.
+First check if you have any snaps installed. If you do you should write them down and try installing them with apt.
+snap list
+No snaps are installed yet. Try 'snap install hello-world'.
+Now you’re ready to remove snapd
+sudo apt remove --purge snapd gnome-software-plugin-snap
+Once it’s removed you can block it from being reinstalled via apt.
+sudo cat << EOF > /etc/apt/preferences.d/snapd
+Package: snapd
+Pin: origin *
+Pin-Priority: -1
+EOF
+After you have blocked it if you try to install it again (or another package tries to install it via a dependency) you’ll see the following message.
+sudo apt install snapd
+Reading package lists... Done
+Building dependency tree
+Reading state information... Done
+Package snapd is not available, but is referred to by another package.
+This may mean that the package is missing, has been obsoleted, or
+is only available from another source
+
+E: Package 'snapd' has no installation candidate
+Ubuntu devs, please remove snapd from being installed by default and let users opt-in to using it if they want. Don’t play tricks with empty packages to drive adoption of your proprietary technology, or require users to use debian repos to install packages without snapd +.
+]]>Disney+ was a highly anticipated product that launched in five countries in a week. In this talk we’ll review how one of the cloud infrastructure teams prepared for launch.
+Launching a product is stressful for people and infrastructure. +Justin will show you what to consider before a big product launch so you can be prepared for the unknown. +He will provide examples from the recent Disney+ launch to help you focus on what’s important to make your launch a success.
+How Disney+ prepared for product launch and what they learned along the way. The concepts and findings should be generally applicable to other teams and infrastructure running in the cloud.
+Rejected
+]]>If your an engineer you probably spend a lot of time using a terminal. Some of your best productivity gains will come from understanding it better and making small improvements to repetitive tasks.
+Many people know the basics for default shell shortcuts like Ctrl+a and Ctrl+e to go to the begining and end of a line. There are also a few keyboard shortcuts you’ve probably found by accident like Ctrl+s, Ctrl+z, or Ctrl+c.
+Here are some keyboard shortcuts I use regularly that you might find helpful too. I’m focusing on zsh because that’s my preferred interactive shell but many of these shortcuts will work in bash or other shells too.
+If you want more shell tips, check out my mastering zsh workshop https://github.com/rothgar/mastering-zsh +.
+We’ll start with some basic keyboard shortcuts and get progressivly more advanced. Many of these shortcuts are default behavior but some will need code added to your configuration to enable them.
+I’m amazed how long it took me to learn these keybord shortcuts and see that people still don’t know them.
+Ctrl+r: Reverse search through your command history. Kinda like pushing the up arrow with search.
Ctrl+c: kill/interupt the current running process. If you don’t want it to print ^C every time you press it you can add set echo-control-characters Off to your ~/.inputrc file.
Ctrl+d: Close your current terminal. Same as typing exit but way shorter.
Ctrl+l: clear the screen. Similar, but slightly different, to typing clear.
Ctrl+z: Suspend process. This is really helpful if you’re in your editor and you need to run a command real quick. Instead of opening a new terminal press ctrl+z, run your command, and then type fg to bring the command back to the foreground.
If you have a command typed out or selected from your history with Ctrl+r you probably want to change one or two words from it.
+First you can move your cursor back a word with Alt+b. Press it multiple times to keep moving back.
Once your cursor is at the end of the word you need to change/delete press Ctrl+w to delete it. If it doesn’t delete up to the characters you expect try setting your $WORDCHARS variable to characters that should be considered part of the word.
If you need to move a file to something like a $FILE.bak you can do that easily with {,}.
Don’t do this
+cp ~/this-is/my-long-file/name.txt ~/this-is/my-long-file/name.txt.bak
+Do this
+cp ~/this-is/my-long-file/name.txt{,.bak}
+It works anywhere in the command too! This will copy name.txt into new-folder (assuming it exists).
+cp ~/this-is/{my-long-file,new-folder}/name.txt
+There is a default shell variable $? which represents the last argument from the preceeding command (e.g. echo $?) Alt+. is the keyboard shortcut to do the same thing. Not only is it easier to type but you can push it multiple times to cycle through the last argument from previous commands.
I need this a lot. You type out a command or find it from your history and need to run it with sudo but forgot it at the begining of the line. Normally you would Ctrl+a type sudo then Ctrl+e. This shortcuts does all that with a single shortcut.
Add this code snippet to your .zshrc I prefer esc, s for the keyboard shortcut because it works well in vim mode and doesn’t clobber the default Ctrl+s shortcut.
# add sudo before command with esc, s
+function prepend-sudo() {
+ [[ -z $BUFFER ]] && zle up-history
+ if [[ $BUFFER == sudo\ * ]]; then
+ LBUFFER="${LBUFFER#sudo }"
+ else
+ LBUFFER="sudo $LBUFFER"
+ fi
+}
+zle -N prepend-sudo
+# shortcut keys: [Esc] [s]
+bindkey "\es" prepend-sudo
+
If you’re using oh-my-zsh you can add the sudo plugin
+ and the default key binding is esc, esc.
There is a really handy command fc which will open your last command in your $EDITOR. It’s great for long or multi-line command edits.
There are lots of other ways to accomplish editing the last command you can check out here +.
+To edit your current command in your editor add this snippet to your .zshrc
+autoload -U edit-command-line
+zle -N edit-command-line
+# shortcut key: [Esc] [v]
+bindkey "\ev" edit-command-line
+
Now next time you copy/paste a multi-line command from somewhere it’ll be easy to edit.
+If you need to run a command before the command you currently have typed you can cut/yank it and then paste/pop it at your next prompt with yank-pop. This gif explains it better.
+
In zsh this is called push-line-or-edit and it’s a default widget you can enable with.
bindkey '^q' push-line-or-edit
+A bonus feature is your cursor line will be in the same place after the command is pasted to the new prompt.
+]]>Working from home can be a great opportunity to focus, get a better work life balance, and not get sick. It may be a benefit of your position, or mandated by your employer.
+Either way there are some equipment you’re going to need if you want to be able to stay productive and effectively collaborate.
+Here’s a short list of tips and equipment I recommend for working from home. I’ll start the list from what I see as most critical to least and try to keep a working class budget in mind.
+I won’t recommend keyboards, mice, or laptops because many times those will be provided by your company or be a highly personal preference. I will recommend that as much as possible your get an external keyboard and mouse for ergonomics and comfort.
+Just because you work from home doesn’t mean you don’t have to talk to your co-workers anymore. If you work in the same timezones you should treat video calls like stopping by someone’s desk.
+They work best when they are frequent and painless.
+Make sure you set up your environment to allow drop in video calls for quick questions. My main tips include
+These tips are pretty basic but it’s amazing how so many people ignore them.
+Making sure you face a light source is critical to help your webcam see your face. Silhouette meetings are a fun guessing game, but you lose a lot of context and non-verbal communication.
+I don’t care how great your laptop webcam claims to be. It’s crap. Not only is the lens poor quality but the placement is terrible. Only use it as a last resort. Same goes for the microphone.
+Buy a webcam with a decent microphone is the number 1 critical thing I recommend for remote communication. The Logitech c920 is my go-to camera.
+It’s not too expensive, has a good stereo microphone, and works out of the box on all operating systems. It also has mounting options if you don’t have a monitor to rest it on.
+ +If you don’t have natural light (e.g. a window) behind your webcam the next best thing is a light ring. This one is nice because it’s flexible and has a stand but make sure it’s positioned behind your webcam and in the direction you face.
+I can’t tell you how many times I’ve seen webcams off to the side and light sources in front of someone.
+The thing that happens is once your talking to the side of someone’s face you’ll quickly become disengaged and feel like your not being listened to. You’ll get distracted and communication will break down.
+While it’s impossible to look each other in the eyes in a conference call, it helps a lot if you’re facing your camera.
+ +An optional upgrade to a webcam is a good microphone. There’s lots of options here but if you have the budget the Blue Yeti will make you sound even more clear on the other side.
+ +Monitors are in the “highly personal” categories that I almost don’t want to recommend one but I also think they’re critical for the following reasons.
+Even if you have a 15” laptop or 4K resolution screen I know very few people who can cram enough visible windows on a laptop screen for 40 hours a week. Granted, when you work from home you should focus on outcomes not hours, but that’s a completely different topic.
+Get a monitor big enough for your daily work and tall enough to raise your camera to at least eye level.
+I really like this LG because it’s true 4K UHD resolution (cheaper monitors skimp here) and it has USB-C, DisplayPort, and HDMI inputs.
+ +I went months using a tiny, cheap desk that was uncomfortable and cramped. Sure it only cost me $60, but every day I was sore and often frustrated because I didn’t have enough space to work the way I feel most productive.
+If you can afford it get a desk you’re comfortable at. It doesn’t have to be super fancy and you can probably get by with less space than you think.
+I prefer sit/stand desks because I like to stand up during meetings/calls to stay engaged and energized. It helps me keep my mood positive and makes me move.
+You can find cheaper desks than the Javis by Fully and I recommend you do if you don’t plan on using it. It’s built really solid, comes in a variety of colors and configurations, and the motors are really quiet.
+I love mine but this is in the “expensive and maybe not necessary” category.
+I recommend getting them without grommet holes because the desk doesn’t have edges and (at least for me) the holes only limited where I could put things on my desk.
+ +This one is going to depend on your company, what type of work you do, and how you’re comfortable sharing that work.
+I personally enjoy thinking through problems with pictures and explaining solutions to other people so I can better understand them myself. There’s a lot of really great tools that exist for doing this from your computer.
+Miro + is the most fully featured I’ve tried and jamboard + works good if your a GSuite customer. I find that Miro tends to favor people at a computer while jamboard favors people with tablets/stylus.
+My favorite whiteboard replacement app is Microsoft Whiteboard + but it only has Windows and iOS clients and works best if your an office 365 customer. The drawing ability is really good and it has some nice features like shape snapping and a very pen friendly interface.
+I bought an iPad mini with an apple pencil mainly to be able to do collaborative whiteboarding. To be honest I’ve only done it successfully a few times and mostly use the tablet for long form reading and as a secondary display for video calls.
+ +At the very least I recommend you pick up a refurbished iPad mini because you can get one for under $100 which is a great deal.
+My favorite diagramming tool is actually a blank sheet of storyboard paper and a Sharpie marker. These are hard to share but help me when I need to see a high level diagram of something.
+The widescreen aspect ratio is great vertically for lists too!
+ +Hopefully, you know your own preferences for food. I would recommend you get a subscription for your favorites, but don’t keep them too close.
+I gained 7lbs when I started working from home even though I only eat out for lunch once per week at most.
+There are lots of options for snack subscriptions. For me a regular subscribe and save on Amazon was enough.
+I really like Bohana Popped Water Lilly seeds
+ +There’s a lot more to working from home than just equipment. You need to have a team that is willing to try new things and management that is supportive and will encourage the team to work together in isolation.
+There are lots of great articles about remote working practices. I hope you can better understand some of the hardware you might need to support your new flexibility.
+]]>What Disney did to prepare for Disney+ launch
+Launching a product is stressful for people and infrastructure. +Justin will show you what to consider before a highly anticipated product launch so you can be prepared for the unknown. +He will provide examples from the recent Disney+ launch.
+Before a product launch you need to consider more than just load testing and scale. In this talk Justin will review the year leading up to Disney+ including:
+We’ll review how preparations worked and what the future holds.
+Withdrawn
+]]>The fine folks at Palm offered to send me their new Companion phone + in exchange for writing a review. I am grateful for their generosity and wish to fulfill my portion of the bargain below.
+First of all, I have a long history of Palm phones. My first Palm device was a Palm m100 I used to keep myself organized in college. I didn’t have a computer so it was a lifesaver and also a burden because I didn’t have a computer.
+I had the Treo 700w which was equally amazing and awful, and I loved my Pre 2, Pixi, and Veer. I was an avid fan of webOS and Palm for years before HP killed it.
+And here we are. Palm the company has been diced and sold to various companies for whatever value could be extracted from decades of hard work and innovation.
+The Palm Companion seemingly came out of nowhere. This time Palm had a new mission.
+Gone are the industry changing task switching or the “synergy” and “just type” productivity features. Now Palm wants to sell you a phone you don’t use.
+Seriously.
+Please buy this phone, and forget about it. Go live your life.
+The real one.
+Right in front of you.
+And to that I can wrap up this entire review with two simple words.
+Mission accomplished.
+Read on to see why.
+The Palm Companion was originally marketed as a, well, companion to your main phone. It was only offered on Verizon Wireless and would work with your same phone number as your “big phone”.
+Ideally you’d take out this phone when you went out and needed some assurances you could make a phone call.
+It was later offered as an unlocked device for any carrier that supports the cellular bands it has.
+I have Google Fi so I got the unlocked version knowing it’s not one of the Google Fi “supported devices” which means some things like WiFi to cellular switching and some networks aren’t available.
+I ordered a SIM card and used the Companion full time for about a week and a half to get enough experience to write this review. During that time I minimally set up the phone with personal email, 2 factor apps, Twitter, and a few other things I need, or at least I thought I’d need.
+Let’s get the easy stuff out of the way. This thing is tiny!
+Here it is next to my Veer. Yes, I still have it.
+
Something this size has trade-offs. There is only 1 button on the side of the device which does triple duty as power on/off, long press (standard Android long press), double press shortcut can do different things configured in the settings. I configured double press to open the camera because that’s what I’m used to now with the Pixel.
+Sometimes only having one button was really annoying because there’s no hardware volume control. There’s a volume slider in the notification shade which works, but it’s a pain to pull the phone out of my pocket, unlock it, drop the shade, and adjust volume when my environment gets louder or quieter.
+The screen is obviously small and hard to type on with the default Fleksey keyboard. I found swipe with Gboard to work pretty well and I was able to text, tweet, and take notes without too much frustration.
+Make sure you adjust the keyboard size in the settings to make it a little bit bigger. Sometimes Gboard refused to get the words I wanted with swiping and I had to tap out a few words. Lots fo mistypong you kust get usde to.
+The camera was able to take pictures, but don’t rely on those pictures being good at low light or high quality in the current market. Here are some examples.
+

My biggest hardware problem using the Companion as my main phone was the battery life. I could use the phone for 30 minutes and watch the battery drain. Fear of killing the battery was the biggest thing that kept me from using the phone.
+This is part of the mission of the phone so maybe it worked, but if I was serious about making this my full time phone I would get one of the extended battery cases with wireless charging. I suspect that case would make the phone easier to hold (thicker) and with the ease of wireless charging and added capacity lower my anxiety about going out with a dead phone.
+Another hardware limitation that kept me from using the phone is it doesn’t have a fingerprint sensor. It has an option of face unlock but it’s really slow and pattern unlock is hit or miss on such a small screen.
+One great hardware feature that made me not use the phone was the fact that I simply forgot it was in my pocket a lot of the time. I didn’t realize how cognizant I was of my phone being in my pocket until it disappeared.
+Even with a small case the phone is practically invisible in my pocket and I thought I lost it multiple times.
+
I occasionally had other seemingly random hardware problems with bluetooth and WiFi not connecting to devices or needing a power cycle to wake up. Sometimes I had signal and couldn’t use data.
+My guess is most of these problems are because of optimizations for low power and using a limited band phone on Google Fi. I got used to it, but not something I would want to give to a less technical savvy person.
+The best part of the hardware is the reactions people give when they see you using the phone or try to scan a pass with it. On more than one occasion people thought it was a joke and then were amazed at how capable the tiny device is.
+Much to my chagrin the Companion doesn’t run webOS (RIP). It runs Android 8.1 which seems ancient compared to the current Android 10, but in reality not a lot has changed.
+Would I have liked to have the latest version of Android? Sure. Was there anything I wanted from Android 10 I couldn’t do in 8.1? A couple.
+Mainly I think the Companion could really benefit from the gestures in Android 10. Much like the power button, the home button on the Companion does triple duty of back, home, and multi-task with single, double, and hold taps. Left, right, and up swipes could be really useful, but execution on such a small screen may have problems.
+The second feature from later versions of Android is do not disturb. Palm has a whole #LifeMode brand and even put a button for it in the notification shade. From my experience do not disturb is better and while I used #LifeMode regularly I missed the flexibility of allowing some contacts and apps to send me alerts.
+I tried some alternative launchers like lessphone + and other lightweight options, but I didn’t like any of them as much as the default launcher. The default launcher was fast enough to make it usable and flexible enough to get out of the way. It reminds me of Windows Mobile 6.5 “Honeycomb” launcher which was terrible, but I got over that negative association and it worked well.
+While the launcher was fast most apps were quite slow. I managed to avoid installing slack or work apps which helped me cut down on what I’m sure is a frustrating experience. Overall, I was quite surprised by how little I actually needed to install on my phone.
+I often saw apps “reload” when I would multi-task and browser pages would lose my place as they reloaded into memory. This was mainly frustrating when I took the phone on a 2 day trip and only brought the Companion.
+I brought a battery pack which was comically bigger than the Palm itself to make sure I wouldn’t be stranded. The device held up well with boarding passes, getting rides via rideshare apps, and some light navigation.
+There were some display issues with apps (text in the wrong places) and some large images on web pages simply refused to load. In reality, most of that didn’t matter. I used the phone less often and I was fine with some things not working.
+The lock screen had a built in app launcher which I would activate accidentally all the time. I honestly don’t know how I’m supposed to launch it, but it often got in the way when trying to unlock the phone.
+One huge benefit of small devices and Android in general is I don’t need to look at the screen or use the device directly for a lot of tasks.
+Headphones with play/pause controls, voice assistant, and Android Auto all made having a tiny device pretty easy to use without the downsides.
+Android Auto specifically was a lifesaver because I can’t imagine playing music directly from the phone while driving. It had some problems setting up (initial app installs took a while) but worked great afterward.
+If I could wish any improvements on Palm Companion 2 they would be: - Fingerprint sensor - Bigger battery - Newer Android
+Removing the front facing camera to fit a fingerprint sensor on the back and adding a volume rocker would be nice.
+In my opinion the device doesn’t have to be this small to achieve Palm’s goals. Make it a little bit bigger and thicker and it could alleviate a lot of my anxiety about this phone.
+My guess is a 4” screen (currently 3.3”) would make the Companion drastically more usable and could probably fit more battery, a faster processor, and maybe even a camera that’s worth taking pictures with. It doesn’t need to be top of the line but could compete much more in a crowded Android market.
+The iPhone SE sold really well and I suspect the SE 2 is going to be even better. It’s not miniscule but solves trade-offs of a small device with power and battery requirements for normal humans.
+I understand a bigger phone wouldn’t be a #LifeMode phone, but it’s still niche compared to most flagship devices put out these days. As Android devices get weirder with folding displays and co-processors a nice size phone without 4K, HDR, AI could fit a lot of needs.
+After using the phone for a while I switched back to my Pixel. Part of the reason is because I have certain requirements to use my phone frequently for things like 2 factor authentication.
+Another reason is because I occasionally am on call for work. I have things like PagerDuty and need the ability to be on extended phone or video calls and available via Slack. Those requirements aren’t compatible with the idealized #LifeMode Palm produced in the Companion.
+I love the fact that Palm is back making phones. I love that they’re trying to curb our addiction to our phones. I love the reactions from people who see it.
+Most of all I love that it’s different. The current crop of rectangle sameness feels so numb.
+The new dual screen flagship phones with 80 cores and $1500 price tags are really neat, but they feel out of touch with what people need or can afford.
+If Palm can stay true to their mission I’m interested where it leads them. It might take a few tries, and the Companion is a great first step and a worthy secondary phone.
+I absolutely would take the Companion out with me if I wanted to have a memorable experience with family and friends and didn’t feel the constant requirement to document the experience with pictures. Sometimes limitations are liberating.
+]]>Launching a product is stressful for people and infrastructure. +Justin will show you what to consider before a highly anticipated product launch so you can be prepared for the unknown. +He will provide examples from a recent service offering as well as discuss lessons learned.
+The ecosystem currently focuses too much on tools. By providing a real world example from a service that does not use Kubernetes I hope to help people be successful no matter what their technology stacks look like. +Disney+ launches the week before Kubecon and I will show what we did to prepare as well as what expected and unexpected things happened during launch. +I might not be able to directly say the example service is Disney+ (Disney legal would probably say no), but I will extract the things we found beneficial and give some real world examples of why.
+rejected
+]]>Launching a product is stressful for people and infrastructure. +Justin will show you what to consider before a highly anticipated product launch so you can be prepared for the unknown. +He will provide examples from a recent service offering as well as discuss lessons learned.
+The ecosystem currently focuses too much on tools. By providing a real world example from a service that does not use Kubernetes I hope to help people be successful no matter what their technology stacks look like. +Disney+ launches the week before Kubecon and I will show what we did to prepare as well as what expected and unexpected things happened during launch. +I might not be able to directly say the example service is Disney+ (Disney legal would probably say no), but I will extract the things we found beneficial and give some real world examples of why.
+accepted (Disney PR cancelled)
+]]>Everyone wants a service mesh because of the benefits they bring. Few people consider the costs or alternatives. Justin will look at how the internet has managed to get by for so long without it. When can you use a load balancer instead? What other options do you have? Are services meshes just hype? We’ll take a step back and think through the problems and solutions available so you can make your own decisions.
+Case studies and marketing material are great, but people need to make decisions for themselves. This talk will help them understand the pros and cons of an array of different options. Load balancers, client libraries, and other tools that have been used to scale internet sized services. +I will provide clear examples of how the alternatives work and when they should be used and what limitations they have. Attendees should come away with a clearer sense of what options they have to solve their problems.
+service mesh
+Justin loves open source almost as much as he loves community. He is not a fan of buzz words but searches for the patterns and benefits behind technology trends. He frequently shares his findings and tries to disseminate knowledge through practical lessons and unique examples. He is an active member in many communities and constantly questions the status quo. He is relentless in trying to learn new things and giving back to the communities who have taught him so much.
+rejected
+]]>An engineer’s $SHELL is likely one of their most used tools. However, it is rarely mastered because it’s invisible in nature. Knowing how to use aliases, variables, and functions is an important start, but there are many more features that can be used to boost your productivity and help you be better at your job.
+In this training Justin will cover some of the more advanced topics of zsh and how you can use them. This will help you save time at a prompt and be a better shell user for fun and profit.
+if [[ "$SHELL" =~ "zsh" ]]; then
+ attendees=$((attendees + 1))
+else
+ chsh -s /usr/bin/zsh
+ exec /usr/bin/zsh
+ attendees=$((attendees + 1))
+fi
+Justin is a co-author of Cloud Native Infrastructure and loves open source software and participating in healthy communities. Currently he makes developers more productive at Disney Streaming Services.
+It is assumed attendees know about aliases, functions, and variables. We will look at why someone should use zsh over other shells (also mention it’ll be the default shell for macOS) and how to configure zsh without a framework like oh-my-zsh. We show advanced zsh topics and practical usage including global aliases, parameter expansion, custom widgets and key bindings. We’ll also talk about command line movement, quickly editing history, and ide-like functionality in your terminal.
+Why zsh (10m) +prompts (10m) +Files, navigation, and completion (15m) +Advanced aliases, functions, variables usage (20m) +History and replacements (10m) +Widgets, hooks and key bindings (20m)
+Mastering your shell is a high leverage skill. The more time you can save on small repetitive tasks the more time you’ll save to do things that matter. This training will teach you practical zsh skills for every day terminal usage and teach you how it works without relying on a zsh framework.
+Accepted
+]]>strange software
+In the early days of the web you could get a job anywhere with “HTML” on your resume. Having a website meant you knew networking, DNS, how to code and probably systems administration. Building basic websites has gone from elitist hacker to drag and drop. This empowered millions of people to have a presence on the web without needing to learn CSS. +The internet has changed over the years. Websites are no longer the definitive source of engagement and new generations don’t own computers. App development is the new HTML and voice assistants are an emerging form of customer acquisition. New platforms are empowering millions more people to create mobile and voice apps without needing to code. In this talk we’ll look at two examples of getting started with simple ideas and how you can use these new platforms.
+I’ll be showing how to build a mobile app with https://www.glideapps.com/ + and a voice assistant app with https://www.voiceflow.com/ +
+I’m not affiliated with either company but I’ve built personal apps using both platforms.
+Justin is a tinkerer who frequently plays with new technologies and despises endless yak shaving. He is an open source advocate and loves to engage with communities and learn new things. Currently he builds infrastructure and makes developers more productive for Disney Streaming.
+rejected
+]]>Abstract: Infrastructure has come a long way from servers in closets ??. The servers are out of the closet and software defined in the cloud ??. They’re so fabulous they’re serverless ?. Now they’re breaking all the rules and moving to the edge. Next thing you know they’ll be everywhere and nowhere! Let’s take a trip down memory lane and peek into the future ? for what infrastructure is blossoming into ? and how it impacts the software we write.
+rejected
+]]>other
+In this workshop we’ll start with a fresh zsh configuration and work our way up to advanced keyboard shortcuts and command line usage. We’ll build from basics to show attendees how they can combine commands and shortcuts to meet their needs. We’ll be building a .zshrc file as we go to make continued usage, portability, and tweaking easy. Various tools such as sed, awk, and jq will be covered as needed for examples. Attendees should be familiar with basic to intermediate shell usage and are welcome to bring their own tips/tricks to share.
+Justin is a long time Linux desktop user who believes this is the year of Linux on the desktop! He’s also a pragmatist and wants you to use the tools that make sense for you. He’s a co-author of Cloud Native Infrastructure and loves open source communities and projects. Currently he builds infrastructure and makes developers more productive for Disney Streaming.
+rejected
+]]>I’ve been working full time remote for Disney Streaming for the past 6 months. This is my first full time remote position.
+While I’ve had lots of experience working in open source and tons of experience with communicating asynchronously doing full time work remotely is different. I wanted to share some things I’ve learned so far.
+It’s important to note my life situation is likely different than yours. I’ve been working in technology for >10 years, I’m married, and I have 2 kids (one less than a year old).
+I’m more of an extrovert than an introvert and love meeting new people.
+Even with daily meetings via video calls I still don’t get the human connection I did when going to an office. It’s hard to go out after work hours because I have a family I want to spend time with, and I live far enough away from major tech hubs that I cannot meet friends easily for lunch. On the occasions I have driven to see friends for lunch it adds 3+ hours to my day (1 hour drive both ways and time for lunch).
+On the other hand, I get lots of time with my family which is amazing! I love my family! I don’t get the mental stimulation from them that I do from talking with co-workers or friends, but the time spent with them is more rewarding long term.
+Here are some other thoughts from the past 6 months.
+I hope some of these things can help you understand what it might be like working remote full time. At this point in my life I can’t see myself taking another job that requires me to work in an office full time.
+But that’s not to say there aren’t hard things and difficulties.
+If you have any insights on how I can make some of these things better or what you have done to make being remote better for yourself I’d love to hear it. I’m available on twitter for any comments or further discussions @rothgar +.
+]]>++The only sustainable competitive advantage is an organization’s ability to learn faster than the competition. – Peter Senge
+
I think about how companies get a competitive advantage a lot. While I agree with the above statement I don’t think it’s enough.
+I’ve worked long enough to know learning something isn’t the thing that gives you a competitive advantage. Acting on what you’ve learned is where the real value lies.
+I’ve seen organizations learn things at the micro (individuals) and macro (divisions) levels and still fail at executing. Sometimes it doesn’t matter if you know the right thing to do. If you can’t execute on the new thing you’ve learned then it would have been better for you to never know it.
+It’s also important to not limit where ideas come from. To quote Ratatouille “Anyone can cook” is the idea that great cooks can come from anywhere, but that’s a story for a different post.
+The thing you have learned will be a worm in your brain that will eat away at every decision you make until you can do the right thing.
+Rate of new features or time from learning to execution could be a better measurement for innovation at a company, but that incentivizes the wrong things. If you look at “high performers” in the State of DevOps Report + you’ll see time to deployment is only part of the equation. Short mean time to recovery (MTTR) also plays a huge part in what makes a “high performer.”
+Measuring how fast you can act on ideas pushes you to learn and produce things as quickly as possible. Throwing things at the wall to see what sticks. Learning from the things that stick and then adding to them.
+The problem with this is all the stuff that didn’t stick is going to leave you with a lot of insurmountable crap you have to get over. If you keep throwing things at the wall more and more won’t stick over time.
+This is the point where companies pivot and start throwing things at a new wall/industry with a little more knowledge of where to start.
+Sometimes that’s okay.
+You can just leave all the old stuff behind. Light it on fire and walk away.
+This tends to work well for companies that are strictly project based and not product based (usually non-software companies). Companies that make physical products or things like movies can more easily start anew with each endeavor.
+Businesses with sustained products don’t have that luxury, nor do companies with recurring, paying customers. They have to support their existing customers on their existing wall even if it’s now 3⁄4 covered with crap that didn’t stick. Disrupting your own customers is the essence of The Innovator’s Dilemma.
+What could be a better measurement for tracking innovation?
+What is actually important is how fast you can clean up all the stuff that didn’t stick. In other words, how fast you can successfully retire things.
+Retiring things successfully is a lot of work. You can’t just turn something off or stop supporting it.
+To be successful you have to measure usage, update code, or change processes. In most cases (when you have customers) you also need something to replace the old thing.
+If you had a process that no longer serves the business needs at its current scale how long will it take you to replace that process with something that is more suitable for your current needs? Even if you have a replacement, how quickly will it be adopted and the old process retired?
+What about retiring a v1 API path? How many people do you have to communicate that to? How many clients and lines of code do you have to update before you can delete that path? Do you need to push out code changes to gain insights into usage?
+Companies that learn the fastest can move faster than others only up to a point. Sooner or later all the things you’ve learned don’t scale. All the things you’ve learned become a human scaling problem.
+You have to shed to scale. The faster you can shed old learnings the faster you can act on new ones.
+If you just turn things off you’ll lose trust. You need to make sure people are ready to accept the new things. This means bringing the laggards along with you or forcing them to go somewhere else, if that’s an option.
+Being too early is the same thing as being wrong. This is why measuring a “successful retire” is important.
+So how can you successfully retire things? There’s only two ways I’ve found.
+Users hate number 1. Owners hate number 2.
+Doing the work for your users is often faster and makes your users like you more. It also can’t always be done and often leaves systems fragile or unchangable in the future.
+Making users do work is slower and cannot be done often. If you keep pushing work onto your users the service/process/thing you offer won’t solve their problems and they’ll leave, assuming they can.
+Both approaches need a balance. Knowing which one to choose requires you to learn about your users and the thing you want to retire.
+Imagine we want to change a process to request access to cloud resources. Let’s pretend our current process requires opening a Jira ticket with a template and then evaluating and manually acting on that information.
+Can you, the owner of the process, do the work for your users? Yes. You could automate the manual work you have to do after a ticket has been opened. This will save you a ton of time and require no work from your users.
+Maybe your users want to also save some time so they create a script that opens tickets when new people are hired. Great, but now we have two automated systems using Jira as a queuing system Trust me, this happens.
+It would save time on both sides to create a new process and ask users to do work to learn/use it instead. Now that automation exists the process is much harder to change and will require work.
+The company who can understand their users and what things no longer serve their purpose the better they will be at innovating. The faster they can get rid of the things holding them back the faster they can move forward.
+Balance is important. If you get rid of things too fast you’ll end up with no customer trust + and new walls will be incredibly difficult to get things to stick.
+The only sustainable way to learn is from data. You can sometimes use existing data, but if you expect to grow you need to change. Change requires new data and new hypotheses.
+Measure. Test. Retire. Repeat.
+Free yourself from the old things you’ve learned. At some point you have to.
+Innovative companies will do this at the right time and in the right way repeatedly. Companies that don’t sunset old services will eventually hit limits (usually with people) and become fragile.
+Or maybe we’ll find new ways to organize people and none of this matters.
+]]>Here’s to us who moved because we couldn’t afford to stay. Those who were on the receiving end of church meals and charity gifts. The thrift store clearance shoppers.
+Here’s to those of us who never had a role model. With moms in rehabs and dads in counseling. With broken families and hidden scars. Constantly let down and habitually in trouble.
+Here’s to the necessity of friends. Overstayed welcomes, dinners, and loose change sustained us. We are forever grateful to those who gave without questions or conditions.
+With estranged siblings and no hope of escape. Matress on the floor and lucky if we had a door. Relentlessly resistant but knowing nothing else.
+You are not alone. You are a lone survivor.
+We are here.
+We work hard to prove to ourselves we matter. We work hard because we have no choice. We are self-taught, first generation graduators.
+We’re not on top, but above all odds.
+We don’t know what we want to be, but we know what we don’t.
+You are not your past. You have everything to offer because you have nothing to hold back. You belong just as you are.
+You find family in unexpected places because you are expected there.
+Forgive the mistakes. Distance from the malice. Embrace love. Even if you’re not sure you’ve ever experienced it before.
+You matter not because of what you’ve done, but because everyone matters. You can prove that with your actions.
+Experience gives you perspective. Learn from the experience of others. Share yours freely, humbly. It’s not weakness. It helps more than you can know.
+Together we are strong. Our experiences guide us. We can make a difference when we are different. Without diversity we lose.
+Push others to be better. Be patient to let them be themselves. Their contributions are better than your assumptions.
+Be humble.
+Be kind.
+Be love.
+To those who don’t identify with this that’s ok. You have different successes, failures, and struggles. That’s good. Please bring them to the table. We need you.
+Find where people understand, and be patient with those who don’t. If you’re not accepted move on. You’re too important to be discarded.
+Here’s to your journey. Here’s to your happiness. Here’s to what you can give and what others can give to you. Here’s to you.
+]]>I am not an expert. I have co-authored a single book in 2017 called Cloud Native Infrastructure + for O’Reilly Media. Many people have asked me what it was like so I will attempt to explain the process, time investment, and financial incentive here.
+This was my experience. If you have written a book, or would like to, I promise your experience will be different. Nonetheless, I hope you can learn something from the things I learned.
+The process was about what I expected. I was introduced to Brian, our first of three editors, from someone I knew who was already writing their third book. They thought I might be a good fit for what they were looking for so they made the introduction.
+
I thought about it for a couple weeks and then submitted a formal book proposal which entailed filling out a Word document template and emailing it to the editor. I didn’t hear back for about 3 weeks and then, after a follow-up email, heard the proposal was approved. After a kick-off call it was suggested that I find a co-author to help write the book. I had a week to find one and then needed to sign a contract with O’Reilly for dates and deliverables. I interviewed a few people and
+ +and I complemented each others skills perfectly for the content we wanted to cover in the book. She agreed it sounded like a good topic and she was excited to take on the challenge.
+The contract seemed fairly standard and focused around content ownership and royalties split. The default split between authors is 50/50 which we stuck with. The contract stipulated that Kris and I own the copyright for the content, but O’Reilly has exclusive rights to use the content any way they see fit throughout the world now and in the future for the duration of the copyright.
+Once the contract was signed there was a steady pace of work as we both figured out how to lay out content and what we should write about. O’Reilly provides a platform called Atlas for writing which is quite good. You write in plain text AsciiDoc + and then O’Reilly’s Atlas platform can generate a PDF, or other formats, via the web interface or API. We both used atlas-cli + to generate PDFs as we wrote. Generating the PDFs was a good feedback loop on the content. It helped make sure formatting was right and also allowed us to take a step back to read what we wrote.
+Atlas works as a remote git repo but Kris and I chose to mostly work out of a private GitHub repo. We originally envisioned making pull requests to collaborate on each other’s content but that didn’t happen as much as expected. Atlas has editing tools and some additional features available but we mostly just used it as a git remote URL.
+On March 1st we were assigned our cover animal which Kris and I named Andy O’Connor the Andean Condor +. We were pretty excited to see the cover for the first time even if the subtitle went through multiple revisions. We didn’t get to pick the animal or the picture. We were told up front we wouldn’t get to pick the animal so we knew what to expect. We were also told that Tyrannosaurus Rex and unicorns are not allowed.
+
We kept writing until the 1/2 draft was due in early June. We turned it in and got less feedback than we expected, but it was still good to have a fresh set of eyes looking at it. We didn’t like what we had created. We had written almost 6 chapters and threw away 3 of them. The first two were heavily edited and the remaining chapter was trimmed down significantly and turned into an appendix.
+We had some more planning meetings and came up with a revised outline that we submitted to our editor for review. By this time we were on our 2nd editor who wasn’t very familiar with the project so we got very little feedback and went with what we had.
+We kept writing with minimal interactions with our editor until we were really close to needing the full draft due. I had sent select chapters to friends to look at and tried to incorporate the changes they suggested.
+The first Tuesday of September the full draft was due and then went into a review process. There were technical reviewers we were able to suggest but mostly O’Reilly pulled from a pool of their trusted reviewers. We got minimal feedback from most of them (a survey form) and one returned notes on the PDF. We had a week to make edits. During this time the draft was made available as a preview on Safari books. In retrospect I wish we had posted preview chapters sooner which was something our first editor suggested, but we were both too embarrassed to follow through.
+It wasn’t enough feedback for me so I reached out to more people and sent them chapters looking for someone to tell me it sucks and why. Luckily, I found someone who would give me the harsh feedback I wanted and I had about 3 days to incorporate their changes into the book before it went off to post production.
+The last push was very difficult and stressful. There were a lot of big changes on the last weekend which was a risk, but I think in the end made the book better. The final weekend we moved some chapters around and wrote a chapter from scratch for content we felt was missing.
+Post production was handled by non-technical, professional editors for grammar, spelling, and general readability. I believe the first PDF came back with more than 1300 edits. Overall there were more than 2000 changes made during post. I later found out this amount of edits is fairly standard for our book length. We had about 3 weeks of emailing large, heavily notated PDFs back and forth which was no fun compared to the plain text git workflow of writing.
+Post production took about a month to complete and then the book went off for printing. At the same time it was posted on Safari Books Online and immediately available. We each received 6 copies of the book in the mail shortly after it was available for sale.
+All in all I worked from Feb — Oct for roughly 5 nights a week at 2–3 hours per night. I also worked about 3 weekends non-stop when a draft or final edits were due. Roughly I’d say I worked about 500 hours total. That was only my time and doesn’t include Kris’. I was lucky to have a co-author to share the load.
+Some people have asked how I found motivation to keep writing. I’m a fairly driven individual and the deadlines in the contract were enough for me to put in time most nights. I wasn’t motivated enough to meet the original 250 page goal, but I was happy with the content we were able to cover and how much we accomplished.
+
Not a perfect depiction of work done but shows when activity happened
+Kris had a different creative process than I did. She was better at mulling over a topic in her head and putting it all down in one sitting; often the week before one of the deadlines. This made me nervous on multiple occasions and was probably the biggest thing I stressed about. Everything was submitted and completed on time, but I would suggest you have a sense for how you and your co-author work together at the beginning instead of the week before a project deadline.
+Throughout the writing process I felt like I finished writing multiple times. Once when the final draft was due, once when technical reviewer’s feedback was incorporated, and once at the end of the post editing process. In each case it meant we got to take a break from writing while we waited for feedback.
+At the end of final edits I was done (contractually and mentally). I had read through the entire book at least three times and much of the content was starting to lose meaning. After sending the final edited PDF I wanted to stress about missing an edit before going to bed, but I was too tired to care.
+O’Reilly provides an affiliate program + which was terrible to set up and in the end hardly worth the time. You get a cut from all sales that go through your link but I have never received any money from affiliate book sales. The only money I got was when someone used my link and then bought a ticket to an O’Reilly conference. To date only one person has done that and I received $200. If anyone is looking to buy tickets to Velocity or OSCON feel free to click the O’Reilly book links at www.cnibook.info + and then buy a conference ticket. 😊
+I attempted to set up an affiliate program for Amazon but my application was denied. Amazon offers an author central site to create a 1998 inspired author profile page + and an out of date book sale statistics and rankings. I’m really not sure the point of creating the Amazon author information outside of claiming the book(s) you author and confirming that you have a terrible book rank.
+While setting up these accounts is when I created the cnibook.info website and @cnibook twitter handle. Luckily the website is a static page hosted on GitHub so there is no recurring costs. The twitter account I still maintain but has minimal interactions.
+
Google Analytics for cnibook.info
+The landing page was a valuable use of my time as it gave a URL to point people to for anyone searching for the book or wanting more information. I would suggest anyone writing a book spend a night to register a domain and set one up. I launched it on August 31, 2017 and it has over 4,600 visits which is terrible by most website standards but good as a place to funnel users for info.
+During AWS Re:Invent I decided it would be fun to try a Twitter campaign to try and get some interest in the book. I set a limit of $50 which bought 7,648 impressions (people saw the tweet). This includes 161 engagements (clicked on the tweet, RT’d, or favorited), and 37 clicks (clicked the link). I promoted the tweet above and I don’t think it was worth the money. I don’t believe it generated any sales and cost $.31 per engagement. After that campaign I had another tweet that was retweeted by a friend (I didn’t ask them to do it) with a lot of followers and it had more engagements than the paid for, promoted tweet.
+
Twitter campaign breakdown
+The book was originally supposed to be 250 pages and would have cost $59.99. Instead it was only 160 pages and cost $39.99. Because we co-authored the book we each got 5% of revenue for physical books and 12.5% for ebooks and digital access (10% and 25% for individual authors).
+This breaks down to we each get $.99 for a physical book and $.46 for an ebook. Safari Books Online (SBO) pays based on how many pages are viewed and how many people have added the book to their personal bookshelf (I never knew before why that was a thing). So far I have received $539 over 5 months for SBO.
+The payments come on the last day of the month after the month when O’Reilly receives payment for the sale. If you bought a book on February 1st, $.99 was added to the check I received on March 31st.
+From December through March the book has sold 1337 copies. I have no idea how well other books in this category sell. This total also includes 2 book signings at conferences that were sponsored by the CNCF + (Thank you!) which was roughly 150 physical books total. On average, the book has sold 222 copies per month which is greatly skewed by the first month which had 930 sales. The last month (March) had 34 physical book sales. I suspect that number will go down even more over the next few months.
+Sponsorships was an unexpected source of income. We have been lucky enough to have 3 sponsors so far. The sponsor pays O’Reilly for exclusive rights to provide a PDF and optional print version of the book. The company gets to put a forward in the book that Kris, me, and an O’Reilly editor approve. Once the sponsor completes their contract with O’Reilly they can do whatever they want with the books. Usually, the PDF gets put behind a web form so you fill out your email address and the company uses it for marketing services and getting customer leads. Physical books are usually given away at conferences where they can scan badges.
+I have no idea if this model is financially viable for the companies but I would assume so. I’ve asked for download numbers but was never provided any and the sponsors are not contractually obligated to give numbers. I’m not sure how many books get sponsors, but it helps a lot with raising awareness of the book because companies have more of a presence on social media and have budgets for advertising.
+Each full book sponsorship for one month nets me $3,705 and partial sponsorships give an amount based on percentage of the book sponsored (e.g. 5 chapters in a 10 chapter book is 50% sponsored). That’s much better than I expected because a one month full sponsorship is more than all other sales combined. I’m not going to say exactly what percentage I get from the sponsorship simply because I don’t want to disclose how much any of these 3rd parties pay and their finances are not my business to disclose.
+There are also some other sponsorships that I think count as ebook sales but I never got a clear answer how royalties work for those. Book licensing incurs a small payment but I’m unclear how that is used. From my statements, three people have licensed the book or excerpts from it which has netted me $2.37.
++ + +Just added “Cloud Native Infrastructure” by @rothgar & @Kris__Nova to our free eBook offer. Thanks @OReillyMedia! https://t.co/y3KuDFB5hp pic.twitter.com/VwDSBU877Q
— The Cloudcast - Cloud Computing (@thecloudcastnet) November 17, 2017
My April 2018 statement (sales from December — March) says I’ve made $11,554.15 which roughly breaks down to $23 per hour for the estimated 500 hours of work. Without the three sponsorships that would have been $5.29 per hour. Luckily that number only gets better with time. I’ve heard 2nd editions are a better rate per hour because they have less time investment with similar sales as the original, but I don’t have any experience.
+Going into this project I had a rough estimate in my head to make about $2000–3000 so this is much better than I expected. Set your expectations accordingly.
+I’m extremely happy with the how things have turned out. We’ve got a lot of great feedback and some average reviews on Amazon + (please leave us a review!). I’m grateful that people are reading it and I hope it’s helping them in some way. We worked hard and wanted to help engineers get better at running infrastructure.
+I learned that you can’t just write a book and expect it to sell. There needs to be a lot of effort (a.k.a. budget and time) in marketing and it takes more than just individuals with twitter accounts to get the word out. It has been humbling to have friends and organizations help us promote the book and even pay to put the book in people’s hands.
+So far I know of only one grammatical mistake, which is a win in my book (pun intended).
+The book has provided a few other opportunities that I probably wouldn’t have had. So far I’ve done a couple podcast interviews, spoken at a few events, did one webinar, and have had a few opportunities for more writing projects with O’Reilly (some of which I’ve taken).
+Would I write another book? Not for the foreseeable future. I would like to update Cloud Native Infrastructure to keep it fresh with current industry trends, but another book from scratch is not a year long project I’d be looking forward to at this time.
+I’m very proud of the work we accomplished and glad we wrote it. I can’t think of anything else I would have done with that time that would have been better spent.
+I’d love it if you bought a copy of the book using the affiliate links at www.cnibook.info + and if you’ve already read it please let us know what you think. We’re available on twitter rothgar + and krisnova +. We also love pictures of the book with your pets. It makes us smile. 😄
+I hope this has given you some insights into what it takes to write a book and what you can expect if you do it.
+This story is published in Noteworthy +, where thousands come every day to learn about the people & ideas shaping the products we love.
+Follow our publication to see more product & design stories featured by the Journal + team.
+]]>TL;DR I’d love if Google made the ChromeOS experience better for professionals but I have little hope they’ll figure it out any time soon given the issues I experienced.
+I’ve been using a Pixelbook as my main mobile computer for a little over a month now. I have long wanted to use ChromeOS as my full time OS for a number of years but it always seemed to not be ready. I was finally ready to jump in knowing there would be limitations, but I wasn’t prepared for some of the limitations and bugs I found. Here’s my experience.
+Just a quick note about how I use mobile computing devices. I have always liked small mobile computing devices that are used more as thin clients to a powerful desktop or VM. I have been using computers that way ever since I discovered SSH and RDP. I also had a goal of using ChromeOS without enabling developer mode or installing Linux/Crouton. So far I have managed to get by without developer mode, but I’m not sure how much longer that will last.
+Let’s get this out of the way first. The Pixelbook hardware + is very premium. The screen has great resolution, the keyboard feels really nice to type on (maybe a little bit too loud), and the trackpad hardware has never let me down. The rubberized palm rests help a lot when using the Pixelbook over an extended period of time.
+The Pixelbook pen feels great and drawing on the screen works as well as anything I’ve tried on an iPad Pro. The replaceable AAAA battery makes the pen heavier then the Apple Pencil and the pen is slightly thicker because of the diameter requirements, but overall the hardware, pressure sensitivity, and angles while drawing work better than I expected. The fact that there’s a Google assistant button on the pen is a sign that it’s not designed to be a professional tool but rather a casual user gimmick with integrations into Google services.
+Some other surprisingly great things are the calculator app, the keyboard shortcuts for switching user accounts (ctrl+alt+.), the application launcher, and the way the UI switches from mouse/keyboard to a touch interface seamlessly.
+
Calculator will automatically expand options based on window size
+Here’s just two example of how the interface changes when you touch the screen. Normally I have the application shelf hidden and docked on the bottom. If you start using the pen to touch the screen or drag a window it will automatically unhide so you don’t have to swipe, jab, or poke to reveal it. If you have a lot of tabs open in chrome they will automatically change from tiny little tabs to larger scrollable tabs.
+
Standard chrome tabs
+
Touch friendly tabs
+These are annoyances but not terrible bugs or deal breakers for me using ChromeOS. Some of them may have fixes I’m not aware of; if they have fixes, I could not find them.
+It’s near impossible to edit pictures in ChromeOS. The fact that I couldn’t figure out a way to join the two screenshots above into one picture just goes to show how limited it is. All the apps I tried failed for one reason or another. Many don’t run at all.
+Screenshots on ChromeOS are fine (image annotations via Google Keep) but there’s no native way to record a video or GIF of your screen. There were a couple + apps + that claimed to work but they all seemed very shady and user data mining treasure troves with near unlimited access to my system I wasn’t ready to give them.
+Typing emoji is really bad. You have to manually add it as an on-screen keyboard and then using it is very buggy. It doesn’t scroll with the trackpad and sometimes doesn’t type at all. I really miss Rocket on MacOS + and emoji selector in GNOME +.
+
Speaking of soft keyboards, I touch type with the Dvorak layout which is very well supported. Unfortunately, Google thinks if you have muscle memory for touch typing that also means you type with an on-screen keyboard with the same layout. For me that’s not the case and supporting different layouts for hardware and on-screen keyboards is nonexistent in ChromeOS. What’s worse is it is something iOS has supported from the beginning.
+How is there no way to see a calendar from the ChromeOS GUI? Windows and GNOME have this as built in functionality and MacOS has a few different menu bar apps. The only way to see a calendar is to open a Chrome tab or SSH into a system and use CLI tools. It’s very frustrating when I’m planning something and need to switch tabs to see what day a specific date is.
+I don’t use windowed applications very often, but when I do I suspect there is a way to set a window to always stay on top of other windows and a way to activate a window without raising it (mouse over focus). Both of these seem impossible on ChromeOS and make it very hard to keep my notes available while typing this article. Scrolling works for windows not in focus but you can’t type without raising the window.
+It bothers me to no end that electron based apps don’t work on ChromeOS. There are TONS of them + and I would have much preferred support for them instead of Android apps (more on this later). Because I can’t run electron apps it means I can’t use code + as an IDE and end up trying to use pseudo touch interfaces for functionality that seems like it should be available.
+Remember how much I said I liked the Pixelbook Pen earlier? It’s true the hardware is really good. Unfortunately, there’s almost zero software to use it. There’s only a couple of apps and some apps just don’t support using the pen at all. It’s very hit or miss but if you’re looking to do any professional drawing you’re better off sticking with the Apple Pencil on a supported device with software available.
+Some other random things that have held me up include
+Here’s bugs I found. Some are small and could be fixed, others make me scared to use ChromeOS as my main device.
+One of the drawing apps had exported an image to the local pictures folder but after a system update the picture was gone. Losing files is not OK. I know the image was there because I had showed other people the picture after I drew it but I still have yet to find out what happened to it. The promise of having everything remotely synced to the cloud isn’t actually true as there is plenty of local storage on devices.
+Android apps are possibly the most buggy thing I’ve ever used. I’ve only tried a handful but not a single one works well. They either crash, freeze, have UI issues, or a combination of all of those. Not only that but they add confusion as to what you’re using/installing because often times apps have chrome versions and android versions. It depends on what icon you clicked or how you installed it. As an example I installed the Cisco Anyconnect chrome app which seemed to work OK at first (more info later) but someone else I was talking to couldn’t get it working at all. After some troubleshooting we realized they were running the Android version of the app which looked almost identical but it doesn’t work in ChromeOS at all.
+Speaking of which, ChromeOS has the idea of a primary user (the first user to ever log into the device). That causes problems when trying to install applications from a secondary ChromeOS account. There’s weird things were apps install on the wrong user, won’t install at all, and pop-ups show up on different accounts. The primary user is also the only user who’s able to launch the Google assistant. That’s really bad when my primary account (work) isn’t an account I use the the Google assistant with.
+
Here’s some random bugs I ran into
+All of the problems above are not things I deal with when using a Linux or Mac laptop. While MacOS seems to get worse with each release, Windows and Linux keep getting better. Some of the problems would be resolved with crouton while others would require installing a full version of Linux. I think I could look past these problems if ChromeOS were a new operating system (it was released in 2011) or if there were noticeable benefits such as better battery life.
+So far I’m still using the Pixelbook but I’m not sure if I’ll grow tired of these issues and eventually give up. I don’t feel like I’m trying to do anything extravagant or I require a local development system with comparable functionality to a full OS laptop. I really hope it’ll get better and fix some of these issues but I’m not holding my breath.
+]]>Dear Kubernetes Community,
+KubeCon and CloudNativeCon were an absolute blast! 🙌 I can’t believe how big the conference has got in such a short period of time. I’m thrilled to see how inclusive and welcoming the community is to new people. Especially people who identify with groups underrepresented at most conferences.
+Thank you to the Linux Foundation for all the hard work I can’t even fathom goes into planning an event of this magnitude. Thank you to the CNCF for intentionally fostering a diverse community. Thank you to the project and community leaders for being accessible and approachable by anyone and everyone in the hallways, talks, and after hours events. Thank you to everyone who provided constructive feedback to speakers, organizers, and projects.
We have come a long way, but there is still a lot to do.
+As the community matures I’m worried we will not learn from the experiences of other communities. We should be aware of their challenges and celebrate their successes. As wonderful as things seem, it’s easy to be blind to the behaviors that can easily tear us apart. We need to remember that for many people this is the first community (especially OSS community) they are a part of.
+As I reflect on the amazing conversations I had this past week I have thought of some values we need to reenforce and things we should keep in mind.
+People come first. All people. Nobody is a nobody and we need to always keep in mind that all of this software is made by people. Be respectful and know that everyone brings their own history, experiences, and value to the community. Have empathy for new and established people in our community and even those outside of our community.
+Protecting the community is more important than any single person, no matter who it is. Don’t allow toxic people or behaviors to be ignored. Speak up! If you don’t know how to speak up or do not feel safe I am tremendously sorry because if that is the case we have not made this a safe environment and have not made it clear what we value. Please tell someone, anyone, if you feel threatened, scared, or harmed by another person or process. Please also keep in mind that we are all just people. We make mistakes. Together, with open feedback and dialog, we can hopefully make fewer mistakes.
+There will never be another KubeCon 2017 just like there will never be another KubeCon 2016. We need to look ahead at what is to come and make sure we are, as much as possible, prepared for the unknown.
+The projects are maturing. That means there will be companies investing in the technologies and enterprises with new demands on them. From here on out there will be a lot more money at stake and new motivations for being involved in the projects and communities. We should be welcoming for anyone willing to join the community who value what we value, but it is not our responsibility to make them successful or allow them to disrupt progress to keep their existing business. We should encourage new use cases and keep and open mind to learn new things.
+KubeCon is only going to get bigger and more people who come will not know what we value or be invested in our community. Talks will focus on solving different problems and hallway tracks may become more exclusive and private. If you see behaviors that do not put people first, respectfully remind them what we value and how we behave. This is true for KubeCon, Slack, meetups, SIG calls, and GitHub. If you don’t feel safe speaking up, or do not know what to say please report it. The leaders of the projects and communities cannot know every bad experience that happens, but they are active in maintaining a safe environment.
+Kubernetes needs to remember what it was like to be new, the struggles of being small, and be inclusive of the broader communities we interact with and have impact on. Being a leading project means we must set the example, not look down or abuse our popularity. This is not an “us vs. them” situation. There are no winners. Technologies come and go. They are not important. The people who build them are.
+Be careful what we measure. Organizations become what they measure + and it is no different with OSS. Do not measure the easy things because they are easy. Even if not explicitly said, they will become influential within the community. Measure the things we care about because they are important and who we want to become. No matter how difficult they are to quantify.
+This community is special. It won’t stay that way on its own. Thank you to everyone who has helped create it and for everyone who is a part of it who keeps its values.
+Keep being curious. Keep asking questions. Invest in other people. Love them and empathize with them. Protect them and make their success yours.
+This community can be much more than just Kubernetes and the surrounding projects if we can maintain these values and continue to write the world’s most boring software with its most exciting people.
+]]>I recently ran a survey about infrastructure and applications for some research. I wanted to open up the results for everyone to see.
+I ended up with 222 responses. Responses required logins to not allow repeat answers. I couldn’t figure out how to embed the actual results so the best I could do was take screenshots of the answers. I’m not going to add any commentary around the data so you can draw your own conclusions.
+The first part of the survey was focus on infrastructure.
+






There was a free form question that asked “What change would you make to your infrastructure as it is now?”
+The answers weren’t all that helpful (only 61 answers) but here are some trends I found.
+11 responses to increase automation and autoscaling
+8 responses about using containers
+7 responses about using configuration management more
+3 responses to use load balancing
+3 responses to add infrastructure tests
+3 responses to use Kubernetes
+There were other one off answers to improve inventory, utilization, database migrations, standardization, and using more service/infrastructure providers. There were even a couple answers that said they would change nothing.
+The next section of survey results focused on applications
+



Finally some questions about organizations
+



If you want the raw data, I have all the answers in a Google sheet available here. https://docs.google.com/spreadsheets/d/1-muIXzlKWaIaqsxpVuPflcaNzQltxr3Mc5QnLrtoU2A/edit?usp=sharing +
+]]>When formatting partitions on a Linux PC, you’ll see a wide variety of file system options. These options don’t need to be overwhelming. If you’re not sure which Linux file system to use, there’s a simple answer.
+We’ll get into the weeds and run down the difference between the various file systems in a moment, but if you aren’t sure: Use Ext4.
+Ext4 is the default file system on most Linux distributions for a reason. It’s an improved version of the older Ext3 file system. It’s not the most cutting-edge file system, but that’s good: It means Ext4 is rock-solid and stable.
+In the future, Linux distributions will gradually shift towards BtrFS. BtrFS is still cutting edge and seeing a lot of development, so you’ll want to avoid it on production systems. The risk of data corruption or other problems isn’t worth the potential improvement in speed.
+Note, though, that this “use Ext4” advice only applies to Linux system partitions and other on-disk partitions only Linux will access. If you’re formatting an external drive you want to share with other operating systems, you shouldn’t use Ext4 because Windows, macOS, and other devices can’t read Ext4 file systems. You’ll want to use exFAT or FAT32 + when formatting an external drive on Linux.
+If you’re setting up partitions on your main Linux boot drive, you’ll also want to create a swap partition of at least a few GBs in size + when setting up those partitions. This partition is used for “swap space”. It’s similar to the paging file on Windows. Linux swaps out memory to the swap space when its RAM is full. This partition must be formatted as “swap” instead of with a particular file system.
+
One thing you’ll notice when choosing between file systems is that some of them are marked as a “journaling” file system and some aren’t. This is important.
+Journaling is designed to prevent data corruption from crashes and sudden power loss. Let’s say your system is partway through writing a file to the disk and it suddenly loses power. Without a journal, your computer would have no idea if the file was completely written to disk. The file would remain there on disk, corrupt.
+With a journal, your computer would note that it was going to write a certain file to disk in the journal, write that file to disk, and then remove that job from the journal. If the power went out partway through writing the file, Linux would check the file system’s journal when it boots up and resume any partially completed jobs. This prevents data loss and file corruption.
+
Journaling does slow disk write performance down a tiny bit, but it’s well-worth it on a desktop or laptop. It’s not as much overhead as you might think. The full file isn’t written to the journal. Instead, only the file metadata, inode, or disk location is recorded in the journal before it’s written to disk.
+Every modern file system supports journaling, and you’ll want to use a file system that supports journaling when setting up a desktop or laptop.
+File systems that don’t offer journaling are available for use on high-performance servers and other such systems where the administrator wants to squeeze out extra performance. They’re also ideal for removable flash drives, where you don’t want the higher overhead and additional writes of journaling.
+
While Microsoft develops Windows and Apple controls macOS, Linux is an open-source project developed by the community. Anyone (or any company) with the skill and time can create a new Linux file system. That’s one reason why there are so many options. Here are the differences:
+

ZFS + was designed by Sun Microsystems for Solaris and is now owned by Oracle. ZFS supports a lot of advanced features including drive pooling, snapshots, and dynamic disk striping—BtrFS will bring many of these features to Linux by default. Each file has a checksum, so ZFS can tell if a file is corrupted or not. Sun open-sourced ZFS under the Sun CDDL license, which means it can’t be included in the Linux kernel. However, you can install ZFS support + on any Linux distribution. Ubuntu now offers official ZFS support starting with Ubuntu 16.04 +, too. Ubuntu uses ZFS by default for containers.
+XFS + was developed by Silicon Graphics in 1994 for the SGI IRX operating system, and was ported to Linux in 2001. It’s similar to Ext4 in some ways, as it also uses delayed allocation to help with file fragmentation and does not allow for mounted snapshots. It can be enlarged, but not shrunk, on the fly. XFS has good performance when dealing with large files, but has worse performance than other file systems when dealing with many small files. It may be useful for certain types of servers that primarily need to deal with large files.
+JFS +, or “Journaled File System”, was developed by IBM for the IBM AIX operating system in 1990 and later ported to Linux. It boasts low CPU usage and good performance for both large and small files. JFS partitions can be dynamically resized, but not shrunk. It was extremely well planned and has support in most every major distribution, however its production testing on Linux servers isn’t as extensive as Ext, as it was designed for AIX. Ext4 is more commonly used and is more widely tested.
+Swap is an option when formatting a drive, but isn’t an actual file system. It’s used as virtual memory and doesn’t have a file system structure. You can’t mount it to view its contents. Swap is used as “scratch space” by the Linux kernel to temporarily store data that can’t fit in RAM. It’s also used for hibernating. While Windows stores its paging file as a file on its main system partition, Linux just reserves a separate empty partition for swap space.
+FAT16, FAT32, and exFAT: Microsoft’s FAT file systems are often an option when formatting a drive in Linux. These file systems don’t include a journal, so they’re ideal for external USB drives. They’re a de facto standard that every operating system—Windows, macOS, Linux, and other devices—can read. This makes them the ideal file system to use when formatting an external drive you’ll want to use with other operating systems. FAT32 is older. exFAT is the ideal option, as it supports files over 4 GB in size and partitions over 8 TB in size, unlike FAT32.
+There are other Linux file systems too, including file systems designed specifically for flash storage + in embedded devices and on SD cards. But these are the options you’ll most frequently see when using Linux.
+]]>Containers are great for shipping software, but sometimes you can go too far when stripping down your container to make it as small as possible. There’s a fine balance between a “no-frills” image and something impossible to debug (I’m looking at you, single binary go containers).
+The normal way I see people debug a running container is to docker exec -it $CONTAINER sh and install their debug tools on demand in the container. But what if your container doesn’t have /bin/sh? What if it doesn’t have a package manager? You could copy utilities into the container with docker cp and then exec into the running container but that’s also a hassle.
So instead of trying to debug from within the container, a friend recently asked how you could debug from a different container. I’m not that smart so I asked much smarter people online and got a good answer back. Thanks again Justin Cormack for the reply +.
+Let’s create a stripped down container with only caddy +.
+First download/extract the caddy binary
+$: curlhttps://getcaddy.com | bash -s personal && mv /usr/local/bin/caddy .
+Then create a Dockerfile to copy the binary into a scratch container.
+FROM scratch
+ADD caddy /
+Build the container and run caddy.
+$: docker build -t caddy .
+<output trimmed>
+Now run the container.
+$: docker run -d --name caddy -p 2015:2015 caddy /caddy
+Now caddy is running publishing port 2015 (currently giving a 404 page because there’s no content that but doesn’t matter). How do you debug the container? Not that you’d ever need to, caddy doesn’t have bugs. :) But for hypothetical reasons.
+Many people suggested using --link but that only puts the containers on the same network. Not the same namespace, but connected to each other on the same virtual network.
$: docker run -it --rm --link caddy:caddy alpine sh/ # ping caddy -c 1
+PING caddy (172.30.238.2): 56 data bytes
+64 bytes from 172.30.238.2: seq=0 ttl=64 time=0.075 ms/ # ps aux
+PID USER TIME COMMAND
+ 1 root 0:00 sh
+ 8 root 0:00 ps aux
+Others suggested using --volumes-from but that doesn’t let you mount your tools into an existing running container unless that running container is exporting a volume and that volume is already in the $PATH.
Instead we’re going to build a separate container with all the tools we need (in this case strace) and run it in the same pid and network namespace as the original container.
+First create a debug container with strace
+FROM alpine
+RUN apk update && apk add strace
+CMD ["strace", "-p", "1"]
+Build the container
+$: docker build -t strace .
+<output trimmed>
+Now run your strace container in the same pid and network namespace.
+$: docker run -t --pid=container:caddy \
+ --net=container:caddy \
+ --cap-add sys_admin \
+ --cap-add sys_ptrace \
+ stracestrace: Process 1 attached
+futex(0xd72e90, FUTEX_WAIT, 0, NULL
+This attached strace to the caddy process and is following it as it executes.
+That’s great but we also can get to the root filesystem (not that there’s much of one) of the remote container. This time we’ll just use the alpine image and launch a shell, again in the same pid and network namespace.
+$: docker run -it --pid=container:caddy \
+ --net=container:caddy \
+ --cap-add sys_admin \
+ alpine sh
+We can now see caddy running
+/ # ps aux
+PID USER TIME COMMAND
+ 1 root 0:00 /caddy
+ 13 root 0:00 strace -p 1
+ 34 root 0:00 sh
+ 40 root 0:00 ps aux
+The caddy container file system is available in /proc/1/root
+/ # ls -l /proc/1/root/caddy
+-rwxr-xr-x 1 root root 16099400 Jan 24 15:30 /proc/1/root/caddy
+With this container attached to the original we can do more debugging. You can still debug the network but make sure you use localhost because your new sh process is running in the same network namespace
/ # apk update && apk add curl lsof
+/ # curl localhost:2015
+404 Not Found/ # lsof -i TCP
+COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
+caddy 1 root 4u IPv6 330044347 0t0 TCP *:2015 (LISTEN)
+All your standard debugging tools should work from this 2nd container without tainting the original container. If you run into errors make sure you check your kernel permissions (notice how strace needed --cap-add sys_ptrace but the sh container only needed sys_admin)
This can obviously be helpful for go containers or any other container that you just need to bring some extra debugging tools into without changing the container itself.
+Let me know if you’ve found any other helpful tricks for debugging containers on the fly.
+Your best option to get a response or feedback is on twitter. https://twitter.com/rothgar +
+]]>Kubernetes has a lot of options for running in cloud environments. If you’ve never experienced the simplicity of starting a cluster in GKE I highly recommend it. But how can you test cluster setups in an on premises environment?
+Here are just a few reasons to have your own development cluster
+There are plenty of other reasons but these are some that have driven me to find options. Below are some of the best options I found and what I went with.
+Virtual machines might be fine in a work environment with OpenStack or VMware but will probably be harder to find resources if you are doing development at home. They also might make testing certain types of development harder depending on what hypervisor you’re using.
+Minikube + is an obvious choice. It is by far the easiest way to develop against the Kubernetes API but is limited to a single VM and can’t do some things a full multi-VM cluster could do like testing network segmentation, load balancing, distributed storage, or network overlays.
+VMware + is supported and can easily be used for development but it might be too much to manage for a home lab. There are also some options for starting multi-node clusters with Vagrant + which can be used but you will need to make sure your laptop/desktop has enough resources.
+Here’s where things get tricky. Hardware requires more commitment because you need to order it, maintain it, and pay for running it (power). But this is also where things get fun. Hardware costs more up front and what you order is dependent on your budget and development goals. Let’s look at some options.
+This is an obvious choice. In fact it even had a whole blog series on the Kubernetes blog + to explain how to do it.
+
It is one of the cheapest clusters you can buy. For a 5 node cluster it will cost you $300-$400. However, if you’ve ever built a Raspberry Pi cluster you’ll quickly notice some limitations.
+The benefits of Raspberry Pis include ubiquitous platform for development and small footprint.
+You can easily search and find dozens of examples + for setting up a Raspberry Pi cluster so I wont go into any more details here. You can even get a full kit or pre-assembled cluster from some vendors like https://www.picocluster.com/ +.
+PINE A64+
+
There are other ARM boards + that are worth looking at but I’m not going to go into them because they all typically have the same limitations as the Pi.
+Of course the Raspberry Pi isn’t the only single board computer worthy of a home cluster. Lots of alternatives have shown up in the past year and some of them are very capable. Some benefits of these alternatives are.
+The obvious downsides being the boards are more expensive. Instead of $35 for a Raspberry Pi you’re probably going to spend $100 per board for 1–2 GB of RAM and $170–$200 per board for 4GB of RAM.
+If you have the money here are some great options for you to look at. (click the pictures for links)
+
https://hackernoon.com/diy-kubernetes-cluster-with-x86-stick-pcs-b0b6b879f8a7#.6eivoptm1 +
+
A few more honorable mentions include LattePanda +, Kangaroo Desktop Pro +, and the Udoo +. Each board would provide compute and RAM for a cluster but vary in price, options, and accessories.
+The DIY route for x86 boards is only getting better. Here’s a great example of a nice looking, 5 node cluster https://hackaday.io/project/27869-kuberdoo +.
++ + +I figured the @intel #nuc #homelab needed a proper learning environment. @coreoslinux @kubernetesio @opendeis pic.twitter.com/3tqzz1mVEC
— Brandon B. Jozsa (@v1k0d3n) May 18, 2016
This last category is going to give you lots of options. You’ll have a relatively powerful cluster (possibly more powerful than many cloud instances) but will cost you. Most of these options will cost you $1500-$2500 for a five node cluster but have a few benefits the others don’t.
+Of course downsides include
+One thing to note, just because something is a “desktop” doesn’t mean it has to take up a lot of space.
+ +
Typically when people look for a desktop cluster they automatically think of the Intel NUC computers (example NUC cluster here +). These are great but are going to be one of the more expensive options. I’d suggest you also look at the DIY route. With a little more time investment you can build something more specialized and cheaper.
+The nano ITX build (pictured left) is a great example. In the links there are parts and other options for hardware.
+I’d also suggest you look at onboard CPU combos and PC Part Picker + to find cheap options. Here are some onboard CPU options from Gigabyte for AMD + and Intel + CPUs. I found multiple options from $60-$90 per node which is a great price if you’re on a budget.
+One of the cheapest desktop solutions I found is retired company systems.
+You can often find old corporate systems on eBay, local electronics recycling, colleges, or even thrift stores. The benefit to these systems is they are usually enterprise grade hardware, decently spec’d (Intel Core i3/i5 with 4+ GB RAM), and cheaper than other options. You can regularly find desktops in the $40–$80 range. And although they’re bigger and take more power than other options they cost 1/4 of the price and are more easily upgraded. I bought hardware for my 5 node cluster for only $20 per system. That’s 1/2 the price of a Raspberry Pi + case + storage and my systems came with 4GB RAM, 500 GB hard drives, and Dual Core Intel i5 processors.
+No matter what you’re building, there are plenty of options available. If you have more examples and resources please leave a comment so others can benefit.
+]]>After 9 years of predictions I’ve been wrong with my predictions more often than I’ve been right. Read my 2016 predictions here + (with links to previous years) and read below for predictions for 2017.
+That’s all for this year. Let me know your predictions in the comments or on twitter +.
+]]>Some times people will join the Kubernetes community and get confused on what the “k8s” is all about. So I just wanted to share a little bit of history + around numeronyms +.
+In the 80s computer companies were having new challenges sharing their software around the world. They often would use the words “internationalization” and “localization” to describe the process of translating the software. Developers are lazy and somewhere in the mid-late 80s they started abbreviating the words based on their first letter, last letter, and number of letters in between. This is why you’ll sometimes see i18n for internationalization and l10n for localization. There are also new numeronyms such as Andreessen Horowitz (a16z +) and of course our favorite kubernetes (k8s).
+Hopefully that will help give a little bit of background about the name.
+]]>The outdoor security camera market didn’t exist much before this year. Then startups realized it was a ripe market for disruption, the old options were terrible, and cameras got smart with motion detection and other features some people never asked for.
+Let me start by just saying my requirements for an outdoor camera may not be your requirements. My basic requirements
+The long term recordings, 2-way communication, and some other features I don’t need.
+After a lot of research I tried the ring first because it looked like a really good option and covered my needs. It also had a rechargeable battery with optional micro-USB power and even had an optional solar panel.
+I ended up getting a kit with Ring doorbell, chime, solar panel, and stick up cam which was less expensive than I expected.
+Here it is installed on my garage wall.
+
And here’s the daytime view from the camera.
+
The application worked well enough. It wasn’t super fast but you could pretty easily set up alerts for motion. They also added a lot of functionality from the time I first installed the camera which was always nice to see. Simple things like being able to view the camera feed at any time (without a motion trigger) and better control over alert zones were welcome additions. Ring also supports sharing cameras with family members (instead of sharing account logins) which was seamless for the Stick Up Cam and ring doorbell.
+I had problems with the Stick Up Cam for a few different reasons. Mainly it would often miss motion alerts. When I would go in and out of my back door (far left in video) I’d never get an alert and often I could walk up/down the pathway (far right) without ever receiving an alert. That was a big problem because the alerting is one of the reasons I got the camera. If I can’t trust I’ll get an alert then the camera doesn’t fulfill one of my needs.
+The second big problem was the Stick Up Cam wouldn’t switch to night vision mode. It made the camera useless at night. If you can see me I’m standing in the picture below. I’m pretty sure my path lights caused the camera confusion but I could not make it work after multiple conversations with Ring support.
+
Ring’s support was responsive but was not the best quality when I first started emailing them. It wasn’t until I tweeted about problems I had when their PR department took over the support cases and things got really good. Without a doubt, Ring wants to take care of their customers, but I feel like some of their inexperience and small size is a problem when trying to scale to a bigger audience.
+Their support, after my public complaints, was some of the best support I’ve ever received. They called me to make sure all of my concerns were met and promptly offered to send me a new camera and doorbell because they suspected my issues were hardware related. I received the new items which appeared to be slightly newer versions than the items I had just received a month before but I still had the same problems. They also offered to help me with low WiFi signal and helped optimize my camera settings for me.
+This led me to try the Nest Cam Outdoor which wasn’t out when I first bought the Ring but was available after a couple months of using the Stick Up Cam.
+The Ring came with a bunch of nice stuff to install the camera. They came with a level, a screw driver, anchors, etc. It was really nice. The Nest Cam Outdoor came with screws and anchors but avoided most of the problem through better hardware design. The magnetic mount for the camera and the way it looks on the wall is superb.
+
The base has two screws and almost everything sticks together with strong magnets. This makes the camera infinitely flexible in angles and really easy to adjust. The setup on the Nest was also something I wasn’t used to. It has a QR code on the camera and you scan it with the app. No need to hop WiFi access points or type in a code.
+Here’s the nest view of the same area. The nest has a wider field of view (130° vs 80°) and is 1080p (Ring Stick Up Cam is 720p).
+
This extra field of view has helped a ton with alerts. I now always get an alert when someone is at my back door or when the car leaves. I even got alerts for things I never knew I was missing. It turns out there have been cats setting off my motion lights at night that the Ring never caught.
+The night vision on the Nest didn’t have the same problems the Ring had. Here’s me again at the same time of night.
+
The Nest also has a much more flexible alerting system (paid feature). Instead of Ring’s predefined alert zones (~15° slices from the camera view) the Nest allows free form zones you can specify for where you want to get alerts. Some alerts can also notify you for motion or only if people are detected +. It works surprisingly well.
+I’m not sure how, but the Nest Cam Outdoor also didn’t have the weak WiFi signal problem the Ring had. The Stick Up Cam would have trouble staying connected without a WiFi extender and the Nest hasn’t shown any of the same problems.
+My biggest question with Nest is what the features will be like once the trial Nest Aware subscription expires. At $100/year it’s the most expensive camera subscription service I’ve looked at, but I’m not sure how much it will degrade my experience + without it.
+For the longest time I’ve held off on getting a Nest Thermostat because they just seemed too expensive. But after experiencing how well the Nest Cam Outdoor works I’d really consider it.
+]]>Not all Ethernet cable is created equally. What’s the difference, and how do you know which you should use? Let’s look at the technical and physical differences in Ethernet cable categories to help us decide.
+Ethernet cables are grouped into sequentially numbered categories (“cat”) based on different specifications; sometimes the category is updated with further clarification or testing standards (e.g. 5e, 6a). These categories are how we can easily know what type of cable we need for a specific application. Manufacturers are required to adhere to the standards, which makes our lives easier.
+What are the differences between the categories and how can you know when to use unshielded, shielded, stranded, or solid cable? Keep reading for “cat”-like enlightenment.
+The differences in cable specifications is not as easy to see as physical changes; so let’s look at what each category does and does not support. Below is a chart for reference when picking cable for your application based on the standards for that category.
+
As the category number gets higher, so does the speed and Mhz of the wire. This is not a coincidence, because each category brings more stringent testing for eliminating crosstalk (XT) and adding isolation between the wires.
+This does not mean your experiences have been the same. Physically you can use Cat-5 cable for 1 Gb speeds, and I have personally used cable longer than 100 meters, but because the standard has not been tested for it, you’ll probably have mixed results. Just because you have Cat-6 cable, doesn’t mean you have 1 Gb network speeds either. Every connection in your network needs to support the 1 Gb speed and in some cases, the connection will need to be told in software to use the available speed.
+Category 5 cable was revised, and mostly replaced with, Category 5 Enhanced (Cat-5e +) cable which did not change anything physically in the cable, but instead applied more stringent testing standards for crosstalk.
+Category 6 was revised with Augmented Category 6 (Cat-6a +) which provided testing for 500 Mhz communication (compared to Cat-6’s 250 Mhz). The higher communication frequency eliminated alien crosstalk (AXT) which allows for longer range at 10 Gb/s.
+So how does a physical cable eliminate interference and allow for faster speeds? It does it through wire twisting and isolation. Cable twisting was invented by Alexander Graham Bell in 1881 for use on telephone wires that were run along side power lines. He discovered that by twisting the cable every 3-4 utility poles, it reduced the interference and increased the range. Twisted pair became the basis for all Ethernet cables to eliminate interference between internal wires (XT), and external wires (AXT).
+There are two main physical differences between Cat-5 and Cat-6 cables, the number of twists per cm in the wire, and sheath thickness.
+
Cable twisting length is not standardized, but typically there are 1.5-2 twists per cm in Cat-5(e) and 2+ twists per cm in Cat-6. Within a single cable, each colored pair will also have different twist lengths based on prime numbers so that no two twists ever align. The amount of twists per pair is usually unique for each cable manufacturer. As you can see in the above picture, no two pairs have the same amount of twists per inch.
+Many Cat-6 cables also include a nylon spline which helps eliminate crosstalk. Although the spline is not required in Cat-5 cable, some manufactures include it anyway. In Cat-6 cable, the spline is not required either as long as the cable tests according to the standard. In the picture above, the Cat-5e cable is the only one with a spline.
+While the nylon spline helps reduce crosstalk in the wire, the thicker sheath protects against near end crosstalk (NEXT) and alien crosstalk (AXT) which both occur more often as the frequency (Mhz) increases. In this picture the Cat-5e cable has the thinnest sheath, but it also was the only one with the nylon spline.
+
Because all Ethernet cables are twisted, manufactures use shielding to further protect the cable from interference. Unshielded twisted pair can easily be used for cables between your computer and the wall, but you will want to use shielded cable for areas with high interference and running cables outdoors or inside walls.
+
There are different ways to shield an Ethernet cable, but typically it involves putting a shield around each pair of wire in the cable. This protects the pairs from crosstalk internally. Manufactures can further protect cables from alien crosstalk but screening UTP or STP cables. Technically the picture above shows a Screened STP cable (S/STP).
+
Solid and stranded Ethernet cables refer to the actual copper conductor in the pairs. Solid cable uses a single piece of copper for the electrical conductor while stranded uses a series of copper cables twisted together. There are many different applications for each type of conductor, but there are two main applications for each type you should know about.
+
Stranded cable is more flexible and should be used at your desk or anywhere you may be moving the cable around often.
+Solid cable is not as flexible but it is also more durable which makes it ideal for permanent installations as well as outdoor and in walls.
+Now that you know which type of cable you should use, have a look at our guide to making your own Ethernet cable +.
+]]>Large scale DDoS + are not rare occasions anymore. What we need to help protect the Internet is to make home routers smarter. I hope Google can start this trend and maybe it would catch on as standard features.
+Here are some feature that (to me) seem reasonable for any modern router to provide.
+Egress filtering should be a no-brainer. If my local subnet is 192.168.0.1 don’t allow traffic to leave my network pretending to come from any other subnet not local to my network. This doesn’t solve all DDoS attacks, but it does help with UDP amplification attacks +.
+If any of my devices starts sending 1Gb/s or 10,000 requests to an IP address let me know. Maybe it’s legit (e.g. crashplan backup) but maybe it’s not. Just send me an alert on my phone or an email that it’s happening, and tell me which device was sending the traffic. If it’s my light bulb sending the traffic I will promptly throw it away. If lots of OnHubs start seeing similar traffic there should be a way to correlate the data (opt-in) so everyone can know if they may be part of a DDoS attack.
+I know command and control IPs change frequently. But there are some IPs that should never be visited. If there is a connection from one of my devices (outbound or inbound) to one of these IPs I’d want to know. I’d also want the option to drop and block the connection from happening again. It may not solve everything, but it would make some things more difficult for attackers.
+I’m sure there are some other features people would rather have. But for the protection of the broader Internet I think these are some features that need to be adopted. The sooner the better.
+]]>Windows 7 gives the ability to quickly pull up a calendar from the taskbar by clicking on the time. What you may not know is that you can also quickly jump to dates in different months and years.
+In order to see the options for jumping straight to a month, year, or decade all you have to do is click on the banner that indicates your current view.
+
Your view will cycle from month to year to decade but will stop at the decade view.
+
To go backwards you can click on whatever month, year, or decade you want to zoom into. If you want to zoom back into the current date you can also just hit enter on your keyboard because the current year and month are selected by default.
+
To quickly jump to the current date click on the link at the top of the window.
+
Forgive the analogies, I read Breaking the Chains of Gravity: The Story of Spaceflight before NASA + and despite a few slow parts, it was a really enlightening read. I couldn’t help but see some similarities with early spaceflight and computing.
+In the early days, flight was about experimentation and lots of smart (and daring) individuals. The early planes were crude and inefficient but they worked and that’s all that mattered. This is also true for almost all early computers, software, and systems administrators. Hindsight is easy to explain how crude something was when we see how “great” things are now.
+
Powered flight was a huge boost for the industry. It propelled everyone forward (pun intended). As engineers do what engineers do best, the systems became more efficient, stable, and cheaper. Arguably, powered flight took us all the way to the clouds. We could soar for as long as our engineering and budget could sustain us.
+Cloud computing isn’t always faster and better. Sometimes it’s more complex, dangerous, and not the right solution. There are some who push the boundaries and can make it really fast and efficient, but if you need to move thousands of tons of cargo you’re probably going to end up with something not designed for sustained use.
+
Some people knew planes would be limited to the clouds. Literally. They would never make it past the clouds and out of earth’s orbit with a plane. They needed something more. They needed rockets.
+Rockets had their start earlier than I expected. Not just ancient Chinese rockets, but liquid fueled rockets started in 1926. Many of the early rockets were funded with government (not the U.S.) backing with expectations to defend what they had built or take what they thought they deserved. Very similar to the way ARPANET was funded but with different intentions.
+The interesting part of rockets, to me, was human flight. When Chuck Yeager broke the sound barrier in 1947 + (Mach 1) they knew they were on to something. In computing, I would equate breaking the sound barrier to some time around when Docker and Linux containers emerged for the general public. Containers allowed a speed only theoretical before. We could now go faster than ever, but where are we going?
+
Bell X-1 +
+The goal was space. We were not content to stay within the confines of our gravity well and wanted to prove just what could be done. We wanted to send people to space. What we would do there was only limited by our imagination. We could go faster and stay there longer than we ever could in the clouds.
+
I believe the cusp of space is where we are now with computing. Companies and projects are trying to elevate themselves above cloud computing. This is where containers coupled with automated schedulers have led us. While this infrastructure and application architecture is often called “cloud native” I believe that doesn’t give it justice. Some players are further ahead than others, and there are even a few who are already in orbit. It’s a goal many are striving for and competition is the oxygen fueling the rockets.
+The other catalyst to space computing is open source. In the early days of space flight the NACA + helped coordinate more than just the national efforts for spaceflight. They also organized and shared knowledge with other countries. This had multiple benefits:
+When the Soviet Union wanted to have access to the data the NACA had learned they were told they could join so long as they shared their own flight data and measurements. When the Soviet Union said “no” they were not allowed access in the NACA with the other nations. Obviously, that didn’t stop them, they led the way for many years, but it hurt them in the long run to not be part of the global ecosystem that grew beyond their own “closed source” systems.
+Arguably, cloud computing until OpenStack has been fiercely closed source. Amazon Web Services, Google Compute Engine, Microsoft Azure and VMware are closed source for competitive reasons. Space computing infrastructure doesn’t have close ties to any one vendor. In space, you launch your application to orbit and it can circle the globe almost indefinitely.
+Of course, once orbit was achieved we kept pushing. We wanted to go to the moon. That is where some are headed now. It’s going to take some time to get there, but just like with spaceflight the acceleration is not slowing down. The amount of time from breaking the sound barrier to putting man on the moon was 22 years. It took only 22 years to go from 767 mph (1234 km/h) to 25,020 mph (40,270 km/h)! Software moves much faster than physics. Even if both are limited to the speed of light.
+What will it take to get general public computing to the moon? In my opinion we need the following things:
+The new world of orbit native applications doesn’t mean everyone has to or needs to move there. There are plenty of companies (aeronautics and computing) who make a fortune flying amongst the clouds, and there are many countries who have never sent a single object into space +. There are only 3 countries who have ever sent people into space. But that doesn’t mean the rest of humanity doesn’t gain from countries that do take the leap.
+There is more that goes into getting to the moon. More research and millions more engineering hours needs to be spent. But once the goal is in site, the only thing between us and space is the clouds.
+Although, when I think about it. I’m with Elon. My sights are set on Mars.
+]]>Hypervisors are what make virtual machines possible, and they aren’t just for servers anymore. You probably use one every day and don’t even know it. If you don’t use one now, you will in the near future.
+A hypervisor is software that exists outside of a guest operating system to intercept the commands sent to the computer hardware. The term “hypervisor” comes from the different levels of an operating systems kernel +; it performs actions with more authority than the “supervisor” level, hence, hyper-visor.
+Image via striatic on Flickr +
+A hypervisor is also known as a Virtual Machine Manager (VMM) and its sole purpose is to allow multiple “machines” to share a single hardware platform. Operating systems are designed so that they have a one-to-one relationship with the hardware they are running on, but with multi-core, multi-threaded processors and ludicrous amounts of RAM, running multiple at once is a breeze.
+
The hypervisor separates the operating system (OS) from the hardware by taking the responsibility of allowing each running OS time with the underlying hardware. It acts as a traffic cop to allow time to use the CPU, memory, GPU, and other hardware. Each operating system controlled by the hypervisor is called a guest OS, and the hypervisor’s operating system, if any, is called the host OS. Because it stands between the guest OS and hardware you can have as many different guest OSs as your system can handle; you can even have different types (e.g. Windows, OS X, Linux).
+Separating hardware and software turns out to be good for portability as well. Because the hypervisor acts as the go-between, it is much easier to move from computer to computer without needing to install new drivers or update your guest OS. You may have noticed this if you took your Virtualbox VMs and put them on a different computer. To the guest OS, there is no noticeable change ever though the host OS and hardware could be completely different.
+
Another major benefit of virtualizing an OS is security. If you want to test software that may be harmful to your computer it is recommended to test it in a virtual machine rather than your host OS. If the guest OS becomes infected and riddled with viruses, it will not affect the files on the host OS, unless shared folders or a network bridge connect the two. The two operating systems exist completely separated from each other and have no knowledge of each others existence, which makes for safe computing.
+Some popular hypervisors are VMware ESXi, Xen, Microsoft Hyper-V, VMware Workstation, Oracle Virtualbox, and Microsoft VirtualPC. All of these allow a user to virtualize one or more operating systems on a single piece of hardware.
+Hypervisors can be broken up in two major types:
+Most hypervisors today are either used for large scale server deployments or for end users to run legacy apps or try out a different operating system. There has already been some change to this thinking however with current versions of Android and rumors of Windows 8.
+
Android uses a Linux kernel for interaction with hardware and background services, and then uses a virtual machine called Dalvik to run software that the user interacts with. Despite not allowing a user to run multiple operating systems at once, Android is very similar to a type 1 hypervisor. The underlying Linux host is completely transparent to the end user, unless you root your phone and want to interact with it.
+Windows 8 is rumored to run entirely as a guest OS on top of Microsoft’s Hyper-V. Hyper-V will take the responsibility of managing your hardware and doing background tasks such as backups and file system checks. Similar to Android, this would allow you to have better portability, flexibility, and security within your OS. Not to mention, it would make your Windows 8 installation completely portable so you can take it with you from computer to computer.
+Web servers will continue to take advantage of hypervisors to maximize their hardware utilization and keep costs down. If you have shared web hosting through a popular web host you most likely are on a type 1 hypervisor already and didn’t know it. With good server hardware, bare metal hypervisors can push the boundaries from typically just having one operating system installed, to literally thousands available. This not only saves money when it comes to buying hardware, but also cooling and power are reduced to a small fraction what it used to be to run the same amount of machines.
+]]>Kubernetes networking has a few requirements +. They are:
+How these requirements are implemented is up to the operator. In many cases this means using a software defined network “SDN” also called an overlay network (e.g. flannel +, weave +, calico +) or underlay network (MACvlan, IPvlan). The SDNs all accomplish the same three goals but usually with different implementation and often unique features.
+But the networking requirements doesn’t mean you have to run an SDN. It also means you can implement a traditional SDN product in a non-traditional way. Let’s look at the simplest solution for networking in Kubernetes.
+For this example we have two Kubernetes nodes. The nodes are joined together on the network and each has Docker running using a specified NAT address (using -bip option).
+
Node1 is running containers on subnet 172.17.1.0/24 and node2 is running containers on the subnet 172.17.2.0/24. So how can we tell containers on node1 how they can route to node2? The same way we can tell any two subnets to route to each other, we update the router’s routing table with a next hop for the subnet.
+In this case we can tell our router that all routes going to 172.17.1.0/24 need to go to node1’s IP address 10.10.0.1 (the next hop) and all routes going to 172.17.2.0/24 need to go to 10.10.0.2. This concept works if you’re in a cloud provider (assuming your provider allows you to define routes for your private network) or on-prem. Every network has routing tables.
+Examples for adding these routes in GCE or AWS can be seen in
+Kelsey Hightower +’s
+Kubernetes the hard way repo +
+.
+That’s literally all you need to do. If your host’s IP address change you can update the route table. If you add a new node you just add the route.
+But what’s the downside to doing this?
+Likewise, you can do the same route options locally on each node in the Kubernetes cluster. Let’s look at our two example nodes again.
+
In this case, our route table is applied directly on the nodes. This can be done by running
+ip route add $DOCKER_SUBNET via $NODE_IP
+You’ll need to run this command for any nodes in your Kubernetes cluster on each node. While that may sound like a lot, it can be easily scripted. I would suggest making a simple hash table and then looping through it with a script. You can automate applying the script via cloud-init or a script run by systemd or cron.
+This method doesn’t have the same downsides of managing your routes on the router. In this case, many of the previous limitations don’t apply. The only limitations are
+Unlike the previous situation, host routes don’t rely on an external team (assuming you manage the nodes) and you can re-use a container subnet in different clusters because routes to the subnets are only visible to the hosts in that cluster.
+As an added bonus, you can allow any machine to access pods without a proxy by simply adding the routes for the container subnets. Once the subnets are added that host can route to pod IPs just like any other container. The service IP subnet will need to be pointed to a node running kube-proxy because those rules are managed by incoming iptables rules rather than host routes. Pods will appear as any other host on the network.
+For a better visual representation you can also check out
+thockin +’s slides
+
While I find it conceptually easier to manually define routes, I understand there are situations that would benefit from having an SDN
+If you must run an SDN I would suggest you look into flannel’s backends +. The default is to use a UDP tunnel, but it is also capable of setting up host routes or automatically managing AWS or GCE routes +.
+Calico sets similar route table rules + on the host with some added iptables policies for making sure workloads and traffic is securely routed only to the desired destination. That may or may not be desired.
+In either case, I recommend not adding new or unnecessary complexity to your infrastructure. This holds especially true when trying to introduce new ways of thinking about how you manage your applications. If your current infrastructure doesn’t have dynamic scaling, automatic subnet routing, and network isolation don’t try to implement those things while also introducing Kubernetes to your environment. Start small, replace what you need, and understand the components as you go.
+Kubernetes network requirements help solve real world problems with distributed applications. The important thing to know is
+++There’s 👏 no 👏 such 👏 thing 👏 as 👏 container 👏 networking
+
It’s just networking. Anyone who tells you differently is either trying to sell you something or doesn’t understand how networking works. Yes, you can use an SDN to make the packet routing automatic (i.e. harder to troubleshoot), but you don’t have to.
+If you have questions you really should join the Kubernetes slack channel + or send me a DM on twitter +.
+]]>Docker has been available on the Raspberry Pi for a while but 1.12 makes installation much easier. So I figured it was time to stop paying for a shared server and use my own hardware.
+Note: Running Wordpress on a Raspberry Pi is not a good idea for a high traffic website. I am using it to run 3 sites with < 500 page views per month combined. YMMV
+First step is to install Docker on your Raspberry Pi +. A pi model 3 will work better for this but I’ve been running on a 2b and it seems to be working OK.
+curl -sSL get.docker.com | sh
+Next add the Hypriot repository to install docker-compose.
+curl -shttps://packagecloud.io/install/repositories/Hypriot/Schatzkiste/script.deb.sh | sudo bash
+Now install docker-compose and git with
+sudo apt-get install git docker-compose
+Next, ssh onto your Raspberry Pi and clone my git repository.
+git clone https://github.com/rothgar/rpi-wordpress
+Once you have the repository cloned, edit the docker-compose.yml file and change all of the environment variables for the MySQL container. These values will need to match what is in your wp-config.php file in a few steps.
+I provided the Dockerfiles for my caddy, mysql, and php containers inside the repo. You are encouraged to build them yourself by commenting the build: lines but I also uploaded pre-built images to Docker hub so you can get started without building them yourself.
+The pre-built containers used are:
+The containers are based on resin/rpi-rasbian +, the main tweaks I did were:
+Download the latest version of Wordpress into the .data/wp/www folder with:
+curl -sL http://wordpress.org/latest.tar.gz | tar --strip 1 -xz -C .data/wp/www
+If you have an existing Wordpress installation you can use your existing files. First rsync your files from your server
+rsync -avr $YOUR_SERVER:$wordpress_directory .data/wp/www
+Backup your your database with mysqldump and put the .sql file in .data/backup
+mysqldump --databases wordpress > backup.sql
+scp DB_SERVER:backup.sql .data/backup/
+Inside your .data/wp/www folder change your wp-config.php file so DB_HOST is ‘mysql’
+Make sure you change the MySQL container environment variable values in docker-compose.yml to match your wp-config.php file. If you need help please refer to the Wordpress documentation on editing wp-config.php +. With a new installation you will need to copy the wp-config-sample file before editing the variables
+cp .data/wp/www/wp-config-sample.php .data/wp/www/wp-config.php
+If the Wordpress blog is having trouble connecting to the database server you will see the screenshot below. It will walk you through creating a wp-config.php file. If this is a new site, make sure you also generate the necessary security keys + and put them in the config file.
+
If you want to make changes to the Caddyfile (such as add TLS) you can edit the .data/wp/Caddyfile. This directory will be mounted into the running container so you can edit it if you need to make changes. Remember to reload caddy if you make changes with:
+sudo docker-compose exec caddy /bin/bash -c 'kill -SIGURS1 $(pidof caddy)'
+Save the docker-compose.yml and then run
+sudo docker-compose up
+This will start the containers in the foreground so you can see all the logs. I would recommend using tmux + so you can open a new shell. MySQL should start first as a dependency and will import any .sql files in the .data/backup folder (if you had a backup). It will then proceed to make the database and user defined from the environment variables in the docker-compose.yml file.
+After the containers have started, open a browser from your laptop and browse to your Raspberry Pi. Make sure you’re using the site url defined in the Caddyfile. You should get the the default Wordpress welcome page. Put in the same username, password, and database name you put as environment variables for the MySQL container. The Database host should be ‘mysql’
+If you imported from an old installation hopefully you see your site. If you don’t your best bet is to double check your environment variables for the MySQL container and make sure they match your wp-config.php file. If that still doesn’t work you should get a shell on the MySQL container and check the databases and tables to make sure your backup .sql file was imported properly.
+sudo docker-compose exec mysql bash
+mysql -u "${MYSQL_USER}" -p"${MYSQL_PASSWORD}"mysql> show databases;
+If Wordpress correctly connects to the mysql database then you should see the Wordpress welcome screen to name your site and create a user.
+
If you want to host your website from your home you’ll need to set up dynamic DNS linked to a custom domain you own or a free domain from services like nsupdate.info +. There are lots of different options for dynamic DNS. For this I am using Google domains + and a separate inadyn container + I made for the Raspberry Pi. You can pull my container and put in your environment variables or if you router has DDNS options you can use its built in DDNS settings. Inadyn supports many different providers + so it is up to you to decide which is best for you.
+Once DDNS is updating you should also make sure you forwarded ports 80 and 443 to your Raspberry Pi from your router. This will make sure when someone browses to your public IP address they get the right endpoint. This is highly dependent on which router you have so you’ll need to search for the exact steps for your router.
+With these containers and configuration you should have a Wordpress site running on your Raspberry Pi and dynamic DNS updates to host the site from your home. 🎉
+If you want to publish multiple sites using the same caddy front end you can add a subdirectory in .data/wp/www2 and update the Caddyfile to add a new site using the www2 root directory. Just copy/paste the main site and change the website name and root. The reason you need to use the same caddy container is because it is using ports 80 and 443 on your Raspberry Pi and your router forwards those ports to this host. Caddy will route traffic to the correct directory based on requested hostname.
+The MySQL container doesn’t have an automatic way to restore or create multiple databases. Instead you can run multiple MySQL containers and link them to the php container. Make sure you pick different linked hostnames for the containers (e.g. mysql2) Change the names of the services in docker-compose.yml and update your wp-config.php files to use he right database host. There is a multi-site.example.yaml file in the repo you can look at for reference.
+If you don’t want to use Wordpress at all I suggest you also check out
+Alex Ellis +’s post on using Ghost on a Raspberry Pi +.
+]]>NOTE: This article has not been updated for Kubernetes clusters that use RBAC for API authentication (versions 1.6+). I am leaving this article here for reference but you should be aware of the limitations of this guide.
+Kubernetes is great and running and maintaining pods. It can schedule fast and has a great API. But getting access to your pods with on-prem installations has been a challenge. In the past people have solved this by manually mapping exposed service ports and essentially keeping a spreadsheet of port conflicts. Then they’d use the kube-proxy + to make sure their traffic is routed to the right node and pod. But there’s a better way!
+I had been struggling with figuring out how to expose kubernetes services with the new ingress resource +. I finally have failed enough times I think I can share what I’ve learned with others. The below steps assumes you have at least kubernetes 1.1 installed. It should work equally well with bare metal, VMs, or localkube +/minikube +.
+First create a deployment with
+kubectl run microbot --image=rothgar/microbot:v1 --port=80
+This creates a new deployment named microbot. Deployments are great because they’re versioned and can be used later for rolling upgrades. The deployment will create a ReplicaSet (or ReplicaController on 1.1) which will in turn create a pod from the image specified. All we need to do is tell it the image we want to run and what port that container is expecting traffic on.
+Check out all the stuff that one command created for you. Notice the ReplicaSet (rs) has a version which makes future upgrades easier.
+kubectl get deployments,rs,poNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
+microbot 1 1 1 1 6s
+NAME DESIRED CURRENT AGE
+microbot-1276362308 1 1 6s
+NAME READY STATUS RESTARTS AGE
+microbot-1276362308–c255i 1/1 Running 0 6s
+Ingress maps to stable service IPs + (not pods) so you’ll want to create a service from your deployment. You can do that by “exposing” the deployment. We need to say what we want to expose (deployment) what port we want the service exposed on (port) and what port it should map to on the pod (target-port). Do that with
+kubectl expose deployment microbot --port=80 --target-port=80 --type=NodePort
+On bare metal or on-prem VMs you need to use type NodePort +. This will expose your service on a high level port of all your nodes (default to 30000–32767). The port will be randomly selected and thanks to ingress pods will be managed so we don’t have to worry about port conflicts or additional ports.
+Before we make an ingress controller and mapping lets make sure we can get to the service without it. First find the random port that the service was mapped to.
+kubectl describe svc microbot | grep NodePortType: NodePort
+NodePort: <unset> 31649/TCP
+Then find the node your pod was scheduled on
+kubectl describe po microbot-270567491–9jb5e | grep -i nodeNode: 192.168.99.100/192.168.99.100
+Now check that your service is routing to your pod correctly with curl. You should see the sample output below.
+curl -L 192.168.99.100:31649<!DOCTYPE html>
+<html>
+ <style type="text/css">
+ .centered
+ {
+ text-align:center;
+ margin-top:0px;
+ margin-bottom:0px;
+ padding:0px;
+ }
+ </style>
+ <body>
+ <p class="centered"><img src="microbot.png" alt="microbot"/></p>
+ <p class="centered">Container hostname: microbot-1276362308-c255i</p>
+ </body>
+</html>
+Great! Remember you’re curling the service port and not the pod port. Only the service is exposed to the outside network. Now that our service and pod are working properly we can create our ingress controller. I’m using traefik + but feel free to use nginx + too.
+kubectl create -fhttps://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-deployment.yaml
+This creates a Deployment (which creates a pod) using the official traefik image. The pod that is created is where the actual traefik load balancer runs.
+Use kubectl -o wide to get the node IP where your new ingress pod is running. I only have 1 node (running minikube) but yours will likely be different.
+kubectl get po -o wideNAME READY STATUS RESTARTS AGE NODE
+microbot-1276362308-c255i 1/1 Running 0 11m 192.168.99.100
+traefik-ingress-controller-sum0t 1/1 Running 0 40s 192.168.99.100
+Now that the pod has started (make sure it says “Running” in the status column) we need to make an ingress rule. This is the part that will say what hostname and path passes traffic to our service.
+Here’s an example for the microbot service.
+Create the ingress object from the map above with the following command.
+kubectl create -fhttps://gist.githubusercontent.com/rothgar/a04d6d9bb3faec3d59f36584c3bfc6f2/raw/392a7fdf2ef77241fd2f18a617f70fb803b82891/microbot.ing.yaml
+This takes anything that’s passed to the ingress pod with the “microbot” hostname on the root path (e.g. http://microbot/) and sends it to the microbot service on port 80 (the port our service is expecting traffic on).
+Because our service is on NodePort the traefik pod will match the hostname + path and forward the traffic to 192.168.99.100:31649 automatically. We can verify the mapping with.
+curl -L --resolve microbot:80:192.168.99.100http://microbot/<!DOCTYPE html>
+<html>
+ <style type="text/css">
+ .centered
+ {
+ text-align:center;
+ margin-top:0px;
+ margin-bottom:0px;
+ padding:0px;
+ }
+ </style>
+ <body>
+ <p class="centered"><img src="microbot.png" alt="microbot"/></p>
+ <p class="centered">Container hostname: microbot-1276362308-c255i</p>
+ </body>
+</html>
+This command is telling curl to map the hostname “microbot” to it address 192.168.99.100 (like editing /etc/hosts) and then trying to get the URL http://microbot/ +. If you saw the output above then your ingress controller and mapping is working correctly. If not, read below for some more help.
+So again just to recap. The bare minimum you need is
+If you need to troubleshoot you should check the logs on the ingress pod or use describe on the ingress ReplicationController and ingress pod.
+kubectl describe po traefik-ingress-controller-sum0t
+If you want to map ingress rules to services on different namespaces you need to add that to the ingress rules (not ingress pods). As an example, here’s a mapping for the kubernetes dashboard running in the kube-system namespace.
+Make sure you expose the kubernetes dashboard service on a NodePort first.
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+ name: kubernetes-dashboard-ingress
+ namespace: kube-system
+spec:
+ rules:
+ — host: kubernetes
+ http:
+ paths:
+ — path: /
+ backend:
+ serviceName: kubernetes-dashboard
+ servicePort: 80
+Service ports won’t conflict even if multiple services export port 80. They automatically get remapped to a high port (stated earlier) when exposed as a NodePort. It’s one of the key benefits to giving every pod and service an IP and using network subnets (usually via overlay networks) on each node in the cluster.
+Ingress mappings are absolute paths after the given hostname. They also pass the trailing path on to the service so make sure your pod accepts traffic on that path.
+An example is below. This would try to forward /ui to the kubernetes dashboard which is not a path the dashboard accepts traffic on so you won’t get what you expect.
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+ name: kubernetes-dashboard-ingress
+ namespace: kube-system
+spec:
+ rules:
+ — host: kubernetes
+ http:
+ paths:
+ — path: /ui
+ backend:
+ serviceName: kubernetes-dashboard
+ servicePort: 80
+Path rewrite rules depend on the ingress pod support. Most load balancers have options via rule annotations. Deis router + uses annotations for all load balancer options. Openshift uses HAproxy + with custom configuration. Traefik has a StripPrefix option and nginx doesn’t have rewrite rule options yet.
+Ingress mappings need to specify if they should recursively map to a service. For example if you have /foo and /bar mapping to service1 and service2 but you also want /foo/_ and /bar/_ to map to the services you need to say so explicitly.
+apiVersion: extensions/v1beta1
+kind: Ingress
+metadata:
+ name: foo-bar
+spec:
+ rules:
+ — host: myhost
+ http:
+ paths:
+ — path: /foo
+ backend:
+ serviceName: service1
+ servicePort: 80
+ — path: /foo/*
+ backend:
+ serviceName: service1
+ servicePort: 80
+ — path: /bar
+ backend:
+ serviceName: service2
+ servicePort: 80
+ — path: /bar/*
+ backend:
+ serviceName: service2
+ servicePort: 80
+]]>Microsoft recently announced Windows Subsystem for Linux (WSL) which allows you to run some Linux binaries on top of Windows using an API remapping layer to translate Linux API calls to Windows API calls. If you want specifics you should probably ready the Ars article + because I’m not going to go into the history or reasoning. Instead I want to look into why it doesn’t matter for the future of Windows development.
+I think it’s obvious that Microsoft is trying to win back, or at least stop losing, developers to OS X and, to a smaller degree, Linux. They need to keep developers because as more of the world is consumed by software there is a greater demand for people to write that software. The people that write the software are often influencers in technology, whether they should be or not, and shape how corporations are built, friends interact, and Thanksgiving support calls are performed. If those people all decide to get Macs then you can bet that even if they’re not Apple zealots they’ll let their friends and family know they should just “get a Mac” when they’re asked for help with any other platform.
+Microsoft also needs to keep developers on their Windows because they can’t risk being the minority. If they ever become a minority then the idiosyncrasies of Windows + will become even more evident and they’ll have to conform to majority standards or be left behind. This obviously breaks the ever-so-sacred backwards compatibility that has kept corporations locked to Windows for decades.
+Let’s look at these quickly so I can explain more.
+WSL is tucked away as a developer feature which then needs to download an Ubuntu image which then allows you to apt-get a package. Who’s idea was that? That sounds like a terrible development workflow. How do you manage the (sub)Linux system? Is there a os -reset option to give you a new clean environment to develop with? Should you apt-get dist-upgrade to a new Linux release? Can you keep multiple installations of different versions?
+Sure you can now run that terrible bash script you copy/pasted from Stack Exchange and maybe curl https://get.rvm.io + | bash but those were never good experiences to begin with. This whole process just sounds like it’s going to proliferate the “it worked on my (sub)system” syndrome. With VMs you can at least snapshot the disk or revert back to a known state.
+You know what solved all of those problems a while ago? Vagrant + and VMs. Yes, it consumed more resources. Yes, you still needed a hypervisor. But that is still easier than the above scenario. And VMs have amazing abilities to snapshot their state, run any flavor of Linux and even make environments shareable + so you don’t have to do everything yourself. Putting your script in your local directory + and running vagrant up and vagrant destroy sounds a lot better then trying to maintain environments on two simultaneous operating systems with no easy way of reverting back to a known state. In the future Otto + is going to make this even easier because you can easily deploy your code which both WSL and Vagrant lack.
+But none of that really matters because the open source and web development Microsoft is targeting is abstracting away from Linux. A lot of development has moved to PaaS offerings like Heroku and Google App Engine and don’t care about the OS. New stuff is moving to serverless infrastructure like Google Cloud Functions + and Amazon Lambda + or static binaries written in GO. Everything else is going into containers. These are all better solutions than WSL because they make repeatable, deployable artifacts where the developer doesn’t have to manage a base OS and they don’t have to care about apt-get v dnf.
+Luckily for Microsoft, PaaS, serverless, and static binary development all work just fine on Windows. Native container support + is in the works (which is more than can be said for OS X). It might be interesting if container support comes to non-server Windows distributions and can be run on top of WSL. That way you can use Linux containers in Windows which solves some of the problems.
+I think it’s too bad Microsoft misses what OSS developers want. Developers want automation and open standards for everything. A proprietary and invisible layer on top of an un-automatable OS is not going to cut it. Developers want dotfile repos, they want text configurations, and they want small and composable tools +. If something breaks they want the visibility to disappear into source code for 2 days and emerge triumphantly with a bug report and pull request. Microsoft is trying to build that experience with tools and layers when what we really want is the ethos of free (speech) and open (standards).
+]]>After reading the Major Linux Problems on the Desktop + article I thought I would point out some of the major successes for Linux on the desktop that I probably wouldn’t have known about if I weren’t using Linux on my laptop and multiple desktops. Let me be clear that I mostly agree with the points in the above article. I read the whole thing, including some comments, and also read the Best Linux Distro for the Desktop + from the same author. There are many bug report links, mailing list threads, and various comments on that page that detail some problems people have had. I would also argue, given the time, similar lists could be made for OS X and Windows.
+I read the article keeping in mind that the author generally likes to complain about things. See other articles about Windows 10 +, Android +, and iPhones and iPads +. With all of that, I am not going to rebuttal every point. I would like to refute a few points I found not to be the case but I want to point out the major advances in Linux on the desktop I have seen in 2015.
+I know there were more things than what I put on this list but in an effort to publish this before the end of January I’ll leave it where it is. There were plenty of other things I know impressed me about Linux on the desktop but it mostly comes down to flexibility and control. Being able to run whatever version I want on whatever hardware and not fall behind with security or features has been exactly what I want. And that’s not even talking about the flexibility Linux provides for user environments or customization. In 2016 I’ll try to keep a list of items so I can better remember them for a followup in 2017.
+]]>Here’s my talk from the Southern California Linux Expo 14 (SCALE14x) this weekend.
+ + + +This article is in reply to a post on Lifehacker +. While I think they usually do a pretty good job I think there were a lot of day-to-day usability things they missed.
+I have owned all three devices, here are my thoughts to add.
+This was the one I hoped I would like and use. I often recommended the Roku 3 to friends/family. When I got the 4 the interface just seemed far too outdated. Lots of the apps didn’t work at all (PBS apps especially) and Netflix would crash almost every other day. I also got into situation when sound just stopped working and the device would have to be restarted. I tried resetting factory defaults to see if it would help but no luck. With a family who uses the device I often got calls and had to walk them through troubleshooting and restarting the box.
+I only kept the Roku for 3 weeks before returning it. Although I know my friends who have the Roku 3 don’t have the same problems I also know they only typically use a few of the popular apps (Netflix and Plex mostly) which don’t have the same problems.
+I have content in the Google ecosystem and really liked that HDHomerun had an app for Android TV for live TV. There is also a native Kodi app which is what I was already using on my HTPC. It seemed like a easy sell but Google has a complete lack for understanding how a family would use a common device. It was annoying to have to log into my accounts and then have recommendations show up based on my YouTube watching and my music listening. I listen to a lot of techno/trance at work and unfortunately album covers are not often family friendly. It could easily be solved with multiple profile sign in which exist on other Android devices but sadly are omitted from Android TV. In the latest marshmallow update you can turn off recommendations but then there’s just a big blank section with a row of unsortable icons. It’s nice to have USB OTG (I bought an ethernet and USB hub +) but getting the Nexus Player to work with my Logitech + without an IR receiver was a complete PITA. When I had the Nexus Player Plex was only available for paid accounts and Kodi was barely usable because of remote limitations (Kodi not designed to work with only a select and back buttons) and app crashes. Also Google Cast is no where near as reliable as Chromecast. More often than not streams would fail. I bought a Chromecast and plugged it into the same TV because it was so bad (it’s slightly better in Marshmallow). With Android TV I have no faith Google will keep it updated. The Marshmallow update had almost no TV enhancements, apps are not coming to the platform, and I used to own a Google TV which obviously was abandoned.
+I ended up paying for a Plex account and switching from Kodi to Plex for local content consumption. It solved some of the limitations but I still had lots of content I couldn’t watch that I had available on the Roku. Notably Amazon, PBS, and Disney apps were all missing from Android TV and with family members who need to watch content when I’m not home and do not always have the ability to use Google Cast I needed a better solution.
+I owned a 2nd gen Apple TV (to run XBMC) and resisted buying the 4 for as long as I could. My wife and I are mostly Apple haters on principle and the only content I have in the Apple ecosystem are free songs/movies from promotions. It has been the best TV experience of any STB I’ve owned and even my wife has said she’s sad she likes it so much. The only times I get calls to troubleshoot are when my Plex server is down. The remote with HDMI CEC works flawlessly and because of the volume buttons the Apple TV remote has replaced my $60 harmony for 99% of my TV usage. The ability to put the system to sleep, turning off my TV and receiver, is a nice touch too, Roku and Android TV don’t have that. Only occasionally do I use a Blu-ray disk and need my harmony to turn on my PS3. I also use the Apple TV with Bluetooth headphones, similar to the Roku’s feature, and really like the ability to “reduce loud sounds” at night. I don’t use the Apple ecosystem at all (Netflix and Plex mostly) but almost all the apps I used on the Roku are also on the Apple TV, minus Amazon and Google Play Movies, and every app is better quality, more stable and faster, on the Apple TV. For those two missing apps I’m the only one who uses them so air play works but has the limitation of needing my phone to push video to the Apple TV, unlike Google Cast.
+Although SiliconDust doesn’t make an official app for the Apple TV there is a Channels app + which works as good as the Android TV app. It was a bit expensive but worth it for guide data, reliability, and ease of use.
+The screen savers on the Apple TV and Nexus Player were about equal. I liked Android TV’s slightly better because I could manage the shared album from the web but it had less options for transitions and required I install the Google Photos app on everyone’s phone.
+When I needed to decide which device to keep I thought about which device will be supported and updated in 2–3 years. I really want Roku to stick around (pun intended) but they have stayed mostly stagnant with software for the past 2 years. Google has not had a good track record for side projects (especially on the TV). Apple has made drastic changes to the Apple TV for years but I suspect their app store and 3rd party support will be around for at least 3 more years in its current iteration.
+]]>I’ve been using Twitter for a long time now. I’ve gone through many 3rd party apps, used it over SMS, and have tried various things. After many attempts to get the most out of the service, here is how I’ve been using Twitter for almost a year to great success.
+First of all, some things I had to change about how I used Twitter
+You don’t have to follow thousands of people (I currently follow about 450) but if you are too selective you’ll miss a lot of the benefits of the network. I used to follow ~50 people. I was able to read every tweet but never found much use from twitter. Most of the tweets were things I had already read through RSS feeds or in person conversations.
+So what do you do now that your feed has too many tweets? Make a list! I have a private list called “watch” with only ~20 people. These are friends or insightful people that don’t spam tweet often and I usually like to engage with. I don’t use that list when I’m on my phone but it is a permanent column in tweetdeck. Whenever I’m at my computer I can easily check it to stay up to date.
+I use my mobile feed to see what’s happening now, if I’m too far behind (6–12 hours) I just skip to the top and sometimes scroll back to the “While you were away…” section. The official app is pretty good at surfacing high engagement tweets in that section.
+
I also make lists and subscribe to lists for accounts I’m interested in but don’t want to follow all of the time. For example, I have a security list + to keep me up to date on security happenings. But it’s only something I look at when I’m at my desk and when I want to search for a specific story or something catches my eye.
+Tweetdeck in the web is really good at letting you save searches to a column. I often will find an event I’m going to or want to stay up to date on, I find the hashtag(s) being used, and I save a column for a few days. It lets me watch for popular talks and find new people to follow.
+With permanent lists and temporary searches I find it useful to engage with people often. Being a passive watcher will never let you find out as much information as being active with the community. There are lots of other ways + you can use and make lists. I suggest you play with them and see what works for you.
+I also find it very useful to automate tweets. I mostly use IFTTT + for sending links I think people will find useful. But I also combine that with services like Buffer + to make sure my 2 a.m. pocket favorite doesn’t become a worthless tweet no one will see.
+Click to add recipe to IFTTT
+
Tweet github starred repos
+
I also use twitter to automate other parts of my online life. Favorites/hearts are only temporary bookmarks for me so links can automatically be saved to pocket.
+Click to add to IFTTT
+
With the above behavior changes and some of the tools I’ve set up around twitter I can be as active or passive as I want. During big events I’m on twitter constantly and engage with lots of people. But when I need a break I can unplug for a few days (or weeks) and not experience FOMO +. By the time I’m ready to sign back in to twitter, I can easily catch up on users I want and the rest is just noise.
+]]>In a tradition that is now 8 years running (2009 +, 2010 +, 2011 +, 2012 +, 2013 +, 2014 +, 2015 +) here are my predictions for 2016. My predictions have shifted from consumer technology quite a bit as I have focused my career but hopefully I’ll still make some accurate predictions for the year to come.
+If you haven’t already read my followup to my 2015 predictions you can find it here +.
+I think that’s enough. I caught myself rambling on hopes more than things I actually think will happen, but I can dream.
+]]>My predictions for last year + I was right about a lot but not always in the way I was hoping. Most of what I was right about were security and hacking still being a big part of 2015 and IE going away. Both were true although IE is only going away because of how forceful Microsoft is pushing Windows 10 and the Edge browser. Although Chrome is now the most used browser with Firefox just behind it.
+I was wrong that companies would start looking at Linux as a desktop OS but I have hopes for 2016. I’ll post my 2016 predictions soon.
+]]>
An injury from 1999 that still affects me today.
+]]>Earlier this week, we compared the iPhone and Android in a knockdown showdown + of features that matter to us. Upset with the lack of representation for webOS, reader Rothgar + repurposed our chart and offered this thoughtful (and sometimes angry) counterpoint.
+
The newest iPhone comes out in two weeks; the Android OS continues to deploy on better and better… Read more Read more +
+I understand that the iPhone is the king of the hill (well technically RIM is but they suck anyway and are only ahead because of the giant corporate following) and Android is the new buzz word, but how can so many comparisons just ignore webOS, the most intuitive, productive, and flexible platform? Honestly I really am sick of the fact that webOS is left out of most mobile device comparisons simply because the “tech industry” doesn’t use it because it isn’t cool enough to get headlines.
+The only thing that gets webOS into the headlines is when one of their amazing and thought provoking creators leaves Palm to work for another company. Why is this big news if webOS sucks? The truth is, webOS is fantastic and these other mobile operating systems will benefit from the talent behind webOS. But that doesn’t mean webOS is going to lose out because webOS is already ahead of all the competition.
+The thing that has held webOS back is the fact that it was only on two phones and one of those phones had questionable build quality. But lets face it, there will be a new webOS phone in the future and I think we can all assume that Palm/HP aren’t stupid about what hardware they need to use for the next webOS phone. The thing that finally made me write this rant was Lifehacker’s article + comparing iPhone to Android. I mean really, I understand that both platforms just announced major updates, (iOS 4 and Android 2.2) but I think that webOS, which hasn’t seen a major update for at least 4 months, is still ahead of the game and I think it is about time that people start to recognize it.
+I took the liberty to fix Lifehacker’s article to actually take into account all three competing mobile operating systems in the consumer market.
+Ed. note: We highlighted just how subjective our criteria were in our original post +. Where Rothgar completely disagreed with our criteria, he slapped a big Bogus stamp across that category. Here’s to an open dialog!
+
Ease of use; Winner: 2-way tieThis one we can call a tie between iOS 4 and webOS because both interfaces are just as easy to launch and run apps and both have little things that you need to get used to. Double tapping the home screen to switch apps isn’t super intuitive and neither is forward/back gestures in webOS. In either case, Android is the loser.
+Openness; Winner: webOSObviously iOS loses here, Android is open source for its core OS and allows installing apps from outside of the marketplace but so does webOS. Where webOS takes the cake is the fact that there is no rooting of your phone to get access to parts that are supposed to be locked down. How to root the phone is FREAKING IN THE DOCUMENTATION!!! It doesn’t get any more open than that. And let’s not forget the open nature of the platform to allow apps to be written in HTML, CSS, Javascript, or C/C++ if you want. Due to this wide open nature, amazing things like Preware has been made available to tweak every last “kernel” of your phone.
+Google also loses by making their “default” apps (Gmail, Maps, etc.) completely closed source and even takes down anyone who tries to share them. Palm on the other hand has written every built in app according to the standards they hold their developers to and made the apps all open source so you could see exactly how they built the app. Android and webOS are both fairly open, but webOS is more open and is the winner here.
+Battery Life; Winner: Bogus CategoryWhat is this doing here?!? This has everything to do with hardware and almost nothing to do with software. In any case, I think we can agree that Android loses this category with almost zero battery conserving settings and complaints on almost every Android device. This is a bogus comparison when trying to compare mobile operating systems. If this were a debate between the iPhone 4, Evo 4G, and Palm Pre Plus this would be a perfectly valid comparison.
+Multitasking; Winner: webOSThis is a no brainer. WebOS does multitasking better than any other mobile OS available period. Android is the only other one that even can run apps in the background but there is a reason that a task killer is the first thing every Android phone needs. And lets not even get into the difference between running apps and using approved services and fast app switching.
+Software Keyboard; Winner: 2-way tieiOS has evolved into the best software keyboard and Android actually gives you options for keyboards, I would call this a tie because if you want to use swype on Android, you can. A software keyboard is only good if you are used to its idiosyncrasies and can use it. Personally, I rarely have to get used to a hardware keyboard, but webOS doesn’t even have a proper soft keyboard option.
+System-Wide Search; Winner: 3-way tieThey all have it, they all work about the same with the same oddities and features. It is a tie. But just for the record, Android and webOS did it first.
+Notification System; Winner: webOSOnce again iOS is the clear loser here, and while I liked the idea of Android’s curtain at first it just plain sucks after using it for a few months. I can’t clear a single notification without clearing all of the notifications and I can’t have extended controls in a notification. I know it is possible, but in all the apps I have installed, I have never seen actual controls inside the notification, just an icon that always stays there and opens the app when pressed.
+Voice-to-text; Winner: AndroidThis works really well 80% of the time in Android and is the clear winner without a doubt. The bad thing is, I only use it 5% of the time I am inputting any text. So it is great 4% of the time I input text but really wouldn’t be a missed function and I still would prefer a proper physical keyboard.
+Syncing; Winner: 2-way tieWho the hell wants to plug their phone into their computer anyway? iOS loses here because you need iTunes for updates and setup. Android is great as long as you use Gmail and have a Google account. WebOS creates an account for you and stores all of your settings AND apps installed. So with webOS, if you break/lose your phone, you can log in with your Palm account and not only do all your settings from every service (sans Facebook) come back, but the apps you had installed come too.
+Non-Google Syncing; Winner: webOSEver heard of Synergy? You probably haven’t, but it wins. Gmail, Facebook, Yahoo, LinkedIn, and Exchange are all there, out of the box. There is no contest here.
+Tethering; Winner: webOSiOS is just now putting this feature in but because it has the typical Apple restrictions, (no tether in to the iPad, really?) and Android still costs money on any carrier that will allow it, webOS wins because it is available on the Pre Plus and Pixi Plus and is completely free on Verizon. Yes I know if you root your Android phone you can do it for free, guess what, you can do the same thing in iOS and webOS so no one cares. Heck, Windows Mobile 6.1 had this feature and it worked great and was always free, doesn’t mean WM is any good.
+Release/Update Consistency; Winner: Bogus CategoryHUH?!? really? What does this have to do with how good a mobile OS is? because you know you will get an update every year? Is Windows better because you get patches every first Tuesday of the month? Or the fact that a new and improved Windows will come out every 3–5 years? NO it makes it worse. This shouldn’t even be on this list.
+Customizable; Winner: 2-way tieIf we are talking about user customizations, Android wins hands down. Widgets are great, icons can be placed almost anywhere, and you can set anything you want as a background image. But if we want to talk about the underlying OS, that is a win for webOS. Just go look up Preware and kernel patches and then come back and see why I picked this as a tie for Android and webOS. Oh and I agree, webOS needs to allow more home/lock screen customizations. Widgets sure would be nice but not at the cost of slowing my phone down like it does in Android.
+Apps; Winner: 2-way tieWebOS cannot complete here. Both Android and iOS have >50,000 apps and at that point it just doesn’t matter. There will probably be an app for just about everything. I would actually call this one a slight win for Android just because you can still install apps outside of the marketplace and the web store they have announced should be a huge success. Oh ya, and that whole Apple approval process is a joke.
+Web Browsing; Winner: 3-way tieThey are all based on webKit so what does it matter. Some will scroll faster than others and some have better resolutions, but that all depends on the phone and doesn’t matter for rendering. Android and webOS may have slight wins over iOS because they have embraced Adobe flash but once again, that is a phone specific thing because the device has to be up-to-snuff for playing flash content. A three way tie.
+Gaming; Winner: 2-way tieAndroid doesn’t even have a language that enables the rich games that iOS and webOS allow. And besides the quantity, webOS has every bit of the quality as iOS so it is a tie.
+Music Player; Winner: 2-way tieAndroid’s built in music player is terrible, iOS’ is as good as any iPod’s (which doesn’t really say much), and webOS’ is just OK. The fact that webOS’ player is open source makes the player really stand out from the crowd when you install simple things like lyrics, and wikipedia searches straight from the player. I know there are better 3rd party players on all the platforms but that is not what we are comparing here. So it is a tie between stock iOS and stock webOS.
+Free Turn-by-Turn Navigation; Winner: AndroidThis is a killer feature, but lets be honest, this will probably come to iOS and webOS simply because Google can sell more ads if it exists on all the platforms. For right now though, it is a win for Android.
+Google Apps Integration; Winner: AndroidThis is like saying iOS has the best iTunes integration. OF COURSE ANDROID IS INTEGRATED WITH GOOGLE APPS. If Android did not have the best app for Gmail I think we would all be very worried. This is one of those arguments that fluffs Androids numbers IMO, but I will leave it in just for the sake of argument. Every mobile OS will integrate with their own offerings, the problem is, Apple and Palm don’t have email or web app offerings. This is more a win for Google and less of a win for Android.
+Google Voice; Winner: 2-way tieYes this is a cool feature, I have it (and have had it since it was Grand Central) but I never use it because it is iffy and I don’t think the service is quite there yet. In any case, both Android and webOS have native apps for Google Voice and iOS is stuck using a web page. Android integrates deeper into the system, but all of the basic features/settings can be set on either platform so it is a tie.
+So what is that total again? This time taking out the frivolous comparisons.iOS = 8Android = 10webOS = 13
+Do I own an iPhone, Android phone, or Palm device? No. I have a 4 year old Windows Mobile device (HTC Vogue) running Android 2.1. I have used plenty of iPhones and have convinced quite a few people to buy webOS devices. I just needed to let the few people who read this site know webOS is the best mobile operating system currently available on the market. I just hope other technology sites can finally recognize how great webOS is, and maybe stop focusing on flaws with a phone that came out when the original iPhone was still big news.
+You can read Rothgar’s original post on his blog + and follow @rothgar + on Twitter.
+*Originally published at lifehacker.com +.*T
+]]>
At my current job I have the luxury of a typical Southern California commute. It’s the worst part of my job.
+But, being the ever optimist that I am, I have been able to read (via audible) a lot of books I would have never had the chance to read otherwise. I have found that I don’t typically like fiction which means I end up reading a lot of self help, biography, and historical books. I recently finished a book that made me want to recommend a readlist (or playlist) for anyone interested in how technology got to where it is. I read all of these books out of order but I think reading them in the following order would be a great reference for anyone curious how we ended up where we are with computers, technology, and the Internet.
+The Innovators gives a more broad sweep of technology and I like that it starts all the way back with Ada Lovelace +. The Idea Factory is a good and somewhat sad story about what a group of scientists and engineers can do with freedom, resources, and time. Where Wizards Stay Up Late tells a story of the birth of the internet which fascinated me because in hindsight it’s easy to understand how the ARPANET would become the Internet. But for the engineers building it, they were just working one problem at a time.
+Finally, if you want to know what the future holds. I suggest you read these books in this order.
+ +Have any more books you’d recommend? Let me know
+]]>Ambient lights help with eye strain and glare from overhead lights. This is a simple light you can install in 10 minutes and should cost less than $20. There are other (more expensive) LED shelf lights you can get from IKEA but I had an old one lying around I wasn’t doing anything with.
+First step is to take the shield off the light so it’s more even.
+

Get some key hooks and hang them on the back of your monitor.
+

Hang the lamp on the back
+
Turn it on. Done.
+Originally published at 1n73r.net + on January 31, 2015.
+]]>That’s right, I took “technology” out of the title. Why, because I didn’t want to limit myself. As before, check out my previous years predictions + (they were especially bad for 2014). But never-the-less I will try again for 2015.
+What the hell do I know about games, I didn’t play a single game in 2014. I think the same things as last year about Apple coming to the market and virtual reality having a hard time finding a foothold, even though I really like it. VR will probably start expanding to other markets even more. Movies and TV especially.
+Tags: gaming +, predictions +, technology +
+Originally published at 1n73r.net + on January 1, 2015.
+]]>Over the past year I have had great opportunities to interview for positions at companies I respect, and some I didn’t. I wanted to share my experiences to help others looking to go down this job path and some general interviewing tips.
+This post originally appeared on Justin Garrison’s blog +.
+I’ve talked to quite a few companies, including:
+Each company was different in their approach to interviewing candidates. For most of the companies I didn’t make it past the screening call, but I got job offers from some. Most were for DevOps/Site Reliability Engineer (SRE) positions but for even those that weren’t, the interview process was similar enough to be relevant to my experience. Some companies sought me out, some I applied for, and some were through recruiters I had previously applied through who kept in touch with new opportunities. The companies that found me usually were via LinkedIn + or GitHub +.
+
This is often the hardest part, especially if you don’t have a lot of experience. I can’t say what works every time but this is what’s worked for me:
+For positions I was really interested in, I would actively peruse a role for one to two weeks at a time. If it didn’t pan out or I got no response, I moved on. It was also helpful to know that if no one is calling you back, it may just be a hiring downtime. I noticed most callbacks and emails at the beginning of January, and at the end of each quarter.
+
Almost every company starts with someone calling you, usually an internal recruiter, to give you an idea about the position, the interview process, and to weed out people who are under qualified or not really interested. In some cases companies don’t have internal recruiters and they work with outside companies. They’re different ways of working, and I had some great experiences and bad experiences with both.
+At first, this was the scariest part. Probably because my very first call was from Google, who is notorious for their difficult interview process. As time went on, I got more comfortable with screening calls because I was able to relax more and be myself. Some of the big companies are going to have tests for you that you’ll have to pass to make it to the next round, while others are just looking to see that you’re passionate, and to ask what type of work you’re doing now and what you want to do in the future. I’d suggest you follow these tips:
+Most of the screening calls did not involve tests, but the ones that did were nerve-racking and I did not do well. It’s important to note that the people doing the calls are often looking for how you handle problem solving, if you know what they consider to be the basics, and if you have a good personality fit.
+To get a better feel for the interview process at a particular company, try looking at Glassdoor + before your call so you can read about other people’s interviews and experiences. And to get more comfortable with screening calls it helps to simply do a lot of them. I didn’t turn down any screening calls even if I wasn’t interested in the company. It not only helped me get comfortable on the phone, but it allowed me to ask questions and see what companies were working on to better gauge the industry.
+
Some companies forgo the screening call and just send a practicum. This will be a test to show off your skills instead of talking about them. These range widely depending on the company/position and, for me, took anywhere from 6–30 hours of work to complete. I’m sure for others they would not take as long, but there was often one or two questions I was unfamiliar with that I would research until I was satisfied. Here are a few examples of tasks I was given:
+The questions above were one task on a list of tasks (3–12 total tasks per practicum). Not all tasks were as hard, but many of the tasks could only be completed if you had a lot of experience. It is very hard to research and provide an adequate response without taking a long time if you’re not familiar with the problem. I’m not sure what the typical turnaround is, but I returned my tests anywhere from four days to three weeks later, depending on the tests. That’s probably why I never had follow up from companies where I completed a practicum.
+My advice to get past the practicums is to get as much experience through work and hobbies as you can. If you don’t have the motivation, time, or resources, then try TrueAbility + and work through their tests. They are surprisingly challenging and give you a lot of well-rounded skills in this area. They also are timed so it helps you think under pressure.
+
I was called in to interview at a handful of companies. Some of the companies were remote so “in person” was via Google Hangouts. I could spend anywhere from three to four hours interviewing with different people. It usually started by talking to the manager of the team and then to different team members. In one case I was asked to prepare a 20 minute presentation for the team before we split off into individual interviews. While every company is different, here are some tips you might find helpful:
+Two of the best questions a recruiter told me to ask are:
+There are lots + and lots + and lots + of interviewing resources available online. Seek them out and study them in advance.
+As you gear up for an interview, you’re likely agonizing over the questions you’ll be… Read more Read more +
+
I’m not the greatest interviewee. I get insanely nervous pre-meeting: heart pounding, palms… Read more Read more +
+With a down economy, most of us have heard accounts of job seekers sending out 100, 200, perhaps… Read more Read more +
+Hopefully you end up with an offer. Again, there are plenty of tips online + about making sure you get the right offer. For one position I played these tactics as best I could — I never said a number (current or expected) until it was time for them to make an offer. At another company, I was open about my current and expected pay. Both were completely different approaches and I expected to see the former a much higher offer than the latter. I was wrong.
+One of the best ways to increase your income is through salary negotiations, either when… Read more Read more +
+Tactics are great, but they don’t change how much a company values you; it only changes what they are willing to pay within their limits. Value and willingness are different things. You should always try to find a company that values you and your role rather than just one that is willing to pay you more because you negotiated well for it.
+If a company is interested in you and say they are going to send an offer, make sure you are honest with them about your turn around time to make a decision. I got one offer and waited almost a week for the second offer to come in. Even though I had mostly made up my mind, it’s still good to compare your options side by side. You also need to make sure you take into account all of the benefits at each company. Look into their 401K, health, education, overtime, and other benefits. If you can, put a dollar amount to each benefit and compare the total offer and not just your base salary. You should also figure out if there are extra expenses that you’ll need to pay for. For example, my old job paid for my cell phone and home internet because I was on call 24/7. My new job does not have that responsibility nor does it have that reimbursement. It’s not excessive, but it’s an extra $2000/yr that I now have to spend.
+In any case, make sure you love the culture and the work. It’s hard to get to know people in such a short period of time, and people come and go. If the culture is a good fit for you, then new employees you meet will probably fit into that culture too, and you should get along with them just as well as previous employees. And if you love the work, you hopefully shouldn’t have to go through too many job searches in the future.
+Interviewing for DevOps/SRE/SysAdmin Positions + | 1n73r.net
+Justin Garrison lives in Los Angeles, California and work as a systems administrator for Azusa Pacific University. He was a co-host for the mintcast + podcast (2008–2010) and used to write articles for How-to Geek + (2009–2011).
+Image remixed from NattyPTG + (Shutterstock). Photos by Neil Williamson + (Flickr), Billy Brown + (Flickr), Alberto G. + (Flickr), and Maryland GovPics + (Flickr).
+Originally published at lifehacker.com +.
+]]>If you frequently send out mass email news letters and keep getting users replying to all recipients, or need to disable the ability to forward an email, Microsoft Exchange and Outlook have you covered.
+Exchange and Outlook enable their own special flags that can disable this functionality and it can be extremely helpful if you need more control over your sent emails. This add-in works in Outlook 2007, Outlook 2010, and Outlook 2013 if you are using an Exchange account.
+And again, this will only work if you connect to an Exchange server at work and are sending to people at work. This won’t work if you send to other people on the Internet, even if they are also using Exchange.
+To disable Reply All and Forward on your sent email head over to the link below and download the NoReplyAll add-in +.
+
Once you have downloaded it, close Outlook and extract the files to run setup.exe.
+
The setup will have you accept a few EULAs and depending on what version of Windows you have installed you may need to reboot once during installation.
+
If your system does need a reboot, make sure you allow the setup.exe to run after the reboot is complete. This window should pop-up automatically.
+
After the setup completes, you will be prompted to install the NoReplyAllAddin into outlook. Click install and then open Outlook.
+
Compose a new email and you should see two new options in your ribbon to disable reply all and forward. Click the buttons to disable those features and they will light up indicating that they are enabled.
+
Send a quick test email to yourself and your reply all and forward buttons should now be grayed out.
+
If the user tries to forward or reply to all from the quick menu in Outlook they will also get a warning message letting them know the feature isn’t available.
+
Make a note that if you are sending the email to anyone not on Outlook and Exchange the options will still be enabled for them to reply all and forward whenever they want.
+
If the person you are sending the emails to isn’t using Microsoft Exchange or Outlook you may also want to just BCC all of your recipients. This doesn’t stop them from forwarding the email but if they click reply to all it will only send the email back to you instead of spamming the whole list.
+As a bonus, the NoReplyAll add-in will also detect when you are sending an email without a subject or missing an attachment. A warning for snding emails with a blank subject is built into Outlook 2010 but in Outlook 2007 you will get this warning when trying to send the email.
+
A similar warning will pop up when you type the words attachment or attached in a email without having anything attached to the email.
+
If you would like to add more words to the list of words to look for when sending attachments you can add words under the tools -> options menu. You also have the option to exclude certain uses of the words in the bottom window pane. You can type each exclusion if you use any of the words in your signature or predefined replys.
+Note: Each word you want to add needs to be on its own line. Spaces and commas do not separate the key words.
+
For all the features packed into a free add-in you really can’t go wrong. If you are using Outlook and Exchange for all your emailing needs this is a must have add-in.
+]]>In the open source community you’ll often hear the phrase “free as in speech” or “free as in beer” in reference to software products, but what do these phrases actually mean? Let’s walk you through the meaning behind each.
+The terms are generally used to differentiate between free software, like the Internet Explorer or Opera browsers, and open-source software, like Chromium or Firefox. In a nutshell, it translates to “zero price” (gratis) versus “with few or no restrictions” (libre). Keep reading.
+
Photo by <em>Bill Oberon</em> +
+“Free as in beer” is the easiest concept to understand—free beer is a gift given to you at no cost with no expectations of you. The giver simply needs to pay for the beer and give it to you to enjoy without you needing to do anything. This is the “gratis” part of the phrase meaning “at no cost.”
+This phrase would apply to software such as Adobe’s Flash Player and Oracle’s Java—both of these products are freely available for anyone to use and enjoy, but the user cannot look at the source code and make modifications if they desire. You also do not have the freedom to distribute the software publicly or submit bug fixes or patches to have them included in the product. Finally, the giver e.g., Adobe and Oracle, is in control over which brand of beer you get and when you get it.
+Note: This is not to be confused with beerware licensed software + in which the user should they meet the developer in person, buy the developer a beer if they find the software “worth it.” Beerware licensed software would still fall under the libre (free as in speech) category of software.
+
On the other hand, “free as in speech” is a matter of liberty and not just the ability to get the software for free. This liberty (libre) gives you four rights that a free beer does not:
+Free as in speech software is often released under the General Public License (GPL) and is sometimes referred to as “free software” instead of “open source software” to put emphasis on the _free_dom the software has.
+There are many different variations of GPL software and many other licenses + that would still provide the freedoms above, including beerware and WTFPL +. You can read more about truly free software at the Free Software Foundation + web site.
+When it comes down to it, you either have the freedom or you don’t.
+]]>TL;DR — I was using an iPhone 4s for two years, an iPhone 5c for a few months, I really liked how fast and small they both were. I bought a Nexus 5, used it for a couple weeks, but didn’t like the size and poor camera performance. I bought a Motorola Moto X. It’s not as good as an iPhone, but it’s the best Android phone I could find.
+First here is just a little bit of background about my phone priorities because my priorities are probably not yours.
+And just to be thorough, here are a few things I really don’t care about in a phone
+With all that said, I’ve had a lot of smartphones in the past. In 2011, after webOS’ demise, I settled on the iPhone 4s as a good smartphone for my needs. It was small, fast (for its time), and had the best cell phone camera on the market. Even after two years of using it and iOS 7 update I didn’t feel the need to buy a new phone immediately. It still fulfilled my needs with Google’s apps loaded on the phone and jailbreak tweaks that let me set default apps. I bought and used a 5c for a few months and really enjoyed the slightly larger screen, better camera, and insane battery life. Under normal usage the phone lasted a full 48 hours before it was dead.
+I bought the Nexus 5 within minutes of it being announced which is very unusual for me. I didn’t read a single review (there were none) but felt the $350 off contract price was a reasonable risk for me to take. If I didn’t like the phone I would sell it for full price or maybe lose $20–40 which was acceptable. Because I got the phone only a week after it came out that also means I was on Android 4.4 without any updates. Keep that in mind with this review because some of my complaints have been fixed via updates.
+The Nexus 5 had everything I was looking for on paper. I knew the screen would be a little big but I was hoping the phone felt smaller in the hand like the Moto X did. The Nexus 5 didn’t. I had multiple issues with activating the phone but that was mostly an Android problem and not the Nexus 5. After activating I had problems with apps not installing until I rebooted the phone each time and various other weird issues but as far as I know, they were all problems with Android 4.4 and not the Nexus 5. I didn’t hear of a single other person having these problems.
+The hardware looks great. The black one is completely black soft touch without any faux textures or needless embellishments that drive me crazy on phones. The edges have a slight taper which felt really good when holding the phone. The soft touch was also extra grippy, similar to the old IBM Thinkpads which was great. If you bought the white one, I’m sorry, it looks pretty bad and it’s glossy plastic.
+The screen was stunning, it almost looked fake. Not only is it 1080p but the IPS LCD made the image look hyper realistic. The touch screen was so responsive it removed some of the feeling of interacting with a phone. The screen was too big to comfortably use with one hand so I always resorted to using two. It wasn’t terrible but got annoying coming from an iPhone 5c. The screen looked great while reading documents and watching videos but the traditional LCD backlight got a bit annoying when trying to use the phone at night. I typically like to read light text on a dark background, but that really only works well for OLED screens which don’t have traditional CCFL backlights. I had the same complaint with the iPhone but because the Nexus 5 had an inch bigger screen it felt like looking into a flashlight while trying to read.
+The power and volume buttons had a good feel and placement on the phone and the speakers were louder than the iPhone. The earphone hole was really small though. I often found that I missed it when holding the phone to my ear and had to slide the phone to the right spot to be able to hear a call.
+The micro USB on the bottom was “upside down” which was annoying and the camera lens protruded slightly from the back which made me always a little nervous I would crack it. The official cases fix the lens problem by adding some extra thickness to the back. I really like the colors of the cases but dislike cases enough that it wasn’t something I considered.
+The battery wouldn’t last quite a full day. I consistently take my phone off the charger at 0600 and return home from work at 1800. By that time the phone would have about 10% battery under normal usage. I never trusted that because if I had a day of heavy usage I’m sure it would not have lasted through the work day.
+The camera was, for my uses, unusable. Everything was a blurry mess. The shutter was so delayed there was no chance I was ever going to get a decent picture of a moving target. Here are just two samples to show you what I’m talking about.
+
This was the best of three pictures I took. And it still does not look very good with over exposed light and blurry cars.
+I haven’t used the Nexus 5 since the 4.4.1 update came out and fixed some of the camera problems, but it was such a bad first impression that I gave up.
+Just to wrap up the Nexus 5 review
+Pros
+Cons
+I toyed with the idea of getting a Moto X before getting the Nexus 5 but the lackluster camera tests I saw made me hold off and if I were going to get one I really wanted it with a wood back. They also seemed too expensive initially at $200 on contract. After realizing I wasn’t happy with the Nexus 5 though I was able to get a promo code through Motorola’s black Friday sale which made a customized Moto X $350 off contract (same as the Nexus 5). I sold the Nexus 5 and got the Moto X even though the wood backs were not yet available. I got it because I found out you could get a soft touch back instead of the hard plastic that the in store Moto X came with from the carrier. I’ll admit The Verge staff also convinced me a little bit after hearing a lot of the editors on the Vergecast and Mobile Vergecast say they use the Moto X.
+Setting up the device wasn’t nearly as painful as the Nexus 5 because the Moto X used a micro SIM card which I already had in my iPhone. I switched the SIM and logged into my Google account as usual and then it started syncing apps and accounts. The problem was the phone was REALLY slow while syncing. So slow that I just set the phone down and let it sit for about an hour. I didn’t have that problem with the Nexus 5 nor with either iPhones.
+The Moto Maker option with soft-touch backs are pretty limited in color options so I ended up with an all black phone with orange accents. Disappointing, considering the cool yellows, reds, and blues they have but I also like the murdered look which is probably why I like how the Nexus 5 looks so much. The soft-touch isn’t as grippy as the Nexus 5 but was good enough to feel like a more solid device in my hand. The Motorola logo on the back has a slight dimple and for some reason I really like it. The phone is smaller than the Nexus 5 with a screen of 4.7″ and with the curved back feels really nice in the hand. The front half of the phone doesn’t have the soft-touch grip to it which looks a little odd but it’s not the worst thing in the world. The Moto X is closer to the iPhone 5 size than it is to the Nexus 5.
+The power and volume buttons are both on the right side (poor lefties) which I’m not a fan of because it makes the volume rocker pretty small and hard to activate sometimes. There isn’t enough leverage to make sure I’m hitting the right button when it’s in my pocket. The power button also seems to be mounted a bit low for a “smaller” phone. The speaker is mounted on the back of the phone which, thanks to the curved back, works great when sitting on a table. But if you try to watch a video or listen to audio you’ll end up cupping your hand and not be able to hear anything still. Everything else, hardware wise, is fine and the micro USB port is even installed the way I like (not upside down).
+The battery will last, just barely, a full day for me. At the end of the work day I usually have about 40% battery left (0600 until 1800) and I often can last until midnight with 5–10% left. It’s a big downgrade from the iPhone but enough I can live with. I wish the Moto X had wireless charging built in which would help getting through a day, but because it charges with micro USB I just make sure to charge it at lunch to make sure it will last.
+I have never had a phone with an AMOLED display before, and although I’ve used them in the past on friends phones I never realized how nice it is for night reading and clock displays. I haven’t had any problems seeing it in the sunlight, which is a typical complaint of AMOLED, but I find myself manually adjusting the brightness more than I would on the iPhone. I think that’s an Android problem because I have done that on all my previous Android phones too.
+The camera was my biggest worry with the Moto X. I had gone to the store prior to buying the phone and tested the camera just to see how Motorola’s customized software worked. I like the rapid picture mode, although it doesn’t work as well as the iPhone 5c, but I’m not sold on the tap anywhere to take a picture aspect. Overall the camera takes faster and better pictures outside than the Nexus 5 did and it doesn’t have the same shutter lag. The pictures inside are inconsistent with their color accuracy and macro shots are near impossible. Video works well and I like that it includes a slow motion video option. One thing I didn’t think I’d use was the camera gesture (two wrist flicks) but it works 80% of the time with is enough for me to try it first before using the lock screen shortcut. It gives a quick vibrate feedback and then opens the camera.
+

This shot took me about 10 tries before the charger was in focus and not yellow tinted from my lights
+An outdoor shot that any camera should be able to take but it still turned out nice.
+The rest of the Motorola add-on software is nice but sometimes a bit buggy. Here’s just some quick pointers on what they added.
+To sum it all up
+Pros
+Cons
+Overall I’m happy with the Moto X over the Nexus 5 but I have a feeling that in a year I will want something else. The phone will probably be too slow and because the battery will probably only last 1/2 a day. If I really wanted something I know I would be happy with in two years I probably should have stayed with an iPhone. I think most of my complaints with the Moto X are Android related and not actually problems with the Moto X hardware. Now it’s just a waiting game to see how long the Moto X will receive Android updates.
+Originally published at 1n73r.net + on January 15, 2014.
+]]>A new year is here so I’ll take another swing at how technology will change in the year 2014. This will be my sixth year doing a predictions post. If you haven’t read them before you should check out my 2013 post + and then take a look at some of the older predictions I’ve made +. I especially like my prediction from 2009 that Google would make a social network and twitter would be the next big social network. Anyway, here are some crazy, and not so crazy, predictions for 2014.
+1. Converging devices will finally become main stream. I know there have been devices in the past that attempted to solve the “one device to rule them all” problem. (e.g. Motorola Atrix, Asus Padfone) They have never taken off for three reasons, 1) they weren’t inter-operable, 2) they were slow, 3) they were expensive. I also know that many people already have “one device” because they have a keyboard dock on their iPad. In reality though, they just bought the cheapest Apple laptop they could. I think there will be a big name company (it won’t be Apple, see below) to offer their phones/tablets to be a true laptop/desktop replacement via a docking station that changes the user interface depending on what the device is plugged into. People have been trying to accomplish some of this functionality for a while with things like Ubuntu for Android, but the solution needs to come by default with the device for it to really take off.
+3. The year of the wearable computer! 2013 saw a lot of buzz in the wearable computer arena with the Pebble, Fitbit, Jawbone up, Samsung gear, etc. This year it will really take off because Google (via Motorola) and Apple will get behind the movement with wearables. I think most of the main stream adoption won’t happen until fall though because Google won’t announce anything until summer and Apple will wait for Fall. CES will be littered with crappy wearables coming out in early summer to beat the big name products.
+4. Blackberry will die. I have predicted this with friends but realized I never put it on one of these predictions. Blackberry will transition to a completely software company and will fail to generate revenue. They will be gone by Q2 of 2015.
+5. HP and Dell will get back into the mobile business. They probably realize by now they have to sell mobile devices if they want to keep revenue up. My guess is HP will make Android devices (they’ll suck) and Dell will make Windows Phone devices (they’ll suck even more). Samsung will spin off their own version of Android and LG will release a tablet with webOS.
+2. Web standardization is going to get a boost in 2014 for three reasons. 1) Security can be better when there is a good standard 2) user experience is better when everyone is on a level playing field 3) the least common denominator has been, and will continue to be, mobile. If companies want to reach the widest audience, they will have to design for slow devices, with small screens, and HTML browsers.
+3. There will be a new great website in 2014. This one is a little bit obvious but I think the thing that is going to be neat is the fact that it will do something we haven’t dreamed of yet. In years past there have been some sites that changed how people interact with the internet IFTTT +/Pinterest + (2010), imgur + (2009), and reddit + (2005) are all examples of this and I think the pace of innovation is getting faster. This year a new site, one that was probably started in 2013, will become a huge success and will eventually get bought by Google or Facebook. Oh and one of the previously mentioned sites will be purchase by a big name company.
+4. NSA backlash will cause big US companies to lose market share in other countries. Now that most of the spying secrets are out, many foreign companies will be looking for alternatives to the software they have been relying on for so long. Linux and open source software will be the big winner in most cases and Microsoft will be hurt the most. More and more countries will put efforts forth to build their own operating systems by customizing distributions of Linux to suit their needs.
+1. Virtual reality will be awesome, and niche. I wish I could say it would take off and I’m very excited for the Oculus Rift +, but I don’t see many people outside of hardcore, single player gamers adopting it. Real adoption will happen in 2015–2016 when it’s wireless, cheaper, and works with consoles. I look forward to the future of virtual reality not only for games though, I also think it’s a great way to watch a movie assuming the headphones will support surround sound.
+3. Apple will get into games in a big way with a new Apple TV, first party gaming hardware, and better game center integration. Apples efforts will make everything Google has done look completely worthless, if it hasn’t already, and Google will scramble to create a better gaming platform. In reality though, Google doesn’t care and will just leave the gaming to third parties which will all suck.
+1. Self driving cars will hit a wall. While this is mostly figuratively speaking, although I do predict there will be the first accident involving a self driving car while the car is driving this year, I think the real “wall” autonomous vehicles will hit is legislation. Even though some states have already approved the use of the cars, there is still a long way to go before someone can buy one. There are other hurdles like re-writing laws, adapting insurance, and building better/smarter streets. Google will probably try to build their own cars but I think China will make a big move to make their own self driving cars probably by ripping off other companies technology.
+3. Payment reform will begin but won’t be mainstream yet. It seems like everyone I talk to is waiting for mobile payments. It won’t happen with NFC, sorry Android fans, and geofencing is too inaccurate. Apple won’t get into the mobile payment business until 2015 (with iBeacon 2) so this year will be another year of mixed products like Google Wallet, Coin +, Bitcoin, and Square. No one will win and consumers who adopt one will lose because the standard will eventually be Apple’s solution. They will release it in 2015 and allow compatible devices (a.k.a. Android) to use it. I don’t want it to be true, but that’s what I think will happen.
+That’s all my predictions for 2014, do you have any you’d like to make? Leave a note in the comments if you think I’m right or wrong.
+Thanks to David Hepworth + for the banner picture.
+Originally published at 1n73r.net + on January 1, 2014.
+]]>In January 2014 I will have been using a standing desk as my main desk for three years +. Here are three tips I’ve learned along the way to make your endeavors with a standing desk a success.
+I currently use a padded mat and have soft shoe inserts (cheap ones from Target). For my first 8 months at a standing desk I wore Converse on a concrete floor. My feet and knees hurt so bad by Thursday I often had to sit down. I have since moved to a carpeted office, bought a mat, and have softer shoe inserts. I no longer have that pain in my feet at the end of the week/day.
+Some people think that because you have a standing desk you can’t sit down. You should make sure your desk has the ability to adjust for sitting or your chair can raise high enough to comfortably let you sit. I had back problems going into year three and had to sit for about a month to recover. Week to week I probably sit 10–20% of the time just to change my position. It’s OK to sit down if you want to. Making standing a requirement, for me, made my brain reluctant to do it. Having the option to sit made me want to stand all the more.
+Finally, this is the most important piece of advice. Always start your day standing. If you start off sitting your day will be over before you remember to stand up. The best way I have found to start my day standing is to move my desk/chair into standing position before I leave work at the end of the day. That way, in the morning I don’t have to move anything out of the way to stand and it would take me extra effort if I wanted to sit. By simply starting your day standing you will easily go 1/2 the day without even realizing you wanted to sit down.
+Good luck with those New Year’s resolutions and leave a comment if you have any other tips for being successful at a standing desk. If you don’t yet have a standing desk you should check out my old articles on how to buy or build a standing desk + and how to modify your existing desk into a standing desk +.
+Originally published at 1n73r.net + on December 30, 2013.
+]]>I just turned 30. I wanted to share 30 things I’ve learned in the past 30 years. Or at least the things I wrote down over the past 8 months.
+Don’t rely on school to give you an education.
+Always write things down, and always carry something to do so.
+You get what you pay for, especially when it’s free.
+Showing respect for someone is the easiest way to show you love them.
+Love should not expect recognition.
+Find a way to track what you do and stick to it.
+It’s not that the grass is greener; it’s just that the weeds are less visible.
+For the first 30 years of your life, you make your habits. For the last 30 years, your habits make you. (Still waiting to see if this is true)
+Being physically prepared is not enough for what lies ahead.
+Needlessly endangering lives speaks volumes for how much you care.
+Always return something in better condition than when you borrowed it.
+Figuring out what you love is the easy part. Discovering where and for whom to do it are often compromises.
+Words cannot open another’s mind. — Mumon’s poem about the koan
+If you don’t have time to do it right the first time, when are you going to have time to do it again?
+Worrying is the biggest waste of time.
+Where your look, you will go.
+It is better to make money than save money.
+Don’t expect other people to understand how you feel. Even when you tell them.
+Do not be wise in your own eyes. — Prov 3:7
+If you want to spend more time in something, then make more time for something. — source +
+Knowledge should be sought not ‘for superiority [over] others, or for profit, or fame, or power…but for the benefit and use of life’ — Francis Bacon
+People don’t buy what you do; they buy why you do it — source +
+“We learn more by looking for the answer to a question and not finding it than we do from learning the answer itself.” — Lloyd Alexander
+You are the average of the five people you spend the most time with.
+Don’t sulk over unfinished business.
+Originally published at 1n73r.net + on September 27, 2013.
+]]>I have been working with some of the above products at work for the past couple of weeks and I just came across the most succinct and straightforward answer to what each product is and what it is used for so I wanted to share.
+This all comes from Mike McCune + who explained this so nicely in the #Pulp channel of irc.freenode.net
+First, I did not realize that all of the products are Red Hat products. They are open source projects, but RH is the biggest contributor in each case.
+Second, all of the products are designed to replace/succeed Spacewalk +. Spacewalk is the upstream application to RH Satellite which basically lets you inventory and manage your systems. It has features for pushing updates, packaging rpms, and creating kickstart files for provisioning. While Spacewalk still works, new features/development is focusing on the new individual products.
+So what does each product do?
+Foreman +: Provisioning and Configuration Management
+Pulp +: Patch and Content Management
+Candlepin +: Subscription and Entitlement Management
+Katello +: Unified workflow and webUI for content (Pulp) and subscriptions (Candlepin).
+Katello does integrate with Foreman, but from what I can tell that is only for patch and content deployments and not provisioning/config management.
+I hope this helps anyone else trying to manage Linux servers.
+Originally published at 1n73r.net + on September 20, 2013.
+]]>I had this idea while driving into work with a friend and, like a lot of my ideas, I just wanted to throw it out there to discuss how, why, and what’s wrong with the idea. Please feel free to leave a comment to discuss.
+Disclaimer, I’m not a software developer so I really have no say into how this actually works.
+Version numbers are a unique name or number assigned to a specific version of the software. There can be public and internal versions but they typically increment from 0 -> ∞ or a — z. Often times there are also “code names” for releases which sometimes become more popular than the actual names themselves (see Ubuntu releases +).Incrementing version numbers usually are the form major.minor.fixes (e.g. 1.3.0 is major release 1, minor release 3, with 0 bugfixes). Incrementing versions can also have letters to help designate (pre)release state (e.g. 2.0.0b2 is the second beta release for version 2.0). Some systems also use odd numbers for development and even numbers for production (see the Linux kernel +).
+In many cases the above systems work. But lately I am not sure version numbers make sense, nor are they used in a way that helps customers. Software versions in a lot of situations are either a reference to the year the software was released (or supposed to be released) or are just a pissing contest to make sure the number is bigger than the competition (see Firefox +. Version .01 -> 3.6 in 10 years; version 3.6 -> 23.0 in 17 months).
+Oh and don’t forget the global assumption that anything <1 is complete crap so you had better change your version number from 0.25 to 2.6 (thanks Puppet +).
+So what if there was another way. What if, for the sake of the end user, current software was always just version 0 (naught). It doesn’t matter how many iterations or releases you’re on, the release you are shipping is 0. In other words, the current version of Firefox would always just be called Firefox.
+If this were the case, your support model will be to support versions -2 through 0. As new releases come out the older versions are known as negative releases or, depending on your release cycle, yearly releases. The version that is one major release old (and came out six months ago as of writing this) would be Firefox -1 (2013.02). People can easily look at this number an know when their software came out and also how current they are with the shipping version. Bugfix and minor releases would be handled in a similar manner by decrementing the version number of out of date software rather than incrementing newer software. Once you are up to date you are back to 0.
+Likewise, beta versions would be 1 and alpha would be 2. I’m not sure there would be many public versions above 1 and 2 but maybe development would be 3–4 and not ever released to the public.
+When I thought about it more, this is the way websites work. Not because it was designed this way, but because customers don’t have a choice in using an old version. They are always on the version that is available. Similarly, other things in the physical world (such as cars) often work this way. They sometimes append the year for identification purposes, and because they release most cars yearly, but a Corolla is always a Corolla. It is only made old by the fact that a new version has come out. Luckily for the customer, they don’t have to know what mark (a.k.a. version) the car is on, they just have to know they want the current one (FYI the Corolla is currently on MKXI or version E160).
+I know this idea doesn’t work well with version control, tags, blah, blah, blah. But it seems like something that works in the physical world, is highly consumer friendly, and because it gets version numbers out of the way, could be a very good thing.
+Originally published at 1n73r.net + on August 8, 2013.
+]]>I came across this and thought it may be helpful for someone.
+OS X only uses the traditional /etc/passwd and /etc/group files when running in single user mode so they are no help. Instead we need to do everything with dscl +.If you want to make a domain user part of the local admin group in OS X without needing them to login first you can use the following command.
+sudo /usr/sbin/dseditgroup -o edit -a “DOMAIN\Domain Users” -t group admin
+You can also set individual users as part of the admin group with
+sudo /usr/sbin/dseditgroup -o edit -a “DOMAIN\user” -t user admin
+Two important things to note is you need to use the full path to dseditgroup and the domain needs to be capitalized.
+You can also view what users are part of a group with
+sudo dscl . -read /Groups/admin GroupMembership
+and you can list all group names with
+dscl . -readall /Groups | grep RecordName
+Let me know if this helps you in the comments.
+Originally published at 1n73r.net + on July 10, 2013.
+]]>As a follow-up to my recent article about the best wallet ever +, I was given the opportunity to test some of the slim wallets available on the market. These wallets are all designed to slim down your wallet and protect your cards. As an added bonus they all look better than a rubber band! I used each of these wallets for a minimum of one week so I could try it out in day-to-day life with my usual set of cards, cash, and papers. This comparison is to help you decide on which wallet might best fit your needs. I try to stay away from picking “the best” because user preference varies drastically and the features I’m looking for in a wallet may not be yours.
+Here are all of the wallets I used in alphabetical order:
+


The Ainste Small Evan wallet was one of the classiest looking wallets by itself. The leather was a little thick/stiff but the inside was soft which protected the cards very well. Overall, the Small Evan struck the most balance of wallets tested between good looks, slimness, and flexibility of use. It wasn’t the slimmest or most flexible, but it had good trade-offs between all three. Using the wallet with all of the cards on the inside fold was a little difficult to get used to. Putting cards on the outside made the wallet much more efficient, but killed the aesthetics of the professional looking leather fold. The good news is you can use the Evan with cards outside the fold day-to-day and then put all your cards on the inside if you don’t want to flash your cash or need to look more professional. The Small Evan is available at a great price for what you get and they are working on an RFID blocking version, as well as adding colors +, which will be great for customization and security.
+


Before testing the Bellroy Card Sleeve wallet, I had a few reservations. I usually don’t like sleeve-style wallets because they are too hard to get cards in and out of, and too stiff to hold a lot of cards. The Bellroy has definitely changed my mind about sleeve-style wallets. The leather is really high quality and soft, and the angled slits on either side were perfect. Getting a payment card or ID in and out was super easy because of the angle and they were just deep enough to hold the cards securely. Cash was harder to get in and out of the side and middle pockets, but I found sandwiching the folded bills between other cards did the trick. The pull tab for the center pocket worked better than I expected. It’s amazing that I’ve never seen this on any other wallet before. The leather did stretch after a couple weeks, but the wallet looked great and was very thin. Efficiency of use was much better than I expected because of the side pockets and pull tab.
+


The CardNinja was the most unconventional wallet I tried. The idea was very well executed and the material used was a perfect fit for this application. I could fit a lot of cards in the CardNinja, but often had problems getting cash or papers in the wallet. The sticky back was able to be removed and replaced multiple times, so long as you peal it off from the bottom corner. The concept was hard for me to get used to and I found myself often trying to find my wallet while I was holding my phone. Whenever mobile payments become a reality, the CardNinja is one step ahead.
+


If you like the rubber band wallet, you’ll probably love the Compact Wallet. It is the only wallet I tested with a portrait elastic band rather than landscape. The elastic holds the cards really well, and the material allows the cards to slide in and out easily (even better than a rubber band). There’s also a colored plate for rigidity, separation, and ease of access to center cards. The Compact Wallet isn’t the most elegant looking wallet, but it was the smallest and felt really durable for day-to-day use.
+Link to Compact Wallet store +
+


The HuMn Mini felt like it was in a different class than the other wallets. The material felt really nice in your hand (aluminium plates) and even the packaging was a step above the others. It has the added benefit of blocking RFID so you can keep all your cards safe from scanners (if that’s something you’re worried about). The design was more flexible and customizable than any other wallet I tested, and the price reflects the higher standards. I had a difficult time getting used to how to use the HuMn +, but thanks to the flexible layout, I often used it with just one center plate. If you want something slightly larger and like to fold your cash in half, they also make a slightly larger version called the HuMn 2 which is a decent hybrid between a normal-size wallet and a slim wallet.
+


I wasn’t sure what to think about the Slim Clip before I started using it. I have never liked money clips or magnets, but knew quite a few people who loved this one. I was really impressed with how well this $4 clip worked. The card-holding side has little wings to keep the cards from sliding out, and the opposite side is for holding cash. I found the card side does not hold as many cards as I typically carry, so I ended up putting cards on both sides. However, the separation made it easy to locate either my ID or payment cards by having them on opposite sides. Anything more flimsy than folded cash was hard to get in the clip and it doesn’t really accommodate bills folded more than once, but for something so simple and cheap it had great functionality.
+I didn’t personally test these wallets, so I didn’t feel like I should comment on them, but here are a few other options if nothing in the list above suits your needs.
+

I enjoyed testing all the various wallets more than I expected. They all are really different in application, and you should be able to find something to fit your preferences. With all of the great options, even though it has been 2 weeks since I finished testing all the wallets, I still have not settled on which one I want to use as my daily wallet.
+If there’s a wallet you think I should have tested, or one that I should add to the “other options” list, please leave a comment below.
+Originally published at 1n73r.net + on June 24, 2013.
+]]>I have always had a bad relationship with wallets. It was just one more thing I had to carry because there was no way to keep IDs and money organized in my pocket on its own. After one of my wallets wore to the point of me actually throwing it away, I decided I’d try to make the most efficient wallet ever.
+Not with leather or Duct Tape, but with something that could do the job of holding my cards/cash together without getting in the way of me trying to get things in and out of it.
+I started with a rubber band (in a cross shape) holding my cards together. Thus was born the band wallet v0.1, at least for me, I didn’t know about the money band + until writing this article. This worked pretty well but every 3–4 weeks I’d have to replace the rubber band because it would wear out and break. No big deal because rubber bands cost almost nothing.
+The breakage wasn’t a big deal but I decided there had to be something stronger, something that would last longer. I found hair ties (the cloth bands with a fixed metal clasp) to not break like rubber bands and could typically last 4–6 months. This was a huge step in the right direction and the cloth band was easier to move out of the way than rubber.
+
Pictured above: Band wallet v0.3
+I used this wallet for 2+ years. It was great and I told everyone about it. I had convinced a couple friends to also use it as a wallet and after about 3 months of my friend using it he made an additional tweak to the design by putting the band over two corners which helped in getting cards in and out. He also used a thick rubber band instead of a hair tie or thin rubber band which let the wallet last for 6+ months.
+
Pictured above: Band wallet v0.5
+The latest incarnation of the band wallet takes another step forward for efficiency and also another step for longevity. It was discovered, by another friend, that not all rubber bands are created equal. Produce rubber bands are made out of a more durable rubber and are the perfect size for holding cards. The band wallet has now reached version 1.0 thanks to some crowd sourcing and design tweaking. It also has gone from something that I’d have to replace 1–2 times a year (and possibly pay for) to something that, so far, hasn’t been replaced once and hasn’t cost me an extra penny. The single wrap around the cards also helps with getting cards/cash in and out.
+
So what do I put in my band wallet? Here’s the quick breakdown because I have found this combination to be very efficient for everything I need.
+
Originally published at lifehacker.com + on April 8, 2013.
+]]>Google has a cool feature to let you sign into multiple accounts at once +, but in practice it really sucks. Here’s why, and also a better way to manage multiple Google accounts.
+Chrome and Firefox have the ability to set up multiple user profiles +. In Google Chrome go to the settings and click add a new user.
+
Once you do you’ll have new icon in the top left corner (at least in Chrome) with the icon for the new user. Click this drop down to select your new users and you’ll be prompted to sign into your Google account to start syncing your data. Each profile will be able to sync bookmarks, open tabs, search engines, passwords, and extensions individually so you don’t have to worry about opening your browser at home and seeing all your research tabs from work.Using multiple profiles allows you to have multiple windows open each with their own Google profile signed in. Any mailto, calendar, or docs links will open in the browser window (and Google profile) of the last active window.You now have the ability to also open multiple private browsing windows (one for each profile) for testing websites without cache, and logging in with additional credentials. Don’t want to test a new browser extension with your Google Apps domain admin user? Test it, and its security, on your personal account first without worrying about it stealing confidential information.
+
I have been using this method of managing my browsing habits and Google accounts for about a year now and I would never go back to the old multi sign on method. Got any tips for Google account management and browser syncing? Please leave them in the comments.
+Originally published at 1n73r.net + on March 11, 2013.
+]]>A while ago a friend of mine set out on a quest to make a 3D map of my work. At first the process seemed really easy. Just import some blueprints into Google SketchUp +, export that into Valve’s Hammer +, tweak some spawn points, and BOOM you have a Counter-Strike map. The process obviously wasn’t that easy and after 2 years of painstakingly editing textures, walls, and even the sky, the Azusa Pacific University (APU) Counter-Strike map was born compiled.
+The map is a model of APU’s west campus. It is not accurate to measurements and many things have been modified to better suit game play. Surprisingly offices and cubicles aren’t as much fun as you’d think. You should also look out for things like false walls, hidden trap doors, climbing rope, and teleporting towers.
+





To download the map you’ll need to download the zip file attached below and copy the two cs_Library* files into your counter strike maps folder. If you’re using Steam the path in Windows will be C:\Program Files (x86)\Steam\steamapps\<YOUR STEAM USERNAME>\counter-strikesource\cstrike\maps If that folder doesn’t exist make sure you have Counter-Strike Source installed and run it once to create the folders. After you copy the cs_Library* files, restart Counter-Strike and select the new map from the menu.
APU_Counter-Strike_MapEdit description +drive.google.com +
+Originally published at 1n73r.net + on March 4, 2013.
+]]>I was going to write a full review of the Surface RT but I just couldn’t bring myself to write a review for a device a have no reason to use. Here’s a quick rundown of my thoughts after having the device for a week.
+
I came to the realization that the Surface was designed by CEOs and directors who spend all day in a board room. The device is too hard to use anywhere else. At a desk, with the keyboard and if you have Citrix or RDP it can be very functional. Outside of that, I never chose to use this over my phone, Nexus 7, or laptop because the apps suck, the hardware is too heavy, and the ergonomics are not good. I wish the keyboard cover was detachable so I could at least set the Surface further away from me so the screen would be at the proper angle (the kickstand is not adjustable). Or it would have been nice to not have the keyboard at all so then I’d use the onscreen keyboard more (when it works). I don’t think the Surface Pro is going to solve any of these issues because the device will be even thicker, heavier, and get worse battery. For $800, the MacBook Air (or almost any other ultrabook) is a much better device plus it has a better keyboard/trackpad.
+Anyone out there have experience with a Surface RT or any other Windows 8 (RT or Pro) tablet. I’m curious to hear your thoughts.
+Originally published at 1n73r.net + on January 25, 2013.
+]]>Yay! Another year and another post for my technology predictions. Last years predictions went about 50/50 + with what I got right but I also was a bit aggressive with what I thought hoped would happen. Check out my predictions for what will happen in 2013.
+First of all, I really really hope that the Apple mania that has been going on for the past few years will finally die off. I don’t think it will though only because Microsoft seems to have shot themselves in the foot with Windows 8 being nothing that consumers were asking for.
+Speaking of Windows 8. This year Windows RT will finally become a viable tablet solution. It will only happen though because Microsoft will throw billions of dollars at developers to write software, manufacturers to make hardware, and advertising. There will be no real compelling reason to buy Windows RT over another tablet because Microsoft still won’t figure out how to make a compelling ecosystem. They also will come out with a new version of the tablet OS that will run on smaller screen devices which will allow hardware to drop to the sub $500 range. Of course, the smaller tablets won’t do anything that you really want because Microsoft will artificially limit their capabilities so you’ll buy a more expensive tablet.
+3. Smartphone hardware will start to level out this year and the spec race will turn into an ecosystem/software capabilities race. 3rd party manufacturers (HTC especially) will realize their limitations of not being a 1st party manufacturer. Apple, Google, Amazon, and Microsoft will all have their own hardware that can and will do things 3rd parties fail at. Because 3rd parties won’t have the benefit of making money from a robust ecosystem, they will either die or be absorbed into the main players.
+5. Google glass is going to be a huge nerd success while the general public will just think WTF. But then, another company (not Apple or Microsoft) will come out with a less obtrusive wearable computer (probably a watch or clothing) and everyone will think it’s amazing! Apple’s and Microsoft’s wearable computers won’t come out till 2014–2015.
+1. Startups will fail left and right. It will become a crashing reality for everyone trying to make it as a startup. There will be very few that are purchased by big name companies and the rest will fail. This will cause a slow down in web innovation as fewer people are willing to take a risk and lose everything.
+2. Ecosystems will become more segregated and users will have to choose their alliance. Companies are finally realizing what Apple knew years ago. Lock-in not only generates sustainable money, but it also makes it hard for users to leave. Microsoft, Amazon, and Google will continue to try to lock users into an ecosystem that is not only complete (music, movies, TV, OS) but also doesn’t work well with others.
+3. Facebook will also expand their ecosystem but their efforts to make money through Facebook specific promotions (gifts, perks, etc.) will ultimately drive users away from the service. Not that they will care if a million users leave the service, but there will be some out cry for people to stop using it.
+4. A new company will offer a non-tablet data only (LTE) mobile device with no voice calling. No carrier will allow it on their network because they won’t make money off of it and the new company will go under. Then in 2014 Apple will have an LTE iPod touch and everyone will say “Why didn’t anyone do this before?”
+1. Indie consoles everywhere! The Kickstarter fad is going to generate a lot of small consoles that will plug into your TV that will use your phone as a controller (via Bluetooth) and they will all kinda suck. They will all run Android or Linux and none of them will have compatible app stores. They will be super cheap (~$100) but won’t catch on because there will be so many terrible knock-offs that no single console can be the winner.
+2. Steambox will be the best new console! Although Steam Valve isn’t really new to the video game world, their console will be a huge hit. It will be announced at E3 and be available by Christmas. It also will cost less than a PS4 and probably the same as a Xbox 720. It will run Linux customized Ubuntu, have a limited number of games available, and have a vibrant hacking community. Ultimately the console will be better for Linux than it will be for Valve.
+3. PS4 and Xbox 720 will both come out this year. Am I the only one who is over big name consoles? Until the consoles have portability or virtual reality I think I’ll stick to casual gaming on my phone and computer.
+It’s no secret that movie theaters are struggling to keep attendance. This year I suspect they will start to get creative and try to offer things that people can’t get at home. Two years ago it was 3D, this past year it was IMAX and 48 fps, in the 1920s-1930s it was widescreen video. Next year I suspect they will have some new gimmick that won’t enhance the viewing experience. Arguably not everything movie theaters come up with is a gimmick, but I have a feeling whatever they come up with next will be.
+Likewise there will be more of a push to bring theater release movies to people’s homes. They will be outlandishly expensive but at least it will be something possible. In the next 5–10 years this will cause most movie theaters to go the way of the video arcade.
+3. Self-driving cars will be a consumer reality. For the states that have approved laws, car manufacturers (not just Google) will begin testing self-driving cars. The won’t be available to the public until 2014 but if you live in one of the few states that allow it you may see them on the road.
+4. The maker revolution will continue to grow. People making their own stuff and figuring out how things work has been driving a lot of innovation and next year it will only grow stronger as 3D printers become more accessible and information sharing grows. I suspect there will be a ~$250 3D printer that comes out and any company that encourages hardware modifications will be a consumer success even if most people don’t make any modifications at all.
+5. Someone will succeed where Boxee failed this year with an unlimited DVR. I have a feeling it will be Amazon. They will offer a set top box that is capable of watching live TV and they also will make “recordings” available through prime instant video for prime subscribers. They will be competing mostly with Hulu but they will make the STB so cheap that it will actually catch on.
+Originally published at 1n73r.net + on January 1, 2013.
+]]>Google has search appliances available for enterprise customers to house in their data centers to take advantage of Google’s searching and indexing abilities for web services and intranet resources. One such device is called the Google Mini +. Unfortunately, the Google Mini was also end of life’d as of July 2012 +. No big deal, it was replaced by better and faster appliances. Besides, the Google Mini is now 7 yeas old so it was about time.I happen to come across a Google Mini that was being retired so I took it upon myself to investigate what was inside. I also thought it might be fun to repurpose for a project or two.So let’s take it apart and see what’s inside. So far as I could tell the EULA didn’t completely forbid this + so long as the drive was wiped.
+The Google Mini isn’t super special outside from the fact that it’s a 1U server with a big blue sticker on top and the rest of the outside painted blue. There are also a lot of security bits that prevent normal users from opening them up.
+The sticker prevents you from opening the lid so we’ll need to peal that back if we want to see what’s inside.
+
Here’s one of the security screws
+
And here’s the master key we’ll use to get inside.
+
Once we get past that we can open up the lid by sliding it back and revealing the insides.
+
Let’s start by looking at the main components. The CPU heatsink is under the plastic shroud with just a single fan cooling off the entire server. The heatsink below the CPU is for the north bridge which handles communication from the CPU to the RAM. The black heatsink on the top right is for the PCIe controller.
+
The ports on the server are pretty standard for any desktop/server. An added benefit being this comes with dual network interface cards (NIC) which can allow for more advanced system management.
+
The server comes with 2GB of DDR2 RAM which you can easily see here.
+
The server has 1 PCIe 16x slot and 5 PCI slots. Not that you could use them in a 1U case though.
+
It also has 4 SATA controllers, 1 IDE hard drive controller, and a floppy controller. There is also an IPMI slot + which is used for out of band management (OOBM). The slot is missing the OOB network card. You can also see two headers for optional case-mounted USB and some jumpers labelled JWD which stand for Jumper Watch Dog. These jumpers allow the machine to automatically reboot if a software hang is detected.
+You can also see the Intel ICH6R south bridge for communication handling to the accessories. The chip near the top right of the picture contains the BIOS and the two pads on the bottom right of the south bridge allow for clearing the CMOS settings when jumped.
+
On the other side of the case are some more jumpers. These are labeled JPWAKE1 and JPUSB1. Both of these pins allow the server to be woken either by USB or PS2 keyboard/mouse input.
+
Along the rear of the case are also the two network controllers for the Broadcom network cards. This picture also shows us that the motherboard is manufactured by Supero and the model is a P8SCT. A quick Google search turned up the user manual + which proved to be very helpful when identifying some of the chips and jumpers.
+
The power supply is standard but to be thorough I might as well take a picture of that too.
+
When taking out the hard drive there are 4 screws on the bottom of the case that hold the damper screws to the hard drive. Luckily they’re labeled so it makes finding them easy.
+
Once you take out the screws the hard drive slides out. There is also a little air dam that keeps air flowing over the hard drive on it’s way to cool the CPU.
+
Just to be overly thorough of the motherboard, here’s a component layout from the user manual.
+
I hope you enjoyed the teardown. Just for comparison, AnandTech their own teardown in 2005 +. The internals on that Google Mini looked quite a bit different.
+Originally published at 1n73r.net + on December 11, 2012.
+]]>It’s not very often that I am so excited for a product that I go get it on launch day. Usually I am a skeptic who waits at least for a few reviews to come out before rushing out to get whatever it is. The Boxee TV however was one of those products I had very high hopes for and wanted to spend as much as it would take to try it out for myself (I had $325 saved up just for this). I have debated for the past year to buy the original Boxee Box +live TV tuner but after years of using an HTPC + and cable DVR I couldn’t bring myself to live by TV schedule anymore.
+Here is how I feel about it after my short period of time with the device. Sorry for the length of this review, but I really wanted to discuss all of the pros and cons I found with the device.
+First of all, if you’re not familiar with the Boxee TV you should really just go to Boxee’s website + and read about it for yourself. Basically the device is an internet set top box (STB) that also plugs into your unencrypted cable or over the air (OTA) antenna for live TV. The Boxee TV has internet apps like Netflix, Vudu, Youtube (and I’m sure many more to come).
+The killer feature that sets it apart is of course its live TV (dual tuners) and cloud DVR. The DVR functionality stores your recordings in Amazon AWS and allows you to have unlimited recording space (so long as you subscribe for $14.99 /mo) an also allows you to place-shift your recordings while you’re not at home.
+
The Boxee TV hardware is smaller than I expected. It’s about the size of a VHS cassette (if anyone remembers how big those are) and HDMI, power, 10/100 ethernet, 2 USB, and 1 coax input. There are no buttons on the front and once the device is plugged in it automatically gets powered on.
+The remote feels a little cheap but gets the job done. It has a normal d-pad with center select button, a play/pause button at the top, a home, back, …, and dedicated Netflix and Vudu buttons on the bottom.
+With a STB that is designed to watch and record live TV I found it strange that a remote would be missing a dedicated record button. I supposed it could be added in the … menu but still not quite as intuitive for less technically savvy.
+I did have one problem with the remote an that was that it doesn’t work with my Monoprice IR blaster +. I reached out to support (more on that later) and found that the Boxee TV uses RC-MM for its IR protocol. This protocol, however, is not very common in the IR Blaster world because it is fairly new so you may have problems getting an IR blaster to work. Tom + helped me out and said I should look for an IR blaster that works with AT&T U-verse because they use the same remote protocol.
+The second thing I noticed about the hardware was it got really hot when watching TV (or recording). So hot that I couldn’t swap out the antenna because the plug was too hot to touch. I grabbed an IR thermometer and read 144 F which was pretty shocking. Because the device doesn’t work with my IR blaster, I just have to make sure no one accidentally touches it while it’s out on my entertainment center.
+
Setting up the device was mostly uneventful. I did however run into two problems. First, I could not get the Boxee TV connected to my wifi. It could see the network just fine but would not accept the WPA2 password for access. Once I plugged in ethernet the device was fine. I haven’t attempted to connect to my wi-fi after the software update, but I’d recommend if you have ethernet near your TV, use it because this thing uses a lot of bandwidth.
+
Second problem was the fact that the setup code provided to me would not work. You are shown a code and then instructed to go to boxee.tv/setup to register the box for your account. I went to the site and my login wasn’t working. Then I realized that OLD Boxee accounts (for the Boxee Box and legacy Boxee software) don’t work with the Boxee TV. I made a new account and still couldn’t register. I ended up restarted the device 4 times until a code let me register on my newly created account.
+Once registered it was time to scan for channels. I tried two different scans, one with the antenna that came with the device and one with the antenna I have installed in my attic. I knew my attic antenna would get better signal but I wanted to try both anyway.
+

If you have the option to use a better antenna, you probably should. With my attic antenna I got 26 of the 27 broadcast channels available (although CBS is useless). With the included antenna I got 17 out of the 27 broadcast channels.
+I will note that the channels scans were incredibly fast (faster than my typical HTPC tuners) and faster than any TV’s ATSC scan I’ve used.
+The software feels a little sparse. Not only were there only a handful of apps, but the recordings and live TV functionality seems very lacking. Let’s start with live TV and recordings.
+
There’s no traditional guide layout, while you do get guide data from Boxee, not everything has information or nice cover pictures. Popular TV shows do but with only a couple dozen channels, I expected to have more information filled out.
+The guide is broken up into on now, and then as you scroll down you can see what’s on in 30 minute chunks. This interface was neat for thinking outside of the box, but is no where near as efficient and a traditional grid. And when I want to see what’s on at a glance, the 30 minute rows showing 5 channels at a time took a while to get an idea for what is on for the next hour.
+Looking ahead to what is on TV doesn’t matter all that much though because even if you did find something you want to watch, there’s no way to record the show from the guide. You have to go to your computer, log into the Boxee website, find the show on the grid, and start your recording from there. Hopefully that gets fixed in the future but as I said before, if I were to give this system to my parents, a dedicated record button on the remote would be better.
+Once watching a show, channel changing was really fast but currently you can’t pause live TV nor can your skip back/forward in a show. From the popup it appears this functionality will be coming, it’s just missing in the initial release.
+
You can pull up the un-handy guide with the left/right arrows and find something new to watch if you no longer want the channel you’re on, but I couldn’t find a way to see what’s on next.
+
One weird thing I couldn’t find was a way to stop live TV playback. If I push home or back the home menu would just overlay on top of the playing show. The only way I figured out how to make the TV stop playback was to go into one of the apps or hit the dedicated Netflix or Vudu buttons. This however sometimes had undesired results with an error message displayed on the screen.
+
Recordings worked well but there is a lack of settings that will drive any HTPC user mad. First of all, you cannot set a beginning or end time for recordings. This led to more than one show having the beginning or end cut off. I can’t even imagine how bad that would be for people who record sports regularly.
+Second, as I mentioned before, all recordings are done via the web page which is not a great experience and down right terrible from a phone or tablet (I used the Nexus 7). If there were a mobile app to manage this it could help quite a bit. The web interface has a better grid style guide but only has about 2 days worth of data so if the show you want to record isn’t coming up soon, you may have difficulty finding it.
+The search is less than stellar, but if you type in the exact query, you shouldn’t have too much trash in your results. The below example of New Girl returned 388 results.
+
Most of the time the streaming recordings look fine going back to the Boxee TV but I did have a couple occasions when playback looked particularly bandwidthy. I’m sure trying to show this fact in a scaled down image taken with my iPhone in less than optimal lighting will be hard to convey, but I can guarantee you Fox never looked this bad while viewing live TV.
+
Because the recordings are constantly being uploaded/streamed I would never recommend the Boxee TV to anyone who did not have fast internet or had bandwidth caps. I have FiOS (15/5) and most of the time I’d say the playback quality was higher than Netflix (not all that hard to do) but below what Vudu HDX usually has.
+Here is an average month of internet usage for me (I stream a lot of Netflix).
+
And here is my same internet on drugs with a Boxee TV.
+
In the month of October I uploaded 16 Gb of information. That’s a lot. In 2 days with the the Boxee TV I uploaded 81 Gb!
+Moving on to the apps, I only played with Netflix, Vudu, and YouTube. There are others, but more importantly are some that I find missing. Amazon VOD is absent, probably because Walmart owns Vudu and is partnering to sell the Boxee TV, and so is NFL Sunday Ticket, NHL GameCenter, Hulu Plus, and Revision 3. I know most people probably don’t care, but I regularly watch Revision 3 and thanks to a friend, watch NFL Sunday Ticket most every Sunday. I’ve already reached out to Revision 3 + and I’m hopeful they’ll come to the platform. For now I satisfy my Rev3 and Verge video feeds with the YouTube app.
+Speaking of which, the three apps I did try are almost identical to the PS3 apps which is both a good and bad thing. It’s good if you don’t have a PS3, it’s bad if you do because the apps are redundant.
+In all fairness the Boxee TV is much better and handling remote inputs (so long as you don’t need the IR blaster) and the PS3 is three times the price and you’d still want to buy a remote or $60 Logitech repeater +.
+I did find a couple things odd about the Netflix and Vudu interfaces when comparing the Boxee TV and PS3. The Netflix app seems to spread out the DVD icons slightly and everything was a little fuzzy. Mouse over the picture below to see what I’m talking about. Video playback in completely unaffected but the fuzziness was the first thing my wife noticed since she uses the PS3 more for streaming than I do. The second thing she noticed was that the audio on the Boxee TV “sounded like a tin can”. Upon further inspection it appeared that the Boxee TV had more weight toward the rear speakers and had an odd effect on the center channel to make everything a little more quite and echoy.
+(Boxee TV app shown without mouseover)
+

The Vudu app didn’t have the same fuzzy quality. The screen is slightly zoomed but I had no problems navigating or reading text.
+(Boxee TV app shown without mouseover)
+

Despite looking for differences, I couldn’t see anything different with the YouTube app and it worked just the same as the PS3 app including being able to sync devices (tablets and phones) for playback and control.
+All-in-all, if you get decent TV signal, you may find that you don’t need some of the sports apps and if you subscribe to the DVR functionality ($9.99 /mo for now) you really should cancel your Hulu plus account.
+The Boxee website is key to the experience of owning a Boxee TV. Unfortunately, I found that experience to be lacking.
+First of all, on a laptop it does great. The interface is a bit bare but works…most of the time. I had a few times of a simple loading screen and also had to disable some plugins (https everywhere and Lastpass autologin) to get into the site.
+
On mobile it’s a completely different site (actually it’s the same site it just didn’t work well for me on my iPhone 4S or Nexus 7). I tried to stream a recording while at work and got a loading screen for ~5 minutes, 10 seconds of playback, and then more loading.
+
Luckily, when I complained on Twitter Boxee employees were listening and care. Specifically I was shocked to get a reply from Avner Ronan the CEO and founder of Boxee.
+++BoxeeTV recordings streaming is worse than YouTube on dial-up
+— rothgar (@rothgar) November 2, 2012 +
+
He quickly replied and we started emailing each other to try and improve my streaming situation. He also helped me get in contact with an engineer to discover the problem with my IR blaster. I have a couple outstanding support requests and I have no doubt that they’ll take care of my needs. In a world of eBay, Paypal, and Amazon, it’s nice to feel like you matter to a company.
+The last things with the Boxee website were the Netflix credit was tucked away under settings ->; connected applications. You need to go here to redeem your free 3 months. The code generated for me didn’t work but I opened another support ticket to get that fixed.
+
And then I found this little gem buried in the settings talking about a free DVR service on the Boxee Box. I have no idea what the restrictions will be on the free service, but I am hopeful that it’ll open the doors for more users.
+
As I was using the Boxee TV I was really excited for what it brings to the STB market, but I felt like there were some obvious things that are missing. Of course my ideas probably are not your ideas, but these are things that I think the Boxee TV should be able to do or at least areas they can improve on to add functionallity.
+I had a hard time figuring out who the Boxee TV was for. I can’t say it’s for HTPC users who have a computer hooked up to their TV streaming all of their local and remote content. It’s not for users who just want live TV because every TV sold in the US today already has an ATSC tuner capable of viewing OTA and unencrypted content. The fact that the Boxee TV only has HDMI video shows that it’s not for people with older TVs because they may not have the right hook-ups to view live TV anyway, and it definitely isn’t for people who have an Xbox 360 or PS3 with more apps and added features (DVD playback, games, etc.). It’s also not for the TV downloaders out there who throw caution to the wind and download all of their shows with torrents/Usenet.
+But who does that leave? It leaves people like my parents who don’t want to pay for cable but want a DVR. For my non-gamer gamer friends who don’t watch much TV but would like to turn on a sports game once and a while and make sure they don’t miss The Big Bang Theory. For people who don’t have time or knowledge to manage an HTPC but also aren’t in the Apple ecosystem. Of course any of these people need to have the bandwidth available to upload and download recordings without penalty.
+For those people, the Boxee TV is a Godsend. Sure some of the the features may not be fully baked and some services don’t work 100% of the time. But unlimited recordings cannot be taken lightly, and a STB with this much potential is hard to ignore. In many respects, the Boxee TV DVR service can easily replace Hulu Plus without needing to worry about recordings expiring. A Hulu Plus subscription is $8/mo and for only $2 more you can have live TV, place-shifting, and streaming to any browser (not just any device with an app). For some, the Boxee TV is a gateway drug for a mostly extinct platform, the HTPC.
+I want to warn you though, you shouldn’t buy it because of what it might be, but because of what it is. If the basic functionality cannot meet your needs, hold off until it does. You can’t guarantee that a feature will exist in 3, 6, or even 9 months. For right now, the Boxee TV has a unique position in the market and I have already found myself recommending it to some friends/family who fit the above criteria.
+For my needs, however, it’s not good enough. I will continue to invest in my HTPCs, but will keep a close eye on the Boxee TV and gladly recommend it for anyone I think can benefit from its services.
+Originally published at 1n73r.net + on November 6, 2012.
+]]>First step is to tag a picture with #movietime in Instagram. This recipe uploads the picture to Facebook.
+
Next we make a text post on Facebook with a link to the picture.
+
Now we change our Twitter profile picture and tweet about the movie we are watching.
+
We also use the same Facebook post to update Tumblr.
+
Once the Tumblr post has been made we need to log the movie into Evernote.
+
We also create a calendar event for 2 hours on our Google Calendar.
+
And finally we turn off the WeMo light because of the Google Calendar event.
+
Originally published at 1n73r.net + on September 30, 2012.
+]]>It’s trivial to break into a Mac using an OS X boot disk +, but new Macs use a restore partition for OS installations. Here’s how you can use that partition to reset a user password and break into a Mac.
+All laptops that come with OS X 10.7 “Lion” or laptops that were upgraded to Lion have a restore partition for easy OS recovery. This easy-to-use recovery partition also opens up hackers to break into your Mac without needing any additional tools.
+To reset a user password on a Mac with Lion you first need to restart the computer and hold the Command+R (⌘+R) keys. When the gray Apple logo shows up on the screen you can release the keys. Your computer should automatically boot into the recovery partition.
+Start by selecting your language and then go to Utilities -> Terminal in the menu.
+
When the terminal opens, type the command
+++resetpassword
+
and the password reset utility will automatically start.
+
Once the tool opens, select the user you want to reset the password for and enter a new password (or nothing to blank the password).
+
Reboot the computer and you can log into the account with the new password.
+The only way for a Mac user to protect themselves from this attack is to either set a firmware password or encrypt their hard drive. Even if the recovery partition is erased from the hard drive a hacker can automatically restore the partition by using Apple’s internet recovery feature. Look for more details on these options in future articles.
+]]>The Apple TV is one of the best media streamers on the market, but if you don’t buy into Apple’s ecosystem it lacks functionality. Here’s how to supercharge your Apple TV by installing alternate media players like XBMC and Plex.
+The first thing you will need to do is jailbreak your Apple TV. Luckily the process is very easy and we have already shown you how to do it +.
+The next thing you will need is the ability to SSH into your Apple TV. After the jailbreak, openSSH server is automatically installed and turned on so you’ll just need a client to connect to the device and the IP address to connect to. We have already shown you how to use SSH in a previous article + if you need to review.
+To install XBMC first connect to your Apple TV via SSH. The jailbreak will automatically allow the root user to login with the password alpine. Use that username and password for your first connection.
+
It is highly recommended that you change your root password on the device. You can do so with the command passwd. Once you’ve changed the password use the new password to connect via SSH in the future.
+
Next there are a few commands you will need to type in one at a time (or copy and past from the list below).
+++apt-get install wget
+
This command will install/update your installation of wget which allows you to download files from the command line.
+
These next commands will add download sources for you to be able to download XBMC. Copy and paste these commands into your SSH client one at a time to avoid miss typing.
+wget -O- http://apt.awkwardtv.org/awkwardtv.pub | apt-key add -
+
+echo "deb http://apt.awkwardtv.org/ stable main" > /etc/apt/sources.list.d/awkwardtv.list
+
+echo "deb http://mirrors.xbmc.org/apt/atv2 ./" > /etc/apt/sources.list.d/xbmc.list
+And finally these commands will update your available packages, install the latest available version of XBMC, and reboot your Apple TV to reflect the new software in your menu.
+apt-get update
+
+apt-get install org.xbmc.xbmc-atv2
+
+reboot
+
All of the other functions of XBMC will work just as they do on any other computer. You can start by installing some addons +, new skins +, or set up a centralized media database +.
+If you are already used to XBMC this is a great option. The only downside is the fact that you need to launch a separate app whenever your Apple TV reboots. If you want to use some of the native Apple TV functionality such as Netflix you’ll have to bounce back and forth between the default Apple TV interface and XBMC which may be a hassle. However with the plethora of XBMC addons you may never have to leave.
+Installing Plex is going to be exactly like XBMC except we need to add a different repository first.
+SSH into your Apple TV and add the Plex repository with this command.
+++echo “deb http://www.ambertation.de + ./downloads/PLEX/” > /etc/apt/sources.list.d/plex.list
+
Update your sources and install Plex
+++apt-get update && apt-get install com.plex.client-plugin
+
Reboot the system with the reboot command and you’ll have a new Plex app in your main menu.
+If you already have a Plex media server running on your network, it should be auto-discovered and your media will be available for playback.
+
If you already use a Plex media server to stream your files then this is a great option for you. The downside to Plex is the need for a Plex server running somewhere on your network to catalog files. One of the benefits is the UI consistency with the Apple TV so you don’t need to bounce back and forth between apps to watch your content or stream Netflix. There are reports of some of Plex’s addons working with the Apple TV but they, along with this app, are not supported so if you have problems your only help will come from other users in the forums.
+FireCore takes a different approach to installation and give you a GUI installer for Windows and OS X. It is also the only 3rd party commercial software available for the Apple TV which means it will cost you $29.95 to purchase. We’ll leave it up to you if you’d like to buy the software, but the installation is dead simple.
+Once you buy a copy of aTV Flash (black), download the installer and run it on your computer.
+
It will automatically check for a new installer version and then should detect your Apple TV on your network.
+
Click next and the installer will copy the necessary files and add the menu items to your Apple TV. If you changed your root password you will be prompted for the new password during installation. Otherwise the installer will automatically use the default alpine password.
+
Your Apple TV will reboot and you’ll have a new maintenance option on your menu. Select manage extras and then install the media player.
+
If you haven’t already installed XBMC or Plex you can also install both of them from aTV Flash with just a click.
+
You can get more information about what aTV Flash can do at their website +. Once the media player is installed and sources have been added, it will show up on your home screen just like the other two programs.
+
While aTV Flash costs money, it has the benefit of not needing a media server running like Plex, and it integrates into the default UI unlike XBMC. There are also other added features but we’ll let you decide which media playback software is best for your needs.
+]]>Jailbreaking your iDevices allows for more options when it comes to software and usage. The Apple TV is no exception. Here’s how to jailbreak your second generation Apple TV so you can install software like XBMC, Plex, or aTV Flash.
+Jailbreaking your Apple TV does not mean you will lose any functionality, it only ensures you will get more options when it comes to how you want to use your device. Thanks to the hacking community, you can jailbreak your Apple TV in literally one click.
+You will need the following items to complete the jailbreak
+First start by unplugging any other iDevice from your computer. Then extract the Seas0nPass .zip file and run the program.
+
Click on Create IPSW and the software will automatically download the latest Apple TV software from Apple, decrypt the package, jailbreak the files, and repackage the installer.
+
Once the download is complete you will plug in your Apple TV to your computer with the microUSB cable without plugging in the power. When the light on the front of the Apple TV flashes repeatedly point your silver Apple TV remote at the device and hold the Menu and Play/Pause button simultaneously for seven seconds.
+You may need to wait for Windows to download updated drivers for the Apple TV to function properly in restore mode so give it a couple minutes to detect.
+
When your device is found you should get this screen to confirm the device is conected along with a screen that says uploading to device.
+
iTunes will automatically open and begin the restore process of the device.
+If iTunes does not automatically start, wait a couple minutes and manually start iTunes, the rest of the restore should be automated once the software is running.
+
Once the restore is completed you can disconnect the USB cable and connect the Apple TV to your television with power and HDMI.
+
You will need to go through the initial Apple TV setup to choose your language. Once the device boots completely you will know it is jailbroken by the temporary FireCore logo in the bottom right corner of the screen.
+
Once you’ve tried using a standing desk for yourself and decided you want something more permanent, your next option is to build a desk of your own or buy something you can use full time.
+We have already shown you how you can modify your existing desk to make it a standing desk +, but if you want more options or prefer something that looks more professional, here are some options to build or buy a permanent standing desk.
+Building a standing desk is a cheaper option than buying one that’s professionally made. It can also give you more options for space restrictions and allows you to include any drawers, shelves, or options you want.
+Here are some ideas to get you started with building your own standing desk from scratch. Click on the picture for a link with more information.
+
Our very own Jason Fitzpatrick + built his desk using two filing cabinets, four milk crates, and a door. The whole desk costs a fraction of a pre-built one and has served well for quite some time. Click the picture for a closeup of how he kept the crates together.
+
For $200, this IKEA modified desk looks great and has a ton of storage built in. Click the picture for the parts list and build instructions.
+
This is my work bench in my garage but it works as a great standing desk too. It is a piece of recycled wood for the top and four 4×4 posts cut to 36″ each. The legs are held to the top with shelving brackets. The bench cost about $60 for the legs, brackets, and screws and the bench top I salvaged from the trash. Click the picture for another look.
+
This IKEA hack uses a filing cabinet and table legs. It looks great and includes a book holder and takes up a minimal amount of floor space. Click the picture for the full build information.
+
This $40 stand up desk is one of the easiest to build. It gives you the benefit of having a lot of desk space and taking up no room on the floor.
+
This build costs a bit more but looks fantastic in a modern office. Chris also has some great videos explaining how he put everything together.
+
Much like the first shelf desk, this one hangs on the wall. The benefits here are multiple tiers and adjustable height. It may take a bit of work, but this could easily be converted for multiple computers and multiple heights and costs about $50.
+
With a few items from IKEA, this standing desk looks very clean and costs only about $200. Is a great idea if you can’t put holes in your wall or, like this picture, want the desk in front of a window.
+
This wall mounted IKEA DVD storage unit makes a great standing desk that can hide your cables from view. It only costs about $100 and an afternoon to set up.
+When you don’t have the time to build something, and have the money to spend, here are some great options for buying a standing desk.
+
The FREDRIK from IKEA is pretty much the gold standard when it comes to standing desks. It’s simple, adjustable, and has a plethora of accessories to go with it. It starts at $150 which makes it one of the cheapest standing desks you will find anywhere.
+
This is my current standing desk made by Ergotron. It attaches to a normal desk and converts it into a standing/sitting desk. There are a few different accessories (monitor mounts, large keyboard tray, shelf) and the price can add up when the base model starts at $380.
+
The GeekDesk is a great option when looking to buy a standing desk. Not only does it have a large work surface, but it also adjust to sitting height at the touch of a button. It comes in two different sizes as well as frame and desk top colors. At $800 the price can be a bit steep. Click on the picture for more information.
+
The UTBY is another IKEA solution that looks simple and costs less. This one is available in two different heights and is great for buying a standing desk in a small amount of space. Starting at $140 it’s also not going to break the bank.
+
If you want a stand up desk you can take with you, you should look at the Tabletote. It can be used as a sitting or standing desk and is completely self contained so you can put it in your bag and take it with you. Starting at $40 it is a great portable standing desk option.
+
If you’re in need of a corner desk that will also let you stand, Ergodepot has you covered. It’s not cheap, starting at $1200, but it would give you a lot of desk space and the option to sit or stand.
+]]>I recently started playing Tiny Towers (a couple weeks ago) and although I’m not an expert at the game, I found it intriguing because of the amount of planning you can use, or not use, while playing the game. Here are some things I picked up on while playing to help you scale your tower.
+There are three important factors when choosing a floor layout.
+Some strategies choose to group different types of floors together (creative, food, recreational, retail, service) so that bitizens can be easily managed in apartments and at their jobs. The problem with this strategy is you will have to keep spending money (bux) to move your floors so they can be grouped properly. Here’s an alternative to keep your floors in order and save you money.If you want to keep your stores staffed, you will need to have roughly 40% of your tower residential (see bitizen management for why). In order to do this in a way that scales, I put an apartment on every prime number (25 floors every 100 levels) and every floor ending with zero (10 floors every 100 levels). This gives me 35% residential floors but that is OK because the larger your tower gets, the lower you residential ratio gets (see below).The other 5 types of floors cycle in alphabetical order (creative, food, recreational, retail, service). This keeps them evenly distributed on non-prime/non-multiples of ten floors. This layout will help you figure out what type of floor any arbitrary floor is with the following equation.(Floor number — (prime numbers+multiples of ten)) / 5Whatever the remainder of that equation is will tell you what the floor type is. (1=creative,2=food,…0=service)For example, if we want to know what type of floor level 42 is the equation would be(42 — (14 + 4)) / 5 = 4 with a remainder of 4 which means floor 42 is a retail floor. You can easily tell what type of floor it is by the color the floor name is written in.In order to quickly find Bitizens there are two things I found helpful. First of all, you should rename every floor to something memorable. Instead of “Donut Shop” name it “Cop Hangout.” This will not only aid in finding bitizens, but it will help when placing bitizens into their dream jobs. When your tower starts to get big, you’ll inevitably forget what floors you have. So instead of a dream job being “Pizza Place” it will say “Little Cesar’s” which will be much easier for you to remember that you have the “Little Cesar’s” floor instead of the generic floor naming.
+
The second thing to find bitizens quickly is to dress up Bitizens based on floor themes. For example, you can see in this screenshot that my bakery is named “Loaf Monsters” and all the Bitizens are wearing the Monster costume (which also happen to look like loafs of bread). The costumes can also help in naming the floor something memorable. My video rental floor is called “overnight movies” and the employees wear overalls.
+There are two special things about each Bitizen
+Having a high performing Bitizen in a position (9 is the highest) will mean your inventory costs less than with a less qualified worker.A Bitizen working in their dream job will give you 2 bux when they are hired, and will give you double the inventory for the same price as before. The more dream job workers you have on a floor, the more items you will have with double inventory.The ideal Bitizen will be working in their dream job and rated 9 for that same position. For me, if the Bitizen is at least a 7 I’ll keep them on the position because I’d rather the extra inventory over the cheaper coin price.If you have a store with 3 dream job Bitizens and have another move in, it is worth it to make one of the existing employees jobless so you can hire the new one and collect the 2 bux. Once you get the money you can keep him there or evict him depending on his performance rating.Residential floors should be kept with 4 Bitizens per floor until you fill the floor with dream job employees. This will allow you to keep new Bitizens moving in and not miss an opportunity to hire the right Bitizen for a job. Once all 5 spots are filled with dream job employees you can keep the floor fully rented. Because it will take you a little bit of time to fill a residential floor you need to keep your residential/store ratio high until you start filling dream jobs. For me, I was able to keep residential floors partially filled and still fill all my available jobs without problems. Once I hit ~floor 25 I started getting residential floors with 5 residents which allowed me to keep filling positions.
+The only way to get bux is to actively play Tiny Towers. So the only things you should spend bux on is other things that will help you get bux faster. For me this came down to two things.
+Delivering Bitizens to floors and finding requested Bitizens are the two easiest ways to get more bux. Investing your money here will make sure you get you money worth in the long run vs. spending bux to fill inventory.Another worthwhile place to spend your bux is on store upgrades but that won’t help you get more bux. It will however let you go for longer periods of time without playing the game and still getting coins.
+There are other ways to do play and even a few ways to cheat at the game, but I just wanted to share what I found and how it works for me.Here is some extra links to let you dig deeper in your strategy. Most of all, have fun and don’t waste your money on bux, just have some patience and planning.List if VIPs and what they look like +Google doc spreadsheet of every store and inventory cost +A link to my tower after casual play for a couple weeks +
+
Originally published at 1n73r.net + on January 10, 2012.
+]]>As usual, here are my predictions for what will happen in 2012. Last year I played it pretty safe and was right on almost all of my predictions. Check it out here + and see how I did for yourself.
+2. Ultrabooks are going to be everywhere this year. They will try to compete with tablets and the MacBook Air but will only gain traction when they drop to $500 or less. A lot of users won’t even care though because they can do most of their work on a $250 tablet.
+3. Google will merge Android and Chrome OS in an attempt to compete with what Microsoft comes out with in Windows 8. It will work similarly to how Motorola’s splashtop works now, but accessories will be more universal and the lapdock OS will work better.
+1. Windows 8 will have versatile tablets and will serve multiple purposes as tablets/notebooks/desktops. Businesses will buy them by the boatload in an attempt to allow users to stay mobile and save some money. The tablets won’t be as functional as notebooks but will be the cool thing for at least another year. In order to use all of Windows 8′s cloud featuers you will have to start using Microsoft’s server backend which will sway even more users towards Apple computers. Consumers won’t really care about this functionality and there will be a small market for accessories and docks because the interfaces will not be universal like they will be for Android/Chrome OS.
+2. Desktop applications will take a hit in sales as more users realize they can do what they need with web apps. Google Docs and Office Live will start to gain steam with the general public, but I think another app entirely will become the winner. Probably something that integrates with Facebook. This will also help propel Google even further with Chrome OS.
+3. Streaming music will hit main stream and people will finally stop buying CDs. Spotify will probably be the winner because of it’s Facebook integration. We will also see other companies start their own music streaming services (Verizon, Comcast, etc.) and they will all be terrible.
+4. Streaming video will still struggle throughout the year because content providers will not lower the prices for digital downloads and streaming. Netflix will have some major competition this year and will continue to lose market as other competition gets more content, and has cheaper prices.
+5. Social network exhaustion will set in for many as options will continue to expand. By the end of 2012 Facebook will still be the clear winner in social but many users will just be worn out on trying to keep up with all of their online friends.
+6. Voice control is going to have a huge push because of devices that don’t have keyboards. Siri will lead the way thanks to hacks, but Microsoft and Google will both have answers in 2012. Neither will be as consistant on devices because they cannot control the entire ecosystem. Google and Microsoft will try to be more open with their voice control and will start to persuade users off of Siri, but Apple will allow 3rd party plugins and accessories which will keep a lot of the voice control usefulness on their side.
+1. Mobile gaming will die. The Vita and DS are doomed due to the fact that the consoles and games cost so much. People will keep using their phones, music players, and tablets as casual gaming consoles and won’t even bother to buy the more expensive consoles. Micro payments will be huge in 2012.
+2. Nintendo will struggle to find a new market. Their Wii U will be mostly unsuccessful in the US because of its expensive accessories and the fact that there will be so much other competition in the casual gaming space with cheaper and more versatile devices.
+3. Sony won’t have a clue what to do with the PS3 and how to integrate their services together in a fashion that is useful for people. This will cause more people to either move to the Xbox 360 or other casual gaming devices.
+1. 3D TVs will still be pushed in retail but won’t have any compelling content. More TV manufacturers will begin to look for alternative content uses for 3D such as video gaming dual view and some things never seen before
+2. Google TV and Apple TV will become casual video game consoles. Since Google and Apple don’t have any unique content, they will try to branch out into video games and apps. Apple will integrate their Apple TV with their iDevices, but Google will be too fragmented to do the same. Instead they will rely on accessories and controllers you buy in addition to the new Google TVs. Google will continue to allow manufacturers to embed Google TV software into their TVs and Apple will continue to keep things in house and come out with a better user experience. Apple will begin to build Apple TV functionality into their iMacs and displays and will make larger (32″-42″) displays that will function as TVs for some.
+Let me know if you think I’m right, wrong, or crazy in the comments.
+Originally published at 1n73r.net + on January 1, 2012.
+]]>Whether you want to stand because it’s trendy, or you want to test the benefits, one of the biggest hurdles from a standing desk is the cost involved. Here are some standing desk options you can build for free.
+Standing desks have become big news in the tech field because most of us sit at a computer for our daily jobs. There have been numerous reports about the benefits of standing while working, and some about the dangers, and a few of the How-To Geek writers have been standing for a while.
+We won’t go into the benefits, or drawbacks, of standing while working because that debate is still ongoing. If you decided you wanted to starting standing at your computer desk, here are some inspirational ideas and tips to get you started.
+Converting your existing desk is the easiest way to start standing up because you already have a good foundation for a desk. Obviously traditional desks are too short to stand and work so you will just need to make the desk top a little higher.
+There are two methods to raising your existing desk to standing height.
+Both are valid methods and you can probably perform either modifications for free depending on what you have lying around and what type of desk you have.
+







Click each picture for a larger version or more information
+One of the simplest ways for creating a standing desk is to set something on top of your desk so that the desk height is high enough for your computer IO devices. This is typically the easier solution because it doesn’t need to hold the entire weight of your desk and usually it is easy to find something lying around.
+Here are some items that can raise your IO devices
+Anything that will raise and securely hold your computer peripherals (or possibly just your laptop) will do the trick.
+Drawbacks of this method
+If you do a lot of non-computer work at your desk you may want to look at the other method.
+Benefits of this method
+







The second option for converting your desk is to raise the whole height of the desk by putting something under the desk legs. What you use will depend on what type of desk legs you have and how heavy your desk is.
+Some of the easiest things to put under your desk are
+The possibilities are pretty endless, you just need to look for something level and sturdy that can hold the weight of your desk, and you’ll probably need four of them.
+Drawbacks of this method
+Benefits of this method
+If converting your current desk is out of the question, or you are looking to buy a new desk in the near future, we’ll have a followup article to show you some of the best options to build a standing desk from scratch or buy a standing desk.
+]]>Many of us rely on Windows Search to find files and launch programs, but searching for text within files is limited to specific file types by default. Here’s how you can expand your search to include other text-based files.
+We have shown you some advanced search operators using Windows Search + before and even how to change which files are indexed and how to rebuild your search index +. But what about searching for text inside of .html, .php, .js, and other text-based web and scripting files? Windows search allows you to include other file extensions in its index with a few simple clicks.
+This technique works in Windows 10, 8, 7, or even Vista. The screens might look a little different, but it’s the same basic process on all versions.
+Hit Start, type “index,” and then click the “Indexing Options” result.
+
In the “Indexing Options” window, click the “Advanced” button.
+
In the “Advanced Options” window, switch to the “File Types” tab. Select the extension for the file type you would like to include in content searches, and then select the “Index Properties and File Contents” option under the list. The text in the “Filter Description” column should change to reflect whatever filter is used to open that file type by default. In our example, we’re selecting the BAT extension, so the filter type changes to “Plain Text Filter.”
+
If you don’t find file type you’re looking for on the list, it means no app is set as the default handler for that file type. To add the file type, type the extension in the “Add New Extension to List” box and then click the “Add” button. By default, Windows Search will use a plain text filter to search the contents of those types of files, since another app is not associated.
+
After the index is rebuilt, searching for text inside one of the new file types should now show results.
+
If you’d like to always search within file contents for a specific folder, navigate to that folder in File Explorer and open the “Folder and Search Options.”
+
On the “Search” tab, select the “Always search file names and contents” option.
+
After the index rebuilds, searches in that folder will automatically include file contents.
+]]>Smartphones are essential to our daily lives. They help us stay connected and keep us organized. But when it comes to calendar syncing and Gmail there are limitations. Here’s how you can sync your shared calendars and contacts from Gmail.
+If you use Gmail you probably know about the ability to create and share calendars with others. They help keep groups organized and even let you subscribe to public events. When it comes to getting that information on your smartphone there are some trade offs if you are on a non-Android phone.
+Android phones will sync your email, contacts, and all of your calendars by just singing into your Gmail account. If you have an iPhone however, you will miss out on contact syncing if you set up your account as a Gmail account.
+
There is another option. You can set up your Gmail account as an Exchange account and be able to sync your email, contacts, and calendar, but by default it will only sync your primary calendar.
+
To add additional calendars you need to open your Safari browser on your iPhone and go to http://m.google.com/sync +
+
Sign in with your Google account and then select which phone you want to change your sync settings on.
+
Select which calendars you would like sync with your phone.
+
Open your calendar app and open calendars in the top left corner. You should now see multiple calendars listed under your account instead of just the primary one you had before.
+If you don’t, hit the refresh button in the bottom left corner or just give it 5-10 minutes to pull in your new calendars. If the calendars still do not show up, go to your settings app and remove your Gmail account and then add it again.
+
Once you see your shared calendars, check the ones you want to view by default in the calendar app and you are all set.
+If you have problems with the m.google.com/sync web page not forwarding properly from your mobile browser you can also go to https://www.google.com/calendar/iphoneselect from your computer’s browser to turn on and off calenders for your iPhone. This will bypass the device selection but may work for non-iOS devices connected to Gmail via Exchange.
+]]>Chime.in is a social network brought to you by UberMedia; the people behind UberSocial apps and Echofon. They aim to improve your social network experience by integrating rich media, community discovery, and flexible user following.
+At a glance, here are some features that sets it apart from other social networks.
+Let’s have a look at some of the features to see if you want to want to invest time in another social network.
+
Think of Chimes as Tweets or Facebook/Google+ posts. This is the main thing you do on any social network and where Chime.in focuses most of it’s effort.
+Media integration allows you to embed polls, pictures, links, and videos directly into your chime. Like other social networks you can add interests, similar to hashtags, and send the post to someone, @ replies. But remember, no matter who you send the chime to, everything is still public.
+Posting chimes also has the ability to post directly to your Twitter or Facebook feeds, but the feature is currently disabled in the beta.
+Replies are nothing new, but nested replies (1 level deep) with the ability to vote up or down comments is handy.
+
Sorting is a feature that is usually overlooked in most social networks and we are not yet sold on it’s necessity. None-the-less, Chime.in allows you to sort your chimeline by time, amount of likes, shares, or comments.
+
Communities are for gathering around a topic, brand, or interests. They are very similar to Facebook pages with a few small distinctions.
+
Community pages have discussions which are live chat rooms involving anyone that is currently on the same page. You can’t post to a discussion unless you are on the community page.
+
Community pages have chimelines just like users, but these can be filtered by the community founder(s) to include chimes for specific interests or from specific users.
+Communities also have ads which the community founder can place on the page and will get a piece of the click revenue. If you don’t want ads, you can place a nice message to the community.
+
Chime.in supports iOS, Android, and Blackberry for it’s mobile apps and they allow you to see chimes, reply to chimes, and post chimes. They also allow you to browse interests to stay up to date on topics and users.
+
Chime.in + is currently in a closed beta (invites required) but will open to the public soon.
+]]>What’s better than a $100 tablet? A $100 tablet that can run two operating systems! The TouchPad was a great bargain and now that you’ve figured out webOS, try Android. Here’s how to install it in 3 easy steps.
+While webOS is not completely dead + and the TouchPad is still supported by HP for it’s software and hardware, a $100 tablet that can run two operating systems is always better than just one. Ever since HP announced the fire sale, multiple groups vowed to port Android to the discontinued tablet and there was even a $2000 bounty for the first team to successfully do it.
+Some things to note before running Android on your HP TouchPad.
+Before you continue, you should check out the long winded forum thread which explains everything in detail + and is where you will want to go for support and updates.
+[UPDATE] There has been a newer version posted in the forum link above. Please use that to download the latest release. The rest of the how-to will continue as normal.
+First thing you need to do is download the following files to your computer.
+Download and install Palm Novacom on your computer. You can download this by installing the webOS SDK free of charge. It runs on Windows, OS X, or Linux. You don’t have to install Virtualbox, or Java so you can just skip straight to the SDK download and install it.
+If you do a custom installation, just make sure you install novacom which is also known as the command line interface tool.
+
Download moboot from Google code +. (do not unzip the file)
+Download CyanogenMod 7.1.0 ALPHA 1 from the original thread (above) or from our mirror here. (do not unzip the file)
+Download Clockwork recovery from the original thread or from our mirror here. (do not unzip the file)
+Download ACMEInstaller from the original thread or from our mirror here. (unzip and extract the files in step 3 below)
+Boot the TouchPad in webOS and plug it into your computer with a microUSB cable. When the TouchPad is plugged in, tap to share device in USB Drive mode.
+
Once the drive mounts, create a cminstall folder and copy the CyanogenMod zip file, the ClockworkMod zip file, and the moboot zip file into the folder.
+
Before you go any further, make sure you have at minimum 2 GB of space available on your TouchPad’s media drive. CyanogenMod will require 2 GB for system files and will resize your media partition.
+Unmount/eject the TouchPad from your computer but leave the USB cable connected.
+
Turn off the TouchPad by holding the power button and select power off.
+
Next, turn on the TouchPad and immediately push the volume up button until you get a big USB symbol on your screen.
+
Extract the files from the ACMEInstaller.zip into your c:\Program Files\Palm, Inc folder or wherever your novacom executable file installed (Linux and OS X will be different).
+
Open a command prompt on your computer and use the cd command to navigate to the folder you transferred the ACMEInstaller to earlier (C:\Program Files\Palm, Inc for Windows). Then run the command
+++novacom.exe boot mem:// < ACMEInstaller
+

Your TouchPad will reboot in a few seconds and you will get a Linux boot screen with our good friend Tux sitting atop scrolling text.
+
Once the TouchPad boots you will have a fully functional Alpha version of CyanogenMod 7.1
+
To switch between the two operating systems you can just reboot the device and using the new bootloader, select your desired operating system using the volume keys and home button.
+
CyanogyenMod does not come with any official Google apps or access to Google’s market (only sanctioned devices get that privilege). Android may be boring without all of the available apps though, so here is how you can better your Android experience by installing Google’s Market and official apps.
+First you need to download the Google Apps package from the CyanogenMod wiki found here +. You will want the pakage for CyanogenMod 7 but don’t extract the files. Plug your TouchPad into your computer and browse to the cminstall folder we created earlier. Copy the gapps…zip file to that folder and reboot the TouchPad.
+
When moboot comes up select boot ClockworkMod and push the home button.
+
Use the volume buttons to navigate to install zip from SD card and push the home button.
+
Select choose zip from SD card and then navigate to the cminstall folder and select the gapps…zip file.
+
Navigate back to the home screen and reboot the device. You will need to go through the basic Android setup this time but you will get full access to Google’s available market apps including Google Maps, Gmail, etc.
+]]>Staying social while your mobile doesn’t mean you have to pay for a data plan. Using SMS, you can update and receive status messages from your favorite social networks using the messaging plan you probably already have.
+Using social networks via Short Message Service (SMS) will not only cut down on your mobile phone bill, it will also increase your phone’s battery life, and allow you to stay up to date with social networks without needing a smartphone. Being able to send a simple SMS makes updating fast and available on every mobile phone available today (so long as your plan supports it). During busy situations like natural disasters and large events, SMS is also much more reliable than data plans which makes it ideal if you just need to get the word out about where you are.
+After a full week of using social networks this way, there were a couple of benefits I didn’t expect.
+There are a few downsides of using social networks via SMS:
+All that aside, with some careful planning this method has worked great for me for the past week and I have fully cancelled my data plan saving me almost $600 a year.
+If you give this system a try, let us know what your experience is like or if you have any other tips in the comments.
+Facebook not only allows you to subscribe to your friend’s updates and post updates via SMS, but they also allow you to use Facebook chat. First you need to activate SMS messaging in Facebook’s settings. Get started by logging into your account and going to your account settings.
+
Click on mobile on the left and then add a phone using the steps Facebook provides.
+
Now that your phone is authorized, edit the settings so they are exactly how you want.
+In the screenshot below we recommend checking the box by number 1, add whatever friends you want to receive notifications from on number 2, and set your settings for Facebook instant messages and daily limit next to number 3.
+If you want to send pictures or videos to Facebook from your phone you’ll need to click number 4 to get your unique email address that will let you upload media messages.
+
After you click on link four, look for your unique mobile upload email.
+
If you want to receive messages from Facebook pages, you’ll need to go to that page, and click “get updates via SMS” on the left hand column.
+
You are ready to receive updates now. To send updates we recommend you add a contact named fbook to your phone with the mobile number 32665 and email address for mobile uploads.
+To send updates just make a new SMS message to 32665 with your status in the message body. Upload photos and videos by sending them via MMS to the email address provided. You can also reply to someones update by replying to the SMS message that was sent to you.
+
There are a few other commands you can send which you can find in the Facebook help section. You can also send an SMS message with the word “help” to be sent the commands. Just don’t try to update your status when you need “help” as the only word.
+
Twitter works much the same way for setup. Log in and go to settings -> mobile. Add your number and change the settings you want below.
+
Now go to your list of followers and turn on mobile notifications for people you want SMS messages for.
+
You should now add a twitter contact in your phone with the mobile number 40404. This will identify all incoming messages and allow you to quickly send messages to the contact.
+You can send text or picture (MMS) to your new twitter contact and they will automatically be posted to your feed.
+
One downside to Twitter SMS is if you reply to a tweet via SMS, it does not automatically send an @reply to the user who sent the message. You will need to manually add the @username information manually.
+There are also some extra commands you can use with Twitter. Just like the other social networks, send an SMS with the world “help” to receive the following commands.
+
Log in to Google+ and go to settings to add your phone number; enter the verification number they will send to you.
+
Change your settings and notification settings from the main settings page.
+
Text messages will send updates just like they do for Facebook and Twitter. Picture messages are not supported via MMS at this time for Google+. Instead you can log into picasaweb.google.com, go to settings and set up a secret email address for your photo uploads.
+
Once you send a picture via email, it will be automatically added to a drop box album in Picasa. By default this album is not shared with anyone, but you can easily change its visibility from within Google+.
+New pictures will not generate new posts automatically, but the pictures will still be visible if someone browses your albums.
+
By default, SMS posts are shared with everyone in your circles, but you can add or remove circles using the + or @ symbol
+You can get a list of available commands by sending the “help” command to 33669.
+
To activate Foursquare on your phone you need to go to DotGo + and authorize their app to access your Foursquare account.
+
Once you receive your authorization pin, send an SMS to DOTCOM (368266) with the message “foursquare +pin.” You will then be sent a menu of commands you can use with Foursquare.
+The basic command you will probably use is “foursquare at place [zip code]”. The “foursquare at” command checks you in to the first search result for the place you specified. If you are not sure the place name you can use the “foursquare checkin place [zip code]” and you will be messaged back with a list of location that match your search. You can then check in to one of the returned results by just replying to the message with the number of the returned result.
+Foursquare isn’t as intuitive as some of the other social networks, but we found it to be usable even without GPS assistance or a smartphone.
+
If you need help, you can message 368266 with the word foursquare to get a list of commands.
+
Going remote with friends and family is helpful when you need to show them how to do something or fix a problem. Here’s how you can offer cross platform remote assistance using only Google Chrome and an extension.
+We have shown you how to go remote with friends and family before using Teamview +, when your computer crashes +, to your Ubuntu computers +, and even to your Android devices +. In most cases you need to install software or have a special service running in the background. With Chrome Remote Desktop, all you need is your Chrome browser running to be able to take control and share your screen. Here’s how to install and use it.
+First you need to install Google Chrome if you don’t already have it. Download and install it from the link below.
+
Then install the Chrome Remote Desktop Beta extension by going to the link below.
+
During the installation you will be asked to authorize the app to have access to view your email address, view your remote desktop computers, and view and send chat messages.
+
After it’s installed, open a new tab in Chrome and click the Chrome Remote Desktop BETA app.
+
Click share this computer and a 12 digit code will be generated for you.
+
This is a one time code that someone can use to access your computer.
+From the other computer, click access a shared computer and type in the first code (spaces are not necessary).
+
Give it a little bit and the tab will change to the other computers desktop. While in this mode, the computer being shared can either push the disconnect button, Ctrl+Alt+Esc, or close the Google Chrome tab to end the session.
+
If you have trouble connecting to the remote computer or it hangs when saying verifying access code, try allowing ports 443 and 5222 to have inbound and outbound rules in your windows firewall using both UDP and TCP.
+
If you need further help check out Google’s help page on the extension below.
+ + + +]]>Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. Today we will help you get started by showing you some of the options available and how easy it is to get started.
+Arduino hardware is an open-source circuit board with a microprocessor and input/output (I/O) pins for communication and controlling physical objects (LED, servos, buttons, etc.). The board will typically be powered via USB or an external power supply which in turn allows it to power other hardware and sensors.
+Arduino also has an open-source software component which is similar to C++. The Arduino integrated development environment (IDE) allows you to write code, compile it, and then upload it to your Arduino for stand alone use in prototyping and projects.
+All of this was designed to be easy to use to let artists and makers freely develop their ideas into real objects. If you are interested in building something yourself, have a look to see the hardware options, and software available to get your started.
+The Arduino hardware being “open-source” means that you can view schematics of every board available. This means you are free to buy the hardware components and solder the board together yourself if you are so inclined. To get started, we’d probably just recommend you spend the ~$30 and see how much you really want to invest.
+The image below was created using Fritzing and is the layout for a basic Arduino using a bread board.
+
The Arduino comes in a variety of different types that make choosing the right one difficult to decide, but variety also allows for flexibility in choosing the perfect solution.
+We cannot cover every Arduino option, but here are some notable options for getting started.
+ +
The Uno is a great starter Arduino, it provides a solid foundation for those just getting started and has a lot of the options you will want as you explore the platform. It also works with almost every shield available (more on this later).
+ +
The Nano is almost feature for feature the same as the Arduino Uno, but it is about 1/3 the size and cannot use shields easily. The Uno is meant to be used as a permanent fixture in projects or with breadboards for testing.
+ +
The Lilypad has a unique design that can be sewn into fabrics for wearable projects or art. Of course you are not limited to those applications but shields won’t work on this Arduino so expansion may become difficult.
+ +
The Mega 2560 has more memory and more I/O pins than any other Arduino. This is the biggest and best Arduino you can get, but you may not need that much power if your projects don’t call for it. This also would be a more expensive Arduino to leave in a project permanently.
+Netduino +
+
The Netduino is the cousin of the Arduino. It is still an open source hardware hacking and prototyping solution. But the Netduino runs .NET Micro Framework for its software base. It is pin compatible with Arduino shields, but some may require drivers to run.
+For more Arduino hardware check out the link below.
+Shields make adding functionality to your Arduino a snap, literally. They have pins that push right into the top of your Arduino and you can immediately take advantage of whatever the shield can do. You can also add multiple shields at a time. An Arduino that watches Twitter for a specific hashtag (ethernet shield) and then controls an RC car using RF (RF shield) isn’t beyond the scope of a single project thanks to the shield flexibility.
+You will notice below that some shields look a lot like the Arduino boards themselves, but don’t be confused because they lack the main processing power to run the code you will write in sketches (more on this below).
+Ethernet
+
This is one of the most popular shields because it expands your Arduino to be able to use the internet for communication and control. The Ethernet shield is one of the most versatile available, and once you’ve mastered the basics you should look to get one just so you can make your washer/toaster/coffee maker tweet.
+XBee
+
The XBee shield makes point-to-point wireless communication easy. You can use this to network two Arduinos together or set up an entire mesh network of Arduinos that will one day RULE THE WORLD!
+Motor
+
The Arduino can control motors and servos without needing a shield, but the motor shield ramps up that ability to 11. You can use this to remote control your lawn mower, or build your own robot.
+There are many other Arduino shields available like music, video game, and bluetooth. This is just the tip of the iceberg and we’d recommend doing some searching of your own to find the perfect shield for your project.
+If you are looking to prototype Arduinos and shields together along with various sensors we’d recommend checking out Fritzing + which not only helps with the prototyping stages, but they also aid in showing you how to make permanent PCB boards for producing your project.
+The Arduino IDE + is a cross platform developer tool written in Java. It allows you to control all of the software functions of your Arduino.
+
Each program that you write is called a sketch and is compiled and uploaded to your Arduino using the IDE. A lot of sketches are freely available online and the IDE even comes with a plethora of examples to get you started with just about every function your Arduino is capable of.
+
Eclipse and Notepad++ are popular alternatives to writing your sketches, but they lack easy access to sketch examples and compiling/uploading the finished sketch to the Arduino.
+This article is designed to get your started in your Arduino projects. For more reading check out the links below and get started making stuff.
+If you have more useful links or an Arduino project of your own, feel free to leave a comment to share with all the readers.
+Project Ideas
+http://arduino.cc/en/Tutorial/HomePage +
+http://www.arduino.cc/playground/Projects/ArduinoUsers +
+http://hackaday.com/category/arduino-hacks/ +
+http://www.instructables.com/tag/type-id/category-technology/channel-arduino/ +
+Arduino hardware reference http://arduino.cc/en/Main/Hardware +
+ + +]]>Keeping your home stereo in a cabinet helps with noise and protects your equipment from pets and kids. Game consoles, receivers, and STBs don’t work well in saunas; so here’s how to keep your entertainment center cool automatically.
+Heat is one of the quickest ways you can kill electronics. Most home theater equipment is designed to be cooled passively, but being enclosed in a cabinet does not allow for the proper amount of airflow. Weather you’re on your third RRoD Xbox 360 or your PS3 is getting too loud, keeping your home theater gear cooled ensures long life and quiet operation.
+There are a couple of commercial products that can help with cooling but most of them are either too expensive or don’t turn on/off automatically.
+The Antec Veris + has a neat design and functions well for one device, but at $70-$100 and having to manually turn it on/off doesn’t make it ideal for the lazy few of us who want to watch our movies in silence.
+
You can get something cheaper with the Thermaltake Mobile Fan II + which only costs $12-$20 and has variable speeds. But it uses USB for power and unless you have a HTPC you may be short on USB ports in your cabinet.
+
A few companies make kits to easily mount fans in your cabinet but they usually cost $100+ and don’t typically come with an easy way to turn the system on or off.
+So we decided to take matters into our own hands and show you the best automatically cooled home entertainment kit we could come up with. Let’s start with a video showing your how the system will work.
+Here’s what you will need to put together an awesome automated cooling system. All parts linked are just our recommendation, you can probably find alternatives other places on the network or use stuff you already have to save some money.
+Power Supply +: This is a simple 120v to 12v (molex) adapter that will get power to your fans.
+
Thermal Fan Controller +: This part is optional but it makes the whole kit automated. If you don’t get this part then you will need a molex fan connectors + instead.
+
Fans +: We recommend at least 120mm fans because you won’t be constrained by size limitations in your cabinet, and 120mm ensures maximum airflow while keeping the system quiet.
+
Fan Covers +: Depending on how you are mounting your fans, you may want covers to protect wires and fingers from touching the fans.
+
3 pin Y connector +: If you are going to use 4 fans you will need a y connector to be able to power them all.
+
The whole kit cost about $65 after shipping, but it should be enough to cool two small cabinets or one large cabinet.
+
If you want to mount your fans to the cabinet you can find some pretty nice pre-made plates for $20-$40 more.
+
You will also need some of the following depending on how you will install your fans.
+Everyone’s setup will be different but just remember these basics for maximum cooling efficiency.
+It’s a good idea to plan your your installation before ripping out all your equipment. Here is my home theater with a general layout for where the fans will go.
+
I’m not drilling holes in my new entertainment center so if you want the fans to be free standing here is a cheap way to add stands.
+To give the fans some stability use a wire hanger (preferably one with rubber coating) and cut four 6″ straight pieces from the shoulders and bottom.
+
Use these pieces and fold them into small triangles to stick them in the mounting holes.
+
Hopefully you have discovered where to mount/place your fans, but before you drill any holes make sure your cables will all reach to the thermal control box and you have power avaiable.
+If you don’t have an available outlet you can plug your power adapter into the back of your receiver or cable box. Just make sure you change the setting in the box to turn the outlet on.
+
Plug in your thermal controller and run power to it. You should get a green light on top of the box when it has power. Mine is hiding behind my center channel because it allows it to be in the center of the cabinet so all the fans can plug in easily.
+
Next, put the heat sensor in the hottest spot of your entertainment center.
+
Now mount your fans or place them where you want them to be.
+The front of my cabinet is closed but there is a gap behind and in front of the shelves. This means my intake pulls from behind on the bottom and exhausts out the opening in the back. Having both fans push air in the same direction will greatly help the flow of air through the system.
+
The other side is about the same, the intake fan is on the bottom sucking in air from the back and pushing it toward the gap in front of the shelf.
+
Once everything is in place, plug in the system and make sure you don’t have any interference and air is flowing in the proper direction.
+
You can help the system by exhausting air directly outside of the cabinet, but that will force you to cut holes. Having at least a decent amount of air movement should help keep your equipment running longer and quieter.
+]]>Much of my site is dedicated to home theater computers because it is one of those hobbies that never seems to get old. Even though HTPCs are very niche, I can’t help but love having one and love the freedom it brings to my TV.Despite the great things they can do, I always find features that are missing no matter what the software. Thanks to plugin support, most HTPC software can easily be extended beyond what features “come out of the box”. Here are a few plugin ideas I have for anyone willing to code them.
+Originally published at 1n73r.net + on August 16, 2011.
+]]>I spent a weekend with the latest Google Chromebook and wanted to update real quick with my impressions. I tried to do as much as possible from the machine so I could really get a feel for what it would be like if it were my only computer. I like some of Chrome OSs ideals, but have never spent “hard time” with one of the Chromebooks to be able to see how it would work for me. I also really wanted to figure out if it would be something I could recommend to my family and friends looking for a cheap notebook.
+First of all, the Samsung is not that cheap, $500 is the price of a low end notebook and a high end netbook. It is also right in the sweet spot for tablets and about 1/2 the price of any notebook I’d consider good. So does a $500 web browser live up to it’s expectations? No. Here’s a quick breakdown.
+Good:
+Bad:
+As you can probably see, I wasn’t a fan. I used the Chromebook for 2 solid days before I gave up and went back to my HP 2560p which costs twice as much but does 1,000,000 more things (even run Chrome OS). Battery life on the Chromebook was about the same as my notebook and so was resume/sleep times which are typically two of the selling points of the Chromebook.Because the Chromebook is not a serious work notebook, if someone asked me what they should get for casual internet browsing and games for ~$500, I’d recommend a TouchPad. If they said they needed a real keyboard, I’d tell them to get the bluetooth keyboard and touchstone. If they still didn’t want that, I’d recommend a netbook.The Chromebook only makes sense for businesses doing the monthly rental, and if they have a Citrix environment set up so users could get real work done. As my companies Citrix XenDesktop engineer, I look forward to that day, but for my family and friends, never.
+Originally published at 1n73r.net + on August 9, 2011.
+]]>When do you safely remove a device? Some users put caution to the wind and yank out any device, while others perform religious rituals every time. Here are some tips and guidelines for practicing safe drive removal.
+Removable storage has been around as long as the personal computer and safely removing or “ejecting” drives is something that OS X and Linux users are very familiar with. Whenever an external storage device is plugged into those operating system it becomes mounted to a location, and if you just pull it out without warning your OS, typically you receive a nasty warning saying you may have just lost all your data.
+
In Windows, however, drive mounting is different. It doesn’t always require you to safely remove a device and rarely does it send out nastygram popups when you remove a device without warning. At most, you may get a popup the next time you plug in the device asking you to scan and fix the drive +.
+So how can you know when you should eject a drive before unplugging it? Here are some never, always, and sometimes situations to consider.
+Let’s start with the easy scenarios first; devices you never need to eject before removing. This includes the following:
+
On the other end of the spectrum are storage devices that you should make a habit out of safely ejecting every time you remove it. This includes:
+
Because it is sometimes a pain to eject a drive, here are two how-tos for creating a shortcut or hotkey to quickly eject your drive(s). Create a shortcut using disk ejector + or create a shortcut using built in functionality +.
+The drives that are left are the typical USB flash drives you probably carry in your pocket all the time. Here are some guidelines and tips to follow before removal.
+By default Windows sets removable storage devices to allow for quick removal. This means you should be able to just pull the drive from the system so long as it is not in use. There are still a couple situations you may want to consider though.
+
We have just shown you that you can upgrade your Windows Home Server for free + by choosing the open source Amahi server. Now that it’s installed, here’s how to manage your drives, shares, and storage pool.
+The first step to adding storage is to add more drives. To do that, shutdown the server and plug in the additional hard drives you would like to add.
+We will need to format the new drive so make sure you have a backup of anything you may need.
+
Power on the Amahi machine and use another computer to SSH to the server.
+If you don’t have an SSH client on another computer you can also use anyterm from the Amahi repository +.
+
First, install a few tools so we can mount and format the drive(s). Run this command as root:
+++yum -y install pmount fuse fuse-libs ntfs-3g gparted util-linux-ng
+

Next, check to make sure your hard drive was detected with the command
+++ls -l /dev/disk/by-id/ | egrep -v “part|scsi”
+
You will want to look for something that starts with “ata-” because these are your IDE and SATA drives while something that starts with “usb-” will be a USB hard drive. Make note of the part after the “-> ../../sd” because that corresponds to your hard drive letter in /dev/sdX
+
Using the drive letter you just got, launch cfdisk from the terminal as root with your new drive as it’s only option.
+Make sure this is your new drive and not an existing drive with data. All of the information will be formatted from the drive in this next step. Typically if you only have two hard drives the first will be /dev/sda while the second will be /dev/sdb
+In the example above I will launch cfdisk with:
+++cfdisk /dev/sdb
+
If you have partitions already on the drive use up/down to select the partition(s) and left/right to select the delete action at the bottom.
+Once all the partitions have been deleted you can then select new, to create a new partition, and then write the new partition table to the drive.
+
Quite cfdisk when the actions have been completed and then run the command below replacing sdX with your drive letter.
+++mkfs.ext4 -j /dev/sdX1
+

Now the drive has a fresh partition formatted and ready to go. Run the command
+++hda-diskmount
+
as root to automatically mount your new partition.
+
The hda-diskmount command will also give you the line you need to add to /etc/fstab + to automatically have the drive mounted every time the server is turned on.Use nano to edit your fstab file as root
+++nano /etc/fstab
+
and add the suggested line from the hda-diskmount command to the bottom of the file.
+
Reboot the system and when the server is back up go to to the webpanel to verify the hard drive is mounted.
+Now that the hard drive is formatted and mounted, go to your HDA’s setup page, click on the settings page and then check the box for advanced settings.
+
Now go to the shares -> storage pool tab and check the box next to your new hard drive to use the drive in the greyhole pool.
+
If you want to use the benefits of pooled storage you will need to add more than one hard drive to the pool. Repeat the steps above to add more drives to your HDA and then pool the drives here.
+Now that you have more space and the storage is being pooled, click on the shares -> shares tab and click new share.
+Give the share a name and select if you want it to be read only and visible.
+
Once the share is created, click on the edit icon next to the share name and check the box to use the storage pool.
+If you have more than one hard drive added to the pool you can also select how many copies of the files you would like to store in case hard drives fail.
+
For more information or advanced setup of your storage, check out the Amahi wiki
+ + +]]>Windows Home Server (WHS) is one of the most reliable and feature rich network attached storage devices on the market. However, WHS 2011 removed some key features. If you’re looking for an upgrade without losing features, look no further than Amahi.
+A few praised features of Windows Home Server when it launched in 2007 were:
+Windows Home Server 2011 has recently come out but it removes the drive extender feature, requires a 40% faster CPU (1.4 Ghz), and 4 times the RAM (2 GB) as its predecessor. If you’re looking for an upgrade, but don’t want to lose the functionality you have now, the open source project Amahi may be the perfect solution for you.
+Amahi is a Linux distribution built on Fedora (an Ubuntu based system is in the works) that makes setting up a home NAS easy. In addition to what other Linux/BSD based NAS distributions give you, Amahi has easy remote access with automatic dynamic DNS updates, drive extender functionality with greyhole, and one click install add-ins via their “don’t call it an App Store +” repository.
+
We will walk you through the process of installing Amahi using the Express CD on an HP Media Smart Server. You can install Amahi on any spare computer you have, but the express CD is designed to run on headless hardware (a computer without a monitor). Because the HP MediaSmart Server is already a low powered, multi-drive server, it makes a great candidate for a free upgrade. Our next article will show you some of the basics of setting up and using your new Home Digital Assistant (HDA).
+To perform the install on a MediaSmart Server you are going to need a few things.
+If you are going to be installing Amahi on an existing NAS your first step will be to backup. If you have a Windows Home Server then follow our guide to backing up all your information to an external hard drive +.
+
If you have a different NAS platform, you can either see if your platform has a built in backup system or you can manually copy all of your files to a spare hard drive over the network.
+Make sure you have a backup before you start the installation, and if you have enough spare hard drives you should keep your existing NAS in tact in case something goes horribly wrong for you.
+Once you have your iso file burned to a CD, put your spare hard drive into the temporary desktop you are going to do the installation with. The install is going to erase anything on the spare hard drive as well as any other hard drives plugged into the system. So make sure you only have the hard drive you want plugged in.
+
Picture via Justin Ruckman +
+Once the correct hard drive is plugged in, boot the system from the installation CD. The first few steps just ask you to select your language, keyboard layout, timezone, and root password so we will just skip over those and assume you know what to do there.
+
While the initial file copy and drive formatting is taking place, go to amahi.org on a different computer and log in with your user account. Once logged in you will be brought to your control panel. Click on “Your HDAs” on the left and then scroll down to the install code that was generated for you.
+
After the initial drive format and file copy finishes, put in the install code when prompted.
+
The machine will reboot (make sure you remove the install CD) and bring you back to one more screen to finish the device configuration. After it’s complete your new HDA should automatically reboot and bring to you a login screen.
+
Optional Step: There is a bug currently in the express CD + which caused my machine to get in a loop repeating the above step over and over. To get past this step, select the option to go to a debug console and run the command ConfigAmahi. The system will finish the HDA configuration and reboot into the final usable state.
+If you are not using an HP MediaSmart Server or want to keep your HDA in the desktop you just installed on, you do not need to follow the below steps. These only apply if you are moving the HDA to a new machine.
+Once the machine reboots, login to the computer with the root user and the password you set up during installation.
+
In order to allow Amahi to change physical hardware we just need to configure the machine so that the network works on the new machine. Run the following command from the terminal.
+rm /etc/udev/rules.d/70-persistent-net-rules

Then open your eth0 configuration file with the command
+nano /etc/sysconfig/network-scripts/ifcfg-eth0
Inside the text editor delete the line that starts with HWADDR and change the ONBOOT=no to read ONBOOT=yes.
+
The next time your system boots, the wired ethernet adapter will automatically be reconfigured by the system. Shutdown the machine and pull out the hard drive. Remove all of the hard drives from your HP MediaSmart Server and put the new drive in the lowest slot.
+
Power on the system, check your router to make sure the device shows up on the network, and from another computer open a web page to configure Amahi.
+
Our next article will cover setting up your new HDA with apps, users, additional storage, and all your files.
+ +]]>If you have a lot of time and information invested in Facebook, it’s not easy moving to a new social network. Here are a few tips on moving your information from your Facebook account to your shiny new Google+ account.
+Moving social networks isn’t the easiest thing to do, but luckily there are a few tools we can use to migrate pictures, videos, and friends. Wall posts and messages don’t make sense to migrate between networks so we are going to leave those out.
+Start by downloading all of your Facebook information. To do that, log into Facebook and go to account settings in the upper right corner.
+
On the settings tab click “learn more” next to “download your information.”
+
Enter your password and click continue; you will be sent an email once your download is ready.
+
Once you receive the email, click the link to download a zip of all of your files.
+
Extract the files and open the index.html file to verify all your information is there.
+
Google+ uses Picasa web albums to share pictures. To get started you need to download Picasa from the link below.
+
Once installed, open Picasa and add the Facebook photos folder you just downloaded to picasa.
+
Set Picasa to scan the folders once, and then let it do the import.
+
Once the pictures have finished importing into Picasa, find the albums and select Sync to Web on the right.
+
A pop-up window will open and ask you to sign in to web albums. Log in with your Google+ account and a second popup will ask you to verify your upload settings. Click change settings and modify the settings to you liking. Make sure you check the box to “use the above settings” otherwise you will be asked every time.
+We’d recommend setting your new album visibility to private by default. You will be able to change the sharing settings from Google+ later, and this prevents you from making any embarrassing photos public.
+
Now go back to Picasa and click sync; your photos will be uploaded in the background.
+
After your pictures have uploaded, log into Google+ and click on photos in the top banner.
+
Navigate to your albums on the left.
+
Open the album you just uploaded and click share album at the top.
+
The share album button will automatically make your album public and post a link to it in your stream.
+
If you don’t want the album to be public, you can remove the Public circle and instead add some of your own. This will still make a post in your stream, but it will only be visible to those you have shared it with.
+It is possible for someone you shared an album with to re-share that with the public so make sure you only share with people you know and trust.
+
If you don’t want the album posted to your stream, you can also click the edit button from the main album page which will change the sharing settings without posting the album in your stream.
+
Importing videos is a lot less automated than pictures. To import your Facebook videos browse to your Facebook export you downloaded earlier and there will be a videos folder.
+
Log into your Google+ account and click on your profile -> videos.
+
Click upload new videos on the right and drag the videos from your computer to your browser.
+
Once the videos are done uploading you can name, create, and share the album from Google+.
+
Go to login.yahoo.com + and sign in with your Facebook account or a yahoo account if you already have one.
+
Confirm access and sign in with your facebook account and then go to address.yahoo.com +. Click tools and import from the dropdown.
+
Select Facebook from the provided options.
+
After you confirm access to your contacts, the import will happen automatically.
+
Next export your contacts to a .csv file with the tools menu.
+
Export your contacts to Microsoft Outlook, confirm the capcha and save the file.
+
Now login to Gmail, click contacts -> more actions -> import.
+
Browse to the .csv file you just downloaded and select it for importing.
+
Specify a new group to import the contacts into, if you chose that option, and the contacts should import without any problems.
+
Go back to Google+ and your newly imported contacts will show up under find and invite.
+Add friends to circles and send invites to them if they aren’t already using Google+.
+
We have already shown you how to clean your keyboard without breaking it +, but did you know your smartphone can be just as dirty and covered with bacteria? Here is how to properly clean your smartphone +.
+
Cell Phones have been repeatedly found to be one of the most disgusting things we regularly touch. In many tests, cell phones have tested to contain more germs than a toilet seat. Can you hear me now? You don’t want to put your head on a toilet seat. If you are going to reach out and touch someone your phone, make sure you rethink possibilities and clean your smartphone the right way.
Table of Contents
+++Tools You’ll needCleaning Your PhoneClean Your Case
+

To get started you will need to collect a few supplies:
+Household chemicals and disinfectants are too harsh for most smartphones. Make sure you don’t use window cleaners, aerosol sprays, solvents, ammonia, ajax, CLR, or abrasives. These cleaners are guaranteed to stain your phone or remove the finish.
+
Start by turning off your phone by holding the power button or finding an option in the phone to turn off or swap the battery.
+
You should also remove any case or cover on your phone if you use one.
+
If you have the ability, remove your battery from the phone prior to cleaning.
+
Be careful when removing a screen protector because the peeling action can cause cracks to spread. If you have major screen cracks it is recommended you leave the screen protector on because it will help keep moisture out of the phone and hold the screen together until you can buy a replacement.
+
If you have a keyboard or keypad start cleaning it with a cotton swab dipped in diluted rubbing alcohol. Be careful not to rub too hard and not to get any rubbing alcohol inside the phone or under the keyboard.
+
Next move to the rest of the phone plastics. For large areas like the battery cover it is fine to use rubbing alcohol. Use light pressure when cleaning plastic so you don’t remove any rubber coating or clear finish.
+If you have metal trim on your phone, use a water dampened cotton swab instead of rubbing alcohol.
+
Once the outside is clean, use a dry cotton swab to clean out any dust under the battery cover. If you have any stubborn areas under the battery cover, use a very small amount of distilled water to clean it. Immediately dry any parts you clean with water so nothing gets inside the phone.
+
Dampen a cotton swab with water and clean your camera lens and flash using a spinning motion. Once the lens is clean quickly dry it with the other side of the cotton swab so that water doesn’t dry on the lens.
+
Now that the major portions of the phone have been cleaned, flip the screen over and dampen your lint-free microfiber cloth. You don’t want the cloth dripping wet; the dampness will help remove crusted-on streaks.
+Clean the screen in single strokes from the earpiece down to the microphone. This motion will keep from spreading dirt into your earpiece. Don’t use circular motions because this can cause circular scratches.
+Be very careful if you have a cracked screen because removing a screen protector or wiping the screen with pressure can cause the crack to spread. You may also want to forgo the damp cloth and just use a dry one to prevent any moisture from getting under the screen.
+Some low-end and older phones have plastic screens that can easily scratch. Make sure you use light pressure when cleaning your screen to stop scratches from forming. Most new Android phones and iPhones have hardened glass screens that won’t scratch as easily.
+
If you removed your screen protector, follow the directions that came with the protector to apply a new one after cleaning.
+If you have an iPhone, remember that the front and back might be made of glass so clean both sides the same way.
+Most phones have an oleophobic (literally meaning “fear of oil”) coating which repels oil from your hands and face. This coating will wear over time so make sure you don’t rub too hard or use rubbing alcohol or you might speed up the wear process.
+Give the phone a few minutes to dry, then re-assemble and turn it back on. You should now have a clean phone without those nasty germs.
+
If you use a plastic phone cover/case use diluted rubbing alcohol and cotton swabs to clean the inside and outside.
+Let the case air dry before putting it back on the phone.
+
If you use a leather case or pouch you can use leather cleaner + designed to clean and moisturize leather. The cleaner can be purchased at many automotive, online, and discount stores. You will want to follow the specific directions on the leather cleaner to make sure your leather is clean and conditioned.
+]]>A Linux live USB drive + is normally a blank slate each time you boot it. You can boot it up, install programs, save files, and change settings. But, as soon as you reboot, all your changes are wiped away and you’re back to a fresh system. This can be useful, but if you want a system that picks up where you left off, you can create a live USB with persistent storage.
+When you create a USB drive with persistence, you’ll allocate up to 4 GB of the USB drive for a persistent overlay file. Any changes you make to the system—for example, saving a file to your desktop, changing the settings in an application, or installing a program—will be stored in the overlay file. Whenever you boot the USB drive on any computer, your files, settings, and installed programs will be there.
+This is an ideal feature if you want to keep a live Linux system on a USB drive and use on different PCs. You won’t have to set up your system up from scratch each time you boot. You don’t need persistence if you’re just using a USB drive to install Ubuntu and then running it from your hard drive afterward.
+There are a few limitations. You can’t modify system files, like the kernel. You can’t perform major system upgrades. You also can’t install hardware drivers. However, you can install most applications. You can even update most installed applications, so you can be sure your persistent USB drive has the latest version of the web browser you prefer.
+Persistence doesn’t work with every Linux distribution. We’ve tested it with the latest versions of Ubuntu—Ubuntu 18.04 LTS and Ubuntu 19.04—and it works. It should also work with Ubuntu-based Linux distributions. In the past, we had luck with Fedora as well. Just download the appropriate ISO file and follow the instructions below.
+Update: Rufus, which we recommend for easily creating live USB drives + on Windows, now supports persistent storage + in its latest versions. Previous versions did not, necessitating the below process. Give Rufus a try if you’re using Windows and want to avoid the Linux command line process below.
+RELATED: How to Create a Bootable Linux USB Flash Drive, the Easy Way +
+You’ll need a computer already running Ubuntu to perform this process. You’ll also need a USB drive with enough storage capacity to set up persistence. We used a 16 GB drive, but an 8 GB drive would have worked as well. The bigger the drive, the more persistent storage you can have.
+The grub, boot and Ubuntu partitions take up less than 2 GB. The remainder of the space on the USB drive will be used for the casper-rw and the usbdata partitions.
The casper-rw partition is used for persistent storage. For example, software you install and settings files will be stored here.
The usbdata partition will be formatted with the NTFS file system. It will be accessible to Linux, Windows, and macOS. This partition is also available from within the live Ubuntu on the USB drive. This means any files copied to the usbdata partition from another computer will be accessible to your live Ubuntu.
In other words, the usbdata partition acts as a “shared folder” between your live Ubuntu and any other computer you plug your USB drive into. That’s pretty cool.
The below screenshot shows how the resulting partitions looked on our 16 GB drive.
+
Although a 16 GB USB drive was used for researching this article, an 8 GB drive would work just as well. It would simply have less storage.
+First, you’ll have to download the Ubuntu ISO file + you want to place on the USB drive.
+Note: If you’re creating a live USB drive from a live disk, ensure Ubuntu’s Universe repository is enabled before you continue. You can do that by running the following command:
+sudo add-apt-repository universe
+Second, the tool you’re going to use is called mkusb. It is not part of the standard Ubuntu installation. You will need to install it. To do so, enter the following three commands. The first command adds the mkusb repository so that Ubuntu knows where to install mkusb from.
sudo add-apt-repository ppa:mkusb/ppa
+
The next command forces Ubuntu to refresh its package lists for the registered repositories.
+sudo apt-get update
+
We can now proceed to install the mkusb package, with this command:
sudo apt install --install-recommends mkusb mkusb-nox usb-pack-efi
+
The mkusb program does a terrific job of identifying USB drives. That’s great, but there’s nothing like knowing for yourself. When mkusb tells you it is going to completely wipe a particular drive, you can be sure it’s the USB drive you are planning on using and not another device on your system.
In a terminal window, type the following command. The lsblk command lists the block devices
+ on your computer. Each drive has a block device associated with it.
lsblk
+
The output from lsblk will show the drives currently connected to your computer. There is one internal hard drive on this machine called sda and there is one partition on it called sda1.

Plug in your USB drive and use the lsblk command once more. The output from lsblk will have changed. The USB drive will now be listed in the output.

There is a new entry called sdb in the list. It has one partition called sdb1. That’s the USB drive.
If you have more than one drive in your computer already, the name of your USB drive will be different. Regardless of how it is named, the device that was not in the previous lsblk listing must be the USB drive.
Once you know which device your USB drive is, you can launch mkusb. Press the Super (Windows) key and type “mkusb”. The mkusb icon will appear. Click the icon or press Enter.

A dialog will ask you whether you wish to run the dus (Do USB Stuff) version of mkusb. Click the “Yes” button.

A terminal window with a black background will appear and a dialog box will prompt you for your password. Enter your password and click the “OK” button.
+
Warning: This process will wipe the contents of the USB drive!
+Click “OK” in the warning dialog to acknowledge you understand this.
+
Click the “Install (make a boot device)” entry in the list and click the “OK” button.
+
Select the “‘Persistent live’ – only Debian and Ubuntu” entry in the list and click the “OK” button.
+
A file browser dialog will appear. Browse to the Ubuntu ISO file you downloaded, select it, and click the green “OK” button.
+In the screenshot below, we’re selecting the Ubuntu 19.04 ISO image from the Downloads folder.
+
You’ll see a list of the USB drives connected to your computer. This allows you to select the appropriate USB drive.
+There was only one USB drive connected to the test machine used for this article. As we confirmed above, it is called sdb. We’ve confirmed that’s the USB drive we want to use so we can proceed with confidence. Click the “OK” button.

When the dialog shown below appears, select the “usb-pack-efi (default grub from ISO file)” entry in the list and click the “OK” button.
+
You have one more option to choose. You can select what percentage of the storage space is for persistent storage in the casper-rw partition. The remainder will be used for the usbdata partition, which has the NTFS file system and can also be accessed from Windows PCs and Macs.
If you’re happy to have the available space on the USB drive shared equally between these two partitions, leave the slider at its default value and click the “OK” button.
+
Now, we just have to tell mkusb that we’re happy with all of our choices and that it should proceed.
To be clear, this is the last point at which you can back out. If you’re certain you wish to proceed, select the “Go” radio button and click the “Go” button.
+
A progress bar shows you how close the creation process is to completion.
+
The final stage of the creation is to flush the file system buffers to the USB drive. You are also advised to wait until you see the phrase “Work done”. That will indicate the process has completed.
+
When the process has completed you will see a dialog with the phrase “Work done” highlighted in green. Click the “OK” button. If any other dialogs appear, close them by clicking on the “Quit” button.
+
A few more lines of output will scroll through the terminal window. You will be prompted to press “Enter” when you are ready.
+
When you press “Enter,” the terminal window will close. You can now either reboot your computer and boot from the USB drive + or unplug the USB drive, take it to another computer, and boot it there.
+RELATED: How to Boot Your Computer From a Disc or USB Drive +
+Update: We’ve been told the below method (using Linux Live USB Creator) no longer works with the latest versions of Ubuntu. You’ll need to use the above method instead.
+You’ll need a large enough USB drive to set up persistence. Ubuntu itself claims it needs 2 GB of storage on the USB drive, and you’ll also need extra space for the persistent storage. So, if you have a 4 GB USB drive, you can only have 2 GB of persistent storage. To have the maximum amount of persistent storage, you’ll need a USB drive of at least 6 GB in size.
+Unfortunately, the Rufus tool that Ubuntu officially recommends for creating live Ubuntu USB drives on Windows doesn’t offer support for creating systems with persistent storage. While we recommend using Rufus to create most Ubuntu live USB drives, we’ll have to use a different tool for this particular job. (Update: The latest versions of Rufus now support persistent storage!)
+Download the Ubuntu ISO file + you want to place on the USB drive and the Linux Live USB Creator + application.
+Insert the USB drive you want to use into your computer’s USB port and launch the “LiLi USB Creator” application you just installed.
+Select the USB drive you want to use in the “Step 1: Choose Your Key” box.
+
Provide your downloaded Ubuntu ISO file. Click the “ISO / IMG / ZIP” button under “Step 2: Choose a Source”, browse to the .ISO file on your computer, and double-click it.
+
Use the options in the “Step 3: Persistence” section to select how much space you want to use for persistent storage on the USB drive. Drag the slider all the way to the right to select the maximum amount of storage.
+
You’ve now configured all the settings you need to configure. To create your live USB drive with persistent storage, click the lightning icon under “Step 5: Create”.
+
Give the tool some time to create the drive. When the process is done, you’ll see a “Your LinuxLive key is now up and ready!” message. You can now either reboot your computer and boot from the USB drive or unplug the USB drive, take it to another computer, and boot it there.
+
To confirm that persistent storage is working properly, boot the USB drive and create a folder on the desktop, or save a file to the desktop. Then, shut down your system and boot the live USB drive again. You should see the folder or file you placed on the desktop.
+]]>Windows 7 adds functionality to your login screen to give you additional logon options. If you want to lose the clutter, here is how to disable some or all of your credential providers.
+Whether it was installed from the factory or add-on software you installed, these registry settings will disable the unwanted credential providers at your login screen.
++++
HKLM\Software\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers
It will not be obvious what some of the providers are but you should be able to determine which one goes to which provider by looking at the value of the (Default) DWORD inside each key.
+
The screenshot below references the fingerprint scanner on my system but yours may be different.
+
To disable each of the items, create a DWORD value named “Disable” with a value of 1. For each key you disable it will be removed from your login screen.
+
Be careful which items you disable or you may not be able to log in with your password either. Only disable the items you know you won’t need and disable them one at a time. This should stop you from disabling too many items and not allowing you to login to your computer.
+If you accidentally disable too many items, restart your machine in safe mode and set the disable key to 0 for the providers you need.
+Once you have found all the correct keys your new login screen should show only the items you want.
+

Every Apple fanboy will tell you that Macs are safe from malware, but it’s just not true. Recently a fake AV program has been targeting and infecting OS X computers in the wild. Here’s a quick look at how it works, how to remove it, and also how to prevent it in the first place.
+The virus in question is actually a fake antivirus and trojan which goes by a few different names. It may present itself as Apple Security Center, Apple Web Security, Mac Defender, Mac Protector, and possibly many other names.
+Note: we encountered this malware on a handful of user workstations at my day job, and then spent some time doing analysis of how it works. This is a real piece of malware, that’s really infecting people.
+The infection comes about from a webpage redirect which will present the user with the following page, that makes it appear like a real Mac OS X popup dialog.
+
If the user clicks remove all they will immediately begin downloading a package which will install the virus.
+
Once downloaded your computer will probably automatically begin installation. Luckily, for now, you still have to manually walk through the installation process. As more vulnerabilities are found this will probably change in the future just like it has for Windows’ users in the past.
+Note: This was installed on a fully patched fresh install of OS X 10.6.7 with Symantec Endpoint Protection 11.0.6 fully up to date.
+
The installer will start and you will need to walk through the normal OS X process. Users will also be prompted for a username and password with administrative rights during the installation.
+
You may notice the new shield-like icon in the menu bar.
+![]()
The program will automatically run and pretend to be loading some sort of database for what we can assume is virus definitions.
+
You will then be barraged with notifications and popups letting you know about your fake infection.
+
Just like fake antivirus programs on Windows, if you click on the cleanup button or on one of the notifications you will be told that your software is not registered and needs to be paid for.
+
If you click on the register button you will be asked for your credit card information.
+Note: Do not fill out, submit, or even type your credit card info in this window.
+
If you close out of this window you will be asked to put in your serial number to continue.
+
To remove the virus close out of all of the windows with either the command+Q keyboard shortcut or click the red orb in the top left corner.
+
Now browse to your hard drive -> Applications -> Utilities and open the Activity Monitor. Locate the MacProtector process and click quit process.
+
Confirm the pop-up asking if you are sure you want to quit the process.
+
Open your Apple menu and select system preferences.
+
Select Accounts from the new window.
+
If you are not able to edit your account settings click on the lock in the lower left corner of the window and put in your admin password.
+
Select your user from the left and then click the login items tab. Select the MacProtector entry and then click the minus (-) button at the bottom of the window.
+
Close out of system preferences and go back to your Applications folder. Find the MacProtector application that was installed and either drag it to the trash, right click and move to trash, or drag to your favorite app zapper program.
+
There are some precautions you can take in getting this virus. First of all, use common sense when browsing the internet. If the website looks suspicious or the warnings look fishy, don’t click on them.
+There will also probably be other warnings that something may contain a virus. For instance, the virus I managed to download was later flagged by Google as being harmful to my computer.
+
If you are using Safari you should also disable the setting to automatically open “safe” files after downloading. Go to your Safari preferences and uncheck the box to disable this setting.
+
You should also scan your downloads with an antivirus program. When the installer package is scanned with Symantec Endpoint it detects the virus immediately.
+
If you don’t have Symantec on your Mac, the Windows scanner also has definitions to detect this virus.
+
Have you encountered a Mac OS X malware infection in the wild? Be sure to share with your fellow readers in the comments.
+]]>Cloud storage is a must have for any geek, and Dropbox is leading the way with its simplicity and affordable prices. With SecretSync you can take full advantage of Dropbox without giving up your privacy by encrypting sensitive documents easily.
+While Dropbox does store your files encrypted on their servers, users do not have access to the encryption keys and if files are requested by government agencies, Dropbox has the ability to decrypt your information and hand over the requested files.
+To protect your files from any unwanted access you can use other encryption software like TrueCrypt to encrypt your files before having them sync with Dropbox, but that is a manual process that would not be ideal. SecretSync automates the process and keeps your documents protected by locally encrypting your files before they are synced to Dropbox.
+To get started syncing your encrypted files you will need the following software.
+You probably already have an account with Dropbox, but if you don’t go to their site and request a free account and install the software.
+
You will also need Java installed on your computer because SecretSync uses Java to encrypt your files.
+
Finally, you will need to request a download from SecretSync while the software is in beta.
+Note: Currently SecretSync only runs on Windows, but OS X and Linux versions are coming soon.
+
Once everything is downloaded make sure you have Dropbox and Java installed and then install SecretSync.
+On the first computer you will need to create a new SecretSync account. This is required because SecretSync will store your encryption keys while Dropbox will store your files. This separation allows both your keys and your files to be secure. Create an account on the first computer and on subsequent installations you will provide your credentials.
+
To further protect your files you can provide a passphrase that will be used in addition to the encryption key SecretSync provides. This passphrase is not recoverable so if you lose this you may not be able to retrieve your files.
+
Enter your Dropbox location so that the correct shortcuts can be created.
+
That’s it. SecretSync will create a new folder in your user folder as well as shortcuts in your Dropbox folder.
+
By default you will have a README.txt file in your encrypted folder. To verify that your files are being encrypted, open the README.txt file directly from within the SecretSync folder (left) and also open it from the Dropbox\.SecretSync_tunnel_Root folder (right). You can see below that the file that is being synced to dropbox is completely unreadable because it is encrypted.
+
For any computers that you need your files, all you have to do is install Dropbox, Java, and SecretSync. This time when you install SecretSync just provide your account credentials and passphrase.
+
The files will automatically be decrypted in your SecretSync folder. Any files you want encrypted and synced just drag and drop them into the SecretSync folder just like you would with the Dropbox folder.
+ +]]>Motherboards are the most complex component in your computer. Fitted with hundreds of components and dozens of options it can be difficult to choose. Let’s look at the most important factors to help you decide before building your next computer.
+Motherboards are the central nervous system of your computer. They are responsible for connecting and communicating between all of the important components inside. Knowing what to look for is key when comparing boards.
+Motherboards come in different shapes and sizes, but luckily there are some standards set in place so that a lot of motherboards and cases can work together.
+For the most part these sizes apply to all desktop computers but some computers you buy from manufacturers don’t follow all the rules. This is usually fine when you buy the whole computer as a unit, but it becomes tricky if you want to swap a new motherboard into the case or build one from scratch.
+The most common motherboard size is Intel’s Advanced Technology Extended (ATX) and its derivatives. The chart below has some of the most common ATX sizes, but there are plenty more options than just the few shown here.
+
Motherboard sizes not only indicate the size of the board and placement of mounting screws, but it also dictates the general layout of the major components on the board. Have you ever noticed that almost all motherboards have the CPU, RAM, and I/O ports in the same place? That is because they are determined by the board standard. The components have to be in the same place otherwise case and power supply manufacturers wouldn’t easily be able to sell you something that works with with your motherboard no matter who makes it.
+For ATX motherboards the general layout of the board is shown in the picture below.
+
Intel’s second attempt at standardizing motherboards was with Balanced Technology Extended (BTX). The main focus of BTX was to solve airflow and component placement limitations of ATX. Although BTX was supposed to be the successor to the ATX form factor, it didn’t gain enough traction to take off in the consumer market. Some large computer manufacturers such as HP, Dell, and Apple still use BTX, or proprietary variations of it. The main layout differences can be seen in the picture below.
+
Because BTX has been abandoned by Intel since 2007, you will just need to focus on which ATX size best suits your needs. Typically the main difference between small ATX boards and larger boards are expansion slots and CPU support.
+
Image via kwixson +
+The processor socket you choose is the deciding factor in what CPU you can use in your computer. If the processor doesn’t fit, you can’t use it. Intel and AMD both have their own series of processors and sockets that are compatible with only their chips. The first thing you will need to decide is which processor you want and then you can decide further on which socket you need.
+Intel’s sockets usually have a friendly name, like Socket H, and a technical name like LGA 1156. The friendly name is easier to remember while the technical name will tell you about the socket. LGA 1156, for example, stands for Land Grid Array and it has 1156 pins. Because CPUs and motherboards change so often it probably isn’t worth it to describe what processors work in which sockets. Instead you can get that information on which CPU series work with which motherboards from your manufacturer.
+For Intel’s consumer sockets they typically have a low power, e.g. Socket 441 for Atom processors, a midrange, e.g. Socket H for Celeron, Core i3, Core i5, and Core i7 800 series processors, and a high end, e.g. Socket B for Core i7 900 series processors. If you are looking to use an Intel processor you will need to find which socket supports the processor you want.
+AMD hasn’t been changing quite as frequently as Intel and in the past 5 years they have only had 3 major consumer sockets. The AM2, AM2+, and AM3 sockets support almost all of AMD’s consumer processors currently. The AM2 and AM2+ were mostly interchangeable and the AM3 was introduced to support DDR3 memory.
+In either case, it is a good idea to pick your processor first, and your motherboard second. If you buy a socket with no processor support, it isn’t going to do you much good.
+
Image via adikos +
+The chipset is how your CPU, RAM, video card, and peripherals communicate. It is a combination of your northbridge and southbridge and can add some very nice features depending on your needs.
+The northbridge is typically responsible for the very fast communication between your CPU, RAM, and video card. It is where you will get features like SLI/CrossFire and DDR3. With the current Intel and AMD processors the northbridge functions are all included in the processor. This means less complexity for your motherboard and typically less latency for the processor to access the high speed components like RAM.
+Integration is great news for performance but sometimes bad news for options. For instance, because AMD owns ATI they could have the ability to lock their latest gaming graphics cards to only having specific features if you are using an AMD processor. This also put companies like Nvidia out of the northbridge market who use to make one of the best northbridge chips back in the Pentium 4 processor days.
+The southbridge will give you features like support for the latest PCI-E, SATA, USB 3, and many more future technologies. It is also essential to know what options you need because some southbridges may not support every feature you might expect like RAID and surround sound. With most manufacturers they will clearly state the features available without needing to dive deep into the southbridge chipset features.
+Because this combination of features + processors + options is so big and changes multiple times per year it would be impossible for us to list every option here. Instead, just be aware when you are picking your motherboard of what features you need and then look for those options in your boards chipset.
+
A lot of manufacturers will try to sell you on a motherboard based on extra features like the amount of on board I/O ports, amount of expansion slots, or the reliability of their motherboards. These can all be requirements depending on the purpose of the computer you are building. Once you figure out the processor and size of motherboard you want, these added features will probably become the next most important thing, especially with smaller form factor motherboards when space is limited.
+It is typically easier to use onboard features if they are available than try and expand the computer to have all of the options you need. If you know you are going to need two network cards or HDMI with audio pass-through, make sure your motherboard supports it before buying.
+The manufacture’s description may not be 100% clear on if the feature is supported or not. Other places to look for clarification on specific features are device reviews, forums, and wikipedia. You may also want to download the PDF user guide for the motherboard just to see if it is documented on how to enable the features you need.
+If you have clear decision for what you need in each category you can quickly narrow down the endless sea of options available. This can greatly ease the stress when trying to decide on a motherboard just by price or maximum memory supported.
+]]>Ubuntu 11.04 is finally here and you can’t wait to download it, but as is typical on any Ubuntu release day, the mirrors are crawling. Luckily if you have an old Ubuntu .iso you can update it easily with zsync.
+Zsync is a Linux command that allows you to compare an existing .iso with an up-to-date zsync meta file to download only the missing or out of date parts. Combine those parts with your existing file and what you are left with is a completely up to date iso without spending the time to download the entire file.
+Just how much bandwidth can this save? In our testing, upgrading an iso from Ubuntu 10.04.2 to 11.04 Beta 2 needed to download about 89% of the original file and 10.10 to 11.04 Beta 2 needed 84%. Obviously the more current the original file is, the less you will need to download.
+Although zsync is a native Linux command it still works just as well under Windows with the help of Cygwin. If you need help installing Cygwin in Windows, check out our walk through +.
+While you are installing Cygwin you will want to make sure you search for zsync on the select packages step.
+
Zsync is available in the universe repo all the way back to Karmic Koala. So if you are currently using Ubuntu you can install zsync with the normal apt-get command.
+++sudo apt-get install zsync
+
To update your old Ubuntu .iso image, open a command prompt and issue the following command with similar options.
+++zsync -i /path/to/old/ubuntu.iso http://Path-to-Ubuntu.iso.zsync +
+
This will compare your existing file with the new iso available online, download the missing parts from your current iso, and give you a fully up-to-date new file. Here is an example that lets us update our Ubuntu 10.04.2 image to the latest Ubuntu 11.04.
+Note: Using the below command will keep your original Ubuntu 10.04.2 .iso in tact and will create a new Ubuntu 11.04 .iso file.
+++zsync -i ./ubuntu-10.04.2-desktop-i386.iso http://releases.ubuntu.com/natty/ubuntu-11.04-desktop-i386.iso.zsync +
+

As you can see from the screenshot below, the file we updated with zsync (left) is exactly the same as the original file we downloaded directly (right).
+
Use the links below for the different zsync files available.
+Ubuntu live desktop (with installer) x86 and x86_64
+++http://releases.ubuntu.com/natty/ubuntu-11.04-desktop-i386.iso.zsync + > http://releases.ubuntu.com/natty/ubuntu-11.04-desktop-amd64.iso.zsync +
+
Ubuntu alternate installer x86 and x86_64
+++http://releases.ubuntu.com/natty/ubuntu-11.04-alternate-i386.iso.zsync + > http://releases.ubuntu.com/natty/ubuntu-11.04-alternate-amd64.iso.zsync +
+
Ubuntu server x86 and x86_64
+++http://releases.ubuntu.com/natty/ubuntu-11.04-server-i386.iso.zsync + > http://releases.ubuntu.com/natty/ubuntu-11.04-server-amd64.iso.zsync +
+
You can also use zsync to change between Ubuntu distributions. Use any of these links for the popular downloads of different Ubuntu flavors.
+From our testing, changing from Ubuntu 10.10 to Xubuntu 10.10 required us to download less than half (42%) of the full Xubuntu file.
+Kubuntu live desktop (with installer) x86
+Note: Kubuntu is only available in DVD form so you will be downloading a significant portion of the DVD image.
+++http://cdimage.ubuntu.com/kubuntu/releases/11.04/release/kubuntu-11.04-dvd-i386.iso.zsync +
+
Xubuntu live desktop (with installer) x86
+++http://cdimage.ubuntu.com/xubuntu/releases/11.04/release/xubuntu-11.04-desktop-i386.iso.zsync +
+
Ubuntu Studio live desktop (with installer) x86
++ ++]]>
Protected View can stop viruses from installing onto your computer but comes at the price of clicking a button every time you want to edit a document. Here’s how to permanently disable Protected View for all documents in Microsoft Office.
+Microsoft added many usability and security features to Office 2010 that help protect end users from embedded plugins and viruses that can crash Office or even install viruses. These features go a long way to keep your computer running smoothly, but there are still options you can tweak to disable Protected View for specific files. To fine tune your Protected View options have a look below.
+To get to the protected view options, open Microsoft Word 2010 and then go to file and options.
+
On the left column click Trust Center and then click Trust Center Settings.
+
Now on the left column click Protected View and uncheck any documents you would like to open automatically with Protected View disabled. This will allow you to edit the documents without needing to enable editing but may also make your computer an easy target for zero day virus exploits.
+
Once you check or un-check the settings you want you can close the windows. Repeat these steps for Microsoft Excel and Powerpoint if you want to disable Protected View there too.
+To add more locations that are marked as safe for Protected View go back to the Trust Center Settings and click Trusted locations on the left.
+
Click add new locations at the bottom and browse to the location you would like to add to the trusted locations list.
+
Any documents in the new location will now be marked as safe.
+Like most options in Windows there is a way to disable these settings via the registry too. If for some reason the options in Office do not work or you want to be able to automate this setting for multiple computers you can try setting one or more of these registry values below.
+++HKCU\Software\Microsoft\Office\14.0\Word\Security\ProtectedView
+
++HKCU\Software\Microsoft\Office\14.0\Excel\Security\ProtectedView
+
++HKCU\Software\Microsoft\Office\14.0\PowerPoint\Security\ProtectedView
+
The three values you would want to set are:
+DisableAttachementsInPV
+DisableInternetFilesInPV
+DisableUnsafeLocationsInPV
+By setting each value to 1 you will disable Protected View for that file location.
+]]>Active Directory lets companies manage users, computers, printers, and more from a centralized location. Have you wanted this functionality at home but don’t have money for Windows Server? Here’s how you can promote Windows Home Server to a domain controller.
+Maybe you don’t have 100+ computers in your closet but sometimes it may feel that way. Active Directory allows you to centrally manage the users that can log into the machines as well as help quickly set up machine preferences and can even help manage your virtual machines. If you have been wanting a better way to manage it all, or even just want to dive into Active Directory here’s how you can do it on the cheap.
+Please be aware that Microsoft specifically says you are not allowed to do this according to their end user license agreement (EULA) that you have to agree to when installing or setting up a Windows Home Server. As such, this article will be strictly for educational purposes.
+
If you are allergic to breaking EULAs I suggest you purchase Windows Server from Microsoft. Select students on the other hand can freely download Windows Server from Microsoft DreamSpark +.
+After your initial setup of Windows Home Server you will need to turn on remote desktop abilities from the Windows Home Server console. If you are reading this article I am going to assume you know how to do that yourself.
+You will also need a couple of dedicated disks or partitions for storing Active Directory information. Active directory uses the folders NTDS and SYSVOL to store its database and public files and if they are not on dedicated disks you most likely see slowdown with your server and with your network.
+Active Directory requires that you have DNS and a static IP address on your server. You don’t have to do these two steps right now, but you will need to be prepared to do them during the process.
+Promoting your WHS to a domain controller is going to do a few things that you may not want. Please read the below precautions before continuing.
+All in all, be prepared to do a fresh install on your WHS and do not do this on a machine you are actively keeping information on. It would probably be a better idea to have a second computer to set up AD and migrate any information over that you want.
+Always have backups, if this is a computer you use it is your responsibility to make a backup before you start this process.
+Domain controller promotion is done through the dcpromo.exe command. Go remote with your server and then open the run dialog and run the command.
+
Click next a couple times and then select the option to create a new controller for a new domain.
+
Then select new domain forest.
+
Next it is best to select to set up DNS on the local machine. This is the easiest way to get the controller configured. You will just have to make sure you turn off DNS on your router.
+If you are going to keep DHCP issued from your router you will also need to point DNS responsibilities to your server. Please check your router manual for how to do that.
+
Finally we can name the new domain. If you own a web domain name don’t name it the same thing as your domain name because in this case it may cause problems unless you are also running the web service and dynamic DNS updater from this computer.
+Instead it is a better idea to come up with a .local name for your domain.
+
Next you will need to put in a NETBIOS name. You should be able to select the default and just click next.
+
We need to tell the domain controller where to store the database, log files, and public files. It is recommended to store all of this on a separate hard drive. In my installation I have a separate 20 Gb hard drive plugged in (E:) where I have put the required files.
+

If you have any pre-Windows 2000 computers I feel bad for you. In most cases you can leave out support for anything that old in the next step.
+
Select a new Administrator password.
+
And then review your changes and click next.
+
Your promotion will start the process for you.
+
You will probably be asked for your installation CD at some point so make sure you have your CD (or the files from your CD) available to you.
+
You will also probably be prompted to change your IP address from dynamic to static during the process.
+
Click OK and then continue to change your IP address to a suitable static address.
+
Your setup should finish with this screen. Once you click finish go ahead and restart your new domain controller.
+Don’t worry if the reboot takes a while. It needs to start up a lot new services and will probably take a while for the first reboot.
+
Once the machine reboots you may get an error about a service failing to start. You should also have a new option at your login screen to log into the new domain you just created.
+
Now that you have a domain and a domain controller there are just a couple of things we need to do to make sure things run smoothly.
+First we can fix the services error we got before by going to start -> run -> “services.msc”
+
Find the “SSDP Discovery Service” and the “Universal Plug and Play Device Host” services and set them to start automatically. Then start the services manually.
+
Now browse to C:\Windows\Temp. Right click on the folders and choose properties.
+
On the security tab click add and then type network service and click check names. Once the name is verified (it will be underlined) click OK.
+
Repeat the above two steps for the c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files directory too.
+Now we need to configure the Windows Firewall to allow for the correct programs to get through. You could just disable the firewall but you will take a performance hit by just disabling it. Here are the ports and programs you will need to allow access through your firewall.
+
To add a program exception click on the exceptions tab and then click add program. Browse to the dns.exe located in the c:\windows\system32 folder and then click change scope.
+
Change the scope to only be on your local subnet because you don’t want anyone outside of your network using your DNS for lookups.
+
Next do the same thing for the DHCP server located at C:\WINDOWS\system32\tcpsvcs.exe but don’t limit the scope. Instead allow any computer to connect to DHCP otherwise the computers will never get an IP address after we turn that on.
+We won’t set up DHCP in this article but may revisit this in the future. If you want to know how to set up DHCP check out the we got served link at the end of this post.
+Go back to the main exceptions tab and then click add port. Type in LDAP for the name and 389 for the port number. Change the scope to my network (subnet) only and then click OK.
+
Repeat these steps for the following additional ports.
+LDAP – 389 – UDP
+LDAP – 636 – TCP
+LDAP – 3268 – TCP
+Kerboros – 88 – TCP and UDP
+You now have Active Directory all set up and the necessary ports required to join computers to your new domain and begin managing users, computers, printers, and much more from a central location.
+ +]]>Being able to remotely control your computer is an age old geek trick. But what about changing BIOS settings or installing an operating system remotely? With Intel AMT KMS this is within reach for any geek with the right hardware.
+Intel vPro is a management platform built into Intel processors and other hardware that allows companies to manage their desktops and laptops out-of-band (OOB). That means the computers can be managed no matter if the computer in on or off, and even if the operating system has failed or there is no hard drive present.
+With Core processors Intel introduced Active Management Technology (AMT) 6.0 which introduced a slew of new features including Keyboard Video Mouse (KVM) Remote Control +. This means that with the right hardware configuration you have full remote access to your computer no matter what state it’s in.
+Most geeks are familiar with VNC software that runs inside your operating system, but Intel AMT KVM runs at a hardware level which allows you to go remote with your computer in the case of a total system failure or even without an operating system installed. Let’s get started and set up Intel AMT KVM so you can go remote with your computer.
+Because vPro is designed for business use, not every Intel processor supports Intel AMT KVM. Specifically what you want to look for is a vPro logo somewhere on your computer.
+Note: Only some Core i5 and i7 processors support vPro. Intel does not currently make an i3 processor with vPro.
+
If you cannot find a logo on your computer, or you built the computer yourself, you can check to see if you have one of the following Intel Core processors +. If you do, you may be able to turn on KVM so long as you have a few other requirements.
+Along with the supported processor you will also need to be using Intel’s embedded video and Intel network card. Both of these are required because in order to allow out-of-band communication, the KVM server needs direct access to the network interface as well and display to be able to show the connected machine exactly what is being displayed.
+If you have all of the requirements above, continue on to configure Intel AMT KVM.
+The first thing you will need to do is turn on BIOS verbosity. Reboot your computer and enter your BIOS configuration. Look for something labeled firmware verbosity or boot verbosity and make sure it is turned on. Likewise, if there is an option for an AMT setup prompt make sure that is turned on as well.
+
Restart your computer and just after the BIOS splash screen you should see a second setup screen that looks something like the image below. Push Ctrl+P at this screen to enter the Management Engine BIOS Extension (MBEx) to configure Intel AMT.
+
If AMT has never been set up on your computer you will be prompted for a password. Enter “admin” for the default password and you will be prompted automatically to create a new password. The new password has to have be exactly 8 characters and contain one upper case letter, one lower case letter, one number, and one symbol. Enter the new password twice to continue.
+Note: If “admin” does not work as the default password you can also try “P@ssw0rd” because that is the default password in Intel’s configuration documentation.
+
Once you are logged into the MEBx, go to Intel Management Engine and then select activate network access.
+
Type Y to accept the warning that pops up about activating the ME network interface.
+
Next select network setup and then Intel(R) ME Network Name Settings.
+
Select host name and put in your computers name. You technically could put in anything you want here but it may cause problems with DNS if the Intel AMT name is different from your computer’s name.
+
Return to the main menu using the escape key and then go to manageability feature selection. Push Y to continue past the caution message.
+Verify that the manageability feature selection is enabled in the lower window and then select SOL/IDER.
+
From here verify that SOL, IDER, and Legacy Redirection Mode are all enabled.
+
Return to the previous menu and then select KVM Configuration. Make sure KVM Feature Selection is enabled.
+
From here change User Opt-in so that user consent is not required for KVM session.
+
Then enable remote control of Opt-in policy.
+
Push escape three times to exit the MEBx menu and push Y when prompted if you are sure you want to leave.
+Now that KVM is all set up on the target machine we just need to install software to let us connect. There are a few different tools that will let you do this but let’s start with a free option.
+Intel makes the Management Command Tool for just this occasion, find it in the link below. Download and install the software on the computer you want to connect with.
+Note: For the purposes of this how-to the remote computer will need to be plugged into the network with ethernet and also plugged into power to go remote. There are options to set up wireless but we will not be going into those options here.
+
After the software is installed, select add known computer.
+
Enter the information for the remote computer.
+
After the machine is added, select it from the left panel and then click connect.
+
After a connection is made select the remote control tab and then click on the arrow to open the options for Remote KVM Settings.
+
From the new window that will open drop down the list for KVM state and select enable all ports.
+Note: Enabling all ports allows us to connect with the free version of RealVNC Viewer but you will lose some functionality like encrypted connections.
+
Click OK and from the main window select “KVM Viwer Standard Port” to test and make sure the connection can be made.
+A new window will open with the remote computer in the window. This will work but will have a RealVNC branding logo that cannot be removed.
+
To get rid of the RealVNC branding install the standalone RealVNC viewer from the link below.
+Once you have the standalone viewer installed, or the portable version extracted, run the program and connect just like you normally would to any VNC server.
+
You will be prompted for your Intel AMT KVM password.
+
And a VNC connection will be established with the AMT KVM server.
+
You will know that you are connected to the hardware based KVM server because there will be a flashing icon in the top right corner of the screen and a thin red boarder on both the remote viewer and the local client.
+
The free viewer will work for most remote purposes but you will lose some functionality like IDE redirect, encryption, and the ability to power the machine on and off. If you want to take advantage of more features you are going to need to pay for the RealVNC Viewer Plus ($99).
+Before connecting with RealVNC Viewer Plus go back to the Intel Manageability Commander Tool and change the KVM State back to Redirection Port Only.
+
Open RealVNC Plus and connect to the remote machine.
+
Accept the prompt to confirm you are connecting to the right machine.
+
Then enter your AMT password when prompted.
+
Once the username and password are verified a remote window should open and there will be a banner across the top with some added functionality.
+
We won’t show all the added benefits of RealVNC Plus in this article but it will allow you to do things like reboot directly to the BIOS and mount an .iso file to install a whole operating system remotely.
+With a hardware based KVM available on standard hardware it really opens up more options for what you can do when you’re not at your computer.
+ + +]]>Ubuntu notifications are great, but some applications can get annoying by popping up things you don’t care about. Here is how you can disable, or enable, specific notifications for Pidgin.
+Whether you only want notifications when buddies sign on and off, or you only want new message notifications the libnotify plugin allows you to tweak the settings to your liking.
+To change your popup settings, open Pidgin and navigate to the tools -> plugins menu, or push the shortcut key Ctrl+U.
+
Scroll down to libnotify popups and click configure plugin.
+
Uncheck any items you don’t want to be notified about and close the settings. Now only the notifications you want will pop up.
+
We have already shown you the steps needed to transfer all your information to a new PS3 +, but for those of you who would like to see the whole process from start to finish we put together this video.
+If you need any clarification on the steps involved don’t forget to check out the original post with more details.
+ +]]>The PlayStation 3 now costs half the price, has double the storage, and uses half the power. If you need another reason to upgrade, Sony also makes it easy to transfer all of your information to a new console.
+Transferring all of your games, data, and settings is easier than ever, and all you need is an ethernet cable. Read on as we walk you through the whole process of setting up your new PS3 and wiping all your information off the old one.
+The first thing you need to do is sync all of your trophy information to Sony’s servers. In the XMB go to game -> trophy collection and push triangle on your controller. The menu will open and you can select sync with server.
+
The sync will take a few minutes but once it completes all of your trophies will be safely copied on Sony’s servers.
+
Next you should deactivate your system. To do that go to PlayStation network -> account management -> system activation and deactivate your system for game and video data.
+
Next go to the settings menu and check for updates.
+
Now to avoid errors during the transfer, scroll down to network connections and disable media server connection.
+
Then disable internet connection.
+
Finally scroll up in the system menu to the data transfer utility.
+
At this point you should connect your old and new PlayStation 3 together with an ethernet cable. You should also have your new PS3 plugged into your TV so that you can get ready to begin the transfer once the old system is waiting for a connection.
+Note: You can use either a crossover ethernet cable or a standard patch cable. The PS3 will be able to internally switch to know which cable you used.
+
Select transfer data from this system to the other PS3 system in the next step.
+
If you have any other users on the system it is also a good time to deactivate the system under their PSN accounts and sync their trophy information too. You have to back all the way out of the process to do that, but at least you are warned before you continue.
+
Click OK on the next screen after you have connected the new system with an ethernet cable.
+
Leave your old system at the waiting to transfer data screen and switch TV inputs to the new PS3 system.
+
Just like the old system you will want to check for updates, disable media server connection, and disable internet connection on the new system and then start the data transfer utility.
+This time select the option to transfer data from the other PS3 system to this one.
+
Once the system connects it will ask you to format the new system which will erase all data. Only do this if you are sure that you don’t have any information stored on the new system.
+Note: The old system will not be erased during this process.
+
Are you sure?
+
Let the format finish and the system will automatically reboot and should connect again to the old system and begin transferring data.
+Note: Depending on how much information you had on the old system this may take quite a while. I had about 35 GB of information on my PS3 and the process took about 40 minutes.
+
Once finished the new PS3 will automatically reboot
+
All of your information should be on the new system exactly as it was on the original.
+
You may need to re-authenticate some services like Netflix and Hulu Plus but otherwise games and settings should be the same.
+
Some games may store data elsewhere on the system and you will want to make sure that you have a backup of any games that may support extra data. Little Big Planet and PlayStation Home both have extra areas you may want to check to make sure your data is backup up before proceeding to the next step.
+You can also verify all of the information on the new system before continuing with wiping the old system.
+Once you verify you have any information you need and want to erase your personal data go to the settings menu -> system -> restore PS3 system.
+
We had already deactivated the system and synced our trophy information earlier but if you haven’t you will want to do that now.
+Select what method you want to use to format the PS3 with. Unless there is something really personal on the system a quick format should be good enough.
+
Are you sure?
+
The format will go really fast and then ask you to restart your PS3.
+
After it has finished it will walk you through the initial setup of the system. You don’t need to walk through the setup if you plan on selling the system so you can also just shut it down.
+]]>
Have you ever wondered what “XP” stands for or where “Ubuntu” comes from? Some operating systems get their names from obvious places, but others need some explaining. Read on to find out where your favorite OS got its name.
+We’ve rounded up the most popular and well-known operating systems, as well as a few lesser-known ones—if you know of another operating system with an interesting story behind its name, make sure to teach your fellow readers in the comments.
+![]()
Micro Soft Disk Operating System (MS-DOS) was originally licensed from Seattle Consumer Products’ Quick and Dirty Operating System (QDOS). MS-DOS had no graphical user interface (GUI) and instead everything was inputted by users via a command prompt. The DOS acronym does not always mean MS-DOS. DOS is a generic term for “Disk Operating System” and MS-DOS was just one of many including Apple DOS, AmigaDOS, FreeDOS, and many others.
+Image by zickey +
+The Windows name came from the fact that the new operating system, Windows 1.0, had windows a user could interact with in the GUI. The “Windows” name carries through all the way to current operating system and the number or name following “Windows” is how you can tell what version of Windows you have.
+
Microsoft stuck with the numbering scheme for 1.0-3.1 when it started to work on its New Technology (NT) branch of the operating system. Windows NT 4.0 was the first to implement the new NT kernel and was released in 1996 using the Windows 95 user interface.
+
Microsoft for a short while began naming their Windows operating system with the year of release indicating the version. Windows 95, 98, and Millennium Edition were all built off of the original Windows 3.1 kernel. Millennium Edition was release in 2000 and was designed to be used on home computers while Windows 2000 was designed for business computers.
+Windows 2000 used the NT kernel and was the direct successor to NT 4.0, it was later replaced by Windows XP.
+<img src="https://justingarrison.com/img/image7_thumb.png" alt=""> +
+Windows XP was released in 2001 and the XP stands for eXPerience. This experience lasted all the way until 2007 when Microsoft released Windows Vista. According to Microsoft, Vista got its name because “At the end of the day…what you’re trying to get to is your own personal Vista.” It was very philosophical of Microsoft but ultimately they moved to a more simple approach with Windows 7.
+Windows 7 is the seventh version of Windows since 95. Even though 95 wasn’t the first version of Windows if you count 1.0 – 3.1, but Windows 10 just doesn’t have the same ring to it. Plus people might get it confused with Mac OS 10.
+Apple’s System operating system was developed for the Macintosh personal computer. The operating system has always followed a basic revision numbering scheme with every major release getting a 1 point increment with minor updates getting a 0.1 increment.
+The Apple Macintosh computer was released in 1984 and got its name from the McIntosh apple.
+
Each new version featured incremental updates and feature enhancements as well as support for newer Apple computers. System 1-4 had no multitasking support which may sound familiar to another Apple operating system.
+The first seven versions of the operating system were simply called “System 1-7.” This held true until 7.6 when the word “System” was dropped in favor of a more marketable “Mac OS” name.
+Mac OS 8 came out in 1997 shortly after Steve Jobs came back to work for Apple. Mac OS 8 was supposed to be called version 7.7 but was changed to 8 because of a legal loophole that allowed Apple to shut down the 3rd party Macintosh market.
+Mac OS 9 is now known as the last of the “Classic” Mac OSs and was the final release to be based on Apple’s in house code.
+OS X (OS Ten) is the tenth version of the Mac operating system and the first Mac OS based on Berkeley Software Distribution (BSD). The underlying OS was developed by the company Steve Jobs started while away from Apple, NeXTSTEP, which Apple acquired in 1997.
+<img src="https://justingarrison.com/img/image11_thumb.png" alt=""> +
+Each minor version of OS X (10.1, 10.2, etc.) also has an associated big cat name. While there is some speculation on where Apple got the idea for these names, it is a pretty big coincidence that the operating system would share names with the now depreciated Macintosh clones built by Shaye + as well as a pretty convincing argument over OS X names and German tanks. +
+Linux itself got its name from Ari Lemmke who ran the FTP server the original Linux Kernel was uploaded to. Linus Torvalds, the creator of the Linux kernel, wanted to name the kernel Freax, but Ari instead gave him a folder called “linux” to upload his kernel to. The Linux name came from “Linus’ Minix” which was the operating system Linus was trying to replace for himself.
+<img src="https://justingarrison.com/img/image14_thumb.png" alt=""> +
+Ubuntu (oo-BOON-too) comes from the Zulu and Xhosa languages in Africa roughly meaning “humanity towards others.” +
+Like many Linux distributions, Ubuntu releases have two names for every release, a development code name and a version name. The numerical name for the release is based on the year and month of the release, e.g., version 10.04 was released in April of 2010. Every two years a long term support (LTS) release is also made which carries the LTS lettering and also has an incremental release for bug fixes. The current long term support version is Ubuntu 10.04.2 LTS.
+The code names are based on an alphabetical increment of an adjective and animal of the same letter. The animal naming came early in the development and usually reflects the state of the current Ubuntu distribution, e.g., Warty Warthog was the first release to signify its lack of polish +. Ever release since Breeze Badger (5.10) has been in alphabetical order.
+Ubuntu also has derivatives that have either a specific focus, location, or major difference in the operating system that requires a different distribution name. Some of the official derivatives are Kubuntu, Xubuntu, Mythbuntu, and Eubuntu. All of the official derivatives follow the same naming scheme as Ubuntu.
+There are also Ubuntu customizations like Linux Mint +, Linspire +, and Ubuntulite + which all have their own code names and version numbering.
+
Debian got its name from Ian Murdock the creator of the Debian distribution. He named the distribution after his girlfriend Debra Lynn by combining her name and his into “Debian.”
+Each stable Debian release has an associated version number (1.0, 2.0, etc.), but it also has a code name based on a character from the movie 1995 movie Toy Story. The latest 6.0 release is named after the toy aliens “Squeeze.” The development branch of Debian is permanently named “Sid” from the emotionally unstable neighbor in the movie.
+<img src="https://justingarrison.com/img/image17_thumb.png" alt=""> +
+Red Hat Linux received its name because red hats have been the symbol of freedom and revolution in both the U.S. and France. Red Hat comes in a few different flavors, Red Hat Enterprise Linux (RHEL), Fedora Project, and CentOS
+Red Hat Enterprise Linux does not use code names and instead just uses version numbers similar to OS X.
+Fedora gets its name from the Red Hat logo in which Shadowman, the man in the logo, wears a red fedora hat. Fedora 1-6 were known as Fedora Core while later versions dropped “core” from the name.
+Fedora uses code names that are relational to the previous release. Each release is related to the first with an “is-a” relationship to its predecessor +. For example, version 7 “Moonshine” is a record label like version 6 “Zod”, but it is also a movie like version 8 “Werewolf.”
+CentOS is the community-supported version of RHEL. The name comes from Community ENTerprise Operating System and is one of the most popular web server operating systems. Version numbers for CentOS follow RHEL version numbering and does not have code names.
+![]()
Gentoo got its name from Daniel Robbins after renaming his Enoch Linux distribution. Gentoo was first renamed when Daniel and the other developers began using the EGCS compiler instead of the GCC compiler for added features and speed. Gentoo is named after the fastest swimming penguin, the Gentoo penguin.
+The stylized “g” logo resembles a silver Japanese Magatama which were often found at grave sites as offerings to deities.
+<img src="https://justingarrison.com/img/image264_thumb.png" alt=""> +
+SuSE is a German distribution which originally stood for “Software und System Entwicklung” which in English translates to “Software and System Development.” Since 1998 the acronym is no longer used and the the name of the company is simply SUSE.
+The original release of SuSE Linux was version 4.2 instead of 1.0 in reference to the “Answer to the Ultimate Question of Life, the Universe, and Everything” from The Hitchhiker’s Guide to the Galaxy.
+SUSE’s mascot is a Veiled chameleon named “Geeko” from the words “gecko” and “geek.”
+SUSE is now owned by Novell and the free Linux distribution is known as openSUSE.
+]]>Linux has come a long way with hardware support, but if you have a wireless card that still does not have native Linux drivers you might be able to get the card working with a Windows driver and ndiswrapper.
+Using a Windows driver inside of Linux may also give you faster transfer rates or better encryption support depending on your wireless card.
+If your wireless card is working, it is not recommended to install the Windows driver just for fun because it could cause a conflict with the native Linux driver.
+The first thing you need to do is figure out what wireless card you have. There are a couple ways to do this and some involve finding the device chipset and others involve scouring through system logs.
+The easiest method is to just look at the device itself, if you have an external wireless card, or search your manufactures website for what wireless card came with your computer, if you have an internal wireless card.
+
Once you know what wireless adapter you are trying to install, go to the manufacturer’s website to download the Windows drivers for the device.
+If at all possible, you should try to download the 32-bit Windows XP drivers in .zip format rather than .exe. If you don’t have an option, select the latest Windows driver that your manufacturer provides.
+To extract the files, browse to the .exe or .zip file, right click on it, and select open with archive manager.
+Note: Although archive manager can extract both .exe and .zip files, sometimes the files within the .exe may not work with ndiswrapper.
+
Click extract at the top and copy all the files to an easy to find location.
+
Ndiswrapper is the tool that allows Linux to use Windows drivers for wireless card support.
+To install it in Ubuntu go to the Software Center and search for ndisgtk.
+Note: Linux Mint comes with ndiswrapper installed.
+
Install Windows Driver
+Now that you have your wireless driver extracted and ndiswrapper installed, open Windows Wireless Drivers from the System -> Administration menu.
+
In the window that opens, click on install new driver and browse to where you extracted the driver.
+
Sometimes the .inf files will be in sub-folders inside the driver so you may need to dig around to locate the right file to use.
+
After you select the .inf file for your wireless card click install. It will take a couple minutes to install the driver so be patient while it works.
+
After the driver is installed the main window will indicate if you selected the right .inf file by telling you if the hardware is present or not. If you selected the wrong driver the first time you can try installing a different .inf file that was extracted from the driver.
+If none of the .inf files work you may want to try the driver for the same card for a different version of Windows (e.g. XP, Vista, 7).
+
After you get the right driver installed click configure network to open Ubuntu network connections and connect to your wireless network.
+
If you are still having trouble you may want to check out the ndiswrapper wiki + to see if others have had success with the wireless card.
+]]>Netflix streaming isn’t just a feature that is nice to have, for many people it is a must have for any video streaming software. Unfortunately it has been missing from XBMC for various reasons, until today.
+In order to get Netflix Watch Instantly working in XBMC you just need to have XBMC 10.0+ installed on Windows or OS X. Because of a lack of Silverlight support, this currently does not work on XBMC Live, Linux, or iOS devices (iPhone, iPad, AppleTV). You also need to live in a region that offers Netflix streaming (currently US and Canada).
+To install XBMC Flicks in the latest version of XBMC all you need to do is go into your settings then add-ons. Click on get add-ons -> XBMC.org add-ons -> video add-ons then scroll to the bottom of the list and click XBMC Flicks.
+Note: If you don’t see XBMC Flicks, you do not have a system that is capable of playing streaming Netflix or you are missing needed components.
+
Click install on the following window and the add-on will be automatically downloaded and installed in your system.
+
To change settings for the application click configure from the installation window.
+
You may need to change the setting “Are you in Canada?” if you are using Netflix from Canada. This setting will automatically use the Netflix.ca website for streaming.
+
If you are using OS X, change the “OSX” setting under miscellaneous to Yes.
+
The next step is to authorize XBMC Flicks to connect to your Netflix account. If you are familiar with authorizing any other Netflix streamer this step will be very familiar to you.
+In XBMC go to videos -> video add-ons -> XBMC Flicks and you will be prompted to click OK after you finish authorizing the add-on.
+
A browser window should automatically launch and go to the Netflix authorization page.
+
Log in and click “Yes, Link This Account” and you will be forwarded to the confirmation page.
+
Now close your browser and go back to XBMC and click OK.
+
Restart XBMC and go back to the add-on.
+XBMC Flicks works like any other Netflix streaming application.
+You have access to browse your instant queue, top 25, new arrivals, or by genre. You can even search to jump right to a video whether or not it is in your instant queue.
+
Once you find a video you want to watch, a full screen Netflix window will open and begin streaming your video. You will need to log into Netflix to begin playback so we would recommend having Netflix remember your login information for seamless playback.
+During playback a remote control will still work for play, pause, etc., but if you don’t have a remote you will need to push Alt+F4 in Windows or Command+Q in OS X to quit playback and go back to XBMC.
+
For help and support with the add-on please see the official XBMC Flicks forum thread on XBMC.org +.
+]]>In our previous article we told you what LVM is and what you may want to use it for +, and today we are going to walk you through some of the key management tools of LVM so you will be confident when setting up or expanding your installation.
+As stated before, LVM is a abstraction layer between your operating system and physical hard drives. What that means is your physical hard drives and partitions are no longer tied to the hard drives and partitions they reside on. Rather, the hard drives and partitions that your operating system sees can be any number of separate hard drives pooled together or in a software RAID +.
+To manage LVM there are GUI tools available but to really understand what is happening with your LVM configuration it is probably best to know what the command line tools are. This will be especially useful if you are managing LVM on a server or distribution that does not offer GUI tools.
+Most of the commands in LVM are very similar to each other. Each valid command is preceded by one of the following:
+The physical volume commands are for adding or removing hard drives in volume groups. Volume group commands are for changing what abstracted set of physical partitions are presented to your operating in logical volumes. Logical volume commands will present the volume groups as partitions so that your operating system can use the designated space.
+To help you understand what commands are available for each prefix we made a LVM cheat sheet. We will cover some of the commands in this article, but there is still a lot you can do that won’t be covered here.
+All commands on this list will need to be run as root because you are changing system wide settings that will affect the entire machine.
+<img src="https://justingarrison.com/img/lvm-cheatsheet-235x300.png" alt=""> +
+(Click on the thumbnail for a full size image)
+The first thing you may need to do is check how your LVM is set up. The s and display commands work with physical volumes (pv), volume groups (vg), and logical volumes (lv) so it is a good place to start when trying to figure out the current settings.
The display command will format the information so it’s easier to understand than the s command. For each command you will see the name and path of the pv/vg and it should also give information about free and used space.

The most important information will be the PV name and VG name. With those two pieces of information we can continue working on the LVM setup.
+Logical volumes are the partitions that your operating system uses in LVM. To create a logical volume we first need to have a physical volume and volume group. Here are all of the steps necessary to create a new logical volume.
+Create physical volume
+We will start from scratch with a brand new hard drive with no partitions or information on it. Start by finding which disk you will be working with. (/dev/sda, sdb, etc.)
+Note: Remember all of the commands will need to be run as root or by adding ‘sudo’ to the beginning of the command.
++++
fdisk -l
If your hard drive has never been formatted or partitioned before you will probably see something like this in the fdisk output. This is completely fine because we are going to create the needed partitions in the next steps.
+
Our new disk is located at /dev/sdb so lets use fdisk to create a new partition on the drive.
+There are a plethora of tools that can create a new partition with a GUI, including Gparted +, but since we have the terminal open already, we will use fdisk to create the needed partition.
+From a terminal type the following commands:
++++
fdisk /dev/sdb
This will put you in a special fdisk prompt.
+
Enter the commands in the order given to create a new primary partition that uses 100% of the new hard drive and is ready for LVM. If you need to change the partition size or want multiple partions I suggest using GParted or reading about fdisk on your own.
+Warning: The following steps will format your hard drive. Make sure you don’t have any information on this hard drive before following these steps.
+n = create new partitionp = creates primary partition1 = makes partition the first on the diskPush enter twice to accept the default first cylinder and last cylinder.
+
To prepare the partition to be used by LVM use the following two commands.
+t = change partition type8e = changes to LVM partition type
Verify and write the information to the hard drive.
+p = view partition setup so we can review before writing changes to diskw = write changes to disk
After those commands, the fdisk prompt should exit and you will be back to the bash prompt of your terminal.
+Enter pvcreate /dev/sdb1 to create a LVM physical volume on the partition we just created.
You may be asking why we didn’t format the partition with a file system but don’t worry, that step comes later.
+
+Create volume Group
Now that we have a partition designated and physical volume created we need to create the volume group. Luckily this only takes one command.
++++
vgcreate vgpool /dev/sdb1

Vgpool is the name of the new volume group we created. You can name it whatever you’d like but it is recommended to put vg at the front of the label so if you reference it later you will know it is a volume group.
+Create logical volume
+To create the logical volume that LVM will use:
++++
lvcreate -L 3G -n lvstuff vgpool

The -L command designates the size of the logical volume, in this case 3 GB, and the -n command names the volume. Vgpool is referenced so that the lvcreate command knows what volume to get the space from.
+Format and Mount the Logical Volume
+One final step is to format the new logical volume with a file system. If you want help choosing a Linux file system, read our how to that can help you choose the best file system for your needs +.
++++
mkfs -t ext3 /dev/vgpool/lvstuff

Create a mount point and then mount the volume somewhere you can use it.
++++
mkdir /mnt/stuff>mount -t ext3 /dev/vgpool/lvstuff /mnt/stuff

One of the benefits of logical volumes is you can make your shares physically bigger or smaller without having to move everything to a bigger hard drive. Instead, you can add a new hard drive and extend your volume group on the fly. Or if you have a hard drive that isn’t used you can remove it from the volume group to shrink your logical volume.
+There are three basic tools for making physical volumes, volume groups, and logical volumes bigger or smaller.
+Note: Each of these commands will need to be preceded by pv, vg, or lv depending on what you are working with.
+resize – can shrink or expand physical volumes and logical volumes but not volume groupsextend – can make volume groups and logical volumes bigger but not smallerreduce – can make volume groups and logical volumes smaller but not biggerLet’s walk through an example of how to add a new hard drive to the logical volume “lvstuff” we just created.
+Install and Format new Hard Drive
+To install a new hard drive follow the steps above to create a new partition and add change it’s partition type to LVM (8e). Then use pvcreate to create a physical volume that LVM can recognize.
+Add New Hard Drive to Volume Group
+To add the new hard drive to a volume group you just need to know what your new partition is, /dev/sdc1 in our case, and the name of the volume group you want to add it to.
+This will add the new physical volume to the existing volume group.
++++
vgextend vgpool /dev/sdc1

Extend Logical Volume
+To resize the logical volume we need to say how much we want to extend by size instead of by device. In our example we just added a 8 GB hard drive to our 3 GB vgpool. To make that space usable we can use lvextend or lvresize.
++++
lvextend -L8G /dev/vgpool/lvstuff

While this command will work you will see that it will actually resize our logical volume to 8 GB instead of adding 8 GB to the existing volume like we wanted. To add the last 3 available gigabytes you need to use the following command.
++++
lvextend -L+3G /dev/vgpool/lvstuff

Now our logical volume is 11 GB in size.
+Extend File System
+The logical volume is 11 GB but the file system on that volume is still only 3 GB. To make the file system use the entire 11 GB available you have to use the command resize2fs. Just point resize2fs to the 11 GB logical volume and it will do the magic for you.
++++
resize2fs /dev/vgpool/lvstuff

Note: If you are using a different file system besides ext3/4 please see your file systems resize tools.
+Shrink Logical Volume
+If you wanted to remove a hard drive from a volume group you would need to follow the above steps in reverse order and use lvreduce and vgreduce instead.
+RELATED: <strong><em>Which Type of RAID Should You Use For Your Servers?</em></strong> +
+Snapshots is a feature that some newer advanced file systems come with but ext3/4 lacks the ability to do snapshots on the fly. One of the coolest things about LVM snapshots is your file system is never taken offline and you can have as many as you want without taking up extra hard drive space.
+
When LVM takes a snapshot, a picture is taken of exactly how the logical volume looks and that picture can be used to make a copy on a different hard drive. While a copy is being made, any new information that needs to be added to the logical volume is written to the disk just like normal, but changes are tracked so that the original picture never gets destroyed.
+To create a snapshot we need to create a new logical volume with enough free space to hold any new information that will be written to the logical volume while we make a backup. If the drive is not actively being written to you can use a very small amount of storage. Once we are done with our backup we just remove the temporary logical volume and the original logical volume will continue on as normal.
+Create New Snapshot
+To create a snapshot of lvstuff use the lvcreate command like before but use the -s flag.
++++
lvcreate -L512M -s -n lvstuffbackup /dev/vgpool/lvstuff

Here we created a logical volume with only 512 MB because the drive isn’t being actively used. The 512 MB will store any new writes while we make our backup.
+Mount New Snapshot
+Just like before we need to create a mount point and mount the new snapshot so we can copy files from it.
++++
mkdir /mnt/lvstuffbackup>mount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup

Copy Snapshot and Delete Logical Volume
+All you have left to do is copy all of the files from /mnt/lvstuffbackup/ to an external hard drive or tar it up so it is all in one file.
+Note: tar -c will create an archive and -f will say the location and file name of the archive. For help with the tar command use man tar in the terminal.
+++
tar -cf /home/rothgar/Backup/lvstuff-ss /mnt/lvstuffbackup/

Remember that while the backup is taking place all of the files that would be written to lvstuff are being tracked in the temporary logical volume we created earlier. Make sure you have enough free space while the backup is happening.
+Once the backup finishes, unmount the volume and remove the temporary snapshot.
++++
umount /mnt/lvstuffbackup lvremove /dev/vgpool/lvstuffbackup/

To delete a logical volume you need to first make sure the volume is unmounted, and then you can use lvremove to delete it. You can also remove a volume group once the logical volumes have been deleted and a physical volume after the volume group is deleted.
+Here are all the commands using the volumes and groups we’ve created.
++++
umount /mnt/lvstuff lvremove /dev/vgpool/lvstuff vgremove vgpool pvremove /dev/sdb1 /dev/sdc1

That should cover most of what you need to know to use LVM. If you’ve got some experience on the topic, be sure to share your wisdom in the comments.
+]]>Google recently launched the ability to print to your local printers from anywhere in the world using Google Cloud Print, but it didn’t work anywhere until today. Here’s how to set it up, get it running, and print from your mobile phone.
+At the moment, the only desktop way to use Cloud Print is from a Google Chrome Notebook, which most people don’t have access to, or from the Gmail Mobile web site + that you can access from iPhone or Android. It’s also worth noting that only Windows is supported for the Cloud Print server portion.
+If you don’t have Chrome installed yet, download the latest beta or developer release from the link below. If you currently have the stable release of Chrome you will need to install the latest beta release to get cloud printing to work.
+Note: Once the installation has finished you will need to restart Google Chrome if it is already running
+
Once the developer version is installed click on the wrench menu and then options.
+
Click on the under the hood tab and then scroll down to Google Cloud Print at the bottom.
+
Sign in with your Google account.
+
Once you have successfully signed in you should get a confirmation window and then your options will change to have a disable button and a manage print settings button.
+
If you click on Manage print settings you will be brought to another web page to delete printers from cloud print. This is also the page you can view active print jobs and share printers.
+Note: It does not appear that printer sharing is currently enabled.
+
Once your printers are configured head over to the test print link below and print out a test. A pop-up will ask you which printer you want to use. You can select it and change any options from the link on the right.
+
If you head back to the printer management page you will see your test print show up under active print jobs.
+
The job should print out but you might have mixed results with virtual printers such as PDF printers. Just remember, the feature is currently in beta but like always, it will get better with time.
+Since we don’t have access to a Google Chrome notebook, we’ll show you how it works for regular people—as in, anybody with an iPhone or Android phone. Simple login to gmail.com + from your mobile browser, click the drop-down button on the upper bar, and then click Print.
+
Then you’ll see a list of your printers, and you can select one.
+
Once you select one of the printers, you can expand the Options, and choose the mode, color, and how many copies you want.
+
Once you’ve selected the printer, click the Print button in the lower right, and your document will show up on your printer. Who needs trees?
+ + + +]]>Windows command-line tools have advanced a lot with PowerShell, but Linux has had a much more usable terminal for many years. Here’s how you can get the best of both worlds with Cygwin, a ‘nix-style terminal for Windows PCs.
+In today’s lesson, we’ll explain how to get Cygwin running, but stay tuned for future articles where we’ll explain how to use it for all sorts of different things.
+Cygwin comes with a normal setup.exe to install in Windows, but there are a couple steps you will need to pay attention to, so we will walk you through the installation.
+
To keep the installation small while saving bandwidth for you and Cygwin, the default installer will download only the files you need from the internet.
+
The default install path is C:\Cygwin but if you don’t like to have programs installed on the root of your C: drive you can change the path or make a symbolic link from C:\Cygwin to your program files +.
+
Click next until you come to a download mirror selection. Unfortunately, the installer does not say where the mirrors are located so in most cases you might as well just guess which mirror works best.
+
After you have selected a mirror, the installer will download a list of available packages for you to install. Here is where things get a bit more intimidating.
+There will be hundreds of packages available separated by multiple different categories. If you don’t know what the package is you can leave the default selection and install additional packages later by running the installer again.
+
If you know what package you need, you can search for it and the results will be automatically filtered.
+
Once you click next, it will take a little while to download all the selected tools and then finish the installation.
+After the installation you will have a Cygwin icon on your desktop that you can launch to open the Cygwin terminal.
+
This terminal starts in the C:\Cygwin\home\
To make Cygwin work in your normal Windows command prompt you need to add Cygwin to your Windows Environment Variables.
+Start by opening your system properties with either Win+Pause/Break or right click on computer and select properties.
+In the left column click on advanced system settings to open the system properties window we are looking for.
+
From the advanced tab, click on environment variables at the bottom.
+
Then in the system variables, locate the path variable and click edit.
+
At the end of the variable value option, add the Cygwin bin location like so.
+;C:\Cygwin\bin
Note: Make sure you add a semicolon to separate it from the other values.
+
Click OK to close out of the window and then open a command prompt to test out a few Linux commands.
+As you can see from the below picture both pwd and ls work in the normal Windows command prompt. You can also see that /cygdrive/c is automatically added to the location.
+
There is a lot more you can do with Cygwin installed and we will show you some more of the useful tools in future articles.
+ +]]>Tired of the grey Apple logo on your Mac? Why not “think different” and “switch” it to something else? “The notebook for everyone” doesn’t give you “the power to be your best” without a little personalization.
+What we mean to say is, the Apple boot logo can get very boring over time and there is no easy option in OS X to change it. However, with a few items you can customize it to just about anything you want, or you can confuse your friends by changing their logo without them knowing for a harmless practical joke.
+To change the default startup logo on your Mac you will need 3 things.
+Head over to the link below to download BootXChanger for free. Once downloaded, install the application by dragging it to your applications folder.
+
When you launch the program for the first time you may get a warning that the program was downloaded from the internet, click open to contiune.
+
When picking a picture you should keep these tips in mind.
+Drag the new image from a finder window into the program and hit apply to change the logo.
+
Put in your admin password when prompted.
+
Reboot to make sure things turned out the way you expected.
+Just for fun, BootXChanger also includes a few sample images inside the dmg download. Feel free to use those pictures to get some ideas for some other cool images.
+
Our personal favorite was obviously the one we created. Feel free to download the boot image for yourself and put it on all of your friends Macs without them knowing.
+![]()
You can also change your background color of the boot screen to something that goes better with your new logo.
+
If you are ever not happy with your custom logo, click default image and the original Apple logo will be restored.
+ +]]>Logical Volume Management (LVM) is a disk management option that every major Linux distribution includes. Whether you need to set up storage pools or just need to dynamically create partitions, LVM is probably what you are looking for.
+Logical Volume Manager allows for a layer of abstraction between your operating system and the disks/partitions it uses. In traditional disk management your operating system looks for what disks are available (/dev/sda, /dev/sdb, etc.) and then looks at what partitions are available on those disks (/dev/sda1, /dev/sda2, etc.).
+
With LVM, disks and partitions can be abstracted to contain multiple disks and partitions into one device. Your operating systems will never know the difference because LVM will only show the OS the volume groups (disks) and logical volumes (partitions) that you have set up.
+Because volume groups and logical volumes aren’t physically tied to a hard drive, it makes it easy to dynamically resize and create new disks and partitions. In addition, LVM can give you features that your file system is not capable of doing. For example, Ext3 does not have support for live snapshots, but if you’re using LVM you have the ability to take a snapshot of your logical volumes without unmounting the disk.
+The first thing your should consider before setting up LVM is what you want to accomplish with your disks and partitions. Some distributions, like Fedora, install with LVM by default.
+If you are using Ubuntu on a laptop with only one internal hard drive and you don’t need extended features like live snapshots, then you may not need LVM. If you need easy expansion or want to combine multiple hard drives into a single pool of storage then LVM may be what you have been looking for.
+First thing to know about using LVM is there is no easy way to convert your existing traditional partitions to logical volumes. It is possible to move to a new partition that uses LVM, but that won’t be something that we will cover in this article; instead we are going to take the approach of setting up LVM on a fresh installation of Ubuntu 10.10.
+
To install Ubuntu using LVM you need to use the alternate install CD. Download it from the link below and burn a CD or use unetbootin to create a USB drive +.
+
Boot your computer from the alternate install disk and select your options up until the partition disks screen and select guided – use entire disk and set up LVM.
+Note: This will format your entire hard drive so if you are trying to dual boot or have another installation select manual instead.
+
Select the main disk you want to use, typically your largest drive, and then go to the next step.
+
You will immediately need to write the changes to disk so make sure you selected the right disk and then write the changes.
+
Select the size you want the first logical volume to be and then continue.
+
Confirm your disk partitions and continue with the installation.
+
The final step will write the GRUB bootloader to the hard drive. It is important to note that GRUB cannot be on an LVM partition because computer BIOSes cannot directly read from a logical volume. Ubuntu will automatically create a 255 MB ext2 partition for your bootloader.
+
After the installation is complete, reboot the machine and boot into Ubuntu as normal. There should be no perceivable difference between using LVM or traditional disk management with this type of installation.
+
To use LVM to its full potential, stay tuned for our upcoming article on managing your LVM installation.
+ +]]>This year, How-To Geek’s own Justin was on-site at the Consumer Electronics Show in Las Vegas, where every gadget manufacturer shows off their latest creations, and he was able to sit down and get hands-on with most of them. Here’s the best of the bunch.
+Make sure to also check out our list of the Worst of CES 2011 +, where we covered the gadgets that just didn’t make the cut.
+
Thin isn’t just for TVs anymore. This Samsung is a direct PC competitor to the MacBook Air and boasts similar or better specs than anything the 13″ Apple can throw at it thanks to its duraluminum body and and Intel Core i5. Too bad all of the duraluminum in the world won’t soak up a $300 price difference between the two machines. But at least you don’t have to give any money to Apple.
+
3D glasses were fun to wear when they were blue and red and we were 9 years old. Active shutter glasses have not helped the matter with their heavier frames, recharge times, and inability to decide on a standard. The new Samsung 3D glasses fixes 2 of the 3 problems with their 1oz frame and wireless charging station. The plan is to buy the glasses first and then think of an excuse to buy the new TV that goes with them.
+
It is every geeks dream to have one gadget that can do everything just as well as all the individual devices combined. The Motorola Atrix isn’t that device, but at least it now makes it possible to use your phone as a full blown desktop. The idea is when you put the phone into a desktop or laptop dock the webtop interface pops up giving you a full installation of Firefox and all of the apps on your phone at your disposal. You can even use the 3G from your phone and place phone calls directly from the webtop interface.
+
BlackBerry is a company that doesn’t have a strong following outside of the corporate world. Couple that with a declining market share and lack of apps and what does RIM do? Buys a company who knows what design is supposed to look like and make a sleek and super functional tablet that is bound to give the almighty iPad a run for its money. The only downside is the nagging requirement to tether the device to a BlackBerry for email, text, and 3G support. This tablet shares so much in common with webOS it is could almost pass as the next HP slate.
+
Whether you like motion gaming or not, it is here to stay for at least one generation. PC gamers are not going to be left out of all the fun thanks to Razer’s Sixense. While the controller is not actually for sale yet, this magnetic field projecting, infinite axising, programmable controller has already won our hearts; if for no other reason than the fact that they demoed it with Portal 2. In all seriousness, this thing looks amazing and the promise of a wireless model being developed means you could theoretically have as many of these controllers playing party games from a single receiving unit.
+
A completely immersive experience is something that every gamer, movie fan, and meditator seeks. The Sony 3D head-mounted display is so close to providing that experience that it gives us something to look forward to at CES 2012. In our experience the 3D was better than any glasses free or glasses based technology and the immersion was just as good as sitting in our own private movie theater.
+
Long has the Turtle Beach X41 been the best wireless surround sound with microphone headset around. However with a lack of Bluetooth the X41 is limited to only working with the Xbox 360 and still requires a cable for voice chat on the PC. The PX5’s have improved in almost every way on top of the X41, and now have included Bluetooth so they can be paired with your console for chat and your phone for wireless music streaming or phone calls at the same time. PS3 owners can lavish in the wonderful world of 7.1 wireless surround sound, that is, so long as you can afford the $250 MRSP.
+
The original surface was announced when Windows Vista SP2 was fresh on our minds and Windows 7 was on our beta machines. It was clunky, expensive, and had a very limited number of demo programs. The new surface is only 4″ thick, can be mounted vertically or horizontally, can not only sense your touch but can also “see” things set on it with Samsung’s pixel sense, and it costs about $6000 less than the original. Oh and did we forget to mention it is made of the largest piece of Gorilla Glass known to man?
+
Our first person shooters have had heads up displays for years and finally our real life can enjoy all the benefits so long as your are looking for speed and GPS location rather than ammo and kill death ratios. If you happen to snowboard, or possibly street luge, than these goggles are probably something that you have dreamed about and should start saving your pennies for now.
+]]>This year, How-To Geek’s own Justin was on-site at the Consumer Electronics Show in Las Vegas, where every gadget manufacturer shows off their latest creations, and he was able to sit down and get hands-on with most of them. Here’s the ones that just didn’t make the cut.
+Make sure you also read our Best of CES 2011 post +, where we cover the greatest gadgets that we found.
+Keep reading to take a look at the best of the worst products, that might have initially appeared good but showed their true colors after we spent some time with them.
+
From the company bringing you the Atrix and Xoom, comes a device that we can’t help but think it will fail after the first two revisions were nothing but jokes among the serious Android user. The Cliq 2 is designed specifically for the business user who wants to take advantage of the Motoblur skin. The problem is, no privacy conscious company in the world would want to allow Motorola to mirror their closed Exchange account information in the name of social media. Not to mention a terrible reptile-like keyboard and a bad history of updates.
+![]()
How can a dual touch-screen laptop be one of the worst products at CES? The custom user interface tweaks were a nice touch (get it?) when they worked. After five seconds of typing on this laptop and we realized just how difficult touch typing is without any tactile feedback. On top of that, the notebook isn’t designed to rotate into portrait mode for oversize digital newspaper reading.
+
Make an easy way to get your computer screen on your TV. That’s the idea of this device, but when things like Google TV, WiDi, and Airplay exist, this product was just one annoyance after another when actually trying to accomplish anything except turn it off. Oh, and the buttons on the remote are from a time when tactile feedback was strictly science fiction and Dr. Scholls made television remotes.
+
Have you ever bounced a ball against a wall so long that the stucco started to peel? How about roll a ball on the ground for hours on end until you left tracks in the carpet. If you have done either of those two things you have had as much fun as you will ever have with the Orbotix Sphero and you saved yourself $99 in the process. Good for you, in honor of your thriftiness go buy yourself a gumball.
+
Never in the history of man has something so diabolical been unleashed that the most evil of super villains wouldn’t dare be seen as part of this plan. A wirelessly charging Tesla Roadster seems innocent enough, but pull back the red curtain and see the true evil plans of the super villain known as Fulton. No really, can you imagine going grocery shopping with every box, bottle, and crate flashing advertising at you until you pick up the product in a desperate attempt to make it stop?
+
A portable speaker that can turn any hard surface into a speaker sounds like a great idea until you either A) hear it in person, or B) realize that this thing retails for $80 which means you could have bought a much better portable speaker that wasn’t reliant on any hard surfaces for sound. Save yourself the money and get a decent set of speakers and not a crappy sounding gimmick.
+Any product that promotes doing anything under very specific conditions in very controlled environments just doesn’t hold water. Every glasses free 3D television we saw required no overhead lights, a dark room, you had to stand in 1 of 3 spots (2 of which rarely worked correctly). Even after these requirements, the edges of the TV looked like a flimsy holographic bookmark you got when you were in the book worm club in 4th grade. Glasses free 3D obviously isn’t ready for prime time.
+A Windows 7 slate can’t be that bad to be known as one of the worst products at CES right? What makes this product so much worse than any of the other Windows 7 slates? The fact that this company’s flier has misleading information about it’s competition, had a custom application launcher that crashed multiple times in our hands on, and the sales representative won our personal award for worst breath and BO at CES makes this product a trifecta of fail.
+]]>After doing this two years I figured I needed to continue my tradition. If you want to see how right or wrong I was in previous years check out my 2009 predictions + and 2010 predictions +.
+
First of all 2011 will be the year of the tablet. That isn’t a prediction, it’s more of a fact. I think the big winner in the tablet world will eventually be Google with Android simply because they will have the cheapest and most devices. This has already been proven true with cell phones.2. Even though the company with the cheapest and most devices will eventually win, advertising will win the tablet market in the short term. It doesn’t matter who has the best device or the best software. The company who has the most successful marketing campaign will win. This makes me think that the iPad will continue to sell well, the Blackberry Playbook will have a decent market, even though it will suck, and HP won’t have much traction unless they change their strategy. In the end, Android will still probably take the lead because they will have the most companies pushing Android tablets.3. Because of tablets in the Cellphones
+Smartphones will continue to expand their market and the Verizon iPhone will finally come out. The iPhone market share won’t go up as much as some people expect because most people that want a smartphone are already entrenched in the platform they are on now. And 2011 will have so many good phone operating systems that the iPhone won’t be “the best” anymore. iPhone market will still go up, but it won’t catch Android.2. AT&T will be forced to stop riding the iPhone success wave and either slash their prices or finally get some decent devices. My theory is they will reach out to HP and Blackberry for exclusive devices rather than lowering prices to Sprint and T-Mobile level.3. Network will be the big marketing push for carriers at first but that will die down near the end of the year because most of the networks will begin to share the same coverage and network technology. Also phones will become less exclusive because quad-band and penta-band phones will become the norm. Although 2011 will still see very few LTE voice devices.4. Customers will start adding devices to their contracts because more devices will have cellular radios and the wireless data will finally became fast enough to use. I think there may even be a push for people to ditch their traditional internet provider and just tether their phone/buy a modem because it will be cheaper for them.
+
That is all I got for this year. Let me know if you have any predictions in the comments or if you agree/disagree. Either way I hope everyones 2011 is great and I am looking forward to all the announcements to come.
+Originally published at 1n73r.net + on January 1, 2011.
+]]>Staying connected may be hard no matter what network you are on, and in flight Wi-Fi isn’t pervasive enough to count on. Here are tips and tricks to keep yourself entertained when unplugged and traveling.
+Image Via MarinaAvila +
+
Little keeps us entertained like the music and movies we love. There are plenty of ways to keep occupied online with YouTube, Hulu, and Netflix but what happens when your cord is cut? Obviously DVDs are not practical when traveling so here are a few easy ways to get your movies and TV shows on your computer, phone, iPod, or portable gaming system with ease.
+Lets not forget you can also download YouTube videos for offline viewing or set up Miro to download some of the fantastic Revision3 shows + before you leave.
+
If music and movies aren’t your cup of tea, we also have a plethora of how-tos to get your favorite book or article onto your eReader of choice.
+If you are a gamer then you probably already have some great games stored on your laptop or mobile device to keep you entertained on a trip to Mars. But what if you are a casual gamer and don’t have an expansive library stored on your laptop?
+For some flash based games you can download the .swf file to your laptop for offline playing using the Firefox Unplug addon +. If you are looking for some of the flash games we have featured on the site over the years, check out the list of Friday fun articles we have posted. +
+
For some people work doesn’t stop when you are on vacation. However transitioning all of your work to Google docs doesn’t seem like that great of an idea if you won’t be online for an extended period of time. Here are some tips to make those cloud apps work locally so you can use them offline.
+There are also plenty of options available to building a wiki and taking it with you on the go.
+With all of these options available your only enemy will be the batteries that give life to your electronics, and maybe your drunk uncle but we can’t help you with that.
+]]>It happens all the time, you find an article to read but then nature calls. Do you take your laptop with you? With site to phone you can share links between any browser and any smartphone with a single click.
+If you have Android you may be familiar with this functionality with Google’s Chrome to phone +, or with webOS’ Neato! + But what if you have an iPhone, Blackberry or Windows Phone 7 device? That is where site to phone comes in handy. It not only supports every major mobile smartphone operating system, but it also supports every major web browser.
+The first thing you will need to do is go to site to phone on your laptop and click setup with your phone.
+
The site will generate a unique browser link and ask you to go to that link on your phone’s browser.
+Note: The link is unique to you and if you give it to other people they may be able to see what links you have sent to your phone. Because of the way this works, you can only send links to one phone set up at a time.
+
Follow the instructions on the page for your phone to add the bookmark as a shortcut on your app launcher.
+Note: My instructions are for webOS but yours will probably be similar.
+

Once you have created the shortcut, tap complete setup and go back to your laptop to set up your browser.
+
The next step isn’t required but it makes things easier. If you don’t want to install an addon or create an account you can go to the site to phone website and use quick send to send links to your phone.
+
If you would like to make life easier on yourself you can click on your browser icon for instructions on how to install a plugin or bookmarklet. Currently only IE8/9 and Chrome have plugins while the other browsers use a bookmarklet that works just as well.
+
You will need to set up an account to use the bookmarklet or extension, but it is well worth it for one click send to phone functionality.
+
After you have set up your account and logged into the site all you need to do is browse to a site you would like to read on your phone and either right click and select “send page to phone” or click the icon in your menu bar.
+
After a site has been sent to your phone, go to your phone’s app launcher and tap the bookmark you created earlier.
+
Tap on it to launch the webpage you just sent to the phone.
+
Some phones will even recognize links that have native apps and open the necessary app to give you the best experience possible on your device.
+
To view your link history you can open site to phone in phone or laptop browser and click on “your links” at the top.
+
Site to phone homepage
+]]>Mastering the keyboard will not only increase your navigation speed but it can also help with wrist fatigue. Here are some lesser known Windows shortcuts to help you become a keyboard ninja.
+Image by Remko van Dokkum +
+Win+1, 2, 3, 4, etc. will launch each program in your taskbar. It is helpful then to keep your most used programs at the beginning of your task bar so you can open them one right after another. This also works in Windows Vista for the quick launch icons.
+
Win+Alt+1, 2, 3, etc. will open the jump list for each program in the taskbar. You can then use your arrows to select which jump list option you want to open.
+
Win+T will cycle through taskbar programs. This is similar to just hovering over the item with your mouse but you can launch the program with Space or Enter.
+
Win+Home minimizes all programs except current the window. This is similar to the Aero shake and can be disabled with the same registry key +.
+Win+B selects the system tray which isn’t always useful but can come in very handy if your mouse stops working.
+
Win+Up/Down maximizes and restores down the current window so long as that window has the option to be maximized. It is exactly the same as clicking on the middle button on your windows.
+Alt+Esc is like Alt+Tab but switches windows in the order they were opened and does not have the fancy window preview overlay.
+Win+Pause/Break will open your system properties window. This can be helpful if you need to see the name of a computer or simple system statistics.
+
Ctrl+Esc can be used to open the start menu but will not work as a Windows key replacement for other shortcuts.
+Ctrl+Shift+Esc will open the task manager without needing to hit Ctrl+Alt+Del first.
+
Alt+Space will open the window system menu which can be used to maximize (x), minimize (n), close (c), or move (m) the window which can be especially helpful if your window is somehow off-screen +. This shortcut can also be helpful with windows that don’t close with the Alt+F4 shortcut such as the command window.
+
Here are handy shortcuts built into Windows Explorer which may have similar features in other programs too.
+Alt+Up will navigate up one folder level since the up arrow on the menu bar was removed in Windows Vista. Alternatively, you can also make Backspace go up one folder level with a handy AutoHotKey script +.
+Shift+F10 opens the contextual or “right click” menu for a file/folder. This can be very handy for speed especially if you know which option you want to select. Look for an underlined letter in each option to know which letter you can press for faster access.
+
Shift+Del deletes a file without sending it to the recycle bin because who wants to empty their recycle bin anyway?
+Ctrl+Shift+N creates a new folder in your current directory.
+Alt+Enter opens the file properties so you can view file size, sharing settings, and creation date.
+
F2 renames a file or folder.
+F3 will open explorer and select the search bar. If you already have an explorer window open it will highlight the search bar. In some programs it will also open the search dialog to search within that program.
+
+F6 cycles objects in the current window. In explorer this will cycle between the location bar, options bar, left pane, and right pane. It also works with varying success in other programs.
F10 toggles the file menu in explorer.
+
Now that Microsoft has officially killed off the best part about Windows Home Server what can you do? Here are some alternatives for drive extender that you can use if you want to build a WHS of your own.
+The idea of drive extender for Windows Home Server is you can have as many hard drives as you want and they all group together into the same pool of storage. This is similar to a RAID setup but drive extender had a few cards up it’s sleeve that made it invaluable for a NAS appliance.
+There were some downsides to drive extender as well and version 2 for Windows Home Server “Vail” was supposed to fix most of those problems. However Microsoft ran into other problems with v2 and they did not see it in their best interest to continue maintaining the software.
+Windows Home Server had a few other benefits as a storage solution over a standard Windows installation but for many people, drive extender was the only reason to use the product. Now that Microsoft has killed it off, let’s look at some alternatives.
+
I am not going to shy away from Linux alternatives in this list because in many cases Linux may be easier and better for the solution you are looking for. Linux has the benefit of being free, has lower hardware requirements, and if you are just looking for shared storage, 100% compatible with samba shares for Windows and OS X.
+Windows built-in software RAID – Windows has come with its own software RAID built into the OS since the Windows 2000 days. While this solution may not have the best performance, it doesn’t require any additional software and is supported by Microsoft. If you are looking to set up Windows software RAID check out our how-to article explaining the process.
+Note: Software RAID options may not be available in all versions of Windows.
+_
+_
disParity – disParity + is a software RAID solution that is very minimalistic. It is completely command line driven which can be very good for some people and very scary for others. It will allow you to set up your data drives and then also keep a parity drive for recovery. It doesn’t quite group drives in a pool of information but more focuses on the recovery aspect of RAID.
+
FlexRAID – flexRAID +, similar to disParity, focuses on the recovery abilities of RAID rather than the massive storage pool. It requires a parity drive, just like disParity, but it can be configured from a web page and runs as a Windows service. There are also instructions in their forums on setting up FlexRAID on an existing Windows Home Server if you already have one.
+Logical Volume Management – LVM + provides a management layer to set up multiple disks spanning into one, dynamic resizing of volumes, and even hard drive replacements inside of a volume. As a matter of fact, LVM sounds like the perfect alternative for any Linux based WHS replacement and it comes with every major distribution. Be sure to check out our upcoming how-to on setting it up with Ubuntu Server.
+
unRAID – Lime Tech, the company behind unRAID +, provides DIY licenses to build your own setup as well as whole servers that can replace your current NAS. The DIY server is designed to run completely from a USB drive and has the flexibility of drive extender while also keeping the data recovery of RAID. The server is free if you have 3 or less hard drives and there are reasonable license costs for more drives. If you are looking for a quick overview on how it works check out Revision 3’s video +.
+MooseFS – MooseFS + is a bit more involved than the other solutions but it is much more flexible as well. All of the other solutions have relied on one machine with a lot of hard drives plugged in. MooseFS relies on a couple servers running management with a lot of other computers doing the storage. It is called a distributed filesystem and if you have Linux computers lying around your house this may be your best solution. Otherwise it probably is best to leave it for corporations and businesses.
+
GlusterFS – Gluster + is a lot like MooseFS above, and Ceph below, and is probably a bit of a bigger solution than you are looking for. Gluster is another distributed file system that doesn’t rely on one computer to do all the storage, but you will need at least one that is on all the time to host the shared volumes to your clients.
+
All of the options above are fully stable and at least somewhat mature options. There are a couple more options you may want to look at. Despite being beta releases, they have some features that the others may not incorporate.
+Greyhole – Greyhole project + employs the JBOD approach to storage but along with local disks you can also mount and use remote filesystems in your storage pool. Unlike some other solutions that only create a storage pool or only focus on redundancy, greyhole can do both and is a great open source alternative to drive extender and folder duplication on WHS.
+
Ceph – Ceph + is a new distributed file system that is just now starting to make its way into the Linux kernel. While it is very similar to MoosFS and Gluster it boasts better performance, is based on BTRFS, and has a cool octopus logo. It is aimed to be use by businesses and isn’t ready for deployment yet, but so was WHS in a sense.
+

Instead of having a bunch of separate drives to deal with, why not put them together into one big drive? You can use software RAID to accomplish this, and here’s how to do it.
+Windows has built in functionality to set up a software RAID (Redundant Array of Inexpensive Disks) without any additional tools. This makes it easy to turn your existing spare hard drives into massive storage or even redundant backups. In this example we are going to set up a spanned disk that takes three 2 GB disks and creates one 6 GB disk using Windows 7 Professional.
+Editor’s Note: For the example in the article, we’re showing how to create a spanned drive, which isn’t technically RAID, but it works similarly and creating a RAID array is exactly the same—you can choose your preferred RAID option from the context menu.
+Image by carlosgomez +
+
The first step you need to do is backup your information on the disks you want to use in the RAID. While it is not required that you format your disks for some of the RAID options, don’t take the chance and make a backup.
+Once all of your information is backed up, open your start menu, right click on computer and open manage.
+
When computer management opens click on disk management on the left side. Any disk you want included in your RAID you need to delete them from the top area of disk management.
+
Once they are deleted you should only be left with disks you do not want included in the RAID. The other disks will still be there but they will show up in the lower pane and show their spaces as unallocated.
+
In Windows they don’t call their RAID options by the traditional 0, 1, 5, 10 + etc. Instead they use spanned, striped, and mirrored as the options for creating software RAIDs.
+Note: RAID-5, although one of the options, isn’t actually available in Windows 7 due to licensing issues. Thanks to the commenters for pointing that out.
+A spanned volume will create a single partition that will literally span all of the included disks whereas a striped volume will deliberately break up files across multiple disks in an attempt to improve read and write performance. In both cases there is no redundancy so you need to create your own backups.
+A mirrored volume and RAID 5 + both have some redundancy but you lose storage space to create the parity files needed for recovery. For this example we are going to go with the simplest volume type and create a spanned volume even though it isn’t technically RAID.
+Right click on the first disk you want included in your RAID and select new spanned volume.
+
This will open up the New Spanned Volume Wizard in Windows. Click next and then select which disks you want included in your new volume (a.k.a. software RAID).
+
Assign the new volume a mount letter or mount point.
+
Name and format the volume and click next.
+
The final step just reviews all of your settings before the disks are formatted and the new volume is mounted.
+
You should also receive a warning letting you know that if your operating system is on one of these volumes you won’t be able to use it because the volume is now a dynamic volume instead of a logical volume.
+
Finally the disks will be formatted and once the drive is mounted you should be welcomed with the familiar AutoPlay prompt.
+
If you browse to Windows explorer you should also see that the new volume has the combined storage space of the three individual disks used to create it.
+
Sometimes you’ll be prompted to scan and fix a removable disk before using it in Windows. The proper way to fix this is to scan for filesystem errors, but here is how you can make the prompt go away permanently.
+This is caused by Windows detecting errors in the filesystem of the drive, or the drive not being unmounted properly. To never get this prompt you can make sure to use the safely remove option built into Windows before pulling out your drive.
+One possible downside to getting rid of the scan and fix prompt is the service that runs to show you scan and fix also shows you AutoPlay. By disabling scan and fix you will also be disabling your AutoPlay functionality.
+
If you don’t care about AutoPlay, or want to stop it from prompting you too, go to your start menu and search for msconfig.
+Note: You will have to be an administrator on the computer to use msconfig and apply this fix.
+
Click on the services tab and then scroll down to Shell Hardware Detection and uncheck it. This will prevent it from starting up with the computer.
+
To kill the service immediately go back to the start menu and search for services.msc.
+Note: You can optionally just restart you computer and it will automatically make the next changes for you.
+
Find the same Shell Hardware Detection service in the list.
+Note: It was pointed out in the comments that if you use a scanner in Windows you may need this service. Instead of disabling it completely you can set the service to manual startup for better hardware support.
+
Double click on it and on the general tab click stop.
+
Drop down the startup type option and set it to disabled.
+
Click OK on the service window and then close out services.msc as well.
+Plug in a few removable disks to test, but you shouldn’t be prompted to scan and fix another disk ever again.
+]]>XBMC has come a long way since its humble beginnings as an Xbox media player. Let’s take a look at the latest 10.0 release of XBMC, also known as “Dharma”, to see what’s new.
+XBMC is free and open source software that is released for Windows, OS X, Linux, AppleTV, and as a live image that can be run directly from a CD/USB drive or installed to turn an extra computer into a true HTPC appliance. XBMC gives you the functionality of many media streamers currently on the market but in a free DIY package that you can customize and use however you’d like.
+Skin development in the latest release is top notch and many new features and refinements have been added to the skinning engine. Here is a quick look at some of the available skins for XBMC 10.0.
+Alaska was being developed by one of the best XBMC skin developers who wasn’t able to finish the skin. He released all the work he had completed to the XBMC community and the community took over with a few different variations. Alaska Revisited Mod is shown below.
+
Transparency has been around for a little while and it has been fully updated to take advantage of the new add-on manager and other skin enhancements.
+
Shade is a very minimalistic skin that is a new release for XBMC 10.0.
+
Night has a Windows Media Center/Zune feel and looks excellent on a big screen. It is also a new release for XBMC 10.0 and is available in the official XBMC add-on feed.
+
Ellipsis is a skin by Team Blackbolt who have made some of the best skins available on the original Xbox and they have continued their work even after support for the Xbox hardware was dropped. This skin isn’t available in the official XBMC Add-on feed but you can download it from their website using the link below.
+
Xperience is another Team Blackbolt skin that is available from their website and resembles the NXE 360 dashboard for the Xbox 360.
+
In previous versions, users could extend functionallity by downloading python scripts to take advantage of more media sources and other tools. In the latest release, the developers wanted to provide users an easier way to extend their XBMC installation through centralized add-on feeds. The new add-on framework allows for automated download and installation of media scrappers, skins, visualizations, screensavers, python scripts, web interfaces, and other user customizable aspects. This framework also allows for third party developers to create their own private feeds and provide updates and new features outside of the official XBMC add-ons.
+To adjust your add-on settings go to the system settings and select the add-ons option.
+
+Each add-on type is broken into a folder for easy navigation and allows you to find exactly what it is you are looking to enable or disable.

Select get add-ons and then select your feed to install directly from within XBMC with a simple click.
+
Once installed you can either enable the item in XBMC settings, or use the add-on from the home screen. For icanhazcheezburger you can browse to pictures -> picture add-ons -> icanhazcheezburger to view all the crazy captioned cats you could ever dream of.
+
By default XBMC only comes with the official add-on feed. If you have a zip file containing an unofficial add-on feed you can install that with the install from zip file option in settings. Check the link at the bottom of the post to find more unofficial feeds.
+
On top of many software fixes and features, the XBMC team also added new hardware support for the Nvidia ION and ION2 video cards as well as the Broadcom Crystal HD video processor. They also were able to add support for Google’s new WebM codec, Blu-ray disk playback, and many other playback enhancements.
+
Support was also added to store your XBMC library database on an SQL server as well as create movie sets in library view +. New videos scrapers were also added to gather movie information from HD-trailers.net, Rotten Tomatoes, and many more.
+
Audio playback was also improved on all three major supported platforms and over 1200 tickets were closed.
+XBMC has come a long way and isn’t stopping with version 10. Along with all the great features that have been added there is also initial support for ARM processors, support for gesture based controls, and support for DVR software backends.
+If you are looking to purchase a media streamer to get all of your media content to your TV, you may want to consider the DIY route and set up a computer running XBMC.
+ +XBMC (Kodi) full changelog/roadmap +
+ + +]]>
If you have ever wanted to cross-reference two actors or crew members to find out what they have worked on together, IMDb’s common search has you covered with an easy way to do just that.
+Whether you are trying to cheat at six degrees of Kevin Bacon or just trying to remember an actors name who was in Cloudy with a Chance of Meatballs and Hot Rod, IMDb common search can help. It will allow you to search for two movies or TV shows and find all of the common people who worked on them, or you can search for two actors and find all of the movies and TV shows they were in together.
+To search for movies that two people have worked on, type in their names and use the drop down to select your exact match.
+
Fill in both search fields with the actors you are looking for and hit search.
+
By default the search results will be sorted by IMDb’s MOVIEmeter but you can easily change the sorting from the options on the top bar. The sorting options makes finding things like the highest grossing movie with Tim Burton and Johnny Depp trivial.
+
One downside is there is no way to filter the results to only show movies or TV shows which ends up showing a lot of talk shows that both actors have appeared on.
+You can use the common cast/crew search to seach for two movies or TV shows and find all of the people that worked on both.
+
For example, search for all of the people that have worked on The Simpsons and Arrested Development and you will find people who have guest starred in both.
+
The results page will show common actors and crew members so you can click on their names to be brought to their IMDb pages to find the specific movies and episodes they starred in.
+ +]]>If you’ve ever had a missing or corrupt system file in Windows you sometimes end up in shady parts of the internet downloading files from who knows where. Why not restore the files directly from your installation disks?
+
It doesn’t matter if the missing files came from a virus, poorly programmed software, or a family member who didn’t know better. We have all found ourselves in the situation of needing a system file that we can’t find. Luckily if you still have your install disks you can manually restore the system files you need without doing a reinstall.
+Note: Replacing system files can be very dangerous and may break your system even more than it already is. Only do this if you have already made a complete backup of your computer and are willing to do a full re-install if this doesn’t work.
+7-zip is an insanely useful tool that no tech support should be without. It can open just about any compressed file including Windows disk image files. Download it from the link below if you don’t already have it installed.
+
If you have an OS upgrade disk, retail copy of your operating system, or sometimes even system restore disks you should be able to get the files you need. All Windows Vista and 7 installations are stored as an install.wim file on the disk. Put in your installation media and browse to the sources directory to find it.
+Note: If you have system restore disks from your computer manufacturer you may have to search for the file but it should still be there.
+
Open the install.wim file with 7-zip.
+
You may see more than just one folder which means your installation media can install more than one version of Windows. To know which folder you need, copy the xml files to your desktop and open them with notepad.
+Look for a tag labeled EDITIONID to know which version of Windows corresponds to which folder.
+
If you are not sure which version of Windows you have installed you can sometimes tell by the sticker that came on your computer, or you can right click on computer and select properties to view your edition and architecture.
+
You can match the folder inside of 7-zip with the .xml files and then browse the contents for the files you need.
+Note: Most system files will be in the C:\Windows\system32 or C:\Windows\SysWOW64 so if you don’t know where to look, search there first.
+
Copy the files to your hard drive and replace them on your computer. If you cannot access the files because they are in use, try a live Linux disk and copy the files from there.
+
This is the safest way to getting the missing system files back to how they were when you did a fresh install. If you cannot find the files on the installation disk you can also try restoring the files from a Windows system image + you created in a backup.
+ +]]>XBMC already has an advanced movie library that can gather fan art, movie posters, and cast information all with a simple scan. With XBMC 10.0 you can also combine movie collections into a single entry in your library.
+Note: XBMC has been replaced by Kodi. We have an updated guide to using movie sets in Kodi +.
+
Despite if you think the second two Matrix movies should be included in the trilogy or not, combining movie collections and being able to reorder the movies in the order they were released is a much needed feature in any movie library. In XBMC there are a couple of ways to set up this feature, and if you prefer using a text editor check out the link below. We will set up the same feature using the XBMC web server and a custom web skin.
+To get started you need to make sure you have XBMC 10.0 Dharma installed. If you don’t have it installed you can get it for Windows, Linux, OS X, AppleTV, or as a live CD from the link below. Once you have it installed you need to add a movie source and then scan the source into your library.
+
While your movie files are being scanned into the library go to the XBMC network settings and enable the web interface.
+
If you are using Windows you will probably be prompted to add an exception to the firewall so accept the prompt and the port will be opened automatically.
+
Scroll down and click on web interface to change it from the default interface. When the option to select your interface comes up, select get more in the bottom left corner.
+
Next install the XBMC Web Media Manager (XWMM) web interface.
+
Once it is installed select it as your active web interface.
+
Once the XWMM interface is enabled open up your browser and go to the IP address of your computer. If you see a web interface that looks like the picture below then your settings haven’t been applied and you should try restarting XBMC.
+Note: If you are running XBMC from the same computer you can use the loopback address 127.0.0.1 in your browser.
+
Instead you should see the XWMM interface like the screenshot below.
+
The first thing you will want to do is create all of the movie collections that you have. To do that go to Tools -> manage movie sets.
+
Click add and then update for each movie collection you have. Don’t worry about adding movies to the collections yet, that will come in a later step.
+
Close the movie set manager and browse to a movie you want to add to one of the sets you just created.
+
In the movie details area at the top, fill out the sort title to reflect which number the movie is in the collection. You can do this by either the number it is in the series, or by the date the movie was released. The idea is to keep the movies in release order instead of the default alphabetical order.
+
On the right hand side of the same window select other details and then drop down the set menu to add the movie to one of the sets you created earlier.
+
To double check that all the movies are added correctly you can go back to the movie set manager and check that your movies show up under the right set.
+Note: Don’t worry about the sort order here, that will only be reflected in the library view of XBMC.
+
If everything is correct, go back to XBMC and browse the movie library. You should see your new collection when you sort the library by movie title. Highlight the movieset and open the menu to set a thumbnail that is relevant to the entire collection.
+
Browse to the picture you want to use and hit OK to use it as the movieset thumb.
+
Now you movieset will have a better thumbnail that reflect the entire collection rather than just one movie.
+
If you select the collection you should see all of the movies you added in the order you gave them, rather than alphabetical order. Cover art, fan art, and movie information will still be there for the individual titles as well.
+
Once you are all done you can set your web interface back to the default and enjoy having your movie collections sorted in a logical manner.
+There is one small problem with the sets showing up in the default web interface and not showing any movies within the set, but hopefully that is an acceptable trade off for having the movies sorted within XBMC properly.
+
Windows provides a fail safe way of recovering your entire hard drive with system images, but what if you only need to recover certain files from the image instead of restoring your entire hard drive?
+Windows Vista and 7 have a few different options for recovering your computer in case of a catastrophe. System protection will allow you to keep a restore point and backup to an existing known good state, and a system image will allow you to reproduce every bit on your hard drive in case of total failure. A system image is more completed but there is no easy way to recover a single file from a system image.
+To get started you first need to make sure you create a Windows system image backup +.
+
Once your backup has been created you will have a series of files on your external hard drive where you saved your backup. The root folder is called WindowsImageBackup with a folder named your username inside. This is where your backup is stored so we are going to use this to get the files back that we need.
+
Open your start menu and right click on computer and then open manage.
+
In computer management click on disk management on the left side.
+
Open the action menu and select attach VHD.
+Note: It looks like you need Windows Vista Enterprise or Ultimate to have this option available. Check out the link below to mount a VHD in Vista Home or Business. If the attach VHD option is greyed out, click in the blank space where your volumes are listed and it should become selectable.
+
Browse to the VHD file inside the backup folder that was created earlier. If you have two VHD files look at the file size because the smaller one will be your boot partition, and the larger one will be your system (C:) drive.
+
A new drive should show up in disk management using the next available drive letter.
+
The autoplay prompt will pop up if you have it turned on because we just plugged in a virtual hard drive.
+
Browse the files and copy any files you need to recover to your C: drive.
+
When you have the files you need, go back to disk management and right click on the lower window where it says your disk number. Then select detach VHD to unmount your backup file.
+
+Make sure you don’t check the box that asks if you want to delete the VHD when you detach it.
+
If you think opening disk management is a pain you can instead install VHD attach and open your VHD files directly from your right click menu.
+
+VHD files will be attached to a drive letter just as before and you can recover files the same way.
Computers are complex devices that cannot easily be explained, like say, a delicious Reuben sandwich. Let’s break down and explain your computer, over lunch.
+Yeah, we’re having some fun today with somewhat of an inside joke around here due to The Geek’s irrational love of the Reuben sandwich. Enjoy and join the discussion.
+Images by teujene + and VirtualErn +
+
Image by kimberlykv +
+The start of a great Reuben is in the rye bread. Rye bread is a dense bread that is full of complex flavors and comes in many different variations. Think of rye bread as your computer hardware.
+You can buy or bake your own rye bread but the general rules are the same; the fresher the ingredients the better the bread will be, or the more expensive the bread cost at your baker the better it will taste. One thing is for sure, cheap hardware is going to be the start of a not so great sandwich.
+Your hardware is one of the most important decisions when buying a computer and it is what encompasses all of the software you will pick from here on out. Choose your bread wisely and you will be rewarded in the end.
+
Image by Everything Etsy +
+Sometimes you don’t have an option of what sauerkraut you pick because unless you are a gourmet chef and know how to ferment your own cabbage, you probably are just going to get something that is off the shelf or maybe just settle for the over flavored, over loaded kraut that came with your sandwich. You may have still tried to make your own sauerkraut but instead ended up with a bit more sour than kraut and it turned you off to the idea in the future.
+I’m obviously talking about your operating system. Your OS is the main supporting role to your other ingredients and depending on your taste buds can be the killer feature of your computer. Your OS can be gourmet, bland, or just the way you like it. In any case, you need to make sure that your OS and hardware can work together, and don’t forget that the longer your sauerkraut sits on your bread, the soggier it will get. A fresh spread of sauerkraut will always taste better than one that has been sitting for days. As important as sauerkraut is, it really isn’t the meat of why you use your computer.
+Corned beef is the reason you eat a Reuben. Even if you love the other ingredients in the sandwich, the beef is what you are really there for and if the beef doesn’t satisfy, you will move on. Corned beef is typically brisket that soaks in a brine until it is almost pickled. What does that mean for you? Applications that are cured to perfection and satisfy your every need. Everyone has a different idea of what their perfect applications are but when it comes down to it. A sandwich with just rye bread and sauerkraut isn’t very good.
+
Image by rick +
+We still have a couple very important supporting ingredients that cannot be left out of this computer sandwich. A Reuben calls for lots of Swiss cheese. Although it’s sometimes full of holes, and when melted doesn’t have enough coverage, the Swiss cheese bonds your bread to your meat and kraut.
+If you haven’t caught on to what I’m hinting at, Swiss cheese is your drivers and firmware. It isn’t enough to have amazing hardware and software to back it up; if your sandwich falls apart when you try to eat it, all your really have is a couple slices of bread and some tasty innards. Your drivers and firmware hold your computer together. With crappy drivers your operating system and hardware can have major problems. You need something that will be the glue to make it all work together in harmony, and that glue is layers upon layers of swiss cheese.
+
Image by <em>cogdogblog</em> +
+Finally we have come to the dressing, a Reuben can be made with either thousand islands or Russian dressing depending on your preferences and it adds just that hint of completeness to the sandwich. It isn’t an afterthought but it also isn’t as important as the cheese. Your dressing is your monitor, keyboard, and mouse.
+The peripherals you choose can be absolutely stunning, and can be the reason you want to sit down and use your computer, but let’s not forget, you still have to use your computer. For a majority of people today, their accessories are in the form of a notebook which has a limited amount of flexibility and very few options when picking exactly what touchpad, keyboard, and monitor they want.
+The dressing is very closely tied in with the bread you picked and in some cases, i.e. a notebook, it is inseparable from the hardware. You can further accessorize your sandwich with a pickle spear, chips or fries, and a tasty beverage and all of those things need to balance the sandwich. The only necessary hardware is the hardware that you need to interface with the software inside, and in the Reuben, the dressing is a necessity.
+Next time someone asks you how a computer works, or maybe the next time you eat a tasty Reuben sandwich, I hope this analogy helps you see how all of the parts work together and lets you focus on the truly important things about your computer.
+]]>With over 13 million lines of code, the Linux kernel is one of the largest open source projects in the world, but what is a kernel and what is it used for?
+A kernel is the lowest level of easily replaceable software that interfaces with the hardware in your computer. It is responsible for interfacing all of your applications that are running in “user mode” down to the physical hardware, and allowing processes, known as servers, to get information from each other using inter-process communication (IPC).
+There are, of course, different ways to build a kernel and architectural considerations when building one from scratch. In general, most kernels fall into one of three types: monolithic, microkernel, and hybrid. Linux is a monolithic kernel while OS X (XNU) and Windows 7 use hybrid kernels. Let’s take a quick tour of the three categories so we can go into more detail later.
+
+Image by <em>uptown popcorn</em>
+
Microkernel +A microkernel takes the approach of only managing what it has to: CPU, memory, and IPC. Pretty much everything else in a computer can be seen as an accessory and can be handled in user mode. Microkernels have a advantage of portability because they don’t have to worry if you change your video card or even your operating system so long as the operating system still tries to access the hardware in the same way. Microkernels also have a very small footprint, for both memory and install space, and they tend to be more secure because only specific processes run in user mode which doesn’t have the high permissions as supervisor mode.
+Pros
+Cons
+Monolithic Kernel +Monolithic kernels are the opposite of microkernels because they encompass not only the CPU, memory, and IPC, but they also include things like device drivers, file system management, and system server calls. Monolithic kernels tend to be better at accessing hardware and multitasking because if a program needs to get information from memory or another process running it has a more direct line to access it and doesn’t have to wait in a queue to get things done. This however can cause problems because the more things that run in supervisor mode, the more things that can bring down your system if one doesn’t behave properly.
+Pros
+Cons
+
+Image via schoschie on Flickr
+
Hybrid Kernel +Hybrid kernels have the ability to pick and choose what they want to run in user mode and what they want to run in supervisor mode. Often times things like device drivers and filesystem I/O will be run in user mode while IPC and server calls will be kept in the supervisor mode. This give the best of both worlds but often will require more work of the hardware manufacturer because all of the driver responsibility is up to them. It also can have some of the latency problems that is inherent with microkernels.
+Pros
+Cons
+
The kernel file, in Ubuntu, is stored in your /boot folder and is called vmlinuz-version. The name vmlinuz comes from the unix world where they used to call their kernels simply “unix” back in the 60’s so Linux started calling their kernel “linux” when it was first developed in the 90’s.
+When virtual memory was developed for easier multitasking abilities, “vm” was put at the front of the file to show that the kernel supports virtual memory. For a while the Linux kernel was called vmlinux, but the kernel grew too large to fit in the available boot memory so the kernel image was compressed and the ending x was changed to a z to show it was compressed with zlib compression. This same compression isn’t always used, often replaced with LZMA or BZIP2, and some kernels are simply called zImage.
+The version numbering will be in the format A.B.C.D where A.B will probably be 2.6, C will be your version, and D indicates your patches or fixes.
+
In the /boot folder there will also be other very important files called initrd.img-version, system.map-version, and config-version. The initrd file is used as a small RAM disk + that extracts and executes the actual kernel file. The system.map file is used for memory management before the kernel fully loads, and the config file tells the kernel what options and modules to load into the kernel image when the it is being compiled.
+Because the Linux kernel is monolithic, it has the largest footprint and the most complexity over the other types of kernels. This was a design feature which was under quite a bit of debate in the early days of Linux + and still carries some of the same design flaws that monolithic kernels are inherent to have.
+One thing that the Linux kernel developers did to get around these flaws was to make kernel modules that could be loaded and unloaded at runtime, meaning you can add or remove features of your kernel on the fly. This can go beyond just adding hardware functionality to the kernel, by including modules that run server processes, like low level virtualization, but it can also allow the entire kernel to be replaced without needing to reboot your computer in some instances.
+Imagine if you could upgrade to a Windows service pack without ever needing to reboot…
+
What if Windows had every driver available already installed and you just had to turn on the drivers you needed? That is essentially what kernel modules do for Linux. Kernel modules, also known as a loadable kernel module (LKM), are essential to keeping the kernel functioning with all of your hardware without consuming all of your available memory.
+A module typically adds functionality to the base kernel for things like devices, file systems, and system calls. LKMs have the file extension .ko and are typically stored in the /lib/modules directory. Because of their modular nature you can easily customize your kernel + by setting modules to load, or not load, during startup with the menuconfig command or by editing your /boot/config file, or you can load and unload modules on the fly with the modprobe command.
+Third party and closed source modules are available in some distributions, like Ubuntu, and may not be installed by default because the source code for the modules is not available. The developer of the software (i.e. nVidia, ATI, among others) do not provide the source code but rather they build their own modules and compile the needed .ko files for distribution. While these modules are free as in beer, they are not free as in speech + and thus are not included by some distributions because the maintainers feel it “taints” the kernel by providing non-free software.
+A kernel isn’t magic, but it is completely essential to any computer running properly. The Linux kernel is different than OS X and Windows because it includes drivers at the kernel level and makes many things supported “out of the box”. Hopefully you will know a little bit more about how your software and hardware works together and what files you need to boot your computer.
+Kernel.org + +Image by <em>ingridtaylar</em> +
+]]>Mounting a USB device inside a virtual machine is often a tool that you cannot go without. If you are using Virtualbox in Ubuntu however, you need to take a few extra steps to make it work.
+
The first thing you need to do is install Virtualbox from Oracle’s website. It is different than Virtualbox OSE which is included in the Ubuntu repositories because the Virtualbox from Oracle includes proprietary software which allows you to mount USB devices inside you VM among other things. If you already have Virtualbox OSE installed from the Ubuntu repositories, uninstall it before installing the .deb file from Oracle’s website.
+Note: Any VMs you made with Virtualbox OSE will still work with the standard version of Virtualbox. Uninstall Virtualbox OSE before installing virtualbox from Oracle.
+
Install your virtual machine and once the installation is complete install the Virtualbox guest additions into the guest OS from the devices menu.
+
Turn the virtual machine off and go to the settings for the VM. Click on USB on the left and check the top two boxes in the window shown.
+
Along the right hand side there will be a few icons to set up USB filters. These filters are where you can tell Virtualbox what USB devices you want to have available to your guest OS. Plug in your USB device and click on the second icon to view available USB devices that can be mounted into the guest OS.
+
Select any devices you would like to mount in the guest OS and then close out of the settings window.
+
The next thing you need to do is add your user to the vboxusers group on your system. Navigate to the System -> Administration -> Users and Groups option and click on manage groups on the left side.
+

Scroll down in the group settings and highlight the vboxusers group and then click properties on the right.
+
In most cases you probably will only have one user so check the box to include your user in the group; put in your admin password when prompted, and then restart your computer.
+
Once your computer restarts, log in and start your virtual machine. In the devices menu of the VM, select the USB device you want to mount.
+
Your device should show up automatically in the VM and you can use it the same way you would be able to on the host operating system.
+
Android phones with Google Voice can make and receive calls at an extremely disounted rate, but you still need a voice plan to make these calls. Using Google Voice, Android, and Sipgate, you can get around that limitation and make calls for free.
+Using Google Voice you can call any number for free but you are not able to receive calls directly to your Google Voice number on your Android phone without a voice plan with your carrier. Using sipgate you can receive any call for free but cannot place calls without adding money to your account. Combining the two services, we will be able to place calls using Google Voice which will automatically call back your sipgate number connecting you to your intended recipient, and we will do all of this using WiFi, 3G data, or EDGE, meaning you will never run out of minutes again.
+Sipgate is an extremely useful tool that will allow you to do a lot of the same things Google Voice can do, but it will also allow you to place and receive calls over Wifi and 3G without a voice plan. Sipgate also offers a softphone for your computer and the ability to place calls directly from their website. We will start by signing up for a free Sipgate account.
+Note: This is the only step that requires a phone capable of receiving text messages to verify your number. Sending this invitation to my Google Voice number did not work but sending the text to a friends phone and then keying in the code on the sipgate website did work.
+
Once you have created and verified your account, log-in and we need to get your SIP credentials of your sipgate VoIP phone. First click on settings and then add a VoIP phone on the right. You can name it whatever will make sense to you and add your E911 information for if you ever have to call 911 from this phone.
+
Once the new phone has been created, hover your mouse over the phone and then click SIP credentials from the drop down.
+
A new window will pop up and you will need to write down the SIP-ID and SIP-Password that is provided.
+
Search the market for Sipdroid and install Sipdroid VoIP + video calling.
+
Once it is installed, open it up and open the SIP account settings under menu -> settings for the app. Fill in the authorization username and password with the SIP-ID and SIP-Password we got earlier; then change the sever to sipgate.com.
+
Tap the back button on your phone and then go to the call options to enable Wi-Fi (WLAN), 3G, and EDGE calls if desired.
+
Once all of this information is filled out, pull down the notification shade and you should see “registered” next sipdroid’s notification along with a green dot showing you are ready to go.
+
You should double check that you are fully connected to sipgate by logging into your account and checking that the VoIP phone we set up earlier now says online.
+
Log-in to Google Voice and click settings -> add another phone. Enter your sipgate VoIP-Phone number and then click save.
+
Google needs to verify that you own the number you just added so it will call your sipgate VoIP-Phone and ask you to key in the verification code shown. Because we already set up Sipdroid your Android phone should ring and you can key in the code there.
+
Once the verification is complete you should see a check box next to your sipgate phone in Google Voice.
+
The last step is to install Google Voice Callback from the Android Market.
+
Fill out your Google Voice account information, what number you want to call back (your sipgate number), and when you want to use Google Voice Callback (always).
+
You can now place a call using the built in Android phone dialer. When you place the call you will get a popup saying that you are placing the call with GVoice Callback and then your phone will ring because your Google Voice number is calling your Sipgate number.
+

Answer the phone and then you will be connected through sipdroid to the number you were trying to call.
+
It took a few steps to get here but now you can send and receive calls with only using data. I am successfully using this on my HTC G1 without a SIM card in the phone over Wi-Fi. I can send and receive phone calls to my hearts content so long as I have Wi-Fi signal and I never have to worry about going over on my minutes again.
+Sipgate
+ +Google Voice Callback
+Thanks to my friend Dante for helping me figure all this out.
+]]>Here at How-To Geek, we’ve covered many different ways to reset your password for Windows—but what if you can’t reset your password? Or what if you’re using drive encryption that would wipe out your files if you changed the password? It’s time to crack the password instead.
+To accomplish this, we’ll use a tool called Ophcrack that can crack your password so you can login without having to change it.
+The first thing we will need to do is download the CD image from Ophcrack’s website. There are two options to download, XP or Vista, so make sure you grab the right one. The Vista download works with Windows Vista or Windows 7, and the only difference between XP and Vista is the “tables” Ophcrack uses to determine the password.
+
Once the .iso file is downloaded, burn it to a CD using the guide below.
+
If you are going to be cracking your password on something that doesn’t have a CD drive, such as a netbook, download the universal USB creator from PenDrive Linux (Link Below). A USB drive will not only run faster but you can also use a single USB drive for Windows XP, Vista, and 7 if you copy the needed tables to the drive.
+
To create a USB drive that works with all versions of Windows, download the free password tables from Ophcrack’s website.
+Note: There are free tables available on Ophcrack’s website and there are paid tables, the paid tables will typically get the job done faster and will be able to crack more complex passwords but the paid tables may not fit on a USB drive because they range in size from 3 GB to 135 GB.
+
Now extract the tables to \tables\vista_free on the USB drive and they will be used automatically by Ophcrack.
+
Boot the computer from the CD or USB drive that you created.
+Note: On some computers you may have to go into the BIOS settings to change the boot order or push a key to show the boot menu.
+
Once the disk is done booting, Ophcrack should start automatically and will begin cracking the passwords for all of the users on your computer.
+Note: If the computer boots and you only have a blank screen or Ophcrack doesn’t start, try restarting the computer and selecting manual or low RAM options on the live CD boot menu.
+
If you have a complex password it will take a lot longer than simple passwords, and with the free tables your password may never be cracked. Once the crack is done you will see the password in plain text, write it down and reboot the machine to login. If your password isn’t cracked, you can also log in as one of the other users with admin rights and then change your password from within Windows.
+
With the free tables available you will not be able to crack every password, but the paid tables range from $100 to $1000 so you may be better off just resetting your password with on of these tutorials:
+You can get all of the software needed for password cracking from these links.
+ +If you aren’t using drive encryption and you’ve got a tough password, it’s usually much faster to reset the password using one of the tools above, but we like to show you all the different techniques that you can use.
+]]>It doesn’t matter if you are using Windows, OS X, or Linux, everyone should do regular backups of their information. In Linux one of the easiest ways to do automated backups is with Simple Backup (SBackup). Here is how you can set up SBackup to make sure you have a backup of all your important files.
+To install SBackup open your menu and click on the software center. Search for SBackup and install the software from the search results.
+Note: These screenshots are taken from Linux Mint 9 but the steps will work on Ubuntu and most Ubuntu based distros.
+
SBackup’s recommended settings assumes you have /var/backup pointing to a separate hard drive. That is usually not the case on personal laptops and desktops so it would probably be a better idea to select custom backup settings and change the settings as you need.
+
Next click on the include tab and add any files or directories you would like backup up. The backup program runs as root so you are able to backup any directory even if your user does not have access to them.
+
The next tab will have settings to exclude directories, file types (based on file extension), a regular expression (regex), or based on file size.
+
By default SBackup doesn’t back up most media files, so if you don’t already have a backup of your videos and music you will want to adjust the settings below to include them in the backups. Just make sure your backup hard drive has enough space to store all the media files.
+
It would also be recommended to change the max size setting because by default SBackup doesn’t backup anything larger than 95 MB.
+
The destination tab will allow you to select your destination folder, hard drive, or remote directory.
+
Although the remote directory only shows SSH and FTP, other protocols like SFTP and SMB are also supported. To enter a different protocol simply add the correct information to the beginning of the path and make sure you have the correct username and password in the path as well. The format for a network path is <protocol>://username:password@server/share. If you are backing up to a remote server you should also check the box to abort if the destination doesn’t exist otherwise the backup will be stored locally on your hard drive.

Alternatively you could also leave out the username:password information in the URI but you will be prompted for your credentials every time the backup starts.
+
The next tab will allow you to schedule your backups to automatically happen whenever you’d like. The backup uses cron to schedule the jobs so if you know how to use cron you can easily modify the schedule to your liking.
+
To prevent your hard drive from filling up, change the settings you want on the purging tab to delete old backups.
+
Once all your settings are the way you want, click save to write the changes to the config file.
+
Click backup now to test your backup settings and make sure your backup starts.
+Note: In Linux Mint 9 and Ubuntu 10.04 there is a bug with SBackup. To run the backup you will need to open a terminal and run “sudo sbackupd &”. To fix this bug you can either upgrade to Linux Mint 10 or Ubuntu 10.10 or compile SBackup 11.2 from source.
+
Always double check that your backup files are writing successfully, the folder will be time stamped with the date, time, and computer name.
+
To restore your files, open Simple Backup Restore and select the backup location and the files you would like to restore from the list.
+Note: In Linux Mint 9 using SBackup 10.5 I was not able to restore files from my remote directory without mounting the share to a local directory. This should be fixed with SBackup 11.2.
+
Simple Backup project on Sourceforge +
+]]>Connecting to file servers is something most people do on a daily basis even without thinking about it. In Linux, it may not be intuitive how to quickly connect to a samba or ftp server without a separate program. Here are a few different ways to connect to a remote file server without needing to touch a terminal.
+You can connect to a server by opening the run application window with the Alt+F2 keyboard shortcut. You will just need to specify the server type by adding the protocol at the beginning of the command. For example smb:// will connect to a samba share; other supported protocols are ssh, ftp, sftp, http, and https.
+Note: In the example below my server name is playground and the shared folder is called music.
+
If your server requires a password to connect, fill out the next window that pops up and select how long you would like it to store your password.
+
A Nautilus window will automatically open with the server you just connected to, and you should have a shortcut under places on the left side and a shortcut on your desktop.
+
If you are using Ubuntu, and many other GNOME based distributions, you will have a places menu on your top menu bar. Open that menu and click connect to server.
+
A new window will open up with a drop down so you can select what type of server you are connecting to.
+
For a samba/cifs server select Windows share and fill out the required information.
+Note: Unlike the run application window, you do not need the slashes to connect here.
+
Alternatively, you can also get to the connect to server window from Nautilus’ file menu.
+
If you would like instant access to the connect to server window from your GNOME menu bar right click on the menu you would like to add the shortcut to and click add to panel.
+
In the window that pops up, search for “connect” and connect to server should be one of the results. Highlight the shortcut and click add at the bottom of the window.
+
Now you will have an additional shortcut on your GNOME bar for easy access.
+
Sometimes screen shots just aren’t enough to explain how to do something or to show the steps you took to reproduce an error. There are a few tools available that will let you record your desktop but none are as easy, free, or cross platform as Screen Toaster.
+Screen Toaster is a Java-based screen recorder that will work on any operating system that has Java and Flash player installed.
+This may be something that doesn’t need to be said, but in order to record your screen with Screen Toaster you will need to have Oracle’s Java and Adobe’s flash player installed. Please download and install both pieces of required software first.
+
Next just go to Screen Toaster’s website (link below) and click “start recording”.
+
Allow the Java program to run when prompted.
+
Select options to record the full desktop or just part of it, and if you want to record with embedded audio or webcam feed.
+
The geek settings will also allow you to chose your playback speed and give you the ability to record a monitor on a remote computer with VNC.
+
Click record or push the shortcut key Alt+S.
+
Once the recording is done you will have options to re-record the audio, add captions, upload the video to YouTube or Screen Toaster, or download the video so you can have the file for further editing.
+
If you want to try the latest and greatest you can check out Screen Toaster beta. It provides better quality but doesn’t support all OS’s and features yet. The interface is a little different but it is still just as simple and just as free.
+
Screen Toaster beta record
+]]>Often times you will need to copy and paste text into an email from various sources. By default Outlook keeps the formatting of whatever it is that you are pasting instead of the formatting of the email you are composing. Here is a quick tip on how to change that behavior.
+This tip should work for Outlook 2003, 2007, 2010 and probably most older and newer versions. This fix will only apply to emails that are being composed in HTML or Rich text. The first thing you need to do is open up Outlook and got to the Tools menu, then select options.
+
Click on the mail format tab and then editor options.
+
Next click on the advanced options on the left.
+
Scroll down a little ways and you will see the cut, copy, and paste options. Drop down each option and select match destination formatting or keep text only.
+
You can also click on the smart cut and paste options to fine tune your pasting.
+
Now whenever you copy and paste in an email your formatting should stay the same as your original email instead of whatever the original source formatting was.
+
If you are tired of trying to keep up with Apple’s new iPod releases, upgrade your old iPod for free with Rockbox. Rockbox allows you to upgrade your aging iPod with new themes, fonts, games, and more.
+Rockbox is a replacement firmware for the iPod, iriver, Cowon, and many other devices. What the firmware does is extends the functionality and features of your current digital music player.
+
The first thing to do is download the Rockbox utility from their website.
+
Rockbox provides prebuilt binaries for Windows, OS X, and Linux so just download the one you need and run the program. The first time the software loads you will need to plug in your iPod and autodetect the model. If you know the model you can also browse to a mounted drive and then just select your model from the provided list.
+Note: You may need administrative rights on the computer you are running the utility from to write to USB devices.
+
Installation is a one click affair. Simply click the complete installation button and the latest files will be downloaded and installed onto your iPod.
+Note: The installation will not erase all of the music and pictures you have on your device. If everything works the way it should, it will simply replace the bootloader and add its own OS files where needed.
+

Once Rockbox is installed you can install any optional playback themes from the built in theme installer.
+
Or you can also install fonts or games from the Rockbox utility.
+
Once everything is installed, disconnect your iPod and reboot it. It should automatically load Rockbox. Usability of the iPod should be fairly the same with one of the big differences is now you will have some more utilities and menus. You can browse for pictures and music from the files browser or if you have your music tagged you can also use the database browser.
+
You can change the theme to one of the ones you installed by going to system -> themes and selecting the theme you want. The menu should change automatically and you will also notice the new theme during playback.
+
Some of the extra utilites are found under the plugins menu. If you go into that menu you will find any additional software and games you installed.
+
Of course, the option to play Doom is there if you installed the games option in Rockbox utility, and have a supported device. You will have to figure out how to actually control playing on your own.
+
If you want to switch back to the default OS that came with your iPod you can hold the menu+select button (menu+play on some devices) to hard reset the iPod. Once the iPod starts to boot again turn on the hold switch and the original OS will load.
+
If you actually want to remove Rockbox completely then you can go back to the Rockbox utility and just click uninstall.
+
So next time you are tempted to throw out your perfectly working old iPod because Apple told you it would be a good idea, try out Rockbox. It may have the missing apps you were looking for.
+ +]]>Before remote software, helping your friends and family with computer problems often meant hours on the phone trying to remember what a menu looked like or where a file was saved. Here we look at helping them remotely with TeamViewer.
+With TeamViewer you can remotely help your friends and family on any major operating system straight from your computer, the web, or on the go with your iPhone or iPad. TeamViewer full version should be installed on your computer for you to provide remote support for your users. You can both send and receive support with the TeamViewer full version installed on your computer. The full version is completely free for personal use and has some extra features that we will go over later.
+To get started download and install the full version of TeamViewer on your computer. TeamViewer full version supports Windows, OS X, Linux, and iOS.
+Note: You cannot remote to an iOS device but you can offer assistance from them.
+
Once the program is installed you will be able to connect to anyone running TeamViewer full version or TeamViewer QuickSupport. All you need to connect is the TeamViewer ID and password. For security purposes the passwords are randomly generated each time TeamViewer is launched.
+Note: Some options such as VPN and video chat are only available on Windows. Remote support, Presentation, and File Transfer are available on all operating systems.
+
It isn’t required, but it is a good idea to also make a free account on the TeamViewer’s website. TeamViewer’s website will allow you to manage computers and people that you have set up as partners so you can quickly remote with them, share files, or just instant message. To create the username you can either go to TeamViewer’s homepage or you can also click the icon in the bottom right corner to show the partner list window and then click sign up.
+
Once your account is set up, you can then log in to the TeamViewer homepage and access all your partners or establish a quick connection without needing any software installed. This is super helpful if you are not at your computer and need to provide support to someone.
+
After you have your online account set up you can then go into the full version options and set up your username, email, and password in the options. This will allow others to remotely connect to your computer without needing to know the 9 digit ID number. Instead they can just know your TeamViewer username and connect using that.
+
If you are setting up your own personal computer that you want access to from anywhere, then click on the security options and put in a password for unattended access. This will allow you to connect back to your computer even when no one is there to provide the session password. You should also set up your access control if you don’t trust the people that you will be sharing your screen with. When you give someone full access, they literally have access to not only control your computer remotely, but they also have control to browse your hard drive remotely and send you files.
+
If the remote machine is running windows you will have an extra option for Windows logon. This will allow anyone with a user account on the local machine (or admins only) to log into the machine without needing to know the session or unattended password or temporary session password.
+
You can also click on remote control options and set your access control when you are remote with other users.
+
You may also want to configure your custom invitation settings. This will configure sending invitation requests via email. Once you email the customer it will give them a link to download the QuickSupport client.
+
It may also be helpful under the advanced settings you can import and export reg files of all your settings or export an .ini file for use with TeamViewer portable.
+
Offering remote assistance is going to be the key feature for most users of TeamViewer. Not only does it work from just about any computer via a web page, but it allows you to control anyone looking for help without them needing to install anything. To remote using QuickSupport have the person looking for help download QuickSupport for their platform at the TeamViewer website.
+Alternatively, you could also send them an email if you set that up in the options as described above.
+Note: QuickSupport is available for Windows and OS X only.
+
Once it downloads, have them run the application and provide you with the ID and password it shows in the window.
+
All you need to do now is type in the session ID into your TeamViewer window or through the website quick connect.
+
When prompted type in the 4 digit password they give you.
+
If you are connecting to a machine with Windows logon enabled then drop down the advanced options and select Windows authentication. Put in your username and password on the computer and click log on.
+
A new window will open with the computer you are connecting to. Depending on the security settings, you may automatically have control of the remote machine upon connecting.
+
The TeamViewer window will have a bar across the top by default which will give you quick access to useful features. Remotely rebooting the machine, switching sides (presentation mode), disabling user input, and connection settings are all in the top menu for you on any platform.
+Note: If you are curious, yes reboot in safemode works flawlessly. You have to reconnect after the reboot, and the user has to log in again, but otherwise it works without a hitch. This is great for remote virus scans.
+
If you know you will want to connect to the computer more than once it would be recommended to install the full version of TeamViewer. Luckily that is available in the menu as well.
+Note: Some items will be grayed out if they are not available on your platform.
+
If you have access, you can also send or receive files to the remote machine from the top menu. Click on file transfer and a new window will pop up. Your local hard drive will show up on the left and the remote hard drive will be on the right. Click the appropriate send or receive button depending on what you are trying to do.
+
If you already have the computer set up as one of your partners you can also right click on the machine in your partner list to send/receive files without needing to go remote.
+
Once you disconnect from the user you will be prompted to add them to your partner list if they aren’t already there. Click yes if you plan on connecting to this computer again in the future.
+
You will also get one more prompt which is TeamViewer’s way of trying to keeps it’s users honest. Please do not take advantage of this free service they offer. If you are using this for any reason besides personal use, pay for the license. TeamViewer’s licenses have no recurring fees and are pretty reasonable for small companies to have infinite flexibility when helping their users.
+
To remote from an iOS device you will need to install TeamViewer or TeamViewer HD for your device. Once the application is installed you will connect to a computer the same way as on a computer with the TeamViewer ID and password.
+
Once you connect you will be able to control the remote computer as if you were sitting in front of it and can even use multi-touch to help navigate the computer.
+
You can click on the settings button in the bottom right to edit connection settings. You can also log in with your TeamViewer ID and you will have quick access to any partners you have set up on your computer or through the web site.
+
Presentation mode in TeamViewer is great for webinars or training more than one person at a time. To set up the presentation make sure you change your security settings under the options so that users do not have too much access.
+
You can then right click on one of your partners or have a user download the QuickSupport client and provide their ID information. Once you are connected you will have a panel on the right hand side that will allow you to chat, set up a conference call, and even give you a preview of what is on your screen.
+
From a Windows machine you can also quickly present just one window using the TeamViewer shortcut it creates on your window borders. This feature can be easily disabled from the same menu if you do not want to use it and it only shows the button when you are logged into TeamViewer full version on your computer.
+
If you have two Windows clients you can also set up VPN between the computers for gaming or access to printers on the remote machine. The first time you try to connect to another machine TeamViewer will need to install a new virtual network adapter that will be used to make the connection. Click yes at the below prompt and the network adapter will be set up for you automatically.
+
To connect to a remote machine with VPN, type in the client ID and click on the VPN option.
+
If the client is on a platform or version of TeamViewer that doesn’t support VPN you will get an error below.
+
Once you are connected to a client via VPN you will get a new window that will have some buttons that will allow you to quickly verify the connection and browse the client machine. You can also connect to multiple machines at once following the same steps. Each active connection will show up in the drop down list in the following window.
+
If you click on share files via explorer a new explorer window will open with the clients IP address in the address bar. If you have set up file or printer sharing on the remote computer you will see those files here.
+
If you haven’t set up file sharing for the files you need you can also try accessing one of the admin shares on the computer. Admin shares are hidden shares that allow network users access to browse the hard drive if they have permission. To access the main drive (C:) just put “\c$” at the end of the IP address. If you have access, the entire contents of the drive will be available for you to browse.
+
If you purchased a license of TeamViewer then you will also have the ability to customize the QuickSupport program with your own message and logo. The customize link can be found below the download for the regular QuickSupport.
+
You then just need to fill out a quick form asking what logo you want, font colors, and what you want the QucikSupport text to say. Optionally you can also enter a password so that the password isn’t randomly generated.
+
Once you are done with the form generate the QuickSupport with the link at the bottom and you will get a preview before you download. Download the executable and it will work just like the normal QuickSupport. If you don’t have a license for TeamViewer your session will be disconnected after five minutes.
+
You can also set up a web button that you can use to embed a help button on your own site. Once again this is just a simple form to fill out and then it gives you the HTML code to embed the link.
+
TeamViewer is more than just a remote assistance program. With tons of features, and most of them free to personal users, it’s really a must have for those of you that provide tech support for your family and friends.
+ + +]]>A personal wiki is an amazing place to store all of your notes, to-do lists, projects, and links. Traditional wikis are no easy task to set up and typically cost money for web hosting and software licensing. With TiddlyWiki and Dropbox you can set up your own wiki that is easy to use and available from anything with a web browser. Here is how to get started.
+TiddlyWiki isn’t like a traditional MediaWiki or Confluence wiki which requires a database server and PHP in order to run. TiddlyWiki is a self contained .html file that you can use in any modern web browser even without internet access.
+To get started with TiddlyWiki head over to their website and download TiddlyWiki from their website.
+<img src="https://www.howtogeek.com/wp-content/uploads/2010/08/tiddly-dl.png" alt=""> +
+Once the file downloads extract it to wherever you’d like.
+
When the file is extracted open it up to get started.
+_Note: You can rename the empty.html file to whatever you’d like. The TiddlySaver.jar file is a helper for certain browsers. If your browser needs TiddlySaver.jar, it will download automatically. Make sure to keep these files together, otherwise saving your wiki may not work. +_
+
When you open the .html file you will be greeted with the GettingStarted section that will walk you through the first few steps to set up your new wiki.
+
To change the title and subtitle simply click on the blue link for each item, and then double click on the heading of the new section that appears.
+
Put your desired text in the field provided and click done.
+
Your new title should show up automatically.
+
You can then update your settings for the main menu, on the left, and the default tiddlers.
+Note: A tiddler is what TiddlyWiki calls each individual section. You can create as many as you want and each one can contain as much information as you want.
+
Once you have the basics set up you can play around with some of the settings on the right side such as autosave and regular expression searches.
+
If you want even more settings click on advanced options and you will have plenty of more settings to play with to customize things to your liking.
+
If you still want more options, click on backstage on the top right and you will be able to backup your TiddlyWiki as well as import plugins, upgrade, and more.
+
Once your wiki is set up the way you want, you will want to be able to use your wiki wherever you are. To set that up you first need a Dropbox account and you will need to install the Dropbox client on your computer.
+
Once Dropbox is installed on your computer all you need to do is create a symbolic link + to your empty.html file into your Dropbox folder. This will keep your wiki in sync on any computer you have Dropbox installed.
+Note: If you would like to be able to view your wiki from any computer put the the symbolic link in your Dropbox public folder.
+
If you put your TiddlyWiki file in your public dropbox folder then open up your browser and head over to Dropbox and sign in. Click on your public folder and then your wiki file. You now have a read only version of your wiki from any device, including mobile devices. To make the wiki just a little bit more friendly you may want to shorten your dropbox link to something you will remember.
+Note: Because the file is stored in a public viewable location it will be read only and you won’t be able to edit your wiki from the Dropbox public link.
+
In TiddlyWiki you have the ability to extend the basic layout and options by installing tiddlers from other sources. These can be options that simply let you create RSS feeds and calendars, or they can be advanced options that let you upload documents and play minesweeper. To install a new tiddler you will first need to find the tiddler you want to use. Two great sites to check for tiddlers are TiddlyVault and TiddlyTools.
+To import the tools just click on the backstage link and then import. Put in the server address for the tiddlers you want and click open.
+
Scroll down and select all of the tiddlers that you would like to use and then click import at the bottom.
+
Depending on what tiddler you just installed it will be used in different ways. To figure out how to use the plugin you may want to drop down the plugins menu and click on the plugin you just installed.
+
Clicking on this link will open up the plugin twiddler and you should be able to see how to use the plugin in your wiki.
+
For the calendar plugin the basic usage is just to add <<calendar>> to any twiddler. The calendar will automatically be added to the wiki when the twiddler is saved.

If managing your wiki file isn’t your cup of tea then you can also check out TiddlySpot which allows you to set up your own fully hosted TiddlyWiki at no cost. You will have the ability to chose from a few different TiddlyWiki variations and even have the ability to download the file for offline use.
+
TiddlyWiki is extremely flexible and can accommodate many needs with some of the variations available. Before you pay for another note taking program, or if you are unhappy with the one you currently have, download TiddlyWiki for free and see how it can suit your needs.
+Tiddlywiki.com + – Download the main files and get an introduction to the wiki here.
+Tiddlywiki.org + – In depth information about the wiki and creating your own tiddlers and how to take advantage of TiddlyWiki’s markup language
+Dropbox + – To keep your TiddlyWiki in sync across computers
+TiddlyVault + – Tiddlers resource site
+TiddlyTools + – Tiddlers resource site
+Tiddlyspot + – Fully hosted TiddlyWiki website
+]]>After your webOS emulator is set up, it can get boring without any new apps to play with. The official Palm App Catalog isn’t supported in the emulator but luckily the homebrew Preware app is supported. Here is how to get more apps in your webOS emulator.
+We previously covered how to test drive webOS without a phone on your PC + via the emulator, but what about adding apps? Preware not only has access to some of the official Palm App Catalog applications, but it also has access to hundreds of third party patches and apps that aren’t available in Palm’s App Catalog.
+First thing you need to do is install the webOS emulator from the link below. Next, download Putty for an SSH client (link below). Now go to your start menu and run palm-emulator.
+Note: If you are using Linux or OS X you can skip installing putty because your terminal already has an SSH client.
+
Leave the emulator running and start Putty from wherever you downloaded it to. Type in 127.0.0.1 for the hostname and 5522 for the port.
+
The first time you connect you will be prompted to accept the RSA key, click yes and the login teminal will open. Login using root as the username with a blank password (push ‘Enter’ when prompted for the password).
+
Now you are actually remote with the webOS emulator running in virtualbox. To install Preware it is three simple commands. Type these into your terminal to install Preware.
+cd /tmp wget http://bit.ly/preware-bootstrap sh preware-bootstrap
You should get a confirmation once the installation is complete.
+
You can now close Putty and head back over to your emulator. You should find Preware at the bottom of your first launcher page. Click to launch it and it will automatically update all of the available software.
+
To disable the apps you won’t be able to install, you will need to click on the Preware menu and then manage feeds.
+
Because the official Palm App Catalog is not supported in the emulator you will want to make sure palm-catalog, palm-catalog-updates, palm-beta, palm-beta-updates, palm-web, and palm-web-updates are all disabled so you don’t have applications listed that you aren’t able to install.
+
Once you have turned on (and off) any feeds you want, hit Esc on your keyboard to emulate the “back swipe”. You will be prompted to update your feeds so just click “do it now” and wait for the update to finish. To install apps click available packages and then application. All of the apps will be broken down into categories or you can browse all apps from the list.
+
To install apps simply find the one you want and tap on it. All of the information about the app will be shown and the price information will be listed below the description, if the app isn’t free.
+
If you want to search for apps, go to the home screen of Preware and just start typing the app you are looking for. The banner will fill in with your search term and then just hit enter to search. None of the official Palm App Catalog apps will show up in searches unless they have been re-listed in one of the other Preware feeds.
+
You can also install patches into the emulator. WebOS patches are tweaks to the underlying code of built in programs or how things are displayed. If you search for Glass Effect and install it, the application launcher will have more of a glass background than a cloudy one.
+
Install the patch and then restart Luna when prompted.
+
Now your launcher menu will have more of a see through glass effect rather than the original look.
+
You can install whatever patches you would like but some of them are device specific and you should stay away from kernel patches because the emulator is quite a bit different than the physical hardware.
+You can also install extra testing feeds in Preware by opening the menu and going to manage feeds. Scroll to the bottom and fill out this information for emulator testing feeds. Last time I checked there was only one extra application in the testing feed but it still may be helpful for the future.
+Name: webos-testing-i686 +URL: http://ipkg.preware.org/feeds/webos-internals/testing/i686 +
+
Even though the official Palm App Catalog isn’t supported in the emulator there is still a big community surrounding homebrew and patches for webOS. Now you can try out even more with your webOS emulator.
+ +]]>Just like Windows 7 and OS X, Ubuntu has the ability to create a slideshow wallpaper thanks to GNOME 2.28. Here is how you can take control of your wallpaper slideshows with a simple to use GUI tool or a down and dirty text editor.
+Let’s start by showing you the easy way to create a slideshow wallpaper using a GUI tool called CreBS (Create Background Slideshow). CreBS is an easy install in Ubuntu. To install the software open up a terminal and type
+sudo add-apt-repository ppa:crebs/ppa
+sudo apt-get update
+sudo apt-get install crebs
+This will install the CreBS repository, update your available packages, and then install CreBS. Once CreBS is installed, head over to your menu and launch CreBS.
+
To create your wallpaper slideshow just use the add button and select images to add to the wallpaper. You can also drag and drop your wallpapers to change their order.
+
Once you have all the images you want, change the settings below for the amount of time between slideshow changes and how long you want transitions. +After all the settings are set up the way you want, type in a name at the very bottom and then click the green check to apply and save the desktop wallpaper.
+
If you ever want to apply the theme again later you can right click on the desktop and select change desktop background. If you want to share the wallpaper slideshow with friends you will have to edit the xml manually so I would suggest just sending them the pictures and allowing them to recreate the theme on their system.
+
If GUI’s just aren’t your thing, you can also create a wallpaper slideshow using a text editor. All you need to do is create an XML file with the following sections:
+<background>
+ <starttime>
+ <year></year>
+ <month></month>
+ <day></day>
+ <hour></hour>
+ <minute></minute>
+ <second></second>
+ </starttime>
+ <static>
+ <duration></duration>
+ <file></file>
+ </static>
+ <transition>
+ <duration></duration>
+ <from></from>
+ <to></to>
+ </transition>
+</background>
+The <starttime> section is just to say when the slideshow is to start. You can either have it start in the future or just set it to a past date and it will start instantly.
You can add as many <static> and <transition> sections as you’d like. The <static> sections point to the actual wallpaper files and how long to show each image. The <transition> sections specify how much time to use to fade from one static image to the next. Unfortunately, you can’t set the images to be displayed randomly. Save your xml file in /usr/share/backgrounds/ to make it available for all users on the system.
It isn’t hard to create your own wallpaper slideshow in any Linux distribution running the GNOME desktop environment with this simple XML layout and a folder full of images. Enjoy this handy trick to customize your install.
+CreBS +
+]]>Windows customization isn’t anything new, but with Windows 7, customization got a lot easier with theme packs. Here is how you can create your own theme pack from scratch.
+Creating a theme pack from scratch is a lot more work than using built in tools, but it gives you a lot more flexibility by allowing you to creating brand icons, RSS background feeds, and customizing every feature which may not be easy to do through Windows native tools. When you are going to create a theme that you can share with others you will want to take into account what exactly you will be able to change that others will be able to use. Windows 7 theme packs allow you to customize the desktop background (including “slide show” backgrounds, and RSS feed backgrounds), screen saver, system sounds, desktop icons, mouse pointers, and system colors.
+Start the theme pack by gathering all the files you want to use for your customization. Remember to get items for every part you are going to customize. If you do not specify parts to theme, the system will use the defaults that come with windows. So if you don’t find a mouse cursor you like, Windows will use the default cursor for the system. Once you have the files you want, put them all in a folder that you can easily get to. I am going to be building a theme based on the Matrix wallpapers we posted recently.
+
We will start the customization by generating the .theme file. This file is the heart of your theme pack and will tell Windows which media file to use where. The .theme file is really just a specially formatted text file so start by right clicking in your folder and creating a new text document. Name the file whatever you want and open it with your favorite text editor.
+
The .theme file is going to be broken up into sections. The first section is the [Theme] section. The [Theme] section only has two options, the theme display name, and the theme icon. The display name can be whatever you want the theme to be called in the control panel > personalize window, and the icon graphic must be a PNG file. The graphic will be scaled to 80×240 so use something close to that resolution or ratio.
+Note: The theme icon will only show up under the Control Panel > Personalization window so don’t worry if you don’t see the icon.
+
![]()
The rest of the [Theme] section will tell windows which icons to use for the desktop icons (Computer, Documents, Recycle Bin, Network). For icon files you can use either standalone .ico files, or you can use icons embedded in .exe or .dll files also. For .exe and .dll files you need to specify which icon to use with a comma and then say which icon you are going to use. (my.exe,0 or my.dll,-50). Each desktop item has a unique screen that identifies it so make sure you use the right string for each item.
+Computer = [CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon] +Documents = [CLSID\{59031A47-3F72-44A7-89C5-5595FE6B30EE}\DefaultIcon] +Network = [CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\DefaultIcon] +Recycle Bin = [CLSID\{645FF040-5081-101B-9F08-00AA002F954E}\DefaultIcon
+Below each item you will specify the icon with DefaultValue except the Recycle Bin which will use values Full and Empty.
+![]()
After the [Theme] section is the optional [Control Panel\Colors] and [Control Panel\Cursors] sections. The colors section would be extremely hard to adjust manually but if you really want to try it you can adjust the following items using RGB codes.
+Note: RGB codes range from 0-255 and are separated by spaces. So black is 0 0 0 and white is 255 255 255.
+ActiveTitle, Background, Hilight, HilightText, TitleText, Window, WindowText, Scrollbar, InactiveTitle, Menu, WindowFrame, MenuText, ActiveBorder, InactiveBorder, AppWorkspace, ButtonFace, ButtonShadow, GrayText, ButtonText, InactiveTitleText, ButtonHilight, ButtonDkShadow, ButtonLight, InfoText, InfoWindow, GradientActiveTitle, +GradientInactiveTitle
+Instead of doing this section by hand you could also adjust the colors using the control panel > personalize > colors, and then save the theme file and then just copy and paste the colors section into the theme you want.
+
The [Control Panel\Cursors] section has an option for which .cur or .ani files you want to use for each cursor. The valid cursors you can replace are the following:
+Arrow, Help, AppStarting, Wait, NWPen, No, Size, SizeWE, Crosshair, IBeam, SizeNWSE, SizeNESW, SizeAll, UpArrow
+If not cursor is defined the system defaults will be used.
+
After these two sections comes the first mandatory section and that is the [Control Panel\Desktop] section. If you do not have this part of the file the theme will not be recognized as a valid theme. In here you will specify what the wallpaper image will be, how the image will be displayed and if the image is tiled or not. The three values you need are Wallpaper, TileWallpaper, and WallpaperStyle.
+Wallpaper can be a .bmp, .gif, .jpg, .png, or .tif file. TileWallpaper is either a 1 or 0; 1 indicates the wallpaper should be tiled while 0 disables the tile. WallpaperStyle can be the following values. 0 means the image is centered, 2 means the image is stretched, 6 will fit the image to the screen, or 10 will will resize and crop the image to fit the screen.
+
After you have the [Control Panel\Desktop] section defined you can move on to the next optional section [Slideshow]. [Slideshow] is how you can make rotating backgrounds for Windows 7. This section has the following attributes: Interval, Shuffle, RSSFeed, ImagesRootPath, Item*Path (* represents which pictures will be included in the slide show). The attributes can be defined with the following values: Interval shows the amount of time to wait before changing the wallpaper image (in milliseconds), Shuffle is a 1 or 0 to determine if images are displayed in alphabetical order or shuffled, RSSFeed points to the URL of the images RSS feed you want to use, ImagesRootPath is the folder containing your images, and Item*Path determines how many items are included in the slideshow. Each Item*Path entry points to one wallpaper image so you need to specify each image manually.
+Note: ImagesRootPath and RSSFeed cannot be used together.
+
Following [SlideShow] is another optional section called [Metrics]. [Metrics] section shows dimensions of various display elements, such as the window border width, icon height, or scrollbar width. The NonclientMetrics and IconMetrics values are binary structures defined by NONCLIENTMETRICS and ICONMETRICS in winuser.h. In other words, you probably don’t want to edit this section by hand. If you are going to change the value of any window boarders I would suggest doing that through the control panel and saving the modified theme. Then export the [Metrics] section into your desired theme. Non-the-less, here is an example of a [Metrics] section.
+
Next is the required [VisualStyles] section. This section allows you to point to a .msstyles file that can be modified for customization. If you use a .msstyles value in this section you will need to remove the [Metrics] and [Color] sections of your theme because the .msstyles will replace both of those sections. The valid attributes are Path, Color, Composition, Size, ColorizationColor, and Transparancy. These options makes it easier to customize an already existing theme. For example, if you set the path attribute to %SystemRoot%\resources\Themes\Aero\Aero.msstyles you can easily begin customizing the default Windows Aero theme.
+
Following [VisualStyles] is the optional [Sounds] and [AppEvents] sections. For this section you can either specify each sound manually by using the path to a .wav file like so: +[AppEvents\Schemes\Apps\.Default\SystemExclamation] +DefaultValue=
+Or you can specify one of the built in sound schemes with +SchemeName= +You can use one of the built in sound schemes or specify the .dll file containing the theme.
+
Following [Sounds] is the [Boot] section. The [Boot] section only has one value for SCRNSAVE.EXE point this value to whatever .scr file you want to use for your screensaver.
+Finally is the required [MasterThemeSelector] which only has one attribute and you don’t have a choice for the value. The only thing that goes in this section is MTSM=DABJDKT which indicates that the theme is valid.
+Once you have all of the required and optional sections in the file, save the file to whatever you want to call it and change the extension from .txt to .theme. Make sure you are viewing known file extensions when changing the extension otherwise the true extension will be hidden.
+The final step it to package all of your media into a .themepack file. The .themepack file is simply a .cab file with an extension change. So if you already have software that can create a .cab file, simply use that software to compress your theme folder with all of your media in it and change the extension. If you don’t already have a cab packing program you can check out CabPack which is freeware.
+
Here’s an example of the Matrix Theme we built from scratch.
+
Once you have your theme pack you can apply it to your own system before sharing it. If there is anything else that needs tweaking you can either go back and change it in your .theme file your you can change it through the Windows GUI and then re-save the theme for sharing. Now go out there and share your favorite theme tweaks with the rest of the world.
+With all the new mobile operating systems how do you to know which one to pick? Like Android, Palm has a webOS emulator to allow developers to test applications without physical hardware. Here is how you can test drive webOS on your computer for free.
+The Palm webOS SDK/PDK requires that you have Java installed for the developer tools as well as VirtualBox 3.2.6 or higher.
+The first step is to install Java Runtime Environment (JRE). You may already have JRE installed and you can verify if it is installed by opening a command prompt and typing in the command java -version. You should get a output just like the one below. If you get this output you already have Java installed and you can skip to installing VirtualBox.
+
If you get an error that Java is not a recognized command then you need to install the Java Runtime Environment. If after you install JRE you still get an error, install the Java Development Kit and then try again (see links below).
+
Install Java like you normally would from Oracle’s website.
+
Make sure you avoid any crapware they bundle with the installation like the worthless Yahoo Toolbar.
+
If you don’t already have VirtualBox, and you should, you can download it from Oracle’s website (link below). Pick the host OS that you are using and download the installer.
+
Install VirtualBox and start the program so it can create the default .virtualbox folders.
+
Now we can install the actual Palm SDK tools which will install the webOS emulator for us. Go to Palm’s developer site (link below) and download the latest SDK.
+
Install the software by clicking next a few times to accept the default settings.
+
After the install, go to your start menu (Applications folder in OS X and menu in Linux) and launch the Palm Emulator.
+
You will get a pop-up asking which screen resolution you would like to use.
+Note: I would suggest using the highest resolution possible since your computer resolution will still easily be able to fit the resolution.
+
The command will create a virtual machine inside VirtualBox first.
+
VirtualBox will automatically start the virtual machine once it has been created.
+
Once the emulator finishes booting you will be able to play with the emulator just like the real phone.
+
You can click on the “screen” and launch apps just like the real phone.
+
Load up a website and then hit the Home button on your keyboard to launch a second application. Swipe left and right to change applications and swipe the card up to close the application.
+_Note: While using the emulator the Esc key will simulate the “back” swipe and the tab key will open the menu. The left and right arrows will simulate long swipes on the gesture area and End will simulate pushing the center “button” in the gesture area._
+
Some features may not work, such as screen rotation, multitouch, and GPS but the main OS features will at least let you try it out.
+If you want to get a feel for how webOS works with your email you can launch the mail application and set up your accounts.
+
If you want to open the virtual machine later you can open VirtualBox and just launch the VM directly from the menu.
+
Highlight the VM and click on settings to rename the VM to something that makes more sense to you. I simply named mine “webOS”.
+
You can also make a shortcut to launch the VM directly. Right click on your desktop and create a new shortcut. In the location of item field browse to your VBoxManage executable. In most cases it will be in your main Program Files under the Oracle\VirtualBox folder. Then type in startvm webOS (or whatever you named your VM).
+
If you are in the market for a new Smartphone, the hardware and carrier is only half the choice. You want to make sure you know what you are getting into when you pick a mobile OS and virtual machines are a great way to get to know your software before deciding with your wallet. Playing with the VM should give you a good chance to know what the OS is like and what you can do with it. Not only is the SDK completely free but so are developer accounts and application submissions to the catalog.
+If you want to test out Android then check out our article on how to test drive Android on your PC +.
+Java Runtime Environment (JRE) and Java Development Kit (JDK) can be downloaded from here. +
+ +Palm SDK download
+]]>If you have ever found yourself in need of a terminal available at all times in Linux, here are four different ways you can bring up a terminal with a maximum of three buttons.
+By default in Ubuntu and Linux Mint the terminal shortcut key is mapped to Ctrl+Alt+T. If you would like to change this to something else that makes sense to you open your menu to System -> Preferences -> Keyboard Shortcuts.
+
Scroll down in the window and find the shortcut for “Run a Terminal”. If you would like to change this setting click on the shortcut column and push the new keyboard shortcut you would like.
+
If you constantly find yourself opening a terminal and then browsing to the location you just had open in Nautilus, you can install a package to get access from your right-click menu.
+
To install the package just open the Ubuntu Software Center and search for nautilus-open-terminal. Install the package and then log out and back in to restart Nautilus.
+Note: This package is installed by default in some distributions so it may already be there.
+
Now just right-click on your desktop or inside any folder to open a terminal directly to that folder.
+
Guake is a drop-down terminal that will give you easy access no matter what you are doing. To install Guake open the software center and search for guake.
+Note: If you are using KDE Desktop Environment you can install YaKuake for the same effect.
+
Once Guake is installed open your menu and launch “Guake Terminal”
+
Give it a test by pushing F12 on your keyboard. You should get a drop down terminal that will be on top of all of your other windows. If you push F12 again the terminal will roll up and get out of your way.
+
You can change the available preferences by right clicking on the tray icon and selecting preferences.
+
You can change the keyboard shortcut, how tall the terminal window is, when to hide the terminal, and a whole lot more.
+
If you want Guake available every time you log in, you should add it as a startup application. To do that, open the Control Center and then startup applications in Linux Mint or in Ubuntu go to System -> Preferences ->Startup Applications.
+
And add Guake as a startup program.
+
The last method to get instant access to a terminal is to embed a terminal right into your desktop. To do this you will need to have a computer that is capable of running Compiz desktop effects.
+The first step is set up a new terminal profile. To do this open your terminal and then go to File -> New Profile. It is very important to name this profile something unique because the window name is how we are going to identify the window to embed it. We will name the window embedded-HTG-term for this example but you can name it whatever you want.
+

In the profile settings window that comes up change these settings for the new profile we just created.
+Show menubar: off +Initial title: embedded-HTG-term +When terminal commands set their own title: Keep initial title +Color scheme: Black on white will only show black text on your desktop but you can pick whatever will match your theme/background. +Transparent Background: On, Move the slider to whatever level lets you easily see the text on your desktop wallpaper. +Scrollbar: disabled
+
+
+
+
Next go to your Compiz Configuration Manager and activate these plugins if they are not already activated: regex matching, window decoration, window rules, and place windows.
+Under window decoration add !title=^embedded-HTG-term$ to the decoration windows option.
+Note: ‘!’ means to exclude this window, ‘^’ means nothing can come before this title, and ‘$’ means nothing can come after this title. This makes it so that if you were to search in Firefox for “embedded-HTG-term” your Firefox window would not all of a sudden embed itself on your desktop. Unless that is what you want then you can leave off the ‘^’ and ‘$’.
+
In the window rules plugin add title=^embedded-HTG-term$ to the following options: Skip taskbar, Skip pager, Below, Sticky, Non resizable window, Non minimizable window, Non maximizable window, and Non closeable window.
+
In the place windows plugin click on the “Fixed window placement” tab and then add a new item to the “windows with fixed positions” section. Name the new item title=^embedded-HTG-term$ and set whatever position you want the terminal to be embedded on your desktop. Check the option for keep in work area and then close the window.
+Note: Window placement starts in the top left corner of your screen with 0,0 and counts up to the bottom right corner. Your window position will be based on where you want the top left corner of your window to be (eg. 500×500 will put the top left corner of your window 500 pixels from the top and 500 pixels from the left of your screen.) If you do not like your window placement you can always hold Alt and drag the window to a new location with the left mouse button.
+
Now you should be able to press Alt+F2 and type in gnome-terminal –window-with-profile=embedded-HTG-term and you should get a terminal window embedded on your desktop background.
+Note: although this terminal is “below” all open windows it is still “above” your desktop icons so make sure you move them out of the way. If you need to close the embedded terminal type the command “exit” (without quotes).
+

One last optional step if you don’t want a blinking cursor in your new terminal. Open gconf-editor and browse to apps/gnome-terminal/profiles/Profile1/cursor_blink_mode and set the value to “off”. Your profile may be named something different but the key will be in the same place.
+
And there you have it, four ways to get instant access to a terminal in Linux. With any of these methods you should never be too far away from your ~ away from ~.
+]]>There are plenty of automatic music organization tools but for those who like to do things by hand, TagScanner is a powerful music organization tool that can be run from a USB drive, and it’s free.
+TagScanner is a native Windows program that runs well under WINE for Linux and OS X; it has support for MP3, OGG, Musepack, Monkey’s Audio, FLAC, AAC, OptimFROG, SPEEX, WavePack, TrueAudio, WMA, and MP4 files.
+
TagScanner comes with four main functions, music renamer, tag editor, tag processor, and list maker. Music renamer will rename physical files based on tag information. Tag editor can manually edit any field in a supported tag. Tag processor will automatically fill tag information based on scans from online, the filename, or a text file. List maker will generate playlists in m3u, txt, html, or csv format.
+
Open your music folder by selecting the browse button at the bottom of window or push Ctrl+O to open a location.
+
Depending on how much music you have it may take a little while for TagScanner to read all of the files in the directory. Sit back and give it a few minutes to gather all the information. If your music is wirelessly stored on a NAS and you have 5000+ songs be prepared to give it 15-20 minutes to scan all of the titles and metadata, or if you know the files you want to edit just open those select files to get right to tagging.
+
Once the information loads, click on the tag processor tab at the top. It is easy to start with the automated scanning first and then move to manual fixing where needed.
+Select an album or song on the left and then drop down the search window on the right to specify what you want to search for. TagScanner will automatically search freedb.org for album information; you can set which freedb server you want to use from the TagScanner preferences.
+
Before writing any information to the files click on the gear icon to change settings for embedding cover art and updating the tag information.
+
To verify the correct songs are going to be tagged, right click on any file and click play to preview the song with the built in player, or open file location to find the files you are tagging.
+
Select the correct album information on the right and click preview to see how the the file information will change. Any changes that are going to be made will show up in blue. This is the last step before writing changes to disk so make sure the album tag is correct. If you are satisfied with the tag information click save to write the information to the files.
+
If manual tag information is needed click on the tag editor tab, select the song or album that needs editing, and fill out any desired information on the right in the correct field.
+
Depending on what file format the music files are in there will be a load of tag information that can be added to the songs manually.
+
Once all the music is tagged to your satisfaction, click on the music renamer tab and fill out the format exactly how the physical files should be named. Use the legend information for attributes that should be included in the filename and check any boxes in the text transform window to replace special characters like & and %20, move “The” to the end of the band name, or to capitalize the first letter in each word. There are also options to restructure the directory tree based on tag information and trim file name length if your operating system or playback device does not support long filenames.
+
When you have the format and transform options set the way you want, click preview to see how the tracks are going to be affected when you rename the files.
+
If everything looks good click rename and an OK status should show up next to each successfully renamed song.
+
Once the music is tagged and renamed you can easily select the list maker tab and export the desired music to any playlist format available. Select the files, the type of playlist, and then click export to create the playlist file.
+
While manual music organization takes longer than automatic tagging software, you have much more control over how the songs are named and what information is stored in the tag. Manual tagging is also the only way to go if you have obscure artists or remix albums. TagScanner is a powerful tool for the job and is great because it doesn’t try to take over your systems media playback functions or clutter your system with icons, context menus, and background processes.
+]]>Interested in Android but think you need to buy a new phone to try it out? Actually, your Windows Mobile phone may already have the capability of running Android. Today we show you how and the type of phone you’ll need.
+
Update: This article was written 5 years ago, and as far as we know this process doesn’t work anymore on modern phones. It’s certainly possible that you can still run Android on a Windows mobile phone, but we don’t have a good solution to give you. We recommend asking about your specific phone model over on the XDA Developer forums +.
+To run Android you will need a microSD card that is not SDHC (typically a card less than 2GB) and a supported Windows Mobile phone (see below). You can check your microSD card compatibility by looking at the card to see if it shows the “HC” label.
+
The microSD card will need to be formatted in FAT32. Plug the microSD card into the computer and right click on it and choose format.
+Note: Formatting a microSD drive will erase everything on that drive. Make sure you have any important files backed up before you format it.
+
Now that the microSD card is formatted, the first step to installing Android is finding the right Android port for your phone (see below). You will need to find the port that works on your phone as well as the version of Android you want to run. Versions start at 1.0 but typically you will find ports for version 1.6 or 2.1.
+
Once you have found the right port for your phone and Android version you want to use, extract the files to a folder using 7-zip +.
+
After the files have extracted there should be a folder called “andboot”. Go into the andboot folder and there will be another folder called “startup config” or “startup”. Open this folder and you will need to find the right startup.txt file for your phone. Inside each folder will be a single “startup.txt” file. Copy the file for your phone model to the root of the andboot folder. This file will tell Android what type of hardware you have, how big your screen is, how much RAM your phone has etc. so it is very important to choose the right file. If you are confused on what these phone names are please read below on finding your phone model.
+
Once you have moved the correct startup.txt file to the andboot folder, copy the entire andboot folder to the root of your newly formatted microSD card.
+Plug the microSD card back in the phone and open the file browser on your phone and browse to the memory card. Make sure the phone is plugged into power before the next few steps because on some phones running on battery may cause the phone to hang.
+
Open the andboot folder and run haret.exe. If the right startup.txt file is in the root of the andboot folder you should be able to click “Run” and you will get a quick loading screen while haret turns off Windows Mobile and starts up Android.
+

You should get some scrolling text and probably a nice Android logo while the phone boots up the first time.
+Note: The first boot is going to take a considerably longer time than subsequent boots. and you may need to calibrate your screen during the boot process so make sure you keep an eye on it.
+
Once the basic Linux settings are done your new “Android” phone will boot to a welcome screen so you can walk through the rest of the settings like setting up your email account.
+Tip: If you are running Android on a phone that does not have an active data plan but does have wifi, you can get around the startup screen by tapping on the welcome screen in this order: top left corner, _top right corner,_ bottom right corner, _bottom left corner then tap the Android logo. You can then enable wifi and join a network and set up your gmail account manually.
+
It is usually recommended that you leave your phone alone while it syncs your information for at least 10 minutes. Once the initial syncing is done the phone should start running faster and you can play around with installing apps. If you don’t wait for the phone to fully sync you may have problems with apps crashing prematurely and a force close dialog popping up.
+
Change any settings and install any apps you want, they will be saved to your memory card and ready on next boot. All phones that run Android from the microSD card will automatically boot Windows Mobile when the phone restarts. To run Android again, just open the file browser and run haret.exe again.
+
There are a few different Android ports for Windows Mobile devices and each one supports a different family of device; each family of device has a varying amount of hardware support. Most phones will support the touch screen, hardware buttons, cell phone radio, and data connection, but some ports may not support bluetooth, GPS, or power management. This is not a complete list of Android ports available, but it should cover the most popular Windows Mobile phones.
+
Almost all Android development on Windows Mobile phones started with the development on theHTC Touch + (also known as the HTC Vogue and the Verizon xv6900). The HTC Touch has 100% of the hardware features working and even some features that were not available in official Windows Mobile ROMs. One of the main differences between Android for the Touch and Android for every other phone is the Touch allows for Android to be flashed to the phone’s ROM (NAND memory). This was a big break through for Android development and has increased battery life and speed greatly. Running Android on the Touch can be done following the steps above but it is recommended to run Android by flashing the phones NAND memory. To learn how to do that, start at the Android Touch FAQ thread + at XDA-Developers. +Android ports for the HTC Touch can also be used on the following phones with varying success.
+Note: HTC phones all have proper names that come from HTC and in many cases each carrier will give the phone its own branding and rename the phone to something else. For example, the HTC Titan was called the Mogul on Sprint and the xv6800 on Verizon. To find the Android port for your phone, start by finding the proper HTC name of your device. Start on HTC’s site + to discover your device’s official name.
+XDAndroid + supports the most popular touch screen HTC Windows Mobile phones and if you bought a touch screen HTC Windows Mobile phone within the past year, most likely this port will support your phone. XDAndroid runs directly from the phones microSD memory card on the following phones:
+Andromnia + is an Android port for Samsung devices. Currently this port is in the pre-alpha stages and things like the headset speaker does not work. But if you want to test it out it supports the following phones:
+Wing Linux + isn’t as quickly developed as XDAndroid but should get the job done if your phone isn’t supported by any other port. Wing Linux supports the following phones to varying degrees:
+You may also want to look at threads for the following phones to check the status of Android on these phones.
+ + +If you still can’t find what you are looking for I recommend checking out these links for more information.
+ + + + +]]>If you have ever needed to edit a whole folder of photos with the same effect or need to repeatedly crop, add watermarks, or drop shadows to images for the web, Phatch is the tool for the job. Phatch is a photo batch editor written in python so it works on any operating system.
+Phatch is available in the package manager of most Linux distributions. If it is not available you can download installation files from the Phatch website or source code from launchpad. In Windows and OS X things are a bit different and you will need to install all dependencies and launch the phatch.py script manually. Links and download zip with all dependencies for Windows can be found below.
+When Phatch is opened it looks more like a buddy list window than a photo editor. The first thing to do is click on the plus sign to add an action.
+
The first action to add should always be save. It is important to make sure save is on the bottom of the list because actions run in order from top to bottom.
+
When save has been added to the action list, there will be more options for filename, type, and location. Some file formats will add more options to the save action if they are available.
+
Even if the photo does not need editing, Phatch is still a great conversion tool with a plethora of available file formats it can read and write.
+
Now that the save action is on the list, click the plus sign again to add more to the action list. Each photo edit is its own action, so if the photo needs a watermark and a drop shadow, separate actions will need to be added.
+Use the up and down arrows to change the order the actions will run, and make sure there is at least one save action at the bottom of the list. Phatch also can use external programs such as Blender and Imagemagick if those programs are installed.
+
Note: If you need multiple copies of the same file (eg. web thumbnail and full size image) you can have multiple save actions anywhere on the list. But remember the action list is processed from top to bottom. So don’t create and save your thumbnail before the full size image.
+Click the action list menu to save and easily repeat these steps later on any pictures. Action list are stored in .phatch files which can be opened on any platform to have identical photo edits every time.
+If an action needs to be temporarily disabled, right-click on the action item and then disable it. Disabling skips that action when processing the list. This can be helpful if an image already has a watermark or drop shadow and doesn’t need to be processed again.
+
To run the action list, click on the gears icon or push Ctrl+Return and another dialog will pop up for a location of files or folders and options to overwrite images, include subfolders, and what filetypes to process. Click Batch and the action list will run and save in the location you specified.
+
Here is a few examples of photo edits we created quickly with a photo of a friends car.
+


Phatch also comes with an image inspector which can show the EXIF and IPTC information from the image. To launch the image inspector, click on the magnifying glass in the main Phatch window.
+
Drag an image to the window to see its attributes and tag information.
+
Phatch is a powerful photo editing tool that can repeat common photo edits in a snap; it is also free and cross platform which makes it even more valuable when working with the web from multiple machines.
+In Windows you can easily kill any task by pressing Ctrl+Alt+Del and bringing up the task manager. Linux running the GNOME desktop environment (i.e. Debian, Ubuntu, Linux Mint, etc.) has a similar tool that can be enabled to run exactly the same way.
+The GNOME desktop environment by default uses the Ctrl+Alt+Del shortcut to bring up the shutdown, logout, restart, and hibernate dialog. This is not useful for users who are used to quick access to a task manager.
+
To change the settings of Ctrl+Alt+Del in GNOME open the keyboard shortcuts preferences. In Ubuntu it is located under System -> Preferences -> Keyboard Shortcuts, and in Linux Mint open the mintMenu -> Control Center -> Keyboard Shortcuts.
+
The keyboard shortcuts preferences will show all of the shortcuts that the GNOME desktop environment can control.
+Note: Other program specific or Compiz keyboard shortcuts will not show up here. You will need to look in those programs for what shortcuts are available.
+
Adding custom global keyboard shortcuts is as easy as clicking Add.
+
For a Ctrl+Alt+Del replacement we will name the new shortcut “Task Manager” and the command to run is gnome-system-monitor.
+
Click Apply and notice the new keyboard shortcut shows up under Custom Shortcuts but is disabled. 
Click where it says “Disabled” and then press the new desired keyboard shortcut Ctrl+Alt+Delete. If the keyboard shortcut already exists as another GNOME keyboard shortcut you will be prompted to reassign the keyboard shortcut.
+
Click Reassign and the new keyboard shortcut will now be enabled and will show the keyboard sequence for the command.
+
For an even easier way to kill programs that are not responding, set up one more keyboard shortcut and name it “Kill Window” with the command xkill.
+
Click on “Disabled” just as before to set the keyboard shortcut for Kill Window to Ctrl+Delete.
+
To test out the new keyboard shortcuts push Ctrl+Alt+Del. The System Monitor will open and will have a lot of useful information on the System tab. This tab gives you easy access to your Linux distribution and release, current running kernel, GNOME version, and available disk space.
+
The next tab is the Processes tab and is similar to the task manager in Windows. You can sort by CPU usage, memory usage, process name, etc.
+
To kill a process, find the name and click the End Process button. A confirmation will pop-up and you can easily kill the non-responsive process.
+
The Resources tab shows CPU, memory, and network history and is very helpful in troubleshooting system performance. The history is only stored as long as the system monitor is open so make sure you leave it running if you want to view performance while running certain programs.
+
The last tab, File Systems, shows information about local hard disks and partitions. Particularly useful is the device, directory, and used information. The device shows how the system identifies your partition, and directory shows where that partition is mounted or if it is mounted at all.
+
The last keyboard shortcut that was set up was for a program called xkill. This program doesn’t have a user interface or settings. When you push the keyboard shortcut to run xkill the only thing you will notice is your mouse cursor will change into an X.
+
To kill a process with xkill move the mouse over the window that needs to be killed and left click with the mouse anywhere in the window. The program should instantly disappear along with any sub-windows the process had opened.
+If either of these methods are used to kill a process just remember that any unsaved work will be lost because neither of these programs allow the program to save work before closing.
+]]>There are a plethora of programs that can rip audio CDs on Linux, but very few are as simple as Sound Juicer. Sound Juicer is a GUI front-end for the command line only tool cdparanoia, but it adds quite features that make it worth a look.
+Sound Juicer is not installed by default in a lot of distributions so it may need to be installed from the distribution’s software repository. Start by opening up the software manager that comes with your distribution.
+Note: The screenshots show mintInstall that comes with Linux Mint 9.
+
Search for “sound-juicer” in the software manager. For some reason searching for “juicer” and “sound juicer” did not bring up any results so make sure you include the dash when searching.
+
Once you find the right program simply click install to download and install the latest version available in your repositories.
+
Once the software is installed go back to the menu to open the program. In Linux Mint and Ubuntu, Sound Juicer shows up as “Audio CD Extractor”. Search for it in the mintMenu or in Ubuntu find it under Applications -> Sound & Video.
+
If there is no CD in the drive the program won’t have much to look at.
+
Once an audio CD is inserted Sound Juicer should automatically detect your CD and fill in the information for title, artist, year, and track information.
+
Sound Juicer connects to MusicBrainz + to determine the CD information. If the CD cannot be found in the MusicBrainz database you will have the option to fill in the CD information manually and submit the album for future users.
+
If you want to use a different CD drive, change the music folder or naming of your ripped music, or change what format the music is ripped in, click on Edit -> Preferences.
+
Click on “Edit Profiles” to change advanced settings about how music is ripped. There are some ripping profiles installed by default and the profiles can easily be added or removed.
+
In Ubuntu, to enable the MP3 and AAC ripping you will need to install the restricted-extras package from the Synaptic Package Manager or it can be installed directly from FireFox using the [Ubuntu community documentation](https://help.ubuntu.com/community/RestrictedFormats#Playing + Restricted Formats)__.
+Highlight one of the profiles and click “Edit” to change the name, description, and GStreamer command that runs to rip the music.
+
Once everything is set up, click “Extract” to begin ripping the CD. Depending on the settings, the CD will rip and eject as soon as it is done. Put in the next CD and the computer do all the work!
+
If you would like to keep up with Sound Juicer development or make a donation to the developer you can find the website here +.
+]]>I would like to take a couple minutes to share with everyone how she made it, and what software I used to help her edit it.First of all, here was the setup.
+
She started with a piece of poster board paper taped to our kitchen floor. Then added a microphone boom with a mini tripod zip tied to the end of the boom. This allowed her to take pictures from the same height every time and also gave a little flexibility in moving the camera around. Finally she added two small halogen lights to either side of the paper to light the “stage”. When taking pictures she took a picture of the whole piece of paper every time and we used software to edit the photos later.For the commercial she needed 3 full size webOS cards and 6 smaller phones. She started with making the phones.
+
The phones were made so well it was almost painful to do this to them. The animation was made by crumpling the phones and then playing the animation backward in the commercial.
+
The cards were pretty easy to make. The hardest part was the animation of the media player. To animate the media player we had to cut slivers off of each album art and then tape them back together one piece at a time. It was time consuming but we were very pleased with the result. The calendar was intentionally longer than the other cards to compensate for when it would be folded.
+
Once all of the pictures were taken we needed to figure out how to manage 1000+ pictures to make a 1 minute commercial. To start we split up the pictures into folders labeled for each scene and numbered them in order 01_dynatac, 02_nokia, etc. We then used Phatch + to trim off edges of each picture and essentially “zoom” into each picture to the size we wanted. Once the pictures were trimmed Métomorphose + renamed all the pictures in sequence and then Stopmotion + stitched all the pictures together into one video file. To add music and narration to the commercial I used Audacity + to record the script she wrote for me and then OpenShot + and PiTiVi + to match up the audio and video and then export to a finished file. We could have just used one video editor, but OpenShot had a weird white frame at the end of the video so we tried PiTiVi and didn’t have a problem.We hope you all enjoy the video and I just wanted to take the time to show a little behind the scenes for everything that went into making it. If you listen to mintCast + you will know how impressed I was with this finished product, and the fact that it was made entirely with free and opensource software.If you get a chance, head over to webOS Roundup + and vote for the commercial.
+Originally published at 1n73r.net + on May 17, 2010.
+]]>I thought I would follow up on my predictions for last year + and see how I did.
+Computers:1. Multitouch — While this didn’t make as big of a push as I hoped, hardware development is very slow in a recession, there have been announcements of hardware coming out in 2010 that defiantly take advantage of multitouch inputs. Project Natal + and the PS3 motion controller + did surprise me though.2. Linux Market Share — I cannot find a good answer on this one. But lets just say market share boomed but not where I thought it would. Android and webOS are both Linux based devices that saw a huge jump in market share from where they were in 2008. And there were also reports of Linux having a 30% market share + in netbooks. Those numbers are good enough for me to say this is confirmed!3. Microsoft Solutions — Windows Mobile was a failure still because WM7 got pushed back, the ZuneHD made huge progress and if weren’t for apps would be preferred over the iPod Touch in the tech world. Just the fact that I had 4–5 people ask me about the Zune this year makes me think it was a success. A year ago if you said Zune nobody knew what you were talking about. Windows 7 was a success but I think more than anything Microsoft no longer is the joke of the tech world, Apple is +. Just getting their reputation back was a huge success for them.Video games:1. Wii — No it didn’t crash, sales are still relatively strong but with addons upon addons for the console and no new games that are any good. This will remain a console that collects dust in peoples entertainment centers.2. PS3 — Totally confirmed! With the launch of the PS3 slim and a couple big games that finally came out sales jumped tremendously. From what I could find the PS3 actually surpassed the Xbox 360 in worldwide sales. And that is saying a lot considering how much the US and Europe loves the Xbox 360 and how much of the market share that accounts for.3. Online play — Was it key? Not anymore than previous years. But the PlayStation Network is growing in popularity, and usefulness, and casual Xbox 360 games even needed to sign up for accounts for Netflix streaming, which I think is lame BTW.4. PS3 3D — It is later than I thought but it is sill coming +.Other:1. DTV transition — Wow, that was uneventful. I guess people were more prepared than I thought. It also helped that a good portion of OTA users switched to cable or satellite.2. Streaming video — While this probably wasn’t because of the DTV switch. Many online video sites flourished +, and some failed +.3. OLED — Besides a few mobile devices, OLED was unheard of in 2009. I blame that on the recession, that crap is expensive to develop. All in all though, there was no projector built into a laptop and pocket projectors just started coming onto the market. Stupid recession.4. New site — Nope, didn’t happen. Twitter really took off but nothing to surpass the growth of facebook. Although MySpace is finally bleeding users.
+Originally published at 1n73r.net + on January 1, 2010.
+]]>It was fun doing this last year. So I thought I would have another go at it and see what I come up with.
+Computers:1. Netbooks/sub-12″ laptops will be even bigger than before because they will finally be useful. Atom/ULV processors, Ion/Tegra graphics, and touch enabled devices will make having a 17″ laptop a bad thing. Oh and used/refurbished laptops might play a big role in killing desktops once and for all.2. Windows Home server will have a big update (based on server 2008 r2) and will include Windows Media Center backend and Zune software so you can plug your tuners directly into your WHS. This will also allow for great integration in Windows Mobile 7 and begin a new wave of extenders. I don’t think it will be out till Q3/Q4 though so extenders won’t make a push until 2011.3. Someone will finally offer a true alternative to cable TV. It will probably come from Apple/Netflix/Boxee/Hulu/Microsoft and it will still be an expensive monthly charge but it will be possible to disconnect your cable/satellite. I am thinking Microsoft will begin a Zune Pass for TV which will integrate into Windows Media Center when WHS 2 and WM7 come out.4. Apple will begin talks of their new OS, Microsoft will stay quiet about what they are working (and ride the good wave of Windows 7) on as long as possible, and Linux will be in a transitional phase while KDE and Gnome both get big updates.
+Video Games:1. Nintendo won’t come out with anything new. They are going to milk the Wii and DS as long as they can and plan for the Wii HD announcement in 2011. Microsoft will do the same with the Xbox 360 but they will probably hint that they are making something new before the end of the year.2. Sony will hopefully focus on finishing their projects (home, media codecs, 3D, etc.) and open up the PS3 to 3rd party programs in 2010. Things like Netflix and Pandora streaming I don’t think are too far fetched and I really hope to see a decent browser come to the console along with Vudu streaming.3. A new mobile console will come out. Probably in the form of a phone, but I expect a lot from Microsoft with Xbox Live on Windows Mobile 7.
+Cell Phones:1. Verizon will begin its rollout of LTE and Apple will announce a device for Verizon. I have always thought Apple would not make a CDMA device until Verizon starts rolling out LTE and that will happen in 2010. This also means that the device will work on Verizon, AT&T, and T-Mobile in the US and many GSM carriers around the world once GSM networks start updates. With a device on Verizon Apple will have a huge hold on the mobile market. It won’t go unanswered though.2. Android will become number 3 in the mobile world. That is no small feat however. Android is currently the bottom in market share, by a lot. They will win in 4 ways, 1. Cheap devices 2. Multiple options 3. Any Carrier 4. The decline of RIM and Windows Mobile. Windows mobile has already been stagnant for the past 5 months and RIM is losing it’s customers. I don’t think RIM is smart enough to announce something big so they will die off but will still hold a good portion of the market share through most of 2010. Oh, and an official Google phone and a crap load of more updates to the OS won’t hurt either.3. webOS will gain market share thanks to Verizon but will still fail to make the impact that the new Apple device will. Palm’s only benefit will be that they will be on Verizon first because they will support CDMA. I really hope they come out with a new phone, but if anything I think they will only announce a new phone in Q3 but not release anything new.4. Windows Mobile 7 will have features built in that will make any iPhone user gelous. I am not just talking about cool games, I am talking about ZuneHD player integration, amazing hardware +, and media streaming galore. I think they will integrate with the new Windows Home Server/Media Center and will really make seamless media playback better than ever. Not only that but WM7 will be heavily integrated into social networks allowing you to be always connected to your facebook, twitter, email, etc. even more seamless than Android or webOS.5. Apple Tablet will be huge at first, and then go the way of the Apple TV. Yes the device will be really cool, yes fanboys/blogs/tech sites will long for the chance to gaze upon the amazing apple logo on the back, and yes it will do really cool things with media playback and music streaming. But if even 1/2 of the rumors are true the device is destined to fail. A ~$800, 10″ tablet you carry around to watch videos, surf the web, listen to music, and play games on really just sounds lame unless I was at home sitting on my couch. And in that case I will just use my laptop or get a netbook preferably with Google Chrome for less than 1/2 the price. I feel weird talking about it when it is really only about a month from being announced. But in all honesty, I don’t see how this would be any better than a device you can actually carry in your pocket like say, a Google Phone. Oh and the tablet will have hardware issues in the first generation.
+Other:1. 3D in TV’s will have a big push. There are finally standards to allow for it and sales will be slow at first because there won’t be much content and prices will be ridiculous. Interest will rise when cable providers announce 3D cable TV offerings for launch in 2011.2. Retail stores will begin to push online sales and start to lose services because consumers are getting smarter, or at least more resourceful. With Amazon having as big of a year as they did, stores like Best Buy, Barns n Noble, and Sears just can’t rely on people coming into their stores as much.3. The Automotive industry will finally push for a standard in electric/hybrid cars. With so many companies going out of business, automotive makers can’t stay fragmented for long. They will have to agree upon something or they will lose to a up and coming company like Tesla.
+Let me know what you think in the comments. Mostly I feel 2010 will be a year of recovery and not innovation. Although necessity is the mother of invention so maybe I am wrong.
+Originally published at 1n73r.net + on January 1, 2010.
+]]>

For my birthday this past weekend I treated myself to something I wouldn’t normally do. I went for a test ride in a super car. It is something I have always wanted to do, and now that I am 25 I feel like I should be able to go do it. Lucky for me there is a start-up super car company that happens to have 1 of 3 dealerships about 30 minutes away from my house. So I gave them a call and scheduled a ride in one of their fabulous cars.
+I wanted to give a quick review of what I thought about the car. First of all the obvious, this car is gorgeous! It is based off the Lotus Elise and it shows. It is a pretty small car with 100% carbon fiber body panels. For being such a small car it looks fairly heavy sitting on the street, but when the trunk/hood were open I could see all of the unpainted carbon fiber (including the carbon fiber trunk “tub”). All of the carbon fiber really makes this car stand out from just another Solstice/Sky and into the super car category. I asked if it came unpainted but I just got a weird look and was told there probably wouldn’t be a market for that. They were probably right but I still think it would look sweet.
+One of the first things I noticed when I got in the car was how hard it is to get in. The side sill was extremely high when compared to the seat, and the seat I sat in was quite uncomfortable. I asked and found out the car I was actually sitting in was only the eighth Tesla Roadster ever made. When I finally got into a production car with swede seats it felt significantly better but I still wouldn’t want to sit in the seat for more than a hundred miles or so. Of course in this car, those hundred miles would go really quick. The side support was also a bit lacking for how fast the car can corner.
+Also from just sitting in the car I found a few things very strange. First was the fact that the car uses a traditional key. I know this may not sound strange but even basic cars now use a wireless key and push start buttons. Second was the RPM gauge. Sure the electric engine spins around 13,000 RPM but the current transmission is only one speed. That means the RPM gauge and speedometer mirror each other. Tesla did finally fix the problems with their two speed transmission so maybe this will make the RPM gauge a bit more useful but I still find it a bit strange. Lastly was how small the car was inside. I currently drive a Toyota MR2 so I know what small cars are like, but with a driver sitting next to me I found that I had to lean slightly to the right just to keep rubbing shoulders the whole time.
+On the plus side, this car is quick! I have been in some quick cars (the fastest was probably the ’07 Corvette Z06) but now this takes the cake. It was very deceptive how fast we were even going because there is no engine noise, but I could feel my gut collapsing on my spine whenever the “gas” pedal was pushed. Not only was it fast in a straight line, everything in the car is so low that it moved around a corner just as fast as it did going straight. I think my lower intestine tied into a knot going around a freeway offramp. Another big plus was how simple the interior is. There is no glove box (more of a shelf), no center console, and only about 6 buttons and 2 knobs including the AC, heater, and radio. Most things were controlled with a touchscreen on the lower left side. I asked what you could do with the touch screen and besides the boring charge level and air pressure the valet mode was really cool. You can put in a pin number and it limits the car to a lower speed and RPM. Just something to make sure no one else is having too much fun in your car.
+Overall the car looks fantastic, goes like stink, and is so unique I can almost guarantee you won’t know anyone else that has one for the next 3 years. But overall some of the car felt very “version 1.0” car quality and made me want to see how much better the second version of the car is going to be. For now the car is too expensive, starting at $110,000, and doesn’t offer enough to make it usable as a daily driver. Not that I would turn one down, but obviously I don’t have the money to buy one either.
+Thanks to everyone at the dealership for taking time to show me around and let me ride in the car. I had a blast!
+Let me know if you have any questions about the car in the comments.
+Originally published at 1n73r.net + on October 4, 2008.
+]]>I had an idea a while ago for a website that I know I will never be able to act on so I thought I would just post it here and maybe someday someone will find it and have the time and know-how to complete it.
+The basic idea for the website is to be a software recycler. The site allows you to donate your old/unused software either digitally or by mailing in the CD/DVD, and it also allows you to download software you are looking for completely free (donations accepted). With so many software companies just allowing you to download installers and emailing you a key this would be fairly easy to implement.
+The site’s main goal would be to support free and open source replacements like Linux, Open Office, and Gimp for common applications, but there would also be the opportunity to get a license key for Windows XP, Microsoft Office, and Photoshop. Most of the funding for this site would come from donations of people downloading software and ads for the open source counterparts. I would imagine this site would mainly be non-profit though simply because of the amount of server storage and bandwidth needed to host this.
+Large companies often buy software only to phase it out in two or three years. The software works just fine and for third world countries, non-profit companies, and individuals this could save a lot of money and stop the needless purchase of software if someone is no longer using the key for software they just upgraded. Similar cases would be when companies like Microsoft stop supporting Windows XP. There are going to be countless unused keys for legal versions of XP that I am sure a lot of people would love to have and countries can take advantage of.
+The idea of donating your unused license I am sure would have a lot of legal implications, but I think once the software has been purchased it is able to be sold/given to anyone once the initial purchaser is done with it. There would also need to be a verification process when the software is donated. The way I think of it would be to have some sort of VM running a installer to verify its authenticity, but for volume licenses a phone call would probably need to be made to the developer of the software.
+I think a website that could allow this service could not only help open source projects but it would also help the world by saving money and getting the word out about free alternatives. Let me know what you do with your old software and what website you think the world could benefit from in the comments.
+Originally published at 1n73r.net + on May 23, 2009.
+]]>I have never done this before but I thought I would take a swing and making some predictions at what I think is going to happen this year with technology.
+Computers:1. Smaller, faster, better. Duh. That is obvious but I think there will be some big improvements in “alternate” input for computers. Apple is rumored to release a multi-touch imac. Windows 7 has multi-touch support and is just waiting for hardware/software to take advantage of it. In 2009 I expect to see the biggest improvements in multi-touch software. Games will probably be first, with the iPod touch and iPhone helping with lots of ideas, and then we will get some cool browser and media solutions. I for one would love to see cooliris + with some multi-touch support. After multi-touch will probably come touchless input but I don’t think that will gain a lot of ground in 2009.
+2. GNU Linux will gain at least 1% (double) market share (putting it up to 2%) before the end of the year spearheaded by Ubuntu. At this point I believe every major computer retailer (except Apple of course) offers GNU Linux on at least 1 model line, and when people see the boot speed and stability improvements of the next Ubuntu release more and more people are going to start “giving it a shot”.
+3. 2009 will be the year of Microsoft solutions. I know Apple is gaining on Microsoft’s market share and they still will for a good part of 2009. But I don’t think market share ever really tells a full story. All I hear about now is how Apple is the coolest thing since super cooled capacitors, but I sense a bit of a change in the wind. I think Windows 7 will launch in 2009 and will greatly restore faith in Microsoft as a company. I also think that the next version of Windows Mobile will finally catch Microsoft up in the mobile platform market. The Windows Mobile OS won’t surpass what is currently out with Android or iPhone but it will make it respectable in what it can do and how it looks. I also think that the Windows Home Server market will gain popularity and the Xbox line will continue to grow. Finally, I think Zune sales will skyrocket (mainly cause Zune media player will be in Windows Mobile 6.5). Right now the Zune is in spot 3 behind Scandisk and Apple. I think as more and more people become unhappy with their iPods but they don’t want to upgrade to iPod touches or iPhones they will turn to the Zune. Last I checked Zune had 5% market share, but by the end of the year I see that number doubling to 10% of the mp3 player market. A big jump but it is truly a worthy mp3 player in my book.
+Video games:1. The Wii will crash. They have enjoyed a crazy amount of sales for far too long and they haven’t come out with any good software for months. I am so glad this day will finally come because I haven’t liked the Wii from the start. They will quickly be outsold for a few months by the Xbox 360 and the Wii will drop in price (my guess is to ~$180). Either way it will be hard to recover and it will probably just die out until Nintendo unveils the Wii HD or something ridiculous. By this time the Wii will not be “the console to have” and most people will finally see the console for what it truly is.
+2. The PS3 will jump in sales. I already see this at my work. Two of my co-workers who previously bought Wii’s finally want to either A. Play real video games again or B. Watch Blu-ray movies. Their obvious choice was the PS3. Although the price is a big jump, people will finally realize all the features you get out of a PS3 and will start buying them mainly for Blu-ray players and eventually for gaming systems. The PS3 will also start to gain popularity because the Xbox 360 will run out of juice (aka. storage space) and the PS3’s potential will finally start to be tapped into. Sony will begin to push out better programming tools and maybe even Valve will come to the dark side and program their own crap for the PS3.
+3. Online systems will be key this year. Xbox Live is fantastic but costs money. More and more people are getting tight on money and Xbox Live will probably suffer because of that. The PSN has been mediocre at best, but at the cost of free I think more people will sign up for this than ever before. Also Nintendo will realize the error in their ways in not offering a online service and will make plans for it with the Wii HD.
+Other:1. February 17th will be a very dark day for a lot of people. Best Buy will be crowded as hell, and people will be very upset their antenna doesn’t work anymore. The biggest impact will be in low income/minority neighborhoods. There will probably be some bill passed to make sure they are not forgotten about in the future. HDTV sales will continue to decline until after February 17th when they will get a small kick in the pants until the economy levels out.
+3. Displays are going to rock. Not just TV’s either. Laptop displays, computer monitors, projectors are all going to improve. OLED will make a big push (“organic” isn’t just for your foods) and I think we will probably see some sort of built in projector for a laptop this year. Pocket projectors will also finally become something worth looking at.
+4. The internet will have a new awesome site. There will be some new MySpace/Facbook site for 2009 and it will include all the other sites in one. It will finally truly be able to combine your online accounts (at least social accounts) in one place. I have a feeling this site will be run in some way by Google (or at least bought by Google in the end). I think the first step to this will be Google NOT buying Facebook. If they do buy them then there would be no point in making an all inclusive social site. Their new site will easily tie in with YouTube, Blogger, Google Calendar, etc. The next step would be for Google to buy Twitter.com +. As more people don’t have time to blog, they will turn to Twitter to allow them to blog on the go.
+Well that is it. I know it was a heck of a lot of reading and I thank you for reading it (or at least skimming it). I will hopefully follow up 1 year from today to see how these predictions were met.Let me know your predictions in the comments or if you agree/disagree with any of mine.
+Originally published at 1n73r.net + on January 1, 2009.
+]]>Recently hack a day + had a article about enhancing your Canon to have more functionality than a standard point and shoot camera. The firmware loads on your memory card and it allows you to do things like shoot in RAW picture format, change your ISO speed, even allow a calendar and games on the camera. One of the best features of the firmware looks like it is completely reversable. All you do is load the files on a memory card and it works (as far as I have read at least). Once you no longer want the extra features you can just delete the files from the memory card.
+The most difficult part looks like it is picking the right firmware for your camera. Head over to the CHDK project wiki + page and start reading/downloading.
+One other thing I was able to do this weekend was enable a super zoom on my camera. Really this is all I did…
+The camera lens fit almost perfectly into the binoculars so I decided to see how well it would work. I noticed at first that I had almost tunnel vision when taking pictures and they were a little bit blurry. I quickly saw that if I zoomed in all the way (3x optical) I lost the tunnel vision. I then was able to adjust the blurriness with the focus on the binoculars.
+Here are some before and after pictures of what the pictures looked like.
+



Even though some of the closeups were pretty blurry I’d imagine you could get a much clearer picture with better binoculars.Let me know if you get to try this on your own and how it works for you.A couple things I found that worked well was making the camera have a fast ISO speed because with the binoculars the picture was very shaky. I turned off picture review so I could just take as many pictures as I possible. If you are buying a set of binoculars you may want to look if your camera fits in the looking hole. It helped because it shielded a lot of the light and made it easy to hold both the camera and still focus the image.
+UPDATE: I wanted to update this post with some more information I found out about CHDK. HackADay + had some great tips on using CHDK to its full advantage.
+Originally published at 1n73r.net + on May 20, 2008.
+]]>I have mentioned the IT Crowd before and if you haven’t seen it yet you need to check out the recently released DVD + or at least read some of the 1337 subtitles +. In honor of the show my wife Beth has cross-stitched a great tribute the IT Crowd using a pattern we made from screen shots of the intro. Hope you enjoy!
+
Beth’s site is www.defenestrateeverything.com +. Check out some more crafts she has over there. For information on purchasing this pattern for the low, low price of $3.50, please email: beth at hartfeltcrafts dot com.
+© Beth Garrison 2016
+Originally published at 1n73r.net + on December 2, 2006.
+]]>I used my 1987 Toyota MR2 with a 1600 cc engine. The car weighs approximatly 2500 lbs (1134 kg) and only seats two people. It has 117,000 miles on it and is rear wheel drive.
+I drove my car for 1 week as I normally would and 1 week never allowing my engine to rev over 3000 rpm. In the 2 weeks of testing I never had cargo in my car, never had a passenger, and never went through a drive through or had excessive idling. Not allowing my engine to go over 3000 rpm held me to a top speed of about 57 mph. It also caused me to accelerate very slowly but I was still able to get up to my destination speed by the time I reached the freeway.
+Driving ~57 mph on the freeway and not accelerating over 3000 rpm caused me to get 8 mpg more than I previously was getting on normal driving. For me this was approximately a 28% rise in my fuel efficiency. Over my whole tank of gas I am able to get an extra 80 miles before I have to fill up. This essentially gives me a little more than 2 extra gallons of gas per tank. Because I get the equivalent of more than 2 extra gallons per tank I save (at current gas prices) $9 per tank. I fill up my tank every week so this will cause a yearly savings of about $500.
+I first of all did not expect to have such a high gain in my gas mileage. I expected 3-4 mpg more at most. Even with driving slower I never had to leave earlier than usual for work/church/etc. and I was never late (at least not later than usual). Surprisingly I felt more relaxed while driving at 57 mph at all times. I would not get upset when someone was driving slowly in my lane and I did not get competitive when someone passed me (because everyone was passing me). My drive to work was much more entertaining and I was able to relax and think clearly more than I normally would.
+For my slow week I passed 5 cars and 1 truck. I also had 1 person honk at me.
+One day (driving normally) I drove with my t-tops off for about 15 miles. This probably caused undesirable wind turbulence and may have affected the gas mileage.
+I can not be certain that both times I filled up my tank I filled it with the exact amount of fuel (but it was probably pretty close).
+I drove at night for about 60 miles during the slow week. This normally would not affect much but my headlights pop up so it probably caused some drag and may have had an affect on the gas mileage.
+Weather was close to the same but I cannot be certain that it was the same and may have had some influence on gas mileage. For those who are familiar to southern California you probably know that the temperature doesn’t change much. I was able to avoid major changes by driving during the same part of the day for both weeks.
+Because my mileage increased so much and I am used to driving at such a slow speed now I will continue to drive at 57 mph on the freeway. This next week I will test how much of a difference it will make to drive on city roads normally and slow just on the freeway. I may try a couple of other experiments to see if I can get my car up to 40 mpg but for now I am very happy with what I have found.
+Lowering the speed limit is defiantly not the answer as far as I’m concerned. A 30% increase on most SUV’s and trucks will still only increase gas mileage to 15-20 mpg. That is still far to low to make a big change in gas prices.
+What the world needs is some cheap add-on that will make current internal combustion engines more efficient or run on an alternative fuel. Until that happens the world still has close to 1 billion cars that are running far too inefficient. Even if hybrids start making great sales we still have cars that will be using fuel like they have been for the past 100 years.
+]]>