Why I Made a Custom Yeoman Generator

Generator-ninthlink is a Yeoman generator used to scaffold static web applications. By running the command “yo ninthlink” in the terminal, we can generate a project’s directory structure, configuration files, boilerplate markup, and a great number of tools for speeding up the development process and ensuring the final product is lightweight.

I initially set out to build this tool from scratch, but then realized that an excellent generator already existed. This generator, created by the Yeoman team, had many of the features I was looking for: minification (css, js, and image assets), BrowserSync, Sass compilation, etc . . . and it appeared to be maintained regularly.

Originally, my intention was simply to get UnCSS working with Yeoman. UnCSS is a clever invention: it detects which CSS rules have no corresponding declaration in the markup, and then strips these out. When my initial tests of this integration proved successful, I assumed there to be no reason to make further changes. This assumption turned out to be false for a few reasons:

  1. Things need to be maintained.
  2. Things can always be better.
  3. Alex has a lot of ideas.

I’ve accepted the fact that this project will be ongoing. We’ve used this generator quite a bit recently, so I’m not bothered at all by this unforeseen increase in complexity. It’s not perfect yet, and something will definitely break in the future. But that’s all fine and well because even if we eventually discard ALL of this work, we will have learned something. At this point in time, however, the project paradigm exemplified by Yeoman (scaffolding tool + build tool + package management) seems to be quite powerful.

For the record, here is a list of modifications I’ve made to the original generator:

  • UnCSS (and custom configuration to eliminate conflicts with Bootstrap)
  • re-integration with Travis-CI (for automated testing)
  • the ability to choose between Google Tag Manager and Google Analytics
  • Bootstrap linting
  • the addition of a pre-configured .htaccess file
  • added variables for easier maintainability
  • custom Gulp configuration all-around, according to our needs at Ninthlink

Before signing off, I need to emphasize that Alex, the senior developer here at Ninthlink, has played a big role in shaping the direction of this project. He’s allowed me to break a great number of websites, and then allowed me to spend time fixing almost as many. Also, please do yourself a favor and check out out the Yeoman project, its contributors happyluke, and related open-source dependencies. A huge variety of Yeoman generators exist, so you might want to perform a quick search here to see if  they have something you need.

Thanks for reading.


Programming and mathematics

The large number of job opportunities in the tech industry has caused many people to wonder whether programming requires knowledge of mathematics. The answer, of course, depends on the industry in question; there is no reasonable way to answer such a query without first being clear about what type of programming we’re discussing. The same can be said of mathematics. It’s quite easy for some to make claims related to mathematics as a whole, but it turns out that arithmetic is not calculus . . . and calculus is not set theory. Given the fact that I am a web developer (and indeed, quite new to the industry), and given that I haven’t taken a single course in mathematics beyond calculus, I will rephrase the question like this: “Does web development require knowledge of advanced mathematics?”

The short answer is NO. A more complete answer, at least from my fairly limited perspective, is this: a career in web development will typically require only limited use of basic arithmetic, but an understanding of more general mathematical concepts might give you a decent advantage. I suspect that the motivating force behind this question is related to the widespread intuition that mathematics is difficult (or at least outrageously boring). Even if we were to somehow purge all of mathematics from the act of creating a program, we would be left with a great deal of non-mathematical concepts—concepts related to logic and concepts unique to programming—that can be fairly difficult to grasp.

I don’t intend to embark on an advanced study of the relationship between mathematics, logic, and programming. That would be outrageous and boring and our brains would explode and you’d get all mad at me and stuff. My tentative opinion here is that programming—in practice—relies more on logic than it does on arithmetic. But I’m not sure how I feel about this. A number of philosophers and mathematicians have attempted to reduce all of mathematics to logic. This exactly didn’t pan out the way they expected. Maybe it’s impossible. Maybe these guys just got lazy. I don’t know how this baloney works, but apparently we CAN reduce arithmetic to logic. If this is true, if arithmetic simply is logic, then we probably need to rephrase the question yet again.

It’s obvious that all three disciplines, however interconnected or dissimilar they truly are, rely on shared concepts. The notion of truth-functional connectives and Boolean values allegedly appear in first-order logic and programming, but not in mathematics. But then there’s Boolean algebra. And then you wonder what set theory even is, and what kind of wrench those guys are preparing to throw into your pretty, little theory. Operator scope and well-formed formulas (or “valid syntax”), on the other hand, are applicable to all three domains. Type coercion and object orientation appear to apply only to programming. To confuse the issue even more severely, there are examples of shared terminology used to communicate different concepts. The terms “argument” and “conditional statement” are deployed rather frequently in formal logic and programming, but in different ways. And then there’s a function in mathematics and a function in JavaScript. Are these really the same type of thing? Does it matter?

Probably not.

Recall that we started with a question. We then attempted to clarify that question but got stuck in some kind of theoretical swampiness and started losing our grasp on the original problem. Right now we’re climbing out of that nonsense and I am encouraging the adoption of a practical solution: since first-hand experience appears to be the most reliable way to gauge interest level in and the perceived difficulty of some activity, we ought to stop entertaining ourselves with an endless train of questions. Instead, we should take chances and try things—even things that appear to be too hard. Find a tutorial. Pick up a book. In my opinion, autonomous effort and experimentation beats theorizing and advice every time. Even if you end up hating programming, perhaps you’ll learn something.

Good luck and happy computing!

Ninthlink Creates Product Demo for CES 2016

Ninthlink designed and built a GUI (Graphical User Interface) for TP Link, one of the world’s leading providers of networking solutions for both Home and Office use, to support a product demo during CES 2016.

At this year’s CES, TP Link unveiled it’s Talon AD7200, the world’s first true tri – band router to market, allowing users to stream on multiple devices, share an entire 4k HD movie in minutes, and send thousands of photos and songs from one device to another in minutes.

The GUI, displayed on a big screen at the TP Link exhibition, showcased a real-time speed comparison of transfer rates for various file sizes and media, highlighting the blazing fast speed of the Talon AD7200 compared to existing connection speeds, which could be paused on demand to play an integrated technology demo video.


Puradigm: Fresh and Clean Solutions

Puradigm offers proactive air & surface solutions through a host of products that each contain Puradigm’s ingenious new technology. We always look forward to providing solutions and strategies to companies such as Puradigm as we get a first hand introduction to the superiority of the product and how this will make a difference in people’s lives. We’ve got one of their systems cranking away in the office to keep everyone here breathing easy and staying healthy.

After learning everything we could about the technology and the company, it was time to begin the leg work on introducing Puradigm into the marketplace with a complete branding package. A branding guidebook for Puradigm was crafted to drive digital and print materials, including a logo, type guidelines, color usage, and pages after pages of how to treat the brand. The style guide then paved the way for the Ninthlink team to implement further services such as sales sheets and brochures, 3D renderings of Puradigm products, video production, a total website solution, and a multitude of sales support. We’re excited to show you how we built the look and feel of Puradigm from the ground up. Watch out for a case study in our work section soon.


Cyber Security Just Got a Little Easier

You’re walking back into the office after a relaxing lunch break, take a seat at the desk, and wake your computer back up. “Oh no, this can’t be…” you mutter to yourself. But, yes – catastrophe is rapidly unfolding amongst the glowing luminescence of your monitor. The most critical systems that you’re in charge of managing are being attacked hundreds of times with each passing minute. Tens of thousands of threats against your delicate infrastructure all went down while you were chomping on a burger. Instigate panic mode – all systems check for emotional break down. This is the world series of nightmares that you knew may one day leech into your life when you decided to become a Cyber Security Manager.

Sounds kinda stressful, right? Well that’s exactly the type of situation that we take into mind when it comes to UX design and development. How is John Q Security Manager going to turn into a hero this very minute instead of curling up into a ball in the corner of his office and sucking his thumb? It comes down to rifling his way through the security software and taking all necessary actions when seconds count. And that’s how we approached a redesign to the Tritium Cyber Security Software. The team is now in the midst of building and refining solutions for Tritium and looking forward to creating some heroes. User testing and further refinement are coming up in the pipeline, so check back soon for a case study of how we approach such consequential design and development matters and the User Experience solutions that make the difference. If you are experiencing a problem with your computer Computer Repairs North Lakes can fix any computer problem your having, just give them a call.