Category Archives: geek

2015-04-08 Emacs Lisp Development Tips with John Wiegley

You can find John Wiegley on Twitter (@jwiegley) or at http://newartisans.com/.

0:00:00 Paredit mode. Start with it from day 1! Matching pairs of parentheses, won’t let you delete one without the other. Inserts appropriate newlines, too
0:03:56 Emacs as a Lisp environment. (Also, Helm is what’s responsible for the display.) Evaluating a function makes it available in the global scope, which has all these functions and commands you can do. This makes it easy to iteratively develop your functions, because you can just execute things directly.
0:05:08 Without (interactive), you can’t call functions with M-x. You can use M-: or put the call in your scratch buffer.
0:06:00 command-log-mode
0:06:47 pp-eval-last-sexp. Check out http://github.com/jwiegley/dot-emacs for other config things
0:07:14 debugging. e to evaluate within the current context. Also, stepping, quit.
0:08:09 Edebug with C-u C-M-x. Interactive debugging. SPC moves you forward, one Lisp form at a time. It shows you results in the minibuffer. You can descend into Lisp forms or go into functions. ? shows keybindings. Check out the Emacs Lisp chapter on EDebug, highly recommendeg.
0:09:25 You can also use the (debug) form to go to the debugger.
0:10:26 eldoc: Seeing arguments in the minibuffer as you type, because no one remembers all the arguments anyway. eldoc-mode, or add (turn-on-eldoc-mode) to your config.
0:11:30 What functions should you call in the first place? What concepts? Emacs predates many standard terms, so that’s why things are a little confusing. Ex: “frames” and “windows” are not what you might think they are. OS window = frame. Area within Emacs = window. Opposite of HTML. Use the Emacs tutorial C-h t.
0:13:04 Read the Emacs Lisp intro, which you can get to with C-h i (which lists the manuals that are available). Read the Emacs Lisp manual too.
0:14:03 Other weird terms: point, mark, marker. (point) vs (point-marker).
0:15:35 C-h f (describe-function) shows the help for the function. Nearly all functions you’ll probably call are documented well. Lots of options. Check out C-h f for interactive, for example.
0:17:17 C-h v (describe-variable).
0:17:46 More in-depth documentation: C-h i, go to the Emacs Lisp manual, then use i to view the index.
0:18:22 info-lookmore shows you the Info documentation for the symbol under point. Works for other Lisps too (ex: Common Lisp)
0:19:46 Sanity-checking paired parentheses with M-x check-parens. Handy for adding to your after-save-hook in Emacs Lisp mode.
0:20:40 Paredit editing capabilities. Ex: C-k kills the current sexp. paredit-raise-sexp replaces the parent sexp with the following sexp. slurping and barfing. Barfing – spitting out an element from the list form. C-{ or C-} (with suggested keybindings). C-( and C-) are slurping, which pulls forms in. Works for strings, too.
0:22:38 Maximum barfage and slurpage. Useful for slurping everything in, for example. paredit-slurp-all-the-way-forward.
0:24:13 redshank (companion to paredit) for refactoring. Ex: redshank-condify-form converts an if to a cond for when you realize you’ve got more than two conditions.
0:25:05 M-1 M-( surround the next one thing with parens
0:25:25 redshank: wrap a let, change if to a when, etc.
0:25:52 C-h k (describe-key) shows what a keyboard shortcut or menu item will do.
0:27:26 Took a while to get used to paredit, but you eventually get into the zen of paredit.
0:27:54 Linter – M-x elint-current-buffer. Loads every module that your code depends on (so the first time is slow), and then shows you style notes.
0:28:50 C-q for manually inserting parentheses
0:29:10 Helm, which shows you all the other stuff that matches your query. Lets you select by regex, multiple patterns, etc. Much nicer and more interactive.
0:30:29 Profiler M-x elp-instrument-function, then call the function, then elp-results will show you the time it took to execute. Results aggregate, and are reset when you call elp-results.
0:32:30 Measuring memory consumption. Also, internal representation of lists. reverse vs. nreverse. Like nconc, nreverse, setcar, setcdr. This can greatly speed up your code, if you can avoid using the garbage collector. EmacsWiki – memory-use-counts, but not particularly helpful? Another package that extends the Emacs Lisp profiler? Avoid premature optimization.
0:38:55 elint and flycheck? flycheck’s designed for external processes, so that might be a challenge. Possibility: use async to spawn another Emacs? Doesn’t seem to be available yet.
0:40:40 ert
0:48:11 testcover, coveralls.io, undercover.el
0:48:13 Read Emacs Lisp manual, etc.
0:48:20 Creating a mode. You don’t have to make it from scartch – start by copying someone else, and then strip away everything you don’t want.
0:49:58 checkdoc – checks the style of your documentation strings.
0:51:30 defining a minor mode
0:56:08 when to define a major mode – structure of your buffer

Laser cutting registration experiments and cutting long pieces of fabric

(aka Things Other People Probably Already Knew About the Hacklab Laser Cutter But That I Wanted to Figure Out =) )

For sewing purposes, I want to eventually be able to accurately cut pieces that are larger than the laser bed (22×18″). The approach that other people had recommended for large cuts is to laser-cut a piece of paper, then position material on top of it. This works really well for acrylic and other clear materials, but it’s a bit trickier with fabric.

I was curious about the following questions:

  1. Do the cutting bounds coincide with the mat if the grid has been removed? If so, then placing material would be much easier.
  2. Can you use registration markers to make the process of shifting opaque material easier?
  3. Can you build pauses into laser programs to make it easier to reposition material or adjust power?
  4. Do you need to keep stroke width in mind when setting the X and Y locations for paths in Inkscape? That is, when you set the X and Y, does it use the path (which is what’s used for cutting), or does it use the stroke width?
  5. Is the lowest leftmost position stable? That is, if you rehome the laser and then use the joystick to move it to the minimum X and Y the hardware will let it reach, does that position stay the same even if you repeat the process?

To explore these questions, I created an SVG that had

  • L-shapes to define the corners
  • a couple of crosshairs for shifting, and an additional reference line that could be checked against the X=0 line
  • two half-circles that would become one circle after shifting

Since Inkscape’s Gcode tools export the path names, I used Path – Combine to group related paths and the Object Properties dialog to rename them. This allowed me to edit the resulting Gcode, move the path for the second half-circle to the end of the file, and add an M0 pause before it. I taped paper down to cover the four corners. After processing the file with the sed scripts used to tweak things for our laser, I ran it.

Here are the results:

1. The cutting area does not coincide with the rulers or the mat.

I homed the laser and then touched off at the minimum X and Y positions that the hardware would let me reach. The lines I cut for the upper corners are slightly skewed away from the built-in ruler, which means that it cannot be used for alignment.

2. Registration marks allow for reasonable precision in large cuts.

2015-04-06 12.40.222015-04-06 12.36.01

The circle above is formed from half-circles, cut in two passes separated by a reposition. I started with two sheets of paper taped to the lower left corner: one to move, and one to act as a reference. After I made the first cut, I repositioned the top layer of paper so that the crosshair on the right was on top of the crosshair on the left and the reference line I cut was aligned with the lower left corner. Folding the quarters of the crosshair back helped me verify its position. I taped the top layer of the paper down and proceeded with the second cut. This simple registration process produced a cut that’s not completely accurate, but which is manageable for the kind of work that I want to do. It could probably be refined with additional crosshairs, boxes, or other registration shapes.

(Update: Boxes work wonderfully.)

3. You can use the M65 P0 and M0 operations to add a pause to your G-code program, but the program will be reset if you raise the lid of the laser.

The M0 operation pauses the program, and you can continue it by clicking on the pause button in the controller. However, when you raise the lid of the laser to reposition material, the controller loses the connection to the laser. After you reestablish the connection, the controller is no longer in pause mode, and you need to start the program from the beginning.

Because my G-code was relatively simple, I chose to re-run the program with zero power. When I reached the pause, I set the power to level 1 and continued with the program. This may be a good way to handle larger cuts if you want to keep the design in a single G-code file. Here’s a snippet showing the pause code.

M63 P0

(End cutting path id: upperleft)

M65 P0
M0

(Start cutting path id: secondhalfcircle)
(Change tool to Default tool)

M63 P0

M65 P0 turns off the laser immediately (instead of being synchronized with motion), and M0 pauses the program until it’s continued from the controller.

If you don’t want to pause and rerun, you can always split your cuts into separate G-code files. Dividing your SVG into layers makes it easy to select all the paths on a given layer before running the G-code export tool.

4. Inkscape takes stroke width into account when you move paths using X and Y, so be consistent about your positions.

If your stroke width is 1 px, then a line drawn on top of a 1″ grid from (0,0) to (0,2) will start at (-0.006″, -0.006″) and have a height of 2.006 inches. This can still be cut. If you move it to (0,0), the actual line itself will be offset by a tiny bit, although I’m not sure how much difference it would make when cutting. Anyway, when creating registration marks, make sure you have a consistent offset between your registration marks and the path to cut, and that you use a consistent stroke width (even if the laser cutter ignores that width). Make sure you turn off the default preference that scales stroke widths whenever you resize something (Edit – Preference – Behavior – Transforms – Scale stroke width, or use the fourth icon from the right of the top toolbar).

5. The lowest leftmost position appears to be stable.

If you home the laser, then use the joystick to move to the minimum X and Y position you can reach in the lower left, and you use the GUI controller to touch off at that point so that all coordinates are relative to that position, then your cuts will be in the same place each time. This appears to be true even after you rehome the laser and re-touch-off, and even after you turn off the laser and restart Linux EMC2. This means we could probably mark off the outside limits of the cutting area on the mat using something that’s laser-safe, and then people could use those as reference lines. On the temporary side, there’s taping down paper and using that as a guideline, which people are used to already.

Whee! So with the results above, I should now be able to make decently-precise long cuts in fabric…

2015-04-06 15.10.27 2015-04-06 15.09.58

MWAHAHA. Behold the power of the laser cutter. The pattern pieces are about 23″. This is the picture of a cut after the piece has been shifted so that the registration squares on the right of the fabric is over the registration squares on the left on my reference piece of paper. There’s a barely-perceptible jog in the line, and since that’s in the seam allowance instead of in a design, it’s totally okay.

All right! See files at https://github.com/sachac/laser if you want to explore.

Accurately tracing and cutting patterns makes the rest of sewing so much easier because you can go by the seam allowances. Since long cuts on fabric turn out to be Not That Scary, I can use this for cutting the pieces to sew together. For fabric that is harder to handle or laser-cut, I can use the laser to cut pieces that I can then pin to the real fabric for hand-cutting (since fabric patterns can be easier to handle than paper). Mwahaha!

Quantified Self: How can you measure freedom?

At a recent Quantified Self Toronto meetup, one of the participants shared his key values (freedom, health, happiness, purpose) and asked for ideas on how to measure freedom. I gave him some quick tips on how I measured:

  • Money:
    • Long-term freedom through a theoretical withdrawal rate: expenses vs net worth and investment returns
    • Short-term freedom for discretionary expenses: opportunity fund for tools and ideas, connection fund for treating people
  • Time, particularly discretionary time (my own interests and projects)

In addition to those two easy metrics, there are a few other things that contribute to a feeling of freedom for me.

2015-03-06b What makes me feel free - What can I measure -- index card #quantified #freedom #independence #feeling

2015-03-06b What makes me feel free – What can I measure – index card #quantified #freedom #independence #feeling

  • How often do I have to wake up to an alarm clock, or can I sleep until I feel well-rested?
  • Am I starting to be stressed because of commitments? Do I have to juggle or cut back?
  • Can I follow the butterflies of my interest/energy, or have I promised to do a specific thing at a specific time?
  • Can I share what I’m learning for free, or am I restricted by agreements or by need?
  • Am I getting influenced by ads to want or buy things that I don’t really need? Do I experience buyer’s remorse, or do things contribute to clutter? Is it easy to remember my decisions or my values in the din?
  • Do I have the space to enjoy a great relationship with W-?
  • Can I make the things I want? Do I have the skills to create or modify things?
  • Am I reacting or responding? How reflexive is my ability to see things in the light that I would like to see them in, and to respond the way I would like to respond?
  • Can I learn about what I’m curious about? Do I use it in real life?
  • Can I make small bets and learn from them?

I think it’s because I tend to think of freedom as freedom from stress and freedom to do things – maybe more precisely, to live according to my choices without having to choose between deeply flawed options. I’m in a safe, rather privileged situation, so I’m not as worried about freedom to live or move or speak or learn; those are more important freedoms, for sure! So with the definition of freedom I have, I feel pretty free. Based on my impressions from conversations with other people, I think I’m probably in the top 10% of freedom in terms of people I know. Or at least a different sort of freedom; I’m more risk-averse than some of my friends are, for example, so they’re freer in that sense.

2015-03-06a How can you measure freedom -- index card #freedom #independence #quantified

2015-03-06a How can you measure freedom – index card #freedom #independence #quantified

If you break down the abstract concept of freedom into different types of freedom, you can figure out which types resonate with you and which ones don’t. You might then be able to think of ways to measure the specific types of freedom you’re curious about, and that will help you get a sense of areas in your life that you may want to tweak.

Philosophy has a lot to say about freedom, so that’s another way to pick up ideas. The biggest freedom, for me – the one I most want to cultivate and keep – is the freedom that comes from choosing how I perceive the world and what I do in response. I like the freedom described in Epictetus’ Discourses. How could I measure this or remind myself about this? Since it’s entirely self-willed, I can keep track of whether I remember to take responsibility for my perceptions and responses and how easy it is to do so. I imagine that as I get better at it, I’ll be more consistent at taking responsibility (even if I realize uncomfortable things about myself) and that I’ll do it with more habit. I can also track the magnitude of things I respond to. I know that I can maintain my tranquility with small events, and I’ll just have to wait and observe my behaviour with larger ones.

What does freedom mean to you? How do you observe or reflect on it?

The balance between doing and improving – evaluating yak-shaving

A reader wrote:

… I came to realize that many Emacs users seem to spend a great deal of time learning about Emacs, tweaking it, and writing new extensions, rather than getting non-Emacs-related work done. Sometimes it feels as though heavy Emacs users actually get less done overall, if you consider only non-Emacs-related tasks. My question is, is it possible to get work done in Emacs, without most of that work being Emacs-related?

It got me thinking about skills or tools that can be used to improve themselves, and the balance between using and improving tools.

2015-03-15c Skills or tools that can be used to improve themselves -- index card #learning #bootstrapping

2015-03-15c Skills or tools that can be used to improve themselves – index card #learning #bootstrapping

Not all skills or tools can be used to improve themselves. I’m learning how to sew, but that doesn’t lead to making my sewing machine better (aside from fiddling with the dials).

Here are some skills that can be used reflexively:

  • Philosophy asks questions about good questions to ask
  • Learning about learning helps you learn more effectively
  • Woodworkers and machinists have a tradition of making their own tools
  • 3D printers can print parts for their own models
  • You can program tools to help you program better: testing, version control, project management, etc.

Although making your own tools takes time, here are some advantages of doing so instead of buying them off the shelf:

  • You understand the internals better, and you can appreciate the subtleties
  • You can customize it to fit the way you work
  • You can create different variants for greater flexibility. Mass customization can’t anticipate or cost-effectively provide all the different types of things people may want.
  • As your skills and needs increase, you can create better and better tools for yourself.

Many programmers spend time deliberately improving their toolkits; if they don’t, they stagnate. At the basic level, people try programs or frameworks that other people have created. The next level might be scripting things to work together. A third level might be writing customizations or extensions, and a fourth level might be creating entirely new tools or frameworks. Beginner programmers might start at the first level of reusing other people’s code, but wizardly performance often involves a mix of the other levels.

So the question is: How can we balance doing things and improving things?

No one can answer this for you.

Me, I tend to avoid hard deadlines and I do things faster than people expect them to be done, so I have plenty of leeway to improve my tools – which helps me be even more effective, so it’s a virtuous cycle.

You’ll need to find your own balance. You might get urgent stuff out of the way first, and then figure out how to balance smaller requests with investing in capabilities.

Here’s something I put together to help you figure out where you might be in terms of balance. Alternatively, if you’re thinking about whether to pick up a skill or tool that can be used to improve itself, you can use this to evaluate what you read from people sharing their experiences with the tool. Can they find a good balance for themselves, or are they frustrated by the challenges of getting something to work?

2015-03-16a The balance between using and improving tools -- index card #learning #bootstrapping

2015-03-16a The balance between using and improving tools – index card #learning #bootstrapping

  • “I have what I need in order to work.” This is the basic scenario. People focus on doing things instead of improving things.
  • I can keep pushing, but performance is dropping, so I should invest time in maintenance.” It’s like the way a knife or a saw dulls over time. When you notice diminishing returns, it might be good to invest some time in maintenance. It’s not an urgent need, but it can pay off.
  • I’d better take care of this now before it becomes a problem.” This is like maintaining a car or taking care of your health. A little time now can avoid big problems later.
  • Grr, it’s broken. I have to fix it before I can work.” If you let things go for too long, or if you’re working with something finicky, you’ll be forced into maintenance mode. For example, some 3D printers require a lot of fiddling. Watch out for this scenario.
  • It’s fine the way it is, but I know I can make it better.” The way you’re currently doing things is okay, but you know (from your experience or from what you’ve read of other people) that you can invest a little time to work more effectively. You might even know the return on investment. It’s easy to decide whether you should just go ahead with the status quo or invest the time in improving.
  • It’s fine the way it is, but I think I can make it better.” The way you’re currently doing things is okay, but you have some ideas that might make it even better. If you think those ideas might be worth it, it might be good to give yourself a time limit for exploring those ideas so that you don’t get distracted. Alternatively, you can save it for a slower time.
  • I’m waiting or stuck, so I might as well work on tools.” Maybe you’re waiting for feedback from someone else. Maybe you’re waiting for programs to compile or tests to pass. Why not spend a little time exploring how to make your tools a little better?
  • I’m doing this for fun/learning.” Tool improvement can become more enjoyable than some of the other ways you used to like spending time. For example, you might find yourself wanting to watch a screencast or try out a tweak instead of watching TV or browsing random sites on the Internet. You don’t have to completely replace other activities, you just have to shift a little time from things that have less value to you.
  • I can’t write about my actual work, but I can write about this.” If you’re wondering about yak-shaving propensity based on the blog posts you’re reading, consider: do people write about their improvements instead of the work that they’re doing because their work is confidential or hard to explain? Maybe they think blog posts about improvements are more interesting. Maybe they’re writing about improvements in the process of figuring things out (which in an excellent process, by the way). All these things can skew your perception of how much time people spend doing things versus improving things, and how much they accomplish within that time.

In terms of Emacs, these things mostly apply to me:

  • “I’m doing this for fun/learning” – Emacs tickles my brain, and the community is wonderful.
  • “I can’t write about my actual work, but I can write about this” – I suppose I could write more about the other stuff I’m interested in (sewing? cooking?), so there’s that. However, the consulting stuff is covered by agreements, and that’s a small fraction of my life anyway.

I assume other geeks are rational, especially if they have a lot of experience with it and other tools. Therefore, if people spend time tweaking (while avoiding the consequences of low performance), I assume it’s because they see the value of doing so (whether the pay-off is certain or not). On the surface, an effective person’s behaviour might resemble an ineffective person’s behaviour – six hours sharpening the saw for two hours of work, or six hours procrastinating and two hours of cramming? But if you look at:

  • if they get stuff done
  • whether other people are happy with their performance, or if they generally appear successful in their endeavours
  • how happy they are about the process

then you can get a better idea of whether it’s working for them.

As you think about your own balance or read other people’s blogs, can you identify what scenarios you and other people might resonate with? Am I missing any that I should add to the list? Please comment below!

Emacs Hangout 2015-03-18 show notes

We chatted about Org coolness and workflows; learning Emacs and deliberate practice; speech recognition; alternate layouts.

Event page: https://plus.google.com/events/cbj3rg26d8j9ifaiff5uq00ncr4

What’s this Emacs Hangout thing about? This is an informal way for Emacs geeks to get together and swap tips/notes/questions. You can find the previous Hangouts or sign up for the mailing list at http://sachachua.com/blog/tag/emacs-hangout/ . The next Emacs Hangout will be on April 15, 2015, at 8 PM Toronto time (12 midnight GMT): https://plus.google.com/events/c3igul0rj6cfc1qbcar91lrcj0s Want to get notified about upcoming hangouts? You can sign up for notifications at http://eepurl.com/bbi-Ir .

Experimenting with org-timer. Times are approximate, despite the seeming precision. =)

  • 0:00:12 Intros
  • 0:04:22 Howard – Prettify Your Quotation Marks
  • 0:06:37 Org Mode Spreadsheets
  • 0:12:44 org-aggregate
  • 0:12:50 summing up tables
  • 0:15:38 Hiding things from export with :PRIVATE: .. :END:
  • 0:16:30 Navigation
  • 0:17:10 Relative line numbers
  • 0:19:32 Org prettiness: org-bullets
  • 0:20:51 EMagicians Starter Kit
  • 0:26:23 More table stuff
  • 0:27:32 Org Mode workflows, reasons to use Org
  • 0:28:16 Org to replace Markdown, executable code samples, etc. Literate programming. Attachments.
  • 0:29:34 Org tables
  • 0:30:11 Literate programming, technical notes
  • 0:30:49 Links
  • 0:31:54 Keeping all your notes, reference information, and so forth
  • 0:32:25 As a simple database
  • 0:34:59 Leo’s demo: Org task management, scheduling, linking, refiling, org-pomodoro (with sound and tweaks) and time reporting
  • 0:44:47 clock reports, clocktable
  • 0:46:09 C-u org-refile
  • 0:47:53 tagging strategies (prefixes, @ for contexts, etc.), search
  • 0:49:45 using org-drill
  • 0:51:19 scheduling vs using agendas
  • 0:51:34 org-habits for visualizing consistency
  • 0:54:34 erc and other IRC clients
  • 0:55:20 devices
  • 0:56:47 Other apps like Wunderlist – tasks to synchronize; work/home separation
  • 0:59:44 org-trello – close, but no cigar
  • 1:00:26 orgzly
  • 1:01:44 MobileOrg =( hasn’t been updated in a long time, etc.
  • 1:03:15 org-timer, meeting notes, colouring neato
  • 1:05:37 spacemacs as a way for Vi converts to try Emacs out
  • 1:06:47 keybindings – rebind lots, or not? a few frequently used ones? ErgoEmacs?
  • 1:10:23 hydra, key-chord, prefixes, see Sacha’s config for making key-chord more specific
  • 1:12:52 pair-programming? tmux and different modes?
  • 1:13:09 httpd, impatient-mode, multi-tty?
  • 1:18:04 deliberate practice and learning new things
  • 1:18:41 putting new things in a temporary section (1 month)
  • 1:19:02 reading blog posts (ex: planet.emacsen.org), reading configs, doc.norang.ca/org-mode.html
  • 1:21:29 cheat sheet
  • 1:22:14 another vote for a staging area (experimental.el)
  • 1:24:35 blogging is awesome, org2blog, etc.
  • 1:28:59 edebug is a great way to explore how things work
  • 1:31:39 watching over people’s shoulders when it comes to Emacs; Hangouts, virtual conference? Moderators are helpful. Handing a virtual microphone out – moderator names someone who can then check in, ask the question, etc. monitoring comments. (Could use help reaching out to speakers, organizing schedule, etc.)
  • 1:34:55 Speech interface: less navigation, just commands. Better speech integration – requires C, or can be done with Emacs Lisp? What you’re operating on is different. Intent (what has to happen) vs action (what to do), audio wizards with contextual grammar. Pretty far out still. Translating dictation-friendly names to code-friendly names and vice versa.
  • 1:42:02 Quick wins: accelerators, focusing on intent
  • 1:44:19 Context
  • 1:46:03 LaTeX for math notes? Export to LaTeX or HTML with images, inline images. LyX if you need WYSIWYG? Snippets can help you work at a higher level (instead of memorizing a lot)
  • 1:48:52 Alternative keyboard layouts and keybindings; also, typing less (abbreviations, expansions, thinking, etc.), Kinesis
  • 1:53:57 Speech recognition. Saying things again instead of editing.
  • 1:58:06 Suggestions – more Org workflows, chatting leading up to the next Hangout, asking for help

Text chat:

Philip Stark 8:04 PM This one?
Cameron Desautels 8:04 PM yup
Howard Abrams 8:04 PM Yes!
Cameron Desautels 8:04 PM If you guys haven’t seen this, we should all try to contribute and help out: https://github.com/sachac/emacsconf2015/blob/gh-pages/index.org
me 8:08 PM (Dan: I muted you because of background noise, but you can always unmute yourself when you’re ready to ask a question )
Jonathan Hill 8:10 PM does anybody know how to full screen the hang out? I guess I could just full-screen chrome on the mac..
me 8:10 PM If you reduce your font size a lot, the main screen gets bigger, but let me just ask Howard to increase his text scale
Leo Ufimtsev 8:11 PM Btw, I came across an aggregator module: https://github.com/tbanel/orgaggregate allows sql-like aggregation for tables
Jonathan Hill 8:14 PM Howard, I’ve got a sidebar question about how you’re jumping around with the cursor seemingly arbitrarily when you can find a convenient spot to answer.
me 8:15 PM He might not see the chat while screensharing, so maybe you can ask out loud when there’s a gap
Cameron Desautels 8:15 PM Could be the mouse Though it took me a minute to realize that.
me 8:16 PM By the way, the nifty bullets on the headings are probably because of org-bullets.el, if you like that effect
Jonathan Hill 8:16 PM his modeline is gorgeous
Cameron Desautels 8:16 PM That’s likely powerline. https://github.com/milkypostman/powerline (Busted!)
me 8:17 PM <laugh> Ooh, relative line numbers
Cameron Desautels 8:19 PM I think I have some bad lag. Sorry about that. My ISP is terrible.
jason Peak 8:22 PM hi everyone, sorry I’m late
Leo Ufimtsev 8:23 PM I don’t think I’ll have time to prepare org-aggregator in this hangout. I can show a org-dot-emacs setup thou. Or some stuff on time-reporting
me 8:23 PM No worries!
jason Peak 8:24 PM yep
Philip Stark 8:26 PM how do you increase the font quickly?
Cameron Desautels 8:26 PM C-x C-=
Philip Stark 8:26 PM and decrease would be C-x C–?
Cameron Desautels 8:27 PM (text-scale-adjust) yep!
Philip Stark 8:27 PM great, thanks.
Will Monroe 8:28 PM I spend most of my time in emacs in org-mode FWIW
Leo Ufimtsev 8:30 PM I’m on twice. My hangouts crashed on my phone, (black screen). @Sacha would you be able to kick out my 2nd instance? (the one with black screen, not the one with picture)
Leo Ufimtsev 8:31 PM thanks
jason Peak 8:31 PM Complete beginner – I like the idea of using org as an organically developing a database of My stuff
Cameron Desautels 8:32 PM Will: that’s interesting. Do you want to speak about your uses? You might have a unique perspective.
Jonathan Hill 8:32 PM WOW That’s absurdly powerful, S
Will Monroe 8:33 PM Cameron: I’d be glad to. Very much a beginner though! ; )
Cameron Desautels 8:33 PM There are other beginners here—it’s probably exactly what they’d need!
Philip Stark 8:34 PM yeah
Leo Ufimtsev 8:35 PM I could show some things if folks are interested.
Howard Abrams 8:40 PM Can’t believe that Chrome crashed and I lost the chat history… I’ll try to catch up.
Philip Stark 8:41 PM http://0paste.com/7356-3b5998af chat history so far.
Will Monroe 8:45 PM Is that ticking?
Howard Abrams 8:46 PM The problem with demonstrating org-mode is not revealing too much about ourselves. Good thing we’re among friends, eh?
Cameron Desautels 8:46 PM haha, indeed
Philip Stark 8:46 PM indeed. and on youtube :S
Cameron Desautels 8:46 PM Just don’t read the comments. :p
Will Monroe 8:46 PM Ha!
jason Peak 8:47 PM how many tags is too much ?
me 8:47 PM Heh. Should I redact this text chat segment from the show notes?
jason Peak 8:47 PM how many tags are too many ?
Will Monroe 8:48 PM That’s a great question.
jason Peak 8:48 PM loaded question; just curious about others no mic, Sacha thanks, Will!
Jonathan Hill 8:49 PM someone has a lot of static on their mic
me 8:50 PM That’s Leo’s background noise, oh well.
Philip Stark 8:50 PM That’s Leo, I think. he’s probably on a phone.
me 8:50 PM <laugh!>
jason Peak 8:51 PM I’ve wondered about namespacing tags; org does not support namespaces as part of its tag data structure, though? Maybe I need to make it ?!!
me 8:51 PM I recognize that technique
jason Peak 8:51 PM thank you! yes
me 8:51 PM jason: You can probably combine a tag with other search filters, like the category (file)
Cameron Desautels 8:52 PM org-habit
jason Peak 8:53 PM sacha: thank you, I will exploreit
me 8:53 PM
Cameron Desautels 8:54 PM His setup minds me of mine from a couple years back…these days I use org-mode less because I want my tasks and calendar notifications on all of my devices. *reminds me
Will Monroe 8:54 PM I would love to hear about simple setups for erc
Philip Stark 8:55 PM What is erc?
Will Monroe 8:55 PM or any other emacs irc client
Howard Abrams 8:56 PM I like circe.
Jonathan Hill 8:58 PM Cameron, what about a cloud-based sort or read-only solution like syncing your stuff on dropbox or google drive or something? s/sort or/sort of/
Cameron Desautels 8:59 PM Yeah, I’ve actually tried that sort of thing, exporting an HTML version of my list into Dropbox so I could read it on any of my devices.
Howard Abrams 8:59 PM http://goo.gl/uWjFye
Cameron Desautels 8:59 PM But I’d really like r/w access on multiple platforms.
Cameron Desautels 9:00 PM And more ability to filter on the go.
Leo Ufimtsev 9:01 PM Sorry about vacum cleaning noise >_<
jason Peak 9:01 PM trello is great! not sure about the integration
Cameron Desautels 9:02 PM http://www.orgzly.com/
Jonathan Hill 9:02 PM There’s MobileOrg in the App Store for IOS
Leo Ufimtsev 9:04 PM I was wondering about that. Nifty.
jason Peak 9:04 PM very nice!
Jonathan Hill 9:04 PM does org-calendar interface with Exchange calendar with a tolerable level of setup pain?
Will Monroe 9:05 PM Jonathan: someone recently released an interface for Exchange.
Cameron Desautels 9:05 PM https://github.com/syl20bnr/spacemacs
Will Monroe 9:06 PM It was announced on the listserv…can’t recall the name. But it was within the last few weeks.
Leo Ufimtsev 9:09 PM I use a different keyboard layout “Colemak” (like modern Dvorak). I found emacs was more friendly for non-standard keyboard layouts like colemak.
jason Peak 9:09 PM I’m back, but only to say goodbye for now; Sacha, everyone, thanks for all you’ve shared; I look forward to being back here soon…
Leo Ufimtsev 9:09 PM take care
Will Monroe 9:09 PM bye jason!
Will Monroe 9:14 PM Leo: thanks for mentioning that. I’ve wondered about other keyboard layouts being more /less appropriate for emacs too.
Howard Abrams 9:17 PM I need to run, but I wanted to point out this gist that I wrote today … https://gist.github.com/howardabrams/67d60458858f407a13bd
me 9:19 PM (I use Dvorak, and haven’t remapped extensively – I mostly keep things the same, although my key-chords are Dvorak-friendly)
Leo Ufimtsev 9:20 PM http://doc.norang.ca/org-mode.html http://emacs.stackexchange.com/ <<< very good place for asking for help http://www.emacswiki.org/emacs/OrgDotemacs << organise your .emacs in orgmode
Cameron Desautels 9:26 PM https://gist.github.com/camdez/c0f4c53ee847d5d1e2f0 ^ That’s how I add my experiments. Nothing fancy, but it gets the job done. If you use org-mode you could use capture targets for something similar.
Will Monroe 9:29 PM Thanks, Cameron! That’s a great idea. I like the idea of keeping new and potentially unstable functions in a separate file…and the idea of commenting on them could lead to a nice diary of sorts.
Cameron Desautels 9:30 PM Exactly. Plus I don’t commit this so I don’t have to be embarrassed about pushing gross code to my public config.
me 9:30 PM Cameron: Hah! That’s a great idea. Although maybe I’ll keep the weird area in my config, just because
Cameron Desautels 9:31 PM Oh, and I load it like this so someone can pull down my config and have it still work whether or not the file exists: (load camdez/experiments-file ‘no-error)
Will Monroe 9:34 PM Thanks!
Jonathan Hill 9:35 PM @cameron I didn’t know about ‘no-error. neat trick
Leo Ufimtsev 9:35 PM Use trello lol
Cameron Desautels 9:39 PM Jonathan: really that argument can be anything non-nil, I just use that symbol name so it’s self-explanatory.
Jonathan Hill 9:39 PM Thinking Miserable? was that the phrase?
Cameron Desautels 9:40 PM ¯\_(ツ)_/¯ I’m not entirely sure how we got here.
me 9:41 PM It’s a thread from near the beginning of the Hangout in a Q&A question (Eric said he might have something to demo), so it’s not quite connected to the conference conversation
Leo Ufimtsev 9:41 PM Is the voice recognition business cross-platform or specific to windows/mac/linux?
me 9:41 PM (Although we can continue that in the backchannel if people have ideas/suggestions)
Cameron Desautels 9:42 PM Ah! Ok. I must have missed the thread.
Eric S. Johansson 9:42 PM https://docs.google.com/drawings/d/1M-TzfRaSaAhFXQk1OmcmHNOaW31_7W_7q0bf8CAJqSw/edit
Leo Ufimtsev 9:46 PM Btw, does anyone use Emacs with Latex.>? for math notes..?
Will Monroe 9:50 PM Sacha (or anyone): this is a much earlier comment you made, but I’d be interested in hearing about your experience using the “standard” Emacs keybindings with Dvorak some time. Maybe during the next Emacs Meetup!
Jonathan Hill 9:54 PM /me E I gather that’s likely not what you actually said. I seem to have gotten stuck on it, though
Will Monroe 9:56 PM Thanks for the advice, everyone. This was the first time I’ve been able to interact with so many Emacs users. Hope to return next month and perhaps again at the possible conference. All the best!
Cameron Desautels 9:57 PM Take care, Will. Nice to meet you.
me 9:57 PM See you!
Leo Ufimtsev 9:57 PM See you next time :-=
Will Monroe 9:57 PM You too! Mabye next time I’ll have something to share.
Jonathan Hill 9:58 PM /me C let me get your info before we go if you don’t mind oops