• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Remember Lenny

Writing online

  • Portfolio
  • Email
  • Twitter
  • LinkedIn
  • Github
You are here: Home / Archives for 2013

Archives for 2013

WordPress deployment using Capistrano

March 3, 2013 by rememberlenny

Acquinity Interactive hired me

I was recently hired by a marketing company to help them rebrand their digital presence. While this word is loaded with meaning, they wanted me to help them make a new website. The process is allowing me to start a development process from the complete beginning. Most interestingly, Im able to do things the right way.

Why WordPress?

I decided to use WordPress as the framework for their website. As a company of more than 250 employees, they need something that can be easily managed by otherwise untrained individuals. A straightforward CMS like WordPress is perfect for this job. For me, I prototype the website using Foundation from Zurb, then with the creative director, I find the right “style” of the website. Once we get past deciding the technical details, I can just go into WordPress and make page templates that fit out prototyped site. By using WordPress, I know that once I get past the html/css prototypes, I can translate the pages into php template files that will be populated from the administrative panel.

Why Capistrano?

This is a good question. People who think of WordPress either think of the SaaS version (wordpress.com) or blogs. Most people don’t consider it requiring a development process or a deployment strategy. Personally, I hate wasting time on things that don’t need to have time wasted on. I love to learn something new, but if I can find out how to automate a process, I’m going to take the initial time to set it up. By automating the deployment process, I know I can have consistent development environments.

Capistrano is a Ruby based package that runs SSH commands. Its largely used with Rails applications to manage various development environments (local/staging/production). Its great because at a touch of cap deploy you have your website up and running. Better yet, if you find out something broke, you just just cap deploy:rollback. In short, it’s pretty amazing because no longer do you need a designated “deployment” person. Instead, you can take time before your project begins to have the deployment strategy set up.

Why do you need development environments?

I won’t go to much into this because it’s one of the basic tenants of web development. Have a place where you develop (local), have a test environment where the site is as close to live without being live (testing), and have a separate place to have a autonomous production environment which will not be disrupted. One of the issues with these environments is that you have different files that you may be changing, but are not consistently updated.

You don’t want to screw up a site when other people may be using it. In the worst case scenario, you have files that you are working on a live site. Maybe you use the WordPress code editor, or maybe your using an FTP program to just edit the files directly on the server. In this situation, if you have a boo-boo, but don’t know whats wrong, you could lose traffic and confuse users.

In a slightly better situation, you have a local development environment and a production server. This is pretty normal. You might make your changes to your WordPress theme via a local server. You make sure the files are working and the visuals render properly. Once you like the final product, you will push the updated files through FTP. If you are really good, you will update the files via SSH.

The first example (aka cowboy coding) is all bad. The second example is not so obvious for some people. To explain most basically, FTP is very slow and error prone. Its not impossible to use FTP for site management, but its very likely that batch uploads will result in significant failed files. Yes, you can always make sure the files work by looking through your log. The point is you want to find a solution that doesn’t have any problems.

Enter Capistrano

Capistrano lets you have your local environment mirrored in other places. You can set certain folders that are not mirrored (i.e. file uploads, config files, etc), so that your updates to the site are fast and targeted. Capistrano uses SSH and Git to create your extended servers. By setting up Capistrano, you just need to develop using basic version control methods. If you already use Git normally, Capistrano is perfect for you.

Setting up Capistrano is a bit difficult for non-Ruby developers (aka me). There is some syntax that takes getting used to, but once you figure out the gist, its a walk in the park. Theres nothing more fulfilling than working at something that seems so foreign and finally seeing it work.

The tutorial I used to setup my server were by Konstantin Kovshenin from Automattic. The lists that I found most useful are below.

Deploying WordPress with Capistrano

Deploying wordPress with Capistrano Part 2: Staging Servers, Tagging & Database Security

Deploying WordPress with Capistrano Part 3: Backing Up and Restoring MySQL

Additionally, the Capistrano website has a series of links for using Capistrano on WordPress services.

http://capistranorb.com/

Filed Under: Uncategorized

Yeoman EADDRINUSE error fix

March 2, 2013 by rememberlenny

Yeoman

I recently fell into the bandwagon of Yeoman. After spending time with Peepcode screencasts to deepen my understanding of jQuery, javascript and MVC frameworks, I decided TDD and Grunt were crucial to m y development process. Having people like Chris Coyer and Paul Irish on my radar made me finally fess up and get Yeoman running locally.

Getting Running

Issue with running Yeoman is initially my allergic reaction to automated terminal commands. I am not always fond of seeing foreign words run by my command line, but I try my best to understand what they are doing.

Grunt installs itself when you run Yo Webapp. Theres little you need to do to have working scaffolded application with TDD ‘infrastructure’ in place (aka Mocha, Grunt, JSLint, etc). When you follow the directions from Yeoman.io, its easy to get the web app running

Problems

I started having problems when I wanted to run Grunt server. When I ran Grunt alone, the process ran without any problems. For some reason, when I tried to test the server, Grunt would hang up on LiveReload. Specifically, I got this message:

Running "server" task

Running "clean:server" (clean) task

Running "coffee:dist" (coffee) task
>> Destination not written because compiled files were empty.

Running "compass:server" (compass) task
Nothing to compile. If you're trying to start a new project, you have left off the directory argument.
Run "compass -h" to get help.

Running "livereload-start" task
... Starting Livereload server on 35729 ...

... Uhoh. Got error listen EADDRINUSE ...
Error: listen EADDRINUSE
    at errnoException (net.js:769:11)
    at Server._listen2 (net.js:909:14)
    at listen (net.js:936:10)
    at Server.listen (net.js:985:5)
    at Server.listen (/Users/lkbogdonoff/sites/portfolio/node_modules/grunt-contrib-livereload/node_modules/tiny-lr/lib/server.js:133:15)
    at Object.startLRServer (/Users/lkbogdonoff/sites/portfolio/node_modules/grunt-contrib-livereload/lib/utils.js:21:11)
    at Object.module.exports (/Users/lkbogdonoff/sites/portfolio/node_modules/grunt-contrib-livereload/tasks/livereload.js:44:20)
    at Object.task.registerTask.thisTask.fn (/Users/lkbogdonoff/sites/portfolio/node_modules/grunt/lib/grunt/task.js:78:16)
    at Object.Task.start._running (/Users/lkbogdonoff/sites/portfolio/node_modules/grunt/lib/util/task.js:282:30)
    at Task.runTaskFn (/Users/lkbogdonoff/sites/portfolio/node_modules/grunt/lib/util/task.js:235:24)

I posted a bug report to the Yeoman Github repository here and pinged sindresorhus. Within a day, another user replied on the Github issue thread explaining he had the same issue. Similarly, Sindre Sorhus also pitched in to help.

Solution

Eventually, I didn’t figure out what would solve the problem. I found a stop-gap measure which lets me continue running grunt server and have a local copy run without issues.

In Grunt.js, I needed to remove the line calling livereload-start. I did this by changing the grunt.task.run like this:

grunt.registerTask('server', function (target) {
    if (target === 'dist') {
        return grunt.task.run(['build', 'open', 'connect:dist:keepalive']);
    }

    grunt.task.run([
        'clean:server',
        'coffee:dist',
        'compass:server',
      //'livereload-start',
        'connect:livereload',
        'open',
        'watch'
    ]);
});

Reflection

Even through I had googled portions of the error code in hopes of finding someone with a similar situation, there were no people with my exact situation. As a result, I thought about updating my Gems, Command-Line Tools and various brew packages. The Github issues response time was great. I’ll keep trying to get a better understanding of how to use Yeoman. For the time being it works!

Filed Under: Uncategorized

Soka Education Conference 2013: Day 1

February 17, 2013 by rememberlenny

“I feel like we are dueling with lightsabers” -Spady

Filed Under: Uncategorized

Conclusion from the Soka Education Conference Paper

February 11, 2013 by rememberlenny

I wrote a paper titled “Soka Education and Digital Education Technologies: Massively Open Online Courses,” for the 2013 Soka Education Student Research Project conference. The following section is the conclusion.

Conclusion

Soka education’s philosophical framework for teaching and learning is appropriate for the emerging to the newly emerging educational technology field. This papers goal was to help draw attention to a field that is quickly emerging with good intentions. The growth and social cause makes it attractive to both educators, entrepreneurs, and investors. Having such a great impact on the students, it must be carefully traversed. In references to evidence oriented progress, Makiguchi states:

“We must strictly avoid following ideologies of uncertain origin that cannot be substantiated by actual proof-even if they may be the most time-honored tradition-and thereby sacrificing the precious lives of others and ourselves.”

The education technologies too must be scrutinized to insure they are being implemented for the correct reasons. While MOOCs and other tools may benefit schools in reducing costs and increasing profits, the fundamental question should revolve around how they improve a students learning opportunity.

The digital technologies emerging in the education space are seeking to improve student-centered learning opportunities, but the educational technology space is not new. In the past five years, investors funding emerging private educational technology enterprises has quadrupled. These investments are spurring ventures such as MOOCs, but are still building profit-seeking entities. As a result, the driving forces behind Soka education are invaluable for reflecting on the purpose of education technology companies. Traditionally disruptive technology companies must be extremely careful in their disruption of existing educational markets. While emerging digital technologies can undoubtedly offer value to improving student experiences, many systems are already healthy.

The MOOC field is targeted at student-centeredness in a way that is inline with Soka Education. Just as the MOOCs themselves are not innately good or bad, their application must be continually considered. Companies like Udacity and Coursera are already holding classes that are eligible for actual college credit in American universities. The MOOCs are will help colleges reduce the cost of classes, expand course selection for students, and continue growing the discussion on the application of digital technology to education. The digital tools redefine “student-centeredness” by allow students to personalize their learning experiences in ways less prone to budget and institutional capacity.

Future Research

Future research should further analyze the following points from the perspective of Soka education: MOOC course rights, digital resource copyright clearance, hybrid teaching pedagogies, the usage of other multimedia tools for student learning, and the efficacy of video based learning materials. These topics could each be the basis for extensive research to further the field of student-centered education using digital technologies.

Filed Under: Uncategorized

Digesting Reads | The Trial

February 8, 2013 by rememberlenny

“The Trial” Kafka

Starting off with the face that I needed some New York in my life. Digging the people, the architecture, the little coffee shops and busy subways.

First two chapters.

Kafka writes The Trial in a slight mysterious plot line that Im not used to reading. Reading the news and twitter streams has made me expect the core of the manner in a short burst. The Trial lays out a plot line by painting a clear picture and scene. The scene is filled with distinct emotional expression and tension, but there are no defined characters or causes. In a buddhist explanation, The Trial describes the world through effects, rather than causes.

Home invasion

The book begins with an abrupt awakening of the main character. Two men disrupt K. from his morning regime of breakfast and preparing for work. Instead, he is observed and kept from leaving his room. He is arrested.

The arrest is not explained to the reader or the main character and unfolds into the dangers of a hierarchical authority system. The figures arresting K. do not know why he is being arrested, but feel quite justified in their restriction of K.’s freedom. The invasion of privacy, disruption of personal space, and disregard for another’s humanity is seen in so many facets of society. The authority figures are not alone in their expression.

K., who hopes to reclaim his dignity, seeks answers. After being detained in his own home, he encounters the figure of higher command who personally interview the detainee. K., who continues seeking the cause for the injustices of the morning, encounters yet another response absent of reason. The invading figures freely roam K.’s home and declare their departure.

Court appearance

Forced to face his day without comprehending the complete background of the morning’s events, K. braves the rest of his day at work. Left only with a notion that he is expected to appear in court, he is forced to make assumptions as to his appearance date. Again, lacking all information to help understand the situation, K. decides to make his way to the courts on the first potential day court gathers.

Finding his way to the courthouse is no simple task. K. wanders the neighborhood and buildings near the courthouse, hoping to glimpse upon the place of his belonging. K. discovers the courthouse only too late and is forced to stand trial the moment of his arrival. Again, no explanation, he is placed in front of, what seems to be a divided courthouse.

Giving his all, K. argues for the injustices he is forced to undergo. Again, little understanding behind the disruption’s cause makes the argument one of unwarranted personal invasion.

Realm of foreign rules

Throughout K.’s series of events, the reader is left to wonder how easily the same events could happen to themselves. K. is a everyday well respected citizen. There is little that he did to provoke these events. More so, he seems to do everything in proper order to understand the dilemma, but is given no regard.

Replace K.’s story with any individual, young or old, and The Trial reflects their own experience in a judicial system. When expected to defend oneself in a realm of foreign rules, it matters little that there is any reason at all. The senselessness of the book’s plot captures closely the “in the moment” activity one is forced to experience in any mode of heavy jurisdiction.

The digestion of events is difficult in foreign systems of operation. More so, in moments of extreme consequence, the notion of clear reflection is nearly impossible.

Filed Under: Uncategorized

MOOCs

February 7, 2013 by rememberlenny

Massively Open Online Classes

One of the exciting innovations for education is the Massively Open Online Classrooms that colleges around the world have begun to offer. While the idea of online classes or distance learning is not a new phenomena, the process of using well recognized brand name schools to widely distribute lessons is new. Companies such as edX, Coursera, as well as a number of other private companies are striking partnerships with colleges to offer their courses online. The partnership universities, such as Harvard, MIT, and Berkeley, are offering completely free courses to anybody with an internet connection. These courses are a compilation of recorded lectures, quizzes, and assignments. The lectures are sometimes actual recorded in-class lectures, from the hosting university. Other times, courses are recorded solely for the purpose of the MOOC course. The method of distribution raises questions of how beneficial the MOOCs are for student’s learning experience.

University’s motivation

The motivation behind universities developing online courses are not always the same as the motivations behind students seeking quality education. While presently, the popularly acclaimed MOOCs are offering completely free courses, there is no question that future profit motives exist. A university’s costs incurred for holding a online class is exponentially smaller than that of a actual classroom. The value created by a teacher is expanded when effectively able to teach tens and thousands of students rather than hundreds. Additionally, the number of students a teacher is able to serve is no longer restricted per the classroom size. Oppositely, this shift in the ability for a teacher to be free of classroom size restrictions may be the balance needed to help improve teacher salaries. The ability for a teacher to teach a larger group of students can allow teachers to be paid respective to the teaching ability. Regardless of the motivation, the practices used by these online courses have historically not been equivalent to in-class lectures or lessons.

The pedagogy behind MOOCs

The MOOC courses are currently based on pedagogically proven methods to engage the student in online learning environments. The online video lecture classes are interspersed with quizzes between topics, evaluating if students understood the core content as they are learning. Additionally, contrary to popular belief, the online courses encourage student interaction in the classes. Discussions, peer-grading, as well as in-class group projects are common parts of the classes. Learning platforms, such as Coursera and edX have created discussion threads for every quiz. The discussion threads allow students who do not understand a quiz to ask questions, while more experienced students can help answer the questions.

Social aspect

While the courses themselves are taken alone, they are not completely socially isolated. The opportunity for discussion spurs vibrant conversations based on the lecture content. In an attempt to reduce the isolation of online classes, the courses encourage students to engage with the classmates, rather than passively listening to the lecture. Similarly, nearly all the courses held by Stanford, on the Coursera system, require students to complete group projects for full class credit. The group projects require students to connect with other classmates, based on geographic proximity, and collaborate on a class topic related project. These various modes of quizzing, discussion boards, and in-person class projects are applying a variety of effective pedagogical methods to the online platfor.

Comparing to alternatives

Online learning compared to in-class or one-to-one tutoring raises questions of viability. While the method of one-on-one teacher is definitely of greater value to a student, it is many times an experience reserved for the few. gmailFalling costs of government subsidies for schools and growing number of students seeking to enter higher education are reducing the number of quality learning opportunities available for the majority of students. As a result, the question behind alternative to the one-to-one or small classroom learning experiences are natural. Without claiming that online classrooms are equal, we can confidently state that the value behind online classrooms is a question worth researchig.

Drive to hybrid

Online courses seek to discover and implement the highest quality teaching experiences. In 2010, the United States Department of Education issued a detailed report showing that online learning methods are, on average, at least as effective as face-to-face learning. The online courses seek to overcome the problem where students forget the concepts not learned because they do not review the content. By providing students with immediate feedback, through quizzes, students know whether or not they understood a concept. The method, referred to as Mastery Learning, was one of the methods shown in a seminal paper seeking to provide students in group learning environments a learning experience equal to that of one-to-one tutoring. Grounded in proven methods of pedagogy, the online courses and providers are seeking out teaching methods that are known to be the most effective for students. This could be thought of as a scientifically proven student-centered method.

Footnotes

edX Website

Coursera Website

Study posting Coursera’s incorporation documents explaining profit motive. Study from Gilfus Education Group

Evaluation of Evidence-Based Practices in Online Learning: A Meta-Analysis and Review of Online Learning Studies

The 2 Sigma Problem: The Search for Methods of Group Instruction as Effective as One-to-One Tutoring

Filed Under: Uncategorized

  • « Go to Previous Page
  • Go to page 1
  • Go to page 2
  • Go to page 3
  • Go to page 4
  • Go to Next Page »

Primary Sidebar

Recent Posts

  • Thoughts on my 33rd birthday
  • Second order effects of companies as content creators
  • Text rendering stuff most people might not know
  • Why is video editing so horrible today?
  • Making the variable fonts Figma plugin (part 1 – what is variable fonts [simple])

Archives

  • August 2022
  • February 2021
  • October 2020
  • September 2020
  • August 2020
  • December 2019
  • March 2019
  • February 2019
  • November 2018
  • October 2018
  • April 2018
  • January 2018
  • December 2017
  • October 2017
  • July 2017
  • February 2017
  • January 2017
  • November 2016
  • October 2016
  • August 2016
  • May 2016
  • March 2016
  • November 2015
  • October 2015
  • September 2015
  • July 2015
  • June 2015
  • May 2015
  • March 2015
  • February 2015
  • January 2015
  • December 2014
  • November 2014
  • October 2014
  • September 2014
  • August 2014
  • July 2014
  • June 2014
  • May 2014
  • April 2014
  • March 2014
  • February 2014
  • January 2014
  • December 2013
  • October 2013
  • June 2013
  • May 2013
  • April 2013
  • March 2013
  • February 2013
  • January 2013
  • December 2012

Tags

  • 10 year reflection (1)
  • 100 posts (2)
  • 2013 (1)
  • academia (2)
  • Advertising (3)
  • aging (1)
  • Agriculture (1)
  • analytics (3)
  • anarchy (1)
  • anonymous (1)
  • api (1)
  • arizona (1)
  • Art (2)
  • art history (1)
  • artfound (1)
  • Artificial Intelligence (2)
  • balance (1)
  • banksy (1)
  • beacon (1)
  • Beacons (1)
  • beast mode crew (2)
  • becausewilliamshatner (1)
  • Big Data (1)
  • Birthday (1)
  • browsers (1)
  • buddhism (1)
  • bundling and unbundling (1)
  • china (1)
  • coding (1)
  • coffeeshoptalk (1)
  • colonialism (1)
  • Communication (1)
  • community development (1)
  • Computer Science (1)
  • Computer Vision (6)
  • crowdsourcing (1)
  • cyber security (1)
  • data migration (1)
  • Deep Learning (1)
  • design (1)
  • designreflection (1)
  • Developer (1)
  • Digital Humanities (2)
  • disruption theory (1)
  • Distributed Teams (1)
  • drawingwhiletalking (16)
  • education (3)
  • Email Marketing (3)
  • email newsletter (1)
  • Employee Engagement (1)
  • employment (2)
  • Engineering (1)
  • Enterprise Technology (1)
  • essay (1)
  • Ethics (1)
  • experiement (1)
  • fidgetio (38)
  • figma (2)
  • film (1)
  • film industry (1)
  • fingerpainting (8)
  • first 1000 users (1)
  • fonts (1)
  • forms of communication (1)
  • frontend framework (1)
  • fundraising (1)
  • Future Of Journalism (3)
  • future of media (1)
  • Future Of Technology (2)
  • Future Technology (1)
  • game development (2)
  • Geospatial (1)
  • ghostio (1)
  • github (2)
  • global collaboration (1)
  • god damn (1)
  • google analytics (1)
  • google docs (1)
  • Graffiti (23)
  • graffitifound (1)
  • graffpass (1)
  • growth hacking (1)
  • h1b visa (1)
  • hackathon (1)
  • hacking (1)
  • hacking reddit (2)
  • Hardware (1)
  • hiroshima (1)
  • homework (1)
  • human api (1)
  • I hate the term growth hacking (1)
  • ie6 (1)
  • ifttt (4)
  • Image Recognition (1)
  • immigration (1)
  • instagram (1)
  • Instagram Marketing (1)
  • internet media (1)
  • internet of things (1)
  • intimacy (1)
  • IoT (1)
  • iteration (1)
  • jason shen (1)
  • jobs (2)
  • jrart (1)
  • kickstart (1)
  • king robbo (1)
  • labor market (1)
  • Leonard Bogdonoff (1)
  • Literacy (1)
  • location (1)
  • Longform (2)
  • looking back (1)
  • los angeles (1)
  • Machine Learning (13)
  • MadeWithPaper (106)
  • making games (1)
  • management (1)
  • maps (2)
  • marketing (4)
  • Marketing Strategies (1)
  • Media (3)
  • medium (1)
  • mentor (1)
  • message (1)
  • mindmeld games (1)
  • Mobile (1)
  • Music (2)
  • Music Discovery (1)
  • neuroscience (2)
  • new yorker (1)
  • Newspapers (3)
  • nomad (1)
  • notfootball (2)
  • npaf (1)
  • odesk (1)
  • orbital (14)
  • orbital 2014 (14)
  • orbital class 1 (9)
  • orbitalnyc (1)
  • paf (2)
  • paid retweets (1)
  • painting (1)
  • physical web (1)
  • pitching (2)
  • popular (1)
  • post production (1)
  • Privacy (1)
  • process (1)
  • product (1)
  • Product Development (2)
  • product market fit (2)
  • Programming (6)
  • project reflection (1)
  • promotion (1)
  • prototype (17)
  • prototyping (1)
  • Public Art (1)
  • Public Speaking (1)
  • PublicArtFound (15)
  • Publishing (3)
  • Python (1)
  • quora (1)
  • Rails (1)
  • React (1)
  • React Native (1)
  • real design (1)
  • recent projects (1)
  • reddit (3)
  • redesign (1)
  • reflection (2)
  • rememberlenny (1)
  • Remote work (1)
  • replatform (1)
  • Responsive Emails (1)
  • retweet (1)
  • revenue model (1)
  • rick webb (1)
  • robert putnam (1)
  • ror (1)
  • rubyonrails (1)
  • segmenting audience (1)
  • Semanticweb (2)
  • Senior meets junior (1)
  • SGI (1)
  • Side Project (1)
  • sketching (22)
  • social capital (1)
  • social media followers (2)
  • social media manipulation (1)
  • social media marketing (1)
  • social reach (5)
  • software (3)
  • Soka Education (1)
  • Spatial Analysis (2)
  • spotify (1)
  • stanford (2)
  • Startup (21)
  • startups (7)
  • stree (1)
  • Street Art (4)
  • streetart (5)
  • stylometrics (1)
  • Technology (1)
  • thoughts (1)
  • Time as an asset in mobile development (1)
  • Towards Data Science (4)
  • TrainIdeation (42)
  • travel (1)
  • traveling (1)
  • tumblr milestone (2)
  • twitter (1)
  • twitter account (2)
  • typography (2)
  • unreal engine (1)
  • user behavior (1)
  • user experience (3)
  • user research (1)
  • user testing (1)
  • variable fonts (1)
  • video editing (2)
  • visual effects (1)
  • warishell (1)
  • Web Development (8)
  • webdec (1)
  • webdev (13)
  • windowed launch (1)
  • wordpress (1)
  • Work Culture (1)
  • workinprogress (1)
  • zoom (1)